<?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>82143</bug_id>
          
          <creation_ts>2012-03-25 03:53:39 -0700</creation_ts>
          <short_desc>[Chromium] Add WebKit API for WebCore::TextFieldDecorator</short_desc>
          <delta_ts>2012-04-02 21:24:59 -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>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>Other</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>82142</dependson>
    
    <dependson>82572</dependson>
    
    <dependson>82693</dependson>
          <blocked>80479</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kent Tamura">tkent</reporter>
          <assigned_to name="Kent Tamura">tkent</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>morrita</cc>
    
    <cc>shinyak</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>587272</commentid>
    <comment_count>0</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-03-25 03:53:39 -0700</bug_when>
    <thetext>Add Chromium WebKit API for WebCore::TextFieldDecorator</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589673</commentid>
    <comment_count>1</comment_count>
      <attachid>134222</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-03-27 23:07:42 -0700</bug_when>
    <thetext>Created attachment 134222
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589678</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-27 23:10:23 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589687</commentid>
    <comment_count>3</comment_count>
      <attachid>134222</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-03-27 23:55:59 -0700</bug_when>
    <thetext>Comment on attachment 134222
Patch

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

&gt; Source/WebKit/chromium/src/ChromeClientImpl.cpp:1009
&gt; +

Shadow DOM part looks OK.
By the way, it would be great if we have some DRT implementation to demonstrate this.
We could have a DRT specific decorator which activates for input elements which has specific id or class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589689</commentid>
    <comment_count>4</comment_count>
      <attachid>134222</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-27 23:56:17 -0700</bug_when>
    <thetext>Comment on attachment 134222
Patch

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

&gt; Source/WebKit/chromium/src/ChromeClientImpl.cpp:1016
&gt; +    RefPtr&lt;ShadowRoot&gt; newRoot = ShadowRoot::create(input, ShadowRoot::CreatingUserAgentShadowRoot, ASSERT_NO_EXCEPTION);
&gt; +    RefPtr&lt;HTMLDivElement&gt; box = HTMLDivElement::create(input-&gt;document());
&gt; +    newRoot-&gt;appendChild(box);
&gt; +    box-&gt;setInlineStyleProperty(CSSPropertyDisplay, CSSValueWebkitBox);
&gt; +    box-&gt;setInlineStyleProperty(CSSPropertyWebkitBoxAlign, CSSValueCenter);
&gt; +    input-&gt;containerElement()-&gt;setInlineStyleProperty(CSSPropertyWebkitBoxFlex, 1.0, CSSPrimitiveValue::CSS_NUMBER);
&gt; +    box-&gt;appendChild(HTMLShadowElement::create(HTMLNames::shadowTag, input-&gt;document()));

Drive-by comment: Should this work be done by WebCore?  This seems very detail-oriented for the WebKit layer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590014</commentid>
    <comment_count>5</comment_count>
      <attachid>134222</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-03-28 09:07:53 -0700</bug_when>
    <thetext>Comment on attachment 134222
Patch

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

&gt;&gt; Source/WebKit/chromium/src/ChromeClientImpl.cpp:1016
&gt;&gt; +    box-&gt;appendChild(HTMLShadowElement::create(HTMLNames::shadowTag, input-&gt;document()));
&gt; 
&gt; Drive-by comment: Should this work be done by WebCore?  This seems very detail-oriented for the WebKit layer.

You know, Adam might be onto something here. This does look like a general pattern.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590744</commentid>
    <comment_count>6</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-03-28 19:05:27 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 134222 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=134222&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit/chromium/src/ChromeClientImpl.cpp:1016
&gt; &gt;&gt; +    box-&gt;appendChild(HTMLShadowElement::create(HTMLNames::shadowTag, input-&gt;document()));
&gt; &gt; 
&gt; &gt; Drive-by comment: Should this work be done by WebCore?  This seems very detail-oriented for the WebKit layer.
&gt; 
&gt; You know, Adam might be onto something here. This does look like a general pattern.

ok, I&apos;ll add a member function to TextFieldDecorationElement for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590904</commentid>
    <comment_count>7</comment_count>
      <attachid>134516</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-03-29 00:26:55 -0700</bug_when>
    <thetext>Created attachment 134516
Patch 2

Use TextFieldDecorationElement::decorate</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591259</commentid>
    <comment_count>8</comment_count>
      <attachid>134516</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-03-29 09:47:25 -0700</bug_when>
    <thetext>Comment on attachment 134516
Patch 2

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

This looks very exciting. I am sorry to report that I have a few concerns:

&gt; Source/WebKit/chromium/public/WebTextFieldDecoratorClient.h:61
&gt; +    // This is called when the input element looses its renderer.

looses -&gt; loses.

&gt; Source/WebKit/chromium/public/WebTextFieldDecoratorClient.h:62
&gt; +    virtual void willDetach(WebInputElement&amp;) = 0;

I realize I reviewed the change adding this to TextDecorationElement, but now I am not sure this is a good idea. The concept of detaching is intrinsic to WebCore, and it would be extremely easy to create gnarly bugs in this callsite, when written by someone who&apos;s not as familiar with WebCore (for instance, WebKit API consumer). Does this have to be a synchronous call? How can we avoid exposing this hook?

&gt; Source/WebKit/chromium/src/ChromeClientImpl.cpp:998
&gt; +    const Vector&lt;OwnPtr&lt;TextFieldDecorator&gt; &gt;&amp; decorators = m_webView-&gt;textFieldDecorators();
&gt; +    for (unsigned i = 0; i &lt; decorators.size(); ++i) {
&gt; +        if (decorators[i]-&gt;willAddDecorationTo(input))
&gt; +            return true;
&gt; +    }
&gt; +    return false;

This is O(NxM) in the worst case, right? Where N is number of inputs on the page and M is the number of decorators. Seems iffy from perf perspective.

&gt; Source/WebKit/chromium/src/ChromeClientImpl.cpp:1006
&gt; +        if (!decorators[i]-&gt;willAddDecorationTo(input))

And this repeats the check again, even though willAddTextFieldDecorationsTo has just been called earlier in TextFieldInputType::createShadowSubtree.

&gt; Source/WebKit/chromium/src/ChromeClientImpl.cpp:1009
&gt; +        RefPtr&lt;TextFieldDecorationElement&gt; decoration = TextFieldDecorationElement::create(input-&gt;document(), decorators[i].get());
&gt; +        decoration-&gt;decorate(input);

This is neat :)

However, I just realized that the TextFieldDecorationElement::decorate creates a shadow DOM subtree that is never destroyed. This means that changing the type of the input will leave the icon in place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591870</commentid>
    <comment_count>9</comment_count>
      <attachid>134516</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-03-29 21:50:07 -0700</bug_when>
    <thetext>Comment on attachment 134516
Patch 2

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

&gt;&gt; Source/WebKit/chromium/public/WebTextFieldDecoratorClient.h:62
&gt;&gt; +    virtual void willDetach(WebInputElement&amp;) = 0;
&gt; 
&gt; I realize I reviewed the change adding this to TextDecorationElement, but now I am not sure this is a good idea. The concept of detaching is intrinsic to WebCore, and it would be extremely easy to create gnarly bugs in this callsite, when written by someone who&apos;s not as familiar with WebCore (for instance, WebKit API consumer). Does this have to be a synchronous call? How can we avoid exposing this hook?

It&apos;s ok to make this asynchronous.  Changing &quot;WebInputElement&amp;&quot; to &quot;const WebInputElement&amp;&quot; solves issues?

&gt;&gt; Source/WebKit/chromium/src/ChromeClientImpl.cpp:998
&gt;&gt; +    return false;
&gt; 
&gt; This is O(NxM) in the worst case, right? Where N is number of inputs on the page and M is the number of decorators. Seems iffy from perf perspective.

Right.
I&apos;m not worry about this because a browser doesn&apos;t add a lot of decorators and web page authors can&apos;t add decorations.
However, we had better add a comment to willAddDecorationTo() like &quot;This function should not take much time ...&quot;

&gt;&gt; Source/WebKit/chromium/src/ChromeClientImpl.cpp:1006
&gt;&gt; +        if (!decorators[i]-&gt;willAddDecorationTo(input))
&gt; 
&gt; And this repeats the check again, even though willAddTextFieldDecorationsTo has just been called earlier in TextFieldInputType::createShadowSubtree.

I think calling it twice is unavoidable.
We need to check if any decorations will be added before constructing the main shadow tree.

&gt;&gt; Source/WebKit/chromium/src/ChromeClientImpl.cpp:1009
&gt;&gt; +        decoration-&gt;decorate(input);
&gt; 
&gt; This is neat :)
&gt; 
&gt; However, I just realized that the TextFieldDecorationElement::decorate creates a shadow DOM subtree that is never destroyed. This means that changing the type of the input will leave the icon in place.

Ah, right.  I&apos;ll discuss this with Morita-san and Kawanaka-san.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>593177</commentid>
    <comment_count>10</comment_count>
      <attachid>135025</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-04-01 22:26:26 -0700</bug_when>
    <thetext>Created attachment 135025
Patch 3

Fix a comment, and make an argument const</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>593533</commentid>
    <comment_count>11</comment_count>
      <attachid>135025</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-04-02 09:34:20 -0700</bug_when>
    <thetext>Comment on attachment 135025
Patch 3

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

&gt; Source/WebKit/chromium/src/WebViewImpl.h:595
&gt; +    Vector&lt;OwnPtr&lt;WebCore::TextFieldDecorator&gt; &gt; m_textFieldDecorators;

I wonder if we could put some sort of an assertion for going over a certain number of decorators. Here&apos;s my concern: over time, the consumers of this API may find it useful and start adding more decorators -- and unexpectedly see performance degradation due to NxM complexity of the plumbing. Perhaps if we somehow alerted future us that things are going awry, we would be less surprised about its effects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594169</commentid>
    <comment_count>12</comment_count>
      <attachid>135267</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-04-02 20:35:10 -0700</bug_when>
    <thetext>Created attachment 135267
Patch for landing

Add a limit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594170</commentid>
    <comment_count>13</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-04-02 20:36:24 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; I wonder if we could put some sort of an assertion for going over a certain number of decorators. Here&apos;s my concern: over time, the consumers of this API may find it useful and start adding more decorators -- and unexpectedly see performance degradation due to NxM complexity of the plumbing. Perhaps if we somehow alerted future us that things are going awry, we would be less surprised about its effects.

Ok, I have added a limitation of the number of decorators in WebViewImpl::addTextDecoratorClient().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594180</commentid>
    <comment_count>14</comment_count>
      <attachid>135267</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-02 21:24:54 -0700</bug_when>
    <thetext>Comment on attachment 135267
Patch for landing

Clearing flags on attachment: 135267

Committed r112984: &lt;http://trac.webkit.org/changeset/112984&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594181</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-02 21:24:59 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134222</attachid>
            <date>2012-03-27 23:07:42 -0700</date>
            <delta_ts>2012-03-28 19:05:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82143-20120328150740.patch</filename>
            <type>text/plain</type>
            <size>23715</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyMzQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmE5ZWQyYTczYTY4Y2Ux
