<?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>36646</bug_id>
          
          <creation_ts>2010-03-26 00:43:14 -0700</creation_ts>
          <short_desc>REGRESSION: Worker termination via JS timeout may cause worker tests like fast/workers/worker-terminate.html fail.</short_desc>
          <delta_ts>2010-04-06 21:38:39 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>barraclough</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dimich</cc>
    
    <cc>fishd</cc>
    
    <cc>ggaren</cc>
    
    <cc>gustavo</cc>
    
    <cc>oliver</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>204451</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-03-26 00:43:14 -0700</bug_when>
    <thetext>fast/workers/worker-terminate.html failed (timeout) on Leopard Debug Bot

http://build.webkit.org/results/Leopard%20Intel%20Debug%20(Tests)/r56607%20(11979)/fast/workers/worker-terminate-diffs.txt
--- /Volumes/Big/WebKit-BuildSlave/leopard-intel-debug-tests/build/layout-test-results/fast/workers/worker-terminate-expected.txt	2010-03-26 00:28:17.000000000 -0700
+++ /Volumes/Big/WebKit-BuildSlave/leopard-intel-debug-tests/build/layout-test-results/fast/workers/worker-terminate-actual.txt	2010-03-26 00:28:17.000000000 -0700
@@ -1,3 +1,4 @@
+CONSOLE MESSAGE: line 3: JavaScript execution exceeded timeout.
 Test Worker.terminate().
 
 Received message from worker4.

Test is from 9 months ago:
http://trac.webkit.org/browser/trunk/LayoutTests/fast/workers/worker-terminate.html

I think we&apos;ve seen several other failures related to &quot;JavaScript execution exceeded timeout.&quot;  They seem to be recent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205754</commentid>
    <comment_count>1</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2010-03-29 17:16:28 -0700</bug_when>
    <thetext>For JSC, workers are terminated like this:

void WorkerScriptController::forbidExecution()
{
   ...
    m_globalData-&gt;timeoutChecker.setTimeoutInterval(1); // 1ms is the smallest timeout that can be set.
}

So it seems the timeout exceeded coudl be a normal way for a worker to die. Perhaps we should prevent the console message in this case?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205771</commentid>
    <comment_count>2</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2010-03-29 17:46:30 -0700</bug_when>
    <thetext>Note from Darin Adler in webkit-dev: 
&quot;There is precedent in JavaScriptCore for using a special exception to terminate code. InterruptedExecutionError is used for this purpose. I could imagine having something similar for workers. A timeout sounds like a poor way to do it.&quot;

Indeed, this could be better. For workers to be able to use it, it should be possible to inject it from another thread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206835</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-03-31 17:17:14 -0700</bug_when>
    <thetext>Failed again:
http://build.webkit.org/results/Leopard%20Intel%20Debug%20(Tests)/r56876%20(12228)/fast/workers/worker-terminate-pretty-diff.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206964</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-03-31 22:50:42 -0700</bug_when>
    <thetext>*** Bug 36585 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206965</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-03-31 22:51:33 -0700</bug_when>
    <thetext>Also causing fast/workers/termination-with-port-messages.html to fail, as seen in Bug 36585.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207624</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-01 20:47:27 -0700</bug_when>
    <thetext>I think we should be able to add the Snow Leopard bots to the core builders once this bug is fixed.  This causes about one failure ever 5 builds or so right now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207959</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-02 11:36:53 -0700</bug_when>
    <thetext>Another victim:
http://build.webkit.org/results/Leopard%20Intel%20Release%20(Tests)/r57011%20(12530)/fast/workers/termination-with-port-messages-diffs.txt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208217</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-02 22:03:17 -0700</bug_when>
    <thetext>Again: http://build.webkit.org/builders/Leopard%20Intel%20Release%20(Tests)/builds/12559/steps/layout-test/logs/stdio</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208222</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-02 22:42:38 -0700</bug_when>
    <thetext>Again:
http://build.webkit.org/builders/Leopard%20Intel%20Debug%20(Tests)/builds/12384/steps/layout-test/logs/stdio</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208229</commentid>
    <comment_count>10</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-02 22:49:38 -0700</bug_when>
    <thetext>Committed r57043: &lt;http://trac.webkit.org/changeset/57043&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208231</commentid>
    <comment_count>11</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-02 22:50:31 -0700</bug_when>
    <thetext>I&apos;ve skipped this test because the failure rate is obscenely high.  That doesn&apos;t mean we should drop this test.  I&apos;d like it back, but we can&apos;t have tests randomly failing on all the bots 25% of the time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208294</commentid>
    <comment_count>12</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-03 12:09:51 -0700</bug_when>
    <thetext>termination-with-port-messages.html this time:
http://build.webkit.org/builders/Tiger%20Intel%20Release/builds/10385/steps/layout-test/logs/stdio</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208410</commentid>
    <comment_count>13</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-05 00:38:12 -0700</bug_when>
    <thetext>Another one:
http://build.webkit.org/results/Leopard%20Intel%20Release%20(Tests)/r57062%20(12579)/fast/workers/termination-with-port-messages-diffs.txt

I don&apos;t think skipping any single test will solve this problem.

However, this seems to be our #1 cause of flakiness at the moment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208413</commentid>
    <comment_count>14</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-05 00:42:38 -0700</bug_when>
    <thetext>Right.  The correct solution looks to be the one proposed in Comment #2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208428</commentid>
    <comment_count>15</comment_count>
      <attachid>52523</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-05 03:26:33 -0700</bug_when>
    <thetext>Created attachment 52523
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208429</commentid>
    <comment_count>16</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-05 03:27:19 -0700</bug_when>
    <thetext>I&apos;m not 100% happy with this patch, but it gets the job done (as far as I can tell).  Suggestions welcome, as always.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208430</commentid>
    <comment_count>17</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-05 03:40:41 -0700</bug_when>
    <thetext>Attachment 52523 did not build on mac:
Build output: http://webkit-commit-queue.appspot.com/results/1630248</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208434</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-05 03:57:46 -0700</bug_when>
    <thetext>Attachment 52523 did not build on gtk:
Build output: http://webkit-commit-queue.appspot.com/results/1677070</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208482</commentid>
    <comment_count>19</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-04-05 08:23:41 -0700</bug_when>
    <thetext>Attachment 52523 did not build on qt:
Build output: http://webkit-commit-queue.appspot.com/results/1651187</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208485</commentid>
    <comment_count>20</comment_count>
      <attachid>52523</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-04-05 08:38:22 -0700</bug_when>
    <thetext>Comment on attachment 52523
Patch

&gt; +        (JSC::Terminator::termianteSoon):

I took a brief look, and did not review everything -- I hope someone more expert than me at JavaScriptCore will review -- but I did spot a spelling error in the name of this function.

We should s/ermiant/erminat/g</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208601</commentid>
    <comment_count>21</comment_count>
      <attachid>52549</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-05 11:36:39 -0700</bug_when>
    <thetext>Created attachment 52549
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208603</commentid>
    <comment_count>22</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-05 11:41:37 -0700</bug_when>
    <thetext>&gt; We should s/ermiant/erminat/g

Thanks for looking.  I was vacillating on the names until the last minute (hence the build errors and misspellings).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208813</commentid>
    <comment_count>23</comment_count>
      <attachid>52549</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-05 17:30:23 -0700</bug_when>
    <thetext>Comment on attachment 52549
Patch

This looks sane to me, but I am not much of a JavaScriptCore master these days, so I may have missed something subtle.

The CHECK_FOR_TIMEOUT() change and DEFINE_STUB_FUNCTION(int, timeout_check)
change may require a sunspider run, however it looks like all of this code is &quot;slow-path&quot;, only run after &quot;tickCount&quot; iterations, or in the case of actual failures, and thus should not affect performance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208814</commentid>
    <comment_count>24</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-05 17:31:05 -0700</bug_when>
    <thetext>CCing the real JSC masters in case they spot something wrong that I&apos;ve missed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209395</commentid>
    <comment_count>25</comment_count>
      <attachid>52549</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-06 19:10:07 -0700</bug_when>
    <thetext>Comment on attachment 52549
Patch

This looks good to me.  As far as I can tell these are all slow-paths, so this should have not affect on performance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209443</commentid>
    <comment_count>26</comment_count>
      <attachid>52549</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-04-06 21:38:31 -0700</bug_when>
    <thetext>Comment on attachment 52549
Patch

Clearing flags on attachment: 52549

Committed r57192: &lt;http://trac.webkit.org/changeset/57192&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209444</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-04-06 21:38:39 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52523</attachid>
            <date>2010-04-05 03:26:33 -0700</date>
            <delta_ts>2010-04-05 11:36:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-36646-20100405032632.patch</filename>
            <type>text/plain</type>
            <size>25247</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCAzZWY1MmVjLi43MGQ0YzZiIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjcg
QEAKKzIwMTAtMDQtMDUgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSRUdSRVNTSU9OOiBXb3Jr
ZXIgdGVybWluYXRpb24gdmlhIEpTIHRpbWVvdXQgbWF5IGNhdXNlIHdvcmtlciB0ZXN0cyBsaWtl
IGZhc3Qvd29ya2Vycy93b3JrZXItdGVybWluYXRlLmh0bWwgZmFpbC4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2NjQ2CisKKyAgICAgICAgQWRkIGEg
bmV3IGV4Y2VwdGlvbiB0eXBlIGZvciBmb3JjaWJseSB0ZXJtaW5hdGluZyBhIEphdmFTY3JpcHQg
c3RhY2suCisgICAgICAgIFRoZSBuZXcgZXhjZXB0aW9uIGZ1bmN0aW9ucyBzaW1pbGFybHkgdG8g
dGhlCisgICAgICAgIEludGVycnVwdGVkRXhlY3V0aW9uRXhjZXB0aW9uIGJ1dCBpcyBjb25jZXB0
dWFsbHkgZGlmZmVyZW50IGJlY2F1c2UKKyAgICAgICAgZXhlY3V0aW9uIGlzIHRlcm1pbmF0ZWQg
aW5zdGVhZCBvZiBqdXN0IGludGVycnVwdGVkLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06
CisgICAgICAgICAgICAtIEFkZGVkIG5ldyBUZXJtaW5hdG9yLmggZmlsZS4KKyAgICAgICAgKiBK
YXZhU2NyaXB0Q29yZS5neXBpOgorICAgICAgICAgICAgLSBBZGRlZCBuZXcgVGVybWluYXRvci5o
IGZpbGUuCisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjcHJvajoKKyAgICAgICAgICAgIC0gQWRkZWQgbmV3IFRlcm1pbmF0b3Iu
aCBmaWxlLgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICAgICAtIEFkZGVkIG5ldyBUZXJtaW5hdG9yLmggZmlsZS4KKyAgICAgICAg
KiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OkludGVycHJldGVy
Ojp0aHJvd0V4Y2VwdGlvbik6CisgICAgICAgICAgICAtIEZ1bGx5IHVud2luZCB0aGUgc3RhY2sg
Zm9yIFRlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24uCisgICAgICAgIChKU0M6OkludGVycHJl
dGVyOjpwcml2YXRlRXhlY3V0ZSk6CisgICAgICAgICAgICAtIENoZWNrIGlmIHdlJ3ZlIGJlZW4g
dGVybWluYXRlZCBhdCB0aGUgc2FtZSB0aW1lIHdlIGNoZWNrIGlmIHdlJ3ZlCisgICAgICAgICAg
ICAgIHRpbWVkIG91dC4KKyAgICAgICAgKiBqaXQvSklUU3R1YnMuY3BwOgorICAgICAgICAoSlND
OjpERUZJTkVfU1RVQl9GVU5DVElPTik6CisgICAgICAgICAgICAtIENoZWNrIGlmIHdlJ3ZlIGJl
ZW4gdGVybWluYXRlZCBhdCB0aGUgc2FtZSB0aW1lIHdlIGNoZWNrIGlmIHdlJ3ZlCisgICAgICAg
ICAgICAgIHRpbWVkIG91dC4KKyAgICAgICAgKiBydW50aW1lL0NvbXBsZXRpb24uY3BwOgorICAg
ICAgICAgICAgLSBTb21lIGV4Y2VwdGlvbnMgZGVmaW5lIHNwZWNpYWwgY29tcGxldGlvbiB0eXBl
cyBzbyB0aGF0IGNhbGxzIGNhbgorICAgICAgICAgICAgICBzZWUgd2h5IHdlIHRlcm1pbmF0ZWQg
ZXZhbHVhdGlvbi4KKyAgICAgICAgKEpTQzo6ZXZhbHVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUv
Q29tcGxldGlvbi5oOgorICAgICAgICAgICAgLSBEZWZpbmUgYSBuZXcgY29tcGxldGlvbiB0eXBl
IGZvciB0ZXJtaW5hdGlvbi4KKyAgICAgICAgKEpTQzo6KToKKyAgICAgICAgKiBydW50aW1lL0V4
Y2VwdGlvbkhlbHBlcnMuY3BwOgorICAgICAgICAgICAgLSBEZWZpbmUgVGVybWluYXRlZEV4ZWN1
dGlvbkV4Y2VwdGlvbiBhbmQgcmVmYWN0b3IgcHNldWRvLVJUVEkKKyAgICAgICAgICAgICAgdmly
dHVhbCBmdW5jdGlvbiB0byBiZSBtb3JlIHNlbWFudGljLgorICAgICAgICAoSlNDOjpJbnRlcnJ1
cHRlZEV4ZWN1dGlvbkVycm9yOjpleGNlcHRpb25UeXBlKToKKyAgICAgICAgKEpTQzo6VGVybWlu
YXRlZEV4ZWN1dGlvbkVycm9yOjpUZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3IpOgorICAgICAgICAo
SlNDOjpUZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3I6OmV4Y2VwdGlvblR5cGUpOgorICAgICAgICAo
SlNDOjpUZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3I6OnRvU3RyaW5nKToKKyAgICAgICAgKEpTQzo6
Y3JlYXRlVGVybWluYXRlRXhlY3V0aW9uRXhjZXB0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0V4
Y2VwdGlvbkhlbHBlcnMuaDoKKyAgICAgICAgICAgIC0gRW50cnkgcG9pbnQgZm9yIGdlbmVyYXRp
bmcgYSBUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uLgorICAgICAgICAqIHJ1bnRpbWUvSlNH
bG9iYWxEYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxEYXRhOjpKU0dsb2JhbERhdGEp
OgorICAgICAgICAgICAgLSBBZGQgYSBUZXJtaW5hdG9yIG9iamVjdCB0aGF0IGNhbiBiZSB1c2Vk
IHRvIGFzeW5jaHJvbm91c2x5CisgICAgICAgICAgICAgIHRlcm1pbmF0ZSBhIEphdmFTY3JpcHQg
ZXhlY3V0aW9uIHN0YWNrLgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmg6CisgICAg
ICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZXhjZXB0
aW9uVHlwZSk6CisgICAgICAgICAgICAtIERlZmluZSB0aGF0LCBieSBkZWZhdWx0LCB0aHJvd24g
b2JqZWN0cyBoYXZlIGEgbm9ybWFsIGV4Y2VwdGlvbgorICAgICAgICAgICAgICB0eXBlLgorICAg
ICAgICAqIHJ1bnRpbWUvVGVybWluYXRvci5oOiBBZGRlZC4KKyAgICAgICAgICAgIC0gQWRkZWQg
YSBuZXcgY29udHJvbGxlciBvYmplY3QgdGhhdCBjYW4gYmUgdXNlZCB0byB0ZXJtaW5hdGUKKyAg
ICAgICAgICAgICAgZXhlY3V0aW9uIGFzeW5jaHJvbm91c2x5LiAgVGhpcyBvYmplY3QgaXMgbW9y
ZSBvciBsZXNzIGEKKyAgICAgICAgICAgICAgZ2xvcmlmaWVkIGJvb2wuCisgICAgICAgIChKU0M6
OlRlcm1pbmF0b3I6OlRlcm1pbmF0b3IpOgorICAgICAgICAoSlNDOjpUZXJtaW5hdG9yOjp0ZXJt
aWFudGVTb29uKToKKyAgICAgICAgKEpTQzo6VGVybWluYXRvcjo6c2hvdWxkVGVybWluYXRlKToK
KwogMjAxMC0wNC0wMyAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVyIEh1bnQuCmRpZmYgLS1naXQgYS9KYXZhU2Ny
aXB0Q29yZS9HTlVtYWtlZmlsZS5hbSBiL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCmlu
ZGV4IDkyY2NkYjUuLjg3M2FmOTUgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL0dOVW1ha2Vm
aWxlLmFtCisrKyBiL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0yMDksNiArMjA5
LDcgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmVDaGFpbi5jcHAgXAogCUphdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
Q2hhaW4uaCBcCiAJSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVUcmFuc2l0aW9uVGFi
bGUuaCBcCisJSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZXJtaW5hdG9yLmggXAogCUphdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVGltZW91dENoZWNrZXIuY3BwIFwKIAlKYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1RpbWVvdXRDaGVja2VyLmggXAogCUphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5m
by5oIFwKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkgYi9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5neXBpCmluZGV4IDM4OWFmN2EuLmVjYzY1ZDcg
MTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkKKysrIGIvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQpAQCAtMzI1LDYgKzMyNSw3IEBACiAgICAg
ICAgICAgICAncnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oJywKICAgICAgICAgICAgICdydW50aW1l
L1N0cnVjdHVyZVRyYW5zaXRpb25UYWJsZS5oJywKICAgICAgICAgICAgICdydW50aW1lL1N5bWJv
bFRhYmxlLmgnLAorICAgICAgICAgICAgJ3J1bnRpbWUvVGVybWluYXRvci5oJywKICAgICAgICAg
ICAgICdydW50aW1lL1RpbWVvdXRDaGVja2VyLmNwcCcsCiAgICAgICAgICAgICAncnVudGltZS9U
aW1lb3V0Q2hlY2tlci5oJywKICAgICAgICAgICAgICdydW50aW1lL1RyYWNpbmcuaCcsCmRpZmYg
LS1naXQgYS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmNwcm9qIGIvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagppbmRleCA5MzUwYjM4
Li5iOWQ5ZDBjIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3By
b2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCisrKyBiL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3Byb2oKQEAgLTEyMTMsNiArMTIxMywxMCBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZp
bGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxydW50aW1lXFRlcm1pbmF0b3IuaCINCisJCQkJ
Pg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHJ1bnRp
bWVcVGltZW91dENoZWNrZXIuY3BwIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KZGlmZiAtLWdpdCBh
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IDA0ZmEzYTguLjg5NGYyYTYgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjY5LDYgKzI2OSw3
IEBACiAJCTk2OUEwNzlBMEVEMUQzQUUwMEYxRjY4MSAvKiBPcGNvZGUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTY5QTA3OTQwRUQxRDNBRTAwRjFG
NjgxIC8qIE9wY29kZS5jcHAgKi87IH07CiAJCTk2OUEwNzlCMEVEMUQzQUUwMEYxRjY4MSAvKiBP
cGNvZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk2
OUEwNzk1MEVEMUQzQUUwMEYxRjY4MSAvKiBPcGNvZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5NkRENzM3OTBGOURBMzEwMDAyN0ZCQ0MgLyog
Vk1UYWdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
NkRENzM3ODBGOURBMzEwMDAyN0ZCQ0MgLyogVk1UYWdzLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTcxRURFQTYxMTY5RTBEMzAwNUU0MjYyIC8q
IFRlcm1pbmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDk3RjY5MDNBMTE2OURGN0YwMEE2QkI0NiAvKiBUZXJtaW5hdG9yLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTcyNzAwOTAwREFDNkJCQzAw
RTU0OEQ3IC8qIEpTTm90QW5PYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTcyNzAwNzgwREFDNjA1NjAwRTU0OEQ3IC8qIEpTTm90QW5PYmpl
Y3QuY3BwICovOyB9OwogCQlBNzI3MDFCOTBEQURFOTQ5MDBFNTQ4RDcgLyogRXhjZXB0aW9uSGVs
cGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcy
NzAxQjMwREFERTk0OTAwRTU0OEQ3IC8qIEV4Y2VwdGlvbkhlbHBlcnMuaCAqLzsgfTsKIAkJQTcy
N0ZGNkIwREEzMDkyMjAwRTU0OEQ3IC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcyN0ZGNjYwREEzMDUz
QjAwRTU0OEQ3IC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwICovOyB9OwpAQCAtODIzLDYg
KzgyNCw3IEBACiAJCTk2OUEwNzk1MEVEMUQzQUUwMEYxRjY4MSAvKiBPcGNvZGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3Bjb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTk2OUEwOTIyMEVEMUUwOUMwMEYxRjY4MSAvKiBDb21wbGV0aW9uLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbXBsZXRpb24uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5NkRENzM3ODBGOURBMzEwMDAyN0ZCQ0MgLyogVk1UYWdz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZNVGFncy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk5N0Y2OTAzQTExNjlERjdGMDBBNkJCNDYgLyogVGVybWluYXRv
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXJtaW5hdG9yLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MjcwMDc3MERBQzYwNTYwMEU1NDhENyAvKiBKU05v
dEFuT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTm90QW5PYmpl
Y3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcyNzAwNzgwREFDNjA1NjAwRTU0
OEQ3IC8qIEpTTm90QW5PYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNOb3RBbk9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3
MjcwMUIzMERBREU5NDkwMEU1NDhENyAvKiBFeGNlcHRpb25IZWxwZXJzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4Y2VwdGlvbkhlbHBlcnMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTE2MDksNiArMTYxMSw3IEBACiAJCQkJN0U0RUU3MDgwRUJCNzk2MzAw
NTkzNEFBIC8qIFN0cnVjdHVyZUNoYWluLmggKi8sCiAJCQkJQkM5MDQxNDcwRUI5MjUwOTAwRkUy
NkZBIC8qIFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZS5oICovLAogCQkJCTE0QTM5NkE2MENEMjkz
MzEwMEI1QjRGRiAvKiBTeW1ib2xUYWJsZS5oICovLAorCQkJCTk3RjY5MDNBMTE2OURGN0YwMEE2
QkI0NiAvKiBUZXJtaW5hdG9yLmggKi8sCiAJCQkJMTRBNDJFM0QwRjRGNjBFRTAwNTk5MDk5IC8q
IFRpbWVvdXRDaGVja2VyLmNwcCAqLywKIAkJCQkxNEE0MkUzRTBGNEY2MEVFMDA1OTkwOTkgLyog
VGltZW91dENoZWNrZXIuaCAqLywKIAkJCQk1RDUzNzI2RDBFMUM1NDZCMDAyMUU1NDkgLyogVHJh
Y2luZy5kICovLApAQCAtMTk5OSw2ICsyMDAyLDcgQEAKIAkJCQkxOEJBQjU1NDEwREFFMDY2MDAw
RDk0NUIgLyogVGhyZWFkSWRlbnRpZmllckRhdGFQdGhyZWFkcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkMxOEM0NzAwRTE2RjVDRDAwQjM0NDYwIC8qIFRocmVhZGluZy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkMxOEM0NzEwRTE2RjVDRDAwQjM0NDYwIC8qIFRocmVhZFNwZWNpZmljLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk5NzFFREVBNjExNjlFMEQzMDA1RTQyNjIgLyogVGVybWluYXRvci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMTRBNDJFNDAwRjRGNjBFRTAwNTk5MDk5IC8qIFRpbWVvdXRDaGVj
a2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1RDUzNzI2RjBFMUM1NDg4MDAyMUU1NDkgLyogVHJh
Y2luZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEI0RDdFNjMwRjMxOUFDODAwQUQ3RTU4IC8qIFR5
cGVUcmFpdHMuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwCmluZGV4IDI3MTNmZDQuLmZhNWQ3MmMgMTAwNjQ0Ci0tLSBhL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTUyMiw4ICs1MjIsOSBAQCBORVZFUl9JTkxJ
TkUgSGFuZGxlckluZm8qIEludGVycHJldGVyOjp0aHJvd0V4Y2VwdGlvbihDYWxsRnJhbWUqJiBj
YWxsRnJhbWUsIEpTVgogICAgICAgICAgICAgICAgIGV4Y2VwdGlvbi0+cHV0V2l0aEF0dHJpYnV0
ZXMoY2FsbEZyYW1lLCBJZGVudGlmaWVyKGNhbGxGcmFtZSwgInNvdXJjZUlkIiksIGpzTnVtYmVy
KGNhbGxGcmFtZSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNlSUQoKSksIFJl
YWRPbmx5IHwgRG9udERlbGV0ZSk7CiAgICAgICAgICAgICAgICAgZXhjZXB0aW9uLT5wdXRXaXRo
QXR0cmlidXRlcyhjYWxsRnJhbWUsIElkZW50aWZpZXIoY2FsbEZyYW1lLCAic291cmNlVVJMIiks
IGpzT3duZWRTdHJpbmcoY2FsbEZyYW1lLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5z
b3VyY2VVUkwoKSksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7CiAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAKLSAgICAgICAgICAgIGlmIChleGNlcHRpb24tPmlzV2F0Y2hkb2dFeGNlcHRpb24o
KSkgeworCisgICAgICAgICAgICBDb21wbFR5cGUgZXhjZXB0aW9uVHlwZSA9IGV4Y2VwdGlvbi0+
ZXhjZXB0aW9uVHlwZSgpOworICAgICAgICAgICAgaWYgKGV4Y2VwdGlvblR5cGUgPT0gSW50ZXJy
dXB0ZWQgfHwgZXhjZXB0aW9uVHlwZSA9PSBUZXJtaW5hdGVkKSB7CiAgICAgICAgICAgICAgICAg
d2hpbGUgKHVud2luZENhbGxGcmFtZShjYWxsRnJhbWUsIGV4Y2VwdGlvblZhbHVlLCBieXRlY29k
ZU9mZnNldCwgY29kZUJsb2NrKSkgewogICAgICAgICAgICAgICAgICAgICAvLyBEb24ndCBuZWVk
IGhhbmRsZXIgY2hlY2tzIG9yIGFueXRoaW5nLCB3ZSBqdXN0IHdhbnQgdG8gdW5yb2xsIGFsbCB0
aGUgSlMgY2FsbGZyYW1lcyBwb3NzaWJsZS4KICAgICAgICAgICAgICAgICB9CkBAIC0xMTc0LDcg
KzExNzUsNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZShFeGVjdXRpb25G
bGFnIGZsYWcsIFJlZ2lzdGVyRmlsZSogcmVnaXN0ZXJGaQogCiAjZGVmaW5lIENIRUNLX0ZPUl9U
SU1FT1VUKCkgXAogICAgIGlmICghLS10aWNrQ291bnQpIHsgXAotICAgICAgICBpZiAoZ2xvYmFs
RGF0YS0+dGltZW91dENoZWNrZXIuZGlkVGltZU91dChjYWxsRnJhbWUpKSB7IFwKKyAgICAgICAg
aWYgKGdsb2JhbERhdGEtPnRlcm1pbmF0b3Iuc2hvdWxkVGVybWluYXRlKCkgfHwgZ2xvYmFsRGF0
YS0+dGltZW91dENoZWNrZXIuZGlkVGltZU91dChjYWxsRnJhbWUpKSB7IFwKICAgICAgICAgICAg
IGV4Y2VwdGlvblZhbHVlID0ganNOdWxsKCk7IFwKICAgICAgICAgICAgIGdvdG8gdm1fdGhyb3c7
IFwKICAgICAgICAgfSBcCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMu
Y3BwIGIvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAppbmRleCBiMjFmYjNkLi5kOTVh
MDIzIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCisrKyBiL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKQEAgLTEyNTcsMTUgKzEyNTcsMTggQEAgREVG
SU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wX3ByZV9pbmMpCiBERUZJTkVfU1RV
Ql9GVU5DVElPTihpbnQsIHRpbWVvdXRfY2hlY2spCiB7CiAgICAgU1RVQl9JTklUX1NUQUNLX0ZS
QU1FKHN0YWNrRnJhbWUpOwotICAgIAorCiAgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0g
c3RhY2tGcmFtZS5nbG9iYWxEYXRhOwogICAgIFRpbWVvdXRDaGVja2VyJiB0aW1lb3V0Q2hlY2tl
ciA9IGdsb2JhbERhdGEtPnRpbWVvdXRDaGVja2VyOwogCi0gICAgaWYgKHRpbWVvdXRDaGVja2Vy
LmRpZFRpbWVPdXQoc3RhY2tGcmFtZS5jYWxsRnJhbWUpKSB7CisgICAgaWYgKGdsb2JhbERhdGEt
PnRlcm1pbmF0b3Iuc2hvdWxkVGVybWluYXRlKCkpIHsKKyAgICAgICAgZ2xvYmFsRGF0YS0+ZXhj
ZXB0aW9uID0gY3JlYXRlVGVybWluYXRlRXhlY3V0aW9uRXhjZXB0aW9uKGdsb2JhbERhdGEpOwor
ICAgICAgICBWTV9USFJPV19FWENFUFRJT05fQVRfRU5EKCk7CisgICAgfSBlbHNlIGlmICh0aW1l
b3V0Q2hlY2tlci5kaWRUaW1lT3V0KHN0YWNrRnJhbWUuY2FsbEZyYW1lKSkgewogICAgICAgICBn
bG9iYWxEYXRhLT5leGNlcHRpb24gPSBjcmVhdGVJbnRlcnJ1cHRlZEV4ZWN1dGlvbkV4Y2VwdGlv
bihnbG9iYWxEYXRhKTsKICAgICAgICAgVk1fVEhST1dfRVhDRVBUSU9OX0FUX0VORCgpOwogICAg
IH0KLSAgICAKKwogICAgIHJldHVybiB0aW1lb3V0Q2hlY2tlci50aWNrc1VudGlsTmV4dENoZWNr
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5j
cHAgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCmluZGV4IDJmODhkZjku
LmJkZDgyZDggMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5j
cHAKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcApAQCAtNjIsOSAr
NjIsMTAgQEAgQ29tcGxldGlvbiBldmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW4m
IHNjb3BlQ2hhaW4sIGNvbnN0IFNvdXJjZUNvZGUmIHMKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGV4
ZWMtPmludGVycHJldGVyKCktPmV4ZWN1dGUocHJvZ3JhbS5nZXQoKSwgZXhlYywgc2NvcGVDaGFp
bi5ub2RlKCksIHRoaXNPYmosICZleGNlcHRpb24pOwogCiAgICAgaWYgKGV4Y2VwdGlvbikgewot
ICAgICAgICBpZiAoZXhjZXB0aW9uLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QoZXhjZXB0aW9uKS0+
aXNXYXRjaGRvZ0V4Y2VwdGlvbigpKQotICAgICAgICAgICAgcmV0dXJuIENvbXBsZXRpb24oSW50
ZXJydXB0ZWQsIGV4Y2VwdGlvbik7Ci0gICAgICAgIHJldHVybiBDb21wbGV0aW9uKFRocm93LCBl
eGNlcHRpb24pOworICAgICAgICBDb21wbFR5cGUgZXhjZXB0aW9uVHlwZSA9IFRocm93OworICAg
ICAgICBpZiAoZXhjZXB0aW9uLmlzT2JqZWN0KCkpCisgICAgICAgICAgICBleGNlcHRpb25UeXBl
ID0gYXNPYmplY3QoZXhjZXB0aW9uKS0+ZXhjZXB0aW9uVHlwZSgpOworICAgICAgICByZXR1cm4g
Q29tcGxldGlvbihleGNlcHRpb25UeXBlLCBleGNlcHRpb24pOwogICAgIH0KICAgICByZXR1cm4g
Q29tcGxldGlvbihOb3JtYWwsIHJlc3VsdCk7CiB9CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbXBsZXRpb24uaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlv
bi5oCmluZGV4IDQxYzlhNjQuLjYzYjMxNWUgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tcGxldGlvbi5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlv
bi5oCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIFNjb3BlQ2hh
aW47CiAgICAgY2xhc3MgU291cmNlQ29kZTsKIAotICAgIGVudW0gQ29tcGxUeXBlIHsgTm9ybWFs
LCBCcmVhaywgQ29udGludWUsIFJldHVyblZhbHVlLCBUaHJvdywgSW50ZXJydXB0ZWQgfTsKKyAg
ICBlbnVtIENvbXBsVHlwZSB7IE5vcm1hbCwgQnJlYWssIENvbnRpbnVlLCBSZXR1cm5WYWx1ZSwg
VGhyb3csIEludGVycnVwdGVkLCBUZXJtaW5hdGVkIH07CiAKICAgICAvKgogICAgICAqIENvbXBs
ZXRpb24gb2JqZWN0cyBhcmUgdXNlZCB0byBjb252ZXkgdGhlIHJldHVybiBzdGF0dXMgYW5kIHZh
bHVlCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMu
Y3BwIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAppbmRleCBi
OWM2MzE5Li5jYzE4NmQxIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2Vw
dGlvbkhlbHBlcnMuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVs
cGVycy5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICB2
aXJ0dWFsIGJvb2wgaXNXYXRjaGRvZ0V4Y2VwdGlvbigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0K
KyAgICB2aXJ0dWFsIENvbXBsVHlwZSBleGNlcHRpb25UeXBlKCkgY29uc3QgeyByZXR1cm4gSW50
ZXJydXB0ZWQ7IH0KIAogICAgIHZpcnR1YWwgVVN0cmluZyB0b1N0cmluZyhFeGVjU3RhdGUqKSBj
b25zdCB7IHJldHVybiAiSmF2YVNjcmlwdCBleGVjdXRpb24gZXhjZWVkZWQgdGltZW91dC4iOyB9
CiB9OwpAQCAtNTYsNiArNTYsMjMgQEAgSlNWYWx1ZSBjcmVhdGVJbnRlcnJ1cHRlZEV4ZWN1dGlv
bkV4Y2VwdGlvbihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCiAgICAgcmV0dXJuIG5ldyAoZ2xv
YmFsRGF0YSkgSW50ZXJydXB0ZWRFeGVjdXRpb25FcnJvcihnbG9iYWxEYXRhKTsKIH0KIAorY2xh
c3MgVGVybWluYXRlZEV4ZWN1dGlvbkVycm9yIDogcHVibGljIEpTT2JqZWN0IHsKK3B1YmxpYzoK
KyAgICBUZXJtaW5hdGVFeGVjdXRpb25FcnJvcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCisg
ICAgICAgIDogSlNPYmplY3QoZ2xvYmFsRGF0YS0+dGVybWluYXRlZEV4ZWN1dGlvbkVycm9yU3Ry
dWN0dXJlKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIENvbXBsVHlwZSBleGNlcHRpb25U
eXBlKCkgY29uc3QgeyByZXR1cm4gVGVybWluYXRlZDsgfQorCisgICAgdmlydHVhbCBVU3RyaW5n
IHRvU3RyaW5nKEV4ZWNTdGF0ZSopIGNvbnN0IHsgcmV0dXJuICJKYXZhU2NyaXB0IGV4ZWN1dGlv
biB0ZXJtaW5hdGVkLiI7IH0KK307CisKK0pTVmFsdWUgY3JlYXRlVGVybWluYXRlZEV4ZWN1dGlv
bkV4Y2VwdGlvbihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCit7CisgICAgcmV0dXJuIG5ldyAo
Z2xvYmFsRGF0YSkgVGVybWluYXRlZEV4ZWN1dGlvbkVycm9yKGdsb2JhbERhdGEpOworfQorCiBz
dGF0aWMgSlNWYWx1ZSBjcmVhdGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIEVycm9yVHlwZSBlLCBj
b25zdCBjaGFyKiBtc2cpCiB7CiAgICAgcmV0dXJuIEVycm9yOjpjcmVhdGUoZXhlYywgZSwgbXNn
LCAtMSwgLTEsIFVTdHJpbmcoKSk7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V4Y2VwdGlvbkhlbHBlcnMuaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVs
cGVycy5oCmluZGV4IGI2ZTczNzMuLjc0YTdmYTcgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhjZXB0aW9uSGVscGVycy5oCkBAIC00Myw2ICs0Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IHN0cnVjdCBJbnN0cnVjdGlvbjsKICAgICAKICAgICBKU1ZhbHVlIGNyZWF0ZUludGVycnVwdGVk
RXhlY3V0aW9uRXhjZXB0aW9uKEpTR2xvYmFsRGF0YSopOworICAgIEpTVmFsdWUgY3JlYXRlVGVy
bWluYXRlRXhlY3V0aW9uRXhjZXB0aW9uKEpTR2xvYmFsRGF0YSopOwogICAgIEpTVmFsdWUgY3Jl
YXRlU3RhY2tPdmVyZmxvd0Vycm9yKEV4ZWNTdGF0ZSopOwogICAgIEpTVmFsdWUgY3JlYXRlVHlw
ZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIqIG1lc3NhZ2UpOwogICAgIEpTVmFsdWUgY3Jl
YXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwg
dW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIENvZGVCbG9jayopOwpkaWZmIC0tZ2l0IGEvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwIGIvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbERhdGEuY3BwCmluZGV4IDQ1YWJjODYuLjE2MDBjNzcgMTAwNjQ0Ci0tLSBhL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAorKysgYi9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAKQEAgLTExNSw2ICsxMTUsNyBAQCBKU0dsb2JhbERh
dGE6OkpTR2xvYmFsRGF0YShib29sIGlzU2hhcmVkKQogICAgICwgc3RyaW5nVGFibGUoZmFzdE5l
dzxIYXNoVGFibGU+KEpTQzo6c3RyaW5nVGFibGUpKQogICAgICwgYWN0aXZhdGlvblN0cnVjdHVy
ZShKU0FjdGl2YXRpb246OmNyZWF0ZVN0cnVjdHVyZShqc051bGwoKSkpCiAgICAgLCBpbnRlcnJ1
cHRlZEV4ZWN1dGlvbkVycm9yU3RydWN0dXJlKEpTT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoanNO
dWxsKCkpKQorICAgICwgdGVybWluYXRlZEV4ZWN1dGlvbkVycm9yU3RydWN0dXJlKEpTT2JqZWN0
OjpjcmVhdGVTdHJ1Y3R1cmUoanNOdWxsKCkpKQogICAgICwgc3RhdGljU2NvcGVTdHJ1Y3R1cmUo
SlNTdGF0aWNTY29wZU9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKGpzTnVsbCgpKSkKICAgICAsIHN0
cmluZ1N0cnVjdHVyZShKU1N0cmluZzo6Y3JlYXRlU3RydWN0dXJlKGpzTnVsbCgpKSkKICAgICAs
IG5vdEFuT2JqZWN0RXJyb3JTdHViU3RydWN0dXJlKEpTTm90QW5PYmplY3RFcnJvclN0dWI6OmNy
ZWF0ZVN0cnVjdHVyZShqc051bGwoKSkpCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsRGF0YS5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEu
aAppbmRleCAwZjFmM2M2Li4yMGQ2MmQ1IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsRGF0YS5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxE
YXRhLmgKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJNYXJrU3RhY2suaCIKICNpbmNsdWRl
ICJOdW1lcmljU3RyaW5ncy5oIgogI2luY2x1ZGUgIlNtYWxsU3RyaW5ncy5oIgorI2luY2x1ZGUg
IlRlcm1pbmF0b3IuaCIKICNpbmNsdWRlICJUaW1lb3V0Q2hlY2tlci5oIgogI2luY2x1ZGUgIldl
YWtSYW5kb20uaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtMTE2LDYgKzExNyw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gYWN0
aXZhdGlvblN0cnVjdHVyZTsKICAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gaW50ZXJydXB0ZWRF
eGVjdXRpb25FcnJvclN0cnVjdHVyZTsKKyAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gdGVybWlu
YXRlZEV4ZWN1dGlvbkVycm9yU3RydWN0dXJlOwogICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBz
dGF0aWNTY29wZVN0cnVjdHVyZTsKICAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gc3RyaW5nU3Ry
dWN0dXJlOwogICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBub3RBbk9iamVjdEVycm9yU3R1YlN0
cnVjdHVyZTsKQEAgLTE1Myw2ICsxNTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSklU
VGh1bmtzIGppdFN0dWJzOwogI2VuZGlmCiAgICAgICAgIFRpbWVvdXRDaGVja2VyIHRpbWVvdXRD
aGVja2VyOworICAgICAgICBUZXJtaW5hdG9yIHRlcm1pbmF0b3I7CiAgICAgICAgIEhlYXAgaGVh
cDsKIAogICAgICAgICBKU1ZhbHVlIGV4Y2VwdGlvbjsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3QuaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3Qu
aAppbmRleCBkOTVjNTI5Li42NGExMTE4IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0LmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCkBA
IC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiQXJnTGlzdC5oIgogI2luY2x1ZGUgIkNsYXNzSW5m
by5oIgogI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCisjaW5jbHVkZSAiQ29tcGxldGlv
bi5oIgogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1
ZGUgIkpTTnVtYmVyQ2VsbC5oIgpAQCAtMTk1LDkgKzE5NiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgdmlydHVhbCBib29sIGlzR2xvYmFsT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzVmFyaWFibGVPYmplY3QoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNBY3RpdmF0aW9uT2JqZWN0KCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICAgICAgdmlydHVhbCBib29sIGlzV2F0Y2hkb2dF
eGNlcHRpb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wg
aXNOb3RBbk9iamVjdEVycm9yU3R1YigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKKyAgICAg
ICAgdmlydHVhbCBDb21wbFR5cGUgZXhjZXB0aW9uVHlwZSgpIGNvbnN0IHsgcmV0dXJuIFRocm93
OyB9CisKICAgICAgICAgdm9pZCBhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShzaXplX3Qgb2xkU2l6
ZSwgc2l6ZV90IG5ld1NpemUpOwogICAgICAgICB2b2lkIGFsbG9jYXRlUHJvcGVydHlTdG9yYWdl
SW5saW5lKHNpemVfdCBvbGRTaXplLCBzaXplX3QgbmV3U2l6ZSk7CiAgICAgICAgIGJvb2wgaXNV
c2luZ0lubGluZVN0b3JhZ2UoKSBjb25zdCB7IHJldHVybiBtX3N0cnVjdHVyZS0+aXNVc2luZ0lu
bGluZVN0b3JhZ2UoKTsgfQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZXJt
aW5hdG9yLmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rlcm1pbmF0b3IuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YWI3NzkyCi0tLSAvZGV2L251bGwKKysrIGIvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UZXJtaW5hdG9yLmgKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gKCJH
b29nbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFRlcm1p
bmF0b3JfaAorI2RlZmluZSBUZXJtaW5hdG9yX2gKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNz
IFRlcm1pbmF0b3IgeworcHVibGljOgorICAgIFRlcm1pbmF0b3IoKSA6IG1fc2hvdWxkVGVybWlu
YXRlKGZhbHNlKSB7IH0KKworICAgIHZvaWQgdGVybWlhbnRlU29vbigpIHsgbV9zaG91bGRUZXJt
aW5hdGUgPSB0cnVlOyB9CisgICAgYm9vbCBzaG91bGRUZXJtaW5hdGUoKSBjb25zdCB7IHJldHVy
biBtX3Nob3VsZFRlcm1pbmF0ZTsgfQorCitwcml2YXRlOgorICAgIGJvb2wgbV9zaG91bGRUZXJt
aW5hdGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIFRlcm1pbmF0b3Jf
aApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IGViMzJhOTguLmEzNmE1NjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMC0w
NC0wNSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJFR1JFU1NJT046IFdvcmtlciB0ZXJtaW5h
dGlvbiB2aWEgSlMgdGltZW91dCBtYXkgY2F1c2Ugd29ya2VyIHRlc3RzIGxpa2UgZmFzdC93b3Jr
ZXJzL3dvcmtlci10ZXJtaW5hdGUuaHRtbCBmYWlsLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY2NDYKKworICAgICAgICAqIGZhc3Qvd29ya2Vycy9y
ZXNvdXJjZXMvd29ya2VyLXJ1bi1mb3JldmVyLmpzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3dv
cmtlcnMvd29ya2VyLXRlcm1pbmF0ZS1mb3JldmVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC93b3JrZXJzL3dvcmtlci10ZXJtaW5hdGUtZm9yZXZlci5odG1sOiBBZGRlZC4K
KyAgICAgICAgICAgIC0gVGVzdCB3aGF0IGhhcHBlbnMgd2hlbiB3ZSB0ZXJtaW5hdGUgYW4gaW5m
aW5pdGVseSBydW5uaW5nIHdvcmtlci4KKyAgICAgICAgICAgICAgVGhlIGVzc2VudGlhbCBwb2lu
dCBpcyB0aGF0IHdlIGRvbid0IHNwYW0gdGhlIGNvbnNvbGUgd2l0aAorICAgICAgICAgICAgICBu
b25zZW5zZSBhYm91dCBhIHRpbWVvdXQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL1NraXBwZWQ6
CisgICAgICAgICAgICAtIFJlc2N1ZSB3b3JrZXItdGVybWluYXRlLmh0bWwgZnJvbSB0aGUgU2tp
cHBlZCBsaXN0IG5vdyB0aGF0IHdlJ3ZlCisgICAgICAgICAgICAgIGZpeGVkIHRoZSB1bmRlcmx5
aW5nIGJ1ZyB0aGF0IHdhcyBjYXVzaW5nIHRoZSBmbGFraW5lc3MuCisKIDIwMTAtMDQtMDMgIEFu
dG9uaW8gR29tZXMgIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2Vk
IGV4cGVjdGVkIHJlc3VsdHMgZml4LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC93b3Jr
ZXJzL3Jlc291cmNlcy93b3JrZXItcnVuLWZvcmV2ZXIuanMgYi9MYXlvdXRUZXN0cy9mYXN0L3dv
cmtlcnMvcmVzb3VyY2VzL3dvcmtlci1ydW4tZm9yZXZlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi45MTJlNDlkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC93b3JrZXJzL3Jlc291cmNlcy93b3JrZXItcnVuLWZvcmV2ZXIuanMKQEAgLTAsMCArMSBA
QAord2hpbGUoMSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2Vy
LXRlcm1pbmF0ZS1mb3JldmVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vy
cy93b3JrZXItdGVybWluYXRlLWZvcmV2ZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmJlNTNkZGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L3dvcmtlcnMvd29ya2VyLXRlcm1pbmF0ZS1mb3JldmVyLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxIEBACitUZXN0IFdvcmtlci50ZXJtaW5hdGUoKSBmb3IgYSB3b3JrZXIgdGhhdCB0cmll
cyB0byBydW4gZm9yZXZlci4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93
b3JrZXItdGVybWluYXRlLWZvcmV2ZXIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93
b3JrZXItdGVybWluYXRlLWZvcmV2ZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi4xZWIyZDAzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC93b3Jr
ZXJzL3dvcmtlci10ZXJtaW5hdGUtZm9yZXZlci5odG1sCkBAIC0wLDAgKzEsMTEgQEAKKzxib2R5
PgorPHA+VGVzdCBXb3JrZXIudGVybWluYXRlKCkgZm9yIGEgd29ya2VyIHRoYXQgdHJpZXMgdG8g
cnVuIGZvcmV2ZXIuPC9wPgorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCit2YXIgd29ya2Vy
ID0gbmV3IFdvcmtlcigncmVzb3VyY2VzL3dvcmtlci1ydW4tZm9yZXZlci5qcycpOword29ya2Vy
LnRlcm1pbmF0ZSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9Ta2lwcGVkCmluZGV4IGE2MWFkMjEuLjc2OWZhYzQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lw
cGVkCkBAIC0xNTEsOCArMTUxLDMgQEAgZmFzdC9tZWRpYS9tZWRpYS1mZWF0dXJlLXdndC12aWV3
LW1vZGUuaHRtbAogIyBUZXN0IGlzIGZsYWt5IGFuZCB0aHVzIG5vdCB1c2VmdWwgdW50aWwgZml4
ZWQuCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjY0MgogZmFz
dC9yZXBsYWNlZC9ib3JkZXItcmFkaXVzLWNsaXAuaHRtbAotCi0jIFRoaXMgdGVzdCBpcyB2ZXJ5
IGZsYWt5IHdpdGggYSBoaWdoIGZhaWx1cmUgcmF0ZSAoYXJvdW5kIDI1JSkuCi0jIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjY0NgotZmFzdC93b3JrZXJzL3dvcmtl
ci10ZXJtaW5hdGUuaHRtbAotCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDM2MDM4NjAuLjJiY2YyYzcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTAt
MDQtMDUgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSRUdSRVNTSU9OOiBXb3JrZXIgdGVybWlu
YXRpb24gdmlhIEpTIHRpbWVvdXQgbWF5IGNhdXNlIHdvcmtlciB0ZXN0cyBsaWtlIGZhc3Qvd29y
a2Vycy93b3JrZXItdGVybWluYXRlLmh0bWwgZmFpbC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2NjQ2CisKKyAgICAgICAgQ2F1c2UgdGhlIHdvcmtl
ciBjb2RlIHRvIHN3YWxsb3cgdGVybWluYXRpb24gZXhjZXB0aW9ucyBiZWNhdXNlIHRoZXNlCisg
ICAgICAgIG5lZWQgbm90IGJlIHJlcG9ydGVkIHRvIHRoZSB1c2VyIGJlY2F1c2UgdGhleSBhcmUg
YW4gaW1wbGVtZW50YXRpb24KKyAgICAgICAgZGV0YWlsIG9mIGhvdyB3ZSB0ZXJtaW5hdGUgd29y
a2VyIGV4ZWN1dGlvbi4KKworICAgICAgICBUZXN0OiBmYXN0L3dvcmtlcnMvd29ya2VyLXRlcm1p
bmF0ZS1mb3JldmVyLmh0bWwKKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpyZXBvcnRFeGNlcHRpb24pOgorICAgICAgICAgICAgLSBS
ZWZ1c2UgdG8gcmVwb3J0IHRlcm1pbmF0aW9uIGV4Y2VwdGlvbnMgdG8gdGhlIHVzZXIgYmVjYXVz
ZSB0aGV5CisgICAgICAgICAgICAgIGFyZSBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwuCisgICAg
ICAgICogYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpmb3JiaWRFeGVjdXRpb24pOgorICAgICAg
ICAgICAgLSBJbnN0ZWFkIG9mIHVzaW5nIHRpbWVvdXRzIHRvIHN0b3AgcnVuIGF3YXkgd29ya2Vy
cywgdXNlIG91ciBmYW5jeQorICAgICAgICAgICAgICBuZXcgVGVybWluYXRvciBvYmplY3QuCisK
IDIwMTAtMDQtMDQgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgTm90IHJldmlld2VkLiBSb2xsaW5nIG91dCBjaHJvbWl1bSBjaGFuZ2VzIHI1NzAyOCBh
bmQgcjU3MDMyCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5j
cHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAKaW5kZXggZjI5NGRhZC4u
OWI3MmIzNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3Bw
CisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcApAQCAtNTMzLDYgKzUz
Myw5IEBAIGRvdWJsZSB2YWx1ZVRvRGF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUp
CiAKIHZvaWQgcmVwb3J0RXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBleGNlcHRp
b24pCiB7CisgICAgaWYgKGV4Y2VwdGlvbi5pc09iamVjdCgpICYmIGFzT2JqZWN0KGV4Y2VwdGlv
biktPmV4Y2VwdGlvblR5cGUoKSA9PSBUZXJtaW5hdGVkKQorICAgICAgICByZXR1cm47CisKICAg
ICBVU3RyaW5nIGVycm9yTWVzc2FnZSA9IGV4Y2VwdGlvbi50b1N0cmluZyhleGVjKTsKICAgICBK
U09iamVjdCogZXhjZXB0aW9uT2JqZWN0ID0gZXhjZXB0aW9uLnRvT2JqZWN0KGV4ZWMpOwogICAg
IGludCBsaW5lTnVtYmVyID0gZXhjZXB0aW9uT2JqZWN0LT5nZXQoZXhlYywgSWRlbnRpZmllcihl
eGVjLCAibGluZSIpKS50b0ludDMyKGV4ZWMpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5n
cy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvV29y
a2VyU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggZTM3MTQyMy4uMzRiZDI5MiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC0xNDEsMTAg
KzE0MSwxMCBAQCB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmZvcmJpZEV4ZWN1dGlvbigp
CiAgICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSBhbm90aGVyIHRocmVhZC4KICAg
ICAvLyBNdXRleCBwcm90ZWN0aW9uIGZvciBtX2V4ZWN1dGlvbkZvcmJpZGRlbiBpcyBuZWVkZWQg
dG8gZ3VhcmFudGVlIHRoYXQgdGhlIHZhbHVlIGlzIHN5bmNocm9uaXplZCBiZXR3ZWVuIHByb2Nl
c3NvcnMsIGJlY2F1c2UKICAgICAvLyBpZiBpdCB3ZXJlIG5vdCwgdGhlIHdvcmtlciBjb3VsZCBy
ZS1lbnRlciBKU0M6OmV2YWx1YXRlKCksIGJ1dCB3aXRoIHRpbWVvdXQgYWxyZWFkeSByZXNldC4K
LSAgICAvLyBJdCBpcyBub3QgY3JpdGljYWwgZm9yIEludGVycHJldGVyOjptX3RpbWVvdXRUaW1l
IHRvIGJlIHN5bmNocm9uaXplZCwgd2UganVzdCByZWx5IG9uIGl0IHJlYWNoaW5nIHRoZSB3b3Jr
ZXIgdGhyZWFkJ3MgcHJvY2Vzc29yIHNvb25lciBvciBsYXRlci4KKyAgICAvLyBJdCBpcyBub3Qg
Y3JpdGljYWwgZm9yIFRlcm1pbmF0b3I6Om1fc2hvdWxkVGVybWluYXRlIHRvIGJlIHN5bmNocm9u
aXplZCwgd2UganVzdCByZWx5IG9uIGl0IHJlYWNoaW5nIHRoZSB3b3JrZXIgdGhyZWFkJ3MgcHJv
Y2Vzc29yIHNvb25lciBvciBsYXRlci4KICAgICBNdXRleExvY2tlciBsb2NrKG1fc2hhcmVkRGF0
YU11dGV4KTsKICAgICBtX2V4ZWN1dGlvbkZvcmJpZGRlbiA9IHRydWU7Ci0gICAgbV9nbG9iYWxE
YXRhLT50aW1lb3V0Q2hlY2tlci5zZXRUaW1lb3V0SW50ZXJ2YWwoMSk7IC8vIDFtcyBpcyB0aGUg
c21hbGxlc3QgdGltZW91dCB0aGF0IGNhbiBiZSBzZXQuCisgICAgbV9nbG9iYWxEYXRhLT50ZXJt
aW5hdG9yLnRlcm1pYW50ZVNvb24oKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52549</attachid>
            <date>2010-04-05 11:36:39 -0700</date>
            <delta_ts>2010-04-06 21:38:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-36646-20100405113638.patch</filename>
            <type>text/plain</type>
            <size>25228</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCAzZWY1MmVjLi5jZTY4NTQ3IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjcg
QEAKKzIwMTAtMDQtMDUgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSRUdSRVNTSU9OOiBXb3Jr
ZXIgdGVybWluYXRpb24gdmlhIEpTIHRpbWVvdXQgbWF5IGNhdXNlIHdvcmtlciB0ZXN0cyBsaWtl
IGZhc3Qvd29ya2Vycy93b3JrZXItdGVybWluYXRlLmh0bWwgZmFpbC4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2NjQ2CisKKyAgICAgICAgQWRkIGEg
bmV3IGV4Y2VwdGlvbiB0eXBlIGZvciBmb3JjaWJseSB0ZXJtaW5hdGluZyBhIEphdmFTY3JpcHQg
c3RhY2suCisgICAgICAgIFRoZSBuZXcgZXhjZXB0aW9uIGZ1bmN0aW9ucyBzaW1pbGFybHkgdG8g
dGhlCisgICAgICAgIEludGVycnVwdGVkRXhlY3V0aW9uRXhjZXB0aW9uIGJ1dCBpcyBjb25jZXB0
dWFsbHkgZGlmZmVyZW50IGJlY2F1c2UKKyAgICAgICAgZXhlY3V0aW9uIGlzIHRlcm1pbmF0ZWQg
aW5zdGVhZCBvZiBqdXN0IGludGVycnVwdGVkLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06
CisgICAgICAgICAgICAtIEFkZGVkIG5ldyBUZXJtaW5hdG9yLmggZmlsZS4KKyAgICAgICAgKiBK
YXZhU2NyaXB0Q29yZS5neXBpOgorICAgICAgICAgICAgLSBBZGRlZCBuZXcgVGVybWluYXRvci5o
IGZpbGUuCisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjcHJvajoKKyAgICAgICAgICAgIC0gQWRkZWQgbmV3IFRlcm1pbmF0b3Iu
aCBmaWxlLgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICAgICAtIEFkZGVkIG5ldyBUZXJtaW5hdG9yLmggZmlsZS4KKyAgICAgICAg
KiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OkludGVycHJldGVy
Ojp0aHJvd0V4Y2VwdGlvbik6CisgICAgICAgICAgICAtIEZ1bGx5IHVud2luZCB0aGUgc3RhY2sg
Zm9yIFRlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24uCisgICAgICAgIChKU0M6OkludGVycHJl
dGVyOjpwcml2YXRlRXhlY3V0ZSk6CisgICAgICAgICAgICAtIENoZWNrIGlmIHdlJ3ZlIGJlZW4g
dGVybWluYXRlZCBhdCB0aGUgc2FtZSB0aW1lIHdlIGNoZWNrIGlmIHdlJ3ZlCisgICAgICAgICAg
ICAgIHRpbWVkIG91dC4KKyAgICAgICAgKiBqaXQvSklUU3R1YnMuY3BwOgorICAgICAgICAoSlND
OjpERUZJTkVfU1RVQl9GVU5DVElPTik6CisgICAgICAgICAgICAtIENoZWNrIGlmIHdlJ3ZlIGJl
ZW4gdGVybWluYXRlZCBhdCB0aGUgc2FtZSB0aW1lIHdlIGNoZWNrIGlmIHdlJ3ZlCisgICAgICAg
ICAgICAgIHRpbWVkIG91dC4KKyAgICAgICAgKiBydW50aW1lL0NvbXBsZXRpb24uY3BwOgorICAg
ICAgICAgICAgLSBTb21lIGV4Y2VwdGlvbnMgZGVmaW5lIHNwZWNpYWwgY29tcGxldGlvbiB0eXBl
cyBzbyB0aGF0IGNhbGxzIGNhbgorICAgICAgICAgICAgICBzZWUgd2h5IHdlIHRlcm1pbmF0ZWQg
ZXZhbHVhdGlvbi4KKyAgICAgICAgKEpTQzo6ZXZhbHVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUv
Q29tcGxldGlvbi5oOgorICAgICAgICAgICAgLSBEZWZpbmUgYSBuZXcgY29tcGxldGlvbiB0eXBl
IGZvciB0ZXJtaW5hdGlvbi4KKyAgICAgICAgKEpTQzo6KToKKyAgICAgICAgKiBydW50aW1lL0V4
Y2VwdGlvbkhlbHBlcnMuY3BwOgorICAgICAgICAgICAgLSBEZWZpbmUgVGVybWluYXRlZEV4ZWN1
dGlvbkV4Y2VwdGlvbiBhbmQgcmVmYWN0b3IgcHNldWRvLVJUVEkKKyAgICAgICAgICAgICAgdmly
dHVhbCBmdW5jdGlvbiB0byBiZSBtb3JlIHNlbWFudGljLgorICAgICAgICAoSlNDOjpJbnRlcnJ1
cHRlZEV4ZWN1dGlvbkVycm9yOjpleGNlcHRpb25UeXBlKToKKyAgICAgICAgKEpTQzo6VGVybWlu
YXRlZEV4ZWN1dGlvbkVycm9yOjpUZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3IpOgorICAgICAgICAo
SlNDOjpUZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3I6OmV4Y2VwdGlvblR5cGUpOgorICAgICAgICAo
SlNDOjpUZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3I6OnRvU3RyaW5nKToKKyAgICAgICAgKEpTQzo6
Y3JlYXRlVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbik6CisgICAgICAgICogcnVudGltZS9F
eGNlcHRpb25IZWxwZXJzLmg6CisgICAgICAgICAgICAtIEVudHJ5IHBvaW50IGZvciBnZW5lcmF0
aW5nIGEgVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbi4KKyAgICAgICAgKiBydW50aW1lL0pT
R2xvYmFsRGF0YS5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRh
KToKKyAgICAgICAgICAgIC0gQWRkIGEgVGVybWluYXRvciBvYmplY3QgdGhhdCBjYW4gYmUgdXNl
ZCB0byBhc3luY2hyb25vdXNseQorICAgICAgICAgICAgICB0ZXJtaW5hdGUgYSBKYXZhU2NyaXB0
IGV4ZWN1dGlvbiBzdGFjay4KKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5oOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmV4Y2Vw
dGlvblR5cGUpOgorICAgICAgICAgICAgLSBEZWZpbmUgdGhhdCwgYnkgZGVmYXVsdCwgdGhyb3du
IG9iamVjdHMgaGF2ZSBhIG5vcm1hbCBleGNlcHRpb24KKyAgICAgICAgICAgICAgdHlwZS4KKyAg
ICAgICAgKiBydW50aW1lL1Rlcm1pbmF0b3IuaDogQWRkZWQuCisgICAgICAgICAgICAtIEFkZGVk
IGEgbmV3IGNvbnRyb2xsZXIgb2JqZWN0IHRoYXQgY2FuIGJlIHVzZWQgdG8gdGVybWluYXRlCisg
ICAgICAgICAgICAgIGV4ZWN1dGlvbiBhc3luY2hyb25vdXNseS4gIFRoaXMgb2JqZWN0IGlzIG1v
cmUgb3IgbGVzcyBhCisgICAgICAgICAgICAgIGdsb3JpZmllZCBib29sLgorICAgICAgICAoSlND
OjpUZXJtaW5hdG9yOjpUZXJtaW5hdG9yKToKKyAgICAgICAgKEpTQzo6VGVybWluYXRvcjo6dGVy
bWlhbnRlU29vbik6CisgICAgICAgIChKU0M6OlRlcm1pbmF0b3I6OnNob3VsZFRlcm1pbmF0ZSk6
CisKIDIwMTAtMDQtMDMgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9saXZlciBIdW50LgpkaWZmIC0tZ2l0IGEvSmF2YVNj
cmlwdENvcmUvR05VbWFrZWZpbGUuYW0gYi9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQpp
bmRleCA5MmNjZGI1Li44NzNhZjk1IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtl
ZmlsZS5hbQorKysgYi9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMjA5LDYgKzIw
OSw3IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCUphdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlQ2hhaW4uY3BwIFwKIAlKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZUNoYWluLmggXAogCUphdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlvblRh
YmxlLmggXAorCUphdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVybWluYXRvci5oIFwKIAlKYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1RpbWVvdXRDaGVja2VyLmNwcCBcCiAJSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UaW1lb3V0Q2hlY2tlci5oIFwKIAlKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUlu
Zm8uaCBcCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5neXBpIGIv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQppbmRleCAzODlhZjdhLi5lY2M2NWQ3
IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5neXBpCisrKyBiL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkKQEAgLTMyNSw2ICszMjUsNyBAQAogICAg
ICAgICAgICAgJ3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaCcsCiAgICAgICAgICAgICAncnVudGlt
ZS9TdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUuaCcsCiAgICAgICAgICAgICAncnVudGltZS9TeW1i
b2xUYWJsZS5oJywKKyAgICAgICAgICAgICdydW50aW1lL1Rlcm1pbmF0b3IuaCcsCiAgICAgICAg
ICAgICAncnVudGltZS9UaW1lb3V0Q2hlY2tlci5jcHAnLAogICAgICAgICAgICAgJ3J1bnRpbWUv
VGltZW91dENoZWNrZXIuaCcsCiAgICAgICAgICAgICAncnVudGltZS9UcmFjaW5nLmgnLApkaWZm
IC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvaiBiL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oKaW5kZXggOTM1MGIz
OC4uYjlkOWQwYyAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNw
cm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagorKysgYi9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmNwcm9qCkBAIC0xMjEzLDYgKzEyMTMsMTAgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxG
aWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5ccnVudGltZVxUZXJtaW5hdG9yLmgiDQorCQkJ
CT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxydW50
aW1lXFRpbWVvdXRDaGVja2VyLmNwcCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCmRpZmYgLS1naXQg
YS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCAwNGZhM2E4Li44OTRmMmE2IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI2OSw2ICsyNjks
NyBAQAogCQk5NjlBMDc5QTBFRDFEM0FFMDBGMUY2ODEgLyogT3Bjb2RlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk2OUEwNzk0MEVEMUQzQUUwMEYx
RjY4MSAvKiBPcGNvZGUuY3BwICovOyB9OwogCQk5NjlBMDc5QjBFRDFEM0FFMDBGMUY2ODEgLyog
T3Bjb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
NjlBMDc5NTBFRDFEM0FFMDBGMUY2ODEgLyogT3Bjb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTZERDczNzkwRjlEQTMxMDAwMjdGQkNDIC8q
IFZNVGFncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTZERDczNzgwRjlEQTMxMDAwMjdGQkNDIC8qIFZNVGFncy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTk3MUVERUE2MTE2OUUwRDMwMDVFNDI2MiAv
KiBUZXJtaW5hdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5N0Y2OTAzQTExNjlERjdGMDBBNkJCNDYgLyogVGVybWluYXRvci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3MjcwMDkwMERBQzZCQkMw
MEU1NDhENyAvKiBKU05vdEFuT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE3MjcwMDc4MERBQzYwNTYwMEU1NDhENyAvKiBKU05vdEFuT2Jq
ZWN0LmNwcCAqLzsgfTsKIAkJQTcyNzAxQjkwREFERTk0OTAwRTU0OEQ3IC8qIEV4Y2VwdGlvbkhl
bHBlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3
MjcwMUIzMERBREU5NDkwMEU1NDhENyAvKiBFeGNlcHRpb25IZWxwZXJzLmggKi87IH07CiAJCUE3
MjdGRjZCMERBMzA5MjIwMEU1NDhENyAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MjdGRjY2MERBMzA1
M0IwMEU1NDhENyAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCAqLzsgfTsKQEAgLTgyMyw2
ICs4MjQsNyBAQAogCQk5NjlBMDc5NTBFRDFEM0FFMDBGMUY2ODEgLyogT3Bjb2RlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE9wY29kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5NjlBMDkyMjBFRDFFMDlDMDBGMUY2ODEgLyogQ29tcGxldGlvbi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb21wbGV0aW9uLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTZERDczNzgwRjlEQTMxMDAwMjdGQkNDIC8qIFZNVGFn
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWTVRhZ3MuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTdGNjkwM0ExMTY5REY3RjAwQTZCQjQ2IC8qIFRlcm1pbmF0
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVybWluYXRvci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzI3MDA3NzBEQUM2MDU2MDBFNTQ4RDcgLyogSlNO
b3RBbk9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU05vdEFuT2Jq
ZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MjcwMDc4MERBQzYwNTYwMEU1
NDhENyAvKiBKU05vdEFuT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTTm90QW5PYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
NzI3MDFCMzBEQURFOTQ5MDBFNTQ4RDcgLyogRXhjZXB0aW9uSGVscGVycy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBFeGNlcHRpb25IZWxwZXJzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0xNjA5LDYgKzE2MTEsNyBAQAogCQkJCTdFNEVFNzA4MEVCQjc5NjMw
MDU5MzRBQSAvKiBTdHJ1Y3R1cmVDaGFpbi5oICovLAogCQkJCUJDOTA0MTQ3MEVCOTI1MDkwMEZF
MjZGQSAvKiBTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUuaCAqLywKIAkJCQkxNEEzOTZBNjBDRDI5
MzMxMDBCNUI0RkYgLyogU3ltYm9sVGFibGUuaCAqLywKKwkJCQk5N0Y2OTAzQTExNjlERjdGMDBB
NkJCNDYgLyogVGVybWluYXRvci5oICovLAogCQkJCTE0QTQyRTNEMEY0RjYwRUUwMDU5OTA5OSAv
KiBUaW1lb3V0Q2hlY2tlci5jcHAgKi8sCiAJCQkJMTRBNDJFM0UwRjRGNjBFRTAwNTk5MDk5IC8q
IFRpbWVvdXRDaGVja2VyLmggKi8sCiAJCQkJNUQ1MzcyNkQwRTFDNTQ2QjAwMjFFNTQ5IC8qIFRy
YWNpbmcuZCAqLywKQEAgLTE5OTksNiArMjAwMiw3IEBACiAJCQkJMThCQUI1NTQxMERBRTA2NjAw
MEQ5NDVCIC8qIFRocmVhZElkZW50aWZpZXJEYXRhUHRocmVhZHMuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDMThDNDcwMEUxNkY1Q0QwMEIzNDQ2MCAvKiBUaHJlYWRpbmcuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDMThDNDcxMEUxNkY1Q0QwMEIzNDQ2MCAvKiBUaHJlYWRTcGVjaWZpYy5oIGluIEhl
YWRlcnMgKi8sCisJCQkJOTcxRURFQTYxMTY5RTBEMzAwNUU0MjYyIC8qIFRlcm1pbmF0b3IuaCBp
biBIZWFkZXJzICovLAogCQkJCTE0QTQyRTQwMEY0RjYwRUUwMDU5OTA5OSAvKiBUaW1lb3V0Q2hl
Y2tlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUQ1MzcyNkYwRTFDNTQ4ODAwMjFFNTQ5IC8qIFRy
YWNpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTBCNEQ3RTYzMEYzMTlBQzgwMEFEN0U1OCAvKiBU
eXBlVHJhaXRzLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmNwcAppbmRleCAyNzEzZmQ0Li5mYTVkNzJjIDEwMDY0NAotLS0gYS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC01MjIsOCArNTIyLDkgQEAgTkVWRVJfSU5M
SU5FIEhhbmRsZXJJbmZvKiBJbnRlcnByZXRlcjo6dGhyb3dFeGNlcHRpb24oQ2FsbEZyYW1lKiYg
Y2FsbEZyYW1lLCBKU1YKICAgICAgICAgICAgICAgICBleGNlcHRpb24tPnB1dFdpdGhBdHRyaWJ1
dGVzKGNhbGxGcmFtZSwgSWRlbnRpZmllcihjYWxsRnJhbWUsICJzb3VyY2VJZCIpLCBqc051bWJl
cihjYWxsRnJhbWUsIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlEKCkpLCBS
ZWFkT25seSB8IERvbnREZWxldGUpOwogICAgICAgICAgICAgICAgIGV4Y2VwdGlvbi0+cHV0V2l0
aEF0dHJpYnV0ZXMoY2FsbEZyYW1lLCBJZGVudGlmaWVyKGNhbGxGcmFtZSwgInNvdXJjZVVSTCIp
LCBqc093bmVkU3RyaW5nKGNhbGxGcmFtZSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+
c291cmNlVVJMKCkpLCBSZWFkT25seSB8IERvbnREZWxldGUpOwogICAgICAgICAgICAgfQotICAg
ICAgICAgICAgCi0gICAgICAgICAgICBpZiAoZXhjZXB0aW9uLT5pc1dhdGNoZG9nRXhjZXB0aW9u
KCkpIHsKKworICAgICAgICAgICAgQ29tcGxUeXBlIGV4Y2VwdGlvblR5cGUgPSBleGNlcHRpb24t
PmV4Y2VwdGlvblR5cGUoKTsKKyAgICAgICAgICAgIGlmIChleGNlcHRpb25UeXBlID09IEludGVy
cnVwdGVkIHx8IGV4Y2VwdGlvblR5cGUgPT0gVGVybWluYXRlZCkgewogICAgICAgICAgICAgICAg
IHdoaWxlICh1bndpbmRDYWxsRnJhbWUoY2FsbEZyYW1lLCBleGNlcHRpb25WYWx1ZSwgYnl0ZWNv
ZGVPZmZzZXQsIGNvZGVCbG9jaykpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gRG9uJ3QgbmVl
ZCBoYW5kbGVyIGNoZWNrcyBvciBhbnl0aGluZywgd2UganVzdCB3YW50IHRvIHVucm9sbCBhbGwg
dGhlIEpTIGNhbGxmcmFtZXMgcG9zc2libGUuCiAgICAgICAgICAgICAgICAgfQpAQCAtMTE3NCw3
ICsxMTc1LDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUoRXhlY3V0aW9u
RmxhZyBmbGFnLCBSZWdpc3RlckZpbGUqIHJlZ2lzdGVyRmkKIAogI2RlZmluZSBDSEVDS19GT1Jf
VElNRU9VVCgpIFwKICAgICBpZiAoIS0tdGlja0NvdW50KSB7IFwKLSAgICAgICAgaWYgKGdsb2Jh
bERhdGEtPnRpbWVvdXRDaGVja2VyLmRpZFRpbWVPdXQoY2FsbEZyYW1lKSkgeyBcCisgICAgICAg
IGlmIChnbG9iYWxEYXRhLT50ZXJtaW5hdG9yLnNob3VsZFRlcm1pbmF0ZSgpIHx8IGdsb2JhbERh
dGEtPnRpbWVvdXRDaGVja2VyLmRpZFRpbWVPdXQoY2FsbEZyYW1lKSkgeyBcCiAgICAgICAgICAg
ICBleGNlcHRpb25WYWx1ZSA9IGpzTnVsbCgpOyBcCiAgICAgICAgICAgICBnb3RvIHZtX3Rocm93
OyBcCiAgICAgICAgIH0gXApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJz
LmNwcCBiL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKaW5kZXggYjIxZmIzZC4uYWYz
M2Y2OSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAorKysgYi9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCkBAIC0xMjU3LDE1ICsxMjU3LDE4IEBAIERF
RklORV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBvcF9wcmVfaW5jKQogREVGSU5FX1NU
VUJfRlVOQ1RJT04oaW50LCB0aW1lb3V0X2NoZWNrKQogewogICAgIFNUVUJfSU5JVF9TVEFDS19G
UkFNRShzdGFja0ZyYW1lKTsKLSAgICAKKwogICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9
IHN0YWNrRnJhbWUuZ2xvYmFsRGF0YTsKICAgICBUaW1lb3V0Q2hlY2tlciYgdGltZW91dENoZWNr
ZXIgPSBnbG9iYWxEYXRhLT50aW1lb3V0Q2hlY2tlcjsKIAotICAgIGlmICh0aW1lb3V0Q2hlY2tl
ci5kaWRUaW1lT3V0KHN0YWNrRnJhbWUuY2FsbEZyYW1lKSkgeworICAgIGlmIChnbG9iYWxEYXRh
LT50ZXJtaW5hdG9yLnNob3VsZFRlcm1pbmF0ZSgpKSB7CisgICAgICAgIGdsb2JhbERhdGEtPmV4
Y2VwdGlvbiA9IGNyZWF0ZVRlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oZ2xvYmFsRGF0YSk7
CisgICAgICAgIFZNX1RIUk9XX0VYQ0VQVElPTl9BVF9FTkQoKTsKKyAgICB9IGVsc2UgaWYgKHRp
bWVvdXRDaGVja2VyLmRpZFRpbWVPdXQoc3RhY2tGcmFtZS5jYWxsRnJhbWUpKSB7CiAgICAgICAg
IGdsb2JhbERhdGEtPmV4Y2VwdGlvbiA9IGNyZWF0ZUludGVycnVwdGVkRXhlY3V0aW9uRXhjZXB0
aW9uKGdsb2JhbERhdGEpOwogICAgICAgICBWTV9USFJPV19FWENFUFRJT05fQVRfRU5EKCk7CiAg
ICAgfQotICAgIAorCiAgICAgcmV0dXJuIHRpbWVvdXRDaGVja2VyLnRpY2tzVW50aWxOZXh0Q2hl
Y2soKTsKIH0KIApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9u
LmNwcCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAKaW5kZXggMmY4OGRm
OS4uYmRkODJkOCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9u
LmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCkBAIC02Miw5
ICs2MiwxMCBAQCBDb21wbGV0aW9uIGV2YWx1YXRlKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFp
biYgc2NvcGVDaGFpbiwgY29uc3QgU291cmNlQ29kZSYgcwogICAgIEpTVmFsdWUgcmVzdWx0ID0g
ZXhlYy0+aW50ZXJwcmV0ZXIoKS0+ZXhlY3V0ZShwcm9ncmFtLmdldCgpLCBleGVjLCBzY29wZUNo
YWluLm5vZGUoKSwgdGhpc09iaiwgJmV4Y2VwdGlvbik7CiAKICAgICBpZiAoZXhjZXB0aW9uKSB7
Ci0gICAgICAgIGlmIChleGNlcHRpb24uaXNPYmplY3QoKSAmJiBhc09iamVjdChleGNlcHRpb24p
LT5pc1dhdGNoZG9nRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICByZXR1cm4gQ29tcGxldGlvbihJ
bnRlcnJ1cHRlZCwgZXhjZXB0aW9uKTsKLSAgICAgICAgcmV0dXJuIENvbXBsZXRpb24oVGhyb3cs
IGV4Y2VwdGlvbik7CisgICAgICAgIENvbXBsVHlwZSBleGNlcHRpb25UeXBlID0gVGhyb3c7Cisg
ICAgICAgIGlmIChleGNlcHRpb24uaXNPYmplY3QoKSkKKyAgICAgICAgICAgIGV4Y2VwdGlvblR5
cGUgPSBhc09iamVjdChleGNlcHRpb24pLT5leGNlcHRpb25UeXBlKCk7CisgICAgICAgIHJldHVy
biBDb21wbGV0aW9uKGV4Y2VwdGlvblR5cGUsIGV4Y2VwdGlvbik7CiAgICAgfQogICAgIHJldHVy
biBDb21wbGV0aW9uKE5vcm1hbCwgcmVzdWx0KTsKIH0KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tcGxldGlvbi5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0
aW9uLmgKaW5kZXggNDFjOWE2NC4uNjNiMzE1ZSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21wbGV0aW9uLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0
aW9uLmgKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgU2NvcGVD
aGFpbjsKICAgICBjbGFzcyBTb3VyY2VDb2RlOwogCi0gICAgZW51bSBDb21wbFR5cGUgeyBOb3Jt
YWwsIEJyZWFrLCBDb250aW51ZSwgUmV0dXJuVmFsdWUsIFRocm93LCBJbnRlcnJ1cHRlZCB9Owor
ICAgIGVudW0gQ29tcGxUeXBlIHsgTm9ybWFsLCBCcmVhaywgQ29udGludWUsIFJldHVyblZhbHVl
LCBUaHJvdywgSW50ZXJydXB0ZWQsIFRlcm1pbmF0ZWQgfTsKIAogICAgIC8qCiAgICAgICogQ29t
cGxldGlvbiBvYmplY3RzIGFyZSB1c2VkIHRvIGNvbnZleSB0aGUgcmV0dXJuIHN0YXR1cyBhbmQg
dmFsdWUKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVy
cy5jcHAgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCmluZGV4
IGI5YzYzMTkuLmFlZTZmMzEgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhj
ZXB0aW9uSGVscGVycy5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25I
ZWxwZXJzLmNwcApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAg
IHZpcnR1YWwgYm9vbCBpc1dhdGNoZG9nRXhjZXB0aW9uKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsg
fQorICAgIHZpcnR1YWwgQ29tcGxUeXBlIGV4Y2VwdGlvblR5cGUoKSBjb25zdCB7IHJldHVybiBJ
bnRlcnJ1cHRlZDsgfQogCiAgICAgdmlydHVhbCBVU3RyaW5nIHRvU3RyaW5nKEV4ZWNTdGF0ZSop
IGNvbnN0IHsgcmV0dXJuICJKYXZhU2NyaXB0IGV4ZWN1dGlvbiBleGNlZWRlZCB0aW1lb3V0LiI7
IH0KIH07CkBAIC01Niw2ICs1NiwyMyBAQCBKU1ZhbHVlIGNyZWF0ZUludGVycnVwdGVkRXhlY3V0
aW9uRXhjZXB0aW9uKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKICAgICByZXR1cm4gbmV3IChn
bG9iYWxEYXRhKSBJbnRlcnJ1cHRlZEV4ZWN1dGlvbkVycm9yKGdsb2JhbERhdGEpOwogfQogCitj
bGFzcyBUZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3IgOiBwdWJsaWMgSlNPYmplY3QgeworcHVibGlj
OgorICAgIFRlcm1pbmF0ZWRFeGVjdXRpb25FcnJvcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEp
CisgICAgICAgIDogSlNPYmplY3QoZ2xvYmFsRGF0YS0+dGVybWluYXRlZEV4ZWN1dGlvbkVycm9y
U3RydWN0dXJlKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIENvbXBsVHlwZSBleGNlcHRp
b25UeXBlKCkgY29uc3QgeyByZXR1cm4gVGVybWluYXRlZDsgfQorCisgICAgdmlydHVhbCBVU3Ry
aW5nIHRvU3RyaW5nKEV4ZWNTdGF0ZSopIGNvbnN0IHsgcmV0dXJuICJKYXZhU2NyaXB0IGV4ZWN1
dGlvbiB0ZXJtaW5hdGVkLiI7IH0KK307CisKK0pTVmFsdWUgY3JlYXRlVGVybWluYXRlZEV4ZWN1
dGlvbkV4Y2VwdGlvbihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCit7CisgICAgcmV0dXJuIG5l
dyAoZ2xvYmFsRGF0YSkgVGVybWluYXRlZEV4ZWN1dGlvbkVycm9yKGdsb2JhbERhdGEpOworfQor
CiBzdGF0aWMgSlNWYWx1ZSBjcmVhdGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIEVycm9yVHlwZSBl
LCBjb25zdCBjaGFyKiBtc2cpCiB7CiAgICAgcmV0dXJuIEVycm9yOjpjcmVhdGUoZXhlYywgZSwg
bXNnLCAtMSwgLTEsIFVTdHJpbmcoKSk7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9u
SGVscGVycy5oCmluZGV4IGI2ZTczNzMuLmIxNTI0MzkgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhjZXB0aW9uSGVscGVycy5oCkBAIC00Myw2ICs0Myw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgIHN0cnVjdCBJbnN0cnVjdGlvbjsKICAgICAKICAgICBKU1ZhbHVlIGNyZWF0ZUludGVycnVw
dGVkRXhlY3V0aW9uRXhjZXB0aW9uKEpTR2xvYmFsRGF0YSopOworICAgIEpTVmFsdWUgY3JlYXRl
VGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihKU0dsb2JhbERhdGEqKTsKICAgICBKU1ZhbHVl
IGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihFeGVjU3RhdGUqKTsKICAgICBKU1ZhbHVlIGNyZWF0
ZVR5cGVFcnJvcihFeGVjU3RhdGUqLCBjb25zdCBjaGFyKiBtZXNzYWdlKTsKICAgICBKU1ZhbHVl
IGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmll
ciYsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBDb2RlQmxvY2sqKTsKZGlmZiAtLWdpdCBhL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcCBiL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAppbmRleCA0NWFiYzg2Li4xNjAwYzc3IDEwMDY0NAotLS0g
YS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAKKysrIGIvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCkBAIC0xMTUsNiArMTE1LDcgQEAgSlNHbG9i
YWxEYXRhOjpKU0dsb2JhbERhdGEoYm9vbCBpc1NoYXJlZCkKICAgICAsIHN0cmluZ1RhYmxlKGZh
c3ROZXc8SGFzaFRhYmxlPihKU0M6OnN0cmluZ1RhYmxlKSkKICAgICAsIGFjdGl2YXRpb25TdHJ1
Y3R1cmUoSlNBY3RpdmF0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUoanNOdWxsKCkpKQogICAgICwgaW50
ZXJydXB0ZWRFeGVjdXRpb25FcnJvclN0cnVjdHVyZShKU09iamVjdDo6Y3JlYXRlU3RydWN0dXJl
KGpzTnVsbCgpKSkKKyAgICAsIHRlcm1pbmF0ZWRFeGVjdXRpb25FcnJvclN0cnVjdHVyZShKU09i
amVjdDo6Y3JlYXRlU3RydWN0dXJlKGpzTnVsbCgpKSkKICAgICAsIHN0YXRpY1Njb3BlU3RydWN0
dXJlKEpTU3RhdGljU2NvcGVPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShqc051bGwoKSkpCiAgICAg
LCBzdHJpbmdTdHJ1Y3R1cmUoSlNTdHJpbmc6OmNyZWF0ZVN0cnVjdHVyZShqc051bGwoKSkpCiAg
ICAgLCBub3RBbk9iamVjdEVycm9yU3R1YlN0cnVjdHVyZShKU05vdEFuT2JqZWN0RXJyb3JTdHVi
OjpjcmVhdGVTdHJ1Y3R1cmUoanNOdWxsKCkpKQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbERhdGEuaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxE
YXRhLmgKaW5kZXggMGYxZjNjNi4uMjBkNjJkNSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbERhdGEuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsRGF0YS5oCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiTWFya1N0YWNrLmgiCiAjaW5j
bHVkZSAiTnVtZXJpY1N0cmluZ3MuaCIKICNpbmNsdWRlICJTbWFsbFN0cmluZ3MuaCIKKyNpbmNs
dWRlICJUZXJtaW5hdG9yLmgiCiAjaW5jbHVkZSAiVGltZW91dENoZWNrZXIuaCIKICNpbmNsdWRl
ICJXZWFrUmFuZG9tLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTExNiw2ICsxMTcs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+
IGFjdGl2YXRpb25TdHJ1Y3R1cmU7CiAgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IGludGVycnVw
dGVkRXhlY3V0aW9uRXJyb3JTdHJ1Y3R1cmU7CisgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHRl
cm1pbmF0ZWRFeGVjdXRpb25FcnJvclN0cnVjdHVyZTsKICAgICAgICAgUmVmUHRyPFN0cnVjdHVy
ZT4gc3RhdGljU2NvcGVTdHJ1Y3R1cmU7CiAgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHN0cmlu
Z1N0cnVjdHVyZTsKICAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gbm90QW5PYmplY3RFcnJvclN0
dWJTdHJ1Y3R1cmU7CkBAIC0xNTMsNiArMTU1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IEpJVFRodW5rcyBqaXRTdHViczsKICNlbmRpZgogICAgICAgICBUaW1lb3V0Q2hlY2tlciB0aW1l
b3V0Q2hlY2tlcjsKKyAgICAgICAgVGVybWluYXRvciB0ZXJtaW5hdG9yOwogICAgICAgICBIZWFw
IGhlYXA7CiAKICAgICAgICAgSlNWYWx1ZSBleGNlcHRpb247CmRpZmYgLS1naXQgYS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0LmgKaW5kZXggZDk1YzUyOS4uNjRhMTExOCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3Qu
aApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIkFyZ0xpc3QuaCIKICNpbmNsdWRlICJDbGFz
c0luZm8uaCIKICNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgorI2luY2x1ZGUgIkNvbXBs
ZXRpb24uaCIKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJKU0NlbGwuaCIKICNp
bmNsdWRlICJKU051bWJlckNlbGwuaCIKQEAgLTE5NSw5ICsxOTYsMTAgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0dsb2JhbE9iamVjdCgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1ZhcmlhYmxlT2JqZWN0KCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzQWN0aXZhdGlvbk9iamVj
dCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBpc1dhdGNo
ZG9nRXhjZXB0aW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBi
b29sIGlzTm90QW5PYmplY3RFcnJvclN0dWIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCisg
ICAgICAgIHZpcnR1YWwgQ29tcGxUeXBlIGV4Y2VwdGlvblR5cGUoKSBjb25zdCB7IHJldHVybiBU
aHJvdzsgfQorCiAgICAgICAgIHZvaWQgYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2Uoc2l6ZV90IG9s
ZFNpemUsIHNpemVfdCBuZXdTaXplKTsKICAgICAgICAgdm9pZCBhbGxvY2F0ZVByb3BlcnR5U3Rv
cmFnZUlubGluZShzaXplX3Qgb2xkU2l6ZSwgc2l6ZV90IG5ld1NpemUpOwogICAgICAgICBib29s
IGlzVXNpbmdJbmxpbmVTdG9yYWdlKCkgY29uc3QgeyByZXR1cm4gbV9zdHJ1Y3R1cmUtPmlzVXNp
bmdJbmxpbmVTdG9yYWdlKCk7IH0KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VGVybWluYXRvci5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZXJtaW5hdG9yLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmIwZjIzNgotLS0gL2Rldi9udWxsCisrKyBi
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVybWluYXRvci5oCkBAIC0wLDAgKzEsNDcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
ICgiR29vZ2xlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBm
cm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBU
ZXJtaW5hdG9yX2gKKyNkZWZpbmUgVGVybWluYXRvcl9oCisKK25hbWVzcGFjZSBKU0MgeworCitj
bGFzcyBUZXJtaW5hdG9yIHsKK3B1YmxpYzoKKyAgICBUZXJtaW5hdG9yKCkgOiBtX3Nob3VsZFRl
cm1pbmF0ZShmYWxzZSkgeyB9CisKKyAgICB2b2lkIHRlcm1pbmF0ZVNvb24oKSB7IG1fc2hvdWxk
VGVybWluYXRlID0gdHJ1ZTsgfQorICAgIGJvb2wgc2hvdWxkVGVybWluYXRlKCkgY29uc3QgeyBy
ZXR1cm4gbV9zaG91bGRUZXJtaW5hdGU7IH0KKworcHJpdmF0ZToKKyAgICBib29sIG1fc2hvdWxk
VGVybWluYXRlOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBUZXJtaW5h
dG9yX2gKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCBjMGZhZTMzLi4zZTI5NmJkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIw
MTAtMDQtMDUgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSRUdSRVNTSU9OOiBXb3JrZXIgdGVy
bWluYXRpb24gdmlhIEpTIHRpbWVvdXQgbWF5IGNhdXNlIHdvcmtlciB0ZXN0cyBsaWtlIGZhc3Qv
d29ya2Vycy93b3JrZXItdGVybWluYXRlLmh0bWwgZmFpbC4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2NjQ2CisKKyAgICAgICAgKiBmYXN0L3dvcmtl
cnMvcmVzb3VyY2VzL3dvcmtlci1ydW4tZm9yZXZlci5qczogQWRkZWQuCisgICAgICAgICogZmFz
dC93b3JrZXJzL3dvcmtlci10ZXJtaW5hdGUtZm9yZXZlci1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGZhc3Qvd29ya2Vycy93b3JrZXItdGVybWluYXRlLWZvcmV2ZXIuaHRtbDogQWRk
ZWQuCisgICAgICAgICAgICAtIFRlc3Qgd2hhdCBoYXBwZW5zIHdoZW4gd2UgdGVybWluYXRlIGFu
IGluZmluaXRlbHkgcnVubmluZyB3b3JrZXIuCisgICAgICAgICAgICAgIFRoZSBlc3NlbnRpYWwg
cG9pbnQgaXMgdGhhdCB3ZSBkb24ndCBzcGFtIHRoZSBjb25zb2xlIHdpdGgKKyAgICAgICAgICAg
ICAgbm9uc2Vuc2UgYWJvdXQgYSB0aW1lb3V0LgorICAgICAgICAqIHBsYXRmb3JtL21hYy9Ta2lw
cGVkOgorICAgICAgICAgICAgLSBSZXNjdWUgd29ya2VyLXRlcm1pbmF0ZS5odG1sIGZyb20gdGhl
IFNraXBwZWQgbGlzdCBub3cgdGhhdCB3ZSd2ZQorICAgICAgICAgICAgICBmaXhlZCB0aGUgdW5k
ZXJseWluZyBidWcgdGhhdCB3YXMgY2F1c2luZyB0aGUgZmxha2luZXNzLgorCiAyMDEwLTA0LTA1
ICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBLZW5uZXRoIFJvaGRlLUNocmlzdGlhbnNlbi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3Qvd29ya2Vycy9yZXNvdXJjZXMvd29ya2VyLXJ1bi1mb3JldmVyLmpzIGIvTGF5b3V0VGVzdHMv
ZmFzdC93b3JrZXJzL3Jlc291cmNlcy93b3JrZXItcnVuLWZvcmV2ZXIuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTEyZTQ5ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3Qvd29ya2Vycy9yZXNvdXJjZXMvd29ya2VyLXJ1bi1mb3JldmVyLmpzCkBAIC0w
LDAgKzEgQEAKK3doaWxlKDEpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJz
L3dvcmtlci10ZXJtaW5hdGUtZm9yZXZlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0
L3dvcmtlcnMvd29ya2VyLXRlcm1pbmF0ZS1mb3JldmVyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZTUzZGRmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci10ZXJtaW5hdGUtZm9yZXZlci1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSBAQAorVGVzdCBXb3JrZXIudGVybWluYXRlKCkgZm9yIGEgd29ya2VyIHRo
YXQgdHJpZXMgdG8gcnVuIGZvcmV2ZXIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3dv
cmtlcnMvd29ya2VyLXRlcm1pbmF0ZS1mb3JldmVyLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3dv
cmtlcnMvd29ya2VyLXRlcm1pbmF0ZS1mb3JldmVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uMWViMmQwMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3Qvd29ya2Vycy93b3JrZXItdGVybWluYXRlLWZvcmV2ZXIuaHRtbApAQCAtMCwwICsxLDExIEBA
Cis8Ym9keT4KKzxwPlRlc3QgV29ya2VyLnRlcm1pbmF0ZSgpIGZvciBhIHdvcmtlciB0aGF0IHRy
aWVzIHRvIHJ1biBmb3JldmVyLjwvcD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKwordmFy
IHdvcmtlciA9IG5ldyBXb3JrZXIoJ3Jlc291cmNlcy93b3JrZXItcnVuLWZvcmV2ZXIuanMnKTsK
K3dvcmtlci50ZXJtaW5hdGUoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvU2tpcHBlZAppbmRleCBhNjFhZDIxLi43NjlmYWM0IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvU2tpcHBlZApAQCAtMTUxLDggKzE1MSwzIEBAIGZhc3QvbWVkaWEvbWVkaWEtZmVhdHVyZS13
Z3Qtdmlldy1tb2RlLmh0bWwKICMgVGVzdCBpcyBmbGFreSBhbmQgdGh1cyBub3QgdXNlZnVsIHVu
dGlsIGZpeGVkLgogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY2
NDIKIGZhc3QvcmVwbGFjZWQvYm9yZGVyLXJhZGl1cy1jbGlwLmh0bWwKLQotIyBUaGlzIHRlc3Qg
aXMgdmVyeSBmbGFreSB3aXRoIGEgaGlnaCBmYWlsdXJlIHJhdGUgKGFyb3VuZCAyNSUpLgotIyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY2NDYKLWZhc3Qvd29ya2Vy
cy93b3JrZXItdGVybWluYXRlLmh0bWwKLQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlOTE3NGRkLi4xZjMzY2QxIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBA
CisyMDEwLTA0LTA1ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUkVHUkVTU0lPTjogV29ya2Vy
IHRlcm1pbmF0aW9uIHZpYSBKUyB0aW1lb3V0IG1heSBjYXVzZSB3b3JrZXIgdGVzdHMgbGlrZSBm
YXN0L3dvcmtlcnMvd29ya2VyLXRlcm1pbmF0ZS5odG1sIGZhaWwuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjY0NgorCisgICAgICAgIENhdXNlIHRo
ZSB3b3JrZXIgY29kZSB0byBzd2FsbG93IHRlcm1pbmF0aW9uIGV4Y2VwdGlvbnMgYmVjYXVzZSB0
aGVzZQorICAgICAgICBuZWVkIG5vdCBiZSByZXBvcnRlZCB0byB0aGUgdXNlciBiZWNhdXNlIHRo
ZXkgYXJlIGFuIGltcGxlbWVudGF0aW9uCisgICAgICAgIGRldGFpbCBvZiBob3cgd2UgdGVybWlu
YXRlIHdvcmtlciBleGVjdXRpb24uCisKKyAgICAgICAgVGVzdDogZmFzdC93b3JrZXJzL3dvcmtl
ci10ZXJtaW5hdGUtZm9yZXZlci5odG1sCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJp
bmRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVwb3J0RXhjZXB0aW9uKToKKyAgICAgICAg
ICAgIC0gUmVmdXNlIHRvIHJlcG9ydCB0ZXJtaW5hdGlvbiBleGNlcHRpb25zIHRvIHRoZSB1c2Vy
IGJlY2F1c2UgdGhleQorICAgICAgICAgICAgICBhcmUgYW4gaW1wbGVtZW50YXRpb24gZGV0YWls
LgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6Zm9yYmlkRXhlY3V0aW9uKToK
KyAgICAgICAgICAgIC0gSW5zdGVhZCBvZiB1c2luZyB0aW1lb3V0cyB0byBzdG9wIHJ1biBhd2F5
IHdvcmtlcnMsIHVzZSBvdXIgZmFuY3kKKyAgICAgICAgICAgICAgbmV3IFRlcm1pbmF0b3Igb2Jq
ZWN0LgorCiAyMDEwLTA0LTA1ICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlLUNocmlzdGlhbnNlbi4KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcCBiL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01CaW5kaW5nLmNwcAppbmRleCBmMjk0ZGFkLi45YjcyYjM3IDEwMDY0NAotLS0g
YS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAKKysrIGIvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCkBAIC01MzMsNiArNTMzLDkgQEAgZG91YmxlIHZhbHVl
VG9EYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIAogdm9pZCByZXBvcnRFeGNl
cHRpb24oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGV4Y2VwdGlvbikKIHsKKyAgICBpZiAoZXhj
ZXB0aW9uLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QoZXhjZXB0aW9uKS0+ZXhjZXB0aW9uVHlwZSgp
ID09IFRlcm1pbmF0ZWQpCisgICAgICAgIHJldHVybjsKKwogICAgIFVTdHJpbmcgZXJyb3JNZXNz
YWdlID0gZXhjZXB0aW9uLnRvU3RyaW5nKGV4ZWMpOwogICAgIEpTT2JqZWN0KiBleGNlcHRpb25P
YmplY3QgPSBleGNlcHRpb24udG9PYmplY3QoZXhlYyk7CiAgICAgaW50IGxpbmVOdW1iZXIgPSBl
eGNlcHRpb25PYmplY3QtPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJsaW5lIikpLnRvSW50
MzIoZXhlYyk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENv
bnRyb2xsZXIuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVy
LmNwcAppbmRleCBlMzcxNDIzLi41Y2VjNmQxIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMv
V29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTE0MSwxMCArMTQxLDEwIEBAIHZvaWQgV29y
a2VyU2NyaXB0Q29udHJvbGxlcjo6Zm9yYmlkRXhlY3V0aW9uKCkKICAgICAvLyBUaGlzIGZ1bmN0
aW9uIGlzIGNhbGxlZCBmcm9tIGFub3RoZXIgdGhyZWFkLgogICAgIC8vIE11dGV4IHByb3RlY3Rp
b24gZm9yIG1fZXhlY3V0aW9uRm9yYmlkZGVuIGlzIG5lZWRlZCB0byBndWFyYW50ZWUgdGhhdCB0
aGUgdmFsdWUgaXMgc3luY2hyb25pemVkIGJldHdlZW4gcHJvY2Vzc29ycywgYmVjYXVzZQogICAg
IC8vIGlmIGl0IHdlcmUgbm90LCB0aGUgd29ya2VyIGNvdWxkIHJlLWVudGVyIEpTQzo6ZXZhbHVh
dGUoKSwgYnV0IHdpdGggdGltZW91dCBhbHJlYWR5IHJlc2V0LgotICAgIC8vIEl0IGlzIG5vdCBj
cml0aWNhbCBmb3IgSW50ZXJwcmV0ZXI6Om1fdGltZW91dFRpbWUgdG8gYmUgc3luY2hyb25pemVk
LCB3ZSBqdXN0IHJlbHkgb24gaXQgcmVhY2hpbmcgdGhlIHdvcmtlciB0aHJlYWQncyBwcm9jZXNz
b3Igc29vbmVyIG9yIGxhdGVyLgorICAgIC8vIEl0IGlzIG5vdCBjcml0aWNhbCBmb3IgVGVybWlu
YXRvcjo6bV9zaG91bGRUZXJtaW5hdGUgdG8gYmUgc3luY2hyb25pemVkLCB3ZSBqdXN0IHJlbHkg
b24gaXQgcmVhY2hpbmcgdGhlIHdvcmtlciB0aHJlYWQncyBwcm9jZXNzb3Igc29vbmVyIG9yIGxh
dGVyLgogICAgIE11dGV4TG9ja2VyIGxvY2sobV9zaGFyZWREYXRhTXV0ZXgpOwogICAgIG1fZXhl
Y3V0aW9uRm9yYmlkZGVuID0gdHJ1ZTsKLSAgICBtX2dsb2JhbERhdGEtPnRpbWVvdXRDaGVja2Vy
LnNldFRpbWVvdXRJbnRlcnZhbCgxKTsgLy8gMW1zIGlzIHRoZSBzbWFsbGVzdCB0aW1lb3V0IHRo
YXQgY2FuIGJlIHNldC4KKyAgICBtX2dsb2JhbERhdGEtPnRlcm1pbmF0b3IudGVybWluYXRlU29v
bigpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>