<?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>93894</bug_id>
          
          <creation_ts>2012-08-13 13:36:32 -0700</creation_ts>
          <short_desc>With asynchronous plug-in initialization, WebProcess and PluginProcess can deadlock</short_desc>
          <delta_ts>2012-08-13 15:04:27 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>gustavo</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>694031</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-08-13 13:36:32 -0700</bug_when>
    <thetext>With asynchronous plug-in initialization, WebProcess and PluginProcess can deadlock (or ASSERT in debug builds)

Step 1 - Run ToT
Step 2 - Go to http://www.youtube.com/watch?v=rDvweiW5ZKQ&amp;feature=plcp with Flash and with HTML5 video disabled

WebProcess is waiting on synchronous completion of plug-in initialization.
PluginProcess is sync-messaging to the WebProcess for NPP_Evaluate.

Both processes should be handling messages in the meantime but are not.

In radar as &lt;rdar://problem/12062125&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694041</commentid>
    <comment_count>1</comment_count>
      <attachid>158094</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-08-13 13:50:18 -0700</bug_when>
    <thetext>Created attachment 158094
Patch v1 - Fix + regression test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694047</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-13 13:54:56 -0700</bug_when>
    <thetext>Attachment 158094 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/plat...&quot; exit_code: 1
Tools/DumpRenderTree/TestNetscapePlugIn/Tests/EvaluateJSWithinNPP_New.cpp:39:  The parameter name &quot;saved&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694048</commentid>
    <comment_count>3</comment_count>
      <attachid>158094</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-08-13 13:57:48 -0700</bug_when>
    <thetext>Comment on attachment 158094
Patch v1 - Fix + regression test

Attachment 158094 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/13482885</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694056</commentid>
    <comment_count>4</comment_count>
      <attachid>158094</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-08-13 14:04:30 -0700</bug_when>
    <thetext>Comment on attachment 158094
Patch v1 - Fix + regression test

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