YzQ4NDQ1N2E3YmQ1ZDQzOWM1MWQ2MWZiMC4uMjVkZjYzOTQxM2RkNTFmNDllMmE3OTEyOTc3NWI5
M2ZjNjk2MzlhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTAzLTI3ICBLZW50
IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGQgQ2hyb21pdW0gV2Vi
S2l0IEFQSSBmb3IgV2ViQ29yZTo6VGV4dEZpZWxkRGVjb3JhdG9yCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjE0MworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSB1bm5lY2Vzc2FyeSBhc3NlcnRp
b24uIFdlIHNob3VsZCBhbGxvdyBtdWx0aXBsZSBVQSBzaGFkb3cgcm9vdHMuCisKKyAgICAgICAg
KiBkb20vU2hhZG93Um9vdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290OjpjcmVh
dGUpOgorCiAyMDEyLTAzLTI3ICBLYXVzYWx5YSBNYWRodXN1ZGhhbmFuICA8a21hZGh1c3VAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFtDb3Zlcml0eV0gQWRkcmVzcyBzb21lIHVuaW5pdGlhbGl6
ZWQgY29uc3RydWN0b3IgdmFsdWVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA4NTlk
NzQ3ZjQxYWMxYzA1N2I3MTllZTcwM2Y3MzgwMDMxN2JhOGNlLi44MGE0NjA5OGRiNzk1Njg0OGVj
NTM4NGU4MzA5OTA4NGMzNGI1NjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDQ5IEBACisyMDEyLTAzLTI3ICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4K
KworICAgICAgICBBZGQgQ2hyb21pdW0gV2ViS2l0IEFQSSBmb3IgV2ViQ29yZTo6VGV4dEZpZWxk
RGVjb3JhdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD04MjE0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEV4cG9zZSBXZWJDb3JlOjpUZXh0RmllbGREZWNvcmF0b3IgYXMKKyAgICAgICAgV2ViS2l0OjpX
ZWJUZXh0RmllbGREZWNvcmF0b3JDbGllbnQuIFRoaXMgY2hhbmdlIGFkZCBjYXBhYmlsaXR5IHRv
IGFkZAorICAgICAgICBkZWNvcmF0aW9uIGJ1dHRvbnMgdG8gdGV4dCBmaWVsZCA8aW5wdXQ+IGVs
ZW1lbnRzLgorCisgICAgICAgICogV2ViS2l0Lmd5cDogQWRkIG5ldyBmaWxlcy4KKyAgICAgICAg
KiBwdWJsaWMvV2ViVGV4dEZpZWxkRGVjb3JhdG9yQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAq
IHB1YmxpYy9XZWJWaWV3Lmg6CisgICAgICAgIChXZWJLaXQpOiBBZGQgYWRkVGV4dEZpZWxkRGVj
b3JhdG9yQ2xpZW50KCkuCisgICAgICAgICogc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnRJbXBsOjp3aWxsQWRkVGV4dEZpZWxkRGVjb3JhdGlv
bnNUbyk6CisgICAgICAgIENhbGxzIHdpbGxBZGREZWNvcmF0aW9uVG8oKSBvZiBUZXh0RmllbGRE
ZWNvcmF0b3Igb2JqZWN0cyBvd25lZCBieSBXZWJWaWV3SW1wbC4KKyAgICAgICAgKFdlYktpdDo6
Q2hyb21lQ2xpZW50SW1wbDo6YWRkVGV4dEZpZWxkRGVjb3JhdGlvbnNUbyk6CisgICAgICAgIENy
ZWF0ZXMgYSBzaGFkb3cgcm9vdCB3cmFwcGluZyB0aGUgZXhpc3Rpbmcgc2hhZG93IHJvb3QsIGFu
ZCBhcHBlbmRzCisgICAgICAgIFRleHRGaWVsZERlY29yYXRpb25FbGVtZW50IG9iamVjdHMgZm9y
IFRleHRGaWVsZERlY29yYXRvcnMgb2JqZWN0cy4KKyAgICAgICAgKiBzcmMvQ2hyb21lQ2xpZW50
SW1wbC5oOgorICAgICAgICAoQ2hyb21lQ2xpZW50SW1wbCk6IEFkZCBuZXcgZnVuY3Rpb24gZGVj
bGFyYXRpb25zLgorICAgICAgICAqIHNyYy9UZXh0RmllbGREZWNvcmF0b3JJbXBsLmNwcDoKKyAg
ICAgICAgQWRkZWQuIFRoaXMgaXMgYSBicmlkZ2Ugb2YgV2ViQ29yZTo6VGV4dEZpZWxkRGVjb3Jh
dG9yIGFuZAorICAgICAgICBXZWJLaXQ6OldlYlRleHRGaWVsZERlY29yYXRvckNsaWVudC4gVGhp
cyBvd25zIENhY2hlZEltYWdlIG9iamVjdHMKKyAgICAgICAgc3BlY2ZpZWQgYnkgV2ViVGV4dEZp
ZWxkRGVjb3JhdG9yQ2xpZW50LgorICAgICAgICAoV2ViS2l0OjpUZXh0RmllbGREZWNvcmF0b3JJ
bXBsOjpUZXh0RmllbGREZWNvcmF0b3JJbXBsKToKKyAgICAgICAgKFdlYktpdDo6VGV4dEZpZWxk
RGVjb3JhdG9ySW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6VGV4dEZpZWxkRGVjb3Jh
dG9ySW1wbDo6flRleHRGaWVsZERlY29yYXRvckltcGwpOgorICAgICAgICAoV2ViS2l0OjpUZXh0
RmllbGREZWNvcmF0b3JJbXBsOjp3aWxsQWRkRGVjb3JhdGlvblRvKToKKyAgICAgICAgKFdlYktp
dDo6VGV4dEZpZWxkRGVjb3JhdG9ySW1wbDo6aW1hZ2VGb3JOb3JtYWxTdGF0ZSk6CisgICAgICAg
IChXZWJLaXQ6OlRleHRGaWVsZERlY29yYXRvckltcGw6OmltYWdlRm9yRGlzYWJsZWRTdGF0ZSk6
CisgICAgICAgIChXZWJLaXQ6OlRleHRGaWVsZERlY29yYXRvckltcGw6OmltYWdlRm9yUmVhZG9u
bHlTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlRleHRGaWVsZERlY29yYXRvckltcGw6OmhhbmRs
ZUNsaWNrKToKKyAgICAgICAgKFdlYktpdDo6VGV4dEZpZWxkRGVjb3JhdG9ySW1wbDo6d2lsbERl
dGFjaCk6CisgICAgICAgICogc3JjL1RleHRGaWVsZERlY29yYXRvckltcGwuaDogQWRkZWQuCisg
ICAgICAgIChUZXh0RmllbGREZWNvcmF0b3JJbXBsKToKKyAgICAgICAgKiBzcmMvV2ViVmlld0lt
cGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6YWRkVGV4dEZpZWxkRGVjb3Jh
dG9yQ2xpZW50KToKKyAgICAgICAgQWRkIGltcGxlbWVudGF0aW9uIG9mIFdlYlZpZXc6OmFkZFRl
eHRGaWVsZERlY29yYXRvckNsaWVudCgpLgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgor
ICAgICAgICBXZWJWaWV3SW1wbCBvd25zIGEgdmVjdG9yIG9mIFRleHRGaWVsZERlY29yYXRvcklt
cGwuCisgICAgICAgIChXZWJWaWV3SW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBs
Ojp0ZXh0RmllbGREZWNvcmF0b3JzKToKKwogMjAxMi0wMy0yNyAgS2F1c2FseWEgTWFkaHVzdWRo
YW5hbiAgPGttYWRodXN1QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ292ZXJpdHldIEFkZHJl
c3Mgc29tZSB1bmluaXRpYWxpemVkIGNvbnN0cnVjdG9yIHZhbHVlcy4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFk
b3dSb290LmNwcAppbmRleCA5N2NlYzk1MjI2YTg4MDFlNjczYWMyMjUzM2I4ZTE1YTQ0ODUxNGJj
Li5kYTIxNWVkY2MzZTEwNzFjNzAyZDk3ZDA1N2Q0YzI1MjlmMjlhZDRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NoYWRvd1Jvb3QuY3BwCkBAIC0xMTMsNyArMTEzLDYgQEAgUGFzc1JlZlB0cjxTaGFkb3dSb290
PiBTaGFkb3dSb290OjpjcmVhdGUoRWxlbWVudCogZWxlbWVudCwgU2hhZG93Um9vdENyZWF0aW9u
UHUKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgQVNTRVJUKHB1cnBvc2UgIT0gQ3Jl
YXRpbmdVc2VyQWdlbnRTaGFkb3dSb290IHx8ICFlbGVtZW50LT5oYXNTaGFkb3dSb290KCkpOwog
ICAgIFJlZlB0cjxTaGFkb3dSb290PiBzaGFkb3dSb290ID0gYWRvcHRSZWYobmV3IFNoYWRvd1Jv
b3QoZWxlbWVudC0+ZG9jdW1lbnQoKSkpOwogCiAgICAgZWMgPSAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9X
ZWJLaXQuZ3lwCmluZGV4IGI0ZGIzZTRhYjUyMzg2NzRmMGZjYjFkN2M1OWVkZmNhYWM3ODRhMDYu
LjZmMzg1ZjZkZjAwNzFhY2NjODE1NjRjNGRmYWNlZDRiZWM3N2IxYTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL1dlYktpdC5neXAKQEAgLTI2OSw2ICsyNjksNyBAQAogICAgICAgICAgICAgICAgICdwdWJs
aWMvV2ViVGV4dENoZWNraW5nQ29tcGxldGlvbi5oJywKICAgICAgICAgICAgICAgICAncHVibGlj
L1dlYlRleHRDaGVja2luZ1Jlc3VsdC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlRl
eHREaXJlY3Rpb24uaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJUZXh0RmllbGREZWNv
cmF0b3JDbGllbnQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJUZXh0SW5wdXRUeXBl
LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVGV4dFJ1bi5oJywKICAgICAgICAgICAg
ICAgICAncHVibGljL1dlYlVSTExvYWRlck9wdGlvbnMuaCcsCkBAIC00ODEsNiArNDgyLDggQEAK
ICAgICAgICAgICAgICAgICAnc3JjL1N0b3JhZ2VJbmZvQ2hyb21pdW0uY3BwJywKICAgICAgICAg
ICAgICAgICAnc3JjL1N0b3JhZ2VOYW1lc3BhY2VQcm94eS5jcHAnLAogICAgICAgICAgICAgICAg
ICdzcmMvU3RvcmFnZU5hbWVzcGFjZVByb3h5LmgnLAorICAgICAgICAgICAgICAgICdzcmMvVGV4
dEZpZWxkRGVjb3JhdG9ySW1wbC5oJywKKyAgICAgICAgICAgICAgICAnc3JjL1RleHRGaWVsZERl
Y29yYXRvckltcGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1VzZXJNZWRpYUNsaWVudElt
cGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9Vc2VyTWVkaWFDbGllbnRJbXBsLmNwcCcsCiAg
ICAgICAgICAgICAgICAgJ3NyYy9XZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9uSW1wbC5oJywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRleHRGaWVsZERlY29y
YXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVGV4dEZpZWxk
RGVjb3JhdG9yQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGMzNDdkOTI4NjUzNDYyMzlmNTBjZmVjMDFl
ZWYwMDRmNjA5ZjllYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYlRleHRGaWVsZERlY29yYXRvckNsaWVudC5oCkBAIC0wLDAgKzEsNjkgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICog
ZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFdlYlRleHRGaWVsZERlY29yYXRvckNsaWVudF9oCisjZGVmaW5lIFdlYlRleHRGaWVsZERl
Y29yYXRvckNsaWVudF9oCisKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDU3RyaW5nLmgiCisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJJbnB1dEVsZW1lbnQ7CisKK2NsYXNzIFdlYlRl
eHRGaWVsZERlY29yYXRvckNsaWVudCB7CitwdWJsaWM6CisgICAgLy8gVGhlIGZ1bmN0aW9uIHNo
b3VsZCByZXR1cm4gdHJ1ZSBpZiB0aGUgc3BlY2lmaWVkIGlucHV0IGVsZW1lbnQgc2hvdWxkCisg
ICAgLy8gaGF2ZSBhIGRlY29yYXRpb24gaWNvbi4gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hl
bmV2ZXIgYSB0ZXh0IGZpZWxkIGlzCisgICAgLy8gY3JlYXRlZC4KKyAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkQWRkRGVjb3JhdGlvblRvKGNvbnN0IFdlYklucHV0RWxlbWVudCYpID0gMDsKKworICAg
IC8vIEltYWdlIHJlc291cmNlIG5hbWUgZm9yIHRoZSBub3JtYWwgc3RhdGUuIFRoZSBpbWFnZSBp
cyBzdHJldGNoZWQgdG8KKyAgICAvLyBmb250LXNpemUgeCBmb250LXNpemUgc3F1YXJlLiBUaGUg
ZnVuY3Rpb24gbXVzdCByZXR1cm4gYW4gZXhpc3RpbmcKKyAgICAvLyByZXNvdXJjZSBuYW1lLgor
ICAgIHZpcnR1YWwgV2ViQ1N0cmluZyBpbWFnZU5hbWVGb3JOb3JtYWxTdGF0ZSgpID0gMDsKKyAg
ICAvLyBJbWFnZSByZXNvdXJjZSBuYW1lIGZvciB0aGUgZGlzYWJsZWQgc3RhdGUuIElmIHRoaXMg
ZnVuY3Rpb24gcmV0dXJucyBhbgorICAgIC8vIGVtcHR5IHN0cmluZywgaW1hZ2VOYW1lRm9yTm9y
bWFsU3RhdGUoKSBpcyB1c2VkIGV2ZW4gZm9yIHRoZSBkaXNhYmxlZAorICAgIC8vIHN0YXRlLgor
ICAgIHZpcnR1YWwgV2ViQ1N0cmluZyBpbWFnZU5hbWVGb3JEaXNhYmxlZFN0YXRlKCkgPSAwOwor
ICAgIC8vIEltYWdlIHJlc291cmNlIG5hbWUgZm9yIHRoZSBkaXNhYmxlZCBzdGF0ZS4gSWYgdGhp
cyBmdW5jdGlvbiByZXR1cm5zIGFuCisgICAgLy8gZW1wdHkgc3RyaW5nLCB0aGUgaW1hZ2Ugc2Ft
ZSBhcyBpbWFnZU5hbWVGb3JEaXNhYmxlZFN0YXRlKCkgaXMgdXNlZC4KKyAgICB2aXJ0dWFsIFdl
YkNTdHJpbmcgaW1hZ2VOYW1lRm9yUmVhZE9ubHlTdGF0ZSgpID0gMDsKKworICAgIC8vIFRoaXMg
aXMgY2FsbGVkIHdoZW4gdGhlIGRlY29yYXRpb24gaWNvbiBpcyBjbGlja2VkLgorICAgIHZpcnR1
YWwgdm9pZCBoYW5kbGVDbGljayhXZWJJbnB1dEVsZW1lbnQmKSA9IDA7CisgICAgLy8gVGhpcyBp
cyBjYWxsZWQgd2hlbiB0aGUgaW5wdXQgZWxlbWVudCBsb29zZXMgaXRzIHJlbmRlcmVyLgorICAg
IHZpcnR1YWwgdm9pZCB3aWxsRGV0YWNoKFdlYklucHV0RWxlbWVudCYpID0gMDsKKworICAgIHZp
cnR1YWwgfldlYlRleHRGaWVsZERlY29yYXRvckNsaWVudCgpIHsgfQorfTsKKworfQorCisjZW5k
aWYgLy8gV2ViVGV4dEZpZWxkRGVjb3JhdG9yQ2xpZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYlZpZXcuaAppbmRleCAzYzhhZTQ0ODRkYTI1M2E4MzQ1ZDFkNmY1MmIxMjFjOTQ2
NTRmMTMzLi40ZjQ1Y2ZmY2I1OGU2Yzc3MWI2ZDQ1MjJmZTYyMTljMTY0ZmY0M2ZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlldy5oCkBAIC01Myw2ICs1Myw3IEBAIGNsYXNz
IFdlYlBlcm1pc3Npb25DbGllbnQ7CiBjbGFzcyBXZWJTZXR0aW5nczsKIGNsYXNzIFdlYlNwZWxs
Q2hlY2tDbGllbnQ7CiBjbGFzcyBXZWJTdHJpbmc7CitjbGFzcyBXZWJUZXh0RmllbGREZWNvcmF0
b3JDbGllbnQ7CiBjbGFzcyBXZWJWaWV3Q2xpZW50Owogc3RydWN0IFdlYk1lZGlhUGxheWVyQWN0
aW9uOwogc3RydWN0IFdlYlBsdWdpbkFjdGlvbjsKQEAgLTEwMyw2ICsxMDQsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHNldERldlRvb2xzQWdlbnRDbGllbnQoV2ViRGV2VG9vbHNBZ2Vu
dENsaWVudCopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0UGVybWlzc2lvbkNsaWVudChXZWJQ
ZXJtaXNzaW9uQ2xpZW50KikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRTcGVsbENoZWNrQ2xp
ZW50KFdlYlNwZWxsQ2hlY2tDbGllbnQqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFkZFRleHRG
aWVsZERlY29yYXRvckNsaWVudChXZWJUZXh0RmllbGREZWNvcmF0b3JDbGllbnQqKSA9IDA7CiAK
IAogICAgIC8vIE9wdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9D
aHJvbWVDbGllbnRJbXBsLmNwcAppbmRleCA0YTU4MjA4NzJmMTQzNTlhNTBjYWEyZTQ2Yzk4NzNi
MGJkN2QyMmRiLi5kNjdkMDk3ZjEwNTMwODVjYTM5YjQxNDcwMzU4MTA1MzcwY2MwYWFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcApAQCAt
MzQsNiArMzQsOCBAQAogCiAjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgogI2luY2x1ZGUgIkFj
Y2Vzc2liaWxpdHlPYmplY3QuaCIKKyNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCisjaW5j
bHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgogI2lmIEVOQUJMRShJTlBVVF9DT0xPUikKICNpbmNs
dWRlICJDb2xvckNob29zZXIuaCIKICNpbmNsdWRlICJDb2xvckNob29zZXJDbGllbnQuaCIKQEAg
LTUyLDcgKzU0LDkgQEAKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJHZW9sb2Nh
dGlvbi5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKKyNpbmNsdWRlICJIVE1MSW5wdXRF
bGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiSFRNTFNoYWRvd0Vs
ZW1lbnQuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiSWNvbi5oIgog
I2luY2x1ZGUgIkludFJlY3QuaCIKQEAgLTY4LDYgKzcyLDkgQEAKICNpbmNsdWRlICJTZWFyY2hQ
b3B1cE1lbnVDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVk
ZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJTaGFkb3dSb290LmgiCisjaW5jbHVkZSAiVGV4dEZp
ZWxkRGVjb3JhdGlvbkVsZW1lbnQuaCIKKyNpbmNsdWRlICJUZXh0RmllbGREZWNvcmF0b3JJbXBs
LmgiCiAjaWYgVVNFKFY4KQogI2luY2x1ZGUgIlY4UHJveHkuaCIKICNlbmRpZgpAQCAtOTg1LDYg
Kzk5MiwzOSBAQCBQYXNzUmVmUHRyPFNlYXJjaFBvcHVwTWVudT4gQ2hyb21lQ2xpZW50SW1wbDo6
Y3JlYXRlU2VhcmNoUG9wdXBNZW51KFBvcHVwTWVudUNsaQogICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgU2VhcmNoUG9wdXBNZW51Q2hyb21pdW0oY2xpZW50KSk7CiB9CiAKK2Jvb2wgQ2hyb21lQ2xp
ZW50SW1wbDo6d2lsbEFkZFRleHRGaWVsZERlY29yYXRpb25zVG8oSFRNTElucHV0RWxlbWVudCog
aW5wdXQpCit7CisgICAgQVNTRVJUKGlucHV0KTsKKyAgICBjb25zdCBWZWN0b3I8T3duUHRyPFRl
eHRGaWVsZERlY29yYXRvcj4gPiYgZGVjb3JhdG9ycyA9IG1fd2ViVmlldy0+dGV4dEZpZWxkRGVj
b3JhdG9ycygpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkZWNvcmF0b3JzLnNpemUo
KTsgKytpKSB7CisgICAgICAgIGlmIChkZWNvcmF0b3JzW2ldLT53aWxsQWRkRGVjb3JhdGlvblRv
KGlucHV0KSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK3ZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6YWRkVGV4dEZpZWxkRGVjb3JhdGlvbnNU
byhIVE1MSW5wdXRFbGVtZW50KiBpbnB1dCkKK3sKKyAgICBBU1NFUlQod2lsbEFkZFRleHRGaWVs
ZERlY29yYXRpb25zVG8oaW5wdXQpKTsKKworICAgIFJlZlB0cjxTaGFkb3dSb290PiBuZXdSb290
ID0gU2hhZG93Um9vdDo6Y3JlYXRlKGlucHV0LCBTaGFkb3dSb290OjpDcmVhdGluZ1VzZXJBZ2Vu
dFNoYWRvd1Jvb3QsIEFTU0VSVF9OT19FWENFUFRJT04pOworICAgIFJlZlB0cjxIVE1MRGl2RWxl
bWVudD4gYm94ID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShpbnB1dC0+ZG9jdW1lbnQoKSk7Cisg
ICAgbmV3Um9vdC0+YXBwZW5kQ2hpbGQoYm94KTsKKyAgICBib3gtPnNldElubGluZVN0eWxlUHJv
cGVydHkoQ1NTUHJvcGVydHlEaXNwbGF5LCBDU1NWYWx1ZVdlYmtpdEJveCk7CisgICAgYm94LT5z
ZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0Qm94QWxpZ24sIENTU1ZhbHVl
Q2VudGVyKTsKKyAgICBpbnB1dC0+Y29udGFpbmVyRWxlbWVudCgpLT5zZXRJbmxpbmVTdHlsZVBy
b3BlcnR5KENTU1Byb3BlcnR5V2Via2l0Qm94RmxleCwgMS4wLCBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX05VTUJFUik7CisgICAgYm94LT5hcHBlbmRDaGlsZChIVE1MU2hhZG93RWxlbWVudDo6Y3Jl
YXRlKEhUTUxOYW1lczo6c2hhZG93VGFnLCBpbnB1dC0+ZG9jdW1lbnQoKSkpOworCisgICAgY29u
c3QgVmVjdG9yPE93blB0cjxUZXh0RmllbGREZWNvcmF0b3I+ID4mIGRlY29yYXRvcnMgPSBtX3dl
YlZpZXctPnRleHRGaWVsZERlY29yYXRvcnMoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgZGVjb3JhdG9ycy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAoIWRlY29yYXRvcnNbaV0t
PndpbGxBZGREZWNvcmF0aW9uVG8oaW5wdXQpKQorICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgIFJlZlB0cjxUZXh0RmllbGREZWNvcmF0aW9uRWxlbWVudD4gZGVjb3JhdGlvbiA9IFRleHRG
aWVsZERlY29yYXRpb25FbGVtZW50OjpjcmVhdGUoaW5wdXQtPmRvY3VtZW50KCksIGRlY29yYXRv
cnNbaV0uZ2V0KCkpOworICAgICAgICBkZWNvcmF0aW9uLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5
KENTU1Byb3BlcnR5V2Via2l0Qm94RmxleCwgMC4wLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05V
TUJFUik7CisgICAgICAgIGJveC0+YXBwZW5kQ2hpbGQoZGVjb3JhdGlvbi5yZWxlYXNlKCkpOwor
ICAgIH0KK30KKwogYm9vbCBDaHJvbWVDbGllbnRJbXBsOjpzaG91bGRSdW5Nb2RhbERpYWxvZ0R1
cmluZ1BhZ2VEaXNtaXNzYWwoY29uc3QgRGlhbG9nVHlwZSYgZGlhbG9nVHlwZSwgY29uc3QgU3Ry
aW5nJiBkaWFsb2dNZXNzYWdlLCBGcmFtZUxvYWRlcjo6UGFnZURpc21pc3NhbFR5cGUgZGlzbWlz
c2FsVHlwZSkgY29uc3QKIHsKICAgICBjb25zdCBjaGFyKiBrRGlhbG9nc1tdID0geyJhbGVydCIs
ICJjb25maXJtIiwgInByb21wdCIsICJzaG93TW9kYWxEaWFsb2cifTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuaAppbmRleCAzNGEwYjVhZGY4NzhmMDc5
NmY2ODZjMzlhZTg2YjY4MzA4MGQwZjcxLi4xYzY3MDMzNjIzZWY3MTI3YmI2ZmY4MmNmYTNiYmQ0
ZDc5NTc4YzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVD
bGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50
SW1wbC5oCkBAIC0xOTUsNiArMTk1LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBoYXNP
cGVuZWRQb3B1cCgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJD
b3JlOjpQb3B1cE1lbnU+IGNyZWF0ZVBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQq
KSBjb25zdDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51
PiBjcmVhdGVTZWFyY2hQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KikgY29uc3Q7
CisgICAgdmlydHVhbCBib29sIHdpbGxBZGRUZXh0RmllbGREZWNvcmF0aW9uc1RvKFdlYkNvcmU6
OkhUTUxJbnB1dEVsZW1lbnQqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkVGV4dEZp
ZWxkRGVjb3JhdGlvbnNUbyhXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50KikgT1ZFUlJJREU7CiAK
ICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUnVuTW9kYWxEaWFsb2dEdXJpbmdQYWdlRGlzbWlzc2Fs
KGNvbnN0IERpYWxvZ1R5cGUmLCBjb25zdCBTdHJpbmcmIGRpYWxvZ01lc3NhZ2UsIFdlYkNvcmU6
OkZyYW1lTG9hZGVyOjpQYWdlRGlzbWlzc2FsVHlwZSkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1RleHRGaWVsZERlY29yYXRvckltcGwuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvVGV4dEZpZWxkRGVjb3JhdG9ySW1wbC5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZmVmNjZhMjEzNTI2ODVmOWI0Mzk0ODhmYmM2MDBiZmQ3Njc2Mjk3ZAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1RleHRGaWVsZERlY29yYXRvcklt
cGwuY3BwCkBAIC0wLDAgKzEsMTE4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRl
eHRGaWVsZERlY29yYXRvckltcGwuaCIKKworI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCisjaW5j
bHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgorI2luY2x1ZGUgIldlYklucHV0RWxlbWVudC5oIgor
I2luY2x1ZGUgIldlYlRleHRGaWVsZERlY29yYXRvckNsaWVudC5oIgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK2lubGluZSBUZXh0RmllbGREZWNv
cmF0b3JJbXBsOjpUZXh0RmllbGREZWNvcmF0b3JJbXBsKFdlYlRleHRGaWVsZERlY29yYXRvckNs
aWVudCogY2xpZW50KQorICAgIDogbV9jbGllbnQoY2xpZW50KQoreworICAgIEFTU0VSVChjbGll
bnQpOworfQorCitQYXNzT3duUHRyPFRleHRGaWVsZERlY29yYXRvckltcGw+IFRleHRGaWVsZERl
Y29yYXRvckltcGw6OmNyZWF0ZShXZWJUZXh0RmllbGREZWNvcmF0b3JDbGllbnQqIGNsaWVudCkK
K3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IFRleHRGaWVsZERlY29yYXRvckltcGwoY2xpZW50
KSk7Cit9CisKK1RleHRGaWVsZERlY29yYXRvckltcGw6On5UZXh0RmllbGREZWNvcmF0b3JJbXBs
KCkKK3sKK30KKworYm9vbCBUZXh0RmllbGREZWNvcmF0b3JJbXBsOjp3aWxsQWRkRGVjb3JhdGlv
blRvKEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0KQoreworICAgIEFTU0VSVChpbnB1dCk7CisgICAg
cmV0dXJuIG1fY2xpZW50LT5zaG91bGRBZGREZWNvcmF0aW9uVG8oV2ViSW5wdXRFbGVtZW50KGlu
cHV0KSk7Cit9CisKK0NhY2hlZEltYWdlKiBUZXh0RmllbGREZWNvcmF0b3JJbXBsOjppbWFnZUZv
ck5vcm1hbFN0YXRlKCkKK3sKKyAgICBpZiAoIW1fY2FjaGVkSW1hZ2VGb3JOb3JtYWxTdGF0ZSkg
eworICAgICAgICBXZWJDU3RyaW5nIGltYWdlTmFtZSA9IG1fY2xpZW50LT5pbWFnZU5hbWVGb3JO
b3JtYWxTdGF0ZSgpOworICAgICAgICBBU1NFUlQoIWltYWdlTmFtZS5pc0VtcHR5KCkpOworICAg
ICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKGlt
YWdlTmFtZS5kYXRhKCkpOworICAgICAgICBtX2NhY2hlZEltYWdlRm9yTm9ybWFsU3RhdGUgPSBu
ZXcgQ2FjaGVkSW1hZ2UoaW1hZ2UuZ2V0KCkpOworICAgICAgICAvLyBUaGUgQ2FjaGVkSW1hZ2Ug
b3ducyBhIFJlZlB0ciB0byB0aGUgSW1hZ2UuCisgICAgfQorICAgIHJldHVybiBtX2NhY2hlZElt
YWdlRm9yTm9ybWFsU3RhdGUuZ2V0KCk7Cit9CisKK0NhY2hlZEltYWdlKiBUZXh0RmllbGREZWNv
cmF0b3JJbXBsOjppbWFnZUZvckRpc2FibGVkU3RhdGUoKQoreworICAgIGlmICghbV9jYWNoZWRJ
bWFnZUZvckRpc2FibGVkU3RhdGUpIHsKKyAgICAgICAgV2ViQ1N0cmluZyBpbWFnZU5hbWUgPSBt
X2NsaWVudC0+aW1hZ2VOYW1lRm9yRGlzYWJsZWRTdGF0ZSgpOworICAgICAgICBpZiAoaW1hZ2VO
YW1lLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIG1fY2FjaGVkSW1hZ2VGb3JEaXNhYmxlZFN0YXRl
ID0gaW1hZ2VGb3JOb3JtYWxTdGF0ZSgpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFJl
ZlB0cjxJbWFnZT4gaW1hZ2UgPSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoaW1hZ2VOYW1l
LmRhdGEoKSk7CisgICAgICAgICAgICBtX2NhY2hlZEltYWdlRm9yRGlzYWJsZWRTdGF0ZSA9IG5l
dyBDYWNoZWRJbWFnZShpbWFnZS5nZXQoKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJu
IG1fY2FjaGVkSW1hZ2VGb3JEaXNhYmxlZFN0YXRlLmdldCgpOworfQorCitDYWNoZWRJbWFnZSog
VGV4dEZpZWxkRGVjb3JhdG9ySW1wbDo6aW1hZ2VGb3JSZWFkb25seVN0YXRlKCkKK3sKKyAgICBp
ZiAoIW1fY2FjaGVkSW1hZ2VGb3JSZWFkb25seVN0YXRlKSB7CisgICAgICAgIFdlYkNTdHJpbmcg
aW1hZ2VOYW1lID0gbV9jbGllbnQtPmltYWdlTmFtZUZvclJlYWRPbmx5U3RhdGUoKTsKKyAgICAg
ICAgaWYgKGltYWdlTmFtZS5pc0VtcHR5KCkpCisgICAgICAgICAgICBtX2NhY2hlZEltYWdlRm9y
RGlzYWJsZWRTdGF0ZSA9IGltYWdlRm9yRGlzYWJsZWRTdGF0ZSgpOworICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVz
b3VyY2UoaW1hZ2VOYW1lLmRhdGEoKSk7CisgICAgICAgICAgICBtX2NhY2hlZEltYWdlRm9yUmVh
ZG9ubHlTdGF0ZSA9IG5ldyBDYWNoZWRJbWFnZShpbWFnZS5nZXQoKSk7CisgICAgICAgIH0KKyAg
ICB9CisgICAgcmV0dXJuIG1fY2FjaGVkSW1hZ2VGb3JSZWFkb25seVN0YXRlLmdldCgpOworfQor
Cit2b2lkIFRleHRGaWVsZERlY29yYXRvckltcGw6OmhhbmRsZUNsaWNrKEhUTUxJbnB1dEVsZW1l
bnQqIGlucHV0KQoreworICAgIEFTU0VSVChpbnB1dCk7CisgICAgV2ViSW5wdXRFbGVtZW50IHdl
YklucHV0KGlucHV0KTsKKyAgICBtX2NsaWVudC0+aGFuZGxlQ2xpY2sod2ViSW5wdXQpOworfQor
Cit2b2lkIFRleHRGaWVsZERlY29yYXRvckltcGw6OndpbGxEZXRhY2goSFRNTElucHV0RWxlbWVu
dCogaW5wdXQpCit7CisgICAgQVNTRVJUKGlucHV0KTsKKyAgICBXZWJJbnB1dEVsZW1lbnQgd2Vi
SW5wdXQoaW5wdXQpOworICAgIG1fY2xpZW50LT53aWxsRGV0YWNoKHdlYklucHV0KTsKK30KKwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvVGV4dEZpZWxkRGVjb3Jh
dG9ySW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvVGV4dEZpZWxkRGVjb3JhdG9y
SW1wbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmFlMDYwNjYxZWM2MjhjMTU5MDllODk4OGE2ZTY3ZGQwYjA2MTQ1
OTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9UZXh0Rmll
bGREZWNvcmF0b3JJbXBsLmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVGV4dEZpZWxkRGVjb3Jh
dG9ySW1wbF9oCisjZGVmaW5lIFRleHRGaWVsZERlY29yYXRvckltcGxfaAorCisjaW5jbHVkZSAi
Q2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKKyNpbmNsdWRlICJUZXh0RmllbGREZWNvcmF0aW9uRWxl
bWVudC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViVGV4dEZpZWxkRGVjb3Jh
dG9yQ2xpZW50OworCitjbGFzcyBUZXh0RmllbGREZWNvcmF0b3JJbXBsIDogcHVibGljIFdlYkNv
cmU6OlRleHRGaWVsZERlY29yYXRvciB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8
VGV4dEZpZWxkRGVjb3JhdG9ySW1wbD4gY3JlYXRlKFdlYlRleHRGaWVsZERlY29yYXRvckNsaWVu
dCopOworICAgIHZpcnR1YWwgflRleHRGaWVsZERlY29yYXRvckltcGwoKTsKKworcHJpdmF0ZToK
KyAgICB2aXJ0dWFsIGJvb2wgd2lsbEFkZERlY29yYXRpb25UbyhXZWJDb3JlOjpIVE1MSW5wdXRF
bGVtZW50KikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBXZWJDb3JlOjpDYWNoZWRJbWFnZSogaW1h
Z2VGb3JOb3JtYWxTdGF0ZSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgV2ViQ29yZTo6Q2FjaGVk
SW1hZ2UqIGltYWdlRm9yRGlzYWJsZWRTdGF0ZSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgV2Vi
Q29yZTo6Q2FjaGVkSW1hZ2UqIGltYWdlRm9yUmVhZG9ubHlTdGF0ZSgpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBoYW5kbGVDbGljayhXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50KikgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEZXRhY2goV2ViQ29yZTo6SFRNTElucHV0RWxl
bWVudCopIE9WRVJSSURFOworCisgICAgVGV4dEZpZWxkRGVjb3JhdG9ySW1wbChXZWJUZXh0Rmll
bGREZWNvcmF0b3JDbGllbnQqKTsKKyAgICAKKyAgICBXZWJUZXh0RmllbGREZWNvcmF0b3JDbGll
bnQqIG1fY2xpZW50OworICAgIFdlYkNvcmU6OkNhY2hlZFJlc291cmNlSGFuZGxlPFdlYkNvcmU6
OkNhY2hlZEltYWdlPiBtX2NhY2hlZEltYWdlRm9yTm9ybWFsU3RhdGU7CisgICAgV2ViQ29yZTo6
Q2FjaGVkUmVzb3VyY2VIYW5kbGU8V2ViQ29yZTo6Q2FjaGVkSW1hZ2U+IG1fY2FjaGVkSW1hZ2VG
b3JEaXNhYmxlZFN0YXRlOworICAgIFdlYkNvcmU6OkNhY2hlZFJlc291cmNlSGFuZGxlPFdlYkNv
cmU6OkNhY2hlZEltYWdlPiBtX2NhY2hlZEltYWdlRm9yUmVhZG9ubHlTdGF0ZTsKK307CisKK30K
KworI2VuZGlmIC8vIFRleHRGaWVsZERlY29yYXRvckltcGxfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IGMwNjIxYTgwNjEwNDEwMmQ5MDJlNzY1ZjRi
ZDRlZGIxOGI0MGNlNzkuLmFiYzQ0M2RiNzU4ZjUwNmE5ZmVlMmExYWJlZTE2YzQzYjNlNDcxMTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTEwOCw2
ICsxMDgsNyBAQAogI2luY2x1ZGUgIlNoYXJlZEdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVk
ZSAiU3BlZWNoSW5wdXRDbGllbnRJbXBsLmgiCiAjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25D
bGllbnQuaCIKKyNpbmNsdWRlICJUZXh0RmllbGREZWNvcmF0b3JJbXBsLmgiCiAjaW5jbHVkZSAi
VGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlICJUb3VjaHBhZEZs
aW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuaCIKQEAgLTMxNiw2ICszMTcsMTIgQEAgdm9pZCBXZWJW
aWV3SW1wbDo6c2V0U3BlbGxDaGVja0NsaWVudChXZWJTcGVsbENoZWNrQ2xpZW50KiBzcGVsbENo
ZWNrQ2xpZW50KQogICAgIG1fc3BlbGxDaGVja0NsaWVudCA9IHNwZWxsQ2hlY2tDbGllbnQ7CiB9
CiAKK3ZvaWQgV2ViVmlld0ltcGw6OmFkZFRleHRGaWVsZERlY29yYXRvckNsaWVudChXZWJUZXh0
RmllbGREZWNvcmF0b3JDbGllbnQqIGNsaWVudCkKK3sKKyAgICBBU1NFUlQoY2xpZW50KTsKKyAg
ICBtX3RleHRGaWVsZERlY29yYXRvcnMuYXBwZW5kKFRleHRGaWVsZERlY29yYXRvckltcGw6OmNy
ZWF0ZShjbGllbnQpKTsKK30KKwogV2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKFdlYlZpZXdDbGll
bnQqIGNsaWVudCkKICAgICA6IG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1fYXV0b2ZpbGxDbGll
bnQoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBs
LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4IDM4YmU2
YWRjMzM1ZGQyNTc3M2Y2ODNmZTQ5YWJlNWZmNGUwZWM2NjYuLmY5YWJjZjk0Nzg1ZjliMGZmMGI5
OTJhZmY1MzMwYmE4N2ZjMDYxNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlZpZXdJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmll
d0ltcGwuaApAQCAtNzMsNiArNzMsNyBAQCBjbGFzcyBQb3B1cENvbnRhaW5lcjsKIGNsYXNzIFBv
cHVwTWVudUNsaWVudDsKIGNsYXNzIFJhbmdlOwogY2xhc3MgUmVuZGVyVGhlbWU7CitjbGFzcyBU
ZXh0RmllbGREZWNvcmF0b3I7CiBjbGFzcyBXaWRnZXQ7CiB9CiAKQEAgLTE1Miw2ICsxNTMsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldERldlRvb2xzQWdlbnRDbGllbnQoV2ViRGV2
VG9vbHNBZ2VudENsaWVudCopOwogICAgIHZpcnR1YWwgdm9pZCBzZXRQZXJtaXNzaW9uQ2xpZW50
KFdlYlBlcm1pc3Npb25DbGllbnQqKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0U3BlbGxDaGVja0Ns
aWVudChXZWJTcGVsbENoZWNrQ2xpZW50Kik7CisgICAgdmlydHVhbCB2b2lkIGFkZFRleHRGaWVs
ZERlY29yYXRvckNsaWVudChXZWJUZXh0RmllbGREZWNvcmF0b3JDbGllbnQqKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIFdlYlNldHRpbmdzKiBzZXR0aW5ncygpOwogICAgIHZpcnR1YWwgV2ViU3Ry
aW5nIHBhZ2VFbmNvZGluZygpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBzZXRQYWdlRW5jb2Rp
bmcoY29uc3QgV2ViU3RyaW5nJiBlbmNvZGluZyk7CkBAIC0zMDYsNiArMzA4LDggQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gbV9zcGVsbENoZWNrQ2xpZW50OwogICAgIH0KIAorICAgIGNvbnN0
IFZlY3RvcjxPd25QdHI8V2ViQ29yZTo6VGV4dEZpZWxkRGVjb3JhdG9yPiA+JiB0ZXh0RmllbGRE
ZWNvcmF0b3JzKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0RmllbGREZWNvcmF0b3JzOyB9CisKICAg
ICAvLyBSZXR1cm5zIHRoZSBwYWdlIG9iamVjdCBhc3NvY2lhdGVkIHdpdGggdGhpcyB2aWV3LiBU
aGlzIG1heSBiZSBudWxsIHdoZW4KICAgICAvLyB0aGUgcGFnZSBpcyBzaHV0dGluZyBkb3duLCBi
dXQgd2lsbCBiZSB2YWxpZCBhdCBhbGwgb3RoZXIgdGltZXMuCiAgICAgV2ViQ29yZTo6UGFnZSog
cGFnZSgpIGNvbnN0CkBAIC01NzQsNiArNTc4LDcgQEAgcHJpdmF0ZToKICAgICBXZWJBdXRvZmls
bENsaWVudCogbV9hdXRvZmlsbENsaWVudDsKICAgICBXZWJQZXJtaXNzaW9uQ2xpZW50KiBtX3Bl
cm1pc3Npb25DbGllbnQ7CiAgICAgV2ViU3BlbGxDaGVja0NsaWVudCogbV9zcGVsbENoZWNrQ2xp
ZW50OworICAgIFZlY3RvcjxPd25QdHI8V2ViQ29yZTo6VGV4dEZpZWxkRGVjb3JhdG9yPiA+IG1f
dGV4dEZpZWxkRGVjb3JhdG9yczsKIAogICAgIENocm9tZUNsaWVudEltcGwgbV9jaHJvbWVDbGll
bnRJbXBsOwogICAgIENvbnRleHRNZW51Q2xpZW50SW1wbCBtX2NvbnRleHRNZW51Q2xpZW50SW1w
bDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134516</attachid>
            <date>2012-03-29 00:26:55 -0700</date>
            <delta_ts>2012-04-01 22:26:17 -0700</delta_ts>
            <desc>Patch 2</desc>
            <filename>bug-82143-20120329162654.patch</filename>
            <type>text/plain</type>
            <size>21283</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyNTA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDUwZTc4NjRiYWU1MTBhZWFkOWUzY2NhZGU0ZWQ5ZTNmNmYxYjBjODYuLmUzNmFhMWI4M2YzY2Ey
