<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>59005</bug_id>
          
          <creation_ts>2011-04-20 09:45:09 -0700</creation_ts>
          <short_desc>Convert file &lt;input&gt; to use the new shadow DOM model</short_desc>
          <delta_ts>2011-06-04 10:14:31 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>61892</dependson>
    
    <dependson>61979</dependson>
          <blocked>48698</blocked>
    
    <blocked>52788</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dominic Cooney">dominicc</reporter>
          <assigned_to name="Dimitri Glazkov (Google)">dglazkov</assigned_to>
          <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>morrita</cc>
    
    <cc>rolandsteiner</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>389294</commentid>
    <comment_count>0</comment_count>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2011-04-20 09:45:09 -0700</bug_when>
    <thetext>RenderFileUploadControl uses setShadowHost via ShadowInputElement. Only ShadowRoot instances should have shadow hosts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>415046</commentid>
    <comment_count>1</comment_count>
      <attachid>95935</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-06-03 11:48:51 -0700</bug_when>
    <thetext>Created attachment 95935
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>415080</commentid>
    <comment_count>2</comment_count>
      <attachid>95935</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-03 12:18:34 -0700</bug_when>
    <thetext>Comment on attachment 95935
Patch

Attachment 95935 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/8757833</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>415119</commentid>
    <comment_count>3</comment_count>
      <attachid>95952</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-06-03 13:10:31 -0700</bug_when>
    <thetext>Created attachment 95952
Oh good lord I hate DOMUtilitiesPrivate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>415333</commentid>
    <comment_count>4</comment_count>
      <attachid>95952</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-06-03 17:46:20 -0700</bug_when>
    <thetext>Comment on attachment 95952
Oh good lord I hate DOMUtilitiesPrivate.

View in context: https://bugs.webkit.org/attachment.cgi?id=95952&amp;action=review

I’m saying review- because I want the toXXX function to match our other toXXX functions (the ones in WebCore, not in Chromium WebKit).

Otherwise this looks great

&gt; Source/WebCore/css/html.css:525
&gt; +input[type=file]::-webkit-file-upload-button {

Don’t you need quote marks around “file” as with the other rules in this file?

&gt; Source/WebCore/html/HTMLInputElement.cpp:1846
&gt; +HTMLInputElement* toHTMLInputElement(Node* node)
&gt; +{
&gt; +    return node &amp;&amp; node-&gt;hasTagName(inputTag) ? static_cast&lt;HTMLInputElement*&gt;(node) : 0;
&gt; +}

These toXXX functions normally assert rather than returning 0. They are the equivalent of static_cast, not of dynamic_cast.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>415338</commentid>
    <comment_count>5</comment_count>
      <attachid>95952</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-06-03 17:52:55 -0700</bug_when>
    <thetext>Comment on attachment 95952
Oh good lord I hate DOMUtilitiesPrivate.

View in context: https://bugs.webkit.org/attachment.cgi?id=95952&amp;action=review

&gt;&gt; Source/WebCore/css/html.css:525
&gt;&gt; +input[type=file]::-webkit-file-upload-button {
&gt; 
&gt; Don’t you need quote marks around “file” as with the other rules in this file?

Nope. The quote marks aren&apos;t necessary there.

&gt;&gt; Source/WebCore/html/HTMLInputElement.cpp:1846
&gt;&gt; +}
&gt; 
&gt; These toXXX functions normally assert rather than returning 0. They are the equivalent of static_cast, not of dynamic_cast.

Yeah, you&apos;re right. But I really could use this type of function, because it makes the callsites cleaner. Perhaps we could name it asHTMLInputElement?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>415341</commentid>
    <comment_count>6</comment_count>
      <attachid>95952</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-06-03 18:01:53 -0700</bug_when>
    <thetext>Comment on attachment 95952
Oh good lord I hate DOMUtilitiesPrivate.

View in context: https://bugs.webkit.org/attachment.cgi?id=95952&amp;action=review

&gt;&gt;&gt; Source/WebCore/css/html.css:525
&gt;&gt;&gt; +input[type=file]::-webkit-file-upload-button {
&gt;&gt; 
&gt;&gt; Don’t you need quote marks around “file” as with the other rules in this file?
&gt; 
&gt; Nope. The quote marks aren&apos;t necessary there.

Perhaps you could remove the others, then. The inconsistency is irritating.

&gt;&gt;&gt; Source/WebCore/html/HTMLInputElement.cpp:1846
&gt;&gt;&gt; +}
&gt;&gt; 
&gt;&gt; These toXXX functions normally assert rather than returning 0. They are the equivalent of static_cast, not of dynamic_cast.
&gt; 
&gt; Yeah, you&apos;re right. But I really could use this type of function, because it makes the callsites cleaner. Perhaps we could name it asHTMLInputElement?

I think that the difference between the two would be unclear if one was “to” and the other was “as”. I agree that if we come up with the right naming scheme we can have both the static_cast-like and dynamic_cast-like versions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>415347</commentid>
    <comment_count>7</comment_count>
      <attachid>95952</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-06-03 18:19:53 -0700</bug_when>
    <thetext>Comment on attachment 95952
Oh good lord I hate DOMUtilitiesPrivate.

View in context: https://bugs.webkit.org/attachment.cgi?id=95952&amp;action=review

&gt;&gt;&gt;&gt; Source/WebCore/css/html.css:525
&gt;&gt;&gt;&gt; +input[type=file]::-webkit-file-upload-button {
&gt;&gt;&gt; 
&gt;&gt;&gt; Don’t you need quote marks around “file” as with the other rules in this file?
&gt;&gt; 
&gt;&gt; Nope. The quote marks aren&apos;t necessary there.
&gt; 
&gt; Perhaps you could remove the others, then. The inconsistency is irritating.

Sure thing. I&apos;ll make a separate patch.

&gt;&gt;&gt;&gt; Source/WebCore/html/HTMLInputElement.cpp:1846
&gt;&gt;&gt;&gt; +}
&gt;&gt;&gt; 
&gt;&gt;&gt; These toXXX functions normally assert rather than returning 0. They are the equivalent of static_cast, not of dynamic_cast.
&gt;&gt; 
&gt;&gt; Yeah, you&apos;re right. But I really could use this type of function, because it makes the callsites cleaner. Perhaps we could name it asHTMLInputElement?
&gt; 
&gt; I think that the difference between the two would be unclear if one was “to” and the other was “as”. I agree that if we come up with the right naming scheme we can have both the static_cast-like and dynamic_cast-like versions.

I can just localize this problem as a helper function in DragController for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>415368</commentid>
    <comment_count>8</comment_count>
      <attachid>95952</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-06-03 19:37:09 -0700</bug_when>
    <thetext>Comment on attachment 95952
Oh good lord I hate DOMUtilitiesPrivate.

View in context: https://bugs.webkit.org/attachment.cgi?id=95952&amp;action=review

&gt;&gt;&gt;&gt;&gt; Source/WebCore/html/HTMLInputElement.cpp:1846
&gt;&gt;&gt;&gt;&gt; +}
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; These toXXX functions normally assert rather than returning 0. They are the equivalent of static_cast, not of dynamic_cast.
&gt;&gt;&gt; 
&gt;&gt;&gt; Yeah, you&apos;re right. But I really could use this type of function, because it makes the callsites cleaner. Perhaps we could name it asHTMLInputElement?
&gt;&gt; 
&gt;&gt; I think that the difference between the two would be unclear if one was “to” and the other was “as”. I agree that if we come up with the right naming scheme we can have both the static_cast-like and dynamic_cast-like versions.
&gt; 
&gt; I can just localize this problem as a helper function in DragController for now.

FYI: We have Node::toInputElement().  I think it&apos;s a leftover of HTML/WML abstraction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>415378</commentid>
    <comment_count>9</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-06-03 20:52:39 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 95952 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=95952&amp;action=review
&gt; 
&gt; &gt;&gt;&gt;&gt;&gt; Source/WebCore/html/HTMLInputElement.cpp:1846
&gt; &gt;&gt;&gt;&gt;&gt; +}
&gt; &gt;&gt;&gt;&gt; 
&gt; &gt;&gt;&gt;&gt; These toXXX functions normally assert rather than returning 0. They are the equivalent of static_cast, not of dynamic_cast.
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; Yeah, you&apos;re right. But I really could use this type of function, because it makes the callsites cleaner. Perhaps we could name it asHTMLInputElement?
&gt; &gt;&gt; 
&gt; &gt;&gt; I think that the difference between the two would be unclear if one was “to” and the other was “as”. I agree that if we come up with the right naming scheme we can have both the static_cast-like and dynamic_cast-like versions.
&gt; &gt; 
&gt; &gt; I can just localize this problem as a helper function in DragController for now.
&gt; 
&gt; FYI: We have Node::toInputElement().  I think it&apos;s a leftover of HTML/WML abstraction.

That&apos;s a neat idea: 

toFoo(Bar*) is like static_cast
Bar::toFoo() is like dynamic_cast

Darin, what do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>415489</commentid>
    <comment_count>10</comment_count>
      <attachid>96024</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-06-04 09:17:40 -0700</bug_when>
    <thetext>Created attachment 96024
Uses toInputElement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>415490</commentid>
    <comment_count>11</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-06-04 09:18:36 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Created an attachment (id=96024) [details]
&gt; Uses toInputElement.

I also changed to use double-quotes in html.css, for consistency.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>415491</commentid>
    <comment_count>12</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-06-04 09:36:40 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; FYI: We have Node::toInputElement().  I think it&apos;s a leftover of HTML/WML abstraction.
&gt; 
&gt; That&apos;s a neat idea: 
&gt; 
&gt; toFoo(Bar*) is like static_cast
&gt; Bar::toFoo() is like dynamic_cast
&gt; 
&gt; Darin, what do you think?

I think the distinction there is too subtle.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>415492</commentid>
    <comment_count>13</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-06-04 09:39:26 -0700</bug_when>
    <thetext>I don’t think the dynamic_cast version is all that great, because null pointers are not all that great. Having to say if (isInputElement) first before calling toInputElement seems better than dynamic_cast style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>415493</commentid>
    <comment_count>14</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-06-04 09:40:08 -0700</bug_when>
    <thetext>The one good thing about the dynamic_cast style is that you can’t “use it wrong”. But that benefit goes away if you also have static_cast, especially if the two are hard to tell apart.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>415498</commentid>
    <comment_count>15</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-06-04 10:14:31 -0700</bug_when>
    <thetext>Committed r88115: &lt;http://trac.webkit.org/changeset/88115&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95935</attachid>
            <date>2011-06-03 11:48:51 -0700</date>
            <delta_ts>2011-06-03 13:10:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59005-20110603114850.patch</filename>
            <type>text/plain</type>
            <size>20598</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODgwMjYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4ZjVhMTg4NDRiOTkzMDZj