&gt; Source/WebKit2/PluginProcess/WebProcessConnection.cpp:274
&gt; +        if (pluginControllerProxy-&gt;isInitializing()) {
&gt; +            pluginControllerProxy-&gt;setInitializationReply(reply);

Is a single reply enough,or should we have a vector/set?

&gt; Source/WebKit2/PluginProcess/WebProcessConnection.cpp:281
&gt; +#elif

Whoa.

&gt; Source/WebKit2/PluginProcess/WebProcessConnection.cpp:321
&gt; +    // even if the web process is waiting on a synchronous reply itself.

Even if? I might be confused, but I think that it&apos;s likely or even certain to be waiting on a sync reply in this case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694066</commentid>
    <comment_count>5</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-08-13 14:13:49 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 158094 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=158094&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/PluginProcess/WebProcessConnection.cpp:274
&gt; &gt; +        if (pluginControllerProxy-&gt;isInitializing()) {
&gt; &gt; +            pluginControllerProxy-&gt;setInitializationReply(reply);
&gt; 
&gt; Is a single reply enough,or should we have a vector/set?

Yes it is enough.  In no case should any one plug-in instance (represented by a PluginControllerProxy) have more than one interested party waiting for it&apos;s synchronous initialization.

There is an assertion to this effect in PluginControllerProxy::setInitializationReply()

&gt; &gt; Source/WebKit2/PluginProcess/WebProcessConnection.cpp:321
&gt; &gt; +    // even if the web process is waiting on a synchronous reply itself.
&gt; 
&gt; Even if? I might be confused, but I think that it&apos;s likely or even certain to be waiting on a sync reply in this case.

Definitely not certain.  This only happens if something in the WebProcess triggers access of the plugin script object which forces it to wait until initialization is completed.

That happens in the Youtube example, but is not something that happens on most sites.

Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694067</commentid>
    <comment_count>6</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-08-13 14:14:09 -0700</bug_when>
    <thetext>Digging into the GTK failure now</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694073</commentid>
    <comment_count>7</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-08-13 14:15:39 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 158094 [details])
&gt; Attachment 158094 [details] did not pass gtk-ews (gtk):
&gt; Output: http://queues.webkit.org/results/13482885

500 characters is (not surprisingly) not enough of a buffer to show the nature of the failure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694087</commentid>
    <comment_count>8</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-08-13 14:25:09 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #3)
&gt; &gt; (From update of attachment 158094 [details] [details])
&gt; &gt; Attachment 158094 [details] [details] did not pass gtk-ews (gtk):
&gt; &gt; Output: http://queues.webkit.org/results/13482885
&gt; 
&gt; 500 characters is (not surprisingly) not enough of a buffer to show the nature of the failure.

NM, I got it.

These unformatted logs are difficult to hunt through  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694089</commentid>
    <comment_count>9</comment_count>
      <attachid>158104</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-08-13 14:26:32 -0700</bug_when>
    <thetext>Created attachment 158104
Reviewed patch for EWS testing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694127</commentid>
    <comment_count>10</comment_count>
      <attachid>158094</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-08-13 14:55:38 -0700</bug_when>
    <thetext>Comment on attachment 158094
Patch v1 - Fix + regression test

Attachment 158094 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/13493282</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694135</commentid>
    <comment_count>11</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-08-13 15:04:27 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/125457</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158094</attachid>
            <date>2012-08-13 13:50:18 -0700</date>
            <delta_ts>2012-08-13 14:55:38 -0700</delta_ts>
            <desc>Patch v1 - Fix + regression test</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>24129</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlOTg4ZDU2Li4yOTEyOGVkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDgt
MTMgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFdpdGggYXN5
bmNocm9ub3VzIHBsdWctaW4gaW5pdGlhbGl6YXRpb24sIFdlYlByb2Nlc3MgYW5kIFBsdWdpblBy
b2Nlc3MgY2FuIGRlYWRsb2NrCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMjA2MjEyNT4gYW5k
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Mzg5NAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdr
Mi9wbHVnaW5zL2FzeWNocm9ub3VzLWRlYWRsb2NrLXdpdGgtdGltZXItYW5kLWV2YWx1YXRlLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5zL2Fz
eWNocm9ub3VzLWRlYWRsb2NrLXdpdGgtdGltZXItYW5kLWV2YWx1YXRlLmh0bWw6IEFkZGVkLgor
CiAyMDEyLTA4LTEzICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IGdldCByaWQgb2YgYmVmb3JlVGV4dENoYW5nZWQKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvcGx1Z2lucy9hc3ljaHJvbm91cy1k
ZWFkbG9jay13aXRoLXRpbWVyLWFuZC1ldmFsdWF0ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMtd2syL3BsdWdpbnMvYXN5Y2hyb25vdXMtZGVhZGxvY2std2l0aC10aW1l
ci1hbmQtZXZhbHVhdGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjhkYWY2NjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMtd2syL3BsdWdpbnMvYXN5Y2hyb25vdXMtZGVhZGxvY2std2l0aC10aW1lci1hbmQtZXZhbHVh
dGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorCitUZXN0IHRoYXQgYSBwbHVnLWluIGlu
aXRpYWxpemluZyBhc3luY2hyb25vdXMgdGhhdCBjYWxscyBvdXQgdG8gTlBQX0V2YWx1YXRlIHdp
dGhpbiBOUFBfTmV3IGRvZXNuJ3QgZGVhZGxvY2sgYWdhaW5zdCBhIFdlYlByb2Nlc3MgdGhhdCBp
cyB0cnlpbmcgdG8gY2FsbCBpbiB0byB0aGUgcGx1Zy1pbiBlbGVtZW50LCB3YWl0aW5nIGZvciBp
dCB0byBjb21wbGV0ZSBpbml0aWFsaXphdGlvbi4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCisKK1BBU1MgV2FpdGluZyBvbiBzeW5jaHJvbm91cyBpbml0aWFsaXphdGlvbiBvZiB0aGUg
cGx1Zy1pbiBpbnN0YW5jZSBkaWQgbm90IGRlYWRsb2NrIHRoZSBXZWIgYW5kIFBsdWdpbiBwcm9j
ZXNzZXMuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvcGx1Z2lu
cy9hc3ljaHJvbm91cy1kZWFkbG9jay13aXRoLXRpbWVyLWFuZC1ldmFsdWF0ZS5odG1sIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5zL2FzeWNocm9ub3VzLWRlYWRsb2NrLXdp
dGgtdGltZXItYW5kLWV2YWx1YXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uNWViMGYwZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy13azIvcGx1Z2lucy9hc3ljaHJvbm91cy1kZWFkbG9jay13aXRoLXRpbWVyLWFuZC1ldmFsdWF0
ZS5odG1sCkBAIC0wLDAgKzEsMzYgQEAKKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgi
V2ViS2l0MkFzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uRW5hYmxlZCIsICIxIik7Cisg
ICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdDJBc3luY2hyb25vdXNQbHVn
aW5Jbml0aWFsaXphdGlvbkVuYWJsZWRGb3JBbGxQbHVnaW5zIiwgIjEiKTsKKyAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKK30KKwor
ZnVuY3Rpb24gcnVuVGVzdCgpIAoreworICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIpIHsKKyAg
ICAgICAgZGVidWcoIlRoaXMgdGVzdCBjYW4gb25seSBydW4gZnJvbSB3aXRoaW4gRHVtcFJlbmRl
clRyZWUgYmVjYXVzZSBpdCByZXF1aXJlcyBUZXN0TmV0c2NhcGVQbHVnaW4uXG4iKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKwkKKwkvLyBUaGlzIGNhbGwgc2hvdWxkIGZvcmNlIHN5bmNocm9u
b3VzIGluaXRpYWxpemF0aW9uIG9mIHRoZSBwbHVnLWluIGluc3RhbmNlIHdoaWNoIHNob3VsZCAq
bm90KiByZXN1bHQgaW4gYSBXZWIgdnMgUGx1Z2luIHByb2Nlc3MgZGVhZGxvY2suCisJdmFyIHVu
dXNlZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJUZXN0RWxlbWVudCIpLm1hZGVVcFByb3Bl
cnR5OworCisgICAgdGVzdFBhc3NlZCgiV2FpdGluZyBvbiBzeW5jaHJvbm91cyBpbml0aWFsaXph
dGlvbiBvZiB0aGUgcGx1Zy1pbiBpbnN0YW5jZSBkaWQgbm90IGRlYWRsb2NrIHRoZSBXZWIgYW5k
IFBsdWdpbiBwcm9jZXNzZXMuIik7CisKKyAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30K
Kzwvc2NyaXB0PgorCis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InNldFRpbWVvdXQoJ3J1blRlc3Qo
KScsIDApIj4KKzxlbWJlZCBpZD0iVGVzdEVsZW1lbnQiIHR5cGU9ImFwcGxpY2F0aW9uL3gtd2Vi
a2l0LXRlc3QtbmV0c2NhcGUiIHRlc3Q9ImV2YWx1dGUtanMtd2l0aGluLW5wcC1uZXciPjwvZW1i
ZWQ+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PC9ib2R5PgorCis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3QgdGhhdCBhIHBsdWctaW4gaW5p
dGlhbGl6aW5nIGFzeW5jaHJvbm91cyB0aGF0IGNhbGxzIG91dCB0byBOUFBfRXZhbHVhdGUgd2l0
aGluIE5QUF9OZXcgZG9lc24ndCBkZWFkbG9jayBhZ2FpbnN0IGEgV2ViUHJvY2VzcyB0aGF0IGlz
IHRyeWluZyB0byBjYWxsIGluIHRvIHRoZSBwbHVnLWluIGVsZW1lbnQsIHdhaXRpbmcgZm9yIGl0
IHRvIGNvbXBsZXRlIGluaXRpYWxpemF0aW9uLiIpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXgg
YmY1NzlkNi4uYjQxZGM3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDEyLTA4LTEz
ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBXaXRoIGFzeW5j
aHJvbm91cyBwbHVnLWluIGluaXRpYWxpemF0aW9uLCBXZWJQcm9jZXNzIGFuZCBQbHVnaW5Qcm9j
ZXNzIGNhbiBkZWFkbG9jaworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTIwNjIxMjU+IGFuZCBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM4OTQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBIGZldyB0aGluZ3Mgd2VyZSBp
biBwbGF5IGhlcmU6CisgICAgICAgIC0gVGhlIFdlYlByb2Nlc3MgdGhvdWdodCB0aGUgcGx1Zy1p
biB3YXMgZG9uZSBpbml0aWFsaXppbmcgYnV0IGl0IHdhc24ndC4KKyAgICAgICAgLSBUaGUgc3lu
YyBtZXNzYWdlIG91dCBmcm9tIHRoZSBQbHVnaW5Qcm9jZXNzIHdhcyBub3QgYmVpbmcgaGFuZGxl
ZCBieSB0aGUgV2ViUHJvY2Vzcy4KKworICAgICAgICBFeHBvc2UgdGhlIGFiaWxpdHkgZm9yIHRo
ZSBQbHVnaW5Qcm9jZXNzIHRvIGFjdCBhcyBpZiBpdCBpcyBoYW5kbGluZyBhIHN5bmMgbWVzc2Fn
ZSBhbmQgbmVlZHMgbWVzc2FnZXMgZGlzcGF0Y2hlZDoKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3Jl
SVBDL0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OmluY3JlbWVu
dERpc3BhdGNoTWVzc2FnZU1hcmtlZERpc3BhdGNoV2hlbldhaXRpbmdGb3JTeW5jUmVwbHlDb3Vu
dCk6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpkZWNyZW1lbnREaXNwYXRjaE1lc3Nh
Z2VNYXJrZWREaXNwYXRjaFdoZW5XYWl0aW5nRm9yU3luY1JlcGx5Q291bnQpOgorCisgICAgICAg
ICogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpQbHVnaW5Db250cm9sbGVyUHJveHk6OlBsdWdpbkNvbnRyb2xsZXJQcm94eSk6CisgICAg
ICAgIChXZWJLaXQ6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6c2V0SW5pdGlhbGl6YXRpb25SZXBs
eSk6IFNhdmUgdGhlIGRlbGF5ZWQgcmVwbHkgZm9yIHN5bmNocm9ub3VzIGluaXRpYWxpemF0aW9u
LgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Db250cm9sbGVyUHJveHk6OnRha2VJbml0aWFsaXph
dGlvblJlcGx5KTogR2l2ZSBiYWNrIHRoZSBkZWxheWVkIHJlcGx5IGZvciBpbml0aWFsaXphdGlv
biBjb21wbGV0aW9uLgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Db250cm9sbGVyUHJveHk6Omlu
aXRpYWxpemUpOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5
Lmg6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6aXNJbml0aWFsaXpp
bmcpOiBBY2Nlc3NvciBzbyBXZWJQcm9jZXNzQ29ubmVjdGlvbiBrbm93cyB3aGV0aGVyIG9yIG5v
dCB0byBzdG9yZSB0aGUKKyAgICAgICAgICBkZWxheWVkIHJlcGx5IGZvciBsYXRlci4KKworICAg
ICAgICAqIFBsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW46IE1h
a2UgdGhlIHN5bmNocm9ub3VzIGZvcm0gb2YgIkNyZWF0ZVBsdWdpbiIgaGF2ZSBhIGRlbGF5ZWQg
cmVwbHkuCisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGVQbHVnaW4pOiBT
dG9yZSBhd2F5IHRoZSBkZWxheWVkIHJlcGx5IG1lc3NhZ2Ugc28gaXQgY2FuIGJlIHJlc3BvbmRl
ZCB0byBhZnRlcgorICAgICAgICAgIGFzeW5jaHJvbm91cyBpbml0aWFsaXphdGlvbiBjb21wbGV0
ZXMuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGVQbHVnaW5B
c3luY2hyb25vdXNseSk6IElmIHRoZXJlIGlzIGEgc3RvcmVkIGF3YXkgZGVsYXllZCByZXBseSBt
ZXNzYWdlLCByZXNwb25kIHRvCisgICAgICAgICAgaXQgaW5zdGVhZCBvZiBzZW5kaW5nIHRoZSBh
c3luY2hyb25vdXNseSByZXBseS4KKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3ND
b25uZWN0aW9uLmg6CisgICAgICAgIChXZWJQcm9jZXNzQ29ubmVjdGlvbik6CisKIDIwMTItMDgt
MTMgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KIAogICAg
ICAgICBbU09VUF1bV0syXSBNaXNzaW5nIExvY2FsVGVybWluYXRpb25EaXNhYmxlciBpbiBXZWJD
b29raWVNYW5hZ2VyOjpzZXRDb29raWVQZXJzaXN0ZW50U3RvcmFnZSgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oCmluZGV4IGRkZjU5MWYuLmI4NDEwYTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oCkBAIC0y
MDcsNiArMjA3LDkgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgd2FrZVVwUnVuTG9vcCgpOwog
CisgICAgdm9pZCBpbmNyZW1lbnREaXNwYXRjaE1lc3NhZ2VNYXJrZWREaXNwYXRjaFdoZW5XYWl0
aW5nRm9yU3luY1JlcGx5Q291bnQoKSB7ICsrbV9pbkRpc3BhdGNoTWVzc2FnZU1hcmtlZERpc3Bh
dGNoV2hlbldhaXRpbmdGb3JTeW5jUmVwbHlDb3VudDsgfQorICAgIHZvaWQgZGVjcmVtZW50RGlz
cGF0Y2hNZXNzYWdlTWFya2VkRGlzcGF0Y2hXaGVuV2FpdGluZ0ZvclN5bmNSZXBseUNvdW50KCkg
eyAtLW1faW5EaXNwYXRjaE1lc3NhZ2VNYXJrZWREaXNwYXRjaFdoZW5XYWl0aW5nRm9yU3luY1Jl
cGx5Q291bnQ7IH0KKwogcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBN
ZXNzYWdlIHsKICAgICBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Q
cm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Q
cm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKaW5kZXggYWI2MGY5NC4uMmFkNDFkYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVy
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJv
bGxlclByb3h5LmNwcApAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhp
Y3NDb250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JZGVudGlmaWVyUmVwLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9UZW1wb3JhcnlDaGFu
Z2UuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lmIFBMQVRGT1JNKE1B
QykKQEAgLTY2LDYgKzY3LDcgQEAgUGx1Z2luQ29udHJvbGxlclByb3h5OjpQbHVnaW5Db250cm9s
bGVyUHJveHkoV2ViUHJvY2Vzc0Nvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIGMKICNpZiBVU0UoQUND
RUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgLCBtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Vu
YWJsZWQoY3JlYXRpb25QYXJhbWV0ZXJzLmlzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQp
CiAjZW5kaWYKKyAgICAsIG1faXNJbml0aWFsaXppbmcoZmFsc2UpCiAgICAgLCBtX3BhaW50VGlt
ZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmUGx1Z2luQ29udHJvbGxlclByb3h5OjpwYWludCkK
ICAgICAsIG1fcGx1Z2luRGVzdHJ1Y3Rpb25Qcm90ZWN0Q291bnQoMCkKICAgICAsIG1fcGx1Z2lu
RGVzdHJveVRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJlBsdWdpbkNvbnRyb2xsZXJQcm94
eTo6ZGVzdHJveSkKQEAgLTkxLDkgKzkzLDIyIEBAIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6flBs
dWdpbkNvbnRyb2xsZXJQcm94eSgpCiAgICAgICAgIHJlbGVhc2VOUE9iamVjdChtX3BsdWdpbkVs
ZW1lbnROUE9iamVjdCk7CiB9CiAKK3ZvaWQgUGx1Z2luQ29udHJvbGxlclByb3h5OjpzZXRJbml0
aWFsaXphdGlvblJlcGx5KFBhc3NSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NDb25uZWN0aW9u
OjpDcmVhdGVQbHVnaW46OkRlbGF5ZWRSZXBseT4gcmVwbHkpCit7CisgICAgQVNTRVJUKCFtX2lu
aXRpYWxpemF0aW9uUmVwbHkpOworICAgIG1faW5pdGlhbGl6YXRpb25SZXBseSA9IHJlcGx5Owor
fQorCitQYXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Q3JlYXRlUGx1
Z2luOjpEZWxheWVkUmVwbHk+IFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6dGFrZUluaXRpYWxpemF0
aW9uUmVwbHkoKQoreworICAgIHJldHVybiBtX2luaXRpYWxpemF0aW9uUmVwbHkucmVsZWFzZSgp
OworfQorCiBib29sIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6aW5pdGlhbGl6ZShjb25zdCBQbHVn
aW5DcmVhdGlvblBhcmFtZXRlcnMmIGNyZWF0aW9uUGFyYW1ldGVycykKIHsKICAgICBBU1NFUlQo
IW1fcGx1Z2luKTsKKyAgICAKKyAgICBUZW1wb3JhcnlDaGFuZ2U8Ym9vbD4gaW5pdGlhbGl6aW5n
KG1faXNJbml0aWFsaXppbmcsIHRydWUpOwogCiAgICAgbV9wbHVnaW4gPSBOZXRzY2FwZVBsdWdp
bjo6Y3JlYXRlKFBsdWdpblByb2Nlc3M6OnNoYXJlZCgpLm5ldHNjYXBlUGx1Z2luTW9kdWxlKCkp
OwogICAgIGlmICghbV9wbHVnaW4pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdp
blByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Q
cm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oCmluZGV4IDQ2ZGExYTQuLmE5ZDM1YTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVy
UHJveHkuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIlBsdWdpbkNvbnRyb2xsZXIuaCIK
ICNpbmNsdWRlICJQbHVnaW5Db250cm9sbGVyUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlNo
YXJlYWJsZUJpdG1hcC5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL1J1bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFi
bGUuaD4KIApAQCAtNzAsNiArNzEsMTEgQEAgcHVibGljOgogCiAgICAgUGx1Z2luQ29udHJvbGxl
ciogYXNQbHVnaW5Db250cm9sbGVyKCkgeyByZXR1cm4gdGhpczsgfQogCisgICAgYm9vbCBpc0lu
aXRpYWxpemluZygpIGNvbnN0IHsgcmV0dXJuIG1faXNJbml0aWFsaXppbmc7IH0KKyAgICAKKyAg
ICB2b2lkIHNldEluaXRpYWxpemF0aW9uUmVwbHkoUGFzc1JlZlB0cjxNZXNzYWdlczo6V2ViUHJv
Y2Vzc0Nvbm5lY3Rpb246OkNyZWF0ZVBsdWdpbjo6RGVsYXllZFJlcGx5Pik7CisgICAgUGFzc1Jl
ZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OkNyZWF0ZVBsdWdpbjo6RGVsYXll
ZFJlcGx5PiB0YWtlSW5pdGlhbGl6YXRpb25SZXBseSgpOworCiBwcml2YXRlOgogICAgIFBsdWdp
bkNvbnRyb2xsZXJQcm94eShXZWJQcm9jZXNzQ29ubmVjdGlvbiosIGNvbnN0IFBsdWdpbkNyZWF0
aW9uUGFyYW1ldGVycyYpOwogCkBAIC0xNTksNiArMTY1LDkgQEAgcHJpdmF0ZToKICAgICBTdHJp
bmcgbV91c2VyQWdlbnQ7CiAgICAgYm9vbCBtX2lzUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZDsKICAg
ICBib29sIG1faXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZDsKKyAgICBib29sIG1faXNJ
bml0aWFsaXppbmc7CisKKyAgICBSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NDb25uZWN0aW9u
OjpDcmVhdGVQbHVnaW46OkRlbGF5ZWRSZXBseT4gbV9pbml0aWFsaXphdGlvblJlcGx5OwogCiAg
ICAgUmVmUHRyPFBsdWdpbj4gbV9wbHVnaW47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdDIv
UGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggMTYyMWNhMC4uM2Fj
YzA1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNz
Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9XZWJQcm9j
ZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTI2MywxNyArMjYzLDIzIEBAIHZvaWQgV2ViUHJvY2Vzc0Nv
bm5lY3Rpb246OmNyZWF0ZVBsdWdpbkludGVybmFsKGNvbnN0IFBsdWdpbkNyZWF0aW9uUGFyYW1l
dGVycyYKICNlbmRpZgogfQogCi12b2lkIFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGVQbHVn
aW4oY29uc3QgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzJiBjcmVhdGlvblBhcmFtZXRlcnMsIGJv
b2wmIHJlc3VsdCwgYm9vbCYgd2FudHNXaGVlbEV2ZW50cywgdWludDMyX3QmIHJlbW90ZUxheWVy
Q2xpZW50SUQpCit2b2lkIFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGVQbHVnaW4oY29uc3Qg
UGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzJiBjcmVhdGlvblBhcmFtZXRlcnMsIFBhc3NSZWZQdHI8
TWVzc2FnZXM6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpDcmVhdGVQbHVnaW46OkRlbGF5ZWRSZXBs
eT4gcmVwbHkpCiB7CiAgICAgUGx1Z2luQ29udHJvbGxlclByb3h5KiBwbHVnaW5Db250cm9sbGVy
UHJveHkgPSBtX3BsdWdpbkNvbnRyb2xsZXJzLmdldChjcmVhdGlvblBhcmFtZXRlcnMucGx1Z2lu
SW5zdGFuY2VJRCk7CiAKLSAgICAvLyBUaGUgcGx1Zy1pbiB3ZSdyZSBiZWluZyBhc2tlZCB0byBj
cmVhdGUgc3luY2hyb25vdXNseSBtaWdodCBhbHJlYWR5IGV4aXN0IGlmIHdlIGp1c3QgZmluaXNo
ZWQgY3JlYXRpbmcgaXQgYXN5bmNocm9ub3VzbHkuCi0gICAgLy8gSW4gdGhhdCBjYXNlIHdlIG5l
ZWQgdG8gbm90IGNyZWF0ZSBpdCBhZ2FpbiAoYnV0IGFsc28gbmVlZCB0byByZXR1cm4gdGhlIGNv
cnJlY3QgaW5mb3JtYXRpb24gYWJvdXQgaXRzIGNyZWF0aW9uKS4KKyAgICAvLyBUaGUgY29udHJv
bGxlciBwcm94eSBmb3IgdGhlIHBsdWctaW4gd2UncmUgYmVpbmcgYXNrZWQgdG8gY3JlYXRlIHN5
bmNocm9ub3VzbHkgbWlnaHQgYWxyZWFkeSBleGlzdCBpZiBpdCB3YXMgcmVxdWVzdGVkIGFzeW5j
aHJvbm91c2x5IGJlZm9yZS4KICAgICBpZiAocGx1Z2luQ29udHJvbGxlclByb3h5KSB7Ci0gICAg
ICAgIHJlc3VsdCA9IHRydWU7Ci0gICAgICAgIHdhbnRzV2hlZWxFdmVudHMgPSBwbHVnaW5Db250
cm9sbGVyUHJveHktPndhbnRzV2hlZWxFdmVudHMoKTsKKyAgICAgICAgLy8gSXQgbWlnaHQgc3Rp
bGwgYmUgaW4gdGhlIG1pZGRsZSBvZiBpbml0aWFsaXphdGlvbiBpbiB3aGljaCBjYXNlIHdlIGhh
dmUgdG8gbGV0IHRoYXQgaW5pdGlhbGl6YXRpb24gY29tcGxldGUgYW5kIHJlc3BvbmQgdG8gdGhp
cyBtZXNzYWdlIGxhdGVyLgorICAgICAgICBpZiAocGx1Z2luQ29udHJvbGxlclByb3h5LT5pc0lu
aXRpYWxpemluZygpKSB7CisgICAgICAgICAgICBwbHVnaW5Db250cm9sbGVyUHJveHktPnNldElu
aXRpYWxpemF0aW9uUmVwbHkocmVwbHkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgICAgIAorICAgICAgICAvLyBJZiBpdHMgaW5pdGlhbGl6YXRpb24gaXMgY29tcGxldGUg
dGhlbiB3ZSBuZWVkIHRvIHJlc3BvbmQgdG8gdGhpcyBtZXNzYWdlIHdpdGggdGhlIGNvcnJlY3Qg
aW5mb3JtYXRpb24gYWJvdXQgaXRzIGNyZWF0aW9uLgogI2lmIFBMQVRGT1JNKE1BQykKLSAgICAg
ICAgcmVtb3RlTGF5ZXJDbGllbnRJRCA9IHBsdWdpbkNvbnRyb2xsZXJQcm94eS0+cmVtb3RlTGF5
ZXJDbGllbnRJRCgpOworICAgICAgICByZXBseS0+c2VuZCh0cnVlLCBwbHVnaW5Db250cm9sbGVy
UHJveHktPndhbnRzV2hlZWxFdmVudHMoKSwgcGx1Z2luQ29udHJvbGxlclByb3h5LT5yZW1vdGVM
YXllckNsaWVudElEKCkpOworI2VsaWYKKyAgICAgICAgcmVwbHktPnNlbmQodHJ1ZSwgcGx1Z2lu
Q29udHJvbGxlclByb3h5LT53YW50c1doZWVsRXZlbnRzKCksIDApOwogI2VuZGlmCiAgICAgICAg
IHJldHVybjsKICAgICB9CkBAIC0yODMsNyArMjg5LDEyIEBAIHZvaWQgV2ViUHJvY2Vzc0Nvbm5l
Y3Rpb246OmNyZWF0ZVBsdWdpbihjb25zdCBQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMmIGNyZWF0
aW9uCiAgICAgaWYgKGNyZWF0aW9uUGFyYW1ldGVycy5hc3luY2hyb25vdXNDcmVhdGlvbkluY29t
cGxldGUpCiAgICAgICAgIG1fYXN5bmNocm9ub3VzSW5zdGFuY2VJRHNUb0lnbm9yZS5hZGQoY3Jl
YXRpb25QYXJhbWV0ZXJzLnBsdWdpbkluc3RhbmNlSUQpOwogICAgIAorICAgIGJvb2wgcmVzdWx0
OworICAgIGJvb2wgd2FudHNXaGVlbEV2ZW50czsKKyAgICB1aW50MzJfdCByZW1vdGVMYXllckNs
aWVudElEOwogICAgIGNyZWF0ZVBsdWdpbkludGVybmFsKGNyZWF0aW9uUGFyYW1ldGVycywgcmVz
dWx0LCB3YW50c1doZWVsRXZlbnRzLCByZW1vdGVMYXllckNsaWVudElEKTsKKyAgICAKKyAgICBy
ZXBseS0+c2VuZChyZXN1bHQsIHdhbnRzV2hlZWxFdmVudHMsIHJlbW90ZUxheWVyQ2xpZW50SUQp
OwogfQogCiB2b2lkIFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGVQbHVnaW5Bc3luY2hyb25v
dXNseShjb25zdCBQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMmIGNyZWF0aW9uUGFyYW1ldGVycykK
QEAgLTI5NywxNiArMzA4LDMzIEBAIHZvaWQgV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZVBs
dWdpbkFzeW5jaHJvbm91c2x5KGNvbnN0IFBsdWdpbkNyZWF0aW9uUGFyYW1lCiAgICAgCiAgICAg
Ly8gVGhpcyB2ZXJzaW9uIG9mIENyZWF0ZVBsdWdpbiBpcyBvbmx5IHVzZWQgYnkgcGx1Zy1pbnMg
dGhhdCBhcmUga25vd24gdG8gYmVoYXZlIHdoZW4gc3RhcnRlZCBhc3luY2hyb25vdXNseS4KICAg
ICBib29sIHJlc3VsdCA9IGZhbHNlOwotICAgIHVpbnQzMl90IHJlbW90ZUxheWVyQ2xpZW50SUQg
PSAwOwogICAgIGJvb2wgd2FudHNXaGVlbEV2ZW50cyA9IGZhbHNlOworICAgIHVpbnQzMl90IHJl
bW90ZUxheWVyQ2xpZW50SUQgPSAwOwogICAgIAogICAgIGlmIChjcmVhdGlvblBhcmFtZXRlcnMu
YXJ0aWZpY2lhbFBsdWdpbkluaXRpYWxpemF0aW9uRGVsYXlFbmFibGVkKSB7CiAgICAgICAgIHVu
c2lnbmVkIGFydGlmaWNpYWxQbHVnaW5Jbml0aWFsaXphdGlvbkRlbGF5ID0gNTsKICAgICAgICAg
c2xlZXAoYXJ0aWZpY2lhbFBsdWdpbkluaXRpYWxpemF0aW9uRGVsYXkpOwogICAgIH0KIAorICAg
IC8vIFNpbmNlIHBsdWctaW4gY3JlYXRpb24gY2FuIG9mdGVuIG1lc3NhZ2UgdG8gdGhlIFdlYlBy
b2Nlc3Mgc3luY2hyb25vdXNseSAod2l0aCBOUFBfRXZhbHVhdGUgZm9yIGV4YW1wbGUpCisgICAg
Ly8gd2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgd2ViIHByb2Nlc3Mgd2lsbCBoYW5kbGUg
dGhlIHBsdWctaW4gcHJvY2VzcydzIHN5bmNocm9ub3VzIG1lc3NhZ2VzLAorICAgIC8vIGV2ZW4g
aWYgdGhlIHdlYiBwcm9jZXNzIGlzIHdhaXRpbmcgb24gYSBzeW5jaHJvbm91cyByZXBseSBpdHNl
bGYuCisgICAgLy8gTm9ybWFsbHkgdGhlIHBsdWctaW4gcHJvY2VzcyBkb2Vzbid0IGdpdmUgaXRz
IHN5bmNocm9ub3VzIG1lc3NhZ2VzIHRoZSBzcGVjaWFsIGZsYWcgdG8gYWxsb3cgZm9yIHRoYXQu
CisgICAgLy8gV2UgY2FuIGZvcmNlIGl0IHRvIGRvIHNvIGJ5IGluY3JlbWVudGluZyB0aGUgIkRp
c3BhdGNoTWVzc2FnZU1hcmtlZERpc3BhdGNoV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkiIGNvdW50
LgorICAgIG1fY29ubmVjdGlvbi0+aW5jcmVtZW50RGlzcGF0Y2hNZXNzYWdlTWFya2VkRGlzcGF0
Y2hXaGVuV2FpdGluZ0ZvclN5bmNSZXBseUNvdW50KCk7CiAgICAgY3JlYXRlUGx1Z2luSW50ZXJu
YWwoY3JlYXRpb25QYXJhbWV0ZXJzLCByZXN1bHQsIHdhbnRzV2hlZWxFdmVudHMsIHJlbW90ZUxh
eWVyQ2xpZW50SUQpOworICAgIG1fY29ubmVjdGlvbi0+ZGVjcmVtZW50RGlzcGF0Y2hNZXNzYWdl
TWFya2VkRGlzcGF0Y2hXaGVuV2FpdGluZ0ZvclN5bmNSZXBseUNvdW50KCk7CisKKyAgICAvLyBJ
ZiBzb21lb25lIGFza2VkIGZvciB0aGlzIHBsdWctaW4gc3luY2hyb25vdXNseSB3aGlsZSBpdCB3
YXMgaW4gdGhlIG1pZGRsZSBvZiBiZWluZyBjcmVhdGVkIHRoZW4gd2UgbmVlZCBwZXJmb3JtIHRo
ZQorICAgIC8vIHN5bmNocm9ub3VzIHJlcGx5IGluc3RlYWQgb2Ygc2VuZGluZyB0aGUgYXN5bmNo
cm9ub3VzIHJlcGx5LgorICAgIFBsdWdpbkNvbnRyb2xsZXJQcm94eSogcGx1Z2luQ29udHJvbGxl
clByb3h5ID0gbV9wbHVnaW5Db250cm9sbGVycy5nZXQoY3JlYXRpb25QYXJhbWV0ZXJzLnBsdWdp
bkluc3RhbmNlSUQpOworICAgIEFTU0VSVChwbHVnaW5Db250cm9sbGVyUHJveHkpOworICAgIGlm
IChSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpDcmVhdGVQbHVnaW46OkRl
bGF5ZWRSZXBseT4gZGVsYXllZFN5bmNSZXBseSA9IHBsdWdpbkNvbnRyb2xsZXJQcm94eS0+dGFr
ZUluaXRpYWxpemF0aW9uUmVwbHkoKSkgeworICAgICAgICBkZWxheWVkU3luY1JlcGx5LT5zZW5k
KHJlc3VsdCwgd2FudHNXaGVlbEV2ZW50cywgcmVtb3RlTGF5ZXJDbGllbnRJRCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CiAKKyAgICAvLyBPdGhlcndpc2UsIHNlbmQgdGhlIGFzeW5jaHJvbm91
cyByZXN1bHRzIG5vdy4KICAgICBpZiAoIXJlc3VsdCkgewogICAgICAgICBtX2Nvbm5lY3Rpb24t
PnNlbmRTeW5jKE1lc3NhZ2VzOjpQbHVnaW5Qcm94eTo6RGlkRmFpbFRvQ3JlYXRlUGx1Z2luKCks
IE1lc3NhZ2VzOjpQbHVnaW5Qcm94eTo6RGlkRmFpbFRvQ3JlYXRlUGx1Z2luOjpSZXBseSgpLCBj
cmVhdGlvblBhcmFtZXRlcnMucGx1Z2luSW5zdGFuY2VJRCk7CiAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rp
b24uaCBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24u
aAppbmRleCA1M2NhMWU0Li5jZTk4ZTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVn
aW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvUGx1
Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oCkBAIC0zMCw2ICszMCw3IEBACiAKICNp
bmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiUGx1Z2luLmgiCisjaW5jbHVkZSAiV2Vi
UHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIApAQCAtNzAsNyArNzEsNyBAQCBwcml2YXRlOgog
ICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMuCiAgICAgdm9pZCBkaWRSZWNlaXZlV2ViUHJvY2Vzc0Nv
bm5lY3Rpb25NZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQs
IENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciopOwogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNXZWJQ
cm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1l
c3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiwgT3duUHRyPENvcmVJUEM6OkFyZ3Vt
ZW50RW5jb2Rlcj4mKTsKLSAgICB2b2lkIGNyZWF0ZVBsdWdpbihjb25zdCBQbHVnaW5DcmVhdGlv
blBhcmFtZXRlcnMmLCBib29sJiByZXN1bHQsIGJvb2wmIHdhbnRzV2hlZWxFdmVudHMsIHVpbnQz
Ml90JiByZW1vdGVMYXllckNsaWVudElEKTsKKyAgICB2b2lkIGNyZWF0ZVBsdWdpbihjb25zdCBQ
bHVnaW5DcmVhdGlvblBhcmFtZXRlcnMmLCBQYXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNz
Q29ubmVjdGlvbjo6Q3JlYXRlUGx1Z2luOjpEZWxheWVkUmVwbHk+KTsKICAgICB2b2lkIGNyZWF0
ZVBsdWdpbkFzeW5jaHJvbm91c2x5KGNvbnN0IFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVycyYpOwog
ICAgIHZvaWQgZGVzdHJveVBsdWdpbih1aW50NjRfdCBwbHVnaW5JbnN0YW5jZUlELCBib29sIGFz
eW5jaHJvbm91c0NyZWF0aW9uSW5jb21wbGV0ZSk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdl
cy5pbgppbmRleCBmMWE4MzU5Li5lZmZiOTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9Q
bHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4K
QEAgLTI0LDcgKzI0LDcgQEAKIAogbWVzc2FnZXMgLT4gV2ViUHJvY2Vzc0Nvbm5lY3Rpb24gewog
ICAgICMgQ3JlYXRlcyBhIHBsdWctaW4gaW5zdGFuY2UgdXNpbmcgdGhlIGdpdmVuIGNyZWF0aW9u
IHBhcmFtZXRlcnMuCi0gICAgQ3JlYXRlUGx1Z2luKFdlYktpdDo6UGx1Z2luQ3JlYXRpb25QYXJh
bWV0ZXJzIHBsdWdpbkNyZWF0aW9uUGFyYW1ldGVycykgLT4gKGJvb2wgcmVzdWx0LCBib29sIHdh
bnRzV2hlZWxFdmVudHMsIHVpbnQzMl90IHJlbW90ZUxheWVyQ2xpZW50SUQpCisgICAgQ3JlYXRl
UGx1Z2luKFdlYktpdDo6UGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzIHBsdWdpbkNyZWF0aW9uUGFy
YW1ldGVycykgLT4gKGJvb2wgY3JlYXRpb25SZXN1bHQsIGJvb2wgd2FudHNXaGVlbEV2ZW50cywg
dWludDMyX3QgcmVtb3RlTGF5ZXJDbGllbnRJRCkgRGVsYXllZAogCiAgICAgIyBDcmVhdGVzIGEg
cGx1Zy1pbiBpbnN0YW5jZSBhc3luY2hyb25vdXNseSB1c2luZyB0aGUgZ2l2ZW4gY3JlYXRpb24g
cGFyYW1ldGVycy4KICAgICBDcmVhdGVQbHVnaW5Bc3luY2hyb25vdXNseShXZWJLaXQ6OlBsdWdp
bkNyZWF0aW9uUGFyYW1ldGVycyBwbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMpCmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZTQ2M2VjMC4uNDIyOWUw
ZiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE4IEBACisyMDEyLTA4LTEzICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNv
bT4KKworICAgICAgICBXaXRoIGFzeW5jaHJvbm91cyBwbHVnLWluIGluaXRpYWxpemF0aW9uLCBX
ZWJQcm9jZXNzIGFuZCBQbHVnaW5Qcm9jZXNzIGNhbiBkZWFkbG9jaworICAgICAgICA8cmRhcjov
L3Byb2JsZW0vMTIwNjIxMjU+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTM4OTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgYSB0ZXN0IHRoYXQgY2FsbHMgb3V0IHRvIE5QUF9FdmFsdWF0ZSBmb3Igc29tZSBK
UyBpbnNpZGUgb2YgTlBQX05ldy4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0R1bXBSZW5k
ZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvVGVzdE5ldHNjYXBlUGx1Z0luL1Rlc3RzL0V2YWx1YXRlSlNXaXRoaW5OUFBfTmV3LmNwcDog
QWRkZWQuCisgICAgICAgIChFdmFsdXRlSlNXaXRoaW5OUFBfTmV3KToKKyAgICAgICAgKEV2YWx1
dGVKU1dpdGhpbk5QUF9OZXc6OkV2YWx1dGVKU1dpdGhpbk5QUF9OZXcpOgorICAgICAgICAoRXZh
bHV0ZUpTV2l0aGluTlBQX05ldzo6TlBQX05ldyk6CisKIDIwMTItMDgtMTMgIFBldGVyIEJldmVy
bG9vICA8cGV0ZXJAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gRml4IGFwayBn
ZW5lcmF0aW9uIGZvciB0aGUgQW5kcm9pZCBwbGF0Zm9ybQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggYjc5MDRmNi4uYmUwY2NiNiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC03MSw2ICs3MSw3IEBACiAJCTUxNUY0MjlDMTVDMDc4NzIwMDdDOEY5MCAvKiBQbHVnaW5TY3Jp
cHRhYmxlT2JqZWN0T3ZlcnJpZGVzQWxsUHJvcGVydGllcy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVGNDI5QjE1QzA3ODcyMDA3QzhGOTAgLyog
UGx1Z2luU2NyaXB0YWJsZU9iamVjdE92ZXJyaWRlc0FsbFByb3BlcnRpZXMuY3BwICovOyB9Owog
CQk1MTg1RjZCMjEwNzE0RTA3MDA3QUEzOTMgLyogSGlzdG9yeURlbGVnYXRlLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE4NUY2OUYxMDcxNEE1NzAw
N0FBMzkzIC8qIEhpc3RvcnlEZWxlZ2F0ZS5tbSAqLzsgfTsKIAkJNTE4NUY2QjMxMDcxNEUxMjAw
N0FBMzkzIC8qIEhpc3RvcnlEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTE4NUY2OUUxMDcxNEE1NzAwN0FBMzkzIC8qIEhpc3RvcnlEZWxl
Z2F0ZS5oICovOyB9OworCQk1MUNBQ0JEODE1RDk2RkQwMDBFQjUzQTIgLyogRXZhbHVhdGVKU1dp
dGhpbk5QUF9OZXcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTFDQUNCRDcxNUQ5NkZEMDAwRUI1M0EyIC8qIEV2YWx1YXRlSlNXaXRoaW5OUFBfTmV3
LmNwcCAqLzsgfTsKIAkJNTNDQkI4MzIxMzRFNDJGMzAwMUNFNkE0IC8qIEN5Y2xpY1JlZHVuZGFu
Y3lDaGVjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1M0NCQjgzMDEzNEU0MkYzMDAxQ0U2QTQgLyogQ3ljbGljUmVkdW5kYW5jeUNoZWNrLmNwcCAq
LzsgfTsKIAkJNTNDQkI4MzMxMzRFNDJGMzAwMUNFNkE0IC8qIEN5Y2xpY1JlZHVuZGFuY3lDaGVj
ay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNDQkI4
MzExMzRFNDJGMzAwMUNFNkE0IC8qIEN5Y2xpY1JlZHVuZGFuY3lDaGVjay5oICovOyB9OwogCQk1
REI5QUM5NzBGNzIyQzM2MDA2ODQ2NDEgLyogQUhFTV9fX18uVFRGIGluIENvcHkgRm9udCBGaWxl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQTdGMTBDMjBDQjNDMTAzMDAw
M0JEQzkgLyogQUhFTV9fX18uVFRGICovOyB9OwpAQCAtMjgzLDYgKzI4NCw3IEBACiAJCTUxNUY0
MjlCMTVDMDc4NzIwMDdDOEY5MCAvKiBQbHVnaW5TY3JpcHRhYmxlT2JqZWN0T3ZlcnJpZGVzQWxs
UHJvcGVydGllcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQbHVn
aW5TY3JpcHRhYmxlT2JqZWN0T3ZlcnJpZGVzQWxsUHJvcGVydGllcy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUxODVGNjlFMTA3MTRBNTcwMDdBQTM5MyAvKiBIaXN0b3J5RGVs
ZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSGlzdG9yeURlbGVnYXRl
Lmg7IHBhdGggPSBtYWMvSGlzdG9yeURlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUxODVGNjlGMTA3MTRBNTcwMDdBQTM5MyAvKiBIaXN0b3J5RGVsZWdhdGUubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgZmlsZUVuY29kaW5nID0gNDsgbmFtZSA9IEhpc3RvcnlEZWxlZ2F0ZS5tbTsg
cGF0aCA9IG1hYy9IaXN0b3J5RGVsZWdhdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTUxQ0FDQkQ3MTVEOTZGRDAwMEVCNTNBMiAvKiBFdmFsdWF0ZUpTV2l0aGluTlBQX05ldy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBFdmFsdWF0ZUpTV2l0aGlu
TlBQX05ldy5jcHA7IHBhdGggPSBUZXN0TmV0c2NhcGVQbHVnSW4vVGVzdHMvRXZhbHVhdGVKU1dp
dGhpbk5QUF9OZXcuY3BwOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTUzQ0JCODMw
MTM0RTQyRjMwMDFDRTZBNCAvKiBDeWNsaWNSZWR1bmRhbmN5Q2hlY2suY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3ljbGljUmVkdW5kYW5jeUNoZWNrLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNDQkI4MzExMzRFNDJGMzAwMUNFNkE0IC8qIEN5
Y2xpY1JlZHVuZGFuY3lDaGVjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
eWNsaWNSZWR1bmRhbmN5Q2hlY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNURF
OEFFNDMxM0EyQzE1ODAwRDZBMzdEIC8qIGxpYldlYkNvcmVUZXN0U3VwcG9ydC5keWxpYiAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9ICJjb21waWxlZC5t
YWNoLW8uZHlsaWIiOyBwYXRoID0gbGliV2ViQ29yZVRlc3RTdXBwb3J0LmR5bGliOyBzb3VyY2VU
cmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwpAQCAtNTQxLDYgKzU0Myw3IEBACiAJCQkJMUEz
MUVCMzYxMzQ2NkFDMTAwMDE3MzcyIC8qIG1hYyAqLywKIAkJCQkxQTIxNUE3NTExRjI2MDcyMDA4
QUQwRjUgLyogRG9jdW1lbnRPcGVuSW5EZXN0cm95U3RyZWFtLmNwcCAqLywKIAkJCQlDMEU3MjA3
NDEyODFDODI4MDA0RUY1MzMgLyogRXZhbHVhdGVKU0FmdGVyUmVtb3ZpbmdQbHVnaW5FbGVtZW50
LmNwcCAqLywKKwkJCQk1MUNBQ0JENzE1RDk2RkQwMDBFQjUzQTIgLyogRXZhbHVhdGVKU1dpdGhp
bk5QUF9OZXcuY3BwICovLAogCQkJCTRBRDZBMTEzMTNDODEyNDAwMEVBOTczNyAvKiBGb3JtVmFs
dWUuY3BwICovLAogCQkJCTFBRkY2NkJCMTM3REVBODMwMDc5MTY5NiAvKiBHZXRVUkxOb3RpZnlX
aXRoVVJMVGhhdEZhaWxzVG9Mb2FkLmNwcCAqLywKIAkJCQkxQTVDQzFGMzEzN0REMkVDMDBBNUQ3
RTcgLyogR2V0VVJMV2l0aEphdmFTY3JpcHRVUkwuY3BwICovLApAQCAtOTA2LDYgKzkwOSw3IEBA
CiAJCQkJMUE2NkMzNTExNDU3NkE5MjAwOTlBMTE1IC8qIENvbnRlbnRzU2NhbGVGYWN0b3IuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTE1RjQyOUMxNUMwNzg3MjAwN0M4RjkwIC8qIFBsdWdpblNj
cmlwdGFibGVPYmplY3RPdmVycmlkZXNBbGxQcm9wZXJ0aWVzLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTUxMDY4MDNFMTVDQzdCMTAwMDFBOEEyMyAvKiBTbG93TlBQTmV3LmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTUxQ0FDQkQ4MTVEOTZGRDAwMEVCNTNBMiAvKiBFdmFsdWF0ZUpTV2l0aGluTlBQ
X05ldy5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L1Rlc3ROZXRzY2FwZVBsdWdJbi9UZXN0cy9FdmFsdWF0ZUpTV2l0aGluTlBQX05ldy5jcHAgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9UZXN0TmV0c2NhcGVQbHVnSW4vVGVzdHMvRXZhbHVhdGVKU1dp
dGhpbk5QUF9OZXcuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiYWVi
NzUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0TmV0c2NhcGVQ
bHVnSW4vVGVzdHMvRXZhbHVhdGVKU1dpdGhpbk5QUF9OZXcuY3BwCkBAIC0wLDAgKzEsNTYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiUGx1Z2luVGVzdC5oIgorCisjaW5jbHVkZSAiUGx1Z2lu
T2JqZWN0LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7CisKKy8vIEV4ZWN1dGluZyBKUyB3aXRo
aW4gTlBQX05ldyB3aGVuIGluaXRpYWxpemluZyBhc3luY2hyb25vdXNseSBzaG91bGQgbm90IGJl
IGFibGUgdG8gZGVhZGxvY2sgd2l0aCB0aGUgV2ViUHJvY2VzcworCitjbGFzcyBFdmFsdXRlSlNX
aXRoaW5OUFBfTmV3IDogcHVibGljIFBsdWdpblRlc3QgeworcHVibGljOgorICAgIEV2YWx1dGVK
U1dpdGhpbk5QUF9OZXcoTlBQLCBjb25zdCBzdHJpbmcmIGlkZW50aWZpZXIpOworCitwcml2YXRl
OgorICAgIHZpcnR1YWwgTlBFcnJvciBOUFBfTmV3KE5QTUlNRVR5cGUgcGx1Z2luVHlwZSwgdWlu
dDE2X3QgbW9kZSwgaW50MTZfdCBhcmdjLCBjaGFyKiBhcmduW10sIGNoYXIqIGFyZ3ZbXSwgTlBT
YXZlZERhdGEgKnNhdmVkKTsKKworfTsKKworRXZhbHV0ZUpTV2l0aGluTlBQX05ldzo6RXZhbHV0
ZUpTV2l0aGluTlBQX05ldyhOUFAgbnBwLCBjb25zdCBzdHJpbmcmIGlkZW50aWZpZXIpCisgICAg
OiBQbHVnaW5UZXN0KG5wcCwgaWRlbnRpZmllcikKK3sKK30KKworTlBFcnJvciBFdmFsdXRlSlNX
aXRoaW5OUFBfTmV3OjpOUFBfTmV3KE5QTUlNRVR5cGUgcGx1Z2luVHlwZSwgdWludDE2X3QgbW9k
ZSwgaW50MTZfdCBhcmdjLCBjaGFyKiBhcmduW10sIGNoYXIqIGFyZ3ZbXSwgTlBTYXZlZERhdGEg
KnNhdmVkKQoreworICAgIC8vIEdpdmUgdGhlIFdlYlByb2Nlc3MgZW5vdWdoIHRpbWUgdG8gYmUg
ZGVhZGxvY2tlZCB3YWl0aW5nIGZvciB0aGUgUGx1Z2luUHJvY2Vzcy4KKyAgICB1c2xlZXAoMTUw
MDApOworICAgIGV4ZWN1dGVTY3JpcHQoInZhciB0aGVMb2NhdGlvbiA9IHdpbmRvdy5sb2NhdGlv
bjsiKTsKKyAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7Cit9CisKK3N0YXRpYyBQbHVnaW5UZXN0
OjpSZWdpc3RlcjxFdmFsdXRlSlNXaXRoaW5OUFBfTmV3PiByZWdpc3RyYXIoImV2YWx1dGUtanMt
d2l0aGluLW5wcC1uZXciKTsK
</data>
<flag name="review"
          id="168134"
          type_id="1"
          status="+"
          setter="ap"
    />
    <flag name="commit-queue"
          id="168138"
          type_id="3"
          status="-"
          setter="gustavo"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158104</attachid>
            <date>2012-08-13 14:26:32 -0700</date>
            <delta_ts>2012-08-13 14:26:32 -0700</delta_ts>
            <desc>Reviewed patch for EWS testing</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>24159</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlOTg4ZDU2Li41YWFjYWVhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDgt
MTMgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFdpdGggYXN5
bmNocm9ub3VzIHBsdWctaW4gaW5pdGlhbGl6YXRpb24sIFdlYlByb2Nlc3MgYW5kIFBsdWdpblBy
b2Nlc3MgY2FuIGRlYWRsb2NrCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMjA2MjEyNT4gYW5k
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Mzg5NAorCisgICAgICAg
IFJldmlld2VkIGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9t
YWMtd2syL3BsdWdpbnMvYXN5Y2hyb25vdXMtZGVhZGxvY2std2l0aC10aW1lci1hbmQtZXZhbHVh
dGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL3BsdWdp
bnMvYXN5Y2hyb25vdXMtZGVhZGxvY2std2l0aC10aW1lci1hbmQtZXZhbHVhdGUuaHRtbDogQWRk
ZWQuCisKIDIwMTItMDgtMTMgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogZ2V0IHJpZCBvZiBiZWZvcmVUZXh0Q2hhbmdlZApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5zL2FzeWNocm9u
b3VzLWRlYWRsb2NrLXdpdGgtdGltZXItYW5kLWV2YWx1YXRlLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy13azIvcGx1Z2lucy9hc3ljaHJvbm91cy1kZWFkbG9jay13aXRo
LXRpbWVyLWFuZC1ldmFsdWF0ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uOGRhZjY2OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy13azIvcGx1Z2lucy9hc3ljaHJvbm91cy1kZWFkbG9jay13aXRoLXRpbWVyLWFuZC1l
dmFsdWF0ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4IEBACisKK1Rlc3QgdGhhdCBhIHBsdWct
aW4gaW5pdGlhbGl6aW5nIGFzeW5jaHJvbm91cyB0aGF0IGNhbGxzIG91dCB0byBOUFBfRXZhbHVh
dGUgd2l0aGluIE5QUF9OZXcgZG9lc24ndCBkZWFkbG9jayBhZ2FpbnN0IGEgV2ViUHJvY2VzcyB0
aGF0IGlzIHRyeWluZyB0byBjYWxsIGluIHRvIHRoZSBwbHVnLWluIGVsZW1lbnQsIHdhaXRpbmcg
Zm9yIGl0IHRvIGNvbXBsZXRlIGluaXRpYWxpemF0aW9uLgorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworUEFTUyBXYWl0aW5nIG9uIHN5bmNocm9ub3VzIGluaXRpYWxpemF0aW9uIG9m
IHRoZSBwbHVnLWluIGluc3RhbmNlIGRpZCBub3QgZGVhZGxvY2sgdGhlIFdlYiBhbmQgUGx1Z2lu
IHByb2Nlc3Nlcy4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9w
bHVnaW5zL2FzeWNocm9ub3VzLWRlYWRsb2NrLXdpdGgtdGltZXItYW5kLWV2YWx1YXRlLmh0bWwg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3BsdWdpbnMvYXN5Y2hyb25vdXMtZGVhZGxv
Y2std2l0aC10aW1lci1hbmQtZXZhbHVhdGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi41ZWIwZjBlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjLXdrMi9wbHVnaW5zL2FzeWNocm9ub3VzLWRlYWRsb2NrLXdpdGgtdGltZXItYW5kLWV2
YWx1YXRlLmh0bWwKQEAgLTAsMCArMSwzNiBAQAorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4K
K2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJl
bmNlKCJXZWJLaXQyQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb25FbmFibGVkIiwgIjEi
KTsKKyAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0MkFzeW5jaHJvbm91
c1BsdWdpbkluaXRpYWxpemF0aW9uRW5hYmxlZEZvckFsbFBsdWdpbnMiLCAiMSIpOworICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwor
fQorCitmdW5jdGlvbiBydW5UZXN0KCkgCit7CisgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lcikg
eworICAgICAgICBkZWJ1ZygiVGhpcyB0ZXN0IGNhbiBvbmx5IHJ1biBmcm9tIHdpdGhpbiBEdW1w
UmVuZGVyVHJlZSBiZWNhdXNlIGl0IHJlcXVpcmVzIFRlc3ROZXRzY2FwZVBsdWdpbi5cbiIpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCQorCS8vIFRoaXMgY2FsbCBzaG91bGQgZm9yY2Ugc3lu
Y2hyb25vdXMgaW5pdGlhbGl6YXRpb24gb2YgdGhlIHBsdWctaW4gaW5zdGFuY2Ugd2hpY2ggc2hv
dWxkICpub3QqIHJlc3VsdCBpbiBhIFdlYiB2cyBQbHVnaW4gcHJvY2VzcyBkZWFkbG9jay4KKwl2
YXIgdW51c2VkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIlRlc3RFbGVtZW50IikubWFkZVVw
UHJvcGVydHk7CisKKyAgICB0ZXN0UGFzc2VkKCJXYWl0aW5nIG9uIHN5bmNocm9ub3VzIGluaXRp
YWxpemF0aW9uIG9mIHRoZSBwbHVnLWluIGluc3RhbmNlIGRpZCBub3QgZGVhZGxvY2sgdGhlIFdl
YiBhbmQgUGx1Z2luIHByb2Nlc3Nlcy4iKTsKKworICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OworfQorPC9zY3JpcHQ+CisKKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0ic2V0VGltZW91dCgncnVu
VGVzdCgpJywgMCkiPgorPGVtYmVkIGlkPSJUZXN0RWxlbWVudCIgdHlwZT0iYXBwbGljYXRpb24v
eC13ZWJraXQtdGVzdC1uZXRzY2FwZSIgdGVzdD0iZXZhbHV0ZS1qcy13aXRoaW4tbnBwLW5ldyI+
PC9lbWJlZD4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8L2JvZHk+CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdCB0aGF0IGEgcGx1Zy1p
biBpbml0aWFsaXppbmcgYXN5bmNocm9ub3VzIHRoYXQgY2FsbHMgb3V0IHRvIE5QUF9FdmFsdWF0
ZSB3aXRoaW4gTlBQX05ldyBkb2Vzbid0IGRlYWRsb2NrIGFnYWluc3QgYSBXZWJQcm9jZXNzIHRo
YXQgaXMgdHJ5aW5nIHRvIGNhbGwgaW4gdG8gdGhlIHBsdWctaW4gZWxlbWVudCwgd2FpdGluZyBm
b3IgaXQgdG8gY29tcGxldGUgaW5pdGlhbGl6YXRpb24uIik7Cis8L3NjcmlwdD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpp
bmRleCBiZjU3OWQ2Li5hY2EwYTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcgQEAKKzIwMTIt
MDgtMTMgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFdpdGgg
YXN5bmNocm9ub3VzIHBsdWctaW4gaW5pdGlhbGl6YXRpb24sIFdlYlByb2Nlc3MgYW5kIFBsdWdp
blByb2Nlc3MgY2FuIGRlYWRsb2NrCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMjA2MjEyNT4g
YW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Mzg5NAorCisgICAg
ICAgIFJldmlld2VkIGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCisKKyAgICAgICAgQSBmZXcgdGhp
bmdzIHdlcmUgaW4gcGxheSBoZXJlOgorICAgICAgICAtIFRoZSBXZWJQcm9jZXNzIHRob3VnaHQg
dGhlIHBsdWctaW4gd2FzIGRvbmUgaW5pdGlhbGl6aW5nIGJ1dCBpdCB3YXNuJ3QuCisgICAgICAg
IC0gVGhlIHN5bmMgbWVzc2FnZSBvdXQgZnJvbSB0aGUgUGx1Z2luUHJvY2VzcyB3YXMgbm90IGJl
aW5nIGhhbmRsZWQgYnkgdGhlIFdlYlByb2Nlc3MuCisKKyAgICAgICAgRXhwb3NlIHRoZSBhYmls
aXR5IGZvciB0aGUgUGx1Z2luUHJvY2VzcyB0byBhY3QgYXMgaWYgaXQgaXMgaGFuZGxpbmcgYSBz
eW5jIG1lc3NhZ2UgYW5kIG5lZWRzIG1lc3NhZ2VzIGRpc3BhdGNoZWQ6CisgICAgICAgICogUGxh
dGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmg6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9u
OjppbmNyZW1lbnREaXNwYXRjaE1lc3NhZ2VNYXJrZWREaXNwYXRjaFdoZW5XYWl0aW5nRm9yU3lu
Y1JlcGx5Q291bnQpOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6ZGVjcmVtZW50RGlz
cGF0Y2hNZXNzYWdlTWFya2VkRGlzcGF0Y2hXaGVuV2FpdGluZ0ZvclN5bmNSZXBseUNvdW50KToK
KworICAgICAgICAqIFBsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UGx1Z2luQ29udHJvbGxlclByb3h5OjpQbHVnaW5Db250cm9sbGVyUHJv
eHkpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Db250cm9sbGVyUHJveHk6OnNldEluaXRpYWxp
emF0aW9uUmVwbHkpOiBTYXZlIHRoZSBkZWxheWVkIHJlcGx5IGZvciBzeW5jaHJvbm91cyBpbml0
aWFsaXphdGlvbi4KKyAgICAgICAgKFdlYktpdDo6UGx1Z2luQ29udHJvbGxlclByb3h5Ojp0YWtl
SW5pdGlhbGl6YXRpb25SZXBseSk6IEdpdmUgYmFjayB0aGUgZGVsYXllZCByZXBseSBmb3IgaW5p
dGlhbGl6YXRpb24gY29tcGxldGlvbi4KKyAgICAgICAgKFdlYktpdDo6UGx1Z2luQ29udHJvbGxl
clByb3h5Ojppbml0aWFsaXplKToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRy
b2xsZXJQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Db250cm9sbGVyUHJveHk6Omlz
SW5pdGlhbGl6aW5nKTogQWNjZXNzb3Igc28gV2ViUHJvY2Vzc0Nvbm5lY3Rpb24ga25vd3Mgd2hl
dGhlciBvciBub3QgdG8gc3RvcmUgdGhlCisgICAgICAgICAgZGVsYXllZCByZXBseSBmb3IgbGF0
ZXIuCisKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLm1lc3Nh
Z2VzLmluOiBNYWtlIHRoZSBzeW5jaHJvbm91cyBmb3JtIG9mICJDcmVhdGVQbHVnaW4iIGhhdmUg
YSBkZWxheWVkIHJlcGx5LgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5l
Y3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRl
UGx1Z2luKTogU3RvcmUgYXdheSB0aGUgZGVsYXllZCByZXBseSBtZXNzYWdlIHNvIGl0IGNhbiBi
ZSByZXNwb25kZWQgdG8gYWZ0ZXIKKyAgICAgICAgICBhc3luY2hyb25vdXMgaW5pdGlhbGl6YXRp
b24gY29tcGxldGVzLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3Jl
YXRlUGx1Z2luQXN5bmNocm9ub3VzbHkpOiBJZiB0aGVyZSBpcyBhIHN0b3JlZCBhd2F5IGRlbGF5
ZWQgcmVwbHkgbWVzc2FnZSwgcmVzcG9uZCB0bworICAgICAgICAgIGl0IGluc3RlYWQgb2Ygc2Vu
ZGluZyB0aGUgYXN5bmNocm9ub3VzbHkgcmVwbHkuCisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9X
ZWJQcm9jZXNzQ29ubmVjdGlvbi5oOgorICAgICAgICAoV2ViUHJvY2Vzc0Nvbm5lY3Rpb24pOgor
CiAyMDEyLTA4LTEzICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5j
b20+CiAKICAgICAgICAgW1NPVVBdW1dLMl0gTWlzc2luZyBMb2NhbFRlcm1pbmF0aW9uRGlzYWJs
ZXIgaW4gV2ViQ29va2llTWFuYWdlcjo6c2V0Q29va2llUGVyc2lzdGVudFN0b3JhZ2UoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmggYi9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaAppbmRleCBkZGY1OTFm
Li5iODQxMGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nv
bm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rp
b24uaApAQCAtMjA3LDYgKzIwNyw5IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIHdha2VVcFJ1
bkxvb3AoKTsKIAorICAgIHZvaWQgaW5jcmVtZW50RGlzcGF0Y2hNZXNzYWdlTWFya2VkRGlzcGF0
Y2hXaGVuV2FpdGluZ0ZvclN5bmNSZXBseUNvdW50KCkgeyArK21faW5EaXNwYXRjaE1lc3NhZ2VN
YXJrZWREaXNwYXRjaFdoZW5XYWl0aW5nRm9yU3luY1JlcGx5Q291bnQ7IH0KKyAgICB2b2lkIGRl
Y3JlbWVudERpc3BhdGNoTWVzc2FnZU1hcmtlZERpc3BhdGNoV2hlbldhaXRpbmdGb3JTeW5jUmVw
bHlDb3VudCgpIHsgLS1tX2luRGlzcGF0Y2hNZXNzYWdlTWFya2VkRGlzcGF0Y2hXaGVuV2FpdGlu
Z0ZvclN5bmNSZXBseUNvdW50OyB9CisKIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4gY2xhc3MgTWVzc2FnZSB7CiAgICAgcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwCmluZGV4IGFiNjBmOTQu
LjJhZDQxZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2lu
Q29udHJvbGxlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1Bs
dWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlIDxXZWJD
b3JlL0dyYXBoaWNzQ29udGV4dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSWRlbnRpZmllclJlcC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVGVt
cG9yYXJ5Q2hhbmdlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNpZiBQ
TEFURk9STShNQUMpCkBAIC02Niw2ICs2Nyw3IEBAIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6UGx1
Z2luQ29udHJvbGxlclByb3h5KFdlYlByb2Nlc3NDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBjCiAj
aWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgICwgbV9pc0FjY2VsZXJhdGVkQ29t
cG9zaXRpbmdFbmFibGVkKGNyZWF0aW9uUGFyYW1ldGVycy5pc0FjY2VsZXJhdGVkQ29tcG9zaXRp
bmdFbmFibGVkKQogI2VuZGlmCisgICAgLCBtX2lzSW5pdGlhbGl6aW5nKGZhbHNlKQogICAgICwg
bV9wYWludFRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJlBsdWdpbkNvbnRyb2xsZXJQcm94
eTo6cGFpbnQpCiAgICAgLCBtX3BsdWdpbkRlc3RydWN0aW9uUHJvdGVjdENvdW50KDApCiAgICAg
LCBtX3BsdWdpbkRlc3Ryb3lUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZQbHVnaW5Db250
cm9sbGVyUHJveHk6OmRlc3Ryb3kpCkBAIC05MSw5ICs5MywyMiBAQCBQbHVnaW5Db250cm9sbGVy
UHJveHk6On5QbHVnaW5Db250cm9sbGVyUHJveHkoKQogICAgICAgICByZWxlYXNlTlBPYmplY3Qo
bV9wbHVnaW5FbGVtZW50TlBPYmplY3QpOwogfQogCit2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94
eTo6c2V0SW5pdGlhbGl6YXRpb25SZXBseShQYXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNz
Q29ubmVjdGlvbjo6Q3JlYXRlUGx1Z2luOjpEZWxheWVkUmVwbHk+IHJlcGx5KQoreworICAgIEFT
U0VSVCghbV9pbml0aWFsaXphdGlvblJlcGx5KTsKKyAgICBtX2luaXRpYWxpemF0aW9uUmVwbHkg
PSByZXBseTsKK30KKworUGFzc1JlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246
OkNyZWF0ZVBsdWdpbjo6RGVsYXllZFJlcGx5PiBQbHVnaW5Db250cm9sbGVyUHJveHk6OnRha2VJ
bml0aWFsaXphdGlvblJlcGx5KCkKK3sKKyAgICByZXR1cm4gbV9pbml0aWFsaXphdGlvblJlcGx5
LnJlbGVhc2UoKTsKK30KKwogYm9vbCBQbHVnaW5Db250cm9sbGVyUHJveHk6OmluaXRpYWxpemUo
Y29uc3QgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzJiBjcmVhdGlvblBhcmFtZXRlcnMpCiB7CiAg
ICAgQVNTRVJUKCFtX3BsdWdpbik7CisgICAgCisgICAgVGVtcG9yYXJ5Q2hhbmdlPGJvb2w+IGlu
aXRpYWxpemluZyhtX2lzSW5pdGlhbGl6aW5nLCB0cnVlKTsKIAogICAgIG1fcGx1Z2luID0gTmV0
c2NhcGVQbHVnaW46OmNyZWF0ZShQbHVnaW5Qcm9jZXNzOjpzaGFyZWQoKS5uZXRzY2FwZVBsdWdp
bk1vZHVsZSgpKTsKICAgICBpZiAoIW1fcGx1Z2luKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oIGIvU291cmNlL1dlYktp
dDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaAppbmRleCA0NmRhMWE0Li5h
OWQzNWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNv
bnRyb2xsZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2lu
Q29udHJvbGxlclByb3h5LmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJQbHVnaW5Db250
cm9sbGVyLmgiCiAjaW5jbHVkZSAiUGx1Z2luQ29udHJvbGxlclByb3h5TWVzc2FnZXMuaCIKICNp
bmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzQ29ubmVjdGlv
bk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3Rm
L05vbmNvcHlhYmxlLmg+CiAKQEAgLTcwLDYgKzcxLDExIEBAIHB1YmxpYzoKIAogICAgIFBsdWdp
bkNvbnRyb2xsZXIqIGFzUGx1Z2luQ29udHJvbGxlcigpIHsgcmV0dXJuIHRoaXM7IH0KIAorICAg
IGJvb2wgaXNJbml0aWFsaXppbmcoKSBjb25zdCB7IHJldHVybiBtX2lzSW5pdGlhbGl6aW5nOyB9
CisgICAgCisgICAgdm9pZCBzZXRJbml0aWFsaXphdGlvblJlcGx5KFBhc3NSZWZQdHI8TWVzc2Fn
ZXM6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpDcmVhdGVQbHVnaW46OkRlbGF5ZWRSZXBseT4pOwor
ICAgIFBhc3NSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpDcmVhdGVQbHVn
aW46OkRlbGF5ZWRSZXBseT4gdGFrZUluaXRpYWxpemF0aW9uUmVwbHkoKTsKKwogcHJpdmF0ZToK
ICAgICBQbHVnaW5Db250cm9sbGVyUHJveHkoV2ViUHJvY2Vzc0Nvbm5lY3Rpb24qLCBjb25zdCBQ
bHVnaW5DcmVhdGlvblBhcmFtZXRlcnMmKTsKIApAQCAtMTU5LDYgKzE2NSw5IEBAIHByaXZhdGU6
CiAgICAgU3RyaW5nIG1fdXNlckFnZW50OwogICAgIGJvb2wgbV9pc1ByaXZhdGVCcm93c2luZ0Vu
YWJsZWQ7CiAgICAgYm9vbCBtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQ7CisgICAg
Ym9vbCBtX2lzSW5pdGlhbGl6aW5nOworCisgICAgUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNz
Q29ubmVjdGlvbjo6Q3JlYXRlUGx1Z2luOjpEZWxheWVkUmVwbHk+IG1faW5pdGlhbGl6YXRpb25S
ZXBseTsKIAogICAgIFJlZlB0cjxQbHVnaW4+IG1fcGx1Z2luOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDE2
MjFjYTAuLjFkOTVkZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3Mv
V2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nl
c3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0yNjMsMTcgKzI2MywyMyBAQCB2b2lkIFdl
YlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGVQbHVnaW5JbnRlcm5hbChjb25zdCBQbHVnaW5DcmVh
dGlvblBhcmFtZXRlcnMmCiAjZW5kaWYKIH0KIAotdm9pZCBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6
Y3JlYXRlUGx1Z2luKGNvbnN0IFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVycyYgY3JlYXRpb25QYXJh
bWV0ZXJzLCBib29sJiByZXN1bHQsIGJvb2wmIHdhbnRzV2hlZWxFdmVudHMsIHVpbnQzMl90JiBy
ZW1vdGVMYXllckNsaWVudElEKQordm9pZCBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlUGx1
Z2luKGNvbnN0IFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVycyYgY3JlYXRpb25QYXJhbWV0ZXJzLCBQ
YXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Q3JlYXRlUGx1Z2luOjpE
ZWxheWVkUmVwbHk+IHJlcGx5KQogewogICAgIFBsdWdpbkNvbnRyb2xsZXJQcm94eSogcGx1Z2lu
Q29udHJvbGxlclByb3h5ID0gbV9wbHVnaW5Db250cm9sbGVycy5nZXQoY3JlYXRpb25QYXJhbWV0
ZXJzLnBsdWdpbkluc3RhbmNlSUQpOwogCi0gICAgLy8gVGhlIHBsdWctaW4gd2UncmUgYmVpbmcg
YXNrZWQgdG8gY3JlYXRlIHN5bmNocm9ub3VzbHkgbWlnaHQgYWxyZWFkeSBleGlzdCBpZiB3ZSBq
dXN0IGZpbmlzaGVkIGNyZWF0aW5nIGl0IGFzeW5jaHJvbm91c2x5LgotICAgIC8vIEluIHRoYXQg
Y2FzZSB3ZSBuZWVkIHRvIG5vdCBjcmVhdGUgaXQgYWdhaW4gKGJ1dCBhbHNvIG5lZWQgdG8gcmV0
dXJuIHRoZSBjb3JyZWN0IGluZm9ybWF0aW9uIGFib3V0IGl0cyBjcmVhdGlvbikuCisgICAgLy8g
VGhlIGNvbnRyb2xsZXIgcHJveHkgZm9yIHRoZSBwbHVnLWluIHdlJ3JlIGJlaW5nIGFza2VkIHRv
IGNyZWF0ZSBzeW5jaHJvbm91c2x5IG1pZ2h0IGFscmVhZHkgZXhpc3QgaWYgaXQgd2FzIHJlcXVl
c3RlZCBhc3luY2hyb25vdXNseSBiZWZvcmUuCiAgICAgaWYgKHBsdWdpbkNvbnRyb2xsZXJQcm94
eSkgewotICAgICAgICByZXN1bHQgPSB0cnVlOwotICAgICAgICB3YW50c1doZWVsRXZlbnRzID0g
cGx1Z2luQ29udHJvbGxlclByb3h5LT53YW50c1doZWVsRXZlbnRzKCk7CisgICAgICAgIC8vIEl0
IG1pZ2h0IHN0aWxsIGJlIGluIHRoZSBtaWRkbGUgb2YgaW5pdGlhbGl6YXRpb24gaW4gd2hpY2gg
Y2FzZSB3ZSBoYXZlIHRvIGxldCB0aGF0IGluaXRpYWxpemF0aW9uIGNvbXBsZXRlIGFuZCByZXNw
b25kIHRvIHRoaXMgbWVzc2FnZSBsYXRlci4KKyAgICAgICAgaWYgKHBsdWdpbkNvbnRyb2xsZXJQ
cm94eS0+aXNJbml0aWFsaXppbmcoKSkgeworICAgICAgICAgICAgcGx1Z2luQ29udHJvbGxlclBy
b3h5LT5zZXRJbml0aWFsaXphdGlvblJlcGx5KHJlcGx5KTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gSWYgaXRzIGluaXRpYWxpemF0aW9uIGlz
IGNvbXBsZXRlIHRoZW4gd2UgbmVlZCB0byByZXNwb25kIHRvIHRoaXMgbWVzc2FnZSB3aXRoIHRo
ZSBjb3JyZWN0IGluZm9ybWF0aW9uIGFib3V0IGl0cyBjcmVhdGlvbi4KICNpZiBQTEFURk9STShN
QUMpCi0gICAgICAgIHJlbW90ZUxheWVyQ2xpZW50SUQgPSBwbHVnaW5Db250cm9sbGVyUHJveHkt
PnJlbW90ZUxheWVyQ2xpZW50SUQoKTsKKyAgICAgICAgcmVwbHktPnNlbmQodHJ1ZSwgcGx1Z2lu
Q29udHJvbGxlclByb3h5LT53YW50c1doZWVsRXZlbnRzKCksIHBsdWdpbkNvbnRyb2xsZXJQcm94
eS0+cmVtb3RlTGF5ZXJDbGllbnRJRCgpKTsKKyNlbHNlCisgICAgICAgIHJlcGx5LT5zZW5kKHRy
dWUsIHBsdWdpbkNvbnRyb2xsZXJQcm94eS0+d2FudHNXaGVlbEV2ZW50cygpLCAwKTsKICNlbmRp
ZgogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjgzLDcgKzI4OSwxMiBAQCB2b2lkIFdlYlBy
b2Nlc3NDb25uZWN0aW9uOjpjcmVhdGVQbHVnaW4oY29uc3QgUGx1Z2luQ3JlYXRpb25QYXJhbWV0
ZXJzJiBjcmVhdGlvbgogICAgIGlmIChjcmVhdGlvblBhcmFtZXRlcnMuYXN5bmNocm9ub3VzQ3Jl
YXRpb25JbmNvbXBsZXRlKQogICAgICAgICBtX2FzeW5jaHJvbm91c0luc3RhbmNlSURzVG9JZ25v
cmUuYWRkKGNyZWF0aW9uUGFyYW1ldGVycy5wbHVnaW5JbnN0YW5jZUlEKTsKICAgICAKKyAgICBi
b29sIHJlc3VsdCA9IGZhbHNlOworICAgIGJvb2wgd2FudHNXaGVlbEV2ZW50cyA9IGZhbHNlOwor
ICAgIHVpbnQzMl90IHJlbW90ZUxheWVyQ2xpZW50SUQgPSAwOwogICAgIGNyZWF0ZVBsdWdpbklu
dGVybmFsKGNyZWF0aW9uUGFyYW1ldGVycywgcmVzdWx0LCB3YW50c1doZWVsRXZlbnRzLCByZW1v
dGVMYXllckNsaWVudElEKTsKKyAgICAKKyAgICByZXBseS0+c2VuZChyZXN1bHQsIHdhbnRzV2hl
ZWxFdmVudHMsIHJlbW90ZUxheWVyQ2xpZW50SUQpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NDb25u
ZWN0aW9uOjpjcmVhdGVQbHVnaW5Bc3luY2hyb25vdXNseShjb25zdCBQbHVnaW5DcmVhdGlvblBh
cmFtZXRlcnMmIGNyZWF0aW9uUGFyYW1ldGVycykKQEAgLTI5NywxNiArMzA4LDMzIEBAIHZvaWQg
V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZVBsdWdpbkFzeW5jaHJvbm91c2x5KGNvbnN0IFBs
dWdpbkNyZWF0aW9uUGFyYW1lCiAgICAgCiAgICAgLy8gVGhpcyB2ZXJzaW9uIG9mIENyZWF0ZVBs
dWdpbiBpcyBvbmx5IHVzZWQgYnkgcGx1Zy1pbnMgdGhhdCBhcmUga25vd24gdG8gYmVoYXZlIHdo
ZW4gc3RhcnRlZCBhc3luY2hyb25vdXNseS4KICAgICBib29sIHJlc3VsdCA9IGZhbHNlOwotICAg
IHVpbnQzMl90IHJlbW90ZUxheWVyQ2xpZW50SUQgPSAwOwogICAgIGJvb2wgd2FudHNXaGVlbEV2
ZW50cyA9IGZhbHNlOworICAgIHVpbnQzMl90IHJlbW90ZUxheWVyQ2xpZW50SUQgPSAwOwogICAg
IAogICAgIGlmIChjcmVhdGlvblBhcmFtZXRlcnMuYXJ0aWZpY2lhbFBsdWdpbkluaXRpYWxpemF0
aW9uRGVsYXlFbmFibGVkKSB7CiAgICAgICAgIHVuc2lnbmVkIGFydGlmaWNpYWxQbHVnaW5Jbml0
aWFsaXphdGlvbkRlbGF5ID0gNTsKICAgICAgICAgc2xlZXAoYXJ0aWZpY2lhbFBsdWdpbkluaXRp
YWxpemF0aW9uRGVsYXkpOwogICAgIH0KIAorICAgIC8vIFNpbmNlIHBsdWctaW4gY3JlYXRpb24g
Y2FuIG9mdGVuIG1lc3NhZ2UgdG8gdGhlIFdlYlByb2Nlc3Mgc3luY2hyb25vdXNseSAod2l0aCBO
UFBfRXZhbHVhdGUgZm9yIGV4YW1wbGUpCisgICAgLy8gd2UgbmVlZCB0byBtYWtlIHN1cmUgdGhh
dCB0aGUgd2ViIHByb2Nlc3Mgd2lsbCBoYW5kbGUgdGhlIHBsdWctaW4gcHJvY2VzcydzIHN5bmNo
cm9ub3VzIG1lc3NhZ2VzLAorICAgIC8vIGV2ZW4gaWYgdGhlIHdlYiBwcm9jZXNzIGlzIHdhaXRp
bmcgb24gYSBzeW5jaHJvbm91cyByZXBseSBpdHNlbGYuCisgICAgLy8gTm9ybWFsbHkgdGhlIHBs
dWctaW4gcHJvY2VzcyBkb2Vzbid0IGdpdmUgaXRzIHN5bmNocm9ub3VzIG1lc3NhZ2VzIHRoZSBz
cGVjaWFsIGZsYWcgdG8gYWxsb3cgZm9yIHRoYXQuCisgICAgLy8gV2UgY2FuIGZvcmNlIGl0IHRv
IGRvIHNvIGJ5IGluY3JlbWVudGluZyB0aGUgIkRpc3BhdGNoTWVzc2FnZU1hcmtlZERpc3BhdGNo
V2hlbldhaXRpbmdGb3JTeW5jUmVwbHkiIGNvdW50LgorICAgIG1fY29ubmVjdGlvbi0+aW5jcmVt
ZW50RGlzcGF0Y2hNZXNzYWdlTWFya2VkRGlzcGF0Y2hXaGVuV2FpdGluZ0ZvclN5bmNSZXBseUNv
dW50KCk7CiAgICAgY3JlYXRlUGx1Z2luSW50ZXJuYWwoY3JlYXRpb25QYXJhbWV0ZXJzLCByZXN1
bHQsIHdhbnRzV2hlZWxFdmVudHMsIHJlbW90ZUxheWVyQ2xpZW50SUQpOworICAgIG1fY29ubmVj
dGlvbi0+ZGVjcmVtZW50RGlzcGF0Y2hNZXNzYWdlTWFya2VkRGlzcGF0Y2hXaGVuV2FpdGluZ0Zv
clN5bmNSZXBseUNvdW50KCk7CisKKyAgICAvLyBJZiBzb21lb25lIGFza2VkIGZvciB0aGlzIHBs
dWctaW4gc3luY2hyb25vdXNseSB3aGlsZSBpdCB3YXMgaW4gdGhlIG1pZGRsZSBvZiBiZWluZyBj
cmVhdGVkIHRoZW4gd2UgbmVlZCBwZXJmb3JtIHRoZQorICAgIC8vIHN5bmNocm9ub3VzIHJlcGx5
IGluc3RlYWQgb2Ygc2VuZGluZyB0aGUgYXN5bmNocm9ub3VzIHJlcGx5LgorICAgIFBsdWdpbkNv
bnRyb2xsZXJQcm94eSogcGx1Z2luQ29udHJvbGxlclByb3h5ID0gbV9wbHVnaW5Db250cm9sbGVy
cy5nZXQoY3JlYXRpb25QYXJhbWV0ZXJzLnBsdWdpbkluc3RhbmNlSUQpOworICAgIEFTU0VSVChw
bHVnaW5Db250cm9sbGVyUHJveHkpOworICAgIGlmIChSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nl
c3NDb25uZWN0aW9uOjpDcmVhdGVQbHVnaW46OkRlbGF5ZWRSZXBseT4gZGVsYXllZFN5bmNSZXBs
eSA9IHBsdWdpbkNvbnRyb2xsZXJQcm94eS0+dGFrZUluaXRpYWxpemF0aW9uUmVwbHkoKSkgewor
ICAgICAgICBkZWxheWVkU3luY1JlcGx5LT5zZW5kKHJlc3VsdCwgd2FudHNXaGVlbEV2ZW50cywg
cmVtb3RlTGF5ZXJDbGllbnRJRCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKKyAgICAvLyBP
dGhlcndpc2UsIHNlbmQgdGhlIGFzeW5jaHJvbm91cyByZXN1bHRzIG5vdy4KICAgICBpZiAoIXJl
c3VsdCkgewogICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmRTeW5jKE1lc3NhZ2VzOjpQbHVnaW5Q
cm94eTo6RGlkRmFpbFRvQ3JlYXRlUGx1Z2luKCksIE1lc3NhZ2VzOjpQbHVnaW5Qcm94eTo6RGlk
RmFpbFRvQ3JlYXRlUGx1Z2luOjpSZXBseSgpLCBjcmVhdGlvblBhcmFtZXRlcnMucGx1Z2luSW5z
dGFuY2VJRCk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1Bs
dWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1BsdWdp
blByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaAppbmRleCA1M2NhMWU0Li5jZTk4ZTEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0
aW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVj
dGlvbi5oCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5j
bHVkZSAiUGx1Z2luLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5o
IgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
IApAQCAtNzAsNyArNzEsNyBAQCBwcml2YXRlOgogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMuCiAg
ICAgdm9pZCBkaWRSZWNlaXZlV2ViUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlKENvcmVJUEM6OkNv
bm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2Rlciop
OwogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNXZWJQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2UoQ29y
ZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnRE
ZWNvZGVyKiwgT3duUHRyPENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rlcj4mKTsKLSAgICB2b2lkIGNy
ZWF0ZVBsdWdpbihjb25zdCBQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMmLCBib29sJiByZXN1bHQs
IGJvb2wmIHdhbnRzV2hlZWxFdmVudHMsIHVpbnQzMl90JiByZW1vdGVMYXllckNsaWVudElEKTsK
KyAgICB2b2lkIGNyZWF0ZVBsdWdpbihjb25zdCBQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMmLCBQ
YXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Q3JlYXRlUGx1Z2luOjpE
ZWxheWVkUmVwbHk+KTsKICAgICB2b2lkIGNyZWF0ZVBsdWdpbkFzeW5jaHJvbm91c2x5KGNvbnN0
IFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVycyYpOwogICAgIHZvaWQgZGVzdHJveVBsdWdpbih1aW50
NjRfdCBwbHVnaW5JbnN0YW5jZUlELCBib29sIGFzeW5jaHJvbm91c0NyZWF0aW9uSW5jb21wbGV0
ZSk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1dlYlBy
b2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vz
cy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCBmMWE4MzU5Li5lZmZiOTc5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvV2Vi
UHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTI0LDcgKzI0LDcgQEAKIAogbWVzc2Fn
ZXMgLT4gV2ViUHJvY2Vzc0Nvbm5lY3Rpb24gewogICAgICMgQ3JlYXRlcyBhIHBsdWctaW4gaW5z
dGFuY2UgdXNpbmcgdGhlIGdpdmVuIGNyZWF0aW9uIHBhcmFtZXRlcnMuCi0gICAgQ3JlYXRlUGx1
Z2luKFdlYktpdDo6UGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzIHBsdWdpbkNyZWF0aW9uUGFyYW1l
dGVycykgLT4gKGJvb2wgcmVzdWx0LCBib29sIHdhbnRzV2hlZWxFdmVudHMsIHVpbnQzMl90IHJl
bW90ZUxheWVyQ2xpZW50SUQpCisgICAgQ3JlYXRlUGx1Z2luKFdlYktpdDo6UGx1Z2luQ3JlYXRp
b25QYXJhbWV0ZXJzIHBsdWdpbkNyZWF0aW9uUGFyYW1ldGVycykgLT4gKGJvb2wgY3JlYXRpb25S
ZXN1bHQsIGJvb2wgd2FudHNXaGVlbEV2ZW50cywgdWludDMyX3QgcmVtb3RlTGF5ZXJDbGllbnRJ
RCkgRGVsYXllZAogCiAgICAgIyBDcmVhdGVzIGEgcGx1Zy1pbiBpbnN0YW5jZSBhc3luY2hyb25v
dXNseSB1c2luZyB0aGUgZ2l2ZW4gY3JlYXRpb24gcGFyYW1ldGVycy4KICAgICBDcmVhdGVQbHVn
aW5Bc3luY2hyb25vdXNseShXZWJLaXQ6OlBsdWdpbkNyZWF0aW9uUGFyYW1ldGVycyBwbHVnaW5D
cmVhdGlvblBhcmFtZXRlcnMpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggZTQ2M2VjMC4uNzBhMWRlNyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEyLTA4LTEzICBC
cmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBXaXRoIGFzeW5jaHJv
bm91cyBwbHVnLWluIGluaXRpYWxpemF0aW9uLCBXZWJQcm9jZXNzIGFuZCBQbHVnaW5Qcm9jZXNz
IGNhbiBkZWFkbG9jaworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTIwNjIxMjU+IGFuZCBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM4OTQKKworICAgICAgICBSZXZp
ZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292LgorCisgICAgICAgIEFkZCBhIHRlc3QgdGhhdCBj
YWxscyBvdXQgdG8gTlBQX0V2YWx1YXRlIGZvciBzb21lIEpTIGluc2lkZSBvZiBOUFBfTmV3Lgor
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9UZXN0TmV0c2NhcGVQbHVnSW4v
VGVzdHMvRXZhbHVhdGVKU1dpdGhpbk5QUF9OZXcuY3BwOiBBZGRlZC4KKyAgICAgICAgKEV2YWx1
dGVKU1dpdGhpbk5QUF9OZXcpOgorICAgICAgICAoRXZhbHV0ZUpTV2l0aGluTlBQX05ldzo6RXZh
bHV0ZUpTV2l0aGluTlBQX05ldyk6CisgICAgICAgIChFdmFsdXRlSlNXaXRoaW5OUFBfTmV3OjpO
UFBfTmV3KToKKwogMjAxMi0wOC0xMyAgUGV0ZXIgQmV2ZXJsb28gIDxwZXRlckBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBGaXggYXBrIGdlbmVyYXRpb24gZm9yIHRoZSBBbmRy
b2lkIHBsYXRmb3JtCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVy
VHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVt
cFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiNzkwNGY2Li5iZTBj
Y2I2IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5k
ZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTcxLDYgKzcxLDcgQEAKIAkJNTE1
RjQyOUMxNUMwNzg3MjAwN0M4RjkwIC8qIFBsdWdpblNjcmlwdGFibGVPYmplY3RPdmVycmlkZXNB
bGxQcm9wZXJ0aWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxNUY0MjlCMTVDMDc4NzIwMDdDOEY5MCAvKiBQbHVnaW5TY3JpcHRhYmxlT2JqZWN0
T3ZlcnJpZGVzQWxsUHJvcGVydGllcy5jcHAgKi87IH07CiAJCTUxODVGNkIyMTA3MTRFMDcwMDdB
QTM5MyAvKiBIaXN0b3J5RGVsZWdhdGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MTg1RjY5RjEwNzE0QTU3MDA3QUEzOTMgLyogSGlzdG9yeURlbGVn
YXRlLm1tICovOyB9OwogCQk1MTg1RjZCMzEwNzE0RTEyMDA3QUEzOTMgLyogSGlzdG9yeURlbGVn
YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTg1
RjY5RTEwNzE0QTU3MDA3QUEzOTMgLyogSGlzdG9yeURlbGVnYXRlLmggKi87IH07CisJCTUxQ0FD
QkQ4MTVEOTZGRDAwMEVCNTNBMiAvKiBFdmFsdWF0ZUpTV2l0aGluTlBQX05ldy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUNBQ0JENzE1RDk2RkQw
MDBFQjUzQTIgLyogRXZhbHVhdGVKU1dpdGhpbk5QUF9OZXcuY3BwICovOyB9OwogCQk1M0NCQjgz
MjEzNEU0MkYzMDAxQ0U2QTQgLyogQ3ljbGljUmVkdW5kYW5jeUNoZWNrLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzQ0JCODMwMTM0RTQyRjMwMDFD
RTZBNCAvKiBDeWNsaWNSZWR1bmRhbmN5Q2hlY2suY3BwICovOyB9OwogCQk1M0NCQjgzMzEzNEU0
MkYzMDAxQ0U2QTQgLyogQ3ljbGljUmVkdW5kYW5jeUNoZWNrLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0NCQjgzMTEzNEU0MkYzMDAxQ0U2QTQgLyog
Q3ljbGljUmVkdW5kYW5jeUNoZWNrLmggKi87IH07CiAJCTVEQjlBQzk3MEY3MjJDMzYwMDY4NDY0
MSAvKiBBSEVNX19fXy5UVEYgaW4gQ29weSBGb250IEZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEFBN0YxMEMyMENCM0MxMDMwMDAzQkRDOSAvKiBBSEVNX19fXy5UVEYg
Ki87IH07CkBAIC0yODMsNiArMjg0LDcgQEAKIAkJNTE1RjQyOUIxNUMwNzg3MjAwN0M4RjkwIC8q
IFBsdWdpblNjcmlwdGFibGVPYmplY3RPdmVycmlkZXNBbGxQcm9wZXJ0aWVzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBsdWdpblNjcmlwdGFibGVPYmplY3RPdmVy
cmlkZXNBbGxQcm9wZXJ0aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE4
NUY2OUUxMDcxNEE1NzAwN0FBMzkzIC8qIEhpc3RvcnlEZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBIaXN0b3J5RGVsZWdhdGUuaDsgcGF0aCA9IG1hYy9IaXN0b3J5
RGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE4NUY2OUYxMDcxNEE1
NzAwN0FBMzkzIC8qIEhpc3RvcnlEZWxlZ2F0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBleHBsaWNpdEZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBmaWxlRW5jb2Rp
bmcgPSA0OyBuYW1lID0gSGlzdG9yeURlbGVnYXRlLm1tOyBwYXRoID0gbWFjL0hpc3RvcnlEZWxl
Z2F0ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFDQUNCRDcxNUQ5NkZEMDAw
RUI1M0EyIC8qIEV2YWx1YXRlSlNXaXRoaW5OUFBfTmV3LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IEV2YWx1YXRlSlNXaXRoaW5OUFBfTmV3LmNwcDsgcGF0aCA9IFRl
c3ROZXRzY2FwZVBsdWdJbi9UZXN0cy9FdmFsdWF0ZUpTV2l0aGluTlBQX05ldy5jcHA7IHNvdXJj
ZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJNTNDQkI4MzAxMzRFNDJGMzAwMUNFNkE0IC8qIEN5
Y2xpY1JlZHVuZGFuY3lDaGVjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBDeWNsaWNSZWR1bmRhbmN5Q2hlY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1M0NCQjgzMTEzNEU0MkYzMDAxQ0U2QTQgLyogQ3ljbGljUmVkdW5kYW5jeUNoZWNrLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEN5Y2xpY1JlZHVuZGFuY3lDaGVjay5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1REU4QUU0MzEzQTJDMTU4MDBENkEzN0Qg
LyogbGliV2ViQ29yZVRlc3RTdXBwb3J0LmR5bGliICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5keWxpYiI7IHBhdGggPSBs
aWJXZWJDb3JlVGVzdFN1cHBvcnQuZHlsaWI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19E
SVI7IH07CkBAIC01NDEsNiArNTQzLDcgQEAKIAkJCQkxQTMxRUIzNjEzNDY2QUMxMDAwMTczNzIg
LyogbWFjICovLAogCQkJCTFBMjE1QTc1MTFGMjYwNzIwMDhBRDBGNSAvKiBEb2N1bWVudE9wZW5J
bkRlc3Ryb3lTdHJlYW0uY3BwICovLAogCQkJCUMwRTcyMDc0MTI4MUM4MjgwMDRFRjUzMyAvKiBF
dmFsdWF0ZUpTQWZ0ZXJSZW1vdmluZ1BsdWdpbkVsZW1lbnQuY3BwICovLAorCQkJCTUxQ0FDQkQ3
MTVEOTZGRDAwMEVCNTNBMiAvKiBFdmFsdWF0ZUpTV2l0aGluTlBQX05ldy5jcHAgKi8sCiAJCQkJ
NEFENkExMTMxM0M4MTI0MDAwRUE5NzM3IC8qIEZvcm1WYWx1ZS5jcHAgKi8sCiAJCQkJMUFGRjY2
QkIxMzdERUE4MzAwNzkxNjk2IC8qIEdldFVSTE5vdGlmeVdpdGhVUkxUaGF0RmFpbHNUb0xvYWQu
Y3BwICovLAogCQkJCTFBNUNDMUYzMTM3REQyRUMwMEE1RDdFNyAvKiBHZXRVUkxXaXRoSmF2YVNj
cmlwdFVSTC5jcHAgKi8sCkBAIC05MDYsNiArOTA5LDcgQEAKIAkJCQkxQTY2QzM1MTE0NTc2QTky
MDA5OUExMTUgLyogQ29udGVudHNTY2FsZUZhY3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1
MTVGNDI5QzE1QzA3ODcyMDA3QzhGOTAgLyogUGx1Z2luU2NyaXB0YWJsZU9iamVjdE92ZXJyaWRl
c0FsbFByb3BlcnRpZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEwNjgwM0UxNUNDN0IxMDAw
MUE4QTIzIC8qIFNsb3dOUFBOZXcuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTFDQUNCRDgxNUQ5
NkZEMDAwRUI1M0EyIC8qIEV2YWx1YXRlSlNXaXRoaW5OUFBfTmV3LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE5ldHNjYXBlUGx1Z0luL1Rl
c3RzL0V2YWx1YXRlSlNXaXRoaW5OUFBfTmV3LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rl
c3ROZXRzY2FwZVBsdWdJbi9UZXN0cy9FdmFsdWF0ZUpTV2l0aGluTlBQX05ldy5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzA2NmRiNQotLS0gL2Rldi9udWxsCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3ROZXRzY2FwZVBsdWdJbi9UZXN0cy9FdmFsdWF0ZUpT
V2l0aGluTlBQX05ldy5jcHAKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJQbHVnaW5UZXN0LmgiCisKKyNpbmNsdWRlICJQbHVnaW5PYmplY3QuaCIKKwordXNpbmcgbmFt
ZXNwYWNlIHN0ZDsKKworLy8gRXhlY3V0aW5nIEpTIHdpdGhpbiBOUFBfTmV3IHdoZW4gaW5pdGlh
bGl6aW5nIGFzeW5jaHJvbm91c2x5IHNob3VsZCBub3QgYmUgYWJsZSB0byBkZWFkbG9jayB3aXRo
IHRoZSBXZWJQcm9jZXNzCisKK2NsYXNzIEV2YWx1dGVKU1dpdGhpbk5QUF9OZXcgOiBwdWJsaWMg
UGx1Z2luVGVzdCB7CitwdWJsaWM6CisgICAgRXZhbHV0ZUpTV2l0aGluTlBQX05ldyhOUFAsIGNv
bnN0IHN0cmluZyYgaWRlbnRpZmllcik7CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCBOUEVycm9y
IE5QUF9OZXcoTlBNSU1FVHlwZSBwbHVnaW5UeXBlLCB1aW50MTZfdCBtb2RlLCBpbnQxNl90IGFy
Z2MsIGNoYXIqIGFyZ25bXSwgY2hhciogYXJndltdLCBOUFNhdmVkRGF0YSAqKTsKKworfTsKKwor
RXZhbHV0ZUpTV2l0aGluTlBQX05ldzo6RXZhbHV0ZUpTV2l0aGluTlBQX05ldyhOUFAgbnBwLCBj
b25zdCBzdHJpbmcmIGlkZW50aWZpZXIpCisgICAgOiBQbHVnaW5UZXN0KG5wcCwgaWRlbnRpZmll
cikKK3sKK30KKworTlBFcnJvciBFdmFsdXRlSlNXaXRoaW5OUFBfTmV3OjpOUFBfTmV3KE5QTUlN
RVR5cGUgcGx1Z2luVHlwZSwgdWludDE2X3QgbW9kZSwgaW50MTZfdCBhcmdjLCBjaGFyKiBhcmdu
W10sIGNoYXIqIGFyZ3ZbXSwgTlBTYXZlZERhdGEgKnNhdmVkKQoreworICAgIC8vIEdpdmUgdGhl
IFdlYlByb2Nlc3MgZW5vdWdoIHRpbWUgdG8gYmUgZGVhZGxvY2tlZCB3YWl0aW5nIGZvciB0aGUg
UGx1Z2luUHJvY2Vzcy4KKyAgICB1c2xlZXAoMTUwMDApOworICAgIGV4ZWN1dGVTY3JpcHQoInZh
ciB0aGVMb2NhdGlvbiA9IHdpbmRvdy5sb2NhdGlvbjsiKTsKKyAgICByZXR1cm4gTlBFUlJfTk9f
RVJST1I7Cit9CisKK3N0YXRpYyBQbHVnaW5UZXN0OjpSZWdpc3RlcjxFdmFsdXRlSlNXaXRoaW5O
UFBfTmV3PiByZWdpc3RyYXIoImV2YWx1dGUtanMtd2l0aGluLW5wcC1uZXciKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>