ZDI4NjZkYTdmNGU4NzU4ZmJhZDAzYjEyNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDggQEAKKzIwMTItMDMtMjcgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0gQWRkIFdlYktpdCBBUEkgZm9yIFdlYkNvcmU6OlRl
eHRGaWVsZERlY29yYXRvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODIxNDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBFeHBvc2UgV2ViQ29yZTo6VGV4dEZpZWxkRGVjb3JhdG9yIGFzCisgICAgICAgIFdl
YktpdDo6V2ViVGV4dEZpZWxkRGVjb3JhdG9yQ2xpZW50LiBUaGlzIGNoYW5nZSBhZGQgY2FwYWJp
bGl0eSB0byBhZGQKKyAgICAgICAgZGVjb3JhdGlvbiBidXR0b25zIHRvIHRleHQgZmllbGQgPGlu
cHV0PiBlbGVtZW50cy4KKworICAgICAgICAqIFdlYktpdC5neXA6IEFkZCBuZXcgZmlsZXMuCisg
ICAgICAgICogcHVibGljL1dlYlRleHRGaWVsZERlY29yYXRvckNsaWVudC5oOiBBZGRlZC4KKyAg
ICAgICAgKiBwdWJsaWMvV2ViVmlldy5oOgorICAgICAgICAoV2ViS2l0KTogQWRkIGFkZFRleHRG
aWVsZERlY29yYXRvckNsaWVudCgpLgorICAgICAgICAqIHNyYy9DaHJvbWVDbGllbnRJbXBsLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50SW1wbDo6d2lsbEFkZFRleHRGaWVsZERl
Y29yYXRpb25zVG8pOgorICAgICAgICBDYWxscyB3aWxsQWRkRGVjb3JhdGlvblRvKCkgb2YgVGV4
dEZpZWxkRGVjb3JhdG9yIG9iamVjdHMgb3duZWQgYnkgV2ViVmlld0ltcGwuCisgICAgICAgIChX
ZWJLaXQ6OkNocm9tZUNsaWVudEltcGw6OmFkZFRleHRGaWVsZERlY29yYXRpb25zVG8pOgorICAg
ICAgICBBcHBseSBUZXh0RmllbGREZWNvcmF0aW9uRWxlbWVudDo6ZGVjb3JhdGUoKSBmb3IgdGhl
IHNwZWNpZmllZCBpbnB1dCBlbGVtZW50LgorICAgICAgICAqIHNyYy9DaHJvbWVDbGllbnRJbXBs
Lmg6CisgICAgICAgIChDaHJvbWVDbGllbnRJbXBsKTogQWRkIG5ldyBmdW5jdGlvbiBkZWNsYXJh
dGlvbnMuCisgICAgICAgICogc3JjL1RleHRGaWVsZERlY29yYXRvckltcGwuY3BwOgorICAgICAg
ICBBZGRlZC4gVGhpcyBpcyBhIGJyaWRnZSBvZiBXZWJDb3JlOjpUZXh0RmllbGREZWNvcmF0b3Ig
YW5kCisgICAgICAgIFdlYktpdDo6V2ViVGV4dEZpZWxkRGVjb3JhdG9yQ2xpZW50LiBUaGlzIG93
bnMgQ2FjaGVkSW1hZ2Ugb2JqZWN0cworICAgICAgICBzcGVjZmllZCBieSBXZWJUZXh0RmllbGRE
ZWNvcmF0b3JDbGllbnQuCisgICAgICAgIChXZWJLaXQ6OlRleHRGaWVsZERlY29yYXRvckltcGw6
OlRleHRGaWVsZERlY29yYXRvckltcGwpOgorICAgICAgICAoV2ViS2l0OjpUZXh0RmllbGREZWNv
cmF0b3JJbXBsOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpUZXh0RmllbGREZWNvcmF0b3JJ
bXBsOjp+VGV4dEZpZWxkRGVjb3JhdG9ySW1wbCk6CisgICAgICAgIChXZWJLaXQ6OlRleHRGaWVs
ZERlY29yYXRvckltcGw6OndpbGxBZGREZWNvcmF0aW9uVG8pOgorICAgICAgICAoV2ViS2l0OjpU
ZXh0RmllbGREZWNvcmF0b3JJbXBsOjppbWFnZUZvck5vcm1hbFN0YXRlKToKKyAgICAgICAgKFdl
YktpdDo6VGV4dEZpZWxkRGVjb3JhdG9ySW1wbDo6aW1hZ2VGb3JEaXNhYmxlZFN0YXRlKToKKyAg
ICAgICAgKFdlYktpdDo6VGV4dEZpZWxkRGVjb3JhdG9ySW1wbDo6aW1hZ2VGb3JSZWFkb25seVN0
YXRlKToKKyAgICAgICAgKFdlYktpdDo6VGV4dEZpZWxkRGVjb3JhdG9ySW1wbDo6aGFuZGxlQ2xp
Y2spOgorICAgICAgICAoV2ViS2l0OjpUZXh0RmllbGREZWNvcmF0b3JJbXBsOjp3aWxsRGV0YWNo
KToKKyAgICAgICAgKiBzcmMvVGV4dEZpZWxkRGVjb3JhdG9ySW1wbC5oOiBBZGRlZC4KKyAgICAg
ICAgKFRleHRGaWVsZERlY29yYXRvckltcGwpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjphZGRUZXh0RmllbGREZWNvcmF0b3JD
bGllbnQpOgorICAgICAgICBBZGQgaW1wbGVtZW50YXRpb24gb2YgV2ViVmlldzo6YWRkVGV4dEZp
ZWxkRGVjb3JhdG9yQ2xpZW50KCkuCisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmg6CisgICAg
ICAgIFdlYlZpZXdJbXBsIG93bnMgYSB2ZWN0b3Igb2YgVGV4dEZpZWxkRGVjb3JhdG9ySW1wbC4K
KyAgICAgICAgKFdlYlZpZXdJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnRl
eHRGaWVsZERlY29yYXRvcnMpOgorCiAyMDEyLTAzLTI4ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBNb3ZlIEFQSXMgcmVsYXRlZCB0byBSZXNv
dXJjZUhhbmRsZSBpbnRvIFBsYXRmb3JtCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL1dlYktpdC5neXAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXgg
YjAzNWM3MGViYzc1ZjIwNWI2MzAzYWU3Y2U2MTQyZGU0ZThiZGU4Zi4uM2Y5YmY1MmNlZDVlYTAz
NWIxOTQ3MDFlN2I4MzE0YWQzMGVlMTY5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9XZWJLaXQuZ3lwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApA
QCAtMjcyLDYgKzI3Miw3IEBACiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJUZXh0Q2hlY2tp
bmdDb21wbGV0aW9uLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVGV4dENoZWNraW5n
UmVzdWx0LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVGV4dERpcmVjdGlvbi5oJywK
KyAgICAgICAgICAgICAgICAncHVibGljL1dlYlRleHRGaWVsZERlY29yYXRvckNsaWVudC5oJywK
ICAgICAgICAgICAgICAgICAncHVibGljL1dlYlRleHRJbnB1dFR5cGUuaCcsCiAgICAgICAgICAg
ICAgICAgJ3B1YmxpYy9XZWJUZXh0UnVuLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2Vi
VVJMTG9hZGVyT3B0aW9ucy5oJywKQEAgLTQ4Niw2ICs0ODcsOCBAQAogICAgICAgICAgICAgICAg
ICdzcmMvU3RvcmFnZUluZm9DaHJvbWl1bS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvU3Rv
cmFnZU5hbWVzcGFjZVByb3h5LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9TdG9yYWdlTmFt
ZXNwYWNlUHJveHkuaCcsCisgICAgICAgICAgICAgICAgJ3NyYy9UZXh0RmllbGREZWNvcmF0b3JJ
bXBsLmgnLAorICAgICAgICAgICAgICAgICdzcmMvVGV4dEZpZWxkRGVjb3JhdG9ySW1wbC5jcHAn
LAogICAgICAgICAgICAgICAgICdzcmMvVXNlck1lZGlhQ2xpZW50SW1wbC5oJywKICAgICAgICAg
ICAgICAgICAnc3JjL1VzZXJNZWRpYUNsaWVudEltcGwuY3BwJywKICAgICAgICAgICAgICAgICAn
c3JjL1dlYlRleHRDaGVja2luZ0NvbXBsZXRpb25JbXBsLmgnLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVGV4dEZpZWxkRGVjb3JhdG9yQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJUZXh0RmllbGREZWNvcmF0b3JDbGllbnQu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44YzM0N2Q5Mjg2NTM0NjIzOWY1MGNmZWMwMWVlZjAwNGY2MDlmOWVjCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVGV4dEZp
ZWxkRGVjb3JhdG9yQ2xpZW50LmgKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViVGV4dEZpZWxk
RGVjb3JhdG9yQ2xpZW50X2gKKyNkZWZpbmUgV2ViVGV4dEZpZWxkRGVjb3JhdG9yQ2xpZW50X2gK
KworI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNTdHJpbmcuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2NsYXNzIFdlYklucHV0RWxlbWVudDsKKworY2xhc3MgV2ViVGV4dEZpZWxkRGVjb3JhdG9y
Q2xpZW50IHsKK3B1YmxpYzoKKyAgICAvLyBUaGUgZnVuY3Rpb24gc2hvdWxkIHJldHVybiB0cnVl
IGlmIHRoZSBzcGVjaWZpZWQgaW5wdXQgZWxlbWVudCBzaG91bGQKKyAgICAvLyBoYXZlIGEgZGVj
b3JhdGlvbiBpY29uLiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuZXZlciBhIHRleHQgZmll
bGQgaXMKKyAgICAvLyBjcmVhdGVkLgorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRBZGREZWNvcmF0
aW9uVG8oY29uc3QgV2ViSW5wdXRFbGVtZW50JikgPSAwOworCisgICAgLy8gSW1hZ2UgcmVzb3Vy
Y2UgbmFtZSBmb3IgdGhlIG5vcm1hbCBzdGF0ZS4gVGhlIGltYWdlIGlzIHN0cmV0Y2hlZCB0bwor
ICAgIC8vIGZvbnQtc2l6ZSB4IGZvbnQtc2l6ZSBzcXVhcmUuIFRoZSBmdW5jdGlvbiBtdXN0IHJl
dHVybiBhbiBleGlzdGluZworICAgIC8vIHJlc291cmNlIG5hbWUuCisgICAgdmlydHVhbCBXZWJD
U3RyaW5nIGltYWdlTmFtZUZvck5vcm1hbFN0YXRlKCkgPSAwOworICAgIC8vIEltYWdlIHJlc291
cmNlIG5hbWUgZm9yIHRoZSBkaXNhYmxlZCBzdGF0ZS4gSWYgdGhpcyBmdW5jdGlvbiByZXR1cm5z
IGFuCisgICAgLy8gZW1wdHkgc3RyaW5nLCBpbWFnZU5hbWVGb3JOb3JtYWxTdGF0ZSgpIGlzIHVz
ZWQgZXZlbiBmb3IgdGhlIGRpc2FibGVkCisgICAgLy8gc3RhdGUuCisgICAgdmlydHVhbCBXZWJD
U3RyaW5nIGltYWdlTmFtZUZvckRpc2FibGVkU3RhdGUoKSA9IDA7CisgICAgLy8gSW1hZ2UgcmVz
b3VyY2UgbmFtZSBmb3IgdGhlIGRpc2FibGVkIHN0YXRlLiBJZiB0aGlzIGZ1bmN0aW9uIHJldHVy
bnMgYW4KKyAgICAvLyBlbXB0eSBzdHJpbmcsIHRoZSBpbWFnZSBzYW1lIGFzIGltYWdlTmFtZUZv
ckRpc2FibGVkU3RhdGUoKSBpcyB1c2VkLgorICAgIHZpcnR1YWwgV2ViQ1N0cmluZyBpbWFnZU5h
bWVGb3JSZWFkT25seVN0YXRlKCkgPSAwOworCisgICAgLy8gVGhpcyBpcyBjYWxsZWQgd2hlbiB0
aGUgZGVjb3JhdGlvbiBpY29uIGlzIGNsaWNrZWQuCisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUNs
aWNrKFdlYklucHV0RWxlbWVudCYpID0gMDsKKyAgICAvLyBUaGlzIGlzIGNhbGxlZCB3aGVuIHRo
ZSBpbnB1dCBlbGVtZW50IGxvb3NlcyBpdHMgcmVuZGVyZXIuCisgICAgdmlydHVhbCB2b2lkIHdp
bGxEZXRhY2goV2ViSW5wdXRFbGVtZW50JikgPSAwOworCisgICAgdmlydHVhbCB+V2ViVGV4dEZp
ZWxkRGVjb3JhdG9yQ2xpZW50KCkgeyB9Cit9OworCit9CisKKyNlbmRpZiAvLyBXZWJUZXh0Rmll
bGREZWNvcmF0b3JDbGllbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViVmlldy5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlldy5o
CmluZGV4IDRkOTk1ZTBmZmI1MzY2ZWI1ZjU2ZDE1YWU5YjdmNjdkYzk5Yjc1MTQuLjcyOWY1MTY3
NzllMTc3ODlkZWI4ZDdlOWUxNzQwMDM5Njk3OTk1ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJWaWV3LmgKQEAgLTUzLDYgKzUzLDcgQEAgY2xhc3MgV2ViUGVybWlzc2lvbkNs
aWVudDsKIGNsYXNzIFdlYlNldHRpbmdzOwogY2xhc3MgV2ViU3BlbGxDaGVja0NsaWVudDsKIGNs
YXNzIFdlYlN0cmluZzsKK2NsYXNzIFdlYlRleHRGaWVsZERlY29yYXRvckNsaWVudDsKIGNsYXNz
IFdlYlZpZXdDbGllbnQ7CiBzdHJ1Y3QgV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnM7CiBz
dHJ1Y3QgV2ViTWVkaWFQbGF5ZXJBY3Rpb247CkBAIC0xMDQsNiArMTA1LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBzZXREZXZUb29sc0FnZW50Q2xpZW50KFdlYkRldlRvb2xzQWdlbnRD
bGllbnQqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFBlcm1pc3Npb25DbGllbnQoV2ViUGVy
bWlzc2lvbkNsaWVudCopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0U3BlbGxDaGVja0NsaWVu
dChXZWJTcGVsbENoZWNrQ2xpZW50KikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhZGRUZXh0Rmll
bGREZWNvcmF0b3JDbGllbnQoV2ViVGV4dEZpZWxkRGVjb3JhdG9yQ2xpZW50KikgPSAwOwogCiAK
ICAgICAvLyBPcHRpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0Nocm9tZUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hy
b21lQ2xpZW50SW1wbC5jcHAKaW5kZXggNGE1ODIwODcyZjE0MzU5YTUwY2FhMmU0NmM5ODczYjBi
ZDdkMjJkYi4uYWRmZGQ5ZjQzNmMxYTM1MWE3M2IyMDYyMzliNDQ4MmJiNzQ4MDU1ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAKQEAgLTUy
LDYgKzUyLDcgQEAKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJHZW9sb2NhdGlv
bi5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKKyNpbmNsdWRlICJIVE1MSW5wdXRFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5o
IgogI2luY2x1ZGUgIkljb24uaCIKQEAgLTY4LDYgKzY5LDcgQEAKICNpbmNsdWRlICJTZWFyY2hQ
b3B1cE1lbnVDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVk
ZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJUZXh0RmllbGREZWNvcmF0aW9uRWxlbWVudC5oIgog
I2lmIFVTRShWOCkKICNpbmNsdWRlICJWOFByb3h5LmgiCiAjZW5kaWYKQEAgLTk4NSw2ICs5ODcs
MjkgQEAgUGFzc1JlZlB0cjxTZWFyY2hQb3B1cE1lbnU+IENocm9tZUNsaWVudEltcGw6OmNyZWF0
ZVNlYXJjaFBvcHVwTWVudShQb3B1cE1lbnVDbGkKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNl
YXJjaFBvcHVwTWVudUNocm9taXVtKGNsaWVudCkpOwogfQogCitib29sIENocm9tZUNsaWVudElt
cGw6OndpbGxBZGRUZXh0RmllbGREZWNvcmF0aW9uc1RvKEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0
KQoreworICAgIEFTU0VSVChpbnB1dCk7CisgICAgY29uc3QgVmVjdG9yPE93blB0cjxUZXh0Rmll
bGREZWNvcmF0b3I+ID4mIGRlY29yYXRvcnMgPSBtX3dlYlZpZXctPnRleHRGaWVsZERlY29yYXRv
cnMoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGVjb3JhdG9ycy5zaXplKCk7ICsr
aSkgeworICAgICAgICBpZiAoZGVjb3JhdG9yc1tpXS0+d2lsbEFkZERlY29yYXRpb25UbyhpbnB1
dCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCit2b2lkIENocm9tZUNsaWVudEltcGw6OmFkZFRleHRGaWVsZERlY29yYXRpb25zVG8oSFRN
TElucHV0RWxlbWVudCogaW5wdXQpCit7CisgICAgQVNTRVJUKHdpbGxBZGRUZXh0RmllbGREZWNv
cmF0aW9uc1RvKGlucHV0KSk7CisgICAgY29uc3QgVmVjdG9yPE93blB0cjxUZXh0RmllbGREZWNv
cmF0b3I+ID4mIGRlY29yYXRvcnMgPSBtX3dlYlZpZXctPnRleHRGaWVsZERlY29yYXRvcnMoKTsK
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGVjb3JhdG9ycy5zaXplKCk7ICsraSkgewor
ICAgICAgICBpZiAoIWRlY29yYXRvcnNbaV0tPndpbGxBZGREZWNvcmF0aW9uVG8oaW5wdXQpKQor
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIFJlZlB0cjxUZXh0RmllbGREZWNvcmF0aW9u
RWxlbWVudD4gZGVjb3JhdGlvbiA9IFRleHRGaWVsZERlY29yYXRpb25FbGVtZW50OjpjcmVhdGUo
aW5wdXQtPmRvY3VtZW50KCksIGRlY29yYXRvcnNbaV0uZ2V0KCkpOworICAgICAgICBkZWNvcmF0
aW9uLT5kZWNvcmF0ZShpbnB1dCk7CisgICAgfQorfQorCiBib29sIENocm9tZUNsaWVudEltcGw6
OnNob3VsZFJ1bk1vZGFsRGlhbG9nRHVyaW5nUGFnZURpc21pc3NhbChjb25zdCBEaWFsb2dUeXBl
JiBkaWFsb2dUeXBlLCBjb25zdCBTdHJpbmcmIGRpYWxvZ01lc3NhZ2UsIEZyYW1lTG9hZGVyOjpQ
YWdlRGlzbWlzc2FsVHlwZSBkaXNtaXNzYWxUeXBlKSBjb25zdAogewogICAgIGNvbnN0IGNoYXIq
IGtEaWFsb2dzW10gPSB7ImFsZXJ0IiwgImNvbmZpcm0iLCAicHJvbXB0IiwgInNob3dNb2RhbERp
YWxvZyJ9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xp
ZW50SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5o
CmluZGV4IDM0YTBiNWFkZjg3OGYwNzk2ZjY4NmMzOWFlODZiNjgzMDgwZDBmNzEuLjFjNjcwMzM2
MjNlZjcxMjdiYjZmZjgyY2ZhM2JiZDRkNzk1NzhjNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmgKQEAgLTE5NSw2ICsxOTUsOCBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBib29sIGhhc09wZW5lZFBvcHVwKCkgY29uc3QgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OlBvcHVwTWVudT4gY3JlYXRlUG9wdXBNZW51KFdl
YkNvcmU6OlBvcHVwTWVudUNsaWVudCopIGNvbnN0OwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxX
ZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnU+IGNyZWF0ZVNlYXJjaFBvcHVwTWVudShXZWJDb3JlOjpQ
b3B1cE1lbnVDbGllbnQqKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgd2lsbEFkZFRleHRGaWVs
ZERlY29yYXRpb25zVG8oV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudCopIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBhZGRUZXh0RmllbGREZWNvcmF0aW9uc1RvKFdlYkNvcmU6OkhUTUxJbnB1
dEVsZW1lbnQqKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRSdW5Nb2RhbERp
YWxvZ0R1cmluZ1BhZ2VEaXNtaXNzYWwoY29uc3QgRGlhbG9nVHlwZSYsIGNvbnN0IFN0cmluZyYg
ZGlhbG9nTWVzc2FnZSwgV2ViQ29yZTo6RnJhbWVMb2FkZXI6OlBhZ2VEaXNtaXNzYWxUeXBlKSBj
b25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvVGV4dEZpZWxk
RGVjb3JhdG9ySW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9UZXh0RmllbGRE
ZWNvcmF0b3JJbXBsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZWY2NmEyMTM1MjY4NWY5YjQzOTQ4OGZiYzYw
MGJmZDc2NzYyOTdkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvVGV4dEZpZWxkRGVjb3JhdG9ySW1wbC5jcHAKQEAgLTAsMCArMSwxMTggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiVGV4dEZpZWxkRGVjb3JhdG9ySW1wbC5oIgorCisjaW5jbHVk
ZSAiQ2FjaGVkSW1hZ2UuaCIKKyNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCisjaW5jbHVk
ZSAiV2ViSW5wdXRFbGVtZW50LmgiCisjaW5jbHVkZSAiV2ViVGV4dEZpZWxkRGVjb3JhdG9yQ2xp
ZW50LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
KworaW5saW5lIFRleHRGaWVsZERlY29yYXRvckltcGw6OlRleHRGaWVsZERlY29yYXRvckltcGwo
V2ViVGV4dEZpZWxkRGVjb3JhdG9yQ2xpZW50KiBjbGllbnQpCisgICAgOiBtX2NsaWVudChjbGll
bnQpCit7CisgICAgQVNTRVJUKGNsaWVudCk7Cit9CisKK1Bhc3NPd25QdHI8VGV4dEZpZWxkRGVj
b3JhdG9ySW1wbD4gVGV4dEZpZWxkRGVjb3JhdG9ySW1wbDo6Y3JlYXRlKFdlYlRleHRGaWVsZERl
Y29yYXRvckNsaWVudCogY2xpZW50KQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcgVGV4dEZp
ZWxkRGVjb3JhdG9ySW1wbChjbGllbnQpKTsKK30KKworVGV4dEZpZWxkRGVjb3JhdG9ySW1wbDo6
flRleHRGaWVsZERlY29yYXRvckltcGwoKQoreworfQorCitib29sIFRleHRGaWVsZERlY29yYXRv
ckltcGw6OndpbGxBZGREZWNvcmF0aW9uVG8oSFRNTElucHV0RWxlbWVudCogaW5wdXQpCit7Cisg
ICAgQVNTRVJUKGlucHV0KTsKKyAgICByZXR1cm4gbV9jbGllbnQtPnNob3VsZEFkZERlY29yYXRp
b25UbyhXZWJJbnB1dEVsZW1lbnQoaW5wdXQpKTsKK30KKworQ2FjaGVkSW1hZ2UqIFRleHRGaWVs
ZERlY29yYXRvckltcGw6OmltYWdlRm9yTm9ybWFsU3RhdGUoKQoreworICAgIGlmICghbV9jYWNo
ZWRJbWFnZUZvck5vcm1hbFN0YXRlKSB7CisgICAgICAgIFdlYkNTdHJpbmcgaW1hZ2VOYW1lID0g
bV9jbGllbnQtPmltYWdlTmFtZUZvck5vcm1hbFN0YXRlKCk7CisgICAgICAgIEFTU0VSVCghaW1h
Z2VOYW1lLmlzRW1wdHkoKSk7CisgICAgICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBJbWFnZTo6
bG9hZFBsYXRmb3JtUmVzb3VyY2UoaW1hZ2VOYW1lLmRhdGEoKSk7CisgICAgICAgIG1fY2FjaGVk
SW1hZ2VGb3JOb3JtYWxTdGF0ZSA9IG5ldyBDYWNoZWRJbWFnZShpbWFnZS5nZXQoKSk7CisgICAg
ICAgIC8vIFRoZSBDYWNoZWRJbWFnZSBvd25zIGEgUmVmUHRyIHRvIHRoZSBJbWFnZS4KKyAgICB9
CisgICAgcmV0dXJuIG1fY2FjaGVkSW1hZ2VGb3JOb3JtYWxTdGF0ZS5nZXQoKTsKK30KKworQ2Fj
aGVkSW1hZ2UqIFRleHRGaWVsZERlY29yYXRvckltcGw6OmltYWdlRm9yRGlzYWJsZWRTdGF0ZSgp
Cit7CisgICAgaWYgKCFtX2NhY2hlZEltYWdlRm9yRGlzYWJsZWRTdGF0ZSkgeworICAgICAgICBX
ZWJDU3RyaW5nIGltYWdlTmFtZSA9IG1fY2xpZW50LT5pbWFnZU5hbWVGb3JEaXNhYmxlZFN0YXRl
KCk7CisgICAgICAgIGlmIChpbWFnZU5hbWUuaXNFbXB0eSgpKQorICAgICAgICAgICAgbV9jYWNo
ZWRJbWFnZUZvckRpc2FibGVkU3RhdGUgPSBpbWFnZUZvck5vcm1hbFN0YXRlKCk7CisgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IEltYWdlOjpsb2FkUGxh
dGZvcm1SZXNvdXJjZShpbWFnZU5hbWUuZGF0YSgpKTsKKyAgICAgICAgICAgIG1fY2FjaGVkSW1h
Z2VGb3JEaXNhYmxlZFN0YXRlID0gbmV3IENhY2hlZEltYWdlKGltYWdlLmdldCgpKTsKKyAgICAg
ICAgfQorICAgIH0KKyAgICByZXR1cm4gbV9jYWNoZWRJbWFnZUZvckRpc2FibGVkU3RhdGUuZ2V0
KCk7Cit9CisKK0NhY2hlZEltYWdlKiBUZXh0RmllbGREZWNvcmF0b3JJbXBsOjppbWFnZUZvclJl
YWRvbmx5U3RhdGUoKQoreworICAgIGlmICghbV9jYWNoZWRJbWFnZUZvclJlYWRvbmx5U3RhdGUp
IHsKKyAgICAgICAgV2ViQ1N0cmluZyBpbWFnZU5hbWUgPSBtX2NsaWVudC0+aW1hZ2VOYW1lRm9y
UmVhZE9ubHlTdGF0ZSgpOworICAgICAgICBpZiAoaW1hZ2VOYW1lLmlzRW1wdHkoKSkKKyAgICAg
ICAgICAgIG1fY2FjaGVkSW1hZ2VGb3JEaXNhYmxlZFN0YXRlID0gaW1hZ2VGb3JEaXNhYmxlZFN0
YXRlKCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9
IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZShpbWFnZU5hbWUuZGF0YSgpKTsKKyAgICAgICAg
ICAgIG1fY2FjaGVkSW1hZ2VGb3JSZWFkb25seVN0YXRlID0gbmV3IENhY2hlZEltYWdlKGltYWdl
LmdldCgpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gbV9jYWNoZWRJbWFnZUZvclJl
YWRvbmx5U3RhdGUuZ2V0KCk7Cit9CisKK3ZvaWQgVGV4dEZpZWxkRGVjb3JhdG9ySW1wbDo6aGFu
ZGxlQ2xpY2soSFRNTElucHV0RWxlbWVudCogaW5wdXQpCit7CisgICAgQVNTRVJUKGlucHV0KTsK
KyAgICBXZWJJbnB1dEVsZW1lbnQgd2ViSW5wdXQoaW5wdXQpOworICAgIG1fY2xpZW50LT5oYW5k
bGVDbGljayh3ZWJJbnB1dCk7Cit9CisKK3ZvaWQgVGV4dEZpZWxkRGVjb3JhdG9ySW1wbDo6d2ls
bERldGFjaChIVE1MSW5wdXRFbGVtZW50KiBpbnB1dCkKK3sKKyAgICBBU1NFUlQoaW5wdXQpOwor
ICAgIFdlYklucHV0RWxlbWVudCB3ZWJJbnB1dChpbnB1dCk7CisgICAgbV9jbGllbnQtPndpbGxE
ZXRhY2god2ViSW5wdXQpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9UZXh0RmllbGREZWNvcmF0b3JJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9UZXh0RmllbGREZWNvcmF0b3JJbXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjY3NDc1MjgyZjViZTM5
NWFkMTEyYWI1ODg1MTAzYTBhNzFlNzk5YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1RleHRGaWVsZERlY29yYXRvckltcGwuaApAQCAtMCwwICsxLDY0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBUZXh0RmllbGREZWNvcmF0b3JJbXBsX2gKKyNkZWZpbmUgVGV4dEZpZWxkRGVjb3Jh
dG9ySW1wbF9oCisKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgorI2luY2x1ZGUg
IlRleHRGaWVsZERlY29yYXRpb25FbGVtZW50LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitj
bGFzcyBXZWJUZXh0RmllbGREZWNvcmF0b3JDbGllbnQ7CisKK2NsYXNzIFRleHRGaWVsZERlY29y
YXRvckltcGwgOiBwdWJsaWMgV2ViQ29yZTo6VGV4dEZpZWxkRGVjb3JhdG9yIHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgUGFzc093blB0cjxUZXh0RmllbGREZWNvcmF0b3JJbXBsPiBjcmVhdGUoV2Vi
VGV4dEZpZWxkRGVjb3JhdG9yQ2xpZW50Kik7CisgICAgdmlydHVhbCB+VGV4dEZpZWxkRGVjb3Jh
dG9ySW1wbCgpOworCitwcml2YXRlOgorICAgIHZpcnR1YWwgYm9vbCB3aWxsQWRkRGVjb3JhdGlv
blRvKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdl
YkNvcmU6OkNhY2hlZEltYWdlKiBpbWFnZUZvck5vcm1hbFN0YXRlKCkgT1ZFUlJJREU7CisgICAg
dmlydHVhbCBXZWJDb3JlOjpDYWNoZWRJbWFnZSogaW1hZ2VGb3JEaXNhYmxlZFN0YXRlKCkgT1ZF
UlJJREU7CisgICAgdmlydHVhbCBXZWJDb3JlOjpDYWNoZWRJbWFnZSogaW1hZ2VGb3JSZWFkb25s
eVN0YXRlKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUNsaWNrKFdlYkNvcmU6
OkhUTUxJbnB1dEVsZW1lbnQqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERldGFj
aChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50KikgT1ZFUlJJREU7CisKKyAgICBUZXh0RmllbGRE
ZWNvcmF0b3JJbXBsKFdlYlRleHRGaWVsZERlY29yYXRvckNsaWVudCopOworCisgICAgV2ViVGV4
dEZpZWxkRGVjb3JhdG9yQ2xpZW50KiBtX2NsaWVudDsKKyAgICBXZWJDb3JlOjpDYWNoZWRSZXNv
dXJjZUhhbmRsZTxXZWJDb3JlOjpDYWNoZWRJbWFnZT4gbV9jYWNoZWRJbWFnZUZvck5vcm1hbFN0
YXRlOworICAgIFdlYkNvcmU6OkNhY2hlZFJlc291cmNlSGFuZGxlPFdlYkNvcmU6OkNhY2hlZElt
YWdlPiBtX2NhY2hlZEltYWdlRm9yRGlzYWJsZWRTdGF0ZTsKKyAgICBXZWJDb3JlOjpDYWNoZWRS
ZXNvdXJjZUhhbmRsZTxXZWJDb3JlOjpDYWNoZWRJbWFnZT4gbV9jYWNoZWRJbWFnZUZvclJlYWRv
bmx5U3RhdGU7Cit9OworCit9CisKKyNlbmRpZiAvLyBUZXh0RmllbGREZWNvcmF0b3JJbXBsX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCAxYjNhYjU4
OWQ2ZjdjNGU3YWJkYzExMTQ0OWQyN2E4MWJlZjIzMTI1Li4zNzQzZDBjMDI2NzdlN2IyODllZTQx
MWJjMzlmMmFlNjllMDNiZjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmll
d0ltcGwuY3BwCkBAIC0xMDcsNiArMTA3LDcgQEAKICNpbmNsdWRlICJTaGFyZWRHcmFwaGljc0Nv
bnRleHQzRC5oIgogI2luY2x1ZGUgIlNwZWVjaElucHV0Q2xpZW50SW1wbC5oIgogI2luY2x1ZGUg
IlNwZWVjaFJlY29nbml0aW9uQ2xpZW50LmgiCisjaW5jbHVkZSAiVGV4dEZpZWxkRGVjb3JhdG9y
SW1wbC5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAj
aW5jbHVkZSAiVG91Y2hwYWRGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmgiCkBAIC0zMTgsNiAr
MzE5LDEyIEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldFNwZWxsQ2hlY2tDbGllbnQoV2ViU3BlbGxD
aGVja0NsaWVudCogc3BlbGxDaGVja0NsaWVudCkKICAgICBtX3NwZWxsQ2hlY2tDbGllbnQgPSBz
cGVsbENoZWNrQ2xpZW50OwogfQogCit2b2lkIFdlYlZpZXdJbXBsOjphZGRUZXh0RmllbGREZWNv
cmF0b3JDbGllbnQoV2ViVGV4dEZpZWxkRGVjb3JhdG9yQ2xpZW50KiBjbGllbnQpCit7CisgICAg
QVNTRVJUKGNsaWVudCk7CisgICAgbV90ZXh0RmllbGREZWNvcmF0b3JzLmFwcGVuZChUZXh0Rmll
bGREZWNvcmF0b3JJbXBsOjpjcmVhdGUoY2xpZW50KSk7Cit9CisKIFdlYlZpZXdJbXBsOjpXZWJW
aWV3SW1wbChXZWJWaWV3Q2xpZW50KiBjbGllbnQpCiAgICAgOiBtX2NsaWVudChjbGllbnQpCiAg
ICAgLCBtX2F1dG9maWxsQ2xpZW50KDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmll
d0ltcGwuaAppbmRleCAzMDgyZDRlMDEzNWFmZWRiYTI1MzA4OTRjZTYwMDNiZTQyYjg1MWFkLi4y
YTUxYzA0ZDIyMzAyMGMxNDUwMTM0ZWUzZmQ4YjAxZTBiYjUzMTdjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKQEAgLTczLDYgKzczLDcgQEAgY2xhc3MgUG9wdXBD
b250YWluZXI7CiBjbGFzcyBQb3B1cE1lbnVDbGllbnQ7CiBjbGFzcyBSYW5nZTsKIGNsYXNzIFJl
bmRlclRoZW1lOworY2xhc3MgVGV4dEZpZWxkRGVjb3JhdG9yOwogY2xhc3MgV2lkZ2V0OwogfQog
CkBAIC0xNTIsNiArMTUzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXREZXZUb29s
c0FnZW50Q2xpZW50KFdlYkRldlRvb2xzQWdlbnRDbGllbnQqKTsKICAgICB2aXJ0dWFsIHZvaWQg
c2V0UGVybWlzc2lvbkNsaWVudChXZWJQZXJtaXNzaW9uQ2xpZW50Kik7CiAgICAgdmlydHVhbCB2
b2lkIHNldFNwZWxsQ2hlY2tDbGllbnQoV2ViU3BlbGxDaGVja0NsaWVudCopOworICAgIHZpcnR1
YWwgdm9pZCBhZGRUZXh0RmllbGREZWNvcmF0b3JDbGllbnQoV2ViVGV4dEZpZWxkRGVjb3JhdG9y
Q2xpZW50KikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBXZWJTZXR0aW5ncyogc2V0dGluZ3MoKTsK
ICAgICB2aXJ0dWFsIFdlYlN0cmluZyBwYWdlRW5jb2RpbmcoKSBjb25zdDsKICAgICB2aXJ0dWFs
IHZvaWQgc2V0UGFnZUVuY29kaW5nKGNvbnN0IFdlYlN0cmluZyYgZW5jb2RpbmcpOwpAQCAtMzA3
LDYgKzMwOSw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fc3BlbGxDaGVja0NsaWVudDsK
ICAgICB9CiAKKyAgICBjb25zdCBWZWN0b3I8T3duUHRyPFdlYkNvcmU6OlRleHRGaWVsZERlY29y
YXRvcj4gPiYgdGV4dEZpZWxkRGVjb3JhdG9ycygpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dEZpZWxk
RGVjb3JhdG9yczsgfQorCiAgICAgLy8gUmV0dXJucyB0aGUgcGFnZSBvYmplY3QgYXNzb2NpYXRl
ZCB3aXRoIHRoaXMgdmlldy4gVGhpcyBtYXkgYmUgbnVsbCB3aGVuCiAgICAgLy8gdGhlIHBhZ2Ug
aXMgc2h1dHRpbmcgZG93biwgYnV0IHdpbGwgYmUgdmFsaWQgYXQgYWxsIG90aGVyIHRpbWVzLgog
ICAgIFdlYkNvcmU6OlBhZ2UqIHBhZ2UoKSBjb25zdApAQCAtNTc1LDYgKzU3OSw3IEBAIHByaXZh
dGU6CiAgICAgV2ViQXV0b2ZpbGxDbGllbnQqIG1fYXV0b2ZpbGxDbGllbnQ7CiAgICAgV2ViUGVy
bWlzc2lvbkNsaWVudCogbV9wZXJtaXNzaW9uQ2xpZW50OwogICAgIFdlYlNwZWxsQ2hlY2tDbGll
bnQqIG1fc3BlbGxDaGVja0NsaWVudDsKKyAgICBWZWN0b3I8T3duUHRyPFdlYkNvcmU6OlRleHRG
aWVsZERlY29yYXRvcj4gPiBtX3RleHRGaWVsZERlY29yYXRvcnM7CiAKICAgICBDaHJvbWVDbGll
bnRJbXBsIG1fY2hyb21lQ2xpZW50SW1wbDsKICAgICBDb250ZXh0TWVudUNsaWVudEltcGwgbV9j
b250ZXh0TWVudUNsaWVudEltcGw7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135025</attachid>
            <date>2012-04-01 22:26:26 -0700</date>
            <delta_ts>2012-04-02 20:35:01 -0700</delta_ts>
            <desc>Patch 3</desc>
            <filename>bug-82143-20120402142631.patch</filename>
            <type>text/plain</type>
            <size>21382</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyODMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDBiYTdmYWQzMzIyODA0MDJjN2YyMjdhMGJiZjg5NjhhMWQxM2U5NzYuLmEzM2E1OTIxMDQ0Zjhm