NWM5NGZiY2IxZjYxMzRhZTNiMWYyYWMxLi5kYWExMTY4Y2Q0OGQzNzI2MjFjZThkYzU4YWM1ZWJm
NjgzMjU3MjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTEtMDYtMDMgIERpbWl0
cmkgR2xhemtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb252ZXJ0IGZpbGUgPGlucHV0PiB0byB1c2Ug
dGhlIG5ldyBzaGFkb3cgRE9NIG1vZGVsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01OTAwNQorCisgICAgICAgIFJlZmFjdG9yaW5nLCBjb3ZlcmVkIGJ5
IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogY3NzL0NTU1NlbGVjdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpwc2V1ZG9JZCk6IFJlbW92ZWQgRklMRV9VUExPQURf
QlVUVE9OIHBzZXVkb0lkIGFuZCBhbGwgcmVmZXJlbmNlcyB0byBpdC4KKyAgICAgICAgKFdlYkNv
cmU6Om5hbWVUb1BzZXVkb1R5cGVNYXApOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1Nl
bGVjdG9yOjpleHRyYWN0UHNldWRvVHlwZSk6IERpdHRvLgorICAgICAgICAqIGNzcy9DU1NTZWxl
Y3Rvci5oOiBEaXR0by4KKyAgICAgICAgKiBjc3MvaHRtbC5jc3M6CisgICAgICAgIChpbnB1dFt0
eXBlPSJidXR0b24iXSwgaW5wdXRbdHlwZT0ic3VibWl0Il0sIGlucHV0W3R5cGU9InJlc2V0Il0p
OiBNb3ZlZCAtd2Via2l0LWZpbGUtdXBsb2FkLWJ1dHRvbiB0byBpdHMgb3duIHJ1bGUuCisgICAg
ICAgIChpbnB1dFt0eXBlPWZpbGVdOjotd2Via2l0LWZpbGUtdXBsb2FkLWJ1dHRvbik6IEFkZGVk
IGFuZCBtb3ZlZCBhbGwgcHJldmlvdXNseSBoYXJkLWNvZGVkIHByb3BlcnRpZXMgdGhlcmUuCisg
ICAgICAgICogaHRtbC9GaWxlSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVwbG9h
ZEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VXBsb2Fk
QnV0dG9uRWxlbWVudDo6VXBsb2FkQnV0dG9uRWxlbWVudCk6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6VXBsb2FkQnV0dG9uRWxlbWVudDo6c2hhZG93UHNldWRvSWQpOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkZpbGVJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUpOiBBZGRlZC4K
KyAgICAgICAgKiBodG1sL0ZpbGVJbnB1dFR5cGUuaDogQWRkZWQgY3JlYXRlU2hhZG93U3VidHJl
ZSBkZWNsLgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjp0b0hUTUxJbnB1dEVsZW1lbnQpOiBBZGRlZCB0b0hUTUxJbnB1dEVsZW1lbnQgaGVs
cGVyLgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5oOiBBZGRlZCBkZWNsLgorICAg
ICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXNGaWxl
SW5wdXQpOiBDaGFuZ2VkIHRoZSBsb2dpYyB0byB1c2UgbmV3IHNoYWRvdyBET00uCisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcDogUmVtb3ZlZCBVcGxvYWRC
dXR0b24gY2xhc3MuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6
flJlbmRlckZpbGVVcGxvYWRDb250cm9sKTogUmVtb3ZlZCBpbml0aWFsaXplciBmb3IgbV9idXR0
b24uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6dXBkYXRlRnJv
bUVsZW1lbnQpOiBSZW1vdmVkIGF0dGFjaG1lbnQgbG9naWMgdGhhdCdzIG5vIGxvbmdlciBuZWNl
c3NhcnkuCisgICAgICAgIChXZWJDb3JlOjpub2RlV2lkdGgpOiBBZGRlZCBhIGhlbHBlci4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckZpbGVVcGxvYWRDb250cm9sOjptYXhGaWxlbmFtZVdpZHRo
KTogQ2hhbmdlZCB0byB1c2UgdXBsb2FkQnV0dG9uIGFuZCBub2RlV2lkdGguCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6cGFpbnRPYmplY3QpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckZpbGVVcGxvYWRDb250cm9sOjp1cGxvYWRCdXR0b24pOiBB
ZGRlZCBhIGhlbHBlciB0byByZXRyaWV2ZSB0aGUgYnV0dG9uLgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyRmlsZVVwbG9hZENvbnRyb2w6OmJ1dHRvblZhbHVlKTogQ2hhbmdlZCB0byB1c2UgdXBs
b2FkQnV0dG9uLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5o
OiBDaGFuZ2VkIGRlY2xzLgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNv
bnN0YW50cy5oOiBSZW1vdmVkIEZJTEVfVVBMT0FEX0JVVFRPTiBkZWNscy4KKwogMjAxMS0wNi0w
MiAgRGltaXRyaSBHbGF6a292ICA8ZGdsYXprb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1NlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAKaW5kZXgg
YWJlY2JlMjg3NWU1YTk0MGE1YWI4Y2Q5ZDgyMzY2ODljOTllMDk0NC4uNGEzMjY2ZjFiOTRkMWMz
NGI5NzY2ZDY0NDk3OWUyOWY4MWFjNDk4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1NlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3Bw
CkBAIC0xMjYsOCArMTI2LDYgQEAgUHNldWRvSWQgQ1NTU2VsZWN0b3I6OnBzZXVkb0lkKFBzZXVk
b1R5cGUgdHlwZSkKICAgICAgICAgcmV0dXJuIEJFRk9SRTsKICAgICBjYXNlIFBzZXVkb0FmdGVy
OgogICAgICAgICByZXR1cm4gQUZURVI7Ci0gICAgY2FzZSBQc2V1ZG9GaWxlVXBsb2FkQnV0dG9u
OgotICAgICAgICByZXR1cm4gRklMRV9VUExPQURfQlVUVE9OOwogICAgIGNhc2UgUHNldWRvSW5w
dXRQbGFjZWhvbGRlcjoKICAgICAgICAgcmV0dXJuIElOUFVUX1BMQUNFSE9MREVSOwogICAgIGNh
c2UgUHNldWRvU2Nyb2xsYmFyOgpAQCAtMjMzLDcgKzIzMSw2IEBAIHN0YXRpYyBIYXNoTWFwPEF0
b21pY1N0cmluZ0ltcGwqLCBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZT4qIG5hbWVUb1BzZXVkb1R5
cGVNYXAoCiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGF1dG9maWxsLCAo
Ii13ZWJraXQtYXV0b2ZpbGwiKSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJp
bmcsIGJlZm9yZSwgKCJiZWZvcmUiKSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNT
dHJpbmcsIGNoZWNrZWQsICgiY2hlY2tlZCIpKTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0
b21pY1N0cmluZywgZmlsZVVwbG9hZEJ1dHRvbiwgKCItd2Via2l0LWZpbGUtdXBsb2FkLWJ1dHRv
biIpKTsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgZGVmYXVsdFN0cmlu
ZywgKCJkZWZhdWx0IikpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBk
aXNhYmxlZCwgKCJkaXNhYmxlZCIpKTsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0
cmluZywgcmVhZE9ubHksICgicmVhZC1vbmx5IikpOwpAQCAtMzE0LDcgKzMxMSw2IEBAIHN0YXRp
YyBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZT4qIG5h
bWVUb1BzZXVkb1R5cGVNYXAoCiAgICAgICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNldChhdXRvZmls
bC5pbXBsKCksIENTU1NlbGVjdG9yOjpQc2V1ZG9BdXRvZmlsbCk7CiAgICAgICAgIG5hbWVUb1Bz
ZXVkb1R5cGUtPnNldChiZWZvcmUuaW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNldWRvQmVmb3JlKTsK
ICAgICAgICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0KGNoZWNrZWQuaW1wbCgpLCBDU1NTZWxlY3Rv
cjo6UHNldWRvQ2hlY2tlZCk7Ci0gICAgICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNldChmaWxlVXBs
b2FkQnV0dG9uLmltcGwoKSwgQ1NTU2VsZWN0b3I6OlBzZXVkb0ZpbGVVcGxvYWRCdXR0b24pOwog
ICAgICAgICBuYW1lVG9Qc2V1ZG9UeXBlLT5zZXQoZGVmYXVsdFN0cmluZy5pbXBsKCksIENTU1Nl
bGVjdG9yOjpQc2V1ZG9EZWZhdWx0KTsKICAgICAgICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0KGRp
c2FibGVkLmltcGwoKSwgQ1NTU2VsZWN0b3I6OlBzZXVkb0Rpc2FibGVkKTsKICAgICAgICAgbmFt
ZVRvUHNldWRvVHlwZS0+c2V0KHJlYWRPbmx5LmltcGwoKSwgQ1NTU2VsZWN0b3I6OlBzZXVkb1Jl
YWRPbmx5KTsKQEAgLTQxMyw3ICs0MDksNiBAQCB2b2lkIENTU1NlbGVjdG9yOjpleHRyYWN0UHNl
dWRvVHlwZSgpIGNvbnN0CiAgICAgY2FzZSBQc2V1ZG9GaXJzdExldHRlcjoKICAgICBjYXNlIFBz
ZXVkb0ZpcnN0TGluZToKICAgICAgICAgY29tcGF0ID0gdHJ1ZTsKLSAgICBjYXNlIFBzZXVkb0Zp
bGVVcGxvYWRCdXR0b246CiAgICAgY2FzZSBQc2V1ZG9JbnB1dExpc3RCdXR0b246CiAgICAgY2Fz
ZSBQc2V1ZG9JbnB1dFBsYWNlaG9sZGVyOgogICAgIGNhc2UgUHNldWRvUmVzaXplcjoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1NlbGVjdG9yLmgKaW5kZXggYzUwY2FiMTYxNDQwMjNjMjdhZTNlNDI1NzhlNzQxNGM0
NDA5ZTU0Mi4uYWJkMTBlNDBiNjI2NzA4NzFiMTRhY2QzMTA2ZWNjZjNlMTNjOTk0MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1NlbGVjdG9yLmgKQEAgLTE3Miw3ICsxNzIsNiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgICAgICBQc2V1ZG9TaW5nbGVCdXR0b24sCiAgICAgICAgICAgICBQc2V1ZG9O
b0J1dHRvbiwKICAgICAgICAgICAgIFBzZXVkb1NlbGVjdGlvbiwKLSAgICAgICAgICAgIFBzZXVk
b0ZpbGVVcGxvYWRCdXR0b24sCiAgICAgICAgICAgICBQc2V1ZG9JbnB1dExpc3RCdXR0b24sCiAg
ICAgICAgICAgICBQc2V1ZG9MZWZ0UGFnZSwKICAgICAgICAgICAgIFBzZXVkb1JpZ2h0UGFnZSwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9odG1sLmNzcyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9odG1sLmNzcwppbmRleCAxMWQ5Y2RkOGI5NGU3ODg3ZDZiZjM5Zjg0NDQ5OTllZGQ4MTk2
NjQ4Li44NTcwNjcxNGEwYjkxZGMyZGUzNGEwNDQ1NTdhYmM3ZThlMTZhMmYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvaHRtbC5jc3MKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL2h0
bWwuY3NzCkBAIC01MTcsMTEgKzUxNywxNyBAQCBpbnB1dFt0eXBlPSJyYWRpbyJdLCBpbnB1dFt0
eXBlPSJjaGVja2JveCJdIHsKICAgICBib3JkZXI6IGluaXRpYWw7CiB9CiAKLWlucHV0W3R5cGU9
ImJ1dHRvbiJdLCBpbnB1dFt0eXBlPSJzdWJtaXQiXSwgaW5wdXRbdHlwZT0icmVzZXQiXSwgaW5w
dXRbdHlwZT0iZmlsZSJdOjotd2Via2l0LWZpbGUtdXBsb2FkLWJ1dHRvbiB7CitpbnB1dFt0eXBl
PSJidXR0b24iXSwgaW5wdXRbdHlwZT0ic3VibWl0Il0sIGlucHV0W3R5cGU9InJlc2V0Il0gewog
ICAgIC13ZWJraXQtYXBwZWFyYW5jZTogcHVzaC1idXR0b247CiAgICAgd2hpdGUtc3BhY2U6IHBy
ZQogfQogCitpbnB1dFt0eXBlPWZpbGVdOjotd2Via2l0LWZpbGUtdXBsb2FkLWJ1dHRvbiB7Cisg
ICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBwdXNoLWJ1dHRvbjsKKyAgICB3aGl0ZS1zcGFjZTogbm93
cmFwOworICAgIG1hcmdpbjogMDsKK30KKwogaW5wdXRbdHlwZT0iYnV0dG9uIl0sIGlucHV0W3R5
cGU9InN1Ym1pdCJdLCBpbnB1dFt0eXBlPSJyZXNldCJdLCBpbnB1dFt0eXBlPSJmaWxlIl06Oi13
ZWJraXQtZmlsZS11cGxvYWQtYnV0dG9uLCBidXR0b24gewogICAgIC13ZWJraXQtYm94LWFsaWdu
OiBjZW50ZXI7CiAgICAgdGV4dC1hbGlnbjogY2VudGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlu
cHV0VHlwZS5jcHAKaW5kZXggZTdkY2Q1YzEyZTFhZDllOWI3ZjA3MmVhODJkMWY0MDJiMDZkNzZm
YS4uZDBkOGY5YWIwYjBlOGQ0ZDE3YmY3Zjc3MjQwNGE0MDQ3MjBjOTY3ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiSFRN
TE5hbWVzLmgiCiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgIlJlbmRl
ckZpbGVVcGxvYWRDb250cm9sLmgiCisjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogI2luY2x1ZGUg
PHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAg
LTM4LDYgKzM5LDM2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhU
TUxOYW1lczsKIAorY2xhc3MgVXBsb2FkQnV0dG9uRWxlbWVudCA6IHB1YmxpYyBIVE1MSW5wdXRF
bGVtZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxVcGxvYWRCdXR0b25FbGVt
ZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKKworcHJpdmF0ZToKKyAgICBVcGxvYWRCdXR0b25FbGVt
ZW50KERvY3VtZW50Kik7CisKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93
UHNldWRvSWQoKSBjb25zdDsKK307CisKK1Bhc3NSZWZQdHI8VXBsb2FkQnV0dG9uRWxlbWVudD4g
VXBsb2FkQnV0dG9uRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKK3sKKyAgICBS
ZWZQdHI8VXBsb2FkQnV0dG9uRWxlbWVudD4gYnV0dG9uID0gYWRvcHRSZWYobmV3IFVwbG9hZEJ1
dHRvbkVsZW1lbnQoZG9jdW1lbnQpKTsKKyAgICBidXR0b24tPnNldFR5cGUoImJ1dHRvbiIpOwor
ICAgIGJ1dHRvbi0+c2V0VmFsdWUoZmlsZUJ1dHRvbkNob29zZUZpbGVMYWJlbCgpKTsKKyAgICBy
ZXR1cm4gYnV0dG9uLnJlbGVhc2UoKTsKK30KKworCitVcGxvYWRCdXR0b25FbGVtZW50OjpVcGxv
YWRCdXR0b25FbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKKyAgICA6IEhUTUxJbnB1dEVsZW1l
bnQoaW5wdXRUYWcsIGRvY3VtZW50LCAwLCBmYWxzZSkKK3sKK30KKworY29uc3QgQXRvbWljU3Ry
aW5nJiBVcGxvYWRCdXR0b25FbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0Cit7CisgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHBzZXVkb0lkLCAoIi13ZWJraXQtZmls
ZS11cGxvYWQtYnV0dG9uIikpOworICAgIHJldHVybiBwc2V1ZG9JZDsKK30KKwogaW5saW5lIEZp
bGVJbnB1dFR5cGU6OkZpbGVJbnB1dFR5cGUoSFRNTElucHV0RWxlbWVudCogZWxlbWVudCkKICAg
ICA6IEJhc2VCdXR0b25JbnB1dFR5cGUoZWxlbWVudCkKICAgICAsIG1fZmlsZUxpc3QoRmlsZUxp
c3Q6OmNyZWF0ZSgpKQpAQCAtMTkzLDQgKzIyNCwxMCBAQCBib29sIEZpbGVJbnB1dFR5cGU6Omlz
RmlsZVVwbG9hZCgpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgRmlsZUlucHV0
VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSgpCit7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
CisgICAgZWxlbWVudCgpLT5lbnN1cmVTaGFkb3dSb290KCktPmFwcGVuZENoaWxkKFVwbG9hZEJ1
dHRvbkVsZW1lbnQ6OmNyZWF0ZShlbGVtZW50KCktPmRvY3VtZW50KCkpLCBlYyk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmls
ZUlucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmgKaW5kZXgg
NmQ3OWVjZGM3NWM3ZDlmYWI4YzY0ZDIwZjc3ZWE2M2VjODg5OTc3OC4uNGM5ZGEwNWY4ZjhiOTNj
M2I5ZmQwNTk5YmZjZmQxZDIwNzNmMmUzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9GaWxlSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBl
LmgKQEAgLTU5LDYgKzU5LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgc3RvcmVzVmFs
dWVTZXBhcmF0ZUZyb21BdHRyaWJ1dGUoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0RmlsZUxpc3Qo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdGhzKTsKICAgICB2aXJ0dWFsIGJvb2wgaXNGaWxlVXBs
b2FkKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWUoKTsKIAog
ICAgIFJlZlB0cjxGaWxlTGlzdD4gbV9maWxlTGlzdDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCA5NDE2NzU0NmFmZTE5M2IwZWZkMWI2ZTg2ODM0NmNk
YWFkODFiMWZhLi41M2RhZjA4ZDc4MDQ4MmFlMWNhMGI0YjQ5MWViMzNjYmVkYTQ0MzcxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTE4NDAsNCArMTg0MCw5
IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6dXBkYXRlVmFsdWVJZk5lZWRlZCgpCiAgICAgICAg
IHNldFZhbHVlKG5ld1ZhbHVlKTsKIH0KIAorSFRNTElucHV0RWxlbWVudCogdG9IVE1MSW5wdXRF
bGVtZW50KE5vZGUqIG5vZGUpCit7CisgICAgcmV0dXJuIG5vZGUgJiYgbm9kZS0+aGFzVGFnTmFt
ZShpbnB1dFRhZykgPyBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4obm9kZSkgOiAwOwor
fQorCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SW5wdXRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaApp
bmRleCBlM2QwYzM3NjkxMDI4MzZjYTJmNDViOTJkMjdhOWRhMDk2YmFlZGMwLi4yMTM0ZmEyZmY4
NDVkYTI5YmRlOTVjODRkZDVmYWJmZmU2ZjI1YmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
bnB1dEVsZW1lbnQuaApAQCAtMzUzLDYgKzM1MywxMiBAQCBwcml2YXRlOgogICAgIE93blB0cjxJ
bnB1dFR5cGU+IG1faW5wdXRUeXBlOwogfTsKIAorSFRNTElucHV0RWxlbWVudCogdG9IVE1MSW5w
dXRFbGVtZW50KE5vZGUqKTsKKworLy8gVGhpcyB3aWxsIGNhdGNoIGFueW9uZSBkb2luZyBhbiB1
bm5lY2Vzc2FyeSBjYXN0Lgordm9pZCB0b0hUTUxJbnB1dEVsZW1lbnQoSFRNTElucHV0RWxlbWVu
dCopOworCisKIH0gLy9uYW1lc3BhY2UKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0Nv
bnRyb2xsZXIuY3BwCmluZGV4IDQ2ZTc0ODZjNTkzNDNmZmEwYmZhZTQ3ZWZhMDNmMjQyNjJhODcx
ODMuLjA2Nzg2ZWE0ZDZkYmVmMTY3NTdhNThmYzJmMjE3MmIxYjBjODE2ODggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBAIC0yNTMsMjAgKzI1MywxMyBAQCBzdGF0aWMg
SFRNTElucHV0RWxlbWVudCogYXNGaWxlSW5wdXQoTm9kZSogbm9kZSkKIHsKICAgICBBU1NFUlQo
bm9kZSk7CiAKLSAgICAvLyBUaGUgYnV0dG9uIGZvciBhIEZJTEUgaW5wdXQgaXMgYSBzdWIgZWxl
bWVudCB3aXRoIG5vIHNldCBpbnB1dCB0eXBlCi0gICAgLy8gSW4gb3JkZXIgdG8gZ2V0IGFyb3Vu
ZCB0aGlzIHByb2JsZW0gd2UgYXNzdW1lIGFueSBub24tRklMRSBpbnB1dCBlbGVtZW50Ci0gICAg
Ly8gaXMgdGhpcyBpbnRlcm5hbCBidXR0b24sIGFuZCB0cnkgcXVlcnlpbmcgdGhlIHNoYWRvdyBw
YXJlbnQgbm9kZS4KLSAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmlucHV0VGFn
KSAmJiBub2RlLT5pc1NoYWRvd1Jvb3QoKSAmJiAhc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVu
dCo+KG5vZGUpLT5pc0ZpbGVVcGxvYWQoKSkKLSAgICAgICAgbm9kZSA9IG5vZGUtPnNoYWRvd0hv
c3QoKTsKKyAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQgPSB0b0hUTUxJbnB1dEVs
ZW1lbnQobm9kZSk7CiAKLSAgICBpZiAoIW5vZGUgfHwgIW5vZGUtPmhhc1RhZ05hbWUoSFRNTE5h
bWVzOjppbnB1dFRhZykpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgSFRNTElucHV0RWxlbWVu
dCogaW5wdXRFbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KG5vZGUpOwot
ICAgIGlmICghaW5wdXRFbGVtZW50LT5pc0ZpbGVVcGxvYWQoKSkKLSAgICAgICAgcmV0dXJuIDA7
CisgICAgLy8gSWYgdGhpcyBpcyBhIGJ1dHRvbiBpbnNpZGUgb2YgdGhlIGEgZmlsZSBpbnB1dCwg
bW92ZSB1cCB0byB0aGUgZmlsZSBpbnB1dC4KKyAgICBpZiAoaW5wdXRFbGVtZW50ICYmIGlucHV0
RWxlbWVudC0+aXNUZXh0QnV0dG9uKCkgJiYgaW5wdXRFbGVtZW50LT50cmVlU2NvcGUoKS0+aXNT
aGFkb3dCb3VuZGFyeSgpKQorICAgICAgICBpbnB1dEVsZW1lbnQgPSB0b0hUTUxJbnB1dEVsZW1l
bnQoaW5wdXRFbGVtZW50LT50cmVlU2NvcGUoKS0+c2hhZG93SG9zdCgpKTsKIAotICAgIHJldHVy
biBpbnB1dEVsZW1lbnQ7CisgICAgcmV0dXJuIGlucHV0RWxlbWVudCAmJiBpbnB1dEVsZW1lbnQt
PmlzRmlsZVVwbG9hZCgpID8gaW5wdXRFbGVtZW50IDogMDsKIH0KIAogLy8gVGhpcyBjYW4gcmV0
dXJuIG51bGwgaWYgYW4gZW1wdHkgZG9jdW1lbnQgaXMgbG9hZGVkLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAKaW5kZXggNzkw
Y2UwOTkxZDJkN2I0NGQwNmFhMGQ5MTkyZmU5MWQyMDY2MmUwNS4uMzRlOGU1OWJmMDM4YWFlZmE5
YjEzNTk1ZWNjYjI0NWU5NGJkNmNiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5j
bHVkZSAiUmVuZGVyVGV4dC5oIgogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCiAjaW5jbHVkZSAi
UmVuZGVyVmlldy5oIgorI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJUZXh0UnVu
LmgiCiAjaW5jbHVkZSA8bWF0aC5oPgogCkBAIC01MiwzMiArNTMsNiBAQCBjb25zdCBpbnQgaWNv
bkZpbGVuYW1lU3BhY2luZyA9IDI7CiBjb25zdCBpbnQgZGVmYXVsdFdpZHRoTnVtQ2hhcnMgPSAz
NDsKIGNvbnN0IGludCBidXR0b25TaGFkb3dIZWlnaHQgPSAyOwogCi1jbGFzcyBVcGxvYWRCdXR0
b24gOiBwdWJsaWMgSFRNTElucHV0RWxlbWVudCB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8VXBsb2FkQnV0dG9uPiBjcmVhdGUoSFRNTElucHV0RWxlbWVudCopOwotICAgIHZpcnR1
YWwgdm9pZCBkZXRhY2goKTsKLQotcHJpdmF0ZToKLSAgICBVcGxvYWRCdXR0b24oSFRNTElucHV0
RWxlbWVudCopOwotfTsKLQotUGFzc1JlZlB0cjxVcGxvYWRCdXR0b24+IFVwbG9hZEJ1dHRvbjo6
Y3JlYXRlKEhUTUxJbnB1dEVsZW1lbnQqIHNoYWRvd1BhcmVudCkKLXsKLSAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFVwbG9hZEJ1dHRvbihzaGFkb3dQYXJlbnQpKTsKLX0KLQotdm9pZCBVcGxvYWRC
dXR0b246OmRldGFjaCgpCi17Ci0gICAgSFRNTElucHV0RWxlbWVudDo6ZGV0YWNoKCk7Ci0gICAg
c2V0U2hhZG93SG9zdCgwKTsKLX0KLQotVXBsb2FkQnV0dG9uOjpVcGxvYWRCdXR0b24oSFRNTElu
cHV0RWxlbWVudCogc2hhZG93UGFyZW50KQotICAgIDogSFRNTElucHV0RWxlbWVudChpbnB1dFRh
Zywgc2hhZG93UGFyZW50LT5kb2N1bWVudCgpLCAwLCBmYWxzZSkKLXsKLSAgICBzZXRTaGFkb3dI
b3N0KHNoYWRvd1BhcmVudCk7Ci19Ci0KIFJlbmRlckZpbGVVcGxvYWRDb250cm9sOjpSZW5kZXJG
aWxlVXBsb2FkQ29udHJvbChIVE1MSW5wdXRFbGVtZW50KiBpbnB1dCkKICAgICA6IFJlbmRlckJs
b2NrKGlucHV0KQogewpAQCAtOTEsMTggKzY2LDkgQEAgUmVuZGVyRmlsZVVwbG9hZENvbnRyb2w6
OlJlbmRlckZpbGVVcGxvYWRDb250cm9sKEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0KQogCiBSZW5k
ZXJGaWxlVXBsb2FkQ29udHJvbDo6flJlbmRlckZpbGVVcGxvYWRDb250cm9sKCkKIHsKLSAgICBp
ZiAobV9idXR0b24pCi0gICAgICAgIG1fYnV0dG9uLT5kZXRhY2goKTsKICAgICBtX2ZpbGVDaG9v
c2VyLT5kaXNjb25uZWN0Q2xpZW50KCk7CiB9CiAKLXZvaWQgUmVuZGVyRmlsZVVwbG9hZENvbnRy
b2w6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHls
ZSogb2xkU3R5bGUpCi17Ci0gICAgUmVuZGVyQmxvY2s6OnN0eWxlRGlkQ2hhbmdlKGRpZmYsIG9s
ZFN0eWxlKTsKLSAgICBpZiAobV9idXR0b24pCi0gICAgICAgIG1fYnV0dG9uLT5yZW5kZXJlcigp
LT5zZXRTdHlsZShjcmVhdGVCdXR0b25TdHlsZShzdHlsZSgpKSk7Ci19Ci0KIHZvaWQgUmVuZGVy
RmlsZVVwbG9hZENvbnRyb2w6OnZhbHVlQ2hhbmdlZCgpCiB7CiAgICAgLy8gZGlzcGF0Y2hGb3Jt
Q29udHJvbENoYW5nZUV2ZW50IG1heSBkZXN0cm95IHRoaXMgcmVuZGVyZXIKQEAgLTE3NywyMyAr
MTQzLDEwIEBAIHZvaWQgUmVuZGVyRmlsZVVwbG9hZENvbnRyb2w6OnVwZGF0ZUZyb21FbGVtZW50
KCkKIHsKICAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxI
VE1MSW5wdXRFbGVtZW50Kj4obm9kZSgpKTsKICAgICBBU1NFUlQoaW5wdXRFbGVtZW50LT5pc0Zp
bGVVcGxvYWQoKSk7Ci0gICAgCi0gICAgaWYgKCFtX2J1dHRvbikgewotICAgICAgICBtX2J1dHRv
biA9IFVwbG9hZEJ1dHRvbjo6Y3JlYXRlKGlucHV0RWxlbWVudCk7Ci0gICAgICAgIG1fYnV0dG9u
LT5zZXRUeXBlKCJidXR0b24iKTsKLSAgICAgICAgbV9idXR0b24tPnNldFZhbHVlKGZpbGVCdXR0
b25DaG9vc2VGaWxlTGFiZWwoKSk7Ci0gICAgICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gYnV0dG9u
U3R5bGUgPSBjcmVhdGVCdXR0b25TdHlsZShzdHlsZSgpKTsKLSAgICAgICAgUmVuZGVyT2JqZWN0
KiByZW5kZXJlciA9IG1fYnV0dG9uLT5jcmVhdGVSZW5kZXJlcihyZW5kZXJBcmVuYSgpLCBidXR0
b25TdHlsZS5nZXQoKSk7Ci0gICAgICAgIG1fYnV0dG9uLT5zZXRSZW5kZXJlcihyZW5kZXJlcik7
Ci0gICAgICAgIHJlbmRlcmVyLT5zZXRTdHlsZShidXR0b25TdHlsZS5yZWxlYXNlKCkpOwotICAg
ICAgICByZW5kZXJlci0+dXBkYXRlRnJvbUVsZW1lbnQoKTsKLSAgICAgICAgbV9idXR0b24tPnNl
dEF0dGFjaGVkKCk7Ci0gICAgICAgIG1fYnV0dG9uLT5zZXRJbkRvY3VtZW50KCk7Ci0KLSAgICAg
ICAgYWRkQ2hpbGQocmVuZGVyZXIpOwotICAgIH0KIAotICAgIG1fYnV0dG9uLT5zZXREaXNhYmxl
ZCghdGhlbWUoKS0+aXNFbmFibGVkKHRoaXMpKTsKKworICAgIGlmIChIVE1MSW5wdXRFbGVtZW50
KiBidXR0b24gPSB1cGxvYWRCdXR0b24oKSkKKyAgICAgICAgYnV0dG9uLT5zZXREaXNhYmxlZCgh
dGhlbWUoKS0+aXNFbmFibGVkKHRoaXMpKTsKIAogICAgIC8vIFRoaXMgb25seSBzdXBwb3J0cyBj
bGVhcmluZyBvdXQgdGhlIGZpbGVzLCBidXQgdGhhdCdzIE9LIGJlY2F1c2UgZm9yCiAgICAgLy8g
c2VjdXJpdHkgcmVhc29ucyB0aGF0J3MgdGhlIG9ubHkgY2hhbmdlIHRoZSBET00gaXMgYWxsb3dl
ZCB0byBtYWtlLgpAQCAtMjA1LDI2ICsxNTgsMTUgQEAgdm9pZCBSZW5kZXJGaWxlVXBsb2FkQ29u
dHJvbDo6dXBkYXRlRnJvbUVsZW1lbnQoKQogICAgIH0KIH0KIAotaW50IFJlbmRlckZpbGVVcGxv
YWRDb250cm9sOjptYXhGaWxlbmFtZVdpZHRoKCkgY29uc3QKK3N0YXRpYyBpbnQgbm9kZVdpZHRo
KE5vZGUqIG5vZGUpCiB7Ci0gICAgcmV0dXJuIG1heCgwLCBjb250ZW50V2lkdGgoKSAtIG1fYnV0
dG9uLT5yZW5kZXJCb3goKS0+d2lkdGgoKSAtIGFmdGVyQnV0dG9uU3BhY2luZwotICAgICAgICAt
IChtX2ZpbGVDaG9vc2VyLT5pY29uKCkgPyBpY29uV2lkdGggKyBpY29uRmlsZW5hbWVTcGFjaW5n
IDogMCkpOworICAgIHJldHVybiBub2RlID8gbm9kZS0+cmVuZGVyQm94KCktPndpZHRoKCkgOiAw
OwogfQogCi1QYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6
Y3JlYXRlQnV0dG9uU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlKSBjb25zdAor
aW50IFJlbmRlckZpbGVVcGxvYWRDb250cm9sOjptYXhGaWxlbmFtZVdpZHRoKCkgY29uc3QKIHsK
LSAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxlID0gZ2V0Q2FjaGVkUHNldWRvU3R5bGUoRklM
RV9VUExPQURfQlVUVE9OKTsKLSAgICBpZiAoIXN0eWxlKSB7Ci0gICAgICAgIHN0eWxlID0gUmVu
ZGVyU3R5bGU6OmNyZWF0ZSgpOwotICAgICAgICBpZiAocGFyZW50U3R5bGUpCi0gICAgICAgICAg
ICBzdHlsZS0+aW5oZXJpdEZyb20ocGFyZW50U3R5bGUpOwotICAgIH0KLQotICAgIC8vIEJ1dHRv
biB0ZXh0IHdpbGwgd3JhcCBvbiBmaWxlIHVwbG9hZCBjb250cm9scyB3aXRoIHdpZHRocyBzbWFs
bGVyIHRoYW4gdGhlIGludHJpbnNpYyBidXR0b24gd2lkdGgKLSAgICAvLyB3aXRob3V0IHRoaXMg
c2V0V2hpdGVTcGFjZS4KLSAgICBzdHlsZS0+c2V0V2hpdGVTcGFjZShOT1dSQVApOwotCi0gICAg
cmV0dXJuIHN0eWxlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gbWF4KDAsIGNvbnRlbnRXaWR0aCgp
IC0gbm9kZVdpZHRoKHVwbG9hZEJ1dHRvbigpKSAtIGFmdGVyQnV0dG9uU3BhY2luZworICAgICAg
ICAtIChtX2ZpbGVDaG9vc2VyLT5pY29uKCkgPyBpY29uV2lkdGggKyBpY29uRmlsZW5hbWVTcGFj
aW5nIDogMCkpOwogfQogCiB2b2lkIFJlbmRlckZpbGVVcGxvYWRDb250cm9sOjpwYWludE9iamVj
dChQYWludEluZm8mIHBhaW50SW5mbywgaW50IHR4LCBpbnQgdHkpCkBAIC0yNTEsNyArMTkzLDEy
IEBAIHZvaWQgUmVuZGVyRmlsZVVwbG9hZENvbnRyb2w6OnBhaW50T2JqZWN0KFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBpbnQgdHgsIGludCB0eSkKIAogICAgICAgICAvLyBEZXRlcm1pbmUgd2hlcmUg
dGhlIGZpbGVuYW1lIHNob3VsZCBiZSBwbGFjZWQKICAgICAgICAgaW50IGNvbnRlbnRMZWZ0ID0g
dHggKyBib3JkZXJMZWZ0KCkgKyBwYWRkaW5nTGVmdCgpOwotICAgICAgICBpbnQgYnV0dG9uQW5k
SWNvbldpZHRoID0gbV9idXR0b24tPnJlbmRlckJveCgpLT53aWR0aCgpICsgYWZ0ZXJCdXR0b25T
cGFjaW5nCisgICAgICAgIEhUTUxJbnB1dEVsZW1lbnQqIGJ1dHRvbiA9IHVwbG9hZEJ1dHRvbigp
OworICAgICAgICBpZiAoIWJ1dHRvbikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBp
bnQgYnV0dG9uV2lkdGggPSBub2RlV2lkdGgoYnV0dG9uKTsKKyAgICAgICAgaW50IGJ1dHRvbkFu
ZEljb25XaWR0aCA9IGJ1dHRvbldpZHRoICsgYWZ0ZXJCdXR0b25TcGFjaW5nCiAgICAgICAgICAg
ICArIChtX2ZpbGVDaG9vc2VyLT5pY29uKCkgPyBpY29uV2lkdGggKyBpY29uRmlsZW5hbWVTcGFj
aW5nIDogMCk7CiAgICAgICAgIGludCB0ZXh0WDsKICAgICAgICAgaWYgKHN0eWxlKCktPmlzTGVm
dFRvUmlnaHREaXJlY3Rpb24oKSkKQEAgLTI1OSw3ICsyMDYsNyBAQCB2b2lkIFJlbmRlckZpbGVV
cGxvYWRDb250cm9sOjpwYWludE9iamVjdChQYWludEluZm8mIHBhaW50SW5mbywgaW50IHR4LCBp
bnQgdHkpCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHRleHRYID0gY29udGVudExlZnQgKyBj
b250ZW50V2lkdGgoKSAtIGJ1dHRvbkFuZEljb25XaWR0aCAtIGZvbnQud2lkdGgodGV4dFJ1bik7
CiAgICAgICAgIC8vIFdlIHdhbnQgdG8gbWF0Y2ggdGhlIGJ1dHRvbidzIGJhc2VsaW5lCi0gICAg
ICAgIFJlbmRlckJ1dHRvbiogYnV0dG9uUmVuZGVyZXIgPSB0b1JlbmRlckJ1dHRvbihtX2J1dHRv
bi0+cmVuZGVyZXIoKSk7CisgICAgICAgIFJlbmRlckJ1dHRvbiogYnV0dG9uUmVuZGVyZXIgPSB0
b1JlbmRlckJ1dHRvbihidXR0b24tPnJlbmRlcmVyKCkpOwogICAgICAgICBpbnQgdGV4dFkgPSBi
dXR0b25SZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKS55KCkKICAgICAgICAgICAg
ICsgYnV0dG9uUmVuZGVyZXItPm1hcmdpblRvcCgpICsgYnV0dG9uUmVuZGVyZXItPmJvcmRlclRv
cCgpICsgYnV0dG9uUmVuZGVyZXItPnBhZGRpbmdUb3AoKQogICAgICAgICAgICAgKyBidXR0b25S
ZW5kZXJlci0+YmFzZWxpbmVQb3NpdGlvbihBbHBoYWJldGljQmFzZWxpbmUsIHRydWUsIEhvcml6
b250YWxMaW5lLCBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpOwpAQCAtMjc0LDkgKzIyMSw5IEBA
IHZvaWQgUmVuZGVyRmlsZVVwbG9hZENvbnRyb2w6OnBhaW50T2JqZWN0KFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBpbnQgdHgsIGludCB0eSkKICAgICAgICAgICAgIGludCBpY29uWSA9IHR5ICsgYm9y
ZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCkgKyAoY29udGVudEhlaWdodCgpIC0gaWNvbkhlaWdodCkg
LyAyOwogICAgICAgICAgICAgaW50IGljb25YOwogICAgICAgICAgICAgaWYgKHN0eWxlKCktPmlz
TGVmdFRvUmlnaHREaXJlY3Rpb24oKSkKLSAgICAgICAgICAgICAgICBpY29uWCA9IGNvbnRlbnRM
ZWZ0ICsgbV9idXR0b24tPnJlbmRlckJveCgpLT53aWR0aCgpICsgYWZ0ZXJCdXR0b25TcGFjaW5n
OworICAgICAgICAgICAgICAgIGljb25YID0gY29udGVudExlZnQgKyBidXR0b25XaWR0aCArIGFm
dGVyQnV0dG9uU3BhY2luZzsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBpY29u
WCA9IGNvbnRlbnRMZWZ0ICsgY29udGVudFdpZHRoKCkgLSBtX2J1dHRvbi0+cmVuZGVyQm94KCkt
PndpZHRoKCkgLSBhZnRlckJ1dHRvblNwYWNpbmcgLSBpY29uV2lkdGg7CisgICAgICAgICAgICAg
ICAgaWNvblggPSBjb250ZW50TGVmdCArIGNvbnRlbnRXaWR0aCgpIC0gYnV0dG9uV2lkdGggLSBh
ZnRlckJ1dHRvblNwYWNpbmcgLSBpY29uV2lkdGg7CiAKICAgICAgICAgICAgIC8vIERyYXcgdGhl
IGZpbGUgaWNvbgogICAgICAgICAgICAgbV9maWxlQ2hvb3Nlci0+aWNvbigpLT5wYWludChwYWlu
dEluZm8uY29udGV4dCwgSW50UmVjdChpY29uWCwgaWNvblksIGljb25XaWR0aCwgaWNvbkhlaWdo
dCkpOwpAQCAtMzMzLDYgKzI4MCwxNiBAQCBWaXNpYmxlUG9zaXRpb24gUmVuZGVyRmlsZVVwbG9h
ZENvbnRyb2w6OnBvc2l0aW9uRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmKQogICAgIHJldHVybiBW
aXNpYmxlUG9zaXRpb24oKTsKIH0KIAorSFRNTElucHV0RWxlbWVudCogUmVuZGVyRmlsZVVwbG9h
ZENvbnRyb2w6OnVwbG9hZEJ1dHRvbigpIGNvbnN0Cit7CisgICAgSFRNTElucHV0RWxlbWVudCog
aW5wdXQgPSBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4obm9kZSgpKTsKKworICAgIEFT
U0VSVChpbnB1dC0+c2hhZG93Um9vdCgpKTsKKworICAgIE5vZGUqIGJ1dHRvbk5vZGUgPSBpbnB1
dC0+c2hhZG93Um9vdCgpLT5maXJzdENoaWxkKCk7CisgICAgcmV0dXJuIGJ1dHRvbk5vZGUgJiYg
YnV0dG9uTm9kZS0+aXNIVE1MRWxlbWVudCgpICYmIGJ1dHRvbk5vZGUtPmhhc1RhZ05hbWUoaW5w
dXRUYWcpID8gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KGJ1dHRvbk5vZGUpIDogMDsK
K30KKwogdm9pZCBSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6cmVjZWl2ZURyb3BwZWRGaWxlcyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0aHMpCiB7CiAjaWYgRU5BQkxFKERJUkVDVE9SWV9VUExP
QUQpCkBAIC0zNTAsMTAgKzMwNywxMCBAQCB2b2lkIFJlbmRlckZpbGVVcGxvYWRDb250cm9sOjpy
ZWNlaXZlRHJvcHBlZEZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRocykKIAogU3RyaW5n
IFJlbmRlckZpbGVVcGxvYWRDb250cm9sOjpidXR0b25WYWx1ZSgpCiB7Ci0gICAgaWYgKCFtX2J1
dHRvbikKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgIGlmIChIVE1MSW5wdXRFbGVtZW50
KiBidXR0b24gPSB1cGxvYWRCdXR0b24oKSkKKyAgICAgICAgcmV0dXJuIGJ1dHRvbi0+dmFsdWUo
KTsKICAgICAKLSAgICByZXR1cm4gbV9idXR0b24tPnZhbHVlKCk7CisgICAgcmV0dXJuIFN0cmlu
ZygpOwogfQogCiBTdHJpbmcgUmVuZGVyRmlsZVVwbG9hZENvbnRyb2w6OmZpbGVUZXh0VmFsdWUo
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVV
cGxvYWRDb250cm9sLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9h
ZENvbnRyb2wuaAppbmRleCBlOWZiN2YwZWUzYWMzNTQ1YjQ0ZDk3ZjYwNGFmOWUyMmM2MjdjYTdj
Li4zN2UwYTI0NjdlODI5ZTk4YjVlZjI2NTkxNzE3MTk0YzZhZjgxOWJlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuaApAQCAtNTQs
OCArNTQsNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUHJlZmVycmVkTG9n
aWNhbFdpZHRocygpOwogICAgIHZpcnR1YWwgdm9pZCBwYWludE9iamVjdChQYWludEluZm8mLCBp
bnQgdHgsIGludCB0eSk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVE
aWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpOwotCiAgICAgdmlydHVhbCBi
b29sIHJlcXVpcmVzRm9yY2VkU3R5bGVSZWNhbGNQcm9wYWdhdGlvbigpIGNvbnN0IHsgcmV0dXJu
IHRydWU7IH0KIAogICAgIC8vIEZpbGVDaG9vc2VyQ2xpZW50IG1ldGhvZHMuCkBAIC03NSw3ICs3
Myw4IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24gcG9zaXRp
b25Gb3JQb2ludChjb25zdCBJbnRQb2ludCYpOwogCi0gICAgUmVmUHRyPEhUTUxJbnB1dEVsZW1l
bnQ+IG1fYnV0dG9uOworICAgIEhUTUxJbnB1dEVsZW1lbnQqIHVwbG9hZEJ1dHRvbigpIGNvbnN0
OworCiAgICAgUmVmUHRyPEZpbGVDaG9vc2VyPiBtX2ZpbGVDaG9vc2VyOwogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRz
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMu
aAppbmRleCBlNDVmYmYzZDMyOGI1YTNiYzhmNzVkNGZjZWY3MTNiMDFlOWQ2ZGIzLi5lYzA5Njhi
NjJjZWFmMjE4NTRlNTRhZmNiZmE0ZjRjZTEwNmZkOGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaApAQCAtNzQsMTMg
Kzc0LDEzIEBAIGVudW0gUHNldWRvSWQgewogICAgIC8vIFRoZSBvcmRlciBtdXN0IGJlIE5PUCBJ
RCwgcHVibGljIElEcywgYW5kIHRoZW4gaW50ZXJuYWwgSURzLgogICAgIE5PUFNFVURPLCBGSVJT
VF9MSU5FLCBGSVJTVF9MRVRURVIsIEJFRk9SRSwgQUZURVIsIFNFTEVDVElPTiwgRklSU1RfTElO
RV9JTkhFUklURUQsIFNDUk9MTEJBUiwKICAgICAvLyBJbnRlcm5hbCBJRHMgZm9sbG93OgotICAg
IEZJTEVfVVBMT0FEX0JVVFRPTiwgSU5QVVRfUExBQ0VIT0xERVIsCisgICAgSU5QVVRfUExBQ0VI
T0xERVIsCiAgICAgU0NST0xMQkFSX1RIVU1CLCBTQ1JPTExCQVJfQlVUVE9OLCBTQ1JPTExCQVJf
VFJBQ0ssIFNDUk9MTEJBUl9UUkFDS19QSUVDRSwgU0NST0xMQkFSX0NPUk5FUiwgUkVTSVpFUiwK
ICAgICBJTlBVVF9MSVNUX0JVVFRPTiwgVklTSVRFRF9MSU5LLAogICAgIEFGVEVSX0xBU1RfSU5U
RVJOQUxfUFNFVURPSUQsCiAgICAgRlVMTF9TQ1JFRU4sIEZVTExfU0NSRUVOX0RPQ1VNRU5ULCBG
VUxMX1NDUkVFTl9BTkNFU1RPUiwgQU5JTUFUSU5HX0ZVTExfU0NSRUVOX1RSQU5TSVRJT04sCiAg
ICAgRklSU1RfUFVCTElDX1BTRVVET0lEID0gRklSU1RfTElORSwKLSAgICBGSVJTVF9JTlRFUk5B
TF9QU0VVRE9JRCA9IEZJTEVfVVBMT0FEX0JVVFRPTiwKKyAgICBGSVJTVF9JTlRFUk5BTF9QU0VV
RE9JRCA9IElOUFVUX1BMQUNFSE9MREVSLAogICAgIFBVQkxJQ19QU0VVRE9JRF9NQVNLID0gKCgx
IDw8IEZJUlNUX0lOVEVSTkFMX1BTRVVET0lEKSAtIDEpICYgfigoMSA8PCBGSVJTVF9QVUJMSUNf
UFNFVURPSUQpIC0gMSkKIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95952</attachid>
            <date>2011-06-03 13:10:31 -0700</date>
            <delta_ts>2011-06-04 09:17:34 -0700</delta_ts>
            <desc>Oh good lord I hate DOMUtilitiesPrivate.</desc>
            <filename>bug-59005-20110603131030.patch</filename>
            <type>text/plain</type>
            <size>22907</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODgwMjYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4ZjVhMTg4NDRiOTkzMDZj