Y2ZhNzAyMWJhZmE1YTZkZmQ1YzgwN2VlODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDggQEAKKzIwMTItMDMtMjcgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0gQWRkIFdlYktpdCBBUEkgZm9yIFdlYkNvcmU6OlRl
eHRGaWVsZERlY29yYXRvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODIxNDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBFeHBvc2UgV2ViQ29yZTo6VGV4dEZpZWxkRGVjb3JhdG9yIGFzCisgICAgICAgIFdl
YktpdDo6V2ViVGV4dEZpZWxkRGVjb3JhdG9yQ2xpZW50LiBUaGlzIGNoYW5nZSBhZGQgY2FwYWJp
bGl0eSB0byBhZGQKKyAgICAgICAgZGVjb3JhdGlvbiBidXR0b25zIHRvIHRleHQgZmllbGQgPGlu
cHV0PiBlbGVtZW50cy4KKworICAgICAgICAqIFdlYktpdC5neXA6IEFkZCBuZXcgZmlsZXMuCisg
ICAgICAgICogcHVibGljL1dlYlRleHRGaWVsZERlY29yYXRvckNsaWVudC5oOiBBZGRlZC4KKyAg
ICAgICAgKiBwdWJsaWMvV2ViVmlldy5oOgorICAgICAgICAoV2ViS2l0KTogQWRkIGFkZFRleHRG
aWVsZERlY29yYXRvckNsaWVudCgpLgorICAgICAgICAqIHNyYy9DaHJvbWVDbGllbnRJbXBsLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50SW1wbDo6d2lsbEFkZFRleHRGaWVsZERl
Y29yYXRpb25zVG8pOgorICAgICAgICBDYWxscyB3aWxsQWRkRGVjb3JhdGlvblRvKCkgb2YgVGV4
dEZpZWxkRGVjb3JhdG9yIG9iamVjdHMgb3duZWQgYnkgV2ViVmlld0ltcGwuCisgICAgICAgIChX
ZWJLaXQ6OkNocm9tZUNsaWVudEltcGw6OmFkZFRleHRGaWVsZERlY29yYXRpb25zVG8pOgorICAg
ICAgICBBcHBseSBUZXh0RmllbGREZWNvcmF0aW9uRWxlbWVudDo6ZGVjb3JhdGUoKSBmb3IgdGhl
IHNwZWNpZmllZCBpbnB1dCBlbGVtZW50LgorICAgICAgICAqIHNyYy9DaHJvbWVDbGllbnRJbXBs
Lmg6CisgICAgICAgIChDaHJvbWVDbGllbnRJbXBsKTogQWRkIG5ldyBmdW5jdGlvbiBkZWNsYXJh
dGlvbnMuCisgICAgICAgICogc3JjL1RleHRGaWVsZERlY29yYXRvckltcGwuY3BwOgorICAgICAg
ICBBZGRlZC4gVGhpcyBpcyBhIGJyaWRnZSBvZiBXZWJDb3JlOjpUZXh0RmllbGREZWNvcmF0b3Ig
YW5kCisgICAgICAgIFdlYktpdDo6V2ViVGV4dEZpZWxkRGVjb3JhdG9yQ2xpZW50LiBUaGlzIG93
bnMgQ2FjaGVkSW1hZ2Ugb2JqZWN0cworICAgICAgICBzcGVjZmllZCBieSBXZWJUZXh0RmllbGRE
ZWNvcmF0b3JDbGllbnQuCisgICAgICAgIChXZWJLaXQ6OlRleHRGaWVsZERlY29yYXRvckltcGw6
OlRleHRGaWVsZERlY29yYXRvckltcGwpOgorICAgICAgICAoV2ViS2l0OjpUZXh0RmllbGREZWNv
cmF0b3JJbXBsOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpUZXh0RmllbGREZWNvcmF0b3JJ
bXBsOjp+VGV4dEZpZWxkRGVjb3JhdG9ySW1wbCk6CisgICAgICAgIChXZWJLaXQ6OlRleHRGaWVs
ZERlY29yYXRvckltcGw6OndpbGxBZGREZWNvcmF0aW9uVG8pOgorICAgICAgICAoV2ViS2l0OjpU
ZXh0RmllbGREZWNvcmF0b3JJbXBsOjppbWFnZUZvck5vcm1hbFN0YXRlKToKKyAgICAgICAgKFdl
YktpdDo6VGV4dEZpZWxkRGVjb3JhdG9ySW1wbDo6aW1hZ2VGb3JEaXNhYmxlZFN0YXRlKToKKyAg
ICAgICAgKFdlYktpdDo6VGV4dEZpZWxkRGVjb3JhdG9ySW1wbDo6aW1hZ2VGb3JSZWFkb25seVN0
YXRlKToKKyAgICAgICAgKFdlYktpdDo6VGV4dEZpZWxkRGVjb3JhdG9ySW1wbDo6aGFuZGxlQ2xp
Y2spOgorICAgICAgICAoV2ViS2l0OjpUZXh0RmllbGREZWNvcmF0b3JJbXBsOjp3aWxsRGV0YWNo
KToKKyAgICAgICAgKiBzcmMvVGV4dEZpZWxkRGVjb3JhdG9ySW1wbC5oOiBBZGRlZC4KKyAgICAg
ICAgKFRleHRGaWVsZERlY29yYXRvckltcGwpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjphZGRUZXh0RmllbGREZWNvcmF0b3JD
bGllbnQpOgorICAgICAgICBBZGQgaW1wbGVtZW50YXRpb24gb2YgV2ViVmlldzo6YWRkVGV4dEZp
ZWxkRGVjb3JhdG9yQ2xpZW50KCkuCisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmg6CisgICAg
ICAgIFdlYlZpZXdJbXBsIG93bnMgYSB2ZWN0b3Igb2YgVGV4dEZpZWxkRGVjb3JhdG9ySW1wbC4K
KyAgICAgICAgKFdlYlZpZXdJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnRl
eHRGaWVsZERlY29yYXRvcnMpOgorCiAyMDEyLTA0LTAxICBKb24gTGVlICA8am9ubGVlQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZW5hbWUgbm90aWZpY2F0aW9uIHByb3BlcnRpZXMgYW5kIGZ1bmN0
aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IGU4MTk3YWViY2I0ZWFhZDhiM2Nj
NTUwYTcyYjhmYjJhZGI1YTU1ZWEuLjQ1N2MwNzZhOTM3ZmI2ZDIwN2FjOTVlMDUxYjMxMDVmNDJh
ZjE0MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTI1OSw2ICsyNTksNyBAQAog
ICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVGV4dENoZWNraW5nQ29tcGxldGlvbi5oJywKICAg
ICAgICAgICAgICAgICAncHVibGljL1dlYlRleHRDaGVja2luZ1Jlc3VsdC5oJywKICAgICAgICAg
ICAgICAgICAncHVibGljL1dlYlRleHREaXJlY3Rpb24uaCcsCisgICAgICAgICAgICAgICAgJ3B1
YmxpYy9XZWJUZXh0RmllbGREZWNvcmF0b3JDbGllbnQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1
YmxpYy9XZWJUZXh0SW5wdXRUeXBlLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVGV4
dFJ1bi5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlVSTExvYWRlck9wdGlvbnMuaCcs
CkBAIC00NjMsNiArNDY0LDggQEAKICAgICAgICAgICAgICAgICAnc3JjL1N0b3JhZ2VJbmZvQ2hy
b21pdW0uY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1N0b3JhZ2VOYW1lc3BhY2VQcm94eS5j
cHAnLAogICAgICAgICAgICAgICAgICdzcmMvU3RvcmFnZU5hbWVzcGFjZVByb3h5LmgnLAorICAg
ICAgICAgICAgICAgICdzcmMvVGV4dEZpZWxkRGVjb3JhdG9ySW1wbC5oJywKKyAgICAgICAgICAg
ICAgICAnc3JjL1RleHRGaWVsZERlY29yYXRvckltcGwuY3BwJywKICAgICAgICAgICAgICAgICAn
c3JjL1VzZXJNZWRpYUNsaWVudEltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9Vc2VyTWVk
aWFDbGllbnRJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJUZXh0Q2hlY2tpbmdD
b21wbGV0aW9uSW1wbC5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYlRleHRGaWVsZERlY29yYXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViVGV4dEZpZWxkRGVjb3JhdG9yQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2E1YWMw
MzMwZTVhNWMyZDUwZDczM2NiOWUyNWFhM2EwMTMxNTRiOAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRleHRGaWVsZERlY29yYXRvckNsaWVudC5o
CkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlRleHRGaWVsZERlY29yYXRvckNsaWVudF9oCisj
ZGVmaW5lIFdlYlRleHRGaWVsZERlY29yYXRvckNsaWVudF9oCisKKyNpbmNsdWRlICJwbGF0Zm9y
bS9XZWJDU3RyaW5nLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJJbnB1dEVs
ZW1lbnQ7CisKK2NsYXNzIFdlYlRleHRGaWVsZERlY29yYXRvckNsaWVudCB7CitwdWJsaWM6Cisg
ICAgLy8gVGhlIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gdHJ1ZSBpZiB0aGUgc3BlY2lmaWVkIGlu
cHV0IGVsZW1lbnQgc2hvdWxkCisgICAgLy8gaGF2ZSBhIGRlY29yYXRpb24gaWNvbi4gVGhpcyBm
dW5jdGlvbiBpcyBjYWxsZWQgd2hlbmV2ZXIgYSB0ZXh0IGZpZWxkIGlzCisgICAgLy8gY3JlYXRl
ZC4KKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQWRkRGVjb3JhdGlvblRvKGNvbnN0IFdlYklucHV0
RWxlbWVudCYpID0gMDsKKworICAgIC8vIEltYWdlIHJlc291cmNlIG5hbWUgZm9yIHRoZSBub3Jt
YWwgc3RhdGUuIFRoZSBpbWFnZSBpcyBzdHJldGNoZWQgdG8KKyAgICAvLyBmb250LXNpemUgeCBm
b250LXNpemUgc3F1YXJlLiBUaGUgZnVuY3Rpb24gbXVzdCByZXR1cm4gYW4gZXhpc3RpbmcKKyAg
ICAvLyByZXNvdXJjZSBuYW1lLgorICAgIHZpcnR1YWwgV2ViQ1N0cmluZyBpbWFnZU5hbWVGb3JO
b3JtYWxTdGF0ZSgpID0gMDsKKyAgICAvLyBJbWFnZSByZXNvdXJjZSBuYW1lIGZvciB0aGUgZGlz
YWJsZWQgc3RhdGUuIElmIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBhbgorICAgIC8vIGVtcHR5IHN0
cmluZywgaW1hZ2VOYW1lRm9yTm9ybWFsU3RhdGUoKSBpcyB1c2VkIGV2ZW4gZm9yIHRoZSBkaXNh
YmxlZAorICAgIC8vIHN0YXRlLgorICAgIHZpcnR1YWwgV2ViQ1N0cmluZyBpbWFnZU5hbWVGb3JE
aXNhYmxlZFN0YXRlKCkgPSAwOworICAgIC8vIEltYWdlIHJlc291cmNlIG5hbWUgZm9yIHRoZSBk
aXNhYmxlZCBzdGF0ZS4gSWYgdGhpcyBmdW5jdGlvbiByZXR1cm5zIGFuCisgICAgLy8gZW1wdHkg
c3RyaW5nLCB0aGUgaW1hZ2Ugc2FtZSBhcyBpbWFnZU5hbWVGb3JEaXNhYmxlZFN0YXRlKCkgaXMg
dXNlZC4KKyAgICB2aXJ0dWFsIFdlYkNTdHJpbmcgaW1hZ2VOYW1lRm9yUmVhZE9ubHlTdGF0ZSgp
ID0gMDsKKworICAgIC8vIFRoaXMgaXMgY2FsbGVkIHdoZW4gdGhlIGRlY29yYXRpb24gaWNvbiBp
cyBjbGlja2VkLgorICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVDbGljayhXZWJJbnB1dEVsZW1lbnQm
KSA9IDA7CisgICAgLy8gVGhpcyBpcyBjYWxsZWQgd2hlbiB0aGUgaW5wdXQgZWxlbWVudCBsb3Nl
cyBpdHMgcmVuZGVyZXIuIEFuCisgICAgLy8gaW1wbGVtZW50YXRpb24gb2YgdGhpcyBmdW5jdGlv
biBzaG91bGQgbm90IGRvIHNvbWV0aGluZyB3aGljaCB1cGRhdGVzCisgICAgLy8gc3RhdGUgb2Yg
V2ViS2l0IG9iamVjdHMuCisgICAgdmlydHVhbCB2b2lkIHdpbGxEZXRhY2goY29uc3QgV2ViSW5w
dXRFbGVtZW50JikgPSAwOworCisgICAgdmlydHVhbCB+V2ViVGV4dEZpZWxkRGVjb3JhdG9yQ2xp
ZW50KCkgeyB9Cit9OworCit9CisKKyNlbmRpZiAvLyBXZWJUZXh0RmllbGREZWNvcmF0b3JDbGll
bnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlldy5o
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlldy5oCmluZGV4IDRkOTk1ZTBm
ZmI1MzY2ZWI1ZjU2ZDE1YWU5YjdmNjdkYzk5Yjc1MTQuLjcyOWY1MTY3NzllMTc3ODlkZWI4ZDdl
OWUxNzQwMDM5Njk3OTk1ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3
LmgKQEAgLTUzLDYgKzUzLDcgQEAgY2xhc3MgV2ViUGVybWlzc2lvbkNsaWVudDsKIGNsYXNzIFdl
YlNldHRpbmdzOwogY2xhc3MgV2ViU3BlbGxDaGVja0NsaWVudDsKIGNsYXNzIFdlYlN0cmluZzsK
K2NsYXNzIFdlYlRleHRGaWVsZERlY29yYXRvckNsaWVudDsKIGNsYXNzIFdlYlZpZXdDbGllbnQ7
CiBzdHJ1Y3QgV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnM7CiBzdHJ1Y3QgV2ViTWVkaWFQ
bGF5ZXJBY3Rpb247CkBAIC0xMDQsNiArMTA1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBzZXREZXZUb29sc0FnZW50Q2xpZW50KFdlYkRldlRvb2xzQWdlbnRDbGllbnQqKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHNldFBlcm1pc3Npb25DbGllbnQoV2ViUGVybWlzc2lvbkNsaWVudCop
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0U3BlbGxDaGVja0NsaWVudChXZWJTcGVsbENoZWNr
Q2xpZW50KikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhZGRUZXh0RmllbGREZWNvcmF0b3JDbGll
bnQoV2ViVGV4dEZpZWxkRGVjb3JhdG9yQ2xpZW50KikgPSAwOwogCiAKICAgICAvLyBPcHRpb25z
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVu
dEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5j
cHAKaW5kZXggMjMwOGIwYWU4YTY5MzQ0MDg3NmU0YjlhZDdkMGM3YjgyNWZmZjE2Yi4uMDY4MjI4
NWFmOGYzYzE2YThiZTE4M2NiMmM1Y2Y2MmQ2NGFhZmU3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAKQEAgLTUyLDYgKzUyLDcgQEAKICNp
bmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJHZW9sb2NhdGlvbi5oIgogI2luY2x1ZGUg
IkdyYXBoaWNzTGF5ZXIuaCIKKyNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIklj
b24uaCIKQEAgLTY4LDYgKzY5LDcgQEAKICNpbmNsdWRlICJTZWFyY2hQb3B1cE1lbnVDaHJvbWl1
bS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIK
KyNpbmNsdWRlICJUZXh0RmllbGREZWNvcmF0aW9uRWxlbWVudC5oIgogI2lmIFVTRShWOCkKICNp
bmNsdWRlICJWOFByb3h5LmgiCiAjZW5kaWYKQEAgLTk4NSw2ICs5ODcsMjkgQEAgUGFzc1JlZlB0
cjxTZWFyY2hQb3B1cE1lbnU+IENocm9tZUNsaWVudEltcGw6OmNyZWF0ZVNlYXJjaFBvcHVwTWVu
dShQb3B1cE1lbnVDbGkKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNlYXJjaFBvcHVwTWVudUNo
cm9taXVtKGNsaWVudCkpOwogfQogCitib29sIENocm9tZUNsaWVudEltcGw6OndpbGxBZGRUZXh0
RmllbGREZWNvcmF0aW9uc1RvKEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0KQoreworICAgIEFTU0VS
VChpbnB1dCk7CisgICAgY29uc3QgVmVjdG9yPE93blB0cjxUZXh0RmllbGREZWNvcmF0b3I+ID4m
IGRlY29yYXRvcnMgPSBtX3dlYlZpZXctPnRleHRGaWVsZERlY29yYXRvcnMoKTsKKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgZGVjb3JhdG9ycy5zaXplKCk7ICsraSkgeworICAgICAgICBp
ZiAoZGVjb3JhdG9yc1tpXS0+d2lsbEFkZERlY29yYXRpb25UbyhpbnB1dCkpCisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIENocm9t
ZUNsaWVudEltcGw6OmFkZFRleHRGaWVsZERlY29yYXRpb25zVG8oSFRNTElucHV0RWxlbWVudCog
aW5wdXQpCit7CisgICAgQVNTRVJUKHdpbGxBZGRUZXh0RmllbGREZWNvcmF0aW9uc1RvKGlucHV0
KSk7CisgICAgY29uc3QgVmVjdG9yPE93blB0cjxUZXh0RmllbGREZWNvcmF0b3I+ID4mIGRlY29y
YXRvcnMgPSBtX3dlYlZpZXctPnRleHRGaWVsZERlY29yYXRvcnMoKTsKKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgZGVjb3JhdG9ycy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAoIWRl
Y29yYXRvcnNbaV0tPndpbGxBZGREZWNvcmF0aW9uVG8oaW5wdXQpKQorICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgIFJlZlB0cjxUZXh0RmllbGREZWNvcmF0aW9uRWxlbWVudD4gZGVjb3Jh
dGlvbiA9IFRleHRGaWVsZERlY29yYXRpb25FbGVtZW50OjpjcmVhdGUoaW5wdXQtPmRvY3VtZW50
KCksIGRlY29yYXRvcnNbaV0uZ2V0KCkpOworICAgICAgICBkZWNvcmF0aW9uLT5kZWNvcmF0ZShp
bnB1dCk7CisgICAgfQorfQorCiBib29sIENocm9tZUNsaWVudEltcGw6OnNob3VsZFJ1bk1vZGFs
RGlhbG9nRHVyaW5nUGFnZURpc21pc3NhbChjb25zdCBEaWFsb2dUeXBlJiBkaWFsb2dUeXBlLCBj
b25zdCBTdHJpbmcmIGRpYWxvZ01lc3NhZ2UsIEZyYW1lTG9hZGVyOjpQYWdlRGlzbWlzc2FsVHlw
ZSBkaXNtaXNzYWxUeXBlKSBjb25zdAogewogICAgIGNvbnN0IGNoYXIqIGtEaWFsb2dzW10gPSB7
ImFsZXJ0IiwgImNvbmZpcm0iLCAicHJvbXB0IiwgInNob3dNb2RhbERpYWxvZyJ9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5oIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5oCmluZGV4IDQ2MWRiNDFh
NDQ5YjNiOTVkZGRiNjM1NTljMDdmNTBkOTQ3NzFiZmQuLjYyNjBhOTdkZDNkN2RlN2E4ZDEyYWIw
NjEwMjllZjc2MGQwN2IzMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0Nocm9tZUNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJv
bWVDbGllbnRJbXBsLmgKQEAgLTE5NSw2ICsxOTUsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBi
b29sIGhhc09wZW5lZFBvcHVwKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBQYXNzUmVm
UHRyPFdlYkNvcmU6OlBvcHVwTWVudT4gY3JlYXRlUG9wdXBNZW51KFdlYkNvcmU6OlBvcHVwTWVu
dUNsaWVudCopIGNvbnN0OwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTZWFyY2hQ
b3B1cE1lbnU+IGNyZWF0ZVNlYXJjaFBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQq
KSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgd2lsbEFkZFRleHRGaWVsZERlY29yYXRpb25zVG8o
V2ViQ29yZTo6SFRNTElucHV0RWxlbWVudCopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBh
ZGRUZXh0RmllbGREZWNvcmF0aW9uc1RvKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQqKSBPVkVS
UklERTsKIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRSdW5Nb2RhbERpYWxvZ0R1cmluZ1BhZ2VE
aXNtaXNzYWwoY29uc3QgRGlhbG9nVHlwZSYsIGNvbnN0IFN0cmluZyYgZGlhbG9nTWVzc2FnZSwg
V2ViQ29yZTo6RnJhbWVMb2FkZXI6OlBhZ2VEaXNtaXNzYWxUeXBlKSBjb25zdDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvVGV4dEZpZWxkRGVjb3JhdG9ySW1wbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9UZXh0RmllbGREZWNvcmF0b3JJbXBsLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mZWY2NmEyMTM1MjY4NWY5YjQzOTQ4OGZiYzYwMGJmZDc2NzYyOTdkCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvVGV4dEZpZWxkRGVj
b3JhdG9ySW1wbC5jcHAKQEAgLTAsMCArMSwxMTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiVGV4dEZpZWxkRGVjb3JhdG9ySW1wbC5oIgorCisjaW5jbHVkZSAiQ2FjaGVkSW1hZ2Uu
aCIKKyNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCisjaW5jbHVkZSAiV2ViSW5wdXRFbGVt
ZW50LmgiCisjaW5jbHVkZSAiV2ViVGV4dEZpZWxkRGVjb3JhdG9yQ2xpZW50LmgiCisKK25hbWVz
cGFjZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworaW5saW5lIFRleHRG
aWVsZERlY29yYXRvckltcGw6OlRleHRGaWVsZERlY29yYXRvckltcGwoV2ViVGV4dEZpZWxkRGVj
b3JhdG9yQ2xpZW50KiBjbGllbnQpCisgICAgOiBtX2NsaWVudChjbGllbnQpCit7CisgICAgQVNT
RVJUKGNsaWVudCk7Cit9CisKK1Bhc3NPd25QdHI8VGV4dEZpZWxkRGVjb3JhdG9ySW1wbD4gVGV4
dEZpZWxkRGVjb3JhdG9ySW1wbDo6Y3JlYXRlKFdlYlRleHRGaWVsZERlY29yYXRvckNsaWVudCog
Y2xpZW50KQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcgVGV4dEZpZWxkRGVjb3JhdG9ySW1w
bChjbGllbnQpKTsKK30KKworVGV4dEZpZWxkRGVjb3JhdG9ySW1wbDo6flRleHRGaWVsZERlY29y
YXRvckltcGwoKQoreworfQorCitib29sIFRleHRGaWVsZERlY29yYXRvckltcGw6OndpbGxBZGRE
ZWNvcmF0aW9uVG8oSFRNTElucHV0RWxlbWVudCogaW5wdXQpCit7CisgICAgQVNTRVJUKGlucHV0
KTsKKyAgICByZXR1cm4gbV9jbGllbnQtPnNob3VsZEFkZERlY29yYXRpb25UbyhXZWJJbnB1dEVs
ZW1lbnQoaW5wdXQpKTsKK30KKworQ2FjaGVkSW1hZ2UqIFRleHRGaWVsZERlY29yYXRvckltcGw6
OmltYWdlRm9yTm9ybWFsU3RhdGUoKQoreworICAgIGlmICghbV9jYWNoZWRJbWFnZUZvck5vcm1h
bFN0YXRlKSB7CisgICAgICAgIFdlYkNTdHJpbmcgaW1hZ2VOYW1lID0gbV9jbGllbnQtPmltYWdl
TmFtZUZvck5vcm1hbFN0YXRlKCk7CisgICAgICAgIEFTU0VSVCghaW1hZ2VOYW1lLmlzRW1wdHko
KSk7CisgICAgICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVz
b3VyY2UoaW1hZ2VOYW1lLmRhdGEoKSk7CisgICAgICAgIG1fY2FjaGVkSW1hZ2VGb3JOb3JtYWxT
dGF0ZSA9IG5ldyBDYWNoZWRJbWFnZShpbWFnZS5nZXQoKSk7CisgICAgICAgIC8vIFRoZSBDYWNo
ZWRJbWFnZSBvd25zIGEgUmVmUHRyIHRvIHRoZSBJbWFnZS4KKyAgICB9CisgICAgcmV0dXJuIG1f
Y2FjaGVkSW1hZ2VGb3JOb3JtYWxTdGF0ZS5nZXQoKTsKK30KKworQ2FjaGVkSW1hZ2UqIFRleHRG
aWVsZERlY29yYXRvckltcGw6OmltYWdlRm9yRGlzYWJsZWRTdGF0ZSgpCit7CisgICAgaWYgKCFt
X2NhY2hlZEltYWdlRm9yRGlzYWJsZWRTdGF0ZSkgeworICAgICAgICBXZWJDU3RyaW5nIGltYWdl
TmFtZSA9IG1fY2xpZW50LT5pbWFnZU5hbWVGb3JEaXNhYmxlZFN0YXRlKCk7CisgICAgICAgIGlm
IChpbWFnZU5hbWUuaXNFbXB0eSgpKQorICAgICAgICAgICAgbV9jYWNoZWRJbWFnZUZvckRpc2Fi
bGVkU3RhdGUgPSBpbWFnZUZvck5vcm1hbFN0YXRlKCk7CisgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZShp
bWFnZU5hbWUuZGF0YSgpKTsKKyAgICAgICAgICAgIG1fY2FjaGVkSW1hZ2VGb3JEaXNhYmxlZFN0
YXRlID0gbmV3IENhY2hlZEltYWdlKGltYWdlLmdldCgpKTsKKyAgICAgICAgfQorICAgIH0KKyAg
ICByZXR1cm4gbV9jYWNoZWRJbWFnZUZvckRpc2FibGVkU3RhdGUuZ2V0KCk7Cit9CisKK0NhY2hl
ZEltYWdlKiBUZXh0RmllbGREZWNvcmF0b3JJbXBsOjppbWFnZUZvclJlYWRvbmx5U3RhdGUoKQor
eworICAgIGlmICghbV9jYWNoZWRJbWFnZUZvclJlYWRvbmx5U3RhdGUpIHsKKyAgICAgICAgV2Vi
Q1N0cmluZyBpbWFnZU5hbWUgPSBtX2NsaWVudC0+aW1hZ2VOYW1lRm9yUmVhZE9ubHlTdGF0ZSgp
OworICAgICAgICBpZiAoaW1hZ2VOYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIG1fY2FjaGVk
SW1hZ2VGb3JEaXNhYmxlZFN0YXRlID0gaW1hZ2VGb3JEaXNhYmxlZFN0YXRlKCk7CisgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IEltYWdlOjpsb2FkUGxh
dGZvcm1SZXNvdXJjZShpbWFnZU5hbWUuZGF0YSgpKTsKKyAgICAgICAgICAgIG1fY2FjaGVkSW1h
Z2VGb3JSZWFkb25seVN0YXRlID0gbmV3IENhY2hlZEltYWdlKGltYWdlLmdldCgpKTsKKyAgICAg
ICAgfQorICAgIH0KKyAgICByZXR1cm4gbV9jYWNoZWRJbWFnZUZvclJlYWRvbmx5U3RhdGUuZ2V0
KCk7Cit9CisKK3ZvaWQgVGV4dEZpZWxkRGVjb3JhdG9ySW1wbDo6aGFuZGxlQ2xpY2soSFRNTElu
cHV0RWxlbWVudCogaW5wdXQpCit7CisgICAgQVNTRVJUKGlucHV0KTsKKyAgICBXZWJJbnB1dEVs
ZW1lbnQgd2ViSW5wdXQoaW5wdXQpOworICAgIG1fY2xpZW50LT5oYW5kbGVDbGljayh3ZWJJbnB1
dCk7Cit9CisKK3ZvaWQgVGV4dEZpZWxkRGVjb3JhdG9ySW1wbDo6d2lsbERldGFjaChIVE1MSW5w
dXRFbGVtZW50KiBpbnB1dCkKK3sKKyAgICBBU1NFUlQoaW5wdXQpOworICAgIFdlYklucHV0RWxl
bWVudCB3ZWJJbnB1dChpbnB1dCk7CisgICAgbV9jbGllbnQtPndpbGxEZXRhY2god2ViSW5wdXQp
OworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9UZXh0Rmll
bGREZWNvcmF0b3JJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9UZXh0RmllbGRE
ZWNvcmF0b3JJbXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjY3NDc1MjgyZjViZTM5NWFkMTEyYWI1ODg1MTAz
YTBhNzFlNzk5YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1RleHRGaWVsZERlY29yYXRvckltcGwuaApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlv
bi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBUZXh0Rmll
bGREZWNvcmF0b3JJbXBsX2gKKyNkZWZpbmUgVGV4dEZpZWxkRGVjb3JhdG9ySW1wbF9oCisKKyNp
bmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgorI2luY2x1ZGUgIlRleHRGaWVsZERlY29y
YXRpb25FbGVtZW50LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJUZXh0Rmll
bGREZWNvcmF0b3JDbGllbnQ7CisKK2NsYXNzIFRleHRGaWVsZERlY29yYXRvckltcGwgOiBwdWJs
aWMgV2ViQ29yZTo6VGV4dEZpZWxkRGVjb3JhdG9yIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFz
c093blB0cjxUZXh0RmllbGREZWNvcmF0b3JJbXBsPiBjcmVhdGUoV2ViVGV4dEZpZWxkRGVjb3Jh
dG9yQ2xpZW50Kik7CisgICAgdmlydHVhbCB+VGV4dEZpZWxkRGVjb3JhdG9ySW1wbCgpOworCitw
cml2YXRlOgorICAgIHZpcnR1YWwgYm9vbCB3aWxsQWRkRGVjb3JhdGlvblRvKFdlYkNvcmU6OkhU
TUxJbnB1dEVsZW1lbnQqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkNhY2hlZElt
YWdlKiBpbWFnZUZvck5vcm1hbFN0YXRlKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBXZWJDb3Jl
OjpDYWNoZWRJbWFnZSogaW1hZ2VGb3JEaXNhYmxlZFN0YXRlKCkgT1ZFUlJJREU7CisgICAgdmly
dHVhbCBXZWJDb3JlOjpDYWNoZWRJbWFnZSogaW1hZ2VGb3JSZWFkb25seVN0YXRlKCkgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUNsaWNrKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1l
bnQqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERldGFjaChXZWJDb3JlOjpIVE1M
SW5wdXRFbGVtZW50KikgT1ZFUlJJREU7CisKKyAgICBUZXh0RmllbGREZWNvcmF0b3JJbXBsKFdl
YlRleHRGaWVsZERlY29yYXRvckNsaWVudCopOworCisgICAgV2ViVGV4dEZpZWxkRGVjb3JhdG9y
Q2xpZW50KiBtX2NsaWVudDsKKyAgICBXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUhhbmRsZTxXZWJD
b3JlOjpDYWNoZWRJbWFnZT4gbV9jYWNoZWRJbWFnZUZvck5vcm1hbFN0YXRlOworICAgIFdlYkNv
cmU6OkNhY2hlZFJlc291cmNlSGFuZGxlPFdlYkNvcmU6OkNhY2hlZEltYWdlPiBtX2NhY2hlZElt
YWdlRm9yRGlzYWJsZWRTdGF0ZTsKKyAgICBXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUhhbmRsZTxX
ZWJDb3JlOjpDYWNoZWRJbWFnZT4gbV9jYWNoZWRJbWFnZUZvclJlYWRvbmx5U3RhdGU7Cit9Owor
Cit9CisKKyNlbmRpZiAvLyBUZXh0RmllbGREZWNvcmF0b3JJbXBsX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCA2MWU4MGE4YjgwODEwNGRmYjZmNjg2
ZjkwNTQxZGUwZmFmOGY1N2VkLi5jNDVhNTIyNDE1NWYxYTc3YTgxZWYyMzA0YjFlOTE3YmQ4Yzlh
ZmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC0x
MDgsNiArMTA4LDcgQEAKICNpbmNsdWRlICJTaGFyZWRHcmFwaGljc0NvbnRleHQzRC5oIgogI2lu
Y2x1ZGUgIlNwZWVjaElucHV0Q2xpZW50SW1wbC5oIgogI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0
aW9uQ2xpZW50LmgiCisjaW5jbHVkZSAiVGV4dEZpZWxkRGVjb3JhdG9ySW1wbC5oIgogI2luY2x1
ZGUgIlRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSAiVG91Y2hw
YWRGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmgiCkBAIC0zMjAsNiArMzIxLDEyIEBAIHZvaWQg
V2ViVmlld0ltcGw6OnNldFNwZWxsQ2hlY2tDbGllbnQoV2ViU3BlbGxDaGVja0NsaWVudCogc3Bl
bGxDaGVja0NsaWVudCkKICAgICBtX3NwZWxsQ2hlY2tDbGllbnQgPSBzcGVsbENoZWNrQ2xpZW50
OwogfQogCit2b2lkIFdlYlZpZXdJbXBsOjphZGRUZXh0RmllbGREZWNvcmF0b3JDbGllbnQoV2Vi
VGV4dEZpZWxkRGVjb3JhdG9yQ2xpZW50KiBjbGllbnQpCit7CisgICAgQVNTRVJUKGNsaWVudCk7
CisgICAgbV90ZXh0RmllbGREZWNvcmF0b3JzLmFwcGVuZChUZXh0RmllbGREZWNvcmF0b3JJbXBs
OjpjcmVhdGUoY2xpZW50KSk7Cit9CisKIFdlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbChXZWJWaWV3
Q2xpZW50KiBjbGllbnQpCiAgICAgOiBtX2NsaWVudChjbGllbnQpCiAgICAgLCBtX2F1dG9maWxs
Q2xpZW50KDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAppbmRleCA5
OWEwNGI4YzYzMDExMjVjM2Y4NGZhOTY2YTMzMWU1NTkzNjczYjA4Li5mYTE5MDE2ZDhjYjQyNWU1
OTIyNGY1M2U3ZTJkNjNkMDQwZTEzODJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlZpZXdJbXBsLmgKQEAgLTczLDYgKzczLDcgQEAgY2xhc3MgUG9wdXBDb250YWluZXI7CiBjbGFz
cyBQb3B1cE1lbnVDbGllbnQ7CiBjbGFzcyBSYW5nZTsKIGNsYXNzIFJlbmRlclRoZW1lOworY2xh
c3MgVGV4dEZpZWxkRGVjb3JhdG9yOwogY2xhc3MgV2lkZ2V0OwogfQogCkBAIC0xNTIsNiArMTUz
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXREZXZUb29sc0FnZW50Q2xpZW50KFdl
YkRldlRvb2xzQWdlbnRDbGllbnQqKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0UGVybWlzc2lvbkNs
aWVudChXZWJQZXJtaXNzaW9uQ2xpZW50Kik7CiAgICAgdmlydHVhbCB2b2lkIHNldFNwZWxsQ2hl
Y2tDbGllbnQoV2ViU3BlbGxDaGVja0NsaWVudCopOworICAgIHZpcnR1YWwgdm9pZCBhZGRUZXh0
RmllbGREZWNvcmF0b3JDbGllbnQoV2ViVGV4dEZpZWxkRGVjb3JhdG9yQ2xpZW50KikgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCBXZWJTZXR0aW5ncyogc2V0dGluZ3MoKTsKICAgICB2aXJ0dWFsIFdl
YlN0cmluZyBwYWdlRW5jb2RpbmcoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0UGFnZUVu
Y29kaW5nKGNvbnN0IFdlYlN0cmluZyYgZW5jb2RpbmcpOwpAQCAtMzA3LDYgKzMwOSw4IEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIG1fc3BlbGxDaGVja0NsaWVudDsKICAgICB9CiAKKyAgICBj
b25zdCBWZWN0b3I8T3duUHRyPFdlYkNvcmU6OlRleHRGaWVsZERlY29yYXRvcj4gPiYgdGV4dEZp
ZWxkRGVjb3JhdG9ycygpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dEZpZWxkRGVjb3JhdG9yczsgfQor
CiAgICAgLy8gUmV0dXJucyB0aGUgcGFnZSBvYmplY3QgYXNzb2NpYXRlZCB3aXRoIHRoaXMgdmll
dy4gVGhpcyBtYXkgYmUgbnVsbCB3aGVuCiAgICAgLy8gdGhlIHBhZ2UgaXMgc2h1dHRpbmcgZG93
biwgYnV0IHdpbGwgYmUgdmFsaWQgYXQgYWxsIG90aGVyIHRpbWVzLgogICAgIFdlYkNvcmU6OlBh
Z2UqIHBhZ2UoKSBjb25zdApAQCAtNTg4LDYgKzU5Miw3IEBAIHByaXZhdGU6CiAgICAgV2ViQXV0
b2ZpbGxDbGllbnQqIG1fYXV0b2ZpbGxDbGllbnQ7CiAgICAgV2ViUGVybWlzc2lvbkNsaWVudCog
bV9wZXJtaXNzaW9uQ2xpZW50OwogICAgIFdlYlNwZWxsQ2hlY2tDbGllbnQqIG1fc3BlbGxDaGVj
a0NsaWVudDsKKyAgICBWZWN0b3I8T3duUHRyPFdlYkNvcmU6OlRleHRGaWVsZERlY29yYXRvcj4g
PiBtX3RleHRGaWVsZERlY29yYXRvcnM7CiAKICAgICBDaHJvbWVDbGllbnRJbXBsIG1fY2hyb21l
Q2xpZW50SW1wbDsKICAgICBDb250ZXh0TWVudUNsaWVudEltcGwgbV9jb250ZXh0TWVudUNsaWVu
dEltcGw7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135267</attachid>
            <date>2012-04-02 20:35:10 -0700</date>
            <delta_ts>2012-04-02 21:24:53 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-82143-20120403123507.patch</filename>
            <type>text/plain</type>
            <size>21768</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyOTc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDVlYmY3ZTZjMzRiMGYzNWZjZGIwZDA3MDhiYWZkNWQ1NjgzZDI1ODEuLmZiNTBlMDc3ODFmNTMw
ZWE5MmEwMDk1ZDFkOWZhNGU0NThhYzk3MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDggQEAKKzIwMTItMDQtMDIgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0gQWRkIFdlYktpdCBBUEkgZm9yIFdlYkNvcmU6OlRl
eHRGaWVsZERlY29yYXRvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODIxNDMKKworICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCisK
KyAgICAgICAgRXhwb3NlIFdlYkNvcmU6OlRleHRGaWVsZERlY29yYXRvciBhcworICAgICAgICBX
ZWJLaXQ6OldlYlRleHRGaWVsZERlY29yYXRvckNsaWVudC4gVGhpcyBjaGFuZ2UgYWRkIGNhcGFi
aWxpdHkgdG8gYWRkCisgICAgICAgIGRlY29yYXRpb24gYnV0dG9ucyB0byB0ZXh0IGZpZWxkIDxp
bnB1dD4gZWxlbWVudHMuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwOiBBZGQgbmV3IGZpbGVzLgor
ICAgICAgICAqIHB1YmxpYy9XZWJUZXh0RmllbGREZWNvcmF0b3JDbGllbnQuaDogQWRkZWQuCisg
ICAgICAgICogcHVibGljL1dlYlZpZXcuaDoKKyAgICAgICAgKFdlYktpdCk6IEFkZCBhZGRUZXh0
RmllbGREZWNvcmF0b3JDbGllbnQoKS4KKyAgICAgICAgKiBzcmMvQ2hyb21lQ2xpZW50SW1wbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudEltcGw6OndpbGxBZGRUZXh0RmllbGRE
ZWNvcmF0aW9uc1RvKToKKyAgICAgICAgQ2FsbHMgd2lsbEFkZERlY29yYXRpb25UbygpIG9mIFRl
eHRGaWVsZERlY29yYXRvciBvYmplY3RzIG93bmVkIGJ5IFdlYlZpZXdJbXBsLgorICAgICAgICAo
V2ViS2l0OjpDaHJvbWVDbGllbnRJbXBsOjphZGRUZXh0RmllbGREZWNvcmF0aW9uc1RvKToKKyAg
ICAgICAgQXBwbHkgVGV4dEZpZWxkRGVjb3JhdGlvbkVsZW1lbnQ6OmRlY29yYXRlKCkgZm9yIHRo
ZSBzcGVjaWZpZWQgaW5wdXQgZWxlbWVudC4KKyAgICAgICAgKiBzcmMvQ2hyb21lQ2xpZW50SW1w
bC5oOgorICAgICAgICAoQ2hyb21lQ2xpZW50SW1wbCk6IEFkZCBuZXcgZnVuY3Rpb24gZGVjbGFy
YXRpb25zLgorICAgICAgICAqIHNyYy9UZXh0RmllbGREZWNvcmF0b3JJbXBsLmNwcDoKKyAgICAg
ICAgQWRkZWQuIFRoaXMgaXMgYSBicmlkZ2Ugb2YgV2ViQ29yZTo6VGV4dEZpZWxkRGVjb3JhdG9y
IGFuZAorICAgICAgICBXZWJLaXQ6OldlYlRleHRGaWVsZERlY29yYXRvckNsaWVudC4gVGhpcyBv
d25zIENhY2hlZEltYWdlIG9iamVjdHMKKyAgICAgICAgc3BlY2ZpZWQgYnkgV2ViVGV4dEZpZWxk
RGVjb3JhdG9yQ2xpZW50LgorICAgICAgICAoV2ViS2l0OjpUZXh0RmllbGREZWNvcmF0b3JJbXBs
OjpUZXh0RmllbGREZWNvcmF0b3JJbXBsKToKKyAgICAgICAgKFdlYktpdDo6VGV4dEZpZWxkRGVj
b3JhdG9ySW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6VGV4dEZpZWxkRGVjb3JhdG9y
SW1wbDo6flRleHRGaWVsZERlY29yYXRvckltcGwpOgorICAgICAgICAoV2ViS2l0OjpUZXh0Rmll
bGREZWNvcmF0b3JJbXBsOjp3aWxsQWRkRGVjb3JhdGlvblRvKToKKyAgICAgICAgKFdlYktpdDo6
VGV4dEZpZWxkRGVjb3JhdG9ySW1wbDo6aW1hZ2VGb3JOb3JtYWxTdGF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlRleHRGaWVsZERlY29yYXRvckltcGw6OmltYWdlRm9yRGlzYWJsZWRTdGF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlRleHRGaWVsZERlY29yYXRvckltcGw6OmltYWdlRm9yUmVhZG9ubHlT
dGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlRleHRGaWVsZERlY29yYXRvckltcGw6OmhhbmRsZUNs
aWNrKToKKyAgICAgICAgKFdlYktpdDo6VGV4dEZpZWxkRGVjb3JhdG9ySW1wbDo6d2lsbERldGFj
aCk6CisgICAgICAgICogc3JjL1RleHRGaWVsZERlY29yYXRvckltcGwuaDogQWRkZWQuCisgICAg
ICAgIChUZXh0RmllbGREZWNvcmF0b3JJbXBsKToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6YWRkVGV4dEZpZWxkRGVjb3JhdG9y
Q2xpZW50KToKKyAgICAgICAgQWRkIGltcGxlbWVudGF0aW9uIG9mIFdlYlZpZXc6OmFkZFRleHRG
aWVsZERlY29yYXRvckNsaWVudCgpLgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorICAg
ICAgICBXZWJWaWV3SW1wbCBvd25zIGEgdmVjdG9yIG9mIFRleHRGaWVsZERlY29yYXRvckltcGwu
CisgICAgICAgIChXZWJWaWV3SW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp0
ZXh0RmllbGREZWNvcmF0b3JzKToKKwogMjAxMi0wNC0wMiAgTWFyayBQaWxncmltICA8cGlsZ3Jp
bUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQ2FsbCBkZWNyZW1lbnRTdGF0c0NvdW50ZXIgZGly
ZWN0bHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCBiYWY4YjNjZWQxZWRmMzZiM2Fk
OWE4MjcxZjhiNzk4MjgyNjMwYTQ1Li5lMDJhMjNjYTYxMTkxNmM5NTVhYjE5ZmZlMjg4YmYzY2Y1
OTM0MWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC0yNTksNiArMjU5LDcgQEAK
ICAgICAgICAgICAgICAgICAncHVibGljL1dlYlRleHRDaGVja2luZ0NvbXBsZXRpb24uaCcsCiAg
ICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJUZXh0Q2hlY2tpbmdSZXN1bHQuaCcsCiAgICAgICAg
ICAgICAgICAgJ3B1YmxpYy9XZWJUZXh0RGlyZWN0aW9uLmgnLAorICAgICAgICAgICAgICAgICdw
dWJsaWMvV2ViVGV4dEZpZWxkRGVjb3JhdG9yQ2xpZW50LmgnLAogICAgICAgICAgICAgICAgICdw
dWJsaWMvV2ViVGV4dElucHV0VHlwZS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlRl
eHRSdW4uaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJVUkxMb2FkZXJPcHRpb25zLmgn
LApAQCAtNDYzLDYgKzQ2NCw4IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9TdG9yYWdlSW5mb0No
cm9taXVtLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9TdG9yYWdlTmFtZXNwYWNlUHJveHku
Y3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1N0b3JhZ2VOYW1lc3BhY2VQcm94eS5oJywKKyAg
ICAgICAgICAgICAgICAnc3JjL1RleHRGaWVsZERlY29yYXRvckltcGwuaCcsCisgICAgICAgICAg
ICAgICAgJ3NyYy9UZXh0RmllbGREZWNvcmF0b3JJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAg
J3NyYy9Vc2VyTWVkaWFDbGllbnRJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvVXNlck1l
ZGlhQ2xpZW50SW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViVGV4dENoZWNraW5n
Q29tcGxldGlvbkltcGwuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJUZXh0RmllbGREZWNvcmF0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYlRleHRGaWVsZERlY29yYXRvckNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE4ZDI5
ZjkzZWI4NmE0NjdlMmE1ZWI4Y2E5NGRkZTg2NmE1MmQ3MzAKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJUZXh0RmllbGREZWNvcmF0b3JDbGllbnQu
aApAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJUZXh0RmllbGREZWNvcmF0b3JDbGllbnRfaAor
I2RlZmluZSBXZWJUZXh0RmllbGREZWNvcmF0b3JDbGllbnRfaAorCisjaW5jbHVkZSAicGxhdGZv
cm0vV2ViQ1N0cmluZy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViSW5wdXRF
bGVtZW50OworCitjbGFzcyBXZWJUZXh0RmllbGREZWNvcmF0b3JDbGllbnQgeworcHVibGljOgor
ICAgIC8vIFRoZSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIHRydWUgaWYgdGhlIHNwZWNpZmllZCBp
bnB1dCBlbGVtZW50IHNob3VsZAorICAgIC8vIGhhdmUgYSBkZWNvcmF0aW9uIGljb24uIFRoaXMg
ZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW5ldmVyIGEgdGV4dCBmaWVsZCBpcworICAgIC8vIGNyZWF0
ZWQsIGFuZCBzaG91bGQgbm90IHRha2UgbXVjaCB0aW1lLgorICAgIHZpcnR1YWwgYm9vbCBzaG91
bGRBZGREZWNvcmF0aW9uVG8oY29uc3QgV2ViSW5wdXRFbGVtZW50JikgPSAwOworCisgICAgLy8g
SW1hZ2UgcmVzb3VyY2UgbmFtZSBmb3IgdGhlIG5vcm1hbCBzdGF0ZS4gVGhlIGltYWdlIGlzIHN0
cmV0Y2hlZCB0bworICAgIC8vIGZvbnQtc2l6ZSB4IGZvbnQtc2l6ZSBzcXVhcmUuIFRoZSBmdW5j
dGlvbiBtdXN0IHJldHVybiBhbiBleGlzdGluZworICAgIC8vIHJlc291cmNlIG5hbWUuCisgICAg
dmlydHVhbCBXZWJDU3RyaW5nIGltYWdlTmFtZUZvck5vcm1hbFN0YXRlKCkgPSAwOworICAgIC8v
IEltYWdlIHJlc291cmNlIG5hbWUgZm9yIHRoZSBkaXNhYmxlZCBzdGF0ZS4gSWYgdGhpcyBmdW5j
dGlvbiByZXR1cm5zIGFuCisgICAgLy8gZW1wdHkgc3RyaW5nLCBpbWFnZU5hbWVGb3JOb3JtYWxT
dGF0ZSgpIGlzIHVzZWQgZXZlbiBmb3IgdGhlIGRpc2FibGVkCisgICAgLy8gc3RhdGUuCisgICAg
dmlydHVhbCBXZWJDU3RyaW5nIGltYWdlTmFtZUZvckRpc2FibGVkU3RhdGUoKSA9IDA7CisgICAg
Ly8gSW1hZ2UgcmVzb3VyY2UgbmFtZSBmb3IgdGhlIGRpc2FibGVkIHN0YXRlLiBJZiB0aGlzIGZ1
bmN0aW9uIHJldHVybnMgYW4KKyAgICAvLyBlbXB0eSBzdHJpbmcsIHRoZSBpbWFnZSBzYW1lIGFz
IGltYWdlTmFtZUZvckRpc2FibGVkU3RhdGUoKSBpcyB1c2VkLgorICAgIHZpcnR1YWwgV2ViQ1N0
cmluZyBpbWFnZU5hbWVGb3JSZWFkT25seVN0YXRlKCkgPSAwOworCisgICAgLy8gVGhpcyBpcyBj
YWxsZWQgd2hlbiB0aGUgZGVjb3JhdGlvbiBpY29uIGlzIGNsaWNrZWQuCisgICAgdmlydHVhbCB2
b2lkIGhhbmRsZUNsaWNrKFdlYklucHV0RWxlbWVudCYpID0gMDsKKyAgICAvLyBUaGlzIGlzIGNh
bGxlZCB3aGVuIHRoZSBpbnB1dCBlbGVtZW50IGxvc2VzIGl0cyByZW5kZXJlci4gQW4KKyAgICAv
LyBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGZ1bmN0aW9uIHNob3VsZCBub3QgZG8gc29tZXRoaW5n
IHdoaWNoIHVwZGF0ZXMKKyAgICAvLyBzdGF0ZSBvZiBXZWJLaXQgb2JqZWN0cy4KKyAgICB2aXJ0
dWFsIHZvaWQgd2lsbERldGFjaChjb25zdCBXZWJJbnB1dEVsZW1lbnQmKSA9IDA7CisKKyAgICB2
aXJ0dWFsIH5XZWJUZXh0RmllbGREZWNvcmF0b3JDbGllbnQoKSB7IH0KK307CisKK30KKworI2Vu
ZGlmIC8vIFdlYlRleHRGaWVsZERlY29yYXRvckNsaWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJWaWV3LmgKaW5kZXggNGQ5OTVlMGZmYjUzNjZlYjVmNTZkMTVhZTliN2Y2N2Rj
OTliNzUxNC4uNzI5ZjUxNjc3OWUxNzc4OWRlYjhkN2U5ZTE3NDAwMzk2OTc5OTVkZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlldy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXcuaApAQCAtNTMsNiArNTMsNyBAQCBjbGFz
cyBXZWJQZXJtaXNzaW9uQ2xpZW50OwogY2xhc3MgV2ViU2V0dGluZ3M7CiBjbGFzcyBXZWJTcGVs
bENoZWNrQ2xpZW50OwogY2xhc3MgV2ViU3RyaW5nOworY2xhc3MgV2ViVGV4dEZpZWxkRGVjb3Jh
dG9yQ2xpZW50OwogY2xhc3MgV2ViVmlld0NsaWVudDsKIHN0cnVjdCBXZWJBY3RpdmVXaGVlbEZs
aW5nUGFyYW1ldGVyczsKIHN0cnVjdCBXZWJNZWRpYVBsYXllckFjdGlvbjsKQEAgLTEwNCw2ICsx
MDUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldERldlRvb2xzQWdlbnRDbGllbnQo
V2ViRGV2VG9vbHNBZ2VudENsaWVudCopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0UGVybWlz
c2lvbkNsaWVudChXZWJQZXJtaXNzaW9uQ2xpZW50KikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRTcGVsbENoZWNrQ2xpZW50KFdlYlNwZWxsQ2hlY2tDbGllbnQqKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGFkZFRleHRGaWVsZERlY29yYXRvckNsaWVudChXZWJUZXh0RmllbGREZWNvcmF0b3JD
bGllbnQqKSA9IDA7CiAKIAogICAgIC8vIE9wdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAppbmRleCAyMzA4YjBhZThhNjkzNDQw
ODc2ZTRiOWFkN2QwYzdiODI1ZmZmMTZiLi4wNjgyMjg1YWY4ZjNjMTZhOGJlMTgzY2IyYzVjZjYy
ZDY0YWFmZTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVD
bGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGll
bnRJbXBsLmNwcApAQCAtNTIsNiArNTIsNyBAQAogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2lu
Y2x1ZGUgIkdlb2xvY2F0aW9uLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgorI2luY2x1
ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRl
ICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiSWNvbi5oIgpAQCAtNjgsNiArNjksNyBAQAog
I2luY2x1ZGUgIlNlYXJjaFBvcHVwTWVudUNocm9taXVtLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlP
cmlnaW4uaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIlRleHRGaWVsZERlY29y
YXRpb25FbGVtZW50LmgiCiAjaWYgVVNFKFY4KQogI2luY2x1ZGUgIlY4UHJveHkuaCIKICNlbmRp
ZgpAQCAtOTg1LDYgKzk4NywyOSBAQCBQYXNzUmVmUHRyPFNlYXJjaFBvcHVwTWVudT4gQ2hyb21l
Q2xpZW50SW1wbDo6Y3JlYXRlU2VhcmNoUG9wdXBNZW51KFBvcHVwTWVudUNsaQogICAgIHJldHVy
biBhZG9wdFJlZihuZXcgU2VhcmNoUG9wdXBNZW51Q2hyb21pdW0oY2xpZW50KSk7CiB9CiAKK2Jv
b2wgQ2hyb21lQ2xpZW50SW1wbDo6d2lsbEFkZFRleHRGaWVsZERlY29yYXRpb25zVG8oSFRNTElu
cHV0RWxlbWVudCogaW5wdXQpCit7CisgICAgQVNTRVJUKGlucHV0KTsKKyAgICBjb25zdCBWZWN0
b3I8T3duUHRyPFRleHRGaWVsZERlY29yYXRvcj4gPiYgZGVjb3JhdG9ycyA9IG1fd2ViVmlldy0+
dGV4dEZpZWxkRGVjb3JhdG9ycygpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkZWNv
cmF0b3JzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChkZWNvcmF0b3JzW2ldLT53aWxsQWRk
RGVjb3JhdGlvblRvKGlucHV0KSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6YWRkVGV4dEZpZWxk
RGVjb3JhdGlvbnNUbyhIVE1MSW5wdXRFbGVtZW50KiBpbnB1dCkKK3sKKyAgICBBU1NFUlQod2ls
bEFkZFRleHRGaWVsZERlY29yYXRpb25zVG8oaW5wdXQpKTsKKyAgICBjb25zdCBWZWN0b3I8T3du
UHRyPFRleHRGaWVsZERlY29yYXRvcj4gPiYgZGVjb3JhdG9ycyA9IG1fd2ViVmlldy0+dGV4dEZp
ZWxkRGVjb3JhdG9ycygpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkZWNvcmF0b3Jz
LnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmICghZGVjb3JhdG9yc1tpXS0+d2lsbEFkZERlY29y
YXRpb25UbyhpbnB1dCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgUmVmUHRyPFRl
eHRGaWVsZERlY29yYXRpb25FbGVtZW50PiBkZWNvcmF0aW9uID0gVGV4dEZpZWxkRGVjb3JhdGlv
bkVsZW1lbnQ6OmNyZWF0ZShpbnB1dC0+ZG9jdW1lbnQoKSwgZGVjb3JhdG9yc1tpXS5nZXQoKSk7
CisgICAgICAgIGRlY29yYXRpb24tPmRlY29yYXRlKGlucHV0KTsKKyAgICB9Cit9CisKIGJvb2wg
Q2hyb21lQ2xpZW50SW1wbDo6c2hvdWxkUnVuTW9kYWxEaWFsb2dEdXJpbmdQYWdlRGlzbWlzc2Fs
KGNvbnN0IERpYWxvZ1R5cGUmIGRpYWxvZ1R5cGUsIGNvbnN0IFN0cmluZyYgZGlhbG9nTWVzc2Fn
ZSwgRnJhbWVMb2FkZXI6OlBhZ2VEaXNtaXNzYWxUeXBlIGRpc21pc3NhbFR5cGUpIGNvbnN0CiB7
CiAgICAgY29uc3QgY2hhcioga0RpYWxvZ3NbXSA9IHsiYWxlcnQiLCAiY29uZmlybSIsICJwcm9t
cHQiLCAic2hvd01vZGFsRGlhbG9nIn07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9D
aHJvbWVDbGllbnRJbXBsLmgKaW5kZXggNDYxZGI0MWE0NDliM2I5NWRkZGI2MzU1OWMwN2Y1MGQ5
NDc3MWJmZC4uNjI2MGE5N2RkM2Q3ZGU3YThkMTJhYjA2MTAyOWVmNzYwZDA3YjMxMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuaApAQCAtMTk1LDYg
KzE5NSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaGFzT3BlbmVkUG9wdXAoKSBjb25z
dCBPVkVSUklERTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6UG9wdXBNZW51PiBj
cmVhdGVQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KikgY29uc3Q7CiAgICAgdmly
dHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudT4gY3JlYXRlU2VhcmNoUG9w
dXBNZW51KFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCopIGNvbnN0OworICAgIHZpcnR1YWwgYm9v
bCB3aWxsQWRkVGV4dEZpZWxkRGVjb3JhdGlvbnNUbyhXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50
KikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGFkZFRleHRGaWVsZERlY29yYXRpb25zVG8o
V2ViQ29yZTo6SFRNTElucHV0RWxlbWVudCopIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBib29s
IHNob3VsZFJ1bk1vZGFsRGlhbG9nRHVyaW5nUGFnZURpc21pc3NhbChjb25zdCBEaWFsb2dUeXBl
JiwgY29uc3QgU3RyaW5nJiBkaWFsb2dNZXNzYWdlLCBXZWJDb3JlOjpGcmFtZUxvYWRlcjo6UGFn
ZURpc21pc3NhbFR5cGUpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9UZXh0RmllbGREZWNvcmF0b3JJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1RleHRGaWVsZERlY29yYXRvckltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlZjY2YTIxMzUy
Njg1ZjliNDM5NDg4ZmJjNjAwYmZkNzY3NjI5N2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9UZXh0RmllbGREZWNvcmF0b3JJbXBsLmNwcApAQCAtMCwwICsx
LDExOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0Ogor
ICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZXh0RmllbGREZWNvcmF0b3JJ
bXBsLmgiCisKKyNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgorI2luY2x1ZGUgIkhUTUxJbnB1dEVs
ZW1lbnQuaCIKKyNpbmNsdWRlICJXZWJJbnB1dEVsZW1lbnQuaCIKKyNpbmNsdWRlICJXZWJUZXh0
RmllbGREZWNvcmF0b3JDbGllbnQuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOworCitpbmxpbmUgVGV4dEZpZWxkRGVjb3JhdG9ySW1wbDo6VGV4dEZp
ZWxkRGVjb3JhdG9ySW1wbChXZWJUZXh0RmllbGREZWNvcmF0b3JDbGllbnQqIGNsaWVudCkKKyAg
ICA6IG1fY2xpZW50KGNsaWVudCkKK3sKKyAgICBBU1NFUlQoY2xpZW50KTsKK30KKworUGFzc093
blB0cjxUZXh0RmllbGREZWNvcmF0b3JJbXBsPiBUZXh0RmllbGREZWNvcmF0b3JJbXBsOjpjcmVh
dGUoV2ViVGV4dEZpZWxkRGVjb3JhdG9yQ2xpZW50KiBjbGllbnQpCit7CisgICAgcmV0dXJuIGFk
b3B0UHRyKG5ldyBUZXh0RmllbGREZWNvcmF0b3JJbXBsKGNsaWVudCkpOworfQorCitUZXh0Rmll
bGREZWNvcmF0b3JJbXBsOjp+VGV4dEZpZWxkRGVjb3JhdG9ySW1wbCgpCit7Cit9CisKK2Jvb2wg
VGV4dEZpZWxkRGVjb3JhdG9ySW1wbDo6d2lsbEFkZERlY29yYXRpb25UbyhIVE1MSW5wdXRFbGVt
ZW50KiBpbnB1dCkKK3sKKyAgICBBU1NFUlQoaW5wdXQpOworICAgIHJldHVybiBtX2NsaWVudC0+
c2hvdWxkQWRkRGVjb3JhdGlvblRvKFdlYklucHV0RWxlbWVudChpbnB1dCkpOworfQorCitDYWNo
ZWRJbWFnZSogVGV4dEZpZWxkRGVjb3JhdG9ySW1wbDo6aW1hZ2VGb3JOb3JtYWxTdGF0ZSgpCit7
CisgICAgaWYgKCFtX2NhY2hlZEltYWdlRm9yTm9ybWFsU3RhdGUpIHsKKyAgICAgICAgV2ViQ1N0
cmluZyBpbWFnZU5hbWUgPSBtX2NsaWVudC0+aW1hZ2VOYW1lRm9yTm9ybWFsU3RhdGUoKTsKKyAg
ICAgICAgQVNTRVJUKCFpbWFnZU5hbWUuaXNFbXB0eSgpKTsKKyAgICAgICAgUmVmUHRyPEltYWdl
PiBpbWFnZSA9IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZShpbWFnZU5hbWUuZGF0YSgpKTsK
KyAgICAgICAgbV9jYWNoZWRJbWFnZUZvck5vcm1hbFN0YXRlID0gbmV3IENhY2hlZEltYWdlKGlt
YWdlLmdldCgpKTsKKyAgICAgICAgLy8gVGhlIENhY2hlZEltYWdlIG93bnMgYSBSZWZQdHIgdG8g
dGhlIEltYWdlLgorICAgIH0KKyAgICByZXR1cm4gbV9jYWNoZWRJbWFnZUZvck5vcm1hbFN0YXRl
LmdldCgpOworfQorCitDYWNoZWRJbWFnZSogVGV4dEZpZWxkRGVjb3JhdG9ySW1wbDo6aW1hZ2VG
b3JEaXNhYmxlZFN0YXRlKCkKK3sKKyAgICBpZiAoIW1fY2FjaGVkSW1hZ2VGb3JEaXNhYmxlZFN0
YXRlKSB7CisgICAgICAgIFdlYkNTdHJpbmcgaW1hZ2VOYW1lID0gbV9jbGllbnQtPmltYWdlTmFt
ZUZvckRpc2FibGVkU3RhdGUoKTsKKyAgICAgICAgaWYgKGltYWdlTmFtZS5pc0VtcHR5KCkpCisg
ICAgICAgICAgICBtX2NhY2hlZEltYWdlRm9yRGlzYWJsZWRTdGF0ZSA9IGltYWdlRm9yTm9ybWFs
U3RhdGUoKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBSZWZQdHI8SW1hZ2U+IGltYWdl
ID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKGltYWdlTmFtZS5kYXRhKCkpOworICAgICAg
ICAgICAgbV9jYWNoZWRJbWFnZUZvckRpc2FibGVkU3RhdGUgPSBuZXcgQ2FjaGVkSW1hZ2UoaW1h
Z2UuZ2V0KCkpOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBtX2NhY2hlZEltYWdlRm9y
RGlzYWJsZWRTdGF0ZS5nZXQoKTsKK30KKworQ2FjaGVkSW1hZ2UqIFRleHRGaWVsZERlY29yYXRv
ckltcGw6OmltYWdlRm9yUmVhZG9ubHlTdGF0ZSgpCit7CisgICAgaWYgKCFtX2NhY2hlZEltYWdl
Rm9yUmVhZG9ubHlTdGF0ZSkgeworICAgICAgICBXZWJDU3RyaW5nIGltYWdlTmFtZSA9IG1fY2xp
ZW50LT5pbWFnZU5hbWVGb3JSZWFkT25seVN0YXRlKCk7CisgICAgICAgIGlmIChpbWFnZU5hbWUu
aXNFbXB0eSgpKQorICAgICAgICAgICAgbV9jYWNoZWRJbWFnZUZvckRpc2FibGVkU3RhdGUgPSBp
bWFnZUZvckRpc2FibGVkU3RhdGUoKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBSZWZQ
dHI8SW1hZ2U+IGltYWdlID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKGltYWdlTmFtZS5k
YXRhKCkpOworICAgICAgICAgICAgbV9jYWNoZWRJbWFnZUZvclJlYWRvbmx5U3RhdGUgPSBuZXcg
Q2FjaGVkSW1hZ2UoaW1hZ2UuZ2V0KCkpOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBt
X2NhY2hlZEltYWdlRm9yUmVhZG9ubHlTdGF0ZS5nZXQoKTsKK30KKwordm9pZCBUZXh0RmllbGRE
ZWNvcmF0b3JJbXBsOjpoYW5kbGVDbGljayhIVE1MSW5wdXRFbGVtZW50KiBpbnB1dCkKK3sKKyAg
ICBBU1NFUlQoaW5wdXQpOworICAgIFdlYklucHV0RWxlbWVudCB3ZWJJbnB1dChpbnB1dCk7Cisg
ICAgbV9jbGllbnQtPmhhbmRsZUNsaWNrKHdlYklucHV0KTsKK30KKwordm9pZCBUZXh0RmllbGRE
ZWNvcmF0b3JJbXBsOjp3aWxsRGV0YWNoKEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0KQoreworICAg
IEFTU0VSVChpbnB1dCk7CisgICAgV2ViSW5wdXRFbGVtZW50IHdlYklucHV0KGlucHV0KTsKKyAg
ICBtX2NsaWVudC0+d2lsbERldGFjaCh3ZWJJbnB1dCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1RleHRGaWVsZERlY29yYXRvckltcGwuaCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1RleHRGaWVsZERlY29yYXRvckltcGwuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42Njc0NzUyODJmNWJlMzk1YWQxMTJhYjU4ODUxMDNhMGE3MWU3OTliCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvVGV4dEZpZWxkRGVjb3JhdG9ySW1wbC5o
CkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIFRleHRGaWVsZERlY29yYXRvckltcGxfaAorI2RlZmlu
ZSBUZXh0RmllbGREZWNvcmF0b3JJbXBsX2gKKworI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFu
ZGxlLmgiCisjaW5jbHVkZSAiVGV4dEZpZWxkRGVjb3JhdGlvbkVsZW1lbnQuaCIKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlRleHRGaWVsZERlY29yYXRvckNsaWVudDsKKworY2xh
c3MgVGV4dEZpZWxkRGVjb3JhdG9ySW1wbCA6IHB1YmxpYyBXZWJDb3JlOjpUZXh0RmllbGREZWNv
cmF0b3IgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPFRleHRGaWVsZERlY29yYXRv
ckltcGw+IGNyZWF0ZShXZWJUZXh0RmllbGREZWNvcmF0b3JDbGllbnQqKTsKKyAgICB2aXJ0dWFs
IH5UZXh0RmllbGREZWNvcmF0b3JJbXBsKCk7CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCBib29s
IHdpbGxBZGREZWNvcmF0aW9uVG8oV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudCopIE9WRVJSSURF
OworICAgIHZpcnR1YWwgV2ViQ29yZTo6Q2FjaGVkSW1hZ2UqIGltYWdlRm9yTm9ybWFsU3RhdGUo
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkNhY2hlZEltYWdlKiBpbWFnZUZvckRp
c2FibGVkU3RhdGUoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkNhY2hlZEltYWdl
KiBpbWFnZUZvclJlYWRvbmx5U3RhdGUoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgaGFu
ZGxlQ2xpY2soV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudCopIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCB3aWxsRGV0YWNoKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQqKSBPVkVSUklERTsK
KworICAgIFRleHRGaWVsZERlY29yYXRvckltcGwoV2ViVGV4dEZpZWxkRGVjb3JhdG9yQ2xpZW50
Kik7CisKKyAgICBXZWJUZXh0RmllbGREZWNvcmF0b3JDbGllbnQqIG1fY2xpZW50OworICAgIFdl
YkNvcmU6OkNhY2hlZFJlc291cmNlSGFuZGxlPFdlYkNvcmU6OkNhY2hlZEltYWdlPiBtX2NhY2hl
ZEltYWdlRm9yTm9ybWFsU3RhdGU7CisgICAgV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VIYW5kbGU8
V2ViQ29yZTo6Q2FjaGVkSW1hZ2U+IG1fY2FjaGVkSW1hZ2VGb3JEaXNhYmxlZFN0YXRlOworICAg
IFdlYkNvcmU6OkNhY2hlZFJlc291cmNlSGFuZGxlPFdlYkNvcmU6OkNhY2hlZEltYWdlPiBtX2Nh
Y2hlZEltYWdlRm9yUmVhZG9ubHlTdGF0ZTsKK307CisKK30KKworI2VuZGlmIC8vIFRleHRGaWVs
ZERlY29yYXRvckltcGxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwu
Y3BwCmluZGV4IDYxZTgwYThiODA4MTA0ZGZiNmY2ODZmOTA1NDFkZTBmYWY4ZjU3ZWQuLmNkOWYz
NWFiOGU0ZjM2OTEyZWFiYWM0ZGVmNGZjOTI4NzQwMDhlN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTEwOCw2ICsxMDgsNyBAQAogI2luY2x1ZGUg
IlNoYXJlZEdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiU3BlZWNoSW5wdXRDbGllbnRJ
bXBsLmgiCiAjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25DbGllbnQuaCIKKyNpbmNsdWRlICJU
ZXh0RmllbGREZWNvcmF0b3JJbXBsLmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5j
bHVkZSAiVGltZXIuaCIKICNpbmNsdWRlICJUb3VjaHBhZEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3Vy
dmUuaCIKQEAgLTMyMCw2ICszMjEsMTggQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0U3BlbGxDaGVj
a0NsaWVudChXZWJTcGVsbENoZWNrQ2xpZW50KiBzcGVsbENoZWNrQ2xpZW50KQogICAgIG1fc3Bl
bGxDaGVja0NsaWVudCA9IHNwZWxsQ2hlY2tDbGllbnQ7CiB9CiAKK3ZvaWQgV2ViVmlld0ltcGw6
OmFkZFRleHRGaWVsZERlY29yYXRvckNsaWVudChXZWJUZXh0RmllbGREZWNvcmF0b3JDbGllbnQq
IGNsaWVudCkKK3sKKyAgICBBU1NFUlQoY2xpZW50KTsKKyAgICAvLyBXZSBsaW1pdCB0aGUgbnVt
YmVyIG9mIGRlY29yYXRvcnMgYmVjYXVzZSBpdCBhZmZlY3RzIHBlcmZvcm1hbmNlIG9mIHRleHQK
KyAgICAvLyBmaWVsZCBjcmVhdGlvbi4gSWYgeW91J2QgbGlrZSB0byBhZGQgbW9yZSBkZWNvcmF0
b3JzLCBjb25zaWRlciBtb3ZpbmcKKyAgICAvLyB5b3VyIGRlY29yYXRvciBvciBleGlzdGluZyBk
ZWNvcmF0b3JzIHRvIFdlYkNvcmUuCisgICAgY29uc3QgdW5zaWduZWQgbWF4aW11bU51bWJlck9m
RGVjb3JhdG9ycyA9IDg7CisgICAgaWYgKG1fdGV4dEZpZWxkRGVjb3JhdG9ycy5zaXplKCkgPj0g
bWF4aW11bU51bWJlck9mRGVjb3JhdG9ycykKKyAgICAgICAgQ1JBU0goKTsKKyAgICBtX3RleHRG
aWVsZERlY29yYXRvcnMuYXBwZW5kKFRleHRGaWVsZERlY29yYXRvckltcGw6OmNyZWF0ZShjbGll
bnQpKTsKK30KKwogV2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKFdlYlZpZXdDbGllbnQqIGNsaWVu
dCkKICAgICA6IG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1fYXV0b2ZpbGxDbGllbnQoMCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmggYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4IDk5YTA0YjhjNjMwMTEy
NWMzZjg0ZmE5NjZhMzMxZTU1OTM2NzNiMDguLmZhMTkwMTZkOGNiNDI1ZTU5MjI0ZjUzZTdlMmQ2
M2QwNDBlMTM4MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZp
ZXdJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaApA
QCAtNzMsNiArNzMsNyBAQCBjbGFzcyBQb3B1cENvbnRhaW5lcjsKIGNsYXNzIFBvcHVwTWVudUNs
aWVudDsKIGNsYXNzIFJhbmdlOwogY2xhc3MgUmVuZGVyVGhlbWU7CitjbGFzcyBUZXh0RmllbGRE
ZWNvcmF0b3I7CiBjbGFzcyBXaWRnZXQ7CiB9CiAKQEAgLTE1Miw2ICsxNTMsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHNldERldlRvb2xzQWdlbnRDbGllbnQoV2ViRGV2VG9vbHNBZ2Vu
dENsaWVudCopOwogICAgIHZpcnR1YWwgdm9pZCBzZXRQZXJtaXNzaW9uQ2xpZW50KFdlYlBlcm1p
c3Npb25DbGllbnQqKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0U3BlbGxDaGVja0NsaWVudChXZWJT
cGVsbENoZWNrQ2xpZW50Kik7CisgICAgdmlydHVhbCB2b2lkIGFkZFRleHRGaWVsZERlY29yYXRv
ckNsaWVudChXZWJUZXh0RmllbGREZWNvcmF0b3JDbGllbnQqKSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIFdlYlNldHRpbmdzKiBzZXR0aW5ncygpOwogICAgIHZpcnR1YWwgV2ViU3RyaW5nIHBhZ2VF
bmNvZGluZygpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBzZXRQYWdlRW5jb2RpbmcoY29uc3Qg
V2ViU3RyaW5nJiBlbmNvZGluZyk7CkBAIC0zMDcsNiArMzA5LDggQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gbV9zcGVsbENoZWNrQ2xpZW50OwogICAgIH0KIAorICAgIGNvbnN0IFZlY3RvcjxP
d25QdHI8V2ViQ29yZTo6VGV4dEZpZWxkRGVjb3JhdG9yPiA+JiB0ZXh0RmllbGREZWNvcmF0b3Jz
KCkgY29uc3QgeyByZXR1cm4gbV90ZXh0RmllbGREZWNvcmF0b3JzOyB9CisKICAgICAvLyBSZXR1
cm5zIHRoZSBwYWdlIG9iamVjdCBhc3NvY2lhdGVkIHdpdGggdGhpcyB2aWV3LiBUaGlzIG1heSBi
ZSBudWxsIHdoZW4KICAgICAvLyB0aGUgcGFnZSBpcyBzaHV0dGluZyBkb3duLCBidXQgd2lsbCBi
ZSB2YWxpZCBhdCBhbGwgb3RoZXIgdGltZXMuCiAgICAgV2ViQ29yZTo6UGFnZSogcGFnZSgpIGNv
bnN0CkBAIC01ODgsNiArNTkyLDcgQEAgcHJpdmF0ZToKICAgICBXZWJBdXRvZmlsbENsaWVudCog
bV9hdXRvZmlsbENsaWVudDsKICAgICBXZWJQZXJtaXNzaW9uQ2xpZW50KiBtX3Blcm1pc3Npb25D
bGllbnQ7CiAgICAgV2ViU3BlbGxDaGVja0NsaWVudCogbV9zcGVsbENoZWNrQ2xpZW50OworICAg
IFZlY3RvcjxPd25QdHI8V2ViQ29yZTo6VGV4dEZpZWxkRGVjb3JhdG9yPiA+IG1fdGV4dEZpZWxk
RGVjb3JhdG9yczsKIAogICAgIENocm9tZUNsaWVudEltcGwgbV9jaHJvbWVDbGllbnRJbXBsOwog
ICAgIENvbnRleHRNZW51Q2xpZW50SW1wbCBtX2NvbnRleHRNZW51Q2xpZW50SW1wbDsK
</data>

          </attachment>
      

    </bug>

</bugzilla>