NWM5NGZiY2IxZjYxMzRhZTNiMWYyYWMxLi5kYWExMTY4Y2Q0OGQzNzI2MjFjZThkYzU4YWM1ZWJm
NjgzMjU3MjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTEtMDYtMDMgIERpbWl0
cmkgR2xhemtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb252ZXJ0IGZpbGUgPGlucHV0PiB0byB1c2Ug
dGhlIG5ldyBzaGFkb3cgRE9NIG1vZGVsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01OTAwNQorCisgICAgICAgIFJlZmFjdG9yaW5nLCBjb3ZlcmVkIGJ5
IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogY3NzL0NTU1NlbGVjdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpwc2V1ZG9JZCk6IFJlbW92ZWQgRklMRV9VUExPQURf
QlVUVE9OIHBzZXVkb0lkIGFuZCBhbGwgcmVmZXJlbmNlcyB0byBpdC4KKyAgICAgICAgKFdlYkNv
cmU6Om5hbWVUb1BzZXVkb1R5cGVNYXApOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1Nl
bGVjdG9yOjpleHRyYWN0UHNldWRvVHlwZSk6IERpdHRvLgorICAgICAgICAqIGNzcy9DU1NTZWxl
Y3Rvci5oOiBEaXR0by4KKyAgICAgICAgKiBjc3MvaHRtbC5jc3M6CisgICAgICAgIChpbnB1dFt0
eXBlPSJidXR0b24iXSwgaW5wdXRbdHlwZT0ic3VibWl0Il0sIGlucHV0W3R5cGU9InJlc2V0Il0p
OiBNb3ZlZCAtd2Via2l0LWZpbGUtdXBsb2FkLWJ1dHRvbiB0byBpdHMgb3duIHJ1bGUuCisgICAg
ICAgIChpbnB1dFt0eXBlPWZpbGVdOjotd2Via2l0LWZpbGUtdXBsb2FkLWJ1dHRvbik6IEFkZGVk
IGFuZCBtb3ZlZCBhbGwgcHJldmlvdXNseSBoYXJkLWNvZGVkIHByb3BlcnRpZXMgdGhlcmUuCisg
ICAgICAgICogaHRtbC9GaWxlSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVwbG9h
ZEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VXBsb2Fk
QnV0dG9uRWxlbWVudDo6VXBsb2FkQnV0dG9uRWxlbWVudCk6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6VXBsb2FkQnV0dG9uRWxlbWVudDo6c2hhZG93UHNldWRvSWQpOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkZpbGVJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUpOiBBZGRlZC4K
KyAgICAgICAgKiBodG1sL0ZpbGVJbnB1dFR5cGUuaDogQWRkZWQgY3JlYXRlU2hhZG93U3VidHJl
ZSBkZWNsLgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjp0b0hUTUxJbnB1dEVsZW1lbnQpOiBBZGRlZCB0b0hUTUxJbnB1dEVsZW1lbnQgaGVs
cGVyLgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5oOiBBZGRlZCBkZWNsLgorICAg
ICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXNGaWxl
SW5wdXQpOiBDaGFuZ2VkIHRoZSBsb2dpYyB0byB1c2UgbmV3IHNoYWRvdyBET00uCisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcDogUmVtb3ZlZCBVcGxvYWRC
dXR0b24gY2xhc3MuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6
flJlbmRlckZpbGVVcGxvYWRDb250cm9sKTogUmVtb3ZlZCBpbml0aWFsaXplciBmb3IgbV9idXR0
b24uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6dXBkYXRlRnJv
bUVsZW1lbnQpOiBSZW1vdmVkIGF0dGFjaG1lbnQgbG9naWMgdGhhdCdzIG5vIGxvbmdlciBuZWNl
c3NhcnkuCisgICAgICAgIChXZWJDb3JlOjpub2RlV2lkdGgpOiBBZGRlZCBhIGhlbHBlci4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckZpbGVVcGxvYWRDb250cm9sOjptYXhGaWxlbmFtZVdpZHRo
KTogQ2hhbmdlZCB0byB1c2UgdXBsb2FkQnV0dG9uIGFuZCBub2RlV2lkdGguCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6cGFpbnRPYmplY3QpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckZpbGVVcGxvYWRDb250cm9sOjp1cGxvYWRCdXR0b24pOiBB
ZGRlZCBhIGhlbHBlciB0byByZXRyaWV2ZSB0aGUgYnV0dG9uLgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyRmlsZVVwbG9hZENvbnRyb2w6OmJ1dHRvblZhbHVlKTogQ2hhbmdlZCB0byB1c2UgdXBs
b2FkQnV0dG9uLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5o
OiBDaGFuZ2VkIGRlY2xzLgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNv
bnN0YW50cy5oOiBSZW1vdmVkIEZJTEVfVVBMT0FEX0JVVFRPTiBkZWNscy4KKwogMjAxMS0wNi0w
MiAgRGltaXRyaSBHbGF6a292ICA8ZGdsYXprb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1NlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAKaW5kZXgg
YWJlY2JlMjg3NWU1YTk0MGE1YWI4Y2Q5ZDgyMzY2ODljOTllMDk0NC4uNGEzMjY2ZjFiOTRkMWMz
NGI5NzY2ZDY0NDk3OWUyOWY4MWFjNDk4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1NlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3Bw
CkBAIC0xMjYsOCArMTI2LDYgQEAgUHNldWRvSWQgQ1NTU2VsZWN0b3I6OnBzZXVkb0lkKFBzZXVk
b1R5cGUgdHlwZSkKICAgICAgICAgcmV0dXJuIEJFRk9SRTsKICAgICBjYXNlIFBzZXVkb0FmdGVy
OgogICAgICAgICByZXR1cm4gQUZURVI7Ci0gICAgY2FzZSBQc2V1ZG9GaWxlVXBsb2FkQnV0dG9u
OgotICAgICAgICByZXR1cm4gRklMRV9VUExPQURfQlVUVE9OOwogICAgIGNhc2UgUHNldWRvSW5w
dXRQbGFjZWhvbGRlcjoKICAgICAgICAgcmV0dXJuIElOUFVUX1BMQUNFSE9MREVSOwogICAgIGNh
c2UgUHNldWRvU2Nyb2xsYmFyOgpAQCAtMjMzLDcgKzIzMSw2IEBAIHN0YXRpYyBIYXNoTWFwPEF0
b21pY1N0cmluZ0ltcGwqLCBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZT4qIG5hbWVUb1BzZXVkb1R5
cGVNYXAoCiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGF1dG9maWxsLCAo
Ii13ZWJraXQtYXV0b2ZpbGwiKSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJp
bmcsIGJlZm9yZSwgKCJiZWZvcmUiKSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNT
dHJpbmcsIGNoZWNrZWQsICgiY2hlY2tlZCIpKTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0
b21pY1N0cmluZywgZmlsZVVwbG9hZEJ1dHRvbiwgKCItd2Via2l0LWZpbGUtdXBsb2FkLWJ1dHRv
biIpKTsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgZGVmYXVsdFN0cmlu
ZywgKCJkZWZhdWx0IikpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBk
aXNhYmxlZCwgKCJkaXNhYmxlZCIpKTsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0
cmluZywgcmVhZE9ubHksICgicmVhZC1vbmx5IikpOwpAQCAtMzE0LDcgKzMxMSw2IEBAIHN0YXRp
YyBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZT4qIG5h
bWVUb1BzZXVkb1R5cGVNYXAoCiAgICAgICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNldChhdXRvZmls
bC5pbXBsKCksIENTU1NlbGVjdG9yOjpQc2V1ZG9BdXRvZmlsbCk7CiAgICAgICAgIG5hbWVUb1Bz
ZXVkb1R5cGUtPnNldChiZWZvcmUuaW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNldWRvQmVmb3JlKTsK
ICAgICAgICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0KGNoZWNrZWQuaW1wbCgpLCBDU1NTZWxlY3Rv
cjo6UHNldWRvQ2hlY2tlZCk7Ci0gICAgICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNldChmaWxlVXBs
b2FkQnV0dG9uLmltcGwoKSwgQ1NTU2VsZWN0b3I6OlBzZXVkb0ZpbGVVcGxvYWRCdXR0b24pOwog
ICAgICAgICBuYW1lVG9Qc2V1ZG9UeXBlLT5zZXQoZGVmYXVsdFN0cmluZy5pbXBsKCksIENTU1Nl
bGVjdG9yOjpQc2V1ZG9EZWZhdWx0KTsKICAgICAgICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0KGRp
c2FibGVkLmltcGwoKSwgQ1NTU2VsZWN0b3I6OlBzZXVkb0Rpc2FibGVkKTsKICAgICAgICAgbmFt
ZVRvUHNldWRvVHlwZS0+c2V0KHJlYWRPbmx5LmltcGwoKSwgQ1NTU2VsZWN0b3I6OlBzZXVkb1Jl
YWRPbmx5KTsKQEAgLTQxMyw3ICs0MDksNiBAQCB2b2lkIENTU1NlbGVjdG9yOjpleHRyYWN0UHNl
dWRvVHlwZSgpIGNvbnN0CiAgICAgY2FzZSBQc2V1ZG9GaXJzdExldHRlcjoKICAgICBjYXNlIFBz
ZXVkb0ZpcnN0TGluZToKICAgICAgICAgY29tcGF0ID0gdHJ1ZTsKLSAgICBjYXNlIFBzZXVkb0Zp
bGVVcGxvYWRCdXR0b246CiAgICAgY2FzZSBQc2V1ZG9JbnB1dExpc3RCdXR0b246CiAgICAgY2Fz
ZSBQc2V1ZG9JbnB1dFBsYWNlaG9sZGVyOgogICAgIGNhc2UgUHNldWRvUmVzaXplcjoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1NlbGVjdG9yLmgKaW5kZXggYzUwY2FiMTYxNDQwMjNjMjdhZTNlNDI1NzhlNzQxNGM0
NDA5ZTU0Mi4uYWJkMTBlNDBiNjI2NzA4NzFiMTRhY2QzMTA2ZWNjZjNlMTNjOTk0MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1NlbGVjdG9yLmgKQEAgLTE3Miw3ICsxNzIsNiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgICAgICBQc2V1ZG9TaW5nbGVCdXR0b24sCiAgICAgICAgICAgICBQc2V1ZG9O
b0J1dHRvbiwKICAgICAgICAgICAgIFBzZXVkb1NlbGVjdGlvbiwKLSAgICAgICAgICAgIFBzZXVk
b0ZpbGVVcGxvYWRCdXR0b24sCiAgICAgICAgICAgICBQc2V1ZG9JbnB1dExpc3RCdXR0b24sCiAg
ICAgICAgICAgICBQc2V1ZG9MZWZ0UGFnZSwKICAgICAgICAgICAgIFBzZXVkb1JpZ2h0UGFnZSwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9odG1sLmNzcyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9odG1sLmNzcwppbmRleCAxMWQ5Y2RkOGI5NGU3ODg3ZDZiZjM5Zjg0NDQ5OTllZGQ4MTk2
NjQ4Li44NTcwNjcxNGEwYjkxZGMyZGUzNGEwNDQ1NTdhYmM3ZThlMTZhMmYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvaHRtbC5jc3MKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL2h0
bWwuY3NzCkBAIC01MTcsMTEgKzUxNywxNyBAQCBpbnB1dFt0eXBlPSJyYWRpbyJdLCBpbnB1dFt0
eXBlPSJjaGVja2JveCJdIHsKICAgICBib3JkZXI6IGluaXRpYWw7CiB9CiAKLWlucHV0W3R5cGU9
ImJ1dHRvbiJdLCBpbnB1dFt0eXBlPSJzdWJtaXQiXSwgaW5wdXRbdHlwZT0icmVzZXQiXSwgaW5w
dXRbdHlwZT0iZmlsZSJdOjotd2Via2l0LWZpbGUtdXBsb2FkLWJ1dHRvbiB7CitpbnB1dFt0eXBl
PSJidXR0b24iXSwgaW5wdXRbdHlwZT0ic3VibWl0Il0sIGlucHV0W3R5cGU9InJlc2V0Il0gewog
ICAgIC13ZWJraXQtYXBwZWFyYW5jZTogcHVzaC1idXR0b247CiAgICAgd2hpdGUtc3BhY2U6IHBy
ZQogfQogCitpbnB1dFt0eXBlPWZpbGVdOjotd2Via2l0LWZpbGUtdXBsb2FkLWJ1dHRvbiB7Cisg
ICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBwdXNoLWJ1dHRvbjsKKyAgICB3aGl0ZS1zcGFjZTogbm93
cmFwOworICAgIG1hcmdpbjogMDsKK30KKwogaW5wdXRbdHlwZT0iYnV0dG9uIl0sIGlucHV0W3R5
cGU9InN1Ym1pdCJdLCBpbnB1dFt0eXBlPSJyZXNldCJdLCBpbnB1dFt0eXBlPSJmaWxlIl06Oi13
ZWJraXQtZmlsZS11cGxvYWQtYnV0dG9uLCBidXR0b24gewogICAgIC13ZWJraXQtYm94LWFsaWdu
OiBjZW50ZXI7CiAgICAgdGV4dC1hbGlnbjogY2VudGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlu
cHV0VHlwZS5jcHAKaW5kZXggZTdkY2Q1YzEyZTFhZDllOWI3ZjA3MmVhODJkMWY0MDJiMDZkNzZm
YS4uZDBkOGY5YWIwYjBlOGQ0ZDE3YmY3Zjc3MjQwNGE0MDQ3MjBjOTY3ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiSFRN
TE5hbWVzLmgiCiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgIlJlbmRl
ckZpbGVVcGxvYWRDb250cm9sLmgiCisjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogI2luY2x1ZGUg
PHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAg
LTM4LDYgKzM5LDM2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhU
TUxOYW1lczsKIAorY2xhc3MgVXBsb2FkQnV0dG9uRWxlbWVudCA6IHB1YmxpYyBIVE1MSW5wdXRF
bGVtZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxVcGxvYWRCdXR0b25FbGVt
ZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKKworcHJpdmF0ZToKKyAgICBVcGxvYWRCdXR0b25FbGVt
ZW50KERvY3VtZW50Kik7CisKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93
UHNldWRvSWQoKSBjb25zdDsKK307CisKK1Bhc3NSZWZQdHI8VXBsb2FkQnV0dG9uRWxlbWVudD4g
VXBsb2FkQnV0dG9uRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKK3sKKyAgICBS
ZWZQdHI8VXBsb2FkQnV0dG9uRWxlbWVudD4gYnV0dG9uID0gYWRvcHRSZWYobmV3IFVwbG9hZEJ1
dHRvbkVsZW1lbnQoZG9jdW1lbnQpKTsKKyAgICBidXR0b24tPnNldFR5cGUoImJ1dHRvbiIpOwor
ICAgIGJ1dHRvbi0+c2V0VmFsdWUoZmlsZUJ1dHRvbkNob29zZUZpbGVMYWJlbCgpKTsKKyAgICBy
ZXR1cm4gYnV0dG9uLnJlbGVhc2UoKTsKK30KKworCitVcGxvYWRCdXR0b25FbGVtZW50OjpVcGxv
YWRCdXR0b25FbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKKyAgICA6IEhUTUxJbnB1dEVsZW1l
bnQoaW5wdXRUYWcsIGRvY3VtZW50LCAwLCBmYWxzZSkKK3sKK30KKworY29uc3QgQXRvbWljU3Ry
aW5nJiBVcGxvYWRCdXR0b25FbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0Cit7CisgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHBzZXVkb0lkLCAoIi13ZWJraXQtZmls
ZS11cGxvYWQtYnV0dG9uIikpOworICAgIHJldHVybiBwc2V1ZG9JZDsKK30KKwogaW5saW5lIEZp
bGVJbnB1dFR5cGU6OkZpbGVJbnB1dFR5cGUoSFRNTElucHV0RWxlbWVudCogZWxlbWVudCkKICAg
ICA6IEJhc2VCdXR0b25JbnB1dFR5cGUoZWxlbWVudCkKICAgICAsIG1fZmlsZUxpc3QoRmlsZUxp
c3Q6OmNyZWF0ZSgpKQpAQCAtMTkzLDQgKzIyNCwxMCBAQCBib29sIEZpbGVJbnB1dFR5cGU6Omlz
RmlsZVVwbG9hZCgpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgRmlsZUlucHV0
VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSgpCit7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
CisgICAgZWxlbWVudCgpLT5lbnN1cmVTaGFkb3dSb290KCktPmFwcGVuZENoaWxkKFVwbG9hZEJ1
dHRvbkVsZW1lbnQ6OmNyZWF0ZShlbGVtZW50KCktPmRvY3VtZW50KCkpLCBlYyk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmls
ZUlucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmgKaW5kZXgg
NmQ3OWVjZGM3NWM3ZDlmYWI4YzY0ZDIwZjc3ZWE2M2VjODg5OTc3OC4uNGM5ZGEwNWY4ZjhiOTNj
M2I5ZmQwNTk5YmZjZmQxZDIwNzNmMmUzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9GaWxlSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBl
LmgKQEAgLTU5LDYgKzU5LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgc3RvcmVzVmFs
dWVTZXBhcmF0ZUZyb21BdHRyaWJ1dGUoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0RmlsZUxpc3Qo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdGhzKTsKICAgICB2aXJ0dWFsIGJvb2wgaXNGaWxlVXBs
b2FkKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWUoKTsKIAog
ICAgIFJlZlB0cjxGaWxlTGlzdD4gbV9maWxlTGlzdDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCA5NDE2NzU0NmFmZTE5M2IwZWZkMWI2ZTg2ODM0NmNk
YWFkODFiMWZhLi41M2RhZjA4ZDc4MDQ4MmFlMWNhMGI0YjQ5MWViMzNjYmVkYTQ0MzcxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTE4NDAsNCArMTg0MCw5
IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6dXBkYXRlVmFsdWVJZk5lZWRlZCgpCiAgICAgICAg
IHNldFZhbHVlKG5ld1ZhbHVlKTsKIH0KIAorSFRNTElucHV0RWxlbWVudCogdG9IVE1MSW5wdXRF
bGVtZW50KE5vZGUqIG5vZGUpCit7CisgICAgcmV0dXJuIG5vZGUgJiYgbm9kZS0+aGFzVGFnTmFt
ZShpbnB1dFRhZykgPyBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4obm9kZSkgOiAwOwor
fQorCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SW5wdXRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaApp
bmRleCBlM2QwYzM3NjkxMDI4MzZjYTJmNDViOTJkMjdhOWRhMDk2YmFlZGMwLi4yMTM0ZmEyZmY4
NDVkYTI5YmRlOTVjODRkZDVmYWJmZmU2ZjI1YmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
bnB1dEVsZW1lbnQuaApAQCAtMzUzLDYgKzM1MywxMiBAQCBwcml2YXRlOgogICAgIE93blB0cjxJ
bnB1dFR5cGU+IG1faW5wdXRUeXBlOwogfTsKIAorSFRNTElucHV0RWxlbWVudCogdG9IVE1MSW5w
dXRFbGVtZW50KE5vZGUqKTsKKworLy8gVGhpcyB3aWxsIGNhdGNoIGFueW9uZSBkb2luZyBhbiB1
bm5lY2Vzc2FyeSBjYXN0Lgordm9pZCB0b0hUTUxJbnB1dEVsZW1lbnQoSFRNTElucHV0RWxlbWVu
dCopOworCisKIH0gLy9uYW1lc3BhY2UKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0Nv
bnRyb2xsZXIuY3BwCmluZGV4IDQ2ZTc0ODZjNTkzNDNmZmEwYmZhZTQ3ZWZhMDNmMjQyNjJhODcx
ODMuLjA2Nzg2ZWE0ZDZkYmVmMTY3NTdhNThmYzJmMjE3MmIxYjBjODE2ODggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBAIC0yNTMsMjAgKzI1MywxMyBAQCBzdGF0aWMg
SFRNTElucHV0RWxlbWVudCogYXNGaWxlSW5wdXQoTm9kZSogbm9kZSkKIHsKICAgICBBU1NFUlQo
bm9kZSk7CiAKLSAgICAvLyBUaGUgYnV0dG9uIGZvciBhIEZJTEUgaW5wdXQgaXMgYSBzdWIgZWxl
bWVudCB3aXRoIG5vIHNldCBpbnB1dCB0eXBlCi0gICAgLy8gSW4gb3JkZXIgdG8gZ2V0IGFyb3Vu
ZCB0aGlzIHByb2JsZW0gd2UgYXNzdW1lIGFueSBub24tRklMRSBpbnB1dCBlbGVtZW50Ci0gICAg
Ly8gaXMgdGhpcyBpbnRlcm5hbCBidXR0b24sIGFuZCB0cnkgcXVlcnlpbmcgdGhlIHNoYWRvdyBw
YXJlbnQgbm9kZS4KLSAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmlucHV0VGFn
KSAmJiBub2RlLT5pc1NoYWRvd1Jvb3QoKSAmJiAhc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVu
dCo+KG5vZGUpLT5pc0ZpbGVVcGxvYWQoKSkKLSAgICAgICAgbm9kZSA9IG5vZGUtPnNoYWRvd0hv
c3QoKTsKKyAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQgPSB0b0hUTUxJbnB1dEVs
ZW1lbnQobm9kZSk7CiAKLSAgICBpZiAoIW5vZGUgfHwgIW5vZGUtPmhhc1RhZ05hbWUoSFRNTE5h
bWVzOjppbnB1dFRhZykpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgSFRNTElucHV0RWxlbWVu
dCogaW5wdXRFbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KG5vZGUpOwot
ICAgIGlmICghaW5wdXRFbGVtZW50LT5pc0ZpbGVVcGxvYWQoKSkKLSAgICAgICAgcmV0dXJuIDA7
CisgICAgLy8gSWYgdGhpcyBpcyBhIGJ1dHRvbiBpbnNpZGUgb2YgdGhlIGEgZmlsZSBpbnB1dCwg
bW92ZSB1cCB0byB0aGUgZmlsZSBpbnB1dC4KKyAgICBpZiAoaW5wdXRFbGVtZW50ICYmIGlucHV0
RWxlbWVudC0+aXNUZXh0QnV0dG9uKCkgJiYgaW5wdXRFbGVtZW50LT50cmVlU2NvcGUoKS0+aXNT
aGFkb3dCb3VuZGFyeSgpKQorICAgICAgICBpbnB1dEVsZW1lbnQgPSB0b0hUTUxJbnB1dEVsZW1l
bnQoaW5wdXRFbGVtZW50LT50cmVlU2NvcGUoKS0+c2hhZG93SG9zdCgpKTsKIAotICAgIHJldHVy
biBpbnB1dEVsZW1lbnQ7CisgICAgcmV0dXJuIGlucHV0RWxlbWVudCAmJiBpbnB1dEVsZW1lbnQt
PmlzRmlsZVVwbG9hZCgpID8gaW5wdXRFbGVtZW50IDogMDsKIH0KIAogLy8gVGhpcyBjYW4gcmV0
dXJuIG51bGwgaWYgYW4gZW1wdHkgZG9jdW1lbnQgaXMgbG9hZGVkLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAKaW5kZXggNzkw
Y2UwOTkxZDJkN2I0NGQwNmFhMGQ5MTkyZmU5MWQyMDY2MmUwNS4uMzRlOGU1OWJmMDM4YWFlZmE5
YjEzNTk1ZWNjYjI0NWU5NGJkNmNiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5j
bHVkZSAiUmVuZGVyVGV4dC5oIgogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCiAjaW5jbHVkZSAi
UmVuZGVyVmlldy5oIgorI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJUZXh0UnVu
LmgiCiAjaW5jbHVkZSA8bWF0aC5oPgogCkBAIC01MiwzMiArNTMsNiBAQCBjb25zdCBpbnQgaWNv
bkZpbGVuYW1lU3BhY2luZyA9IDI7CiBjb25zdCBpbnQgZGVmYXVsdFdpZHRoTnVtQ2hhcnMgPSAz
NDsKIGNvbnN0IGludCBidXR0b25TaGFkb3dIZWlnaHQgPSAyOwogCi1jbGFzcyBVcGxvYWRCdXR0
b24gOiBwdWJsaWMgSFRNTElucHV0RWxlbWVudCB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8VXBsb2FkQnV0dG9uPiBjcmVhdGUoSFRNTElucHV0RWxlbWVudCopOwotICAgIHZpcnR1
YWwgdm9pZCBkZXRhY2goKTsKLQotcHJpdmF0ZToKLSAgICBVcGxvYWRCdXR0b24oSFRNTElucHV0
RWxlbWVudCopOwotfTsKLQotUGFzc1JlZlB0cjxVcGxvYWRCdXR0b24+IFVwbG9hZEJ1dHRvbjo6
Y3JlYXRlKEhUTUxJbnB1dEVsZW1lbnQqIHNoYWRvd1BhcmVudCkKLXsKLSAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFVwbG9hZEJ1dHRvbihzaGFkb3dQYXJlbnQpKTsKLX0KLQotdm9pZCBVcGxvYWRC
dXR0b246OmRldGFjaCgpCi17Ci0gICAgSFRNTElucHV0RWxlbWVudDo6ZGV0YWNoKCk7Ci0gICAg
c2V0U2hhZG93SG9zdCgwKTsKLX0KLQotVXBsb2FkQnV0dG9uOjpVcGxvYWRCdXR0b24oSFRNTElu
cHV0RWxlbWVudCogc2hhZG93UGFyZW50KQotICAgIDogSFRNTElucHV0RWxlbWVudChpbnB1dFRh
Zywgc2hhZG93UGFyZW50LT5kb2N1bWVudCgpLCAwLCBmYWxzZSkKLXsKLSAgICBzZXRTaGFkb3dI
b3N0KHNoYWRvd1BhcmVudCk7Ci19Ci0KIFJlbmRlckZpbGVVcGxvYWRDb250cm9sOjpSZW5kZXJG
aWxlVXBsb2FkQ29udHJvbChIVE1MSW5wdXRFbGVtZW50KiBpbnB1dCkKICAgICA6IFJlbmRlckJs
b2NrKGlucHV0KQogewpAQCAtOTEsMTggKzY2LDkgQEAgUmVuZGVyRmlsZVVwbG9hZENvbnRyb2w6
OlJlbmRlckZpbGVVcGxvYWRDb250cm9sKEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0KQogCiBSZW5k
ZXJGaWxlVXBsb2FkQ29udHJvbDo6flJlbmRlckZpbGVVcGxvYWRDb250cm9sKCkKIHsKLSAgICBp
ZiAobV9idXR0b24pCi0gICAgICAgIG1fYnV0dG9uLT5kZXRhY2goKTsKICAgICBtX2ZpbGVDaG9v
c2VyLT5kaXNjb25uZWN0Q2xpZW50KCk7CiB9CiAKLXZvaWQgUmVuZGVyRmlsZVVwbG9hZENvbnRy
b2w6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHls
ZSogb2xkU3R5bGUpCi17Ci0gICAgUmVuZGVyQmxvY2s6OnN0eWxlRGlkQ2hhbmdlKGRpZmYsIG9s
ZFN0eWxlKTsKLSAgICBpZiAobV9idXR0b24pCi0gICAgICAgIG1fYnV0dG9uLT5yZW5kZXJlcigp
LT5zZXRTdHlsZShjcmVhdGVCdXR0b25TdHlsZShzdHlsZSgpKSk7Ci19Ci0KIHZvaWQgUmVuZGVy
RmlsZVVwbG9hZENvbnRyb2w6OnZhbHVlQ2hhbmdlZCgpCiB7CiAgICAgLy8gZGlzcGF0Y2hGb3Jt
Q29udHJvbENoYW5nZUV2ZW50IG1heSBkZXN0cm95IHRoaXMgcmVuZGVyZXIKQEAgLTE3NywyMyAr
MTQzLDEwIEBAIHZvaWQgUmVuZGVyRmlsZVVwbG9hZENvbnRyb2w6OnVwZGF0ZUZyb21FbGVtZW50
KCkKIHsKICAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxI
VE1MSW5wdXRFbGVtZW50Kj4obm9kZSgpKTsKICAgICBBU1NFUlQoaW5wdXRFbGVtZW50LT5pc0Zp
bGVVcGxvYWQoKSk7Ci0gICAgCi0gICAgaWYgKCFtX2J1dHRvbikgewotICAgICAgICBtX2J1dHRv
biA9IFVwbG9hZEJ1dHRvbjo6Y3JlYXRlKGlucHV0RWxlbWVudCk7Ci0gICAgICAgIG1fYnV0dG9u
LT5zZXRUeXBlKCJidXR0b24iKTsKLSAgICAgICAgbV9idXR0b24tPnNldFZhbHVlKGZpbGVCdXR0
b25DaG9vc2VGaWxlTGFiZWwoKSk7Ci0gICAgICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gYnV0dG9u
U3R5bGUgPSBjcmVhdGVCdXR0b25TdHlsZShzdHlsZSgpKTsKLSAgICAgICAgUmVuZGVyT2JqZWN0
KiByZW5kZXJlciA9IG1fYnV0dG9uLT5jcmVhdGVSZW5kZXJlcihyZW5kZXJBcmVuYSgpLCBidXR0
b25TdHlsZS5nZXQoKSk7Ci0gICAgICAgIG1fYnV0dG9uLT5zZXRSZW5kZXJlcihyZW5kZXJlcik7
Ci0gICAgICAgIHJlbmRlcmVyLT5zZXRTdHlsZShidXR0b25TdHlsZS5yZWxlYXNlKCkpOwotICAg
ICAgICByZW5kZXJlci0+dXBkYXRlRnJvbUVsZW1lbnQoKTsKLSAgICAgICAgbV9idXR0b24tPnNl
dEF0dGFjaGVkKCk7Ci0gICAgICAgIG1fYnV0dG9uLT5zZXRJbkRvY3VtZW50KCk7Ci0KLSAgICAg
ICAgYWRkQ2hpbGQocmVuZGVyZXIpOwotICAgIH0KIAotICAgIG1fYnV0dG9uLT5zZXREaXNhYmxl
ZCghdGhlbWUoKS0+aXNFbmFibGVkKHRoaXMpKTsKKworICAgIGlmIChIVE1MSW5wdXRFbGVtZW50
KiBidXR0b24gPSB1cGxvYWRCdXR0b24oKSkKKyAgICAgICAgYnV0dG9uLT5zZXREaXNhYmxlZCgh
dGhlbWUoKS0+aXNFbmFibGVkKHRoaXMpKTsKIAogICAgIC8vIFRoaXMgb25seSBzdXBwb3J0cyBj
bGVhcmluZyBvdXQgdGhlIGZpbGVzLCBidXQgdGhhdCdzIE9LIGJlY2F1c2UgZm9yCiAgICAgLy8g
c2VjdXJpdHkgcmVhc29ucyB0aGF0J3MgdGhlIG9ubHkgY2hhbmdlIHRoZSBET00gaXMgYWxsb3dl
ZCB0byBtYWtlLgpAQCAtMjA1LDI2ICsxNTgsMTUgQEAgdm9pZCBSZW5kZXJGaWxlVXBsb2FkQ29u
dHJvbDo6dXBkYXRlRnJvbUVsZW1lbnQoKQogICAgIH0KIH0KIAotaW50IFJlbmRlckZpbGVVcGxv
YWRDb250cm9sOjptYXhGaWxlbmFtZVdpZHRoKCkgY29uc3QKK3N0YXRpYyBpbnQgbm9kZVdpZHRo
KE5vZGUqIG5vZGUpCiB7Ci0gICAgcmV0dXJuIG1heCgwLCBjb250ZW50V2lkdGgoKSAtIG1fYnV0
dG9uLT5yZW5kZXJCb3goKS0+d2lkdGgoKSAtIGFmdGVyQnV0dG9uU3BhY2luZwotICAgICAgICAt
IChtX2ZpbGVDaG9vc2VyLT5pY29uKCkgPyBpY29uV2lkdGggKyBpY29uRmlsZW5hbWVTcGFjaW5n
IDogMCkpOworICAgIHJldHVybiBub2RlID8gbm9kZS0+cmVuZGVyQm94KCktPndpZHRoKCkgOiAw
OwogfQogCi1QYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6
Y3JlYXRlQnV0dG9uU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlKSBjb25zdAor
aW50IFJlbmRlckZpbGVVcGxvYWRDb250cm9sOjptYXhGaWxlbmFtZVdpZHRoKCkgY29uc3QKIHsK
LSAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxlID0gZ2V0Q2FjaGVkUHNldWRvU3R5bGUoRklM
RV9VUExPQURfQlVUVE9OKTsKLSAgICBpZiAoIXN0eWxlKSB7Ci0gICAgICAgIHN0eWxlID0gUmVu
ZGVyU3R5bGU6OmNyZWF0ZSgpOwotICAgICAgICBpZiAocGFyZW50U3R5bGUpCi0gICAgICAgICAg
ICBzdHlsZS0+aW5oZXJpdEZyb20ocGFyZW50U3R5bGUpOwotICAgIH0KLQotICAgIC8vIEJ1dHRv
biB0ZXh0IHdpbGwgd3JhcCBvbiBmaWxlIHVwbG9hZCBjb250cm9scyB3aXRoIHdpZHRocyBzbWFs
bGVyIHRoYW4gdGhlIGludHJpbnNpYyBidXR0b24gd2lkdGgKLSAgICAvLyB3aXRob3V0IHRoaXMg
c2V0V2hpdGVTcGFjZS4KLSAgICBzdHlsZS0+c2V0V2hpdGVTcGFjZShOT1dSQVApOwotCi0gICAg
cmV0dXJuIHN0eWxlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gbWF4KDAsIGNvbnRlbnRXaWR0aCgp
IC0gbm9kZVdpZHRoKHVwbG9hZEJ1dHRvbigpKSAtIGFmdGVyQnV0dG9uU3BhY2luZworICAgICAg
ICAtIChtX2ZpbGVDaG9vc2VyLT5pY29uKCkgPyBpY29uV2lkdGggKyBpY29uRmlsZW5hbWVTcGFj
aW5nIDogMCkpOwogfQogCiB2b2lkIFJlbmRlckZpbGVVcGxvYWRDb250cm9sOjpwYWludE9iamVj
dChQYWludEluZm8mIHBhaW50SW5mbywgaW50IHR4LCBpbnQgdHkpCkBAIC0yNTEsNyArMTkzLDEy
IEBAIHZvaWQgUmVuZGVyRmlsZVVwbG9hZENvbnRyb2w6OnBhaW50T2JqZWN0KFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBpbnQgdHgsIGludCB0eSkKIAogICAgICAgICAvLyBEZXRlcm1pbmUgd2hlcmUg
dGhlIGZpbGVuYW1lIHNob3VsZCBiZSBwbGFjZWQKICAgICAgICAgaW50IGNvbnRlbnRMZWZ0ID0g
dHggKyBib3JkZXJMZWZ0KCkgKyBwYWRkaW5nTGVmdCgpOwotICAgICAgICBpbnQgYnV0dG9uQW5k
SWNvbldpZHRoID0gbV9idXR0b24tPnJlbmRlckJveCgpLT53aWR0aCgpICsgYWZ0ZXJCdXR0b25T
cGFjaW5nCisgICAgICAgIEhUTUxJbnB1dEVsZW1lbnQqIGJ1dHRvbiA9IHVwbG9hZEJ1dHRvbigp
OworICAgICAgICBpZiAoIWJ1dHRvbikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBp
bnQgYnV0dG9uV2lkdGggPSBub2RlV2lkdGgoYnV0dG9uKTsKKyAgICAgICAgaW50IGJ1dHRvbkFu
ZEljb25XaWR0aCA9IGJ1dHRvbldpZHRoICsgYWZ0ZXJCdXR0b25TcGFjaW5nCiAgICAgICAgICAg
ICArIChtX2ZpbGVDaG9vc2VyLT5pY29uKCkgPyBpY29uV2lkdGggKyBpY29uRmlsZW5hbWVTcGFj
aW5nIDogMCk7CiAgICAgICAgIGludCB0ZXh0WDsKICAgICAgICAgaWYgKHN0eWxlKCktPmlzTGVm
dFRvUmlnaHREaXJlY3Rpb24oKSkKQEAgLTI1OSw3ICsyMDYsNyBAQCB2b2lkIFJlbmRlckZpbGVV
cGxvYWRDb250cm9sOjpwYWludE9iamVjdChQYWludEluZm8mIHBhaW50SW5mbywgaW50IHR4LCBp
bnQgdHkpCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHRleHRYID0gY29udGVudExlZnQgKyBj
b250ZW50V2lkdGgoKSAtIGJ1dHRvbkFuZEljb25XaWR0aCAtIGZvbnQud2lkdGgodGV4dFJ1bik7
CiAgICAgICAgIC8vIFdlIHdhbnQgdG8gbWF0Y2ggdGhlIGJ1dHRvbidzIGJhc2VsaW5lCi0gICAg
ICAgIFJlbmRlckJ1dHRvbiogYnV0dG9uUmVuZGVyZXIgPSB0b1JlbmRlckJ1dHRvbihtX2J1dHRv
bi0+cmVuZGVyZXIoKSk7CisgICAgICAgIFJlbmRlckJ1dHRvbiogYnV0dG9uUmVuZGVyZXIgPSB0
b1JlbmRlckJ1dHRvbihidXR0b24tPnJlbmRlcmVyKCkpOwogICAgICAgICBpbnQgdGV4dFkgPSBi
dXR0b25SZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKS55KCkKICAgICAgICAgICAg
ICsgYnV0dG9uUmVuZGVyZXItPm1hcmdpblRvcCgpICsgYnV0dG9uUmVuZGVyZXItPmJvcmRlclRv
cCgpICsgYnV0dG9uUmVuZGVyZXItPnBhZGRpbmdUb3AoKQogICAgICAgICAgICAgKyBidXR0b25S
ZW5kZXJlci0+YmFzZWxpbmVQb3NpdGlvbihBbHBoYWJldGljQmFzZWxpbmUsIHRydWUsIEhvcml6
b250YWxMaW5lLCBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpOwpAQCAtMjc0LDkgKzIyMSw5IEBA
IHZvaWQgUmVuZGVyRmlsZVVwbG9hZENvbnRyb2w6OnBhaW50T2JqZWN0KFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBpbnQgdHgsIGludCB0eSkKICAgICAgICAgICAgIGludCBpY29uWSA9IHR5ICsgYm9y
ZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCkgKyAoY29udGVudEhlaWdodCgpIC0gaWNvbkhlaWdodCkg
LyAyOwogICAgICAgICAgICAgaW50IGljb25YOwogICAgICAgICAgICAgaWYgKHN0eWxlKCktPmlz
TGVmdFRvUmlnaHREaXJlY3Rpb24oKSkKLSAgICAgICAgICAgICAgICBpY29uWCA9IGNvbnRlbnRM
ZWZ0ICsgbV9idXR0b24tPnJlbmRlckJveCgpLT53aWR0aCgpICsgYWZ0ZXJCdXR0b25TcGFjaW5n
OworICAgICAgICAgICAgICAgIGljb25YID0gY29udGVudExlZnQgKyBidXR0b25XaWR0aCArIGFm
dGVyQnV0dG9uU3BhY2luZzsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBpY29u
WCA9IGNvbnRlbnRMZWZ0ICsgY29udGVudFdpZHRoKCkgLSBtX2J1dHRvbi0+cmVuZGVyQm94KCkt
PndpZHRoKCkgLSBhZnRlckJ1dHRvblNwYWNpbmcgLSBpY29uV2lkdGg7CisgICAgICAgICAgICAg
ICAgaWNvblggPSBjb250ZW50TGVmdCArIGNvbnRlbnRXaWR0aCgpIC0gYnV0dG9uV2lkdGggLSBh
ZnRlckJ1dHRvblNwYWNpbmcgLSBpY29uV2lkdGg7CiAKICAgICAgICAgICAgIC8vIERyYXcgdGhl
IGZpbGUgaWNvbgogICAgICAgICAgICAgbV9maWxlQ2hvb3Nlci0+aWNvbigpLT5wYWludChwYWlu
dEluZm8uY29udGV4dCwgSW50UmVjdChpY29uWCwgaWNvblksIGljb25XaWR0aCwgaWNvbkhlaWdo
dCkpOwpAQCAtMzMzLDYgKzI4MCwxNiBAQCBWaXNpYmxlUG9zaXRpb24gUmVuZGVyRmlsZVVwbG9h
ZENvbnRyb2w6OnBvc2l0aW9uRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmKQogICAgIHJldHVybiBW
aXNpYmxlUG9zaXRpb24oKTsKIH0KIAorSFRNTElucHV0RWxlbWVudCogUmVuZGVyRmlsZVVwbG9h
ZENvbnRyb2w6OnVwbG9hZEJ1dHRvbigpIGNvbnN0Cit7CisgICAgSFRNTElucHV0RWxlbWVudCog
aW5wdXQgPSBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4obm9kZSgpKTsKKworICAgIEFT
U0VSVChpbnB1dC0+c2hhZG93Um9vdCgpKTsKKworICAgIE5vZGUqIGJ1dHRvbk5vZGUgPSBpbnB1
dC0+c2hhZG93Um9vdCgpLT5maXJzdENoaWxkKCk7CisgICAgcmV0dXJuIGJ1dHRvbk5vZGUgJiYg
YnV0dG9uTm9kZS0+aXNIVE1MRWxlbWVudCgpICYmIGJ1dHRvbk5vZGUtPmhhc1RhZ05hbWUoaW5w
dXRUYWcpID8gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KGJ1dHRvbk5vZGUpIDogMDsK
K30KKwogdm9pZCBSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6cmVjZWl2ZURyb3BwZWRGaWxlcyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0aHMpCiB7CiAjaWYgRU5BQkxFKERJUkVDVE9SWV9VUExP
QUQpCkBAIC0zNTAsMTAgKzMwNywxMCBAQCB2b2lkIFJlbmRlckZpbGVVcGxvYWRDb250cm9sOjpy
ZWNlaXZlRHJvcHBlZEZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRocykKIAogU3RyaW5n
IFJlbmRlckZpbGVVcGxvYWRDb250cm9sOjpidXR0b25WYWx1ZSgpCiB7Ci0gICAgaWYgKCFtX2J1
dHRvbikKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgIGlmIChIVE1MSW5wdXRFbGVtZW50
KiBidXR0b24gPSB1cGxvYWRCdXR0b24oKSkKKyAgICAgICAgcmV0dXJuIGJ1dHRvbi0+dmFsdWUo
KTsKICAgICAKLSAgICByZXR1cm4gbV9idXR0b24tPnZhbHVlKCk7CisgICAgcmV0dXJuIFN0cmlu
ZygpOwogfQogCiBTdHJpbmcgUmVuZGVyRmlsZVVwbG9hZENvbnRyb2w6OmZpbGVUZXh0VmFsdWUo
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVV
cGxvYWRDb250cm9sLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9h
ZENvbnRyb2wuaAppbmRleCBlOWZiN2YwZWUzYWMzNTQ1YjQ0ZDk3ZjYwNGFmOWUyMmM2MjdjYTdj
Li4zN2UwYTI0NjdlODI5ZTk4YjVlZjI2NTkxNzE3MTk0YzZhZjgxOWJlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuaApAQCAtNTQs
OCArNTQsNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUHJlZmVycmVkTG9n
aWNhbFdpZHRocygpOwogICAgIHZpcnR1YWwgdm9pZCBwYWludE9iamVjdChQYWludEluZm8mLCBp
bnQgdHgsIGludCB0eSk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVE
aWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpOwotCiAgICAgdmlydHVhbCBi
b29sIHJlcXVpcmVzRm9yY2VkU3R5bGVSZWNhbGNQcm9wYWdhdGlvbigpIGNvbnN0IHsgcmV0dXJu
IHRydWU7IH0KIAogICAgIC8vIEZpbGVDaG9vc2VyQ2xpZW50IG1ldGhvZHMuCkBAIC03NSw3ICs3
Myw4IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24gcG9zaXRp
b25Gb3JQb2ludChjb25zdCBJbnRQb2ludCYpOwogCi0gICAgUmVmUHRyPEhUTUxJbnB1dEVsZW1l
bnQ+IG1fYnV0dG9uOworICAgIEhUTUxJbnB1dEVsZW1lbnQqIHVwbG9hZEJ1dHRvbigpIGNvbnN0
OworCiAgICAgUmVmUHRyPEZpbGVDaG9vc2VyPiBtX2ZpbGVDaG9vc2VyOwogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRz
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMu
aAppbmRleCBlNDVmYmYzZDMyOGI1YTNiYzhmNzVkNGZjZWY3MTNiMDFlOWQ2ZGIzLi5lYzA5Njhi
NjJjZWFmMjE4NTRlNTRhZmNiZmE0ZjRjZTEwNmZkOGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaApAQCAtNzQsMTMg
Kzc0LDEzIEBAIGVudW0gUHNldWRvSWQgewogICAgIC8vIFRoZSBvcmRlciBtdXN0IGJlIE5PUCBJ
RCwgcHVibGljIElEcywgYW5kIHRoZW4gaW50ZXJuYWwgSURzLgogICAgIE5PUFNFVURPLCBGSVJT
VF9MSU5FLCBGSVJTVF9MRVRURVIsIEJFRk9SRSwgQUZURVIsIFNFTEVDVElPTiwgRklSU1RfTElO
RV9JTkhFUklURUQsIFNDUk9MTEJBUiwKICAgICAvLyBJbnRlcm5hbCBJRHMgZm9sbG93OgotICAg
IEZJTEVfVVBMT0FEX0JVVFRPTiwgSU5QVVRfUExBQ0VIT0xERVIsCisgICAgSU5QVVRfUExBQ0VI
T0xERVIsCiAgICAgU0NST0xMQkFSX1RIVU1CLCBTQ1JPTExCQVJfQlVUVE9OLCBTQ1JPTExCQVJf
VFJBQ0ssIFNDUk9MTEJBUl9UUkFDS19QSUVDRSwgU0NST0xMQkFSX0NPUk5FUiwgUkVTSVpFUiwK
ICAgICBJTlBVVF9MSVNUX0JVVFRPTiwgVklTSVRFRF9MSU5LLAogICAgIEFGVEVSX0xBU1RfSU5U
RVJOQUxfUFNFVURPSUQsCiAgICAgRlVMTF9TQ1JFRU4sIEZVTExfU0NSRUVOX0RPQ1VNRU5ULCBG
VUxMX1NDUkVFTl9BTkNFU1RPUiwgQU5JTUFUSU5HX0ZVTExfU0NSRUVOX1RSQU5TSVRJT04sCiAg
ICAgRklSU1RfUFVCTElDX1BTRVVET0lEID0gRklSU1RfTElORSwKLSAgICBGSVJTVF9JTlRFUk5B
TF9QU0VVRE9JRCA9IEZJTEVfVVBMT0FEX0JVVFRPTiwKKyAgICBGSVJTVF9JTlRFUk5BTF9QU0VV
RE9JRCA9IElOUFVUX1BMQUNFSE9MREVSLAogICAgIFBVQkxJQ19QU0VVRE9JRF9NQVNLID0gKCgx
IDw8IEZJUlNUX0lOVEVSTkFMX1BTRVVET0lEKSAtIDEpICYgfigoMSA8PCBGSVJTVF9QVUJMSUNf
UFNFVURPSUQpIC0gMSkKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMGFkYjNl
NTAxNjU3NmU0YTE3OGQzMTY4NmI3MmMwYTcwYjQ3ZGI5OC4uZDVmOTJkZmViMjQ0ZGM0MTkwMzdk
M2ZjMTJlYzIwMDM5YjFlMTJkMyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMyBAQAorMjAxMS0wNi0wMyAgRGltaXRyaSBHbGF6a292ICA8ZGdsYXprb3ZAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENv
bnZlcnQgZmlsZSA8aW5wdXQ+IHRvIHVzZSB0aGUgbmV3IHNoYWRvdyBET00gbW9kZWwKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5MDA1CisKKyAgICAg
ICAgKiBzcmMvRE9NVXRpbGl0aWVzUHJpdmF0ZS5jcHA6IFJlbW92ZWQgdG9IVE1MSW5wdXRFbGVt
ZW50ICJoZWxwZXIiLgorICAgICAgICAqIHNyYy9ET01VdGlsaXRpZXNQcml2YXRlLmg6IERpdHRv
LgorCiAyMDExLTA2LTAzICBOYW9raSBUYWthbm8gIDx0YWthbm8ubmFva2lAZ21haWwuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvRE9NVXRpbGl0aWVzUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9ET01VdGlsaXRpZXNQcml2YXRlLmNwcAppbmRleCBlNjg4YmZhZWRlNWYy
ZTYyYWRiOWFhMzIyMDk5MGI1MmUxNzljYjY5Li5jNTQxZTRhOTAyNThjY2RjMjM3NzdmM2NjODYz
NDVhMDBiMmY4NGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9ET01V
dGlsaXRpZXNQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9ET01V
dGlsaXRpZXNQcml2YXRlLmNwcApAQCAtNTcsMTEgKzU3LDYgQEAgSFRNTE5vZGVUeXBlKiB0b0hU
TUxFbGVtZW50KE5vZGUqIG5vZGUsIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpCiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCi1IVE1MSW5wdXRFbGVtZW50KiB0b0hUTUxJbnB1dEVsZW1lbnQoTm9k
ZSogbm9kZSkKLXsKLSAgICByZXR1cm4gdG9IVE1MRWxlbWVudDxIVE1MSW5wdXRFbGVtZW50Pihu
b2RlLCBIVE1MTmFtZXM6OmlucHV0VGFnKTsKLX0KLQogSFRNTExpbmtFbGVtZW50KiB0b0hUTUxM
aW5rRWxlbWVudChOb2RlKiBub2RlKQogewogICAgIHJldHVybiB0b0hUTUxFbGVtZW50PEhUTUxM
aW5rRWxlbWVudD4obm9kZSwgSFRNTE5hbWVzOjpsaW5rVGFnKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0RPTVV0aWxpdGllc1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0RPTVV0aWxpdGllc1ByaXZhdGUuaAppbmRleCA5OWUzZDljNTJhMGZi
MDJkZGZlMmNlNmQxMjU0ZmJmNjA4MDljZGI4Li44OTI2OTkzNjFlZDNmZTIxY2JkZGEwYzgwNWQ5
MGNkN2VmZDIzNGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9ET01V
dGlsaXRpZXNQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRE9NVXRp
bGl0aWVzUHJpdmF0ZS5oCkBAIC0zMyw3ICszMyw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIEVsZW1lbnQ7Ci1jbGFzcyBIVE1MSW5wdXRFbGVtZW50OwogY2xhc3MgSFRNTExpbmtF
bGVtZW50OwogY2xhc3MgSFRNTE1ldGFFbGVtZW50OwogY2xhc3MgSFRNTE9wdGlvbkVsZW1lbnQ7
CkBAIC00Niw3ICs0NSw2IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiAvLyBJZiBub2RlIGlzIGFu
IEhUTUwgbm9kZSB3aXRoIGEgdGFnIG5hbWUgb2YgbmFtZSBpdCBpcyBjYXN0ZWQgYW5kIHJldHVy
bmVkLgogLy8gSWYgbm9kZSBpcyBub3QgYW4gSFRNTCBub2RlIG9yIHRoZSB0YWcgbmFtZSBpcyBu
b3QgbmFtZSwgMCBpcyByZXR1cm5lZC4KLVdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQqIHRvSFRN
TElucHV0RWxlbWVudChXZWJDb3JlOjpOb2RlKik7CiBXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQq
IHRvSFRNTExpbmtFbGVtZW50KFdlYkNvcmU6Ok5vZGUqKTsKIFdlYkNvcmU6OkhUTUxNZXRhRWxl
bWVudCogdG9IVE1MTWV0YUVsZW1lbnQoV2ViQ29yZTo6Tm9kZSopOwogV2ViQ29yZTo6SFRNTE9w
dGlvbkVsZW1lbnQqIHRvSFRNTE9wdGlvbkVsZW1lbnQoV2ViQ29yZTo6Tm9kZSopOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96024</attachid>
            <date>2011-06-04 09:17:40 -0700</date>
            <delta_ts>2011-06-04 09:38:31 -0700</delta_ts>
            <desc>Uses toInputElement.</desc>
            <filename>bug-59005-20110604091739.patch</filename>
            <type>text/plain</type>
            <size>19394</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODgxMTMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhZGJhMjk3ZjAzMDlhZjA1
Y2JlMjZiMTgwMGEwNWYyODRjODllNDQ0Li4yODZkNDVkNWZlYzM0OWYyOGExMGVjZmY0NDgxOWMy
YTE0ZTE2OGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTEtMDYtMDMgIERpbWl0
cmkgR2xhemtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb252ZXJ0IGZpbGUgPGlucHV0PiB0byB1c2Ug
dGhlIG5ldyBzaGFkb3cgRE9NIG1vZGVsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01OTAwNQorCisgICAgICAgIFJlZmFjdG9yaW5nLCBjb3ZlcmVkIGJ5
IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogY3NzL0NTU1NlbGVjdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpwc2V1ZG9JZCk6IFJlbW92ZWQgRklMRV9VUExPQURf
QlVUVE9OIHBzZXVkb0lkIGFuZCBhbGwgcmVmZXJlbmNlcyB0byBpdC4KKyAgICAgICAgKFdlYkNv
cmU6Om5hbWVUb1BzZXVkb1R5cGVNYXApOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1Nl
bGVjdG9yOjpleHRyYWN0UHNldWRvVHlwZSk6IERpdHRvLgorICAgICAgICAqIGNzcy9DU1NTZWxl
Y3Rvci5oOiBEaXR0by4KKyAgICAgICAgKiBjc3MvaHRtbC5jc3M6CisgICAgICAgIChpbnB1dFt0
eXBlPSJidXR0b24iXSwgaW5wdXRbdHlwZT0ic3VibWl0Il0sIGlucHV0W3R5cGU9InJlc2V0Il0p
OiBNb3ZlZCAtd2Via2l0LWZpbGUtdXBsb2FkLWJ1dHRvbiB0byBpdHMgb3duIHJ1bGUuCisgICAg
ICAgIChpbnB1dFt0eXBlPSJmaWxlIl06Oi13ZWJraXQtZmlsZS11cGxvYWQtYnV0dG9uKTogQWRk
ZWQgYW5kIG1vdmVkIGFsbCBwcmV2aW91c2x5IGhhcmQtY29kZWQgcHJvcGVydGllcyB0aGVyZS4K
KyAgICAgICAgKiBodG1sL0ZpbGVJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VXBs
b2FkQnV0dG9uRWxlbWVudDo6Y3JlYXRlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpVcGxv
YWRCdXR0b25FbGVtZW50OjpVcGxvYWRCdXR0b25FbGVtZW50KTogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpVcGxvYWRCdXR0b25FbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCk6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSk6IEFkZGVk
LgorICAgICAgICAqIGh0bWwvRmlsZUlucHV0VHlwZS5oOiBBZGRlZCBjcmVhdGVTaGFkb3dTdWJ0
cmVlIGRlY2wuCisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjphc0ZpbGVJbnB1dCk6IENoYW5nZWQgdGhlIGxvZ2ljIHRvIHVzZSBuZXcgc2hhZG93
IERPTS4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwOiBS
ZW1vdmVkIFVwbG9hZEJ1dHRvbiBjbGFzcy4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZpbGVV
cGxvYWRDb250cm9sOjp+UmVuZGVyRmlsZVVwbG9hZENvbnRyb2wpOiBSZW1vdmVkIGluaXRpYWxp
emVyIGZvciBtX2J1dHRvbi4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZpbGVVcGxvYWRDb250
cm9sOjp1cGRhdGVGcm9tRWxlbWVudCk6IFJlbW92ZWQgYXR0YWNobWVudCBsb2dpYyB0aGF0J3Mg
bm8gbG9uZ2VyIG5lY2Vzc2FyeS4KKyAgICAgICAgKFdlYkNvcmU6Om5vZGVXaWR0aCk6IEFkZGVk
IGEgaGVscGVyLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmlsZVVwbG9hZENvbnRyb2w6Om1h
eEZpbGVuYW1lV2lkdGgpOiBDaGFuZ2VkIHRvIHVzZSB1cGxvYWRCdXR0b24gYW5kIG5vZGVXaWR0
aC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZpbGVVcGxvYWRDb250cm9sOjpwYWludE9iamVj
dCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmlsZVVwbG9hZENvbnRyb2w6OnVw
bG9hZEJ1dHRvbik6IEFkZGVkIGEgaGVscGVyIHRvIHJldHJpZXZlIHRoZSBidXR0b24uCisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6YnV0dG9uVmFsdWUpOiBDaGFu
Z2VkIHRvIHVzZSB1cGxvYWRCdXR0b24uCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZpbGVV
cGxvYWRDb250cm9sLmg6IENoYW5nZWQgZGVjbHMuCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlQ29uc3RhbnRzLmg6IFJlbW92ZWQgRklMRV9VUExPQURfQlVUVE9OIGRlY2xz
LgorCiAyMDExLTA2LTA0ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1NlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5j
cHAKaW5kZXggYWJlY2JlMjg3NWU1YTk0MGE1YWI4Y2Q5ZDgyMzY2ODljOTllMDk0NC4uNGEzMjY2
ZjFiOTRkMWMzNGI5NzY2ZDY0NDk3OWUyOWY4MWFjNDk4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2Vs
ZWN0b3IuY3BwCkBAIC0xMjYsOCArMTI2LDYgQEAgUHNldWRvSWQgQ1NTU2VsZWN0b3I6OnBzZXVk
b0lkKFBzZXVkb1R5cGUgdHlwZSkKICAgICAgICAgcmV0dXJuIEJFRk9SRTsKICAgICBjYXNlIFBz
ZXVkb0FmdGVyOgogICAgICAgICByZXR1cm4gQUZURVI7Ci0gICAgY2FzZSBQc2V1ZG9GaWxlVXBs
b2FkQnV0dG9uOgotICAgICAgICByZXR1cm4gRklMRV9VUExPQURfQlVUVE9OOwogICAgIGNhc2Ug
UHNldWRvSW5wdXRQbGFjZWhvbGRlcjoKICAgICAgICAgcmV0dXJuIElOUFVUX1BMQUNFSE9MREVS
OwogICAgIGNhc2UgUHNldWRvU2Nyb2xsYmFyOgpAQCAtMjMzLDcgKzIzMSw2IEBAIHN0YXRpYyBI
YXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZT4qIG5hbWVU
b1BzZXVkb1R5cGVNYXAoCiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGF1
dG9maWxsLCAoIi13ZWJraXQtYXV0b2ZpbGwiKSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChB
dG9taWNTdHJpbmcsIGJlZm9yZSwgKCJiZWZvcmUiKSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChBdG9taWNTdHJpbmcsIGNoZWNrZWQsICgiY2hlY2tlZCIpKTsKLSAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKEF0b21pY1N0cmluZywgZmlsZVVwbG9hZEJ1dHRvbiwgKCItd2Via2l0LWZpbGUtdXBs
b2FkLWJ1dHRvbiIpKTsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgZGVm
YXVsdFN0cmluZywgKCJkZWZhdWx0IikpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWlj
U3RyaW5nLCBkaXNhYmxlZCwgKCJkaXNhYmxlZCIpKTsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KEF0b21pY1N0cmluZywgcmVhZE9ubHksICgicmVhZC1vbmx5IikpOwpAQCAtMzE0LDcgKzMxMSw2
IEBAIHN0YXRpYyBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBDU1NTZWxlY3Rvcjo6UHNldWRv
VHlwZT4qIG5hbWVUb1BzZXVkb1R5cGVNYXAoCiAgICAgICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNl
dChhdXRvZmlsbC5pbXBsKCksIENTU1NlbGVjdG9yOjpQc2V1ZG9BdXRvZmlsbCk7CiAgICAgICAg
IG5hbWVUb1BzZXVkb1R5cGUtPnNldChiZWZvcmUuaW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNldWRv
QmVmb3JlKTsKICAgICAgICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0KGNoZWNrZWQuaW1wbCgpLCBD
U1NTZWxlY3Rvcjo6UHNldWRvQ2hlY2tlZCk7Ci0gICAgICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNl
dChmaWxlVXBsb2FkQnV0dG9uLmltcGwoKSwgQ1NTU2VsZWN0b3I6OlBzZXVkb0ZpbGVVcGxvYWRC
dXR0b24pOwogICAgICAgICBuYW1lVG9Qc2V1ZG9UeXBlLT5zZXQoZGVmYXVsdFN0cmluZy5pbXBs
KCksIENTU1NlbGVjdG9yOjpQc2V1ZG9EZWZhdWx0KTsKICAgICAgICAgbmFtZVRvUHNldWRvVHlw
ZS0+c2V0KGRpc2FibGVkLmltcGwoKSwgQ1NTU2VsZWN0b3I6OlBzZXVkb0Rpc2FibGVkKTsKICAg
ICAgICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0KHJlYWRPbmx5LmltcGwoKSwgQ1NTU2VsZWN0b3I6
OlBzZXVkb1JlYWRPbmx5KTsKQEAgLTQxMyw3ICs0MDksNiBAQCB2b2lkIENTU1NlbGVjdG9yOjpl
eHRyYWN0UHNldWRvVHlwZSgpIGNvbnN0CiAgICAgY2FzZSBQc2V1ZG9GaXJzdExldHRlcjoKICAg
ICBjYXNlIFBzZXVkb0ZpcnN0TGluZToKICAgICAgICAgY29tcGF0ID0gdHJ1ZTsKLSAgICBjYXNl
IFBzZXVkb0ZpbGVVcGxvYWRCdXR0b246CiAgICAgY2FzZSBQc2V1ZG9JbnB1dExpc3RCdXR0b246
CiAgICAgY2FzZSBQc2V1ZG9JbnB1dFBsYWNlaG9sZGVyOgogICAgIGNhc2UgUHNldWRvUmVzaXpl
cjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgKaW5kZXggYzUwY2FiMTYxNDQwMjNjMjdhZTNlNDI1
NzhlNzQxNGM0NDA5ZTU0Mi4uYWJkMTBlNDBiNjI2NzA4NzFiMTRhY2QzMTA2ZWNjZjNlMTNjOTk0
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgKQEAgLTE3Miw3ICsxNzIsNiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBQc2V1ZG9TaW5nbGVCdXR0b24sCiAgICAgICAgICAg
ICBQc2V1ZG9Ob0J1dHRvbiwKICAgICAgICAgICAgIFBzZXVkb1NlbGVjdGlvbiwKLSAgICAgICAg
ICAgIFBzZXVkb0ZpbGVVcGxvYWRCdXR0b24sCiAgICAgICAgICAgICBQc2V1ZG9JbnB1dExpc3RC
dXR0b24sCiAgICAgICAgICAgICBQc2V1ZG9MZWZ0UGFnZSwKICAgICAgICAgICAgIFBzZXVkb1Jp
Z2h0UGFnZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9odG1sLmNzcyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9odG1sLmNzcwppbmRleCAxMWQ5Y2RkOGI5NGU3ODg3ZDZiZjM5Zjg0NDQ5
OTllZGQ4MTk2NjQ4Li5mOWFhZmVhNDZhZDdjN2FiYjk0ZmU3YTMyMGUwNzM0NTA1ZDY1MWNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvaHRtbC5jc3MKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL2h0bWwuY3NzCkBAIC01MTcsMTEgKzUxNywxNyBAQCBpbnB1dFt0eXBlPSJyYWRpbyJd
LCBpbnB1dFt0eXBlPSJjaGVja2JveCJdIHsKICAgICBib3JkZXI6IGluaXRpYWw7CiB9CiAKLWlu
cHV0W3R5cGU9ImJ1dHRvbiJdLCBpbnB1dFt0eXBlPSJzdWJtaXQiXSwgaW5wdXRbdHlwZT0icmVz
ZXQiXSwgaW5wdXRbdHlwZT0iZmlsZSJdOjotd2Via2l0LWZpbGUtdXBsb2FkLWJ1dHRvbiB7Citp
bnB1dFt0eXBlPSJidXR0b24iXSwgaW5wdXRbdHlwZT0ic3VibWl0Il0sIGlucHV0W3R5cGU9InJl
c2V0Il0gewogICAgIC13ZWJraXQtYXBwZWFyYW5jZTogcHVzaC1idXR0b247CiAgICAgd2hpdGUt
c3BhY2U6IHByZQogfQogCitpbnB1dFt0eXBlPSJmaWxlIl06Oi13ZWJraXQtZmlsZS11cGxvYWQt
YnV0dG9uIHsKKyAgICAtd2Via2l0LWFwcGVhcmFuY2U6IHB1c2gtYnV0dG9uOworICAgIHdoaXRl
LXNwYWNlOiBub3dyYXA7CisgICAgbWFyZ2luOiAwOworfQorCiBpbnB1dFt0eXBlPSJidXR0b24i
XSwgaW5wdXRbdHlwZT0ic3VibWl0Il0sIGlucHV0W3R5cGU9InJlc2V0Il0sIGlucHV0W3R5cGU9
ImZpbGUiXTo6LXdlYmtpdC1maWxlLXVwbG9hZC1idXR0b24sIGJ1dHRvbiB7CiAgICAgLXdlYmtp
dC1ib3gtYWxpZ246IGNlbnRlcjsKICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9GaWxlSW5wdXRUeXBlLmNwcAppbmRleCBlN2RjZDVjMTJlMWFkOWU5YjdmMDcyZWE4MmQx
ZjQwMmIwNmQ3NmZhLi5kMGQ4ZjlhYjBiMGU4ZDRkMTdiZjdmNzcyNDA0YTQwNDcyMGM5NjdlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNp
bmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW5j
bHVkZSAiUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuaCIKKyNpbmNsdWRlICJTaGFkb3dSb290Lmgi
CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIApAQCAtMzgsNiArMzksMzYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBu
YW1lc3BhY2UgSFRNTE5hbWVzOwogCitjbGFzcyBVcGxvYWRCdXR0b25FbGVtZW50IDogcHVibGlj
IEhUTUxJbnB1dEVsZW1lbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFVwbG9h
ZEJ1dHRvbkVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOworCitwcml2YXRlOgorICAgIFVwbG9h
ZEJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQqKTsKKworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3Ry
aW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0OworfTsKKworUGFzc1JlZlB0cjxVcGxvYWRCdXR0
b25FbGVtZW50PiBVcGxvYWRCdXR0b25FbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50
KQoreworICAgIFJlZlB0cjxVcGxvYWRCdXR0b25FbGVtZW50PiBidXR0b24gPSBhZG9wdFJlZihu
ZXcgVXBsb2FkQnV0dG9uRWxlbWVudChkb2N1bWVudCkpOworICAgIGJ1dHRvbi0+c2V0VHlwZSgi
YnV0dG9uIik7CisgICAgYnV0dG9uLT5zZXRWYWx1ZShmaWxlQnV0dG9uQ2hvb3NlRmlsZUxhYmVs
KCkpOworICAgIHJldHVybiBidXR0b24ucmVsZWFzZSgpOworfQorCisKK1VwbG9hZEJ1dHRvbkVs
ZW1lbnQ6OlVwbG9hZEJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQorICAgIDogSFRN
TElucHV0RWxlbWVudChpbnB1dFRhZywgZG9jdW1lbnQsIDAsIGZhbHNlKQoreworfQorCitjb25z
dCBBdG9taWNTdHJpbmcmIFVwbG9hZEJ1dHRvbkVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29u
c3QKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgcHNldWRvSWQsICgi
LXdlYmtpdC1maWxlLXVwbG9hZC1idXR0b24iKSk7CisgICAgcmV0dXJuIHBzZXVkb0lkOworfQor
CiBpbmxpbmUgRmlsZUlucHV0VHlwZTo6RmlsZUlucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50KiBl
bGVtZW50KQogICAgIDogQmFzZUJ1dHRvbklucHV0VHlwZShlbGVtZW50KQogICAgICwgbV9maWxl
TGlzdChGaWxlTGlzdDo6Y3JlYXRlKCkpCkBAIC0xOTMsNCArMjI0LDEwIEBAIGJvb2wgRmlsZUlu
cHV0VHlwZTo6aXNGaWxlVXBsb2FkKCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9p
ZCBGaWxlSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlKCkKK3sKKyAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKKyAgICBlbGVtZW50KCktPmVuc3VyZVNoYWRvd1Jvb3QoKS0+YXBwZW5kQ2hp
bGQoVXBsb2FkQnV0dG9uRWxlbWVudDo6Y3JlYXRlKGVsZW1lbnQoKS0+ZG9jdW1lbnQoKSksIGVj
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9GaWxlSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5
cGUuaAppbmRleCA2ZDc5ZWNkYzc1YzdkOWZhYjhjNjRkMjBmNzdlYTYzZWM4ODk5Nzc4Li40Yzlk
YTA1ZjhmOGI5M2MzYjlmZDA1OTliZmNmZDFkMjA3M2YyZTM1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zp
bGVJbnB1dFR5cGUuaApAQCAtNTksNiArNTksNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9v
bCBzdG9yZXNWYWx1ZVNlcGFyYXRlRnJvbUF0dHJpYnV0ZSgpOwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRGaWxlTGlzdChjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0aHMpOwogICAgIHZpcnR1YWwgYm9v
bCBpc0ZpbGVVcGxvYWQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlU2hhZG93U3Vi
dHJlZSgpOwogCiAgICAgUmVmUHRyPEZpbGVMaXN0PiBtX2ZpbGVMaXN0OwogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKaW5kZXggNDZlNzQ4NmM1OTM0M2ZmYTBiZmFlNDdl
ZmEwM2YyNDI2MmE4NzE4My4uMmE2MjNlMDc3Y2E2YjkzYjhlYTIyZmMzNzc0NTA4ZTU4OGM4MmRi
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAgLTI1MywyMCArMjUz
LDEzIEBAIHN0YXRpYyBIVE1MSW5wdXRFbGVtZW50KiBhc0ZpbGVJbnB1dChOb2RlKiBub2RlKQog
ewogICAgIEFTU0VSVChub2RlKTsKIAotICAgIC8vIFRoZSBidXR0b24gZm9yIGEgRklMRSBpbnB1
dCBpcyBhIHN1YiBlbGVtZW50IHdpdGggbm8gc2V0IGlucHV0IHR5cGUKLSAgICAvLyBJbiBvcmRl
ciB0byBnZXQgYXJvdW5kIHRoaXMgcHJvYmxlbSB3ZSBhc3N1bWUgYW55IG5vbi1GSUxFIGlucHV0
IGVsZW1lbnQKLSAgICAvLyBpcyB0aGlzIGludGVybmFsIGJ1dHRvbiwgYW5kIHRyeSBxdWVyeWlu
ZyB0aGUgc2hhZG93IHBhcmVudCBub2RlLgotICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKEhUTUxO
YW1lczo6aW5wdXRUYWcpICYmIG5vZGUtPmlzU2hhZG93Um9vdCgpICYmICFzdGF0aWNfY2FzdDxI
VE1MSW5wdXRFbGVtZW50Kj4obm9kZSktPmlzRmlsZVVwbG9hZCgpKQotICAgICAgICBub2RlID0g
bm9kZS0+c2hhZG93SG9zdCgpOworICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCA9
IG5vZGUtPnRvSW5wdXRFbGVtZW50KCk7CiAKLSAgICBpZiAoIW5vZGUgfHwgIW5vZGUtPmhhc1Rh
Z05hbWUoSFRNTE5hbWVzOjppbnB1dFRhZykpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgSFRN
TElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVu
dCo+KG5vZGUpOwotICAgIGlmICghaW5wdXRFbGVtZW50LT5pc0ZpbGVVcGxvYWQoKSkKLSAgICAg
ICAgcmV0dXJuIDA7CisgICAgLy8gSWYgdGhpcyBpcyBhIGJ1dHRvbiBpbnNpZGUgb2YgdGhlIGEg
ZmlsZSBpbnB1dCwgbW92ZSB1cCB0byB0aGUgZmlsZSBpbnB1dC4KKyAgICBpZiAoaW5wdXRFbGVt
ZW50ICYmIGlucHV0RWxlbWVudC0+aXNUZXh0QnV0dG9uKCkgJiYgaW5wdXRFbGVtZW50LT50cmVl
U2NvcGUoKS0+aXNTaGFkb3dCb3VuZGFyeSgpKQorICAgICAgICBpbnB1dEVsZW1lbnQgPSBpbnB1
dEVsZW1lbnQtPnRyZWVTY29wZSgpLT5zaGFkb3dIb3N0KCktPnRvSW5wdXRFbGVtZW50KCk7CiAK
LSAgICByZXR1cm4gaW5wdXRFbGVtZW50OworICAgIHJldHVybiBpbnB1dEVsZW1lbnQgJiYgaW5w
dXRFbGVtZW50LT5pc0ZpbGVVcGxvYWQoKSA/IGlucHV0RWxlbWVudCA6IDA7CiB9CiAKIC8vIFRo
aXMgY2FuIHJldHVybiBudWxsIGlmIGFuIGVtcHR5IGRvY3VtZW50IGlzIGxvYWRlZC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3Bw
CmluZGV4IDcyNjc2ZGU4MmI2YTc0NDM4YWQ0YjdiYmY2MmFkZjRhYWQwNDAyMzIuLmI1ZTVhMjY4
NGE4YzBlOGIxMGRiZTBjNWU0N2NlOGI3MGIxMjg0ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcApAQCAtMzYsNiArMzYs
NyBAQAogI2luY2x1ZGUgIlJlbmRlclRleHQuaCIKICNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgog
I2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKKyNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAjaW5jbHVk
ZSAiVGV4dFJ1bi5oIgogI2luY2x1ZGUgPG1hdGguaD4KIApAQCAtNTIsMzIgKzUzLDYgQEAgY29u
c3QgaW50IGljb25GaWxlbmFtZVNwYWNpbmcgPSAyOwogY29uc3QgaW50IGRlZmF1bHRXaWR0aE51
bUNoYXJzID0gMzQ7CiBjb25zdCBpbnQgYnV0dG9uU2hhZG93SGVpZ2h0ID0gMjsKIAotY2xhc3Mg
VXBsb2FkQnV0dG9uIDogcHVibGljIEhUTUxJbnB1dEVsZW1lbnQgewotcHVibGljOgotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFVwbG9hZEJ1dHRvbj4gY3JlYXRlKEhUTUxJbnB1dEVsZW1lbnQqKTsK
LSAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoKCk7Ci0KLXByaXZhdGU6Ci0gICAgVXBsb2FkQnV0dG9u
KEhUTUxJbnB1dEVsZW1lbnQqKTsKLX07Ci0KLVBhc3NSZWZQdHI8VXBsb2FkQnV0dG9uPiBVcGxv
YWRCdXR0b246OmNyZWF0ZShIVE1MSW5wdXRFbGVtZW50KiBzaGFkb3dQYXJlbnQpCi17Ci0gICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBVcGxvYWRCdXR0b24oc2hhZG93UGFyZW50KSk7Ci19Ci0KLXZv
aWQgVXBsb2FkQnV0dG9uOjpkZXRhY2goKQotewotICAgIEhUTUxJbnB1dEVsZW1lbnQ6OmRldGFj
aCgpOwotICAgIHNldFNoYWRvd0hvc3QoMCk7Ci19Ci0KLVVwbG9hZEJ1dHRvbjo6VXBsb2FkQnV0
dG9uKEhUTUxJbnB1dEVsZW1lbnQqIHNoYWRvd1BhcmVudCkKLSAgICA6IEhUTUxJbnB1dEVsZW1l
bnQoaW5wdXRUYWcsIHNoYWRvd1BhcmVudC0+ZG9jdW1lbnQoKSwgMCwgZmFsc2UpCi17Ci0gICAg
c2V0U2hhZG93SG9zdChzaGFkb3dQYXJlbnQpOwotfQotCiBSZW5kZXJGaWxlVXBsb2FkQ29udHJv
bDo6UmVuZGVyRmlsZVVwbG9hZENvbnRyb2woSFRNTElucHV0RWxlbWVudCogaW5wdXQpCiAgICAg
OiBSZW5kZXJCbG9jayhpbnB1dCkKIHsKQEAgLTkxLDE4ICs2Niw5IEBAIFJlbmRlckZpbGVVcGxv
YWRDb250cm9sOjpSZW5kZXJGaWxlVXBsb2FkQ29udHJvbChIVE1MSW5wdXRFbGVtZW50KiBpbnB1
dCkKIAogUmVuZGVyRmlsZVVwbG9hZENvbnRyb2w6On5SZW5kZXJGaWxlVXBsb2FkQ29udHJvbCgp
CiB7Ci0gICAgaWYgKG1fYnV0dG9uKQotICAgICAgICBtX2J1dHRvbi0+ZGV0YWNoKCk7CiAgICAg
bV9maWxlQ2hvb3Nlci0+ZGlzY29ubmVjdENsaWVudCgpOwogfQogCi12b2lkIFJlbmRlckZpbGVV
cGxvYWRDb250cm9sOjpzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3Qg
UmVuZGVyU3R5bGUqIG9sZFN0eWxlKQotewotICAgIFJlbmRlckJsb2NrOjpzdHlsZURpZENoYW5n
ZShkaWZmLCBvbGRTdHlsZSk7Ci0gICAgaWYgKG1fYnV0dG9uKQotICAgICAgICBtX2J1dHRvbi0+
cmVuZGVyZXIoKS0+c2V0U3R5bGUoY3JlYXRlQnV0dG9uU3R5bGUoc3R5bGUoKSkpOwotfQotCiB2
b2lkIFJlbmRlckZpbGVVcGxvYWRDb250cm9sOjp2YWx1ZUNoYW5nZWQoKQogewogICAgIC8vIGRp
c3BhdGNoRm9ybUNvbnRyb2xDaGFuZ2VFdmVudCBtYXkgZGVzdHJveSB0aGlzIHJlbmRlcmVyCkBA
IC0xNzcsMjMgKzE0MywxMCBAQCB2b2lkIFJlbmRlckZpbGVVcGxvYWRDb250cm9sOjp1cGRhdGVG
cm9tRWxlbWVudCgpCiB7CiAgICAgSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50ID0gc3Rh
dGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KG5vZGUoKSk7CiAgICAgQVNTRVJUKGlucHV0RWxl
bWVudC0+aXNGaWxlVXBsb2FkKCkpOwotICAgIAotICAgIGlmICghbV9idXR0b24pIHsKLSAgICAg
ICAgbV9idXR0b24gPSBVcGxvYWRCdXR0b246OmNyZWF0ZShpbnB1dEVsZW1lbnQpOwotICAgICAg
ICBtX2J1dHRvbi0+c2V0VHlwZSgiYnV0dG9uIik7Ci0gICAgICAgIG1fYnV0dG9uLT5zZXRWYWx1
ZShmaWxlQnV0dG9uQ2hvb3NlRmlsZUxhYmVsKCkpOwotICAgICAgICBSZWZQdHI8UmVuZGVyU3R5
bGU+IGJ1dHRvblN0eWxlID0gY3JlYXRlQnV0dG9uU3R5bGUoc3R5bGUoKSk7Ci0gICAgICAgIFJl
bmRlck9iamVjdCogcmVuZGVyZXIgPSBtX2J1dHRvbi0+Y3JlYXRlUmVuZGVyZXIocmVuZGVyQXJl
bmEoKSwgYnV0dG9uU3R5bGUuZ2V0KCkpOwotICAgICAgICBtX2J1dHRvbi0+c2V0UmVuZGVyZXIo
cmVuZGVyZXIpOwotICAgICAgICByZW5kZXJlci0+c2V0U3R5bGUoYnV0dG9uU3R5bGUucmVsZWFz
ZSgpKTsKLSAgICAgICAgcmVuZGVyZXItPnVwZGF0ZUZyb21FbGVtZW50KCk7Ci0gICAgICAgIG1f
YnV0dG9uLT5zZXRBdHRhY2hlZCgpOwotICAgICAgICBtX2J1dHRvbi0+c2V0SW5Eb2N1bWVudCgp
OwotCi0gICAgICAgIGFkZENoaWxkKHJlbmRlcmVyKTsKLSAgICB9CiAKLSAgICBtX2J1dHRvbi0+
c2V0RGlzYWJsZWQoIXRoZW1lKCktPmlzRW5hYmxlZCh0aGlzKSk7CisKKyAgICBpZiAoSFRNTElu
cHV0RWxlbWVudCogYnV0dG9uID0gdXBsb2FkQnV0dG9uKCkpCisgICAgICAgIGJ1dHRvbi0+c2V0
RGlzYWJsZWQoIXRoZW1lKCktPmlzRW5hYmxlZCh0aGlzKSk7CiAKICAgICAvLyBUaGlzIG9ubHkg
c3VwcG9ydHMgY2xlYXJpbmcgb3V0IHRoZSBmaWxlcywgYnV0IHRoYXQncyBPSyBiZWNhdXNlIGZv
cgogICAgIC8vIHNlY3VyaXR5IHJlYXNvbnMgdGhhdCdzIHRoZSBvbmx5IGNoYW5nZSB0aGUgRE9N
IGlzIGFsbG93ZWQgdG8gbWFrZS4KQEAgLTIwNSwyNiArMTU4LDE1IEBAIHZvaWQgUmVuZGVyRmls
ZVVwbG9hZENvbnRyb2w6OnVwZGF0ZUZyb21FbGVtZW50KCkKICAgICB9CiB9CiAKLWludCBSZW5k
ZXJGaWxlVXBsb2FkQ29udHJvbDo6bWF4RmlsZW5hbWVXaWR0aCgpIGNvbnN0CitzdGF0aWMgaW50
IG5vZGVXaWR0aChOb2RlKiBub2RlKQogewotICAgIHJldHVybiBtYXgoMCwgY29udGVudFdpZHRo
KCkgLSBtX2J1dHRvbi0+cmVuZGVyQm94KCktPndpZHRoKCkgLSBhZnRlckJ1dHRvblNwYWNpbmcK
LSAgICAgICAgLSAobV9maWxlQ2hvb3Nlci0+aWNvbigpID8gaWNvbldpZHRoICsgaWNvbkZpbGVu
YW1lU3BhY2luZyA6IDApKTsKKyAgICByZXR1cm4gbm9kZSA/IG5vZGUtPnJlbmRlckJveCgpLT53
aWR0aCgpIDogMDsKIH0KIAotUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gUmVuZGVyRmlsZVVwbG9h
ZENvbnRyb2w6OmNyZWF0ZUJ1dHRvblN0eWxlKGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRTdHls
ZSkgY29uc3QKK2ludCBSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6bWF4RmlsZW5hbWVXaWR0aCgp
IGNvbnN0CiB7Ci0gICAgUmVmUHRyPFJlbmRlclN0eWxlPiBzdHlsZSA9IGdldENhY2hlZFBzZXVk
b1N0eWxlKEZJTEVfVVBMT0FEX0JVVFRPTik7Ci0gICAgaWYgKCFzdHlsZSkgewotICAgICAgICBz
dHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGUoKTsKLSAgICAgICAgaWYgKHBhcmVudFN0eWxlKQot
ICAgICAgICAgICAgc3R5bGUtPmluaGVyaXRGcm9tKHBhcmVudFN0eWxlKTsKLSAgICB9Ci0KLSAg
ICAvLyBCdXR0b24gdGV4dCB3aWxsIHdyYXAgb24gZmlsZSB1cGxvYWQgY29udHJvbHMgd2l0aCB3
aWR0aHMgc21hbGxlciB0aGFuIHRoZSBpbnRyaW5zaWMgYnV0dG9uIHdpZHRoCi0gICAgLy8gd2l0
aG91dCB0aGlzIHNldFdoaXRlU3BhY2UuCi0gICAgc3R5bGUtPnNldFdoaXRlU3BhY2UoTk9XUkFQ
KTsKLQotICAgIHJldHVybiBzdHlsZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIG1heCgwLCBjb250
ZW50V2lkdGgoKSAtIG5vZGVXaWR0aCh1cGxvYWRCdXR0b24oKSkgLSBhZnRlckJ1dHRvblNwYWNp
bmcKKyAgICAgICAgLSAobV9maWxlQ2hvb3Nlci0+aWNvbigpID8gaWNvbldpZHRoICsgaWNvbkZp
bGVuYW1lU3BhY2luZyA6IDApKTsKIH0KIAogdm9pZCBSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6
cGFpbnRPYmplY3QoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFBvaW50JiBwYWludE9m
ZnNldCkKQEAgLTI1MSw3ICsxOTMsMTIgQEAgdm9pZCBSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6
cGFpbnRPYmplY3QoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFBvaW50JgogCiAgICAg
ICAgIC8vIERldGVybWluZSB3aGVyZSB0aGUgZmlsZW5hbWUgc2hvdWxkIGJlIHBsYWNlZAogICAg
ICAgICBpbnQgY29udGVudExlZnQgPSBwYWludE9mZnNldC54KCkgKyBib3JkZXJMZWZ0KCkgKyBw
YWRkaW5nTGVmdCgpOwotICAgICAgICBpbnQgYnV0dG9uQW5kSWNvbldpZHRoID0gbV9idXR0b24t
PnJlbmRlckJveCgpLT53aWR0aCgpICsgYWZ0ZXJCdXR0b25TcGFjaW5nCisgICAgICAgIEhUTUxJ
bnB1dEVsZW1lbnQqIGJ1dHRvbiA9IHVwbG9hZEJ1dHRvbigpOworICAgICAgICBpZiAoIWJ1dHRv
bikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpbnQgYnV0dG9uV2lkdGggPSBub2Rl
V2lkdGgoYnV0dG9uKTsKKyAgICAgICAgaW50IGJ1dHRvbkFuZEljb25XaWR0aCA9IGJ1dHRvbldp
ZHRoICsgYWZ0ZXJCdXR0b25TcGFjaW5nCiAgICAgICAgICAgICArIChtX2ZpbGVDaG9vc2VyLT5p
Y29uKCkgPyBpY29uV2lkdGggKyBpY29uRmlsZW5hbWVTcGFjaW5nIDogMCk7CiAgICAgICAgIGlu
dCB0ZXh0WDsKICAgICAgICAgaWYgKHN0eWxlKCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkK
QEAgLTI1OSw3ICsyMDYsNyBAQCB2b2lkIFJlbmRlckZpbGVVcGxvYWRDb250cm9sOjpwYWludE9i
amVjdChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UG9pbnQmCiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIHRleHRYID0gY29udGVudExlZnQgKyBjb250ZW50V2lkdGgoKSAtIGJ1dHRv
bkFuZEljb25XaWR0aCAtIGZvbnQud2lkdGgodGV4dFJ1bik7CiAgICAgICAgIC8vIFdlIHdhbnQg
dG8gbWF0Y2ggdGhlIGJ1dHRvbidzIGJhc2VsaW5lCi0gICAgICAgIFJlbmRlckJ1dHRvbiogYnV0
dG9uUmVuZGVyZXIgPSB0b1JlbmRlckJ1dHRvbihtX2J1dHRvbi0+cmVuZGVyZXIoKSk7CisgICAg
ICAgIFJlbmRlckJ1dHRvbiogYnV0dG9uUmVuZGVyZXIgPSB0b1JlbmRlckJ1dHRvbihidXR0b24t
PnJlbmRlcmVyKCkpOwogICAgICAgICBpbnQgdGV4dFkgPSBidXR0b25SZW5kZXJlci0+YWJzb2x1
dGVCb3VuZGluZ0JveFJlY3QoKS55KCkKICAgICAgICAgICAgICsgYnV0dG9uUmVuZGVyZXItPm1h
cmdpblRvcCgpICsgYnV0dG9uUmVuZGVyZXItPmJvcmRlclRvcCgpICsgYnV0dG9uUmVuZGVyZXIt
PnBhZGRpbmdUb3AoKQogICAgICAgICAgICAgKyBidXR0b25SZW5kZXJlci0+YmFzZWxpbmVQb3Np
dGlvbihBbHBoYWJldGljQmFzZWxpbmUsIHRydWUsIEhvcml6b250YWxMaW5lLCBQb3NpdGlvbk9u
Q29udGFpbmluZ0xpbmUpOwpAQCAtMjc0LDkgKzIyMSw5IEBAIHZvaWQgUmVuZGVyRmlsZVVwbG9h
ZENvbnRyb2w6OnBhaW50T2JqZWN0KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRQb2lu
dCYKICAgICAgICAgICAgIGludCBpY29uWSA9IHBhaW50T2Zmc2V0LnkoKSArIGJvcmRlclRvcCgp
ICsgcGFkZGluZ1RvcCgpICsgKGNvbnRlbnRIZWlnaHQoKSAtIGljb25IZWlnaHQpIC8gMjsKICAg
ICAgICAgICAgIGludCBpY29uWDsKICAgICAgICAgICAgIGlmIChzdHlsZSgpLT5pc0xlZnRUb1Jp
Z2h0RGlyZWN0aW9uKCkpCi0gICAgICAgICAgICAgICAgaWNvblggPSBjb250ZW50TGVmdCArIG1f
YnV0dG9uLT5yZW5kZXJCb3goKS0+d2lkdGgoKSArIGFmdGVyQnV0dG9uU3BhY2luZzsKKyAgICAg
ICAgICAgICAgICBpY29uWCA9IGNvbnRlbnRMZWZ0ICsgYnV0dG9uV2lkdGggKyBhZnRlckJ1dHRv
blNwYWNpbmc7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgaWNvblggPSBjb250
ZW50TGVmdCArIGNvbnRlbnRXaWR0aCgpIC0gbV9idXR0b24tPnJlbmRlckJveCgpLT53aWR0aCgp
IC0gYWZ0ZXJCdXR0b25TcGFjaW5nIC0gaWNvbldpZHRoOworICAgICAgICAgICAgICAgIGljb25Y
ID0gY29udGVudExlZnQgKyBjb250ZW50V2lkdGgoKSAtIGJ1dHRvbldpZHRoIC0gYWZ0ZXJCdXR0
b25TcGFjaW5nIC0gaWNvbldpZHRoOwogCiAgICAgICAgICAgICAvLyBEcmF3IHRoZSBmaWxlIGlj
b24KICAgICAgICAgICAgIG1fZmlsZUNob29zZXItPmljb24oKS0+cGFpbnQocGFpbnRJbmZvLmNv
bnRleHQsIEludFJlY3QoaWNvblgsIGljb25ZLCBpY29uV2lkdGgsIGljb25IZWlnaHQpKTsKQEAg
LTMzMyw2ICsyODAsMTYgQEAgVmlzaWJsZVBvc2l0aW9uIFJlbmRlckZpbGVVcGxvYWRDb250cm9s
Ojpwb3NpdGlvbkZvclBvaW50KGNvbnN0IEludFBvaW50JikKICAgICByZXR1cm4gVmlzaWJsZVBv
c2l0aW9uKCk7CiB9CiAKK0hUTUxJbnB1dEVsZW1lbnQqIFJlbmRlckZpbGVVcGxvYWRDb250cm9s
Ojp1cGxvYWRCdXR0b24oKSBjb25zdAoreworICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0g
c3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KG5vZGUoKSk7CisKKyAgICBBU1NFUlQoaW5w
dXQtPnNoYWRvd1Jvb3QoKSk7CisKKyAgICBOb2RlKiBidXR0b25Ob2RlID0gaW5wdXQtPnNoYWRv
d1Jvb3QoKS0+Zmlyc3RDaGlsZCgpOworICAgIHJldHVybiBidXR0b25Ob2RlICYmIGJ1dHRvbk5v
ZGUtPmlzSFRNTEVsZW1lbnQoKSAmJiBidXR0b25Ob2RlLT5oYXNUYWdOYW1lKGlucHV0VGFnKSA/
IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihidXR0b25Ob2RlKSA6IDA7Cit9CisKIHZv
aWQgUmVuZGVyRmlsZVVwbG9hZENvbnRyb2w6OnJlY2VpdmVEcm9wcGVkRmlsZXMoY29uc3QgVmVj
dG9yPFN0cmluZz4mIHBhdGhzKQogewogI2lmIEVOQUJMRShESVJFQ1RPUllfVVBMT0FEKQpAQCAt
MzUwLDEwICszMDcsMTAgQEAgdm9pZCBSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6cmVjZWl2ZURy
b3BwZWRGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0aHMpCiAKIFN0cmluZyBSZW5kZXJG
aWxlVXBsb2FkQ29udHJvbDo6YnV0dG9uVmFsdWUoKQogewotICAgIGlmICghbV9idXR0b24pCi0g
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICBpZiAoSFRNTElucHV0RWxlbWVudCogYnV0dG9u
ID0gdXBsb2FkQnV0dG9uKCkpCisgICAgICAgIHJldHVybiBidXR0b24tPnZhbHVlKCk7CiAgICAg
Ci0gICAgcmV0dXJuIG1fYnV0dG9uLT52YWx1ZSgpOworICAgIHJldHVybiBTdHJpbmcoKTsKIH0K
IAogU3RyaW5nIFJlbmRlckZpbGVVcGxvYWRDb250cm9sOjpmaWxlVGV4dFZhbHVlKCkgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29u
dHJvbC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9s
LmgKaW5kZXggNThjODNkNzJhNGE1ZjNjOWZjMWM0NjdmOWM2NzA4OWRlY2FkZmU5Ny4uYmM1YWE1
YmI4NzU4YTZkOTA0MmVjMDQ4Y2YxNjgyZWNmNjFmNzlhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmgKQEAgLTU0LDggKzU0LDYg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0
aHMoKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRPYmplY3QoUGFpbnRJbmZvJiwgY29uc3QgSW50
UG9pbnQmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVu
Y2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSk7Ci0KICAgICB2aXJ0dWFsIGJvb2wgcmVx
dWlyZXNGb3JjZWRTdHlsZVJlY2FsY1Byb3BhZ2F0aW9uKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsg
fQogCiAgICAgLy8gRmlsZUNob29zZXJDbGllbnQgbWV0aG9kcy4KQEAgLTc1LDcgKzczLDggQEAg
cHJpdmF0ZToKICAgICAKICAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkZvclBv
aW50KGNvbnN0IEludFBvaW50Jik7CiAKLSAgICBSZWZQdHI8SFRNTElucHV0RWxlbWVudD4gbV9i
dXR0b247CisgICAgSFRNTElucHV0RWxlbWVudCogdXBsb2FkQnV0dG9uKCkgY29uc3Q7CisKICAg
ICBSZWZQdHI8RmlsZUNob29zZXI+IG1fZmlsZUNob29zZXI7CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCmluZGV4
IGU0NWZiZjNkMzI4YjVhM2JjOGY3NWQ0ZmNlZjcxM2IwMWU5ZDZkYjMuLmVjMDk2OGI2MmNlYWYy
MTg1NGU1NGFmY2JmYTRmNGNlMTA2ZmQ4ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCkBAIC03NCwxMyArNzQsMTMg
QEAgZW51bSBQc2V1ZG9JZCB7CiAgICAgLy8gVGhlIG9yZGVyIG11c3QgYmUgTk9QIElELCBwdWJs
aWMgSURzLCBhbmQgdGhlbiBpbnRlcm5hbCBJRHMuCiAgICAgTk9QU0VVRE8sIEZJUlNUX0xJTkUs
IEZJUlNUX0xFVFRFUiwgQkVGT1JFLCBBRlRFUiwgU0VMRUNUSU9OLCBGSVJTVF9MSU5FX0lOSEVS
SVRFRCwgU0NST0xMQkFSLAogICAgIC8vIEludGVybmFsIElEcyBmb2xsb3c6Ci0gICAgRklMRV9V
UExPQURfQlVUVE9OLCBJTlBVVF9QTEFDRUhPTERFUiwKKyAgICBJTlBVVF9QTEFDRUhPTERFUiwK
ICAgICBTQ1JPTExCQVJfVEhVTUIsIFNDUk9MTEJBUl9CVVRUT04sIFNDUk9MTEJBUl9UUkFDSywg
U0NST0xMQkFSX1RSQUNLX1BJRUNFLCBTQ1JPTExCQVJfQ09STkVSLCBSRVNJWkVSLAogICAgIElO
UFVUX0xJU1RfQlVUVE9OLCBWSVNJVEVEX0xJTkssCiAgICAgQUZURVJfTEFTVF9JTlRFUk5BTF9Q
U0VVRE9JRCwKICAgICBGVUxMX1NDUkVFTiwgRlVMTF9TQ1JFRU5fRE9DVU1FTlQsIEZVTExfU0NS
RUVOX0FOQ0VTVE9SLCBBTklNQVRJTkdfRlVMTF9TQ1JFRU5fVFJBTlNJVElPTiwKICAgICBGSVJT
VF9QVUJMSUNfUFNFVURPSUQgPSBGSVJTVF9MSU5FLAotICAgIEZJUlNUX0lOVEVSTkFMX1BTRVVE
T0lEID0gRklMRV9VUExPQURfQlVUVE9OLAorICAgIEZJUlNUX0lOVEVSTkFMX1BTRVVET0lEID0g
SU5QVVRfUExBQ0VIT0xERVIsCiAgICAgUFVCTElDX1BTRVVET0lEX01BU0sgPSAoKDEgPDwgRklS
U1RfSU5URVJOQUxfUFNFVURPSUQpIC0gMSkgJiB+KCgxIDw8IEZJUlNUX1BVQkxJQ19QU0VVRE9J
RCkgLSAxKQogfTsKIAo=
</data>
<flag name="review"
          id="89641"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>