<?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>131082</bug_id>
          
          <creation_ts>2014-04-01 16:51:22 -0700</creation_ts>
          <short_desc>watchdog m_didFire state erroneously retained</short_desc>
          <delta_ts>2015-08-26 19:51:30 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>147968</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter>abaldeva</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>p.jacquemart</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>996525</commentid>
    <comment_count>0</comment_count>
    <who name="">abaldeva</who>
    <bug_when>2014-04-01 16:51:22 -0700</bug_when>
    <thetext>Hi,

Looking at the watchdog.cpp implementation, once the m_didFire is set to true in the WatchDog::didFire(ExecState), it is never set to false. Thus, if the user decided to terminate the script as a result of timeout but keep the page around(WebKit 1 architecture), the scripts would suffer from the side effect of earlier m_didFire state.

It seems like one possible solution would be to set m_didFire to false when arming the watchdog. 

--Arpit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1113318</commentid>
    <comment_count>1</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-07-29 23:13:40 -0700</bug_when>
    <thetext>The existing watchdog implementation requires that the user call Watchdog::setTimeLimit() to reset the watchdog.  Granted, it would be more intuitive if we had provided a Watchdog::reset() to make it clear.

As for why I didn’t just reset the watchdog automatically on exit from the VM or re-entry, it was because a rogue script could call setTimeout() and register itself for callback before the watchdog times out.  Then, if we automatically reset the watchdog on exiting the VM, or when we re-enter the VM for the setTimeout() callback, the script will get to hog the CPU again.  And it can repeat this ad infinitum, effectively defeating the watchdog time out.

The solution was to not allow any scripts to run until the user of the VM is ready and explicitly resets the watchdog.  “Ready” in this case would probably mean that the user has purged all the setTimeout callbacks (and any other mechanisms by which the rogue script can get more execution time). 

That said, the user could ask to be notified of the time out, and do the purging before it re-entere the VM to execute any script again.  So, maybe the explicit reset is not so necessary after all.

I’ll give this some more thought.  If anyone has suggestions of a better solution (and why), please chime in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1113616</commentid>
    <comment_count>2</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-07-30 18:30:32 -0700</bug_when>
    <thetext>I&apos;ll fix the Watchdog to clear the didfire state as soon as the VM has thrown the TerminateExecutionException.  Starting on the work now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116928</commentid>
    <comment_count>3</comment_count>
      <attachid>258815</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-08-12 01:08:06 -0700</bug_when>
    <thetext>Created attachment 258815
work in progress: let&apos;s try this on the EWS bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116930</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-12 01:12:21 -0700</bug_when>
    <thetext>Attachment 258815 did not pass style-queue:


ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 1 in 11 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>1117178</commentid>
    <comment_count>5</comment_count>
      <attachid>258879</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-08-12 22:36:40 -0700</bug_when>
    <thetext>Created attachment 258879
the fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117217</commentid>
    <comment_count>6</comment_count>
      <attachid>258879</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-08-13 06:49:51 -0700</bug_when>
    <thetext>Comment on attachment 258879
the fix.

Cancelling this review.  I thought of a better way I should take to implement the fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117277</commentid>
    <comment_count>7</comment_count>
      <attachid>258899</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-08-13 10:37:46 -0700</bug_when>
    <thetext>Created attachment 258899
fix 2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117364</commentid>
    <comment_count>8</comment_count>
      <attachid>258899</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-08-13 13:45:25 -0700</bug_when>
    <thetext>Comment on attachment 258899
fix 2.

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

&gt; Source/JavaScriptCore/runtime/VM.cpp:819
&gt; +void VM::scheduleTermination()
&gt; +{
&gt; +    m_hasScheduledTermination = true;
&gt; +    WTF::storeStoreFence();
&gt; +    if (watchdog)
&gt; +        watchdog-&gt;interruptScript();
&gt; +}

Why do we want two different ways to indicate interruption (m_hasScheduledTermination and m_timerDidFire)?

&gt; Source/JavaScriptCore/runtime/Watchdog.cpp:257
&gt; +void Watchdog::resetForTermination()
&gt; +{
&gt; +    stopTimer();
&gt; +}

It is an anti-pattern to have a function whose only job is to call another function of a different name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117401</commentid>
    <comment_count>9</comment_count>
      <attachid>258899</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-08-13 14:35:11 -0700</bug_when>
    <thetext>Comment on attachment 258899
fix 2.

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

&gt;&gt; Source/JavaScriptCore/runtime/VM.cpp:819
&gt;&gt; +}
&gt; 
&gt; Why do we want two different ways to indicate interruption (m_hasScheduledTermination and m_timerDidFire)?

Because the Watchdog::didFireSlow() will reject m_timerDidFire as a spurious wake up.  scheduleTermination() is used to request termination even if the watchdog&apos;s CPU deadline has not expired.  

The alternative is to have scheduleTermination modify the watchdog&apos;s m_cpuDeadline and m_wallClockDeadline to make it look like the timer fired.  Note that the caller of scheduleTermination() is usually a thread different than the script thread that we wish to terminate.  I had thought about this approach but previously thought that it wasn&apos;t good to have a separate thread modify the deadline values.  But on second thought, I see no reason why we can&apos;t do that.  I will make it so.

&gt;&gt; Source/JavaScriptCore/runtime/Watchdog.cpp:257
&gt;&gt; +}
&gt; 
&gt; It is an anti-pattern to have a function whose only job is to call another function of a different name.

Will fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117422</commentid>
    <comment_count>10</comment_count>
      <attachid>258940</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-08-13 15:39:14 -0700</bug_when>
    <thetext>Created attachment 258940
fix 3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117454</commentid>
    <comment_count>11</comment_count>
      <attachid>258940</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-08-13 16:27:56 -0700</bug_when>
    <thetext>Comment on attachment 258940
fix 3

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

&gt; Source/JavaScriptCore/runtime/VM.cpp:817
&gt; +void VM::scheduleTermination()
&gt; +{
&gt; +    if (watchdog)
&gt; +        watchdog-&gt;interruptScript();
&gt; +}

A helper function that silently ignores you if you have forgotten to hook up the watchdog is an invitation to make mistakes. One can only schedule termination if one has set up the VM to be able to do so by hooking up the watchdog and compiling watchdog hooks into all code. 

I don&apos;t think we should have a helper function like this. It only serves to hide an important limitation.

&gt; Source/JavaScriptCore/runtime/Watchdog.cpp:249
&gt; +void Watchdog::interruptScript()
&gt; +{
&gt; +    // Currently, the best that we can do to interrupt the script thread is to simulate the watchdog
&gt; +    // firing on it.

I would call this function &quot;fire&quot; or &quot;fireManually&quot; since its action is tested by &quot;didFire&quot;.

I don&apos;t think this comment belongs here. Calling this &quot;the best we can do&quot; implies that this function is somehow lacking. But if you ask the watchdog to fire, and it does, it is not lacking.

&gt; Source/WebCore/bindings/js/WorkerScriptController.cpp:155
&gt; +    m_vm-&gt;scheduleTermination();

It looks like this code won&apos;t do anything, since WorkerScriptController does not ensure the creation of the watchdog. Is this a regression, or has it always been this way? Do we have tests that cover worker cancellation?

This seems to be an example of how VM::scheduleTermination can hide a problem. If you only read this line of code, it appears that the VM will take care of termination for you. But it won&apos;t unless you have created a watchdog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117627</commentid>
    <comment_count>12</comment_count>
      <attachid>258940</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-08-14 07:03:57 -0700</bug_when>
    <thetext>Comment on attachment 258940
fix 3

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

&gt;&gt; Source/WebCore/bindings/js/WorkerScriptController.cpp:155
&gt;&gt; +    m_vm-&gt;scheduleTermination();
&gt; 
&gt; It looks like this code won&apos;t do anything, since WorkerScriptController does not ensure the creation of the watchdog. Is this a regression, or has it always been this way? Do we have tests that cover worker cancellation?
&gt; 
&gt; This seems to be an example of how VM::scheduleTermination can hide a problem. If you only read this line of code, it appears that the VM will take care of termination for you. But it won&apos;t unless you have created a watchdog.

Regarding whether WorkerScriptController not working completely, it has always been this way.  More specifically, we can terminate workers as long as they don&apos;t have an infinite loop.  After the introduction of the watchdog, we can also terminate workers with infinite loops but only if there&apos;s a time limit set on the watchdog.

Regarding tests that cover worker cancellation, a survey of the worker tests shows that they do test termination but most of them do not test with an infinite loop.  The sole exception is fast/workers/worker-terminate-forever.html.  However, there&apos;s no good way to confirm that the worker thread actually terminated (at least, we don&apos;t have one yet).  So, the failure to terminate the infinite loop in the worker goes undetected.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117661</commentid>
    <comment_count>13</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-08-14 10:24:40 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Regarding tests that cover worker cancellation, a survey of the worker tests
&gt; shows that they do test termination but most of them do not test with an
&gt; infinite loop.  The sole exception is
&gt; fast/workers/worker-terminate-forever.html.  However, there&apos;s no good way to
&gt; confirm that the worker thread actually terminated (at least, we don&apos;t have
&gt; one yet). ...

I&apos;ve found a way using internals.workerThreadCount.  Working on the modifying the test now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117819</commentid>
    <comment_count>14</comment_count>
      <attachid>259054</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-08-14 16:10:00 -0700</bug_when>
    <thetext>Created attachment 259054
fix 4: nearly there.

Archiving this version while I work on adding CheckWatchdog support to the FTL.  After that, we can update the patch to enable the fixed worker with runaway loop test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118693</commentid>
    <comment_count>15</comment_count>
      <attachid>259319</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-08-18 16:41:58 -0700</bug_when>
    <thetext>Created attachment 259319
fix 5: latest greatest with Web Workers now able to terminate().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119021</commentid>
    <comment_count>16</comment_count>
      <attachid>259319</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-08-19 14:26:11 -0700</bug_when>
    <thetext>Comment on attachment 259319
fix 5: latest greatest with Web Workers now able to terminate().

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

r=me with some changes below

&gt; Source/JavaScriptCore/runtime/Watchdog.cpp:104
&gt; +    // To prevent a race condition with fireManually(), this is the only place where we&apos;re allowed
&gt; +    // to clear m_timerDidFire. That is because by getting here, we&apos;re committed to check
&gt; +    // hasScheduledTermination() below.

You should remove this comment.

It is wrong to explain this behavior as a defense against a race condition. The only way to defend against a race condition is to add a synchronization primitive, and there is none here.

It is wrong to explain this behavior as required by threads. We would still need this behavior if there were no threads. It is always true that one must only set m_timerDidFire to false if one subsequently tests for termination because, by clearing m_timerDidFire, we cancel any further checks.

&gt; Source/JavaScriptCore/runtime/Watchdog.cpp:111
&gt; +    // We need an explicit check here because if we have a scheduled termination, we don&apos;t want to
&gt; +    // give the watchdog callback function (if available) the chance to prevent termination.
&gt; +    if (hasScheduledTermination())
&gt; +        return true;

Let&apos;s not do this. We have no clients who want this behavior, and it is bad to add special cases when they are not needed, since they add complication, and they may contradict what we discover clients do want down the road. For example, we may discover that workers prefer to allow themselves a short amount of slack time before honoring a termination request.

If we did want to do this, we would need a better name. The API name &quot;fireManually&quot; does not convey &quot;guarantee termination regardless of what the time limit delegate says&quot;. It only conveys bringing JavaScript execution to a safe point, which will either terminate immediately or ask the delegate if it wants to terminate, depending on how the client has configured the VM. A better name would be &quot;terminateExecutionIgnoringTimeLimitDelegate&quot;.

You should remove this test and change fireManually set the time limit and the wall clock and CPU deadlines to ensure termination, if the time limit delegate agrees.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119038</commentid>
    <comment_count>17</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-08-19 14:59:31 -0700</bug_when>
    <thetext>I discussed the multi-threading issues with Geoff offline, and with the addition of a missing storeLoadFence, we are convinced that the code works.  However, the correctness of this code depends on a carefully orchestrated sequencing of load and stores of the watchdog values.  Hence, it is fragile and may be easily broken if someone modifies it in the future without a full understanding of the orchestration.  Since this code is not in the critical path for performance, we agreed that it would be simpler if we just switch to using a lock instead.  I will make that change before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119512</commentid>
    <comment_count>18</comment_count>
      <attachid>259543</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-08-20 18:01:29 -0700</bug_when>
    <thetext>Created attachment 259543
fix 6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121027</commentid>
    <comment_count>19</comment_count>
      <attachid>259543</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-08-26 12:48:04 -0700</bug_when>
    <thetext>Comment on attachment 259543
fix 6

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121169</commentid>
    <comment_count>20</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-08-26 19:51:30 -0700</bug_when>
    <thetext>Thanks for the review and all the feedback.  Landed in r189009: &lt;http://trac.webkit.org/r189009&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258815</attachid>
            <date>2015-08-12 01:08:06 -0700</date>
            <delta_ts>2015-08-12 22:36:40 -0700</delta_ts>
            <desc>work in progress: let&apos;s try this on the EWS bots.</desc>
            <filename>bug-131082.patch</filename>
            <type>text/plain</type>
            <size>20785</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg4MzMyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ0IEBA
CisyMDE1LTA4LTEyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICB3
YXRjaGRvZyBtX2RpZEZpcmUgc3RhdGUgZXJyb25lb3VzbHkgcmV0YWluZWQuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzEwODIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFQSS90ZXN0cy9FeGVjdXRp
b25UaW1lTGltaXRUZXN0LmNwcDoKKyAgICAgICAgKHRlc3RSZXNldEFmdGVyVGltZW91dCk6Cisg
ICAgICAgICh0ZXN0RXhlY3V0aW9uVGltZUxpbWl0KToKKyAgICAgICAgLSBBZGQgdGVzdCBzY2Vu
YXJpb3MgdG8gdmVyaWZ5IHRoYXQgdGhlIHdhdGNoZG9nIGlzIGF1dG9tYXRpY2FsbHkgcmVzZXQg
YnkgdGhlIFZNCisgICAgICAgICAgdXBvbiB0aHJvd2luZyB0aGUgVGVybWluYXRlZEV4ZWN1dGlv
bkV4Y2VwdGlvbi4KKworICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAg
ICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGUpOgorICAgICAgICAoSlNDOjpJbnRlcnBy
ZXRlcjo6ZXhlY3V0ZUNhbGwpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZUNv
bnN0cnVjdCk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGxs
aW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1df
UEFUSF9ERUNMKToKKyAgICAgICAgLSBBZGRlZCBjYWxscyB0byByZXNldCB0aGUgd2F0Y2hkb2cg
d2hlbiB3ZSBhcmUgYWJvdXQgdG8gdGhyb3cgdGhlIFRlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRp
b24uCisgICAgICAgICAgVGhpcyByZXNvbHZlcyB0aGUgYnVnLgorCisgICAgICAgICogcnVudGlt
ZS9XYXRjaGRvZy5jcHA6CisgICAgICAgIChKU0M6OldhdGNoZG9nOjpXYXRjaGRvZyk6CisgICAg
ICAgIChKU0M6OldhdGNoZG9nOjpzZXRUaW1lTGltaXQpOgorICAgICAgICAoSlNDOjpXYXRjaGRv
Zzo6ZGlkRmlyZSk6CisgICAgICAgIC0gUmVuYW1lZCBmcm9tIGRpZEZpcmVTbG93KCkgc2luY2Ug
dGhlIGZhc3QgcGF0aCBpcyBub3cgbmFtZWQgc2hvdWxkVHJpZ2dlclRlcm1pbmF0aW9uKCkuCisg
ICAgICAgIChKU0M6OldhdGNoZG9nOjpoYXNUaW1lTGltaXQpOgorICAgICAgICAoSlNDOjpXYXRj
aGRvZzo6c2NoZWR1bGVUZXJtaW5hdGlvbik6CisgICAgICAgIChKU0M6OldhdGNoZG9nOjpyZXNl
dEZvclRlcm1pbmF0aW9uKToKKyAgICAgICAgKEpTQzo6V2F0Y2hkb2c6OmVudGVyZWRWTSk6Cisg
ICAgICAgIChKU0M6OldhdGNoZG9nOjpzdGFydFRpbWVyKToKKyAgICAgICAgKEpTQzo6V2F0Y2hk
b2c6OmRpZEZpcmVTbG93KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2F0Y2hkb2c6OmZpcmUp
OiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvV2F0Y2hkb2cuaDoKKyAgICAgICAgKEpTQzo6
V2F0Y2hkb2c6OnNob3VsZFRyaWdnZXJUZXJtaW5hdGlvbik6CisgICAgICAgIChKU0M6OldhdGNo
ZG9nOjpoYXNTY2hlZHVsZWRUZXJtaW5hdGlvbik6CisgICAgICAgIChKU0M6OldhdGNoZG9nOjp0
aW1lckRpZEZpcmVBZGRyZXNzKToKKyAgICAgICAgKEpTQzo6V2F0Y2hkb2c6OmRpZEZpcmUpOiBE
ZWxldGVkLgorCiAyMDE1LTA4LTExICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAog
ICAgICAgICBJbXBsZW1lbnRhdGlvbiBKYXZhU2NyaXB0IHdhdGNoZG9nIHVzaW5nIFdURjo6V29y
a1F1ZXVlLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9FeGVjdXRpb25U
aW1lTGltaXRUZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L3Rlc3RzL0V4ZWN1dGlvblRpbWVMaW1pdFRlc3QuY3BwCShyZXZpc2lvbiAxODgzMjkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0V4ZWN1dGlvblRpbWVMaW1pdFRlc3QuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03OSw2ICs3OSwyMiBAQCBzdGF0aWMgYm9vbCBleHRlbmRUZXJt
aW5hdGVDYWxsYmFjayhKU0NvCiB9CiAKIAorc3RhdGljIHZvaWQgdGVzdFJlc2V0QWZ0ZXJUaW1l
b3V0KGJvb2wmIGZhaWxlZCkKK3sKKyAgICBKU1ZhbHVlUmVmIHYgPSBudWxscHRyOworICAgIEpT
VmFsdWVSZWYgZXhjZXB0aW9uID0gbnVsbHB0cjsKKyAgICBjb25zdCBjaGFyKiByZWVudHJ5U2Ny
aXB0ID0gIjEwMCI7CisgICAgSlNTdHJpbmdSZWYgc2NyaXB0ID0gSlNTdHJpbmdDcmVhdGVXaXRo
VVRGOENTdHJpbmcocmVlbnRyeVNjcmlwdCk7CisgICAgdiA9IEpTRXZhbHVhdGVTY3JpcHQoY29u
dGV4dCwgc2NyaXB0LCBudWxscHRyLCBudWxscHRyLCAxLCAmZXhjZXB0aW9uKTsKKyAgICBpZiAo
ZXhjZXB0aW9uKSB7CisgICAgICAgIHByaW50ZigiRkFJTDogV2F0Y2hkb2cgdGltZW91dCB3YXMg
bm90IHJlc2V0LlxuIik7CisgICAgICAgIGZhaWxlZCA9IHRydWU7CisgICAgfSBlbHNlIGlmICgh
SlNWYWx1ZUlzTnVtYmVyKGNvbnRleHQsIHYpIHx8IEpTVmFsdWVUb051bWJlcihjb250ZXh0LCB2
LCBudWxscHRyKSAhPSAxMDApIHsKKyAgICAgICAgcHJpbnRmKCJGQUlMOiBTY3JpcHQgcmVzdWx0
IGlzIG5vdCBhcyBleHBlY3RlZC5cbiIpOworICAgICAgICBmYWlsZWQgPSB0cnVlOworICAgIH0K
K30KKwogaW50IHRlc3RFeGVjdXRpb25UaW1lTGltaXQoKQogewogICAgIGNvbnRleHQgPSBKU0ds
b2JhbENvbnRleHRDcmVhdGVJbkdyb3VwKG51bGxwdHIsIG51bGxwdHIpOwpAQCAtMTIxLDYgKzEz
Nyw4IEBAIGludCB0ZXN0RXhlY3V0aW9uVGltZUxpbWl0KCkKICAgICAgICAgICAgIHByaW50Zigi
RkFJTDogVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbiB3YXMgbm90IHRocm93bi5cbiIpOwog
ICAgICAgICAgICAgZmFpbGVkID0gdHJ1ZTsKICAgICAgICAgfQorCisgICAgICAgIHRlc3RSZXNl
dEFmdGVyVGltZW91dChmYWlsZWQpOwogICAgIH0KICAgICAKICAgICAvKiBUZXN0IHRoZSBzY3Jp
cHQgdGltZW91dCdzIFRlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24gc2hvdWxkIE5PVCBiZSBj
YXRjaGFibGU6ICovCkBAIC0xNDgsNiArMTY2LDggQEAgaW50IHRlc3RFeGVjdXRpb25UaW1lTGlt
aXQoKQogICAgICAgICAgICAgcHJpbnRmKCJGQUlMOiBUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0
aW9uIHdhcyBjYXVnaHQuXG4iKTsKICAgICAgICAgICAgIGZhaWxlZCA9IHRydWU7CiAgICAgICAg
IH0KKworICAgICAgICB0ZXN0UmVzZXRBZnRlclRpbWVvdXQoZmFpbGVkKTsKICAgICB9CiAgICAg
CiAgICAgLyogVGVzdCBzY3JpcHQgdGltZW91dCB3aXRoIG5vIGNhbGxiYWNrOiAqLwpAQCAtMTcy
LDYgKzE5Miw4IEBAIGludCB0ZXN0RXhlY3V0aW9uVGltZUxpbWl0KCkKICAgICAgICAgICAgIHBy
aW50ZigiRkFJTDogVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbiB3YXMgbm90IHRocm93bi5c
biIpOwogICAgICAgICAgICAgZmFpbGVkID0gdHJ1ZTsKICAgICAgICAgfQorCisgICAgICAgIHRl
c3RSZXNldEFmdGVyVGltZW91dChmYWlsZWQpOwogICAgIH0KICAgICAKICAgICAvKiBUZXN0IHNj
cmlwdCB0aW1lb3V0IGNhbmNlbGxhdGlvbjogKi8KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkocmV2aXNpb24gMTg4MzI5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtODY2LDggKzg2NiwxMCBAQCBmYWlsZWRKU09OUDoKIAogICAgIFByb2dy
YW1Db2RlQmxvY2sqIGNvZGVCbG9jayA9IHByb2dyYW0tPmNvZGVCbG9jaygpOwogCi0gICAgaWYg
KFVOTElLRUxZKHZtLndhdGNoZG9nICYmIHZtLndhdGNoZG9nLT5kaWRGaXJlKGNhbGxGcmFtZSkp
KQorICAgIGlmIChVTkxJS0VMWSh2bS53YXRjaGRvZyAmJiB2bS53YXRjaGRvZy0+c2hvdWxkVHJp
Z2dlclRlcm1pbmF0aW9uKGNhbGxGcmFtZSkpKSB7CisgICAgICAgIHZtLndhdGNoZG9nLT5yZXNl
dEZvclRlcm1pbmF0aW9uKCk7CiAgICAgICAgIHJldHVybiB0aHJvd1Rlcm1pbmF0ZWRFeGVjdXRp
b25FeGNlcHRpb24oY2FsbEZyYW1lKTsKKyAgICB9CiAKICAgICBBU1NFUlQoY29kZUJsb2NrLT5u
dW1QYXJhbWV0ZXJzKCkgPT0gMSk7IC8vIDEgcGFyYW1ldGVyIGZvciAndGhpcycuCiAKQEAgLTky
OSw4ICs5MzEsMTAgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNhbGwoQ2FsbEZyYQog
ICAgIH0gZWxzZQogICAgICAgICBuZXdDb2RlQmxvY2sgPSAwOwogCi0gICAgaWYgKFVOTElLRUxZ
KHZtLndhdGNoZG9nICYmIHZtLndhdGNoZG9nLT5kaWRGaXJlKGNhbGxGcmFtZSkpKQorICAgIGlm
IChVTkxJS0VMWSh2bS53YXRjaGRvZyAmJiB2bS53YXRjaGRvZy0+c2hvdWxkVHJpZ2dlclRlcm1p
bmF0aW9uKGNhbGxGcmFtZSkpKSB7CisgICAgICAgIHZtLndhdGNoZG9nLT5yZXNldEZvclRlcm1p
bmF0aW9uKCk7CiAgICAgICAgIHJldHVybiB0aHJvd1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRp
b24oY2FsbEZyYW1lKTsKKyAgICB9CiAKICAgICBQcm90b0NhbGxGcmFtZSBwcm90b0NhbGxGcmFt
ZTsKICAgICBwcm90b0NhbGxGcmFtZS5pbml0KG5ld0NvZGVCbG9jaywgZnVuY3Rpb24sIHRoaXNW
YWx1ZSwgYXJnc0NvdW50LCBhcmdzLmRhdGEoKSk7CkBAIC05OTksOCArMTAwMywxMCBAQCBKU09i
amVjdCogSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDb25zdHJ1Y3QoCiAgICAgfSBlbHNlCiAgICAgICAg
IG5ld0NvZGVCbG9jayA9IDA7CiAKLSAgICBpZiAoVU5MSUtFTFkodm0ud2F0Y2hkb2cgJiYgdm0u
d2F0Y2hkb2ctPmRpZEZpcmUoY2FsbEZyYW1lKSkpCisgICAgaWYgKFVOTElLRUxZKHZtLndhdGNo
ZG9nICYmIHZtLndhdGNoZG9nLT5zaG91bGRUcmlnZ2VyVGVybWluYXRpb24oY2FsbEZyYW1lKSkp
IHsKKyAgICAgICAgdm0ud2F0Y2hkb2ctPnJlc2V0Rm9yVGVybWluYXRpb24oKTsKICAgICAgICAg
cmV0dXJuIHRocm93VGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihjYWxsRnJhbWUpOworICAg
IH0KIAogICAgIFByb3RvQ2FsbEZyYW1lIHByb3RvQ2FsbEZyYW1lOwogICAgIHByb3RvQ2FsbEZy
YW1lLmluaXQobmV3Q29kZUJsb2NrLCBjb25zdHJ1Y3RvciwgbmV3VGFyZ2V0LCBhcmdzQ291bnQs
IGFyZ3MuZGF0YSgpKTsKQEAgLTEwNzIsOCArMTA3OCwxMCBAQCBKU1ZhbHVlIEludGVycHJldGVy
OjpleGVjdXRlKENhbGxGcmFtZUNsCiAgICAgaWYgKExlZ2FjeVByb2ZpbGVyKiBwcm9maWxlciA9
IHZtLmVuYWJsZWRQcm9maWxlcigpKQogICAgICAgICBwcm9maWxlci0+d2lsbEV4ZWN1dGUoY2xv
c3VyZS5vbGRDYWxsRnJhbWUsIGNsb3N1cmUuZnVuY3Rpb24pOwogCi0gICAgaWYgKFVOTElLRUxZ
KHZtLndhdGNoZG9nICYmIHZtLndhdGNoZG9nLT5kaWRGaXJlKGNsb3N1cmUub2xkQ2FsbEZyYW1l
KSkpCisgICAgaWYgKFVOTElLRUxZKHZtLndhdGNoZG9nICYmIHZtLndhdGNoZG9nLT5zaG91bGRU
cmlnZ2VyVGVybWluYXRpb24oY2xvc3VyZS5vbGRDYWxsRnJhbWUpKSkgeworICAgICAgICB2bS53
YXRjaGRvZy0+cmVzZXRGb3JUZXJtaW5hdGlvbigpOwogICAgICAgICByZXR1cm4gdGhyb3dUZXJt
aW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKGNsb3N1cmUub2xkQ2FsbEZyYW1lKTsKKyAgICB9CiAK
ICAgICAvLyBFeGVjdXRlIHRoZSBjb2RlOgogICAgIEpTVmFsdWUgcmVzdWx0OwpAQCAtMTE1Myw4
ICsxMTYxLDEwIEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGEKICAg
ICAgICAgfQogICAgIH0KIAotICAgIGlmIChVTkxJS0VMWSh2bS53YXRjaGRvZyAmJiB2bS53YXRj
aGRvZy0+ZGlkRmlyZShjYWxsRnJhbWUpKSkKKyAgICBpZiAoVU5MSUtFTFkodm0ud2F0Y2hkb2cg
JiYgdm0ud2F0Y2hkb2ctPnNob3VsZFRyaWdnZXJUZXJtaW5hdGlvbihjYWxsRnJhbWUpKSkgewor
ICAgICAgICB2bS53YXRjaGRvZy0+cmVzZXRGb3JUZXJtaW5hdGlvbigpOwogICAgICAgICByZXR1
cm4gdGhyb3dUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKGNhbGxGcmFtZSk7CisgICAgfQog
CiAgICAgQVNTRVJUKGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpID09IDEpOyAvLyAxIHBhcmFt
ZXRlciBmb3IgJ3RoaXMnLgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDE4ODMyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk2OCw4ICs5NjgsMTAg
QEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkhhbmRsZVdhdGNoZAogICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMp
OwogCi0gICAgaWYgKFVOTElLRUxZKHZtLndhdGNoZG9nICYmIHZtLndhdGNoZG9nLT5kaWRGaXJl
KGV4ZWMpKSkKKyAgICBpZiAoVU5MSUtFTFkodm0ud2F0Y2hkb2cgJiYgdm0ud2F0Y2hkb2ctPnNo
b3VsZFRyaWdnZXJUZXJtaW5hdGlvbihleGVjKSkpIHsKKyAgICAgICAgdm0ud2F0Y2hkb2ctPnJl
c2V0Rm9yVGVybWluYXRpb24oKTsKICAgICAgICAgdm0udGhyb3dFeGNlcHRpb24oZXhlYywgY3Jl
YXRlVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbigmdm0pKTsKKyAgICB9CiB9CiAKIHZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJvd1N0YXRpY0Vycm9yKEV4ZWNTdGF0ZSogZXhlYywg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBpbnQzMl90IHJlZmVyZW5jZUVycm9yRmxhZykK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNw
cAkocmV2aXNpb24gMTg4MzI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
U2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI4Niw4ICsxMjg2LDEwIEBAIExMSU5U
X1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9oYW5kbGVfd2EKIHsKICAgICBMTElOVF9CRUdJTl9O
T19TRVRfUEMoKTsKICAgICBBU1NFUlQodm0ud2F0Y2hkb2cpOwotICAgIGlmIChVTkxJS0VMWSh2
bS53YXRjaGRvZy0+ZGlkRmlyZShleGVjKSkpCisgICAgaWYgKFVOTElLRUxZKHZtLndhdGNoZG9n
LT5zaG91bGRUcmlnZ2VyVGVybWluYXRpb24oZXhlYykpKSB7CisgICAgICAgIHZtLndhdGNoZG9n
LT5yZXNldEZvclRlcm1pbmF0aW9uKCk7CiAgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZVRlcm1p
bmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oJnZtKSk7CisgICAgfQogICAgIExMSU5UX1JFVFVSTl9U
V08oMCwgZXhlYyk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dh
dGNoZG9nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9X
YXRjaGRvZy5jcHAJKHJldmlzaW9uIDE4ODMyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1dhdGNoZG9nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsOSArNDEsNyBAQCBzdGF0
aWMgc3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcyBjdXJyZW50CiB9CiAKIFdhdGNoZG9nOjpXYXRj
aGRvZygpCi0gICAgOiBtX3RpbWVyRGlkRmlyZShmYWxzZSkKLSAgICAsIG1fZGlkRmlyZShmYWxz
ZSkKLSAgICAsIG1fdGltZUxpbWl0KG5vVGltZUxpbWl0KQorICAgIDogbV90aW1lTGltaXQobm9U
aW1lTGltaXQpCiAgICAgLCBtX2NwdURlYWRsaW5lKG5vVGltZUxpbWl0KQogICAgICwgbV93YWxs
Q2xvY2tEZWFkbGluZShub1RpbWVMaW1pdCkKICAgICAsIG1fY2FsbGJhY2soMCkKQEAgLTY3LDgg
KzY1LDYgQEAgdm9pZCBXYXRjaGRvZzo6c2V0VGltZUxpbWl0KFZNJiB2bSwgc3RkOgogewogICAg
IGJvb2wgaGFkVGltZUxpbWl0ID0gaGFzVGltZUxpbWl0KCk7CiAKLSAgICBtX2RpZEZpcmUgPSBm
YWxzZTsgLy8gUmVzZXQgdGhlIHdhdGNoZG9nLgotCiAgICAgbV90aW1lTGltaXQgPSBsaW1pdDsK
ICAgICBtX2NhbGxiYWNrID0gY2FsbGJhY2s7CiAgICAgbV9jYWxsYmFja0RhdGExID0gZGF0YTE7
CkBAIC05MSwxNiArODcsMTYgQEAgdm9pZCBXYXRjaGRvZzo6c2V0VGltZUxpbWl0KFZNJiB2bSwg
c3RkOgogICAgICAgICBzdGFydFRpbWVyKG1fdGltZUxpbWl0KTsKIH0KIAotYm9vbCBXYXRjaGRv
Zzo6ZGlkRmlyZVNsb3coRXhlY1N0YXRlKiBleGVjKQorYm9vbCBXYXRjaGRvZzo6ZGlkRmlyZShF
eGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgQVNTRVJUKG1fdGltZXJEaWRGaXJlKTsKICAgICBtX3Rp
bWVyRGlkRmlyZSA9IGZhbHNlOwogCi0gICAgLy8gQSBsZWdpdGltYXRlIHRpbWVyIGlzIHRoZSB0
aW1lciB3aGljaCB3b2tlIHVwIHdhdGNoZG9nIGFuZCBjYW4gY2F1c2VkIGRpZEZpcmVTbG93KCkg
dG8gYmUKKyAgICAvLyBBIGxlZ2l0aW1hdGUgdGltZXIgaXMgdGhlIHRpbWVyIHdoaWNoIHdva2Ug
dXAgd2F0Y2hkb2cgYW5kIGNhbiBjYXVzZWQgZGlkRmlyZSgpIHRvIGJlCiAgICAgLy8gY2FsbGVk
IGFmdGVyIG1fd2FsbENsb2NrRGVhZGxpbmUgaGFzIGV4cGlyZWQuIEFsbCBvdGhlciB0aW1lcnMg
YXJlIGNvbnNpZGVyZWQgdG8gYmUgc3RhbGUsCiAgICAgLy8gYW5kIHRoZWlyIHdha2UgdXBzIGFy
ZSBjb25zaWRlcmVkIHRvIGJlIHNwdXJpb3VzIGFuZCBzaG91bGQgYmUgaWdub3JlZC4KICAgICAv
LwotICAgIC8vIGRpZEZpcmVTbG93KCkgd2lsbCByYWNlIGFnYWluc3QgbV90aW1lckhhbmRsZXIg
dG8gY2xlYXIgYW5kIHNldCBtX3RpbWVyRGlkRmlyZSByZXNwZWN0aXZlbHkuCisgICAgLy8gZGlk
RmlyZSgpIHdpbGwgcmFjZSBhZ2FpbnN0IG1fdGltZXJIYW5kbGVyIHRvIGNsZWFyIGFuZCBzZXQg
bV90aW1lckRpZEZpcmUgcmVzcGVjdGl2ZWx5LgogICAgIC8vIFdlIG5lZWQgdG8gZGVhbCB3aXRo
IGEgdmFyaWV0eSBvZiBzY2VuYXJpb3Mgd2hlcmUgd2UgY2FuIGhhdmUgc3RhbGUgdGltZXJzIGFu
ZCBsZWdpdGltYXRlCiAgICAgLy8gdGltZXJzIGZpcmluZyBpbiBjbG9zZSBwcm94aW1pdHkgdG8g
ZWFjaCBvdGhlci4KICAgICAvLwpAQCAtMTE2LDcgKzExMiw3IEBAIGJvb2wgV2F0Y2hkb2c6OmRp
ZEZpcmVTbG93KEV4ZWNTdGF0ZSogZXgKICAgICAvLyAgICBCZWZvcmUgdGhlIHdhdGNoZG9nIGNh
biBnZXRzIHRvIHRoZSBjbGVhcmluZyBtX3RpbWVyRGlkRmlyZSBhYm92ZSwgdGhlIGxlZ2l0IHRp
bWVyIGFsc28gZmlyZXMuCiAgICAgLy8KICAgICAvLyAgICBJbiB0aGlzIGNhc2UsIG1fdGltZXJE
aWRGaXJlIHdhcyBzZXQgdHdpY2UgYnkgdGhlIDIgdGltZXJzLCBidXQgd2Ugb25seSBjbGVhciBu
ZWVkIHRvIGNsZWFyCi0gICAgLy8gICAgaXQgb25jZS4gVGhlIG1fd2FsbENsb2NrRGVhZGxpbmUg
YmVsb3cgd2lsbCBwYXNzIGFuZCB0aGlzIGludm9jYXRpb24gb2YgZGlkRmlyZVNsb3coKSB3aWxs
CisgICAgLy8gICAgaXQgb25jZS4gVGhlIG1fd2FsbENsb2NrRGVhZGxpbmUgYmVsb3cgd2lsbCBw
YXNzIGFuZCB0aGlzIGludm9jYXRpb24gb2YgZGlkRmlyZSgpIHdpbGwKICAgICAvLyAgICBiZSB0
cmVhdGVkIGFzIHRoZSByZXNwb25zZSB0byB0aGUgbGVnaXQgdGltZXIuIFRoZSBzcHVyaW91cyB0
aW1lciBpcyBlZmZlY3RpdmVseSBpZ25vcmVkLgogICAgIC8vCiAgICAgLy8gMy4gQSBzdGF0ZSB0
aW1lciBmaXJlcyBqdXN0IGJlZm9yZSBtX3dhbGxDbG9ja0RlYWRsaW5lIGV4cGlyZXMuCkBAIC0x
NDEsOCArMTM3LDggQEAgYm9vbCBXYXRjaGRvZzo6ZGlkRmlyZVNsb3coRXhlY1N0YXRlKiBleAog
ICAgIC8vICAgIEEgc3RhbGUgdGltZXIgZmlyZXMgcmlnaHQgYWZ0ZXIgd2UgY2xlYXIgbV90aW1l
ckRpZEZpcmUgYWJvdmUuCiAgICAgLy8KICAgICAvLyAgICBJbiB0aGlzIGNhc2UsIHRoZSBtX3dh
bGxDbG9ja0RlYWRsaW5lIGNoZWNrIHdpbGwgcGFzcywgYW5kIHdlIGZpcmUgdGhlIHdhdGNoZG9n
Ci0gICAgLy8gICAgdGhvdWdoIG1fdGltZXJEaWRGaXJlIHJlbWFpbnMgc2V0LiBUaGlzIGp1c3Qg
bWVhbnMgdGhhdCBkaWRGaXJlU2xvdygpIHdpbGwgYmUgY2FsbGVkIGFnYWluIGR1ZQotICAgIC8v
ICAgIHRvIG1fdGltZXJEaWRGaXJlIGJlaW5nIHNldC4gVGhlIHN1YnNlcXVlbnQgaW52b2NhdGlv
biBvZiBkaWRGaXJlU2xvdygpIHdpbGwgZW5kIHVwIGhhbmRsaW5nCisgICAgLy8gICAgdGhvdWdo
IG1fdGltZXJEaWRGaXJlIHJlbWFpbnMgc2V0LiBUaGlzIGp1c3QgbWVhbnMgdGhhdCBkaWRGaXJl
KCkgd2lsbCBiZSBjYWxsZWQgYWdhaW4gZHVlCisgICAgLy8gICAgdG8gbV90aW1lckRpZEZpcmUg
YmVpbmcgc2V0LiBUaGUgc3Vic2VxdWVudCBpbnZvY2F0aW9uIG9mIGRpZEZpcmUoKSB3aWxsIGVu
ZCB1cCBoYW5kbGluZwogICAgIC8vICAgIHRoZSBzdGFsZSB0aW1lciBhbmQgaWdub3JpbmcgaXQu
IFRoaXMgaXMgdGhlIHNhbWUgc2NlbmFyaW8gYXMgMSBhYm92ZS4KICAgICAvLwogICAgIC8vIDcu
IEEgbGVnaXQgdGltZXIgZmlyZXMuCkBAIC0xNjgsMTAgKzE2NCw4IEBAIGJvb2wgV2F0Y2hkb2c6
OmRpZEZpcmVTbG93KEV4ZWNTdGF0ZSogZXgKICAgICAgICAgLy8gRWxzZSwgd2UgbGV0IG1fY2Fs
bGJhY2sgZGVjaWRlIGlmIHdlIHNob3VsZCB0ZXJtaW5hdGUgb3Igbm90LgogICAgICAgICBib29s
IG5lZWRzVGVybWluYXRpb24gPSAhbV9jYWxsYmFjawogICAgICAgICAgICAgfHwgbV9jYWxsYmFj
ayhleGVjLCBtX2NhbGxiYWNrRGF0YTEsIG1fY2FsbGJhY2tEYXRhMik7Ci0gICAgICAgIGlmIChu
ZWVkc1Rlcm1pbmF0aW9uKSB7Ci0gICAgICAgICAgICBtX2RpZEZpcmUgPSB0cnVlOworICAgICAg
ICBpZiAobmVlZHNUZXJtaW5hdGlvbikKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAg
ICB9CiAKICAgICAgICAgLy8gSWYgd2UgZ2V0IGhlcmUsIHRoZW4gdGhlIGNhbGxiYWNrIGFib3Zl
IGRpZCBub3Qgd2FudCB0byB0ZXJtaW5hdGUgZXhlY3V0aW9uLiBBcyBhCiAgICAgICAgIC8vIHJl
c3VsdCwgdGhlIGNhbGxiYWNrIG1heSBoYXZlIGRvbmUgb25lIG9mIHRoZSBmb2xsb3dpbmc6CkBA
IC0yMDEsOSArMTk1LDIwIEBAIGJvb2wgV2F0Y2hkb2c6Omhhc1RpbWVMaW1pdCgpCiAgICAgcmV0
dXJuIChtX3RpbWVMaW1pdCAhPSBub1RpbWVMaW1pdCk7CiB9CiAKLXZvaWQgV2F0Y2hkb2c6OmZp
cmUoKQordm9pZCBXYXRjaGRvZzo6c2NoZWR1bGVUZXJtaW5hdGlvbigpCiB7Ci0gICAgbV9kaWRG
aXJlID0gdHJ1ZTsKKyAgICBtX2hhc1NjaGVkdWxlZFRlcm1pbmF0aW9uID0gdHJ1ZTsKKyAgICBX
VEY6OnN0b3JlU3RvcmVGZW5jZSgpOworCisgICAgLy8gU2ltdWxhdGUgYSBzcHVyaW91cyB0aW1l
ciB3YWtlIHVwIHNvIHRoYXQgdGhlIHNjcmlwdCB0aHJlYWQgd2lsbCBjaGVjayBkaWRGaXJlKCkK
KyAgICAvLyBhbmQgdGVybWluYXRlIGV4ZWN1dGlvbiBkdWUgdG8gdGhlIHNjaGVkdWxlZCBleGVj
dXRpb24gdGVybWluYXRpb24uCisgICAgbV90aW1lckRpZEZpcmUgPSB0cnVlOworfQorCit2b2lk
IFdhdGNoZG9nOjpyZXNldEZvclRlcm1pbmF0aW9uKCkKK3sKKyAgICBzdG9wVGltZXIoKTsKKyAg
ICBtX2hhc1NjaGVkdWxlZFRlcm1pbmF0aW9uID0gZmFsc2U7CiB9CiAKIHZvaWQgV2F0Y2hkb2c6
OmVudGVyZWRWTSgpCkBAIC0yNDAsNyArMjQ1LDcgQEAgdm9pZCBXYXRjaGRvZzo6c3RhcnRUaW1l
cihzdGQ6OmNocm9ubzo6bQogICAgIG1fdGltZXJEaWRGaXJlID0gZmFsc2U7CiAKICAgICAvLyBX
ZSBjbGVhciBtX3RpbWVyRGlkRmlyZSBiZWNhdXNlIHdlJ3JlIHN0YXJ0aW5nIGEgbmV3IHRpbWVy
LiBIb3dldmVyLCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZQotICAgIC8vIHRoYXQgdGhlIGNsZWFyaW5n
IG9jY3VycyBiZWZvcmUgdGhlIHRpbWVyIHRocmVhZCBpcyBzdGFydGVkLiBUaGVyZWFmdGVyLCBv
bmx5IGRpZEZpcmVTbG93KCkKKyAgICAvLyB0aGF0IHRoZSBjbGVhcmluZyBvY2N1cnMgYmVmb3Jl
IHRoZSB0aW1lciB0aHJlYWQgaXMgc3RhcnRlZC4gVGhlcmVhZnRlciwgb25seSBkaWRGaXJlKCkK
ICAgICAvLyBzaG91bGQgY2xlYXIgbV90aW1lckRpZEZpcmUgKHVubGVzcyB3ZSBzdGFydCB5ZXQg
YW5vdGhlciB0aW1lcikuIEhlbmNlLCB3ZSBuZWVkIGEgc3RvcmVTdG9yZQogICAgIC8vIGZlbmNl
IGhlcmUgdG8gZW5zdXJlIHRoZXNlIG9wZXJhdGlvbnMgZG8gbm90IGdldCByZS1vcmRlcmVkLgog
ICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9XYXRjaGRvZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1dhdGNoZG9nLmgJKHJldmlzaW9uIDE4ODMyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1dhdGNoZG9nLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDI2ICs0NiwyMyBA
QCBwdWJsaWM6CiAgICAgdHlwZWRlZiBib29sICgqU2hvdWxkVGVybWluYXRlQ2FsbGJhY2spKEV4
ZWNTdGF0ZSosIHZvaWQqIGRhdGExLCB2b2lkKiBkYXRhMik7CiAgICAgdm9pZCBzZXRUaW1lTGlt
aXQoVk0mLCBzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzIGxpbWl0LCBTaG91bGRUZXJtaW5hdGVD
YWxsYmFjayA9IDAsIHZvaWQqIGRhdGExID0gMCwgdm9pZCogZGF0YTIgPSAwKTsKIAotICAgIC8v
IFRoaXMgdmVyc2lvbiBvZiBkaWRGaXJlKCkgd2lsbCBjaGVjayB0aGUgZWxhcHNlZCBDUFUgdGlt
ZSBhbmQgY2FsbCB0aGUKLSAgICAvLyBjYWxsYmFjayAoaWYgbmVlZGVkKSB0byBkZXRlcm1pbmUg
aWYgdGhlIHdhdGNoZG9nIHNob3VsZCBmaXJlLgotICAgIGJvb2wgZGlkRmlyZShFeGVjU3RhdGUq
IGV4ZWMpCisgICAgYm9vbCBzaG91bGRUcmlnZ2VyVGVybWluYXRpb24oRXhlY1N0YXRlKiBleGVj
KQogICAgIHsKLSAgICAgICAgaWYgKG1fZGlkRmlyZSkKKyAgICAgICAgaWYgKG1faGFzU2NoZWR1
bGVkVGVybWluYXRpb24pCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgaWYgKCFt
X3RpbWVyRGlkRmlyZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgcmV0dXJu
IGRpZEZpcmVTbG93KGV4ZWMpOworICAgICAgICByZXR1cm4gZGlkRmlyZShleGVjKTsKICAgICB9
CiAKICAgICBib29sIGhhc1RpbWVMaW1pdCgpOwogICAgIHZvaWQgZW50ZXJlZFZNKCk7CiAgICAg
dm9pZCBleGl0ZWRWTSgpOwogCi0gICAgLy8gVGhpcyB2ZXJzaW9uIG9mIGRpZEZpcmUoKSBpcyBh
IG1vcmUgZWZmaWNpZW50IHZlcnNpb24gZm9yIHdoZW4gd2Ugd2FudAotICAgIC8vIHRvIGtub3cg
aWYgdGhlIHdhdGNoZG9nIGhhcyBmaXJlZCBpbiB0aGUgcGFzdCwgYW5kIG5vdCB3aGV0aGVyIGl0
IHNob3VsZAotICAgIC8vIGZpcmUgcmlnaHQgbm93LgotICAgIGJvb2wgZGlkRmlyZSgpIHsgcmV0
dXJuIG1fZGlkRmlyZTsgfQotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZmlyZSgpOworICAg
IGJvb2wgaGFzU2NoZWR1bGVkVGVybWluYXRpb24oKSB7IHJldHVybiBtX2hhc1NjaGVkdWxlZFRl
cm1pbmF0aW9uOyB9CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzY2hlZHVsZVRlcm1pbmF0
aW9uKCk7CisKKyAgICB2b2lkIHJlc2V0Rm9yVGVybWluYXRpb24oKTsKIAogICAgIHZvaWQqIHRp
bWVyRGlkRmlyZUFkZHJlc3MoKSB7IHJldHVybiAmbV90aW1lckRpZEZpcmU7IH0KIApAQCAtNzcs
MTUgKzc0LDE4IEBAIHByaXZhdGU6CiAKICAgICBpbmxpbmUgYm9vbCBoYXNTdGFydGVkVGltZXIo
KTsKIAotICAgIGJvb2wgZGlkRmlyZVNsb3coRXhlY1N0YXRlKik7CisgICAgYm9vbCBkaWRGaXJl
KEV4ZWNTdGF0ZSopOwogCi0gICAgLy8gbV90aW1lckRpZEZpcmUgaW5kaWNhdGVzIHdoZXRoZXIg
dGhlIHRpbWVyIGZpcmVkLiBUaGUgV2F0Y2hkb2cKLSAgICAvLyBzdGlsbCBuZWVkcyB0byBjaGVj
ayBpZiB0aGUgYWxsb3dlZCBDUFUgdGltZSBoYXMgZWxhcHNlZC4gSWYgc28sIHRoZW4KLSAgICAv
LyB0aGUgV2F0Y2hkb2cgZmlyZXMgYW5kIG1fZGlkRmlyZSB3aWxsIGJlIHNldC4KLSAgICAvLyBO
T1RFOiBtX3RpbWVyRGlkRmlyZSBpcyBvbmx5IHNldCBieSB0aGUgcGxhdGZvcm0gc3BlY2lmaWMg
dGltZXIKLSAgICAvLyAocHJvYmFibHkgZnJvbSBhbm90aGVyIHRocmVhZCkgYnV0IGlzIG9ubHkg
Y2xlYXJlZCBpbiB0aGUgc2NyaXB0IHRocmVhZC4KLSAgICBib29sIG1fdGltZXJEaWRGaXJlOwot
ICAgIGJvb2wgbV9kaWRGaXJlOworICAgIC8vIG1fdGltZXJEaWRGaXJlIGluZGljYXRlcyB3aGV0
aGVyIHRoZSB0aW1lciBmaXJlZC4gVGhpcyBpcyBub3QgdGhlIHNhbWUgYXMgd2hldGhlciB0aGUg
YW1vdW50IG9mCisgICAgLy8gYWxsb3dlZCBDUFUgdGltZSBoYXMgZXhwaXJlZC4gVGhpcyBpcyBi
ZWNhdXNlIHRpbWVycyB3aWxsIGZpcmUgYmFzZWQgb24gd2FsbCBjbG9jayB0aW1lIHdoaWxlCisg
ICAgLy8gdGhlIHdhdGNoZG9nIHRpbWUgbGltdGkgaXMgaW4gdGVybXMgb2YgQ1BVIHRpbWUuCisg
ICAgLy8gbV90aW1lckRpZEZpcmUgaXMgb25seSBzZXQgYnkgdGhlIHBsYXRmb3JtIHNwZWNpZmlj
IHRpbWVyIChwcm9iYWJseSBmcm9tIGFub3RoZXIgdGhyZWFkKSBidXQKKyAgICAvLyBpcyBvbmx5
IGNsZWFyZWQgaW4gdGhlIHNjcmlwdCB0aHJlYWQuCisgICAgYm9vbCBtX3RpbWVyRGlkRmlyZSB7
IGZhbHNlIH07CisKKyAgICAvLyBtX2hhc1NjaGVkdWxlZFRlcm1pbmF0aW9uIGlzIHNldCBmcm9t
IGFub3RoZXIgdGhyZWFkLCBidXQgaXMgb25seSBjbGVhcmVkIGluIHRoZQorICAgIC8vIHNjcmlw
dCB0aHJlYWQuCisgICAgYm9vbCBtX2hhc1NjaGVkdWxlZFRlcm1pbmF0aW9uIHsgZmFsc2UgfTsK
IAogICAgIHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHMgbV90aW1lTGltaXQ7CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cJKHJldmlzaW9uIDE4ODMzMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDE1LTA4LTEyICBNYXJrIExhbSAgPG1hcmsu
bGFtQGFwcGxlLmNvbT4KKworICAgICAgICB3YXRjaGRvZyBtX2RpZEZpcmUgc3RhdGUgZXJyb25l
b3VzbHkgcmV0YWluZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMzEwODIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
RXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0V2ZW50TGlzdGVuZXI6Omhh
bmRsZUV2ZW50KToKKyAgICAgICAgLSBVcGRhdGVkIHRvIGNoZWNrIGlmIHRoZSBzY3JpcHRDb250
cm9sbGVyIGhhcyByZXF1ZXN0ZWQgc2NyaXB0IHRlcm1pbmF0aW9uCisgICAgICAgICAgaW5zdGVh
ZCBvZiByZXF1aXJpbmcgdGhlIHdhdGNoZG9nIHRvIHJlbWVtYmVyIHRoaXMgcmVxdWVzdC4KKwor
ICAgICAgICAqIGJpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUpOiAtIERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6c2NoZWR1bGVFeGVjdXRp
b25UZXJtaW5hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVy
Ojppc1Rlcm1pbmF0aW5nRXhlY3V0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlw
dENvbnRyb2xsZXI6OmZvcmJpZEV4ZWN1dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJT
Y3JpcHRDb250cm9sbGVyOjppc0V4ZWN1dGlvblRlcm1pbmF0aW5nKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmg6CisKIDIwMTUtMDgtMTEg
IENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIE5l
dHdvcmtQcm9jZXNzOiBETlMgcHJlZmV0Y2ggaGFwcGVucyBpbiB0aGUgV2ViIFByb2Nlc3MKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcAko
cmV2aXNpb24gMTg4MzI5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExp
c3RlbmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM1LDkgKzEzNSwxMCBAQCB2b2lkIEpTRXZl
bnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQoU2NyaXB0CiAgICAgICAgIGdsb2JhbE9iamVjdC0+c2V0
Q3VycmVudEV2ZW50KHNhdmVkRXZlbnQpOwogCiAgICAgICAgIGlmIChpczxXb3JrZXJHbG9iYWxT
Y29wZT4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpKSB7CisgICAgICAgICAgICBhdXRvIHNjcmlw
dENvbnRyb2xsZXIgPSBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oKnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQpLnNjcmlwdCgpOwogICAgICAgICAgICAgYm9vbCB0ZXJtaW5hdG9yQ2F1c2VkRXhj
ZXB0aW9uID0gKGV4ZWMtPmhhZEV4Y2VwdGlvbigpICYmIGlzVGVybWluYXRlZEV4ZWN1dGlvbkV4
Y2VwdGlvbihleGVjLT5leGNlcHRpb24oKSkpOwotICAgICAgICAgICAgaWYgKHRlcm1pbmF0b3JD
YXVzZWRFeGNlcHRpb24gfHwgKHZtLndhdGNoZG9nICYmIHZtLndhdGNoZG9nLT5kaWRGaXJlKCkp
KQotICAgICAgICAgICAgICAgIGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPigqc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCkuc2NyaXB0KCktPmZvcmJpZEV4ZWN1dGlvbigpOworICAgICAgICAgICAg
aWYgKHRlcm1pbmF0b3JDYXVzZWRFeGNlcHRpb24gfHwgc2NyaXB0Q29udHJvbGxlci0+aXNUZXJt
aW5hdGluZ0V4ZWN1dGlvbigpKQorICAgICAgICAgICAgICAgIHNjcmlwdENvbnRyb2xsZXItPmZv
cmJpZEV4ZWN1dGlvbigpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGV4Y2VwdGlvbikgewpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0
Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDE4ODMyOSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjEs
OCArMTIxLDcgQEAgdm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZShjbwogICAg
IEpTQzo6ZXZhbHVhdGUoZXhlYywgc291cmNlQ29kZS5qc1NvdXJjZUNvZGUoKSwgbV93b3JrZXJH
bG9iYWxTY29wZVdyYXBwZXItPmdsb2JhbFRoaXMoKSwgcmV0dXJuZWRFeGNlcHRpb24pOwogCiAg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBpZiAoKHJldHVybmVkRXhjZXB0aW9uICYmIGlz
VGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihyZXR1cm5lZEV4Y2VwdGlvbikpCi0gICAgICAg
IHx8ICh2bS53YXRjaGRvZyAmJiB2bS53YXRjaGRvZy0+ZGlkRmlyZSgpKSkgeworICAgIGlmICgo
cmV0dXJuZWRFeGNlcHRpb24gJiYgaXNUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKHJldHVy
bmVkRXhjZXB0aW9uKSkgfHwgaXNUZXJtaW5hdGluZ0V4ZWN1dGlvbigpKSB7CiAgICAgICAgIGZv
cmJpZEV4ZWN1dGlvbigpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTQ5LDIwICsxNDgs
MTkgQEAgdm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpzZXRFeGNlcHRpbwogdm9pZCBXb3Jr
ZXJTY3JpcHRDb250cm9sbGVyOjpzY2hlZHVsZUV4ZWN1dGlvblRlcm1pbmF0aW9uKCkKIHsKICAg
ICAvLyBUaGUgbXV0ZXggcHJvdmlkZXMgYSBtZW1vcnkgYmFycmllciB0byBlbnN1cmUgdGhhdCBv
bmNlCi0gICAgLy8gdGVybWluYXRpb24gaXMgc2NoZWR1bGVkLCBpc0V4ZWN1dGlvblRlcm1pbmF0
aW5nIHdpbGwKKyAgICAvLyB0ZXJtaW5hdGlvbiBpcyBzY2hlZHVsZWQsIGlzVGVybWluYXRpbmdF
eGVjdXRpb24oKSB3aWxsCiAgICAgLy8gYWNjdXJhdGVseSByZWZsZWN0IHRoYXQgc3RhdGUgd2hl
biBjYWxsZWQgZnJvbSBhbm90aGVyIHRocmVhZC4KICAgICBNdXRleExvY2tlciBsb2NrZXIobV9z
Y2hlZHVsZWRUZXJtaW5hdGlvbk11dGV4KTsKKyAgICBtX2lzVGVybWluYXRpbmdFeGVjdXRpb24g
PSB0cnVlOwogICAgIGlmIChtX3ZtLT53YXRjaGRvZykKLSAgICAgICAgbV92bS0+d2F0Y2hkb2ct
PmZpcmUoKTsKKyAgICAgICAgbV92bS0+d2F0Y2hkb2ctPnNjaGVkdWxlVGVybWluYXRpb24oKTsK
IH0KIAotYm9vbCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjppc0V4ZWN1dGlvblRlcm1pbmF0aW5n
KCkgY29uc3QKK2Jvb2wgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6aXNUZXJtaW5hdGluZ0V4ZWN1
dGlvbigpIGNvbnN0CiB7CiAgICAgLy8gU2VlIGNvbW1lbnRzIGluIHNjaGVkdWxlRXhlY3V0aW9u
VGVybWluYXRpb24gcmVnYXJkaW5nIG11dGV4IHVzYWdlLgogICAgIE11dGV4TG9ja2VyIGxvY2tl
cihtX3NjaGVkdWxlZFRlcm1pbmF0aW9uTXV0ZXgpOwotICAgIGlmIChtX3ZtLT53YXRjaGRvZykK
LSAgICAgICAgcmV0dXJuIG1fdm0tPndhdGNoZG9nLT5kaWRGaXJlKCk7Ci0gICAgcmV0dXJuIGZh
bHNlOworICAgIHJldHVybiBtX2lzVGVybWluYXRpbmdFeGVjdXRpb247CiB9CiAKIHZvaWQgV29y
a2VyU2NyaXB0Q29udHJvbGxlcjo6Zm9yYmlkRXhlY3V0aW9uKCkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmgJKHJldmlz
aW9uIDE4ODMyNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENv
bnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNzEsNyArNzEsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIC8vIGZvcmJpZEV4ZWN1dGlvbigpL2lzRXhlY3V0aW9uRm9yYmlkZGVu
KCkgdG8gZ3VhcmQgYWdhaW5zdCByZWVudHJ5IGludG8gSlMuCiAgICAgICAgIC8vIENhbiBiZSBj
YWxsZWQgZnJvbSBhbnkgdGhyZWFkLgogICAgICAgICB2b2lkIHNjaGVkdWxlRXhlY3V0aW9uVGVy
bWluYXRpb24oKTsKLSAgICAgICAgYm9vbCBpc0V4ZWN1dGlvblRlcm1pbmF0aW5nKCkgY29uc3Q7
CisgICAgICAgIGJvb2wgaXNUZXJtaW5hdGluZ0V4ZWN1dGlvbigpIGNvbnN0OwogCiAgICAgICAg
IC8vIENhbGxlZCBvbiBXb3JrZXIgdGhyZWFkIHdoZW4gSlMgZXhpdHMgd2l0aCB0ZXJtaW5hdGlv
biBleGNlcHRpb24gY2F1c2VkIGJ5IGZvcmJpZEV4ZWN1dGlvbigpIHJlcXVlc3QsCiAgICAgICAg
IC8vIG9yIGJ5IFdvcmtlciB0aHJlYWQgdGVybWluYXRpb24gY29kZSB0byBwcmV2ZW50IGZ1dHVy
ZSBlbnRyeSBpbnRvIEpTLgpAQCAtOTcsNiArOTcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIFdvcmtlckdsb2JhbFNjb3BlKiBtX3dvcmtlckdsb2JhbFNjb3BlOwogICAgICAgICBK
U0M6OlN0cm9uZzxKU1dvcmtlckdsb2JhbFNjb3BlPiBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBl
cjsKICAgICAgICAgYm9vbCBtX2V4ZWN1dGlvbkZvcmJpZGRlbjsKKyAgICAgICAgYm9vbCBtX2lz
VGVybWluYXRpbmdFeGVjdXRpb24geyBmYWxzZSB9OwogICAgICAgICBtdXRhYmxlIE11dGV4IG1f
c2NoZWR1bGVkVGVybWluYXRpb25NdXRleDsKICAgICB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258879</attachid>
            <date>2015-08-12 22:36:40 -0700</date>
            <delta_ts>2015-08-13 10:37:46 -0700</delta_ts>
            <desc>the fix.</desc>
            <filename>bug-131082.patch</filename>
            <type>text/plain</type>
            <size>21491</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg4Mzc1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ0IEBA
CisyMDE1LTA4LTEyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICB3
YXRjaGRvZyBtX2RpZEZpcmUgc3RhdGUgZXJyb25lb3VzbHkgcmV0YWluZWQuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzEwODIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFQSS90ZXN0cy9FeGVjdXRp
b25UaW1lTGltaXRUZXN0LmNwcDoKKyAgICAgICAgKHRlc3RSZXNldEFmdGVyVGltZW91dCk6Cisg
ICAgICAgICh0ZXN0RXhlY3V0aW9uVGltZUxpbWl0KToKKyAgICAgICAgLSBBZGQgdGVzdCBzY2Vu
YXJpb3MgdG8gdmVyaWZ5IHRoYXQgdGhlIHdhdGNoZG9nIGlzIGF1dG9tYXRpY2FsbHkgcmVzZXQg
YnkgdGhlIFZNCisgICAgICAgICAgdXBvbiB0aHJvd2luZyB0aGUgVGVybWluYXRlZEV4ZWN1dGlv
bkV4Y2VwdGlvbi4KKworICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAg
ICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGUpOgorICAgICAgICAoSlNDOjpJbnRlcnBy
ZXRlcjo6ZXhlY3V0ZUNhbGwpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZUNv
bnN0cnVjdCk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGxs
aW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1df
UEFUSF9ERUNMKToKKyAgICAgICAgLSBBZGRlZCBjYWxscyB0byByZXNldCB0aGUgd2F0Y2hkb2cg
d2hlbiB3ZSBhcmUgYWJvdXQgdG8gdGhyb3cgdGhlIFRlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRp
b24uCisgICAgICAgICAgVGhpcyByZXNvbHZlcyB0aGUgYnVnLgorCisgICAgICAgICogcnVudGlt
ZS9XYXRjaGRvZy5jcHA6CisgICAgICAgIChKU0M6OldhdGNoZG9nOjpXYXRjaGRvZyk6CisgICAg
ICAgIChKU0M6OldhdGNoZG9nOjpzZXRUaW1lTGltaXQpOgorICAgICAgICAoSlNDOjpXYXRjaGRv
Zzo6ZGlkRmlyZSk6CisgICAgICAgIC0gUmVuYW1lZCBmcm9tIGRpZEZpcmVTbG93KCkgc2luY2Ug
dGhlIGZhc3QgcGF0aCBpcyBub3cgbmFtZWQgc2hvdWxkVHJpZ2dlclRlcm1pbmF0aW9uKCkuCisg
ICAgICAgIChKU0M6OldhdGNoZG9nOjpoYXNUaW1lTGltaXQpOgorICAgICAgICAoSlNDOjpXYXRj
aGRvZzo6c2NoZWR1bGVUZXJtaW5hdGlvbik6CisgICAgICAgIChKU0M6OldhdGNoZG9nOjpyZXNl
dEZvclRlcm1pbmF0aW9uKToKKyAgICAgICAgKEpTQzo6V2F0Y2hkb2c6OmVudGVyZWRWTSk6Cisg
ICAgICAgIChKU0M6OldhdGNoZG9nOjpzdGFydFRpbWVyKToKKyAgICAgICAgKEpTQzo6V2F0Y2hk
b2c6OmRpZEZpcmVTbG93KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2F0Y2hkb2c6OmZpcmUp
OiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvV2F0Y2hkb2cuaDoKKyAgICAgICAgKEpTQzo6
V2F0Y2hkb2c6OnNob3VsZFRyaWdnZXJUZXJtaW5hdGlvbik6CisgICAgICAgIChKU0M6OldhdGNo
ZG9nOjpoYXNTY2hlZHVsZWRUZXJtaW5hdGlvbik6CisgICAgICAgIChKU0M6OldhdGNoZG9nOjp0
aW1lckRpZEZpcmVBZGRyZXNzKToKKyAgICAgICAgKEpTQzo6V2F0Y2hkb2c6OmRpZEZpcmUpOiBE
ZWxldGVkLgorCiAyMDE1LTA4LTEyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAog
ICAgICAgICBBZGQgYSBKU0Mgb3B0aW9uIHRvIGVuYWJsZSB0aGUgd2F0Y2hkb2cgZm9yIHRlc3Rp
bmcuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0V4ZWN1dGlvblRpbWVM
aW1pdFRlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVz
dHMvRXhlY3V0aW9uVGltZUxpbWl0VGVzdC5jcHAJKHJldmlzaW9uIDE4ODM3NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvRXhlY3V0aW9uVGltZUxpbWl0VGVzdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTc5LDYgKzc5LDIyIEBAIHN0YXRpYyBib29sIGV4dGVuZFRlcm1pbmF0
ZUNhbGxiYWNrKEpTQ28KIH0KIAogCitzdGF0aWMgdm9pZCB0ZXN0UmVzZXRBZnRlclRpbWVvdXQo
Ym9vbCYgZmFpbGVkKQoreworICAgIEpTVmFsdWVSZWYgdiA9IG51bGxwdHI7CisgICAgSlNWYWx1
ZVJlZiBleGNlcHRpb24gPSBudWxscHRyOworICAgIGNvbnN0IGNoYXIqIHJlZW50cnlTY3JpcHQg
PSAiMTAwIjsKKyAgICBKU1N0cmluZ1JlZiBzY3JpcHQgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4
Q1N0cmluZyhyZWVudHJ5U2NyaXB0KTsKKyAgICB2ID0gSlNFdmFsdWF0ZVNjcmlwdChjb250ZXh0
LCBzY3JpcHQsIG51bGxwdHIsIG51bGxwdHIsIDEsICZleGNlcHRpb24pOworICAgIGlmIChleGNl
cHRpb24pIHsKKyAgICAgICAgcHJpbnRmKCJGQUlMOiBXYXRjaGRvZyB0aW1lb3V0IHdhcyBub3Qg
cmVzZXQuXG4iKTsKKyAgICAgICAgZmFpbGVkID0gdHJ1ZTsKKyAgICB9IGVsc2UgaWYgKCFKU1Zh
bHVlSXNOdW1iZXIoY29udGV4dCwgdikgfHwgSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIHYsIG51
bGxwdHIpICE9IDEwMCkgeworICAgICAgICBwcmludGYoIkZBSUw6IFNjcmlwdCByZXN1bHQgaXMg
bm90IGFzIGV4cGVjdGVkLlxuIik7CisgICAgICAgIGZhaWxlZCA9IHRydWU7CisgICAgfQorfQor
CiBpbnQgdGVzdEV4ZWN1dGlvblRpbWVMaW1pdCgpCiB7CiAgICAgY29udGV4dCA9IEpTR2xvYmFs
Q29udGV4dENyZWF0ZUluR3JvdXAobnVsbHB0ciwgbnVsbHB0cik7CkBAIC0xMjEsNiArMTM3LDgg
QEAgaW50IHRlc3RFeGVjdXRpb25UaW1lTGltaXQoKQogICAgICAgICAgICAgcHJpbnRmKCJGQUlM
OiBUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uIHdhcyBub3QgdGhyb3duLlxuIik7CiAgICAg
ICAgICAgICBmYWlsZWQgPSB0cnVlOwogICAgICAgICB9CisKKyAgICAgICAgdGVzdFJlc2V0QWZ0
ZXJUaW1lb3V0KGZhaWxlZCk7CiAgICAgfQogICAgIAogICAgIC8qIFRlc3QgdGhlIHNjcmlwdCB0
aW1lb3V0J3MgVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbiBzaG91bGQgTk9UIGJlIGNhdGNo
YWJsZTogKi8KQEAgLTE0OCw2ICsxNjYsOCBAQCBpbnQgdGVzdEV4ZWN1dGlvblRpbWVMaW1pdCgp
CiAgICAgICAgICAgICBwcmludGYoIkZBSUw6IFRlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24g
d2FzIGNhdWdodC5cbiIpOwogICAgICAgICAgICAgZmFpbGVkID0gdHJ1ZTsKICAgICAgICAgfQor
CisgICAgICAgIHRlc3RSZXNldEFmdGVyVGltZW91dChmYWlsZWQpOwogICAgIH0KICAgICAKICAg
ICAvKiBUZXN0IHNjcmlwdCB0aW1lb3V0IHdpdGggbm8gY2FsbGJhY2s6ICovCkBAIC0xNzIsNiAr
MTkyLDggQEAgaW50IHRlc3RFeGVjdXRpb25UaW1lTGltaXQoKQogICAgICAgICAgICAgcHJpbnRm
KCJGQUlMOiBUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uIHdhcyBub3QgdGhyb3duLlxuIik7
CiAgICAgICAgICAgICBmYWlsZWQgPSB0cnVlOwogICAgICAgICB9CisKKyAgICAgICAgdGVzdFJl
c2V0QWZ0ZXJUaW1lb3V0KGZhaWxlZCk7CiAgICAgfQogICAgIAogICAgIC8qIFRlc3Qgc2NyaXB0
IHRpbWVvdXQgY2FuY2VsbGF0aW9uOiAqLwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAxODgzNzUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC04NjYsOCArODY2LDEwIEBAIGZhaWxlZEpTT05QOgogCiAgICAgUHJvZ3JhbUNv
ZGVCbG9jayogY29kZUJsb2NrID0gcHJvZ3JhbS0+Y29kZUJsb2NrKCk7CiAKLSAgICBpZiAoVU5M
SUtFTFkodm0ud2F0Y2hkb2cgJiYgdm0ud2F0Y2hkb2ctPmRpZEZpcmUoY2FsbEZyYW1lKSkpCisg
ICAgaWYgKFVOTElLRUxZKHZtLndhdGNoZG9nICYmIHZtLndhdGNoZG9nLT5zaG91bGRUcmlnZ2Vy
VGVybWluYXRpb24oY2FsbEZyYW1lKSkpIHsKKyAgICAgICAgdm0ud2F0Y2hkb2ctPnJlc2V0Rm9y
VGVybWluYXRpb24oKTsKICAgICAgICAgcmV0dXJuIHRocm93VGVybWluYXRlZEV4ZWN1dGlvbkV4
Y2VwdGlvbihjYWxsRnJhbWUpOworICAgIH0KIAogICAgIEFTU0VSVChjb2RlQmxvY2stPm51bVBh
cmFtZXRlcnMoKSA9PSAxKTsgLy8gMSBwYXJhbWV0ZXIgZm9yICd0aGlzJy4KIApAQCAtOTI5LDgg
KzkzMSwxMCBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlQ2FsbChDYWxsRnJhCiAgICAg
fSBlbHNlCiAgICAgICAgIG5ld0NvZGVCbG9jayA9IDA7CiAKLSAgICBpZiAoVU5MSUtFTFkodm0u
d2F0Y2hkb2cgJiYgdm0ud2F0Y2hkb2ctPmRpZEZpcmUoY2FsbEZyYW1lKSkpCisgICAgaWYgKFVO
TElLRUxZKHZtLndhdGNoZG9nICYmIHZtLndhdGNoZG9nLT5zaG91bGRUcmlnZ2VyVGVybWluYXRp
b24oY2FsbEZyYW1lKSkpIHsKKyAgICAgICAgdm0ud2F0Y2hkb2ctPnJlc2V0Rm9yVGVybWluYXRp
b24oKTsKICAgICAgICAgcmV0dXJuIHRocm93VGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihj
YWxsRnJhbWUpOworICAgIH0KIAogICAgIFByb3RvQ2FsbEZyYW1lIHByb3RvQ2FsbEZyYW1lOwog
ICAgIHByb3RvQ2FsbEZyYW1lLmluaXQobmV3Q29kZUJsb2NrLCBmdW5jdGlvbiwgdGhpc1ZhbHVl
LCBhcmdzQ291bnQsIGFyZ3MuZGF0YSgpKTsKQEAgLTk5OSw4ICsxMDAzLDEwIEBAIEpTT2JqZWN0
KiBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNvbnN0cnVjdCgKICAgICB9IGVsc2UKICAgICAgICAgbmV3
Q29kZUJsb2NrID0gMDsKIAotICAgIGlmIChVTkxJS0VMWSh2bS53YXRjaGRvZyAmJiB2bS53YXRj
aGRvZy0+ZGlkRmlyZShjYWxsRnJhbWUpKSkKKyAgICBpZiAoVU5MSUtFTFkodm0ud2F0Y2hkb2cg
JiYgdm0ud2F0Y2hkb2ctPnNob3VsZFRyaWdnZXJUZXJtaW5hdGlvbihjYWxsRnJhbWUpKSkgewor
ICAgICAgICB2bS53YXRjaGRvZy0+cmVzZXRGb3JUZXJtaW5hdGlvbigpOwogICAgICAgICByZXR1
cm4gdGhyb3dUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKGNhbGxGcmFtZSk7CisgICAgfQog
CiAgICAgUHJvdG9DYWxsRnJhbWUgcHJvdG9DYWxsRnJhbWU7CiAgICAgcHJvdG9DYWxsRnJhbWUu
aW5pdChuZXdDb2RlQmxvY2ssIGNvbnN0cnVjdG9yLCBuZXdUYXJnZXQsIGFyZ3NDb3VudCwgYXJn
cy5kYXRhKCkpOwpAQCAtMTA3Miw4ICsxMDc4LDEwIEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4
ZWN1dGUoQ2FsbEZyYW1lQ2wKICAgICBpZiAoTGVnYWN5UHJvZmlsZXIqIHByb2ZpbGVyID0gdm0u
ZW5hYmxlZFByb2ZpbGVyKCkpCiAgICAgICAgIHByb2ZpbGVyLT53aWxsRXhlY3V0ZShjbG9zdXJl
Lm9sZENhbGxGcmFtZSwgY2xvc3VyZS5mdW5jdGlvbik7CiAKLSAgICBpZiAoVU5MSUtFTFkodm0u
d2F0Y2hkb2cgJiYgdm0ud2F0Y2hkb2ctPmRpZEZpcmUoY2xvc3VyZS5vbGRDYWxsRnJhbWUpKSkK
KyAgICBpZiAoVU5MSUtFTFkodm0ud2F0Y2hkb2cgJiYgdm0ud2F0Y2hkb2ctPnNob3VsZFRyaWdn
ZXJUZXJtaW5hdGlvbihjbG9zdXJlLm9sZENhbGxGcmFtZSkpKSB7CisgICAgICAgIHZtLndhdGNo
ZG9nLT5yZXNldEZvclRlcm1pbmF0aW9uKCk7CiAgICAgICAgIHJldHVybiB0aHJvd1Rlcm1pbmF0
ZWRFeGVjdXRpb25FeGNlcHRpb24oY2xvc3VyZS5vbGRDYWxsRnJhbWUpOworICAgIH0KIAogICAg
IC8vIEV4ZWN1dGUgdGhlIGNvZGU6CiAgICAgSlNWYWx1ZSByZXN1bHQ7CkBAIC0xMTUzLDggKzEx
NjEsMTAgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YQogICAgICAg
ICB9CiAgICAgfQogCi0gICAgaWYgKFVOTElLRUxZKHZtLndhdGNoZG9nICYmIHZtLndhdGNoZG9n
LT5kaWRGaXJlKGNhbGxGcmFtZSkpKQorICAgIGlmIChVTkxJS0VMWSh2bS53YXRjaGRvZyAmJiB2
bS53YXRjaGRvZy0+c2hvdWxkVHJpZ2dlclRlcm1pbmF0aW9uKGNhbGxGcmFtZSkpKSB7CisgICAg
ICAgIHZtLndhdGNoZG9nLT5yZXNldEZvclRlcm1pbmF0aW9uKCk7CiAgICAgICAgIHJldHVybiB0
aHJvd1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oY2FsbEZyYW1lKTsKKyAgICB9CiAKICAg
ICBBU1NFUlQoY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgPT0gMSk7IC8vIDEgcGFyYW1ldGVy
IGZvciAndGhpcycuCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmNwcAkocmV2aXNpb24gMTg4Mzc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTY4LDggKzk2OCwxMCBAQCB2
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSGFuZGxlV2F0Y2hkCiAgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CiAK
LSAgICBpZiAoVU5MSUtFTFkodm0ud2F0Y2hkb2cgJiYgdm0ud2F0Y2hkb2ctPmRpZEZpcmUoZXhl
YykpKQorICAgIGlmIChVTkxJS0VMWSh2bS53YXRjaGRvZyAmJiB2bS53YXRjaGRvZy0+c2hvdWxk
VHJpZ2dlclRlcm1pbmF0aW9uKGV4ZWMpKSkgeworICAgICAgICB2bS53YXRjaGRvZy0+cmVzZXRG
b3JUZXJtaW5hdGlvbigpOwogICAgICAgICB2bS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVU
ZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKCZ2bSkpOworICAgIH0KIH0KIAogdm9pZCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblRocm93U3RhdGljRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIGludDMyX3QgcmVmZXJlbmNlRXJyb3JGbGFnKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShy
ZXZpc2lvbiAxODgzNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjg2LDggKzEyODYsMTAgQEAgTExJTlRfU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX2hhbmRsZV93YQogewogICAgIExMSU5UX0JFR0lOX05PX1NF
VF9QQygpOwogICAgIEFTU0VSVCh2bS53YXRjaGRvZyk7Ci0gICAgaWYgKFVOTElLRUxZKHZtLndh
dGNoZG9nLT5kaWRGaXJlKGV4ZWMpKSkKKyAgICBpZiAoVU5MSUtFTFkodm0ud2F0Y2hkb2ctPnNo
b3VsZFRyaWdnZXJUZXJtaW5hdGlvbihleGVjKSkpIHsKKyAgICAgICAgdm0ud2F0Y2hkb2ctPnJl
c2V0Rm9yVGVybWluYXRpb24oKTsKICAgICAgICAgTExJTlRfVEhST1coY3JlYXRlVGVybWluYXRl
ZEV4ZWN1dGlvbkV4Y2VwdGlvbigmdm0pKTsKKyAgICB9CiAgICAgTExJTlRfUkVUVVJOX1RXTygw
LCBleGVjKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2F0Y2hk
b2cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dhdGNo
ZG9nLmNwcAkocmV2aXNpb24gMTg4Mzc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvV2F0Y2hkb2cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw5ICs0MSw3IEBAIHN0YXRpYyBz
dGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzIGN1cnJlbnQKIH0KIAogV2F0Y2hkb2c6OldhdGNoZG9n
KCkKLSAgICA6IG1fdGltZXJEaWRGaXJlKGZhbHNlKQotICAgICwgbV9kaWRGaXJlKGZhbHNlKQot
ICAgICwgbV90aW1lTGltaXQobm9UaW1lTGltaXQpCisgICAgOiBtX3RpbWVMaW1pdChub1RpbWVM
aW1pdCkKICAgICAsIG1fY3B1RGVhZGxpbmUobm9UaW1lTGltaXQpCiAgICAgLCBtX3dhbGxDbG9j
a0RlYWRsaW5lKG5vVGltZUxpbWl0KQogICAgICwgbV9jYWxsYmFjaygwKQpAQCAtNjcsOCArNjUs
NiBAQCB2b2lkIFdhdGNoZG9nOjpzZXRUaW1lTGltaXQoVk0mIHZtLCBzdGQ6CiB7CiAgICAgYm9v
bCBoYWRUaW1lTGltaXQgPSBoYXNUaW1lTGltaXQoKTsKIAotICAgIG1fZGlkRmlyZSA9IGZhbHNl
OyAvLyBSZXNldCB0aGUgd2F0Y2hkb2cuCi0KICAgICBtX3RpbWVMaW1pdCA9IGxpbWl0OwogICAg
IG1fY2FsbGJhY2sgPSBjYWxsYmFjazsKICAgICBtX2NhbGxiYWNrRGF0YTEgPSBkYXRhMTsKQEAg
LTkxLDE2ICs4NywxNiBAQCB2b2lkIFdhdGNoZG9nOjpzZXRUaW1lTGltaXQoVk0mIHZtLCBzdGQ6
CiAgICAgICAgIHN0YXJ0VGltZXIobV90aW1lTGltaXQpOwogfQogCi1ib29sIFdhdGNoZG9nOjpk
aWRGaXJlU2xvdyhFeGVjU3RhdGUqIGV4ZWMpCitib29sIFdhdGNoZG9nOjpkaWRGaXJlKEV4ZWNT
dGF0ZSogZXhlYykKIHsKICAgICBBU1NFUlQobV90aW1lckRpZEZpcmUpOwogICAgIG1fdGltZXJE
aWRGaXJlID0gZmFsc2U7CiAKLSAgICAvLyBBIGxlZ2l0aW1hdGUgdGltZXIgaXMgdGhlIHRpbWVy
IHdoaWNoIHdva2UgdXAgd2F0Y2hkb2cgYW5kIGNhbiBjYXVzZWQgZGlkRmlyZVNsb3coKSB0byBi
ZQorICAgIC8vIEEgbGVnaXRpbWF0ZSB0aW1lciBpcyB0aGUgdGltZXIgd2hpY2ggd29rZSB1cCB3
YXRjaGRvZyBhbmQgY2FuIGNhdXNlZCBkaWRGaXJlKCkgdG8gYmUKICAgICAvLyBjYWxsZWQgYWZ0
ZXIgbV93YWxsQ2xvY2tEZWFkbGluZSBoYXMgZXhwaXJlZC4gQWxsIG90aGVyIHRpbWVycyBhcmUg
Y29uc2lkZXJlZCB0byBiZSBzdGFsZSwKICAgICAvLyBhbmQgdGhlaXIgd2FrZSB1cHMgYXJlIGNv
bnNpZGVyZWQgdG8gYmUgc3B1cmlvdXMgYW5kIHNob3VsZCBiZSBpZ25vcmVkLgogICAgIC8vCi0g
ICAgLy8gZGlkRmlyZVNsb3coKSB3aWxsIHJhY2UgYWdhaW5zdCBtX3RpbWVySGFuZGxlciB0byBj
bGVhciBhbmQgc2V0IG1fdGltZXJEaWRGaXJlIHJlc3BlY3RpdmVseS4KKyAgICAvLyBkaWRGaXJl
KCkgd2lsbCByYWNlIGFnYWluc3QgbV90aW1lckhhbmRsZXIgdG8gY2xlYXIgYW5kIHNldCBtX3Rp
bWVyRGlkRmlyZSByZXNwZWN0aXZlbHkuCiAgICAgLy8gV2UgbmVlZCB0byBkZWFsIHdpdGggYSB2
YXJpZXR5IG9mIHNjZW5hcmlvcyB3aGVyZSB3ZSBjYW4gaGF2ZSBzdGFsZSB0aW1lcnMgYW5kIGxl
Z2l0aW1hdGUKICAgICAvLyB0aW1lcnMgZmlyaW5nIGluIGNsb3NlIHByb3hpbWl0eSB0byBlYWNo
IG90aGVyLgogICAgIC8vCkBAIC0xMTYsNyArMTEyLDcgQEAgYm9vbCBXYXRjaGRvZzo6ZGlkRmly
ZVNsb3coRXhlY1N0YXRlKiBleAogICAgIC8vICAgIEJlZm9yZSB0aGUgd2F0Y2hkb2cgY2FuIGdl
dHMgdG8gdGhlIGNsZWFyaW5nIG1fdGltZXJEaWRGaXJlIGFib3ZlLCB0aGUgbGVnaXQgdGltZXIg
YWxzbyBmaXJlcy4KICAgICAvLwogICAgIC8vICAgIEluIHRoaXMgY2FzZSwgbV90aW1lckRpZEZp
cmUgd2FzIHNldCB0d2ljZSBieSB0aGUgMiB0aW1lcnMsIGJ1dCB3ZSBvbmx5IGNsZWFyIG5lZWQg
dG8gY2xlYXIKLSAgICAvLyAgICBpdCBvbmNlLiBUaGUgbV93YWxsQ2xvY2tEZWFkbGluZSBiZWxv
dyB3aWxsIHBhc3MgYW5kIHRoaXMgaW52b2NhdGlvbiBvZiBkaWRGaXJlU2xvdygpIHdpbGwKKyAg
ICAvLyAgICBpdCBvbmNlLiBUaGUgbV93YWxsQ2xvY2tEZWFkbGluZSBiZWxvdyB3aWxsIHBhc3Mg
YW5kIHRoaXMgaW52b2NhdGlvbiBvZiBkaWRGaXJlKCkgd2lsbAogICAgIC8vICAgIGJlIHRyZWF0
ZWQgYXMgdGhlIHJlc3BvbnNlIHRvIHRoZSBsZWdpdCB0aW1lci4gVGhlIHNwdXJpb3VzIHRpbWVy
IGlzIGVmZmVjdGl2ZWx5IGlnbm9yZWQuCiAgICAgLy8KICAgICAvLyAzLiBBIHN0YXRlIHRpbWVy
IGZpcmVzIGp1c3QgYmVmb3JlIG1fd2FsbENsb2NrRGVhZGxpbmUgZXhwaXJlcy4KQEAgLTE0MSw4
ICsxMzcsOCBAQCBib29sIFdhdGNoZG9nOjpkaWRGaXJlU2xvdyhFeGVjU3RhdGUqIGV4CiAgICAg
Ly8gICAgQSBzdGFsZSB0aW1lciBmaXJlcyByaWdodCBhZnRlciB3ZSBjbGVhciBtX3RpbWVyRGlk
RmlyZSBhYm92ZS4KICAgICAvLwogICAgIC8vICAgIEluIHRoaXMgY2FzZSwgdGhlIG1fd2FsbENs
b2NrRGVhZGxpbmUgY2hlY2sgd2lsbCBwYXNzLCBhbmQgd2UgZmlyZSB0aGUgd2F0Y2hkb2cKLSAg
ICAvLyAgICB0aG91Z2ggbV90aW1lckRpZEZpcmUgcmVtYWlucyBzZXQuIFRoaXMganVzdCBtZWFu
cyB0aGF0IGRpZEZpcmVTbG93KCkgd2lsbCBiZSBjYWxsZWQgYWdhaW4gZHVlCi0gICAgLy8gICAg
dG8gbV90aW1lckRpZEZpcmUgYmVpbmcgc2V0LiBUaGUgc3Vic2VxdWVudCBpbnZvY2F0aW9uIG9m
IGRpZEZpcmVTbG93KCkgd2lsbCBlbmQgdXAgaGFuZGxpbmcKKyAgICAvLyAgICB0aG91Z2ggbV90
aW1lckRpZEZpcmUgcmVtYWlucyBzZXQuIFRoaXMganVzdCBtZWFucyB0aGF0IGRpZEZpcmUoKSB3
aWxsIGJlIGNhbGxlZCBhZ2FpbiBkdWUKKyAgICAvLyAgICB0byBtX3RpbWVyRGlkRmlyZSBiZWlu
ZyBzZXQuIFRoZSBzdWJzZXF1ZW50IGludm9jYXRpb24gb2YgZGlkRmlyZSgpIHdpbGwgZW5kIHVw
IGhhbmRsaW5nCiAgICAgLy8gICAgdGhlIHN0YWxlIHRpbWVyIGFuZCBpZ25vcmluZyBpdC4gVGhp
cyBpcyB0aGUgc2FtZSBzY2VuYXJpbyBhcyAxIGFib3ZlLgogICAgIC8vCiAgICAgLy8gNy4gQSBs
ZWdpdCB0aW1lciBmaXJlcy4KQEAgLTE2OCwxMCArMTY0LDggQEAgYm9vbCBXYXRjaGRvZzo6ZGlk
RmlyZVNsb3coRXhlY1N0YXRlKiBleAogICAgICAgICAvLyBFbHNlLCB3ZSBsZXQgbV9jYWxsYmFj
ayBkZWNpZGUgaWYgd2Ugc2hvdWxkIHRlcm1pbmF0ZSBvciBub3QuCiAgICAgICAgIGJvb2wgbmVl
ZHNUZXJtaW5hdGlvbiA9ICFtX2NhbGxiYWNrCiAgICAgICAgICAgICB8fCBtX2NhbGxiYWNrKGV4
ZWMsIG1fY2FsbGJhY2tEYXRhMSwgbV9jYWxsYmFja0RhdGEyKTsKLSAgICAgICAgaWYgKG5lZWRz
VGVybWluYXRpb24pIHsKLSAgICAgICAgICAgIG1fZGlkRmlyZSA9IHRydWU7CisgICAgICAgIGlm
IChuZWVkc1Rlcm1pbmF0aW9uKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0K
IAogICAgICAgICAvLyBJZiB3ZSBnZXQgaGVyZSwgdGhlbiB0aGUgY2FsbGJhY2sgYWJvdmUgZGlk
IG5vdCB3YW50IHRvIHRlcm1pbmF0ZSBleGVjdXRpb24uIEFzIGEKICAgICAgICAgLy8gcmVzdWx0
LCB0aGUgY2FsbGJhY2sgbWF5IGhhdmUgZG9uZSBvbmUgb2YgdGhlIGZvbGxvd2luZzoKQEAgLTIw
MSw5ICsxOTUsMjAgQEAgYm9vbCBXYXRjaGRvZzo6aGFzVGltZUxpbWl0KCkKICAgICByZXR1cm4g
KG1fdGltZUxpbWl0ICE9IG5vVGltZUxpbWl0KTsKIH0KIAotdm9pZCBXYXRjaGRvZzo6ZmlyZSgp
Cit2b2lkIFdhdGNoZG9nOjpzY2hlZHVsZVRlcm1pbmF0aW9uKCkKIHsKLSAgICBtX2RpZEZpcmUg
PSB0cnVlOworICAgIG1faGFzU2NoZWR1bGVkVGVybWluYXRpb24gPSB0cnVlOworICAgIFdURjo6
c3RvcmVTdG9yZUZlbmNlKCk7CisKKyAgICAvLyBTaW11bGF0ZSBhIHNwdXJpb3VzIHRpbWVyIHdh
a2UgdXAgc28gdGhhdCB0aGUgc2NyaXB0IHRocmVhZCB3aWxsIGNoZWNrIGRpZEZpcmUoKQorICAg
IC8vIGFuZCB0ZXJtaW5hdGUgZXhlY3V0aW9uIGR1ZSB0byB0aGUgc2NoZWR1bGVkIGV4ZWN1dGlv
biB0ZXJtaW5hdGlvbi4KKyAgICBtX3RpbWVyRGlkRmlyZSA9IHRydWU7Cit9CisKK3ZvaWQgV2F0
Y2hkb2c6OnJlc2V0Rm9yVGVybWluYXRpb24oKQoreworICAgIHN0b3BUaW1lcigpOworICAgIG1f
aGFzU2NoZWR1bGVkVGVybWluYXRpb24gPSBmYWxzZTsKIH0KIAogdm9pZCBXYXRjaGRvZzo6ZW50
ZXJlZFZNKCkKQEAgLTI0MCw3ICsyNDUsNyBAQCB2b2lkIFdhdGNoZG9nOjpzdGFydFRpbWVyKHN0
ZDo6Y2hyb25vOjptCiAgICAgbV90aW1lckRpZEZpcmUgPSBmYWxzZTsKIAogICAgIC8vIFdlIGNs
ZWFyIG1fdGltZXJEaWRGaXJlIGJlY2F1c2Ugd2UncmUgc3RhcnRpbmcgYSBuZXcgdGltZXIuIEhv
d2V2ZXIsIHdlIG5lZWQgdG8gbWFrZSBzdXJlCi0gICAgLy8gdGhhdCB0aGUgY2xlYXJpbmcgb2Nj
dXJzIGJlZm9yZSB0aGUgdGltZXIgdGhyZWFkIGlzIHN0YXJ0ZWQuIFRoZXJlYWZ0ZXIsIG9ubHkg
ZGlkRmlyZVNsb3coKQorICAgIC8vIHRoYXQgdGhlIGNsZWFyaW5nIG9jY3VycyBiZWZvcmUgdGhl
IHRpbWVyIHRocmVhZCBpcyBzdGFydGVkLiBUaGVyZWFmdGVyLCBvbmx5IGRpZEZpcmUoKQogICAg
IC8vIHNob3VsZCBjbGVhciBtX3RpbWVyRGlkRmlyZSAodW5sZXNzIHdlIHN0YXJ0IHlldCBhbm90
aGVyIHRpbWVyKS4gSGVuY2UsIHdlIG5lZWQgYSBzdG9yZVN0b3JlCiAgICAgLy8gZmVuY2UgaGVy
ZSB0byBlbnN1cmUgdGhlc2Ugb3BlcmF0aW9ucyBkbyBub3QgZ2V0IHJlLW9yZGVyZWQuCiAgICAg
V1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1dhdGNoZG9nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvV2F0Y2hkb2cuaAkocmV2aXNpb24gMTg4Mzc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvV2F0Y2hkb2cuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsMjYgKzQ2LDIzIEBAIHB1
YmxpYzoKICAgICB0eXBlZGVmIGJvb2wgKCpTaG91bGRUZXJtaW5hdGVDYWxsYmFjaykoRXhlY1N0
YXRlKiwgdm9pZCogZGF0YTEsIHZvaWQqIGRhdGEyKTsKICAgICB2b2lkIHNldFRpbWVMaW1pdChW
TSYsIHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHMgbGltaXQsIFNob3VsZFRlcm1pbmF0ZUNhbGxi
YWNrID0gMCwgdm9pZCogZGF0YTEgPSAwLCB2b2lkKiBkYXRhMiA9IDApOwogCi0gICAgLy8gVGhp
cyB2ZXJzaW9uIG9mIGRpZEZpcmUoKSB3aWxsIGNoZWNrIHRoZSBlbGFwc2VkIENQVSB0aW1lIGFu
ZCBjYWxsIHRoZQotICAgIC8vIGNhbGxiYWNrIChpZiBuZWVkZWQpIHRvIGRldGVybWluZSBpZiB0
aGUgd2F0Y2hkb2cgc2hvdWxkIGZpcmUuCi0gICAgYm9vbCBkaWRGaXJlKEV4ZWNTdGF0ZSogZXhl
YykKKyAgICBib29sIHNob3VsZFRyaWdnZXJUZXJtaW5hdGlvbihFeGVjU3RhdGUqIGV4ZWMpCiAg
ICAgewotICAgICAgICBpZiAobV9kaWRGaXJlKQorICAgICAgICBpZiAobV9oYXNTY2hlZHVsZWRU
ZXJtaW5hdGlvbikKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBpZiAoIW1fdGlt
ZXJEaWRGaXJlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXR1cm4gZGlk
RmlyZVNsb3coZXhlYyk7CisgICAgICAgIHJldHVybiBkaWRGaXJlKGV4ZWMpOwogICAgIH0KIAog
ICAgIGJvb2wgaGFzVGltZUxpbWl0KCk7CiAgICAgdm9pZCBlbnRlcmVkVk0oKTsKICAgICB2b2lk
IGV4aXRlZFZNKCk7CiAKLSAgICAvLyBUaGlzIHZlcnNpb24gb2YgZGlkRmlyZSgpIGlzIGEgbW9y
ZSBlZmZpY2llbnQgdmVyc2lvbiBmb3Igd2hlbiB3ZSB3YW50Ci0gICAgLy8gdG8ga25vdyBpZiB0
aGUgd2F0Y2hkb2cgaGFzIGZpcmVkIGluIHRoZSBwYXN0LCBhbmQgbm90IHdoZXRoZXIgaXQgc2hv
dWxkCi0gICAgLy8gZmlyZSByaWdodCBub3cuCi0gICAgYm9vbCBkaWRGaXJlKCkgeyByZXR1cm4g
bV9kaWRGaXJlOyB9Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaXJlKCk7CisgICAgYm9v
bCBoYXNTY2hlZHVsZWRUZXJtaW5hdGlvbigpIHsgcmV0dXJuIG1faGFzU2NoZWR1bGVkVGVybWlu
YXRpb247IH0KKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNjaGVkdWxlVGVybWluYXRpb24o
KTsKKworICAgIHZvaWQgcmVzZXRGb3JUZXJtaW5hdGlvbigpOwogCiAgICAgdm9pZCogdGltZXJE
aWRGaXJlQWRkcmVzcygpIHsgcmV0dXJuICZtX3RpbWVyRGlkRmlyZTsgfQogCkBAIC03NywxNSAr
NzQsMTggQEAgcHJpdmF0ZToKIAogICAgIGlubGluZSBib29sIGhhc1N0YXJ0ZWRUaW1lcigpOwog
Ci0gICAgYm9vbCBkaWRGaXJlU2xvdyhFeGVjU3RhdGUqKTsKKyAgICBib29sIGRpZEZpcmUoRXhl
Y1N0YXRlKik7CiAKLSAgICAvLyBtX3RpbWVyRGlkRmlyZSBpbmRpY2F0ZXMgd2hldGhlciB0aGUg
dGltZXIgZmlyZWQuIFRoZSBXYXRjaGRvZwotICAgIC8vIHN0aWxsIG5lZWRzIHRvIGNoZWNrIGlm
IHRoZSBhbGxvd2VkIENQVSB0aW1lIGhhcyBlbGFwc2VkLiBJZiBzbywgdGhlbgotICAgIC8vIHRo
ZSBXYXRjaGRvZyBmaXJlcyBhbmQgbV9kaWRGaXJlIHdpbGwgYmUgc2V0LgotICAgIC8vIE5PVEU6
IG1fdGltZXJEaWRGaXJlIGlzIG9ubHkgc2V0IGJ5IHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyB0aW1l
cgotICAgIC8vIChwcm9iYWJseSBmcm9tIGFub3RoZXIgdGhyZWFkKSBidXQgaXMgb25seSBjbGVh
cmVkIGluIHRoZSBzY3JpcHQgdGhyZWFkLgotICAgIGJvb2wgbV90aW1lckRpZEZpcmU7Ci0gICAg
Ym9vbCBtX2RpZEZpcmU7CisgICAgLy8gbV90aW1lckRpZEZpcmUgaW5kaWNhdGVzIHdoZXRoZXIg
dGhlIHRpbWVyIGZpcmVkLiBUaGlzIGlzIG5vdCB0aGUgc2FtZSBhcyB3aGV0aGVyIHRoZSBhbW91
bnQgb2YKKyAgICAvLyBhbGxvd2VkIENQVSB0aW1lIGhhcyBleHBpcmVkLiBUaGlzIGlzIGJlY2F1
c2UgdGltZXJzIHdpbGwgZmlyZSBiYXNlZCBvbiB3YWxsIGNsb2NrIHRpbWUgd2hpbGUKKyAgICAv
LyB0aGUgd2F0Y2hkb2cgdGltZSBsaW10aSBpcyBpbiB0ZXJtcyBvZiBDUFUgdGltZS4KKyAgICAv
LyBtX3RpbWVyRGlkRmlyZSBpcyBvbmx5IHNldCBieSB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgdGlt
ZXIgKHByb2JhYmx5IGZyb20gYW5vdGhlciB0aHJlYWQpIGJ1dAorICAgIC8vIGlzIG9ubHkgY2xl
YXJlZCBpbiB0aGUgc2NyaXB0IHRocmVhZC4KKyAgICBib29sIG1fdGltZXJEaWRGaXJlIHsgZmFs
c2UgfTsKKworICAgIC8vIG1faGFzU2NoZWR1bGVkVGVybWluYXRpb24gaXMgc2V0IGZyb20gYW5v
dGhlciB0aHJlYWQsIGJ1dCBpcyBvbmx5IGNsZWFyZWQgaW4gdGhlCisgICAgLy8gc2NyaXB0IHRo
cmVhZC4KKyAgICBib29sIG1faGFzU2NoZWR1bGVkVGVybWluYXRpb24geyBmYWxzZSB9OwogCiAg
ICAgc3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcyBtX3RpbWVMaW1pdDsKIApJbmRleDogU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwkocmV2aXNpb24gMTg4Mzc1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTUtMDgtMTIgIE1hcmsgTGFtICA8bWFyay5sYW1A
YXBwbGUuY29tPgorCisgICAgICAgIHdhdGNoZG9nIG1fZGlkRmlyZSBzdGF0ZSBlcnJvbmVvdXNs
eSByZXRhaW5lZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEzMTA4MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0IGhlcmUgYmVjYXVzZToKKyAgICAgICAgMS4gVGhlIGNsZWFyaW5nIG9m
IHRoZSBkaWRGaXJlIHN0YXRlIGlzIHRlc3RlZCBieSBKU0MgQVBJIHRlc3RzLgorICAgICAgICAy
LiBUaGUgY2hhbmdlcyB0byBXb3JrZXJTY3JpcHRDb250cm9sbGVyIHRvIHRyYWNrIGl0cyBvd24g
c3RhdGUgb2Ygd2hldGhlciBpdCBoYXMKKyAgICAgICAgICAgcmVxdWVzdGVkIHNjcmlwdCB0ZXJt
aW5hdGlvbiBvciBub3QsIHJlcXVpcmVzIHRlc3RpbmcgdGhhdCB0aGUgd2ViIHdvcmtlciBkaWQK
KyAgICAgICAgICAgaW4gZmFjdCBnZXQgdGVybWluYXRlZC4gIFRoZXJlJ3Mgbm8gd2F5IHRvIHRl
c3QgZm9yIHRoaXMgd2l0aG91dCBhZGRpbmcgdGVzdAorICAgICAgICAgICBpbnN0cnVtZW50YXRp
b24gdG8gdGhlIGNvZGUuCisKKyAgICAgICAgSSBpbnN0cnVtZW50ZWQgdGhlIGNvZGUgbG9jYWxs
eSB3aXRoIHNvbWUgbG9nZ2luZyBhbmQgbWFudWFsbHkgdmVyaWZpZWQgdGhhdCB3b3JrZXIKKyAg
ICAgICAgdGVybWluYXRpb24gd29ya3MgYXMgZXhwZWN0ZWQgd2hlbiB0aGUgd2F0Y2hkb2cgaXMg
ZW5hYmxlZC4gIFdlYiBXb3JrZXIncyB0ZXJtaW5hdGUoKQorICAgICAgICBkb2Vzbid0IHdvcmsg
aWYgdGhlIEpTQyB3YXRjaGRvZyBpcyBub3QgZW5hYmxlZCwgYnV0IHRoYXQncyBhIHNlcGFyYXRl
IGJ1ZyBub3QgZHVlCisgICAgICAgIHRvIHRoaXMgcGF0Y2g6IGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDc5NjgKKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZl
bnRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0V2ZW50TGlzdGVuZXI6OmhhbmRs
ZUV2ZW50KToKKyAgICAgICAgLSBVcGRhdGVkIHRvIGNoZWNrIGlmIHRoZSBzY3JpcHRDb250cm9s
bGVyIGhhcyByZXF1ZXN0ZWQgc2NyaXB0IHRlcm1pbmF0aW9uCisgICAgICAgICAgaW5zdGVhZCBv
ZiByZXF1aXJpbmcgdGhlIHdhdGNoZG9nIHRvIHJlbWVtYmVyIHRoaXMgcmVxdWVzdC4KKworICAg
ICAgICAqIGJpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUpOiAtIERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6c2NoZWR1bGVFeGVjdXRpb25U
ZXJtaW5hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpp
c1Rlcm1pbmF0aW5nRXhlY3V0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdENv
bnRyb2xsZXI6OmZvcmJpZEV4ZWN1dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3Jp
cHRDb250cm9sbGVyOjppc0V4ZWN1dGlvblRlcm1pbmF0aW5nKTogRGVsZXRlZC4KKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmg6CisKIDIwMTUtMDgtMTIgIEpp
bnlvdW5nIEh1ciAgPGh1ci5pbXNAbmF2ZXJjb3JwLmNvbT4KIAogICAgICAgICBbV2luQ2Fpcm9d
IFR1cm4gb24gV09GRiBmb250CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2
ZW50TGlzdGVuZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRXZlbnRMaXN0ZW5lci5jcHAJKHJldmlzaW9uIDE4ODM3NSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNSw5
ICsxMzUsMTAgQEAgdm9pZCBKU0V2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50KFNjcmlwdAogICAg
ICAgICBnbG9iYWxPYmplY3QtPnNldEN1cnJlbnRFdmVudChzYXZlZEV2ZW50KTsKIAogICAgICAg
ICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KSkgewor
ICAgICAgICAgICAgYXV0byBzY3JpcHRDb250cm9sbGVyID0gZG93bmNhc3Q8V29ya2VyR2xvYmFs
U2NvcGU+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KS5zY3JpcHQoKTsKICAgICAgICAgICAgIGJv
b2wgdGVybWluYXRvckNhdXNlZEV4Y2VwdGlvbiA9IChleGVjLT5oYWRFeGNlcHRpb24oKSAmJiBp
c1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oZXhlYy0+ZXhjZXB0aW9uKCkpKTsKLSAgICAg
ICAgICAgIGlmICh0ZXJtaW5hdG9yQ2F1c2VkRXhjZXB0aW9uIHx8ICh2bS53YXRjaGRvZyAmJiB2
bS53YXRjaGRvZy0+ZGlkRmlyZSgpKSkKLSAgICAgICAgICAgICAgICBkb3duY2FzdDxXb3JrZXJH
bG9iYWxTY29wZT4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLnNjcmlwdCgpLT5mb3JiaWRFeGVj
dXRpb24oKTsKKyAgICAgICAgICAgIGlmICh0ZXJtaW5hdG9yQ2F1c2VkRXhjZXB0aW9uIHx8IHNj
cmlwdENvbnRyb2xsZXItPmlzVGVybWluYXRpbmdFeGVjdXRpb24oKSkKKyAgICAgICAgICAgICAg
ICBzY3JpcHRDb250cm9sbGVyLT5mb3JiaWRFeGVjdXRpb24oKTsKICAgICAgICAgfQogCiAgICAg
ICAgIGlmIChleGNlcHRpb24pIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dv
cmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAxODgzNzUpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTIxLDggKzEyMSw3IEBAIHZvaWQgV29ya2VyU2NyaXB0Q29udHJv
bGxlcjo6ZXZhbHVhdGUoY28KICAgICBKU0M6OmV2YWx1YXRlKGV4ZWMsIHNvdXJjZUNvZGUuanNT
b3VyY2VDb2RlKCksIG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLT5nbG9iYWxUaGlzKCksIHJl
dHVybmVkRXhjZXB0aW9uKTsKIAogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgaWYgKChy
ZXR1cm5lZEV4Y2VwdGlvbiAmJiBpc1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24ocmV0dXJu
ZWRFeGNlcHRpb24pKQotICAgICAgICB8fCAodm0ud2F0Y2hkb2cgJiYgdm0ud2F0Y2hkb2ctPmRp
ZEZpcmUoKSkpIHsKKyAgICBpZiAoKHJldHVybmVkRXhjZXB0aW9uICYmIGlzVGVybWluYXRlZEV4
ZWN1dGlvbkV4Y2VwdGlvbihyZXR1cm5lZEV4Y2VwdGlvbikpIHx8IGlzVGVybWluYXRpbmdFeGVj
dXRpb24oKSkgewogICAgICAgICBmb3JiaWRFeGVjdXRpb24oKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KQEAgLTE0OSwyMCArMTQ4LDE5IEBAIHZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6
c2V0RXhjZXB0aW8KIHZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6c2NoZWR1bGVFeGVjdXRp
b25UZXJtaW5hdGlvbigpCiB7CiAgICAgLy8gVGhlIG11dGV4IHByb3ZpZGVzIGEgbWVtb3J5IGJh
cnJpZXIgdG8gZW5zdXJlIHRoYXQgb25jZQotICAgIC8vIHRlcm1pbmF0aW9uIGlzIHNjaGVkdWxl
ZCwgaXNFeGVjdXRpb25UZXJtaW5hdGluZyB3aWxsCisgICAgLy8gdGVybWluYXRpb24gaXMgc2No
ZWR1bGVkLCBpc1Rlcm1pbmF0aW5nRXhlY3V0aW9uKCkgd2lsbAogICAgIC8vIGFjY3VyYXRlbHkg
cmVmbGVjdCB0aGF0IHN0YXRlIHdoZW4gY2FsbGVkIGZyb20gYW5vdGhlciB0aHJlYWQuCiAgICAg
TXV0ZXhMb2NrZXIgbG9ja2VyKG1fc2NoZWR1bGVkVGVybWluYXRpb25NdXRleCk7CisgICAgbV9p
c1Rlcm1pbmF0aW5nRXhlY3V0aW9uID0gdHJ1ZTsKICAgICBpZiAobV92bS0+d2F0Y2hkb2cpCi0g
ICAgICAgIG1fdm0tPndhdGNoZG9nLT5maXJlKCk7CisgICAgICAgIG1fdm0tPndhdGNoZG9nLT5z
Y2hlZHVsZVRlcm1pbmF0aW9uKCk7CiB9CiAKLWJvb2wgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6
aXNFeGVjdXRpb25UZXJtaW5hdGluZygpIGNvbnN0Citib29sIFdvcmtlclNjcmlwdENvbnRyb2xs
ZXI6OmlzVGVybWluYXRpbmdFeGVjdXRpb24oKSBjb25zdAogewogICAgIC8vIFNlZSBjb21tZW50
cyBpbiBzY2hlZHVsZUV4ZWN1dGlvblRlcm1pbmF0aW9uIHJlZ2FyZGluZyBtdXRleCB1c2FnZS4K
ICAgICBNdXRleExvY2tlciBsb2NrZXIobV9zY2hlZHVsZWRUZXJtaW5hdGlvbk11dGV4KTsKLSAg
ICBpZiAobV92bS0+d2F0Y2hkb2cpCi0gICAgICAgIHJldHVybiBtX3ZtLT53YXRjaGRvZy0+ZGlk
RmlyZSgpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gbV9pc1Rlcm1pbmF0aW5nRXhl
Y3V0aW9uOwogfQogCiB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmZvcmJpZEV4ZWN1dGlv
bigpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9s
bGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2Ny
aXB0Q29udHJvbGxlci5oCShyZXZpc2lvbiAxODgzNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTcxLDcg
KzcxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBmb3JiaWRFeGVjdXRpb24o
KS9pc0V4ZWN1dGlvbkZvcmJpZGRlbigpIHRvIGd1YXJkIGFnYWluc3QgcmVlbnRyeSBpbnRvIEpT
LgogICAgICAgICAvLyBDYW4gYmUgY2FsbGVkIGZyb20gYW55IHRocmVhZC4KICAgICAgICAgdm9p
ZCBzY2hlZHVsZUV4ZWN1dGlvblRlcm1pbmF0aW9uKCk7Ci0gICAgICAgIGJvb2wgaXNFeGVjdXRp
b25UZXJtaW5hdGluZygpIGNvbnN0OworICAgICAgICBib29sIGlzVGVybWluYXRpbmdFeGVjdXRp
b24oKSBjb25zdDsKIAogICAgICAgICAvLyBDYWxsZWQgb24gV29ya2VyIHRocmVhZCB3aGVuIEpT
IGV4aXRzIHdpdGggdGVybWluYXRpb24gZXhjZXB0aW9uIGNhdXNlZCBieSBmb3JiaWRFeGVjdXRp
b24oKSByZXF1ZXN0LAogICAgICAgICAvLyBvciBieSBXb3JrZXIgdGhyZWFkIHRlcm1pbmF0aW9u
IGNvZGUgdG8gcHJldmVudCBmdXR1cmUgZW50cnkgaW50byBKUy4KQEAgLTk3LDYgKzk3LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBXb3JrZXJHbG9iYWxTY29wZSogbV93b3JrZXJH
bG9iYWxTY29wZTsKICAgICAgICAgSlNDOjpTdHJvbmc8SlNXb3JrZXJHbG9iYWxTY29wZT4gbV93
b3JrZXJHbG9iYWxTY29wZVdyYXBwZXI7CiAgICAgICAgIGJvb2wgbV9leGVjdXRpb25Gb3JiaWRk
ZW47CisgICAgICAgIGJvb2wgbV9pc1Rlcm1pbmF0aW5nRXhlY3V0aW9uIHsgZmFsc2UgfTsKICAg
ICAgICAgbXV0YWJsZSBNdXRleCBtX3NjaGVkdWxlZFRlcm1pbmF0aW9uTXV0ZXg7CiAgICAgfTsK
IAo=
</data>
<flag name="review"
          id="284068"
          type_id="1"
          status="-"
          setter="mark.lam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258899</attachid>
            <date>2015-08-13 10:37:46 -0700</date>
            <delta_ts>2015-08-13 15:39:14 -0700</delta_ts>
            <desc>fix 2.</desc>
            <filename>bug-131082.patch</filename>
            <type>text/plain</type>
            <size>24762</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg4Mzg0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBA
CisyMDE1LTA4LTEzICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICB3
YXRjaGRvZyBtX2RpZEZpcmUgc3RhdGUgZXJyb25lb3VzbHkgcmV0YWluZWQuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzEwODIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFQSS90ZXN0cy9FeGVjdXRp
b25UaW1lTGltaXRUZXN0LmNwcDoKKyAgICAgICAgKGV4dGVuZFRlcm1pbmF0ZUNhbGxiYWNrKToK
KyAgICAgICAgKHRlc3RSZXNldEFmdGVyVGltZW91dCk6CisgICAgICAgICh0ZXN0RXhlY3V0aW9u
VGltZUxpbWl0KToKKyAgICAgICAgLSBBZGQgdGVzdCBzY2VuYXJpb3MgdG8gdmVyaWZ5IHRoYXQg
dGhlIHdhdGNoZG9nIGlzIGF1dG9tYXRpY2FsbHkgcmVzZXQgYnkgdGhlIFZNCisgICAgICAgICAg
dXBvbiB0aHJvd2luZyB0aGUgVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbi4KKworICAgICAg
ICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvajoKKyAgICAg
ICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVy
czoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SW50
ZXJwcmV0ZXI6OmV4ZWN1dGUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZUNh
bGwpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZUNvbnN0cnVjdCk6CisgICAg
ICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1Bh
dGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAg
ICAgICAgLSBBZGRlZCBjYWxscyB0byByZXNldCB0aGUgd2F0Y2hkb2cgd2hlbiB3ZSBhcmUgYWJv
dXQgdG8gdGhyb3cgdGhlIFRlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24uCisgICAgICAgICAg
VGhpcyByZXNvbHZlcyB0aGUgYnVnLgorCisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAg
ICAgIChKU0M6OnNhbml0aXplU3RhY2tGb3JWTSk6CisgICAgICAgIChKU0M6OlZNOjpzY2hlZHVs
ZVRlcm1pbmF0aW9uKToKKyAgICAgICAgKEpTQzo6Vk06OnJlc2V0Rm9yVGVybWluYXRpb24pOgor
ICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKiBydW50aW1lL1ZNSW5saW5lcy5oOiBB
ZGRlZC4KKyAgICAgICAgKEpTQzo6Vk06OnNob3VsZFRyaWdnZXJUZXJtaW5hdGlvbik6CisgICAg
ICAgICogcnVudGltZS9XYXRjaGRvZy5jcHA6CisgICAgICAgIChKU0M6OldhdGNoZG9nOjpXYXRj
aGRvZyk6CisgICAgICAgIChKU0M6OldhdGNoZG9nOjpzZXRUaW1lTGltaXQpOgorICAgICAgICAo
SlNDOjpXYXRjaGRvZzo6ZGlkRmlyZVNsb3cpOgorICAgICAgICAoSlNDOjpXYXRjaGRvZzo6aGFz
VGltZUxpbWl0KToKKyAgICAgICAgKEpTQzo6V2F0Y2hkb2c6OmVudGVyZWRWTSk6CisgICAgICAg
IChKU0M6OldhdGNoZG9nOjpzdG9wVGltZXIpOgorICAgICAgICAoSlNDOjpXYXRjaGRvZzo6aW50
ZXJydXB0U2NyaXB0KToKKyAgICAgICAgKEpTQzo6V2F0Y2hkb2c6OnJlc2V0Rm9yVGVybWluYXRp
b24pOgorICAgICAgICAoSlNDOjpXYXRjaGRvZzo6ZmlyZSk6IERlbGV0ZWQuCisgICAgICAgICog
cnVudGltZS9XYXRjaGRvZy5oOgorICAgICAgICAoSlNDOjpXYXRjaGRvZzo6ZGlkRmlyZSk6Cisg
ICAgICAgIChKU0M6OldhdGNoZG9nOjp0aW1lckRpZEZpcmVBZGRyZXNzKToKKwogMjAxNS0wOC0x
MyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBYLltb
U2V0UHJvdG90eXBlT2ZdXShZKSBzaG91bGQgc3VjY2VlZCBpZiBYLltbUHJvdG90eXBlXV0gaXMg
YWxyZWFkeSBZIGV2ZW4gaWYgWCBpcyBub3QgZXh0ZW5zaWJsZQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS90ZXN0cy9FeGVjdXRpb25UaW1lTGltaXRUZXN0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0V4ZWN1dGlvblRpbWVMaW1pdFRl
c3QuY3BwCShyZXZpc2lvbiAxODgzNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rl
c3RzL0V4ZWN1dGlvblRpbWVMaW1pdFRlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSw2ICs3
OSwyMiBAQCBzdGF0aWMgYm9vbCBleHRlbmRUZXJtaW5hdGVDYWxsYmFjayhKU0NvCiB9CiAKIAor
c3RhdGljIHZvaWQgdGVzdFJlc2V0QWZ0ZXJUaW1lb3V0KGJvb2wmIGZhaWxlZCkKK3sKKyAgICBK
U1ZhbHVlUmVmIHYgPSBudWxscHRyOworICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gbnVsbHB0
cjsKKyAgICBjb25zdCBjaGFyKiByZWVudHJ5U2NyaXB0ID0gIjEwMCI7CisgICAgSlNTdHJpbmdS
ZWYgc2NyaXB0ID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcocmVlbnRyeVNjcmlwdCk7
CisgICAgdiA9IEpTRXZhbHVhdGVTY3JpcHQoY29udGV4dCwgc2NyaXB0LCBudWxscHRyLCBudWxs
cHRyLCAxLCAmZXhjZXB0aW9uKTsKKyAgICBpZiAoZXhjZXB0aW9uKSB7CisgICAgICAgIHByaW50
ZigiRkFJTDogV2F0Y2hkb2cgdGltZW91dCB3YXMgbm90IHJlc2V0LlxuIik7CisgICAgICAgIGZh
aWxlZCA9IHRydWU7CisgICAgfSBlbHNlIGlmICghSlNWYWx1ZUlzTnVtYmVyKGNvbnRleHQsIHYp
IHx8IEpTVmFsdWVUb051bWJlcihjb250ZXh0LCB2LCBudWxscHRyKSAhPSAxMDApIHsKKyAgICAg
ICAgcHJpbnRmKCJGQUlMOiBTY3JpcHQgcmVzdWx0IGlzIG5vdCBhcyBleHBlY3RlZC5cbiIpOwor
ICAgICAgICBmYWlsZWQgPSB0cnVlOworICAgIH0KK30KKwogaW50IHRlc3RFeGVjdXRpb25UaW1l
TGltaXQoKQogewogICAgIGNvbnRleHQgPSBKU0dsb2JhbENvbnRleHRDcmVhdGVJbkdyb3VwKG51
bGxwdHIsIG51bGxwdHIpOwpAQCAtMTIxLDYgKzEzNyw4IEBAIGludCB0ZXN0RXhlY3V0aW9uVGlt
ZUxpbWl0KCkKICAgICAgICAgICAgIHByaW50ZigiRkFJTDogVGVybWluYXRlZEV4ZWN1dGlvbkV4
Y2VwdGlvbiB3YXMgbm90IHRocm93bi5cbiIpOwogICAgICAgICAgICAgZmFpbGVkID0gdHJ1ZTsK
ICAgICAgICAgfQorCisgICAgICAgIHRlc3RSZXNldEFmdGVyVGltZW91dChmYWlsZWQpOwogICAg
IH0KICAgICAKICAgICAvKiBUZXN0IHRoZSBzY3JpcHQgdGltZW91dCdzIFRlcm1pbmF0ZWRFeGVj
dXRpb25FeGNlcHRpb24gc2hvdWxkIE5PVCBiZSBjYXRjaGFibGU6ICovCkBAIC0xNDgsNiArMTY2
LDggQEAgaW50IHRlc3RFeGVjdXRpb25UaW1lTGltaXQoKQogICAgICAgICAgICAgcHJpbnRmKCJG
QUlMOiBUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uIHdhcyBjYXVnaHQuXG4iKTsKICAgICAg
ICAgICAgIGZhaWxlZCA9IHRydWU7CiAgICAgICAgIH0KKworICAgICAgICB0ZXN0UmVzZXRBZnRl
clRpbWVvdXQoZmFpbGVkKTsKICAgICB9CiAgICAgCiAgICAgLyogVGVzdCBzY3JpcHQgdGltZW91
dCB3aXRoIG5vIGNhbGxiYWNrOiAqLwpAQCAtMTcyLDYgKzE5Miw4IEBAIGludCB0ZXN0RXhlY3V0
aW9uVGltZUxpbWl0KCkKICAgICAgICAgICAgIHByaW50ZigiRkFJTDogVGVybWluYXRlZEV4ZWN1
dGlvbkV4Y2VwdGlvbiB3YXMgbm90IHRocm93bi5cbiIpOwogICAgICAgICAgICAgZmFpbGVkID0g
dHJ1ZTsKICAgICAgICAgfQorCisgICAgICAgIHRlc3RSZXNldEFmdGVyVGltZW91dChmYWlsZWQp
OwogICAgIH0KICAgICAKICAgICAvKiBUZXN0IHNjcmlwdCB0aW1lb3V0IGNhbmNlbGxhdGlvbjog
Ki8KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagkocmV2aXNpb24g
MTg4Mzc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ov
SmF2YVNjcmlwdENvcmUudmN4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTc0Nyw2ICsxNzQ3LDcg
QEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcVWludDMyQXJyYXkuaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcVWludDhBcnJheS5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxWTS5oIiAvPgorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccnVudGltZVxWTUlubGluZXMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHJ1bnRpbWVcVk1FbnRyeVNjb3BlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxydW50aW1lXFZhck9mZnNldC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxXYXRjaGRvZy5oIiAvPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwkocmV2aXNpb24gMTg4Mzc1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJv
ai5maWx0ZXJzCSh3b3JraW5nIGNvcHkpCkBAIC0zMjM0LDYgKzMyMzQsOSBAQAogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxWTS5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwv
RmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVu
dGltZVxWTUlubGluZXMuaCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8
L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcVk1FbnRyeVNj
b3BlLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTg4Mzc1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM1ODcsNiArMzU4Nyw3IEBACiAJCUZFNTkzMkE2MTgz
QzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVk1FbnRyeVNjb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZF
N0JBNjBEMUExQTdDRUMwMEYxRjdCNCAvKiBIZWFwVmVyaWZpZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSGVhcFZlcmlmaWVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRkU3QkE2MEUxQTFBN0NFQzAwRjFGN0I0IC8qIEhlYXBWZXJpZmllci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIZWFwVmVyaWZpZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU5MEJCM0ExQjdDRjY0RTAwNkIzRjAzIC8qIFZNSW5s
aW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWTUlubGluZXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVBMDg2MUUxODJCN0EwNDAwRjZEODUxIC8qIEJy
ZWFrcG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnJlYWtwb2ludC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRUEwODYxRjE4MkI3QTA0MDBGNkQ4NTEg
LyogRGVidWdnZXJQcmltaXRpdmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IERlYnVnZ2VyUHJpbWl0aXZlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRUI1
MUY2QTFBOTdCNjg4MDAxRjkyMUMgLyogUmVncmVzczE0MTgwOS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBSZWdyZXNzMTQxODA5Lmg7IHBhdGggPSBBUEkvdGVzdHMvUmVncmVz
czE0MTgwOS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDkyOSw2ICs0OTMwLDcg
QEAKIAkJCQkwRkUwNTAyNDFBQTkwOTU2MDBEMzNCMzMgLyogVmFyT2Zmc2V0LmggKi8sCiAJCQkJ
RTE4RTNBNTcwREY5Mjc4QzAwRDkwQjM0IC8qIFZNLmNwcCAqLywKIAkJCQlFMThFM0E1NjBERjky
NzhDMDBEOTBCMzQgLyogVk0uaCAqLywKKwkJCQlGRTkwQkIzQTFCN0NGNjRFMDA2QjNGMDMgLyog
Vk1JbmxpbmVzLmggKi8sCiAJCQkJRkU1OTMyQTUxODNDNUEyNjAwQTFFQ0NDIC8qIFZNRW50cnlT
Y29wZS5jcHAgKi8sCiAJCQkJRkU1OTMyQTYxODNDNUEyNjAwQTFFQ0NDIC8qIFZNRW50cnlTY29w
ZS5oICovLAogCQkJCUZFRDk0RjJCMTcxRTNFMjMwMEJFNzdBNCAvKiBXYXRjaGRvZy5jcHAgKi8s
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5jcHAJKHJldmlzaW9uIDE4ODM3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9JbnRlcnByZXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDggKzcwLDggQEAK
ICNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3ltYm9sLmgiCiAjaW5jbHVk
ZSAiVk1FbnRyeVNjb3BlLmgiCisjaW5jbHVkZSAiVk1JbmxpbmVzLmgiCiAjaW5jbHVkZSAiVmly
dHVhbFJlZ2lzdGVyLmgiCi0jaW5jbHVkZSAiV2F0Y2hkb2cuaCIKIAogI2luY2x1ZGUgPGxpbWl0
cy5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CkBAIC04NjYsOCArODY2LDEwIEBAIGZhaWxlZEpTT05Q
OgogCiAgICAgUHJvZ3JhbUNvZGVCbG9jayogY29kZUJsb2NrID0gcHJvZ3JhbS0+Y29kZUJsb2Nr
KCk7CiAKLSAgICBpZiAoVU5MSUtFTFkodm0ud2F0Y2hkb2cgJiYgdm0ud2F0Y2hkb2ctPmRpZEZp
cmUoY2FsbEZyYW1lKSkpCisgICAgaWYgKFVOTElLRUxZKHZtLnNob3VsZFRyaWdnZXJUZXJtaW5h
dGlvbihjYWxsRnJhbWUpKSkgeworICAgICAgICB2bS5yZXNldEZvclRlcm1pbmF0aW9uKCk7CiAg
ICAgICAgIHJldHVybiB0aHJvd1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oY2FsbEZyYW1l
KTsKKyAgICB9CiAKICAgICBBU1NFUlQoY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgPT0gMSk7
IC8vIDEgcGFyYW1ldGVyIGZvciAndGhpcycuCiAKQEAgLTkyOSw4ICs5MzEsMTAgQEAgSlNWYWx1
ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNhbGwoQ2FsbEZyYQogICAgIH0gZWxzZQogICAgICAgICBu
ZXdDb2RlQmxvY2sgPSAwOwogCi0gICAgaWYgKFVOTElLRUxZKHZtLndhdGNoZG9nICYmIHZtLndh
dGNoZG9nLT5kaWRGaXJlKGNhbGxGcmFtZSkpKQorICAgIGlmIChVTkxJS0VMWSh2bS5zaG91bGRU
cmlnZ2VyVGVybWluYXRpb24oY2FsbEZyYW1lKSkpIHsKKyAgICAgICAgdm0ucmVzZXRGb3JUZXJt
aW5hdGlvbigpOwogICAgICAgICByZXR1cm4gdGhyb3dUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0
aW9uKGNhbGxGcmFtZSk7CisgICAgfQogCiAgICAgUHJvdG9DYWxsRnJhbWUgcHJvdG9DYWxsRnJh
bWU7CiAgICAgcHJvdG9DYWxsRnJhbWUuaW5pdChuZXdDb2RlQmxvY2ssIGZ1bmN0aW9uLCB0aGlz
VmFsdWUsIGFyZ3NDb3VudCwgYXJncy5kYXRhKCkpOwpAQCAtOTk5LDggKzEwMDMsMTAgQEAgSlNP
YmplY3QqIEludGVycHJldGVyOjpleGVjdXRlQ29uc3RydWN0KAogICAgIH0gZWxzZQogICAgICAg
ICBuZXdDb2RlQmxvY2sgPSAwOwogCi0gICAgaWYgKFVOTElLRUxZKHZtLndhdGNoZG9nICYmIHZt
LndhdGNoZG9nLT5kaWRGaXJlKGNhbGxGcmFtZSkpKQorICAgIGlmIChVTkxJS0VMWSh2bS5zaG91
bGRUcmlnZ2VyVGVybWluYXRpb24oY2FsbEZyYW1lKSkpIHsKKyAgICAgICAgdm0ucmVzZXRGb3JU
ZXJtaW5hdGlvbigpOwogICAgICAgICByZXR1cm4gdGhyb3dUZXJtaW5hdGVkRXhlY3V0aW9uRXhj
ZXB0aW9uKGNhbGxGcmFtZSk7CisgICAgfQogCiAgICAgUHJvdG9DYWxsRnJhbWUgcHJvdG9DYWxs
RnJhbWU7CiAgICAgcHJvdG9DYWxsRnJhbWUuaW5pdChuZXdDb2RlQmxvY2ssIGNvbnN0cnVjdG9y
LCBuZXdUYXJnZXQsIGFyZ3NDb3VudCwgYXJncy5kYXRhKCkpOwpAQCAtMTA3Miw4ICsxMDc4LDEw
IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoQ2FsbEZyYW1lQ2wKICAgICBpZiAoTGVn
YWN5UHJvZmlsZXIqIHByb2ZpbGVyID0gdm0uZW5hYmxlZFByb2ZpbGVyKCkpCiAgICAgICAgIHBy
b2ZpbGVyLT53aWxsRXhlY3V0ZShjbG9zdXJlLm9sZENhbGxGcmFtZSwgY2xvc3VyZS5mdW5jdGlv
bik7CiAKLSAgICBpZiAoVU5MSUtFTFkodm0ud2F0Y2hkb2cgJiYgdm0ud2F0Y2hkb2ctPmRpZEZp
cmUoY2xvc3VyZS5vbGRDYWxsRnJhbWUpKSkKKyAgICBpZiAoVU5MSUtFTFkodm0uc2hvdWxkVHJp
Z2dlclRlcm1pbmF0aW9uKGNsb3N1cmUub2xkQ2FsbEZyYW1lKSkpIHsKKyAgICAgICAgdm0ucmVz
ZXRGb3JUZXJtaW5hdGlvbigpOwogICAgICAgICByZXR1cm4gdGhyb3dUZXJtaW5hdGVkRXhlY3V0
aW9uRXhjZXB0aW9uKGNsb3N1cmUub2xkQ2FsbEZyYW1lKTsKKyAgICB9CiAKICAgICAvLyBFeGVj
dXRlIHRoZSBjb2RlOgogICAgIEpTVmFsdWUgcmVzdWx0OwpAQCAtMTE1Myw4ICsxMTYxLDEwIEBA
IEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGEKICAgICAgICAgfQogICAg
IH0KIAotICAgIGlmIChVTkxJS0VMWSh2bS53YXRjaGRvZyAmJiB2bS53YXRjaGRvZy0+ZGlkRmly
ZShjYWxsRnJhbWUpKSkKKyAgICBpZiAoVU5MSUtFTFkodm0uc2hvdWxkVHJpZ2dlclRlcm1pbmF0
aW9uKGNhbGxGcmFtZSkpKSB7CisgICAgICAgIHZtLnJlc2V0Rm9yVGVybWluYXRpb24oKTsKICAg
ICAgICAgcmV0dXJuIHRocm93VGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihjYWxsRnJhbWUp
OworICAgIH0KIAogICAgIEFTU0VSVChjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSA9PSAxKTsg
Ly8gMSBwYXJhbWV0ZXIgZm9yICd0aGlzJy4KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxODgzNzUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw3
ICs1Nyw3IEBACiAjaW5jbHVkZSAiU2NvcGVkQXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiVGVzdFJ1
bm5lclV0aWxzLmgiCiAjaW5jbHVkZSAiVHlwZVByb2ZpbGVyTG9nLmgiCi0jaW5jbHVkZSAiV2F0
Y2hkb2cuaCIKKyNpbmNsdWRlICJWTUlubGluZXMuaCIKICNpbmNsdWRlIDx3dGYvSW5saW5lQVNN
Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtOTY4LDggKzk2OCwxMCBAQCB2b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uSGFuZGxlV2F0Y2hkCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CiAKLSAgICBpZiAoVU5M
SUtFTFkodm0ud2F0Y2hkb2cgJiYgdm0ud2F0Y2hkb2ctPmRpZEZpcmUoZXhlYykpKQorICAgIGlm
IChVTkxJS0VMWSh2bS5zaG91bGRUcmlnZ2VyVGVybWluYXRpb24oZXhlYykpKSB7CisgICAgICAg
IHZtLnJlc2V0Rm9yVGVybWluYXRpb24oKTsKICAgICAgICAgdm0udGhyb3dFeGNlcHRpb24oZXhl
YywgY3JlYXRlVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbigmdm0pKTsKKyAgICB9CiB9CiAK
IHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJvd1N0YXRpY0Vycm9yKEV4ZWNTdGF0ZSog
ZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBpbnQzMl90IHJlZmVyZW5jZUVycm9y
RmxhZykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1Bh
dGhzLmNwcAkocmV2aXNpb24gMTg4Mzc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50U2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQAogI2lu
Y2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiUHJvdG9DYWxsRnJhbWUuaCIK
ICNpbmNsdWRlICJTdHJ1Y3R1cmVSYXJlRGF0YUlubGluZXMuaCIKLSNpbmNsdWRlICJXYXRjaGRv
Zy5oIgorI2luY2x1ZGUgIlZNSW5saW5lcy5oIgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0
cmVhbS5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKQEAgLTEyODYsOCAr
MTI4NiwxMCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaGFuZGxlX3dhCiB7CiAg
ICAgTExJTlRfQkVHSU5fTk9fU0VUX1BDKCk7CiAgICAgQVNTRVJUKHZtLndhdGNoZG9nKTsKLSAg
ICBpZiAoVU5MSUtFTFkodm0ud2F0Y2hkb2ctPmRpZEZpcmUoZXhlYykpKQorICAgIGlmIChVTkxJ
S0VMWSh2bS5zaG91bGRUcmlnZ2VyVGVybWluYXRpb24oZXhlYykpKSB7CisgICAgICAgIHZtLnJl
c2V0Rm9yVGVybWluYXRpb24oKTsKICAgICAgICAgTExJTlRfVEhST1coY3JlYXRlVGVybWluYXRl
ZEV4ZWN1dGlvbkV4Y2VwdGlvbigmdm0pKTsKKyAgICB9CiAgICAgTExJTlRfUkVUVVJOX1RXTygw
LCBleGVjKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkocmV2
aXNpb24gMTg4Mzc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC04MTAsNCArODEwLDE5IEBAIHZvaWQgc2FuaXRpemVTdGFja0ZvclZN
KFZNKiB2bSkKICNlbmRpZgogfQogCit2b2lkIFZNOjpzY2hlZHVsZVRlcm1pbmF0aW9uKCkKK3sK
KyAgICBtX2hhc1NjaGVkdWxlZFRlcm1pbmF0aW9uID0gdHJ1ZTsKKyAgICBXVEY6OnN0b3JlU3Rv
cmVGZW5jZSgpOworICAgIGlmICh3YXRjaGRvZykKKyAgICAgICAgd2F0Y2hkb2ctPmludGVycnVw
dFNjcmlwdCgpOworfQorCit2b2lkIFZNOjpyZXNldEZvclRlcm1pbmF0aW9uKCkKK3sKKyAgICBp
ZiAod2F0Y2hkb2cpCisgICAgICAgIHdhdGNoZG9nLT5yZXNldEZvclRlcm1pbmF0aW9uKCk7Cisg
ICAgbV9oYXNTY2hlZHVsZWRUZXJtaW5hdGlvbiA9IGZhbHNlOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkocmV2aXNpb24gMTg4Mzc1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkod29ya2luZyBjb3B5KQpA
QCAtNTU4LDYgKzU1OCwxMCBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBx
dWV1ZU1pY3JvdGFzayhKU0dsb2JhbE9iamVjdCosIFBhc3NSZWZQdHI8TWljcm90YXNrPik7CiAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkcmFpbk1pY3JvdGFza3MoKTsKIAorICAgIEpTX0VY
UE9SVF9QUklWQVRFIHZvaWQgc2NoZWR1bGVUZXJtaW5hdGlvbigpOworICAgIGlubGluZSBib29s
IHNob3VsZFRyaWdnZXJUZXJtaW5hdGlvbihFeGVjU3RhdGUqKTsKKyAgICB2b2lkIHJlc2V0Rm9y
VGVybWluYXRpb24oKTsKKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRz
RXh0cmFjdG9yOwogICAgIGZyaWVuZCBjbGFzcyBDbGVhckV4Y2VwdGlvblNjb3BlOwpAQCAtNjEz
LDYgKzYxNyw4IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPENvbnRyb2xGbG93UHJv
ZmlsZXI+IG1fY29udHJvbEZsb3dQcm9maWxlcjsKICAgICB1bnNpZ25lZCBtX2NvbnRyb2xGbG93
UHJvZmlsZXJFbmFibGVkQ291bnQ7CiAgICAgRGVxdWU8c3RkOjp1bmlxdWVfcHRyPFF1ZXVlZFRh
c2s+PiBtX21pY3JvdGFza1F1ZXVlOworCisgICAgYm9vbCBtX2hhc1NjaGVkdWxlZFRlcm1pbmF0
aW9uIHsgZmFsc2UgfTsKIH07CiAKICNpZiBFTkFCTEUoR0NfVkFMSURBVElPTikKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNSW5saW5lcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNSW5saW5lcy5oCShyZXZpc2lvbiAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1JbmxpbmVzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgVk1JbmxpbmVzX2gKKyNkZWZpbmUgVk1JbmxpbmVzX2gKKworI2luY2x1
ZGUgIlZNLmgiCisjaW5jbHVkZSAiV2F0Y2hkb2cuaCIKKworbmFtZXNwYWNlIEpTQyB7CisgICAg
Citib29sIFZNOjpzaG91bGRUcmlnZ2VyVGVybWluYXRpb24oRXhlY1N0YXRlKiBleGVjKQorewor
ICAgIGlmIChtX2hhc1NjaGVkdWxlZFRlcm1pbmF0aW9uKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICBpZiAod2F0Y2hkb2cpCisgICAgICAgIHJldHVybiB3YXRjaGRvZy0+ZGlkRmlyZShleGVj
KTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYg
Ly8gTExJbnREYXRhX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2F0
Y2hkb2cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dh
dGNoZG9nLmNwcAkocmV2aXNpb24gMTg4Mzc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvV2F0Y2hkb2cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw2IEBAIHN0YXRp
YyBzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzIGN1cnJlbnQKIAogV2F0Y2hkb2c6OldhdGNoZG9n
KCkKICAgICA6IG1fdGltZXJEaWRGaXJlKGZhbHNlKQotICAgICwgbV9kaWRGaXJlKGZhbHNlKQog
ICAgICwgbV90aW1lTGltaXQobm9UaW1lTGltaXQpCiAgICAgLCBtX2NwdURlYWRsaW5lKG5vVGlt
ZUxpbWl0KQogICAgICwgbV93YWxsQ2xvY2tEZWFkbGluZShub1RpbWVMaW1pdCkKQEAgLTY3LDgg
KzY2LDYgQEAgdm9pZCBXYXRjaGRvZzo6c2V0VGltZUxpbWl0KFZNJiB2bSwgc3RkOgogewogICAg
IGJvb2wgaGFkVGltZUxpbWl0ID0gaGFzVGltZUxpbWl0KCk7CiAKLSAgICBtX2RpZEZpcmUgPSBm
YWxzZTsgLy8gUmVzZXQgdGhlIHdhdGNoZG9nLgotCiAgICAgbV90aW1lTGltaXQgPSBsaW1pdDsK
ICAgICBtX2NhbGxiYWNrID0gY2FsbGJhY2s7CiAgICAgbV9jYWxsYmFja0RhdGExID0gZGF0YTE7
CkBAIC0xNjgsMTAgKzE2NSw4IEBAIGJvb2wgV2F0Y2hkb2c6OmRpZEZpcmVTbG93KEV4ZWNTdGF0
ZSogZXgKICAgICAgICAgLy8gRWxzZSwgd2UgbGV0IG1fY2FsbGJhY2sgZGVjaWRlIGlmIHdlIHNo
b3VsZCB0ZXJtaW5hdGUgb3Igbm90LgogICAgICAgICBib29sIG5lZWRzVGVybWluYXRpb24gPSAh
bV9jYWxsYmFjawogICAgICAgICAgICAgfHwgbV9jYWxsYmFjayhleGVjLCBtX2NhbGxiYWNrRGF0
YTEsIG1fY2FsbGJhY2tEYXRhMik7Ci0gICAgICAgIGlmIChuZWVkc1Rlcm1pbmF0aW9uKSB7Ci0g
ICAgICAgICAgICBtX2RpZEZpcmUgPSB0cnVlOworICAgICAgICBpZiAobmVlZHNUZXJtaW5hdGlv
bikKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9CiAKICAgICAgICAgLy8gSWYg
d2UgZ2V0IGhlcmUsIHRoZW4gdGhlIGNhbGxiYWNrIGFib3ZlIGRpZCBub3Qgd2FudCB0byB0ZXJt
aW5hdGUgZXhlY3V0aW9uLiBBcyBhCiAgICAgICAgIC8vIHJlc3VsdCwgdGhlIGNhbGxiYWNrIG1h
eSBoYXZlIGRvbmUgb25lIG9mIHRoZSBmb2xsb3dpbmc6CkBAIC0yMDEsMTEgKzE5Niw2IEBAIGJv
b2wgV2F0Y2hkb2c6Omhhc1RpbWVMaW1pdCgpCiAgICAgcmV0dXJuIChtX3RpbWVMaW1pdCAhPSBu
b1RpbWVMaW1pdCk7CiB9CiAKLXZvaWQgV2F0Y2hkb2c6OmZpcmUoKQotewotICAgIG1fZGlkRmly
ZSA9IHRydWU7Ci19Ci0KIHZvaWQgV2F0Y2hkb2c6OmVudGVyZWRWTSgpCiB7CiAgICAgbV9oYXNF
bnRlcmVkVk0gPSB0cnVlOwpAQCAtMjUzLDQgKzI0MywxNyBAQCB2b2lkIFdhdGNoZG9nOjpzdG9w
VGltZXIoKQogICAgIG1fY3B1RGVhZGxpbmUgPSBub1RpbWVMaW1pdDsKIH0KIAordm9pZCBXYXRj
aGRvZzo6aW50ZXJydXB0U2NyaXB0KCkKK3sKKyAgICAvLyBDdXJyZW50bHksIHRoZSBiZXN0IHRo
YXQgd2UgY2FuIGRvIHRvIGludGVycnVwdCB0aGUgc2NyaXB0IHRocmVhZCBpcyB0byB3YWtlIHVw
IHRoZSB3YXRjaGRvZworICAgIC8vIHdpdGggYSBzaW11bGF0ZWQgc3B1cmlvdXMgd2FrZSwgYW5k
IGxldCB0aGUgVk0ncyBzaG91bGRUcmlnZ2VyVGVybWluYXRpb24oKSBjaGVjayBoYW5kbGUgdGhl
CisgICAgLy8gcmVzdC4KKyAgICBtX3RpbWVyRGlkRmlyZSA9IHRydWU7Cit9CisKK3ZvaWQgV2F0
Y2hkb2c6OnJlc2V0Rm9yVGVybWluYXRpb24oKQoreworICAgIHN0b3BUaW1lcigpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dh
dGNoZG9nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2F0
Y2hkb2cuaAkocmV2aXNpb24gMTg4Mzc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvV2F0Y2hkb2cuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsMTIgKzQ2LDggQEAgcHVibGljOgog
ICAgIHR5cGVkZWYgYm9vbCAoKlNob3VsZFRlcm1pbmF0ZUNhbGxiYWNrKShFeGVjU3RhdGUqLCB2
b2lkKiBkYXRhMSwgdm9pZCogZGF0YTIpOwogICAgIHZvaWQgc2V0VGltZUxpbWl0KFZNJiwgc3Rk
OjpjaHJvbm86Om1pY3Jvc2Vjb25kcyBsaW1pdCwgU2hvdWxkVGVybWluYXRlQ2FsbGJhY2sgPSAw
LCB2b2lkKiBkYXRhMSA9IDAsIHZvaWQqIGRhdGEyID0gMCk7CiAKLSAgICAvLyBUaGlzIHZlcnNp
b24gb2YgZGlkRmlyZSgpIHdpbGwgY2hlY2sgdGhlIGVsYXBzZWQgQ1BVIHRpbWUgYW5kIGNhbGwg
dGhlCi0gICAgLy8gY2FsbGJhY2sgKGlmIG5lZWRlZCkgdG8gZGV0ZXJtaW5lIGlmIHRoZSB3YXRj
aGRvZyBzaG91bGQgZmlyZS4KICAgICBib29sIGRpZEZpcmUoRXhlY1N0YXRlKiBleGVjKQogICAg
IHsKLSAgICAgICAgaWYgKG1fZGlkRmlyZSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
ICAgICBpZiAoIW1fdGltZXJEaWRGaXJlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICByZXR1cm4gZGlkRmlyZVNsb3coZXhlYyk7CkBAIC02MSwxMSArNTcsOCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBlbnRlcmVkVk0oKTsKICAgICB2b2lkIGV4aXRlZFZNKCk7CiAKLSAgICAvLyBU
aGlzIHZlcnNpb24gb2YgZGlkRmlyZSgpIGlzIGEgbW9yZSBlZmZpY2llbnQgdmVyc2lvbiBmb3Ig
d2hlbiB3ZSB3YW50Ci0gICAgLy8gdG8ga25vdyBpZiB0aGUgd2F0Y2hkb2cgaGFzIGZpcmVkIGlu
IHRoZSBwYXN0LCBhbmQgbm90IHdoZXRoZXIgaXQgc2hvdWxkCi0gICAgLy8gZmlyZSByaWdodCBu
b3cuCi0gICAgYm9vbCBkaWRGaXJlKCkgeyByZXR1cm4gbV9kaWRGaXJlOyB9Ci0gICAgSlNfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBmaXJlKCk7CisgICAgdm9pZCBpbnRlcnJ1cHRTY3JpcHQoKTsKKyAg
ICB2b2lkIHJlc2V0Rm9yVGVybWluYXRpb24oKTsKIAogICAgIHZvaWQqIHRpbWVyRGlkRmlyZUFk
ZHJlc3MoKSB7IHJldHVybiAmbV90aW1lckRpZEZpcmU7IH0KIApAQCAtODUsNyArNzgsNiBAQCBw
cml2YXRlOgogICAgIC8vIE5PVEU6IG1fdGltZXJEaWRGaXJlIGlzIG9ubHkgc2V0IGJ5IHRoZSBw
bGF0Zm9ybSBzcGVjaWZpYyB0aW1lcgogICAgIC8vIChwcm9iYWJseSBmcm9tIGFub3RoZXIgdGhy
ZWFkKSBidXQgaXMgb25seSBjbGVhcmVkIGluIHRoZSBzY3JpcHQgdGhyZWFkLgogICAgIGJvb2wg
bV90aW1lckRpZEZpcmU7Ci0gICAgYm9vbCBtX2RpZEZpcmU7CiAKICAgICBzdGQ6OmNocm9ubzo6
bWljcm9zZWNvbmRzIG1fdGltZUxpbWl0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODgz
ODQpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwzMiBAQAorMjAxNS0wOC0xMyAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAg
ICAgICAgd2F0Y2hkb2cgbV9kaWRGaXJlIHN0YXRlIGVycm9uZW91c2x5IHJldGFpbmVkLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMxMDgyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3Qg
aGVyZSBiZWNhdXNlOgorICAgICAgICAxLiBUaGUgY2xlYXJpbmcgb2YgdGhlIGRpZEZpcmUgc3Rh
dGUgaXMgdGVzdGVkIGJ5IEpTQyBBUEkgdGVzdHMuCisgICAgICAgIDIuIFRoZSBjaGFuZ2VzIHRv
IFdvcmtlclNjcmlwdENvbnRyb2xsZXIgdG8gdHJhY2sgaXRzIG93biBzdGF0ZSBvZiB3aGV0aGVy
IGl0IGhhcworICAgICAgICAgICByZXF1ZXN0ZWQgc2NyaXB0IHRlcm1pbmF0aW9uIG9yIG5vdCwg
cmVxdWlyZXMgdGVzdGluZyB0aGF0IHRoZSB3ZWIgd29ya2VyIGRpZAorICAgICAgICAgICBpbiBm
YWN0IGdldCB0ZXJtaW5hdGVkLiAgVGhlcmUncyBubyB3YXkgdG8gdGVzdCBmb3IgdGhpcyB3aXRo
b3V0IGFkZGluZyB0ZXN0CisgICAgICAgICAgIGluc3RydW1lbnRhdGlvbiB0byB0aGUgY29kZS4K
KworICAgICAgICBJIGluc3RydW1lbnRlZCB0aGUgY29kZSBsb2NhbGx5IHdpdGggc29tZSBsb2dn
aW5nIGFuZCBtYW51YWxseSB2ZXJpZmllZCB0aGF0IHdvcmtlcgorICAgICAgICB0ZXJtaW5hdGlv
biB3b3JrcyBhcyBleHBlY3RlZCB3aGVuIHRoZSB3YXRjaGRvZyBpcyBlbmFibGVkLiAgV2ViIFdv
cmtlcidzIHRlcm1pbmF0ZSgpCisgICAgICAgIGRvZXNuJ3Qgd29yayBpZiB0aGUgSlNDIHdhdGNo
ZG9nIGlzIG5vdCBlbmFibGVkLCBidXQgdGhhdCdzIGEgc2VwYXJhdGUgYnVnIG5vdCBkdWUKKyAg
ICAgICAgdG8gdGhpcyBwYXRjaDogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE0Nzk2OAorCisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6c2NoZWR1bGVFeGVjdXRpb25UZXJtaW5hdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjppc1Rlcm1pbmF0aW5n
RXhlY3V0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdENvbnRyb2xsZXI6OmZv
cmJpZEV4ZWN1dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVy
Ojppc0V4ZWN1dGlvblRlcm1pbmF0aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmg6CisKIDIwMTUtMDgtMTIgIENhcmxvcyBHYXJjaWEg
Q2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtDYWlyb10gSW1wcm92ZSBp
bWFnZSBxdWFsaXR5IHdoZW4gdXNpbmcgbmV3ZXIgdmVyc2lvbnMgb2YgY2Fpcm8vcGl4bWFuCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAJ
KHJldmlzaW9uIDE4ODM3NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRM
aXN0ZW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNSw5ICsxMzUsMTAgQEAgdm9pZCBKU0V2
ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50KFNjcmlwdAogICAgICAgICBnbG9iYWxPYmplY3QtPnNl
dEN1cnJlbnRFdmVudChzYXZlZEV2ZW50KTsKIAogICAgICAgICBpZiAoaXM8V29ya2VyR2xvYmFs
U2NvcGU+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KSkgeworICAgICAgICAgICAgYXV0byBzY3Jp
cHRDb250cm9sbGVyID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KCpzY3JpcHRFeGVjdXRp
b25Db250ZXh0KS5zY3JpcHQoKTsKICAgICAgICAgICAgIGJvb2wgdGVybWluYXRvckNhdXNlZEV4
Y2VwdGlvbiA9IChleGVjLT5oYWRFeGNlcHRpb24oKSAmJiBpc1Rlcm1pbmF0ZWRFeGVjdXRpb25F
eGNlcHRpb24oZXhlYy0+ZXhjZXB0aW9uKCkpKTsKLSAgICAgICAgICAgIGlmICh0ZXJtaW5hdG9y
Q2F1c2VkRXhjZXB0aW9uIHx8ICh2bS53YXRjaGRvZyAmJiB2bS53YXRjaGRvZy0+ZGlkRmlyZSgp
KSkKLSAgICAgICAgICAgICAgICBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oKnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQpLnNjcmlwdCgpLT5mb3JiaWRFeGVjdXRpb24oKTsKKyAgICAgICAgICAg
IGlmICh0ZXJtaW5hdG9yQ2F1c2VkRXhjZXB0aW9uIHx8IHNjcmlwdENvbnRyb2xsZXItPmlzVGVy
bWluYXRpbmdFeGVjdXRpb24oKSkKKyAgICAgICAgICAgICAgICBzY3JpcHRDb250cm9sbGVyLT5m
b3JiaWRFeGVjdXRpb24oKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChleGNlcHRpb24pIHsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlw
dENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAxODgzNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIx
LDggKzEyMSw3IEBAIHZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUoY28KICAg
ICBKU0M6OmV2YWx1YXRlKGV4ZWMsIHNvdXJjZUNvZGUuanNTb3VyY2VDb2RlKCksIG1fd29ya2Vy
R2xvYmFsU2NvcGVXcmFwcGVyLT5nbG9iYWxUaGlzKCksIHJldHVybmVkRXhjZXB0aW9uKTsKIAog
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgaWYgKChyZXR1cm5lZEV4Y2VwdGlvbiAmJiBp
c1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24ocmV0dXJuZWRFeGNlcHRpb24pKQotICAgICAg
ICB8fCAodm0ud2F0Y2hkb2cgJiYgdm0ud2F0Y2hkb2ctPmRpZEZpcmUoKSkpIHsKKyAgICBpZiAo
KHJldHVybmVkRXhjZXB0aW9uICYmIGlzVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihyZXR1
cm5lZEV4Y2VwdGlvbikpIHx8IGlzVGVybWluYXRpbmdFeGVjdXRpb24oKSkgewogICAgICAgICBm
b3JiaWRFeGVjdXRpb24oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE0OSwyMCArMTQ4
LDE4IEBAIHZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6c2V0RXhjZXB0aW8KIHZvaWQgV29y
a2VyU2NyaXB0Q29udHJvbGxlcjo6c2NoZWR1bGVFeGVjdXRpb25UZXJtaW5hdGlvbigpCiB7CiAg
ICAgLy8gVGhlIG11dGV4IHByb3ZpZGVzIGEgbWVtb3J5IGJhcnJpZXIgdG8gZW5zdXJlIHRoYXQg
b25jZQotICAgIC8vIHRlcm1pbmF0aW9uIGlzIHNjaGVkdWxlZCwgaXNFeGVjdXRpb25UZXJtaW5h
dGluZyB3aWxsCisgICAgLy8gdGVybWluYXRpb24gaXMgc2NoZWR1bGVkLCBpc1Rlcm1pbmF0aW5n
RXhlY3V0aW9uKCkgd2lsbAogICAgIC8vIGFjY3VyYXRlbHkgcmVmbGVjdCB0aGF0IHN0YXRlIHdo
ZW4gY2FsbGVkIGZyb20gYW5vdGhlciB0aHJlYWQuCiAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1f
c2NoZWR1bGVkVGVybWluYXRpb25NdXRleCk7Ci0gICAgaWYgKG1fdm0tPndhdGNoZG9nKQotICAg
ICAgICBtX3ZtLT53YXRjaGRvZy0+ZmlyZSgpOworICAgIG1faXNUZXJtaW5hdGluZ0V4ZWN1dGlv
biA9IHRydWU7CisgICAgbV92bS0+c2NoZWR1bGVUZXJtaW5hdGlvbigpOwogfQogCi1ib29sIFdv
cmtlclNjcmlwdENvbnRyb2xsZXI6OmlzRXhlY3V0aW9uVGVybWluYXRpbmcoKSBjb25zdAorYm9v
bCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjppc1Rlcm1pbmF0aW5nRXhlY3V0aW9uKCkgY29uc3QK
IHsKICAgICAvLyBTZWUgY29tbWVudHMgaW4gc2NoZWR1bGVFeGVjdXRpb25UZXJtaW5hdGlvbiBy
ZWdhcmRpbmcgbXV0ZXggdXNhZ2UuCiAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fc2NoZWR1bGVk
VGVybWluYXRpb25NdXRleCk7Ci0gICAgaWYgKG1fdm0tPndhdGNoZG9nKQotICAgICAgICByZXR1
cm4gbV92bS0+d2F0Y2hkb2ctPmRpZEZpcmUoKTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0
dXJuIG1faXNUZXJtaW5hdGluZ0V4ZWN1dGlvbjsKIH0KIAogdm9pZCBXb3JrZXJTY3JpcHRDb250
cm9sbGVyOjpmb3JiaWRFeGVjdXRpb24oKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuaAkocmV2aXNpb24gMTg4Mzc1KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC03MSw3ICs3MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgLy8gZm9yYmlkRXhlY3V0aW9uKCkvaXNFeGVjdXRpb25Gb3JiaWRkZW4oKSB0byBndWFyZCBh
Z2FpbnN0IHJlZW50cnkgaW50byBKUy4KICAgICAgICAgLy8gQ2FuIGJlIGNhbGxlZCBmcm9tIGFu
eSB0aHJlYWQuCiAgICAgICAgIHZvaWQgc2NoZWR1bGVFeGVjdXRpb25UZXJtaW5hdGlvbigpOwot
ICAgICAgICBib29sIGlzRXhlY3V0aW9uVGVybWluYXRpbmcoKSBjb25zdDsKKyAgICAgICAgYm9v
bCBpc1Rlcm1pbmF0aW5nRXhlY3V0aW9uKCkgY29uc3Q7CiAKICAgICAgICAgLy8gQ2FsbGVkIG9u
IFdvcmtlciB0aHJlYWQgd2hlbiBKUyBleGl0cyB3aXRoIHRlcm1pbmF0aW9uIGV4Y2VwdGlvbiBj
YXVzZWQgYnkgZm9yYmlkRXhlY3V0aW9uKCkgcmVxdWVzdCwKICAgICAgICAgLy8gb3IgYnkgV29y
a2VyIHRocmVhZCB0ZXJtaW5hdGlvbiBjb2RlIHRvIHByZXZlbnQgZnV0dXJlIGVudHJ5IGludG8g
SlMuCkBAIC05Nyw2ICs5Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgV29ya2Vy
R2xvYmFsU2NvcGUqIG1fd29ya2VyR2xvYmFsU2NvcGU7CiAgICAgICAgIEpTQzo6U3Ryb25nPEpT
V29ya2VyR2xvYmFsU2NvcGU+IG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyOwogICAgICAgICBi
b29sIG1fZXhlY3V0aW9uRm9yYmlkZGVuOworICAgICAgICBib29sIG1faXNUZXJtaW5hdGluZ0V4
ZWN1dGlvbiB7IGZhbHNlIH07CiAgICAgICAgIG11dGFibGUgTXV0ZXggbV9zY2hlZHVsZWRUZXJt
aW5hdGlvbk11dGV4OwogICAgIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258940</attachid>
            <date>2015-08-13 15:39:14 -0700</date>
            <delta_ts>2015-08-14 16:10:00 -0700</delta_ts>
            <desc>fix 3</desc>
            <filename>bug-131082.patch</filename>
            <type>text/plain</type>
            <size>23584</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg4NDA3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBA
CisyMDE1LTA4LTEzICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICB3
YXRjaGRvZyBtX2RpZEZpcmUgc3RhdGUgZXJyb25lb3VzbHkgcmV0YWluZWQuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzEwODIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSd2ZSBkb25lIGF3YXkgd2l0
aCB0aGUgbV9kaWRGaXJlIGZsYWcuICBJbnN0ZWFkLCBXYXRjaGRvZzo6ZmlyZSgpIGlzIG5vdwor
ICAgICAgICByZXBsYWNlZCB3aXRoIFdhdGNoZG9nOjppbnRlcnJ1cHRTY3JpcHQoKSwgYW5kIGl0
IGlzIGltcGxlbWVudGVkIGFzIGEgc2ltdWxhdGlvbgorICAgICAgICBvZiB0aGUgd2F0Y2hkb2cg
ZmlyaW5nLiAgV2F0Y2hkb2c6OmRpZEZpcmVTbG93KCkgYWxyZWFkeSBkb2VzIGFsbCB0aGUgcHJv
cGVyCisgICAgICAgIGNsZWFuIHVwIChhbmQgd2lsbCByZXNldCB0aGUgd2F0Y2hkb2cpIGJlZm9y
ZSBpdCByZXR1cm5zLgorCisgICAgICAgICogQVBJL3Rlc3RzL0V4ZWN1dGlvblRpbWVMaW1pdFRl
c3QuY3BwOgorICAgICAgICAoZXh0ZW5kVGVybWluYXRlQ2FsbGJhY2spOgorICAgICAgICAodGVz
dFJlc2V0QWZ0ZXJUaW1lb3V0KToKKyAgICAgICAgKHRlc3RFeGVjdXRpb25UaW1lTGltaXQpOgor
ICAgICAgICAtIEFkZCB0ZXN0IHNjZW5hcmlvcyB0byB2ZXJpZnkgdGhhdCB0aGUgd2F0Y2hkb2cg
aXMgYXV0b21hdGljYWxseSByZXNldCBieSB0aGUgVk0KKyAgICAgICAgICB1cG9uIHRocm93aW5n
IHRoZSBUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uLgorCisgICAgICAgICogSmF2YVNjcmlw
dENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3Jp
cHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAq
IEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhl
Y3V0ZSk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpleGVjdXRlQ2FsbCk6CisgICAgICAg
IChKU0M6OkludGVycHJldGVyOjpleGVjdXRlQ29uc3RydWN0KToKKyAgICAgICAgKiBqaXQvSklU
T3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAg
ICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIHJ1bnRp
bWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpzYW5pdGl6ZVN0YWNrRm9yVk0pOgorICAgICAgICAo
SlNDOjpWTTo6c2NoZWR1bGVUZXJtaW5hdGlvbik6CisgICAgICAgICogcnVudGltZS9WTS5oOgor
ICAgICAgICAqIHJ1bnRpbWUvVk1JbmxpbmVzLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpWTTo6
c2hvdWxkVHJpZ2dlclRlcm1pbmF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL1dhdGNoZG9nLmNw
cDoKKyAgICAgICAgKEpTQzo6V2F0Y2hkb2c6OldhdGNoZG9nKToKKyAgICAgICAgKEpTQzo6V2F0
Y2hkb2c6OnNldFRpbWVMaW1pdCk6CisgICAgICAgIChKU0M6OldhdGNoZG9nOjpkaWRGaXJlU2xv
dyk6CisgICAgICAgIChKU0M6OldhdGNoZG9nOjpoYXNUaW1lTGltaXQpOgorICAgICAgICAoSlND
OjpXYXRjaGRvZzo6ZW50ZXJlZFZNKToKKyAgICAgICAgKEpTQzo6V2F0Y2hkb2c6OnN0b3BUaW1l
cik6CisgICAgICAgIChKU0M6OldhdGNoZG9nOjppbnRlcnJ1cHRTY3JpcHQpOgorICAgICAgICAo
SlNDOjpXYXRjaGRvZzo6ZmlyZSk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9XYXRjaGRv
Zy5oOgorICAgICAgICAoSlNDOjpXYXRjaGRvZzo6ZGlkRmlyZSk6CisgICAgICAgIChKU0M6Oldh
dGNoZG9nOjp0aW1lckRpZEZpcmVBZGRyZXNzKToKKwogMjAxNS0wOC0xMyAgSm9zZXBoIFBlY29y
YXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IEEge01h
cCwgV2Vha01hcCwgU2V0LCBXZWFrU2V0fSBvYmplY3QgY29udGFpbnMgaXRzZWxmIHdpbGwgaGFu
ZyB0aGUgY29uc29sZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9FeGVj
dXRpb25UaW1lTGltaXRUZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL3Rlc3RzL0V4ZWN1dGlvblRpbWVMaW1pdFRlc3QuY3BwCShyZXZpc2lvbiAxODgzNzUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0V4ZWN1dGlvblRpbWVMaW1pdFRl
c3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSw2ICs3OSwyMiBAQCBzdGF0aWMgYm9vbCBleHRl
bmRUZXJtaW5hdGVDYWxsYmFjayhKU0NvCiB9CiAKIAorc3RhdGljIHZvaWQgdGVzdFJlc2V0QWZ0
ZXJUaW1lb3V0KGJvb2wmIGZhaWxlZCkKK3sKKyAgICBKU1ZhbHVlUmVmIHYgPSBudWxscHRyOwor
ICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gbnVsbHB0cjsKKyAgICBjb25zdCBjaGFyKiByZWVu
dHJ5U2NyaXB0ID0gIjEwMCI7CisgICAgSlNTdHJpbmdSZWYgc2NyaXB0ID0gSlNTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcocmVlbnRyeVNjcmlwdCk7CisgICAgdiA9IEpTRXZhbHVhdGVTY3Jp
cHQoY29udGV4dCwgc2NyaXB0LCBudWxscHRyLCBudWxscHRyLCAxLCAmZXhjZXB0aW9uKTsKKyAg
ICBpZiAoZXhjZXB0aW9uKSB7CisgICAgICAgIHByaW50ZigiRkFJTDogV2F0Y2hkb2cgdGltZW91
dCB3YXMgbm90IHJlc2V0LlxuIik7CisgICAgICAgIGZhaWxlZCA9IHRydWU7CisgICAgfSBlbHNl
IGlmICghSlNWYWx1ZUlzTnVtYmVyKGNvbnRleHQsIHYpIHx8IEpTVmFsdWVUb051bWJlcihjb250
ZXh0LCB2LCBudWxscHRyKSAhPSAxMDApIHsKKyAgICAgICAgcHJpbnRmKCJGQUlMOiBTY3JpcHQg
cmVzdWx0IGlzIG5vdCBhcyBleHBlY3RlZC5cbiIpOworICAgICAgICBmYWlsZWQgPSB0cnVlOwor
ICAgIH0KK30KKwogaW50IHRlc3RFeGVjdXRpb25UaW1lTGltaXQoKQogewogICAgIGNvbnRleHQg
PSBKU0dsb2JhbENvbnRleHRDcmVhdGVJbkdyb3VwKG51bGxwdHIsIG51bGxwdHIpOwpAQCAtMTIx
LDYgKzEzNyw4IEBAIGludCB0ZXN0RXhlY3V0aW9uVGltZUxpbWl0KCkKICAgICAgICAgICAgIHBy
aW50ZigiRkFJTDogVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbiB3YXMgbm90IHRocm93bi5c
biIpOwogICAgICAgICAgICAgZmFpbGVkID0gdHJ1ZTsKICAgICAgICAgfQorCisgICAgICAgIHRl
c3RSZXNldEFmdGVyVGltZW91dChmYWlsZWQpOwogICAgIH0KICAgICAKICAgICAvKiBUZXN0IHRo
ZSBzY3JpcHQgdGltZW91dCdzIFRlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24gc2hvdWxkIE5P
VCBiZSBjYXRjaGFibGU6ICovCkBAIC0xNDgsNiArMTY2LDggQEAgaW50IHRlc3RFeGVjdXRpb25U
aW1lTGltaXQoKQogICAgICAgICAgICAgcHJpbnRmKCJGQUlMOiBUZXJtaW5hdGVkRXhlY3V0aW9u
RXhjZXB0aW9uIHdhcyBjYXVnaHQuXG4iKTsKICAgICAgICAgICAgIGZhaWxlZCA9IHRydWU7CiAg
ICAgICAgIH0KKworICAgICAgICB0ZXN0UmVzZXRBZnRlclRpbWVvdXQoZmFpbGVkKTsKICAgICB9
CiAgICAgCiAgICAgLyogVGVzdCBzY3JpcHQgdGltZW91dCB3aXRoIG5vIGNhbGxiYWNrOiAqLwpA
QCAtMTcyLDYgKzE5Miw4IEBAIGludCB0ZXN0RXhlY3V0aW9uVGltZUxpbWl0KCkKICAgICAgICAg
ICAgIHByaW50ZigiRkFJTDogVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbiB3YXMgbm90IHRo
cm93bi5cbiIpOwogICAgICAgICAgICAgZmFpbGVkID0gdHJ1ZTsKICAgICAgICAgfQorCisgICAg
ICAgIHRlc3RSZXNldEFmdGVyVGltZW91dChmYWlsZWQpOwogICAgIH0KICAgICAKICAgICAvKiBU
ZXN0IHNjcmlwdCB0aW1lb3V0IGNhbmNlbGxhdGlvbjogKi8KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ov
SmF2YVNjcmlwdENvcmUudmN4cHJvagkocmV2aXNpb24gMTg4Mzc1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtMTc0Nyw2ICsxNzQ3LDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHJ1bnRpbWVcVWludDMyQXJyYXkuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcVWludDhBcnJheS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxWTS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxWTUlu
bGluZXMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcVk1FbnRyeVNj
b3BlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFZhck9mZnNldC5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxXYXRjaGRvZy5oIiAvPgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNj
cmlwdENvcmUudmN4cHJvai5maWx0ZXJzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVy
cwkocmV2aXNpb24gMTg4Mzc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCSh3b3JraW5nIGNvcHkp
CkBAIC0zMjM0LDYgKzMyMzQsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxWTS5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRl
PgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxWTUlubGluZXMuaCI+CisgICAg
ICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcVk1FbnRyeVNjb3BlLmgiPgogICAgICAgPEZpbHRlcj5y
dW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkocmV2aXNpb24gMTg4Mzc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAg
LTM1ODcsNiArMzU4Nyw3IEBACiAJCUZFNTkzMkE2MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5
U2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVk1FbnRyeVNjb3BlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFN0JBNjBEMUExQTdDRUMwMEYxRjdCNCAv
KiBIZWFwVmVyaWZpZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SGVhcFZlcmlmaWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU3QkE2MEUx
QTFBN0NFQzAwRjFGN0I0IC8qIEhlYXBWZXJpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBIZWFwVmVyaWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RkU5MEJCM0ExQjdDRjY0RTAwNkIzRjAzIC8qIFZNSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBWTUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRkVBMDg2MUUxODJCN0EwNDAwRjZEODUxIC8qIEJyZWFrcG9pbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQnJlYWtwb2ludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlGRUEwODYxRjE4MkI3QTA0MDBGNkQ4NTEgLyogRGVidWdnZXJQcmltaXRpdmVzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlYnVnZ2VyUHJpbWl0aXZlcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRUI1MUY2QTFBOTdCNjg4MDAxRjkyMUMgLyog
UmVncmVzczE0MTgwOS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBSZWdyZXNz
MTQxODA5Lmg7IHBhdGggPSBBUEkvdGVzdHMvUmVncmVzczE0MTgwOS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNDkyOSw2ICs0OTMwLDcgQEAKIAkJCQkwRkUwNTAyNDFBQTkwOTU2
MDBEMzNCMzMgLyogVmFyT2Zmc2V0LmggKi8sCiAJCQkJRTE4RTNBNTcwREY5Mjc4QzAwRDkwQjM0
IC8qIFZNLmNwcCAqLywKIAkJCQlFMThFM0E1NjBERjkyNzhDMDBEOTBCMzQgLyogVk0uaCAqLywK
KwkJCQlGRTkwQkIzQTFCN0NGNjRFMDA2QjNGMDMgLyogVk1JbmxpbmVzLmggKi8sCiAJCQkJRkU1
OTMyQTUxODNDNUEyNjAwQTFFQ0NDIC8qIFZNRW50cnlTY29wZS5jcHAgKi8sCiAJCQkJRkU1OTMy
QTYxODNDNUEyNjAwQTFFQ0NDIC8qIFZNRW50cnlTY29wZS5oICovLAogCQkJCUZFRDk0RjJCMTcx
RTNFMjMwMEJFNzdBNCAvKiBXYXRjaGRvZy5jcHAgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDE4ODM3
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTcwLDggKzcwLDggQEAKICNpbmNsdWRlICJTdHJvbmdJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiU3ltYm9sLmgiCiAjaW5jbHVkZSAiVk1FbnRyeVNjb3BlLmgiCisjaW5j
bHVkZSAiVk1JbmxpbmVzLmgiCiAjaW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCi0jaW5jbHVk
ZSAiV2F0Y2hkb2cuaCIKIAogI2luY2x1ZGUgPGxpbWl0cy5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+
CkBAIC04NjYsNyArODY2LDcgQEAgZmFpbGVkSlNPTlA6CiAKICAgICBQcm9ncmFtQ29kZUJsb2Nr
KiBjb2RlQmxvY2sgPSBwcm9ncmFtLT5jb2RlQmxvY2soKTsKIAotICAgIGlmIChVTkxJS0VMWSh2
bS53YXRjaGRvZyAmJiB2bS53YXRjaGRvZy0+ZGlkRmlyZShjYWxsRnJhbWUpKSkKKyAgICBpZiAo
VU5MSUtFTFkodm0uc2hvdWxkVHJpZ2dlclRlcm1pbmF0aW9uKGNhbGxGcmFtZSkpKQogICAgICAg
ICByZXR1cm4gdGhyb3dUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKGNhbGxGcmFtZSk7CiAK
ICAgICBBU1NFUlQoY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgPT0gMSk7IC8vIDEgcGFyYW1l
dGVyIGZvciAndGhpcycuCkBAIC05MjksNyArOTI5LDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6
ZXhlY3V0ZUNhbGwoQ2FsbEZyYQogICAgIH0gZWxzZQogICAgICAgICBuZXdDb2RlQmxvY2sgPSAw
OwogCi0gICAgaWYgKFVOTElLRUxZKHZtLndhdGNoZG9nICYmIHZtLndhdGNoZG9nLT5kaWRGaXJl
KGNhbGxGcmFtZSkpKQorICAgIGlmIChVTkxJS0VMWSh2bS5zaG91bGRUcmlnZ2VyVGVybWluYXRp
b24oY2FsbEZyYW1lKSkpCiAgICAgICAgIHJldHVybiB0aHJvd1Rlcm1pbmF0ZWRFeGVjdXRpb25F
eGNlcHRpb24oY2FsbEZyYW1lKTsKIAogICAgIFByb3RvQ2FsbEZyYW1lIHByb3RvQ2FsbEZyYW1l
OwpAQCAtOTk5LDcgKzk5OSw3IEBAIEpTT2JqZWN0KiBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNvbnN0
cnVjdCgKICAgICB9IGVsc2UKICAgICAgICAgbmV3Q29kZUJsb2NrID0gMDsKIAotICAgIGlmIChV
TkxJS0VMWSh2bS53YXRjaGRvZyAmJiB2bS53YXRjaGRvZy0+ZGlkRmlyZShjYWxsRnJhbWUpKSkK
KyAgICBpZiAoVU5MSUtFTFkodm0uc2hvdWxkVHJpZ2dlclRlcm1pbmF0aW9uKGNhbGxGcmFtZSkp
KQogICAgICAgICByZXR1cm4gdGhyb3dUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKGNhbGxG
cmFtZSk7CiAKICAgICBQcm90b0NhbGxGcmFtZSBwcm90b0NhbGxGcmFtZTsKQEAgLTEwNzIsNyAr
MTA3Miw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoQ2FsbEZyYW1lQ2wKICAgICBp
ZiAoTGVnYWN5UHJvZmlsZXIqIHByb2ZpbGVyID0gdm0uZW5hYmxlZFByb2ZpbGVyKCkpCiAgICAg
ICAgIHByb2ZpbGVyLT53aWxsRXhlY3V0ZShjbG9zdXJlLm9sZENhbGxGcmFtZSwgY2xvc3VyZS5m
dW5jdGlvbik7CiAKLSAgICBpZiAoVU5MSUtFTFkodm0ud2F0Y2hkb2cgJiYgdm0ud2F0Y2hkb2ct
PmRpZEZpcmUoY2xvc3VyZS5vbGRDYWxsRnJhbWUpKSkKKyAgICBpZiAoVU5MSUtFTFkodm0uc2hv
dWxkVHJpZ2dlclRlcm1pbmF0aW9uKGNsb3N1cmUub2xkQ2FsbEZyYW1lKSkpCiAgICAgICAgIHJl
dHVybiB0aHJvd1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oY2xvc3VyZS5vbGRDYWxsRnJh
bWUpOwogCiAgICAgLy8gRXhlY3V0ZSB0aGUgY29kZToKQEAgLTExNTMsNyArMTE1Myw3IEBAIEpT
VmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGEKICAgICAgICAgfQogICAgIH0K
IAotICAgIGlmIChVTkxJS0VMWSh2bS53YXRjaGRvZyAmJiB2bS53YXRjaGRvZy0+ZGlkRmlyZShj
YWxsRnJhbWUpKSkKKyAgICBpZiAoVU5MSUtFTFkodm0uc2hvdWxkVHJpZ2dlclRlcm1pbmF0aW9u
KGNhbGxGcmFtZSkpKQogICAgICAgICByZXR1cm4gdGhyb3dUZXJtaW5hdGVkRXhlY3V0aW9uRXhj
ZXB0aW9uKGNhbGxGcmFtZSk7CiAKICAgICBBU1NFUlQoY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJz
KCkgPT0gMSk7IC8vIDEgcGFyYW1ldGVyIGZvciAndGhpcycuCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDE4ODM3NSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTU3LDcgKzU3LDcgQEAKICNpbmNsdWRlICJTY29wZWRBcmd1bWVudHMuaCIKICNpbmNsdWRl
ICJUZXN0UnVubmVyVXRpbHMuaCIKICNpbmNsdWRlICJUeXBlUHJvZmlsZXJMb2cuaCIKLSNpbmNs
dWRlICJXYXRjaGRvZy5oIgorI2luY2x1ZGUgIlZNSW5saW5lcy5oIgogI2luY2x1ZGUgPHd0Zi9J
bmxpbmVBU00uaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC05NjgsNyArOTY4LDcgQEAgdm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkhhbmRsZVdhdGNoZAogICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwogCi0gICAg
aWYgKFVOTElLRUxZKHZtLndhdGNoZG9nICYmIHZtLndhdGNoZG9nLT5kaWRGaXJlKGV4ZWMpKSkK
KyAgICBpZiAoVU5MSUtFTFkodm0uc2hvdWxkVHJpZ2dlclRlcm1pbmF0aW9uKGV4ZWMpKSkKICAg
ICAgICAgdm0udGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVGVybWluYXRlZEV4ZWN1dGlvbkV4
Y2VwdGlvbigmdm0pKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lvbiAxODgzNzUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3
ICs1Myw3IEBACiAjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJQcm90
b0NhbGxGcmFtZS5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVJhcmVEYXRhSW5saW5lcy5oIgotI2lu
Y2x1ZGUgIldhdGNoZG9nLmgiCisjaW5jbHVkZSAiVk1JbmxpbmVzLmgiCiAjaW5jbHVkZSA8d3Rm
L1N0cmluZ1ByaW50U3RyZWFtLmg+CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQg
ewpAQCAtMTI4Niw3ICsxMjg2LDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2hh
bmRsZV93YQogewogICAgIExMSU5UX0JFR0lOX05PX1NFVF9QQygpOwogICAgIEFTU0VSVCh2bS53
YXRjaGRvZyk7Ci0gICAgaWYgKFVOTElLRUxZKHZtLndhdGNoZG9nLT5kaWRGaXJlKGV4ZWMpKSkK
KyAgICBpZiAoVU5MSUtFTFkodm0uc2hvdWxkVHJpZ2dlclRlcm1pbmF0aW9uKGV4ZWMpKSkKICAg
ICAgICAgTExJTlRfVEhST1coY3JlYXRlVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbigmdm0p
KTsKICAgICBMTElOVF9SRVRVUk5fVFdPKDAsIGV4ZWMpOwogfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmNwcAkocmV2aXNpb24gMTg4Mzc1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MTAsNCArODEwLDEwIEBA
IHZvaWQgc2FuaXRpemVTdGFja0ZvclZNKFZNKiB2bSkKICNlbmRpZgogfQogCit2b2lkIFZNOjpz
Y2hlZHVsZVRlcm1pbmF0aW9uKCkKK3sKKyAgICBpZiAod2F0Y2hkb2cpCisgICAgICAgIHdhdGNo
ZG9nLT5pbnRlcnJ1cHRTY3JpcHQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJldmlzaW9uIDE4ODM3NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1OCw2ICs1NTgs
OSBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBxdWV1ZU1pY3JvdGFzayhK
U0dsb2JhbE9iamVjdCosIFBhc3NSZWZQdHI8TWljcm90YXNrPik7CiAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgdm9pZCBkcmFpbk1pY3JvdGFza3MoKTsKIAorICAgIEpTX0VYUE9SVF9QUklWQVRFIHZv
aWQgc2NoZWR1bGVUZXJtaW5hdGlvbigpOworICAgIGlubGluZSBib29sIHNob3VsZFRyaWdnZXJU
ZXJtaW5hdGlvbihFeGVjU3RhdGUqKTsKKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGZyaWVuZCBjbGFzcyBDbGVhckV4Y2VwdGlvblNjb3Bl
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1JbmxpbmVzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1JbmxpbmVzLmgJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUlubGluZXMuaAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBWTUlubGluZXNfaAorI2RlZmluZSBWTUlubGluZXNf
aAorCisjaW5jbHVkZSAiVk0uaCIKKyNpbmNsdWRlICJXYXRjaGRvZy5oIgorCituYW1lc3BhY2Ug
SlNDIHsKKyAgICAKK2Jvb2wgVk06OnNob3VsZFRyaWdnZXJUZXJtaW5hdGlvbihFeGVjU3RhdGUq
IGV4ZWMpCit7CisgICAgaWYgKCF3YXRjaGRvZykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IHJldHVybiB3YXRjaGRvZy0+ZGlkRmlyZShleGVjKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlND
CisKKyNlbmRpZiAvLyBMTEludERhdGFfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9XYXRjaGRvZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvV2F0Y2hkb2cuY3BwCShyZXZpc2lvbiAxODgzNzUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9XYXRjaGRvZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQy
LDYgQEAgc3RhdGljIHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHMgY3VycmVudAogCiBXYXRjaGRv
Zzo6V2F0Y2hkb2coKQogICAgIDogbV90aW1lckRpZEZpcmUoZmFsc2UpCi0gICAgLCBtX2RpZEZp
cmUoZmFsc2UpCiAgICAgLCBtX3RpbWVMaW1pdChub1RpbWVMaW1pdCkKICAgICAsIG1fY3B1RGVh
ZGxpbmUobm9UaW1lTGltaXQpCiAgICAgLCBtX3dhbGxDbG9ja0RlYWRsaW5lKG5vVGltZUxpbWl0
KQpAQCAtNjcsOCArNjYsNiBAQCB2b2lkIFdhdGNoZG9nOjpzZXRUaW1lTGltaXQoVk0mIHZtLCBz
dGQ6CiB7CiAgICAgYm9vbCBoYWRUaW1lTGltaXQgPSBoYXNUaW1lTGltaXQoKTsKIAotICAgIG1f
ZGlkRmlyZSA9IGZhbHNlOyAvLyBSZXNldCB0aGUgd2F0Y2hkb2cuCi0KICAgICBtX3RpbWVMaW1p
dCA9IGxpbWl0OwogICAgIG1fY2FsbGJhY2sgPSBjYWxsYmFjazsKICAgICBtX2NhbGxiYWNrRGF0
YTEgPSBkYXRhMTsKQEAgLTE2OCwxMCArMTY1LDggQEAgYm9vbCBXYXRjaGRvZzo6ZGlkRmlyZVNs
b3coRXhlY1N0YXRlKiBleAogICAgICAgICAvLyBFbHNlLCB3ZSBsZXQgbV9jYWxsYmFjayBkZWNp
ZGUgaWYgd2Ugc2hvdWxkIHRlcm1pbmF0ZSBvciBub3QuCiAgICAgICAgIGJvb2wgbmVlZHNUZXJt
aW5hdGlvbiA9ICFtX2NhbGxiYWNrCiAgICAgICAgICAgICB8fCBtX2NhbGxiYWNrKGV4ZWMsIG1f
Y2FsbGJhY2tEYXRhMSwgbV9jYWxsYmFja0RhdGEyKTsKLSAgICAgICAgaWYgKG5lZWRzVGVybWlu
YXRpb24pIHsKLSAgICAgICAgICAgIG1fZGlkRmlyZSA9IHRydWU7CisgICAgICAgIGlmIChuZWVk
c1Rlcm1pbmF0aW9uKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KIAogICAg
ICAgICAvLyBJZiB3ZSBnZXQgaGVyZSwgdGhlbiB0aGUgY2FsbGJhY2sgYWJvdmUgZGlkIG5vdCB3
YW50IHRvIHRlcm1pbmF0ZSBleGVjdXRpb24uIEFzIGEKICAgICAgICAgLy8gcmVzdWx0LCB0aGUg
Y2FsbGJhY2sgbWF5IGhhdmUgZG9uZSBvbmUgb2YgdGhlIGZvbGxvd2luZzoKQEAgLTIwMSwxMSAr
MTk2LDYgQEAgYm9vbCBXYXRjaGRvZzo6aGFzVGltZUxpbWl0KCkKICAgICByZXR1cm4gKG1fdGlt
ZUxpbWl0ICE9IG5vVGltZUxpbWl0KTsKIH0KIAotdm9pZCBXYXRjaGRvZzo6ZmlyZSgpCi17Ci0g
ICAgbV9kaWRGaXJlID0gdHJ1ZTsKLX0KLQogdm9pZCBXYXRjaGRvZzo6ZW50ZXJlZFZNKCkKIHsK
ICAgICBtX2hhc0VudGVyZWRWTSA9IHRydWU7CkBAIC0yNTMsNCArMjQzLDE0IEBAIHZvaWQgV2F0
Y2hkb2c6OnN0b3BUaW1lcigpCiAgICAgbV9jcHVEZWFkbGluZSA9IG5vVGltZUxpbWl0OwogfQog
Cit2b2lkIFdhdGNoZG9nOjppbnRlcnJ1cHRTY3JpcHQoKQoreworICAgIC8vIEN1cnJlbnRseSwg
dGhlIGJlc3QgdGhhdCB3ZSBjYW4gZG8gdG8gaW50ZXJydXB0IHRoZSBzY3JpcHQgdGhyZWFkIGlz
IHRvIHNpbXVsYXRlIHRoZSB3YXRjaGRvZworICAgIC8vIGZpcmluZyBvbiBpdC4KKyAgICBtX2Nw
dURlYWRsaW5lID0gc3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcygwKTsKKyAgICBtX3dhbGxDbG9j
a0RlYWRsaW5lID0gc3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcygwKTsKKyAgICBXVEY6OnN0b3Jl
U3RvcmVGZW5jZSgpOworICAgIG1fdGltZXJEaWRGaXJlID0gdHJ1ZTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XYXRjaGRvZy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dhdGNoZG9nLmgJ
KHJldmlzaW9uIDE4ODM3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dhdGNo
ZG9nLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDEyICs0Niw4IEBAIHB1YmxpYzoKICAgICB0eXBl
ZGVmIGJvb2wgKCpTaG91bGRUZXJtaW5hdGVDYWxsYmFjaykoRXhlY1N0YXRlKiwgdm9pZCogZGF0
YTEsIHZvaWQqIGRhdGEyKTsKICAgICB2b2lkIHNldFRpbWVMaW1pdChWTSYsIHN0ZDo6Y2hyb25v
OjptaWNyb3NlY29uZHMgbGltaXQsIFNob3VsZFRlcm1pbmF0ZUNhbGxiYWNrID0gMCwgdm9pZCog
ZGF0YTEgPSAwLCB2b2lkKiBkYXRhMiA9IDApOwogCi0gICAgLy8gVGhpcyB2ZXJzaW9uIG9mIGRp
ZEZpcmUoKSB3aWxsIGNoZWNrIHRoZSBlbGFwc2VkIENQVSB0aW1lIGFuZCBjYWxsIHRoZQotICAg
IC8vIGNhbGxiYWNrIChpZiBuZWVkZWQpIHRvIGRldGVybWluZSBpZiB0aGUgd2F0Y2hkb2cgc2hv
dWxkIGZpcmUuCiAgICAgYm9vbCBkaWRGaXJlKEV4ZWNTdGF0ZSogZXhlYykKICAgICB7Ci0gICAg
ICAgIGlmIChtX2RpZEZpcmUpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgaWYg
KCFtX3RpbWVyRGlkRmlyZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcmV0
dXJuIGRpZEZpcmVTbG93KGV4ZWMpOwpAQCAtNjEsMTEgKzU3LDcgQEAgcHVibGljOgogICAgIHZv
aWQgZW50ZXJlZFZNKCk7CiAgICAgdm9pZCBleGl0ZWRWTSgpOwogCi0gICAgLy8gVGhpcyB2ZXJz
aW9uIG9mIGRpZEZpcmUoKSBpcyBhIG1vcmUgZWZmaWNpZW50IHZlcnNpb24gZm9yIHdoZW4gd2Ug
d2FudAotICAgIC8vIHRvIGtub3cgaWYgdGhlIHdhdGNoZG9nIGhhcyBmaXJlZCBpbiB0aGUgcGFz
dCwgYW5kIG5vdCB3aGV0aGVyIGl0IHNob3VsZAotICAgIC8vIGZpcmUgcmlnaHQgbm93LgotICAg
IGJvb2wgZGlkRmlyZSgpIHsgcmV0dXJuIG1fZGlkRmlyZTsgfQotICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZvaWQgZmlyZSgpOworICAgIHZvaWQgaW50ZXJydXB0U2NyaXB0KCk7CiAKICAgICB2b2lk
KiB0aW1lckRpZEZpcmVBZGRyZXNzKCkgeyByZXR1cm4gJm1fdGltZXJEaWRGaXJlOyB9CiAKQEAg
LTg1LDcgKzc3LDYgQEAgcHJpdmF0ZToKICAgICAvLyBOT1RFOiBtX3RpbWVyRGlkRmlyZSBpcyBv
bmx5IHNldCBieSB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgdGltZXIKICAgICAvLyAocHJvYmFibHkg
ZnJvbSBhbm90aGVyIHRocmVhZCkgYnV0IGlzIG9ubHkgY2xlYXJlZCBpbiB0aGUgc2NyaXB0IHRo
cmVhZC4KICAgICBib29sIG1fdGltZXJEaWRGaXJlOwotICAgIGJvb2wgbV9kaWRGaXJlOwogCiAg
ICAgc3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcyBtX3RpbWVMaW1pdDsKIApJbmRleDogU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwkocmV2aXNpb24gMTg4NDA3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTUtMDgtMTMgIE1hcmsgTGFtICA8bWFyay5sYW1A
YXBwbGUuY29tPgorCisgICAgICAgIHdhdGNoZG9nIG1fZGlkRmlyZSBzdGF0ZSBlcnJvbmVvdXNs
eSByZXRhaW5lZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEzMTA4MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0IGhlcmUgYmVjYXVzZToKKyAgICAgICAgMS4gVGhlIGNsZWFyaW5nIG9m
IHRoZSBkaWRGaXJlIHN0YXRlIGlzIHRlc3RlZCBieSBKU0MgQVBJIHRlc3RzLgorICAgICAgICAy
LiBUaGUgY2hhbmdlcyB0byBXb3JrZXJTY3JpcHRDb250cm9sbGVyIHRvIHRyYWNrIGl0cyBvd24g
c3RhdGUgb2Ygd2hldGhlciBpdCBoYXMKKyAgICAgICAgICAgcmVxdWVzdGVkIHNjcmlwdCB0ZXJt
aW5hdGlvbiBvciBub3QsIHJlcXVpcmVzIHRlc3RpbmcgdGhhdCB0aGUgd2ViIHdvcmtlciBkaWQK
KyAgICAgICAgICAgaW4gZmFjdCBnZXQgdGVybWluYXRlZC4gIFRoZXJlJ3Mgbm8gd2F5IHRvIHRl
c3QgZm9yIHRoaXMgd2l0aG91dCBhZGRpbmcgdGVzdAorICAgICAgICAgICBpbnN0cnVtZW50YXRp
b24gdG8gdGhlIGNvZGUuCisKKyAgICAgICAgSSBpbnN0cnVtZW50ZWQgdGhlIGNvZGUgbG9jYWxs
eSB3aXRoIHNvbWUgbG9nZ2luZyBhbmQgbWFudWFsbHkgdmVyaWZpZWQgdGhhdCB3b3JrZXIKKyAg
ICAgICAgdGVybWluYXRpb24gd29ya3MgYXMgZXhwZWN0ZWQgd2hlbiB0aGUgd2F0Y2hkb2cgaXMg
ZW5hYmxlZC4gIFdlYiBXb3JrZXIncyB0ZXJtaW5hdGUoKQorICAgICAgICBkb2Vzbid0IHdvcmsg
aWYgdGhlIEpTQyB3YXRjaGRvZyBpcyBub3QgZW5hYmxlZCwgYnV0IHRoYXQncyBhIHNlcGFyYXRl
IGJ1ZyBub3QgZHVlCisgICAgICAgIHRvIHRoaXMgcGF0Y2g6IGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDc5NjgKKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZl
bnRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0V2ZW50TGlzdGVuZXI6OmhhbmRs
ZUV2ZW50KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdENvbnRyb2xsZXI6OnNjaGVkdWxlRXhlY3V0
aW9uVGVybWluYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxl
cjo6aXNUZXJtaW5hdGluZ0V4ZWN1dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3Jp
cHRDb250cm9sbGVyOjpmb3JiaWRFeGVjdXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
U2NyaXB0Q29udHJvbGxlcjo6aXNFeGVjdXRpb25UZXJtaW5hdGluZyk6IERlbGV0ZWQuCisgICAg
ICAgICogYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5oOgorCiAyMDE1LTA4LTEz
ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEEgZm9j
dXNlZCBub2RlIHNob3VsZCBub3QgYmUgYXNzaXN0ZWQgd2hlbiBoYW5kbGluZyB0b3VjaCBldmVu
dHMgc3luY2hyb25vdXNseQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVu
dExpc3RlbmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0V2ZW50TGlzdGVuZXIuY3BwCShyZXZpc2lvbiAxODgzNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzUsOSAr
MTM1LDEwIEBAIHZvaWQgSlNFdmVudExpc3RlbmVyOjpoYW5kbGVFdmVudChTY3JpcHQKICAgICAg
ICAgZ2xvYmFsT2JqZWN0LT5zZXRDdXJyZW50RXZlbnQoc2F2ZWRFdmVudCk7CiAKICAgICAgICAg
aWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkpIHsKKyAg
ICAgICAgICAgIGF1dG8gc2NyaXB0Q29udHJvbGxlciA9IGRvd25jYXN0PFdvcmtlckdsb2JhbFNj
b3BlPigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkuc2NyaXB0KCk7CiAgICAgICAgICAgICBib29s
IHRlcm1pbmF0b3JDYXVzZWRFeGNlcHRpb24gPSAoZXhlYy0+aGFkRXhjZXB0aW9uKCkgJiYgaXNU
ZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKGV4ZWMtPmV4Y2VwdGlvbigpKSk7Ci0gICAgICAg
ICAgICBpZiAodGVybWluYXRvckNhdXNlZEV4Y2VwdGlvbiB8fCAodm0ud2F0Y2hkb2cgJiYgdm0u
d2F0Y2hkb2ctPmRpZEZpcmUoKSkpCi0gICAgICAgICAgICAgICAgZG93bmNhc3Q8V29ya2VyR2xv
YmFsU2NvcGU+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KS5zY3JpcHQoKS0+Zm9yYmlkRXhlY3V0
aW9uKCk7CisgICAgICAgICAgICBpZiAodGVybWluYXRvckNhdXNlZEV4Y2VwdGlvbiB8fCBzY3Jp
cHRDb250cm9sbGVyLT5pc1Rlcm1pbmF0aW5nRXhlY3V0aW9uKCkpCisgICAgICAgICAgICAgICAg
c2NyaXB0Q29udHJvbGxlci0+Zm9yYmlkRXhlY3V0aW9uKCk7CiAgICAgICAgIH0KIAogICAgICAg
ICBpZiAoZXhjZXB0aW9uKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3Jr
ZXJTY3JpcHRDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMTg4Mzc1KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEyMSw4ICsxMjEsNyBAQCB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xs
ZXI6OmV2YWx1YXRlKGNvCiAgICAgSlNDOjpldmFsdWF0ZShleGVjLCBzb3VyY2VDb2RlLmpzU291
cmNlQ29kZSgpLCBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci0+Z2xvYmFsVGhpcygpLCByZXR1
cm5lZEV4Y2VwdGlvbik7CiAKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIGlmICgocmV0
dXJuZWRFeGNlcHRpb24gJiYgaXNUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKHJldHVybmVk
RXhjZXB0aW9uKSkKLSAgICAgICAgfHwgKHZtLndhdGNoZG9nICYmIHZtLndhdGNoZG9nLT5kaWRG
aXJlKCkpKSB7CisgICAgaWYgKChyZXR1cm5lZEV4Y2VwdGlvbiAmJiBpc1Rlcm1pbmF0ZWRFeGVj
dXRpb25FeGNlcHRpb24ocmV0dXJuZWRFeGNlcHRpb24pKSB8fCBpc1Rlcm1pbmF0aW5nRXhlY3V0
aW9uKCkpIHsKICAgICAgICAgZm9yYmlkRXhlY3V0aW9uKCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CkBAIC0xNDksMjAgKzE0OCwxOCBAQCB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OnNl
dEV4Y2VwdGlvCiB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OnNjaGVkdWxlRXhlY3V0aW9u
VGVybWluYXRpb24oKQogewogICAgIC8vIFRoZSBtdXRleCBwcm92aWRlcyBhIG1lbW9yeSBiYXJy
aWVyIHRvIGVuc3VyZSB0aGF0IG9uY2UKLSAgICAvLyB0ZXJtaW5hdGlvbiBpcyBzY2hlZHVsZWQs
IGlzRXhlY3V0aW9uVGVybWluYXRpbmcgd2lsbAorICAgIC8vIHRlcm1pbmF0aW9uIGlzIHNjaGVk
dWxlZCwgaXNUZXJtaW5hdGluZ0V4ZWN1dGlvbigpIHdpbGwKICAgICAvLyBhY2N1cmF0ZWx5IHJl
ZmxlY3QgdGhhdCBzdGF0ZSB3aGVuIGNhbGxlZCBmcm9tIGFub3RoZXIgdGhyZWFkLgogICAgIE11
dGV4TG9ja2VyIGxvY2tlcihtX3NjaGVkdWxlZFRlcm1pbmF0aW9uTXV0ZXgpOwotICAgIGlmICht
X3ZtLT53YXRjaGRvZykKLSAgICAgICAgbV92bS0+d2F0Y2hkb2ctPmZpcmUoKTsKKyAgICBtX2lz
VGVybWluYXRpbmdFeGVjdXRpb24gPSB0cnVlOworICAgIG1fdm0tPnNjaGVkdWxlVGVybWluYXRp
b24oKTsKIH0KIAotYm9vbCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjppc0V4ZWN1dGlvblRlcm1p
bmF0aW5nKCkgY29uc3QKK2Jvb2wgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6aXNUZXJtaW5hdGlu
Z0V4ZWN1dGlvbigpIGNvbnN0CiB7CiAgICAgLy8gU2VlIGNvbW1lbnRzIGluIHNjaGVkdWxlRXhl
Y3V0aW9uVGVybWluYXRpb24gcmVnYXJkaW5nIG11dGV4IHVzYWdlLgogICAgIE11dGV4TG9ja2Vy
IGxvY2tlcihtX3NjaGVkdWxlZFRlcm1pbmF0aW9uTXV0ZXgpOwotICAgIGlmIChtX3ZtLT53YXRj
aGRvZykKLSAgICAgICAgcmV0dXJuIG1fdm0tPndhdGNoZG9nLT5kaWRGaXJlKCk7Ci0gICAgcmV0
dXJuIGZhbHNlOworICAgIHJldHVybiBtX2lzVGVybWluYXRpbmdFeGVjdXRpb247CiB9CiAKIHZv
aWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6Zm9yYmlkRXhlY3V0aW9uKCkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmgJ
KHJldmlzaW9uIDE4ODM3NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNj
cmlwdENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNzEsNyArNzEsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIGZvcmJpZEV4ZWN1dGlvbigpL2lzRXhlY3V0aW9uRm9y
YmlkZGVuKCkgdG8gZ3VhcmQgYWdhaW5zdCByZWVudHJ5IGludG8gSlMuCiAgICAgICAgIC8vIENh
biBiZSBjYWxsZWQgZnJvbSBhbnkgdGhyZWFkLgogICAgICAgICB2b2lkIHNjaGVkdWxlRXhlY3V0
aW9uVGVybWluYXRpb24oKTsKLSAgICAgICAgYm9vbCBpc0V4ZWN1dGlvblRlcm1pbmF0aW5nKCkg
Y29uc3Q7CisgICAgICAgIGJvb2wgaXNUZXJtaW5hdGluZ0V4ZWN1dGlvbigpIGNvbnN0OwogCiAg
ICAgICAgIC8vIENhbGxlZCBvbiBXb3JrZXIgdGhyZWFkIHdoZW4gSlMgZXhpdHMgd2l0aCB0ZXJt
aW5hdGlvbiBleGNlcHRpb24gY2F1c2VkIGJ5IGZvcmJpZEV4ZWN1dGlvbigpIHJlcXVlc3QsCiAg
ICAgICAgIC8vIG9yIGJ5IFdvcmtlciB0aHJlYWQgdGVybWluYXRpb24gY29kZSB0byBwcmV2ZW50
IGZ1dHVyZSBlbnRyeSBpbnRvIEpTLgpAQCAtOTcsNiArOTcsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIFdvcmtlckdsb2JhbFNjb3BlKiBtX3dvcmtlckdsb2JhbFNjb3BlOwogICAg
ICAgICBKU0M6OlN0cm9uZzxKU1dvcmtlckdsb2JhbFNjb3BlPiBtX3dvcmtlckdsb2JhbFNjb3Bl
V3JhcHBlcjsKICAgICAgICAgYm9vbCBtX2V4ZWN1dGlvbkZvcmJpZGRlbjsKKyAgICAgICAgYm9v
bCBtX2lzVGVybWluYXRpbmdFeGVjdXRpb24geyBmYWxzZSB9OwogICAgICAgICBtdXRhYmxlIE11
dGV4IG1fc2NoZWR1bGVkVGVybWluYXRpb25NdXRleDsKICAgICB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259054</attachid>
            <date>2015-08-14 16:10:00 -0700</date>
            <delta_ts>2015-08-18 16:41:58 -0700</delta_ts>
            <desc>fix 4: nearly there.</desc>
            <filename>bug-131082.patch</filename>
            <type>text/plain</type>
            <size>29315</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg4NDgxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc2IEBA
CisyMDE1LTA4LTE0ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICB3
YXRjaGRvZyBtX2RpZEZpcmUgc3RhdGUgZXJyb25lb3VzbHkgcmV0YWluZWQuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzEwODIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgd2F0Y2hkb2cgY2FuIGZp
cmUgZm9yIDIgcmVhc29uczoKKyAgICAgICAgMS4gYW4gZXh0ZXJuYWwgY29udHJvbGxpbmcgZW50
aXR5IChpLmUuIGFub3RoZXIgdGhyZWFkKSBoYXMgc2NoZWR1bGVkIHRlcm1pbmF0aW9uCisgICAg
ICAgICAgIG9mIHRoZSBzY3JpcHQgdGhyZWFkIHZpYSB3YXRjaGRvZzo6ZmlyZU1hbnVhbGx5KCku
CisgICAgICAgIDIuIHRoZSBhbGxvd2VkIENQVSB0aW1lIGhhcyBleHBpcmVkLgorCisgICAgICAg
IEZvciBjYXNlIDEsIHdlJ3JlIGRvaW5nIGF3YXkgd2l0aCB0aGUgbV9kaWRGaXJlIGZsYWcuICBX
YXRjaGRvZzo6ZmlyZU1hbnVhbGx5KCkgCisgICAgICAgIHdpbGwgc2V0IG1fdGltZUxpbWl0IHRv
IDAuICBBIHRpbWUgbGltaXQgb2YgMCBpcyByZXNlcnZlZCB0byBtZWFuIHRoYXQgdGVybWluYXRp
b24KKyAgICAgICAgaGFzIGJlZW4gc2NoZWR1bGVkIGJ5IGFuIGV4dGVybmFsIGNvbnRyb2xsaW5n
IGVudGl0eS4gIE9uY2UgbV90aW1lTGltaXQgaXMgc2V0IHRvCisgICAgICAgIDAsIGl0IHdpbGwg
cmVtYWluIHRoZXJlIGkuZS4gdGhpcyBzdGF0ZSBpcyBzdGlja3kuCisKKyAgICAgICAgV2F0Y2hk
b2c6OmZpcmVNYW51YWxseSgpIHdpbGwgYWxzbyBzaW11bGF0ZSBhIHRpbWVyIGZpcmluZyBldmVu
dCBieSBzZXR0aW5nCisgICAgICAgIG1fdGltZXJEaWRGaXJlLiAgVGhpcyB3aWxsIGdldCB0aGUg
c2NyaXB0IHRocmVhZCB0byBjaGVjayBXYXRjaGRvZzo6ZGlkRmlyZSgpIGFuZAorICAgICAgICB0
ZXJtaW5hdGUgZXhlY3V0aW9uLgorCisgICAgICAgIE5vdGU6IHRoZSB3YXRjaGRvZyBvbmx5IGd1
YXJhbnRlZXMgdGhhdCBzY3JpcHQgZXhlY3V0aW9uIHdpbGwgdGVybWluYXRlIGFzIHNvb24KKyAg
ICAgICAgYXMgcG9zc2libGUgZHVlIHRvIGEgdGltZSBsaW1pdCBvZiAwLiAgT25jZSB3ZSd2ZSBl
eGl0ZWQgdGhlIFZNLCB0aGUgY2xpZW50IG9mIHRoZQorICAgICAgICBWTSBpcyByZXNwb25zaWJs
ZSBmcm9tIGtlZXBpbmcgYSBmbGFnIHRvIHByZXZlbnQgbmV3IHNjcmlwdCBleGVjdXRpb24uCisK
KyAgICAgICAgSW4gYSByYWNlIGNvbmRpdGlvbiwgaWYgZmlyZU1hbnVhbGx5KCkgaXMgY2FsbGVk
IGp1c3QgYWZ0ZXIgZXhlY3V0aW9uIGhhcyBnb3R0ZW4KKyAgICAgICAgcGFzdCB0aGUgY2xpZW50
J3MgcmVlbnRyeSBjaGVjayBhbmQgdGhlIGNsaWVudCBpcyBpbiB0aGUgcHJvY2VzcyBvZiByZS1l
bnRlcmluZywKKyAgICAgICAgdGhlIHdvcnN0IHRoYXQgY2FuIGhhcHBlbiBpcyB0aGF0IHdlIHdp
bGwgc2NoZWR1bGUgdGhlIHdhdGNoZG9nIHRpbWVyIHRvIGZpcmUKKyAgICAgICAgYWZ0ZXIgYSBw
ZXJpb2Qgb2YgMC4gIFRoaXMgd2lsbCB0ZXJtaW5hdGUgc2NyaXB0IGV4ZWN1dGlvbiBxdWlja2x5
LCBhbmQgdGhlcmVhZnRlcgorICAgICAgICB0aGUgY2xpZW50J3MgY2hlY2sgc2hvdWxkIGJlIGFi
bGUgdG8gcHJldmVudCBmdXJ0aGVyIGVudHJ5IGludG8gdGhlIFZNLgorCisgICAgICAgIEZvciBj
YXNlIDIsIHRoZSB3YXRjaGRvZyBkb2VzIG5vdCBhbHRlciBtX3RpbWVMaW1pdC4gIElmIHRoZSBD
UFUgZGVhZGxpbmUgaGFzCisgICAgICAgIGJlZW4gcmVhY2hlZCwgdGhlIHNjcmlwdCB0aHJlYWQg
d2lsbCB0ZXJtaW5hdGUgZXhlY3V0aW9uIGFuZCBleGl0IHRoZSBWTS4KKworICAgICAgICBJZiB0
aGUgY2xpZW50IG9mIHRoZSBWTSBzdGFydHMgbmV3IHNjcmlwdCBleGVjdXRpb24sIHRoZSB3YXRj
aGRvZyB3aWxsIGFsbG93CisgICAgICAgIGV4ZWN1dGlvbiBmb3IgdGhlIHNwZWNpZmllZCBtX3Rp
bWVMaW1pdC4gIEluIHRoaXMgY2FzZSwgc2luY2UgbV90aW1lTGltaXQgaXMgbm90CisgICAgICAg
IDAsIHRoZSBzY3JpcHQgZ2V0cyBhIGZyZXNoIGFsbG93YW5jZSBvZiBDUFUgdGltZSB0byBleGVj
dXRlLiAgSGVuY2UsIHRlcm1pbmF0aW9ucworICAgICAgICBkdWUgdG8gd2F0Y2hkb2cgdGltZSBv
dXRzIGFyZSBubyBsb25nZXIgc3RpY2t5LgorCisgICAgICAgICogQVBJL3Rlc3RzL0V4ZWN1dGlv
blRpbWVMaW1pdFRlc3QuY3BwOgorICAgICAgICAoZXh0ZW5kVGVybWluYXRlQ2FsbGJhY2spOgor
ICAgICAgICAodGVzdFJlc2V0QWZ0ZXJUaW1lb3V0KToKKyAgICAgICAgKHRlc3RFeGVjdXRpb25U
aW1lTGltaXQpOgorICAgICAgICAtIEFkZCB0ZXN0IHNjZW5hcmlvcyB0byB2ZXJpZnkgdGhhdCB0
aGUgd2F0Y2hkb2cgaXMgYXV0b21hdGljYWxseSByZXNldCBieSB0aGUgVk0KKyAgICAgICAgICB1
cG9uIHRocm93aW5nIHRoZSBUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uLgorCisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAg
ICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJz
OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpJbnRl
cnByZXRlcjo6ZXhlY3V0ZSk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpleGVjdXRlQ2Fs
bCk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpleGVjdXRlQ29uc3RydWN0KToKKyAgICAg
ICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0
aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAg
ICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKiBydW50aW1lL1ZNSW5saW5lcy5oOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6Vk06OnNob3VsZFRyaWdnZXJUZXJtaW5hdGlvbik6CisgICAgICAg
ICogcnVudGltZS9XYXRjaGRvZy5jcHA6CisgICAgICAgIChKU0M6OldhdGNoZG9nOjpXYXRjaGRv
Zyk6CisgICAgICAgIChKU0M6OldhdGNoZG9nOjpoYXNTdGFydGVkVGltZXIpOgorICAgICAgICAo
SlNDOjpXYXRjaGRvZzo6aGFzU2NoZWR1bGVkVGVybWluYXRpb24pOgorICAgICAgICAoSlNDOjpX
YXRjaGRvZzo6c2V0VGltZUxpbWl0KToKKyAgICAgICAgKEpTQzo6V2F0Y2hkb2c6OmRpZEZpcmVT
bG93KToKKyAgICAgICAgKEpTQzo6V2F0Y2hkb2c6OmZpcmUpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpXYXRjaGRvZzo6ZmlyZU1hbnVhbGx5KToKKyAgICAgICAgKEpTQzo6V2F0Y2hkb2c6OmVu
dGVyZWRWTSk6CisgICAgICAgIChKU0M6OldhdGNoZG9nOjpzdGFydFRpbWVyKToKKyAgICAgICAg
KiBydW50aW1lL1dhdGNoZG9nLmg6CisgICAgICAgIChKU0M6OldhdGNoZG9nOjpkaWRGaXJlKToK
KyAgICAgICAgKEpTQzo6V2F0Y2hkb2c6OnRpbWVyRGlkRmlyZUFkZHJlc3MpOgorCiAyMDE1LTA4
LTE0ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBV
bnJldmlld2VkLCByb2xsaW5nIG91dCByMTg4NDQ0LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS90ZXN0cy9FeGVjdXRpb25UaW1lTGltaXRUZXN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0V4ZWN1dGlvblRpbWVMaW1pdFRlc3QuY3Bw
CShyZXZpc2lvbiAxODg0ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0V4
ZWN1dGlvblRpbWVMaW1pdFRlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSw2ICs3OSwyMiBA
QCBzdGF0aWMgYm9vbCBleHRlbmRUZXJtaW5hdGVDYWxsYmFjayhKU0NvCiB9CiAKIAorc3RhdGlj
IHZvaWQgdGVzdFJlc2V0QWZ0ZXJUaW1lb3V0KGJvb2wmIGZhaWxlZCkKK3sKKyAgICBKU1ZhbHVl
UmVmIHYgPSBudWxscHRyOworICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gbnVsbHB0cjsKKyAg
ICBjb25zdCBjaGFyKiByZWVudHJ5U2NyaXB0ID0gIjEwMCI7CisgICAgSlNTdHJpbmdSZWYgc2Ny
aXB0ID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcocmVlbnRyeVNjcmlwdCk7CisgICAg
diA9IEpTRXZhbHVhdGVTY3JpcHQoY29udGV4dCwgc2NyaXB0LCBudWxscHRyLCBudWxscHRyLCAx
LCAmZXhjZXB0aW9uKTsKKyAgICBpZiAoZXhjZXB0aW9uKSB7CisgICAgICAgIHByaW50ZigiRkFJ
TDogV2F0Y2hkb2cgdGltZW91dCB3YXMgbm90IHJlc2V0LlxuIik7CisgICAgICAgIGZhaWxlZCA9
IHRydWU7CisgICAgfSBlbHNlIGlmICghSlNWYWx1ZUlzTnVtYmVyKGNvbnRleHQsIHYpIHx8IEpT
VmFsdWVUb051bWJlcihjb250ZXh0LCB2LCBudWxscHRyKSAhPSAxMDApIHsKKyAgICAgICAgcHJp
bnRmKCJGQUlMOiBTY3JpcHQgcmVzdWx0IGlzIG5vdCBhcyBleHBlY3RlZC5cbiIpOworICAgICAg
ICBmYWlsZWQgPSB0cnVlOworICAgIH0KK30KKwogaW50IHRlc3RFeGVjdXRpb25UaW1lTGltaXQo
KQogewogICAgIGNvbnRleHQgPSBKU0dsb2JhbENvbnRleHRDcmVhdGVJbkdyb3VwKG51bGxwdHIs
IG51bGxwdHIpOwpAQCAtMTIxLDYgKzEzNyw4IEBAIGludCB0ZXN0RXhlY3V0aW9uVGltZUxpbWl0
KCkKICAgICAgICAgICAgIHByaW50ZigiRkFJTDogVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlv
biB3YXMgbm90IHRocm93bi5cbiIpOwogICAgICAgICAgICAgZmFpbGVkID0gdHJ1ZTsKICAgICAg
ICAgfQorCisgICAgICAgIHRlc3RSZXNldEFmdGVyVGltZW91dChmYWlsZWQpOwogICAgIH0KICAg
ICAKICAgICAvKiBUZXN0IHRoZSBzY3JpcHQgdGltZW91dCdzIFRlcm1pbmF0ZWRFeGVjdXRpb25F
eGNlcHRpb24gc2hvdWxkIE5PVCBiZSBjYXRjaGFibGU6ICovCkBAIC0xNDgsNiArMTY2LDggQEAg
aW50IHRlc3RFeGVjdXRpb25UaW1lTGltaXQoKQogICAgICAgICAgICAgcHJpbnRmKCJGQUlMOiBU
ZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uIHdhcyBjYXVnaHQuXG4iKTsKICAgICAgICAgICAg
IGZhaWxlZCA9IHRydWU7CiAgICAgICAgIH0KKworICAgICAgICB0ZXN0UmVzZXRBZnRlclRpbWVv
dXQoZmFpbGVkKTsKICAgICB9CiAgICAgCiAgICAgLyogVGVzdCBzY3JpcHQgdGltZW91dCB3aXRo
IG5vIGNhbGxiYWNrOiAqLwpAQCAtMTcyLDYgKzE5Miw4IEBAIGludCB0ZXN0RXhlY3V0aW9uVGlt
ZUxpbWl0KCkKICAgICAgICAgICAgIHByaW50ZigiRkFJTDogVGVybWluYXRlZEV4ZWN1dGlvbkV4
Y2VwdGlvbiB3YXMgbm90IHRocm93bi5cbiIpOwogICAgICAgICAgICAgZmFpbGVkID0gdHJ1ZTsK
ICAgICAgICAgfQorCisgICAgICAgIHRlc3RSZXNldEFmdGVyVGltZW91dChmYWlsZWQpOwogICAg
IH0KICAgICAKICAgICAvKiBUZXN0IHNjcmlwdCB0aW1lb3V0IGNhbmNlbGxhdGlvbjogKi8KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagkocmV2aXNpb24gMTg4NDgx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNj
cmlwdENvcmUudmN4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTc0Nyw2ICsxNzQ3LDcgQEAKICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcVWludDMyQXJyYXkuaCIgLz4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcVWludDhBcnJheS5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxWTS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxWTUlubGluZXMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcVk1FbnRyeVNjb3BlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxy
dW50aW1lXFZhck9mZnNldC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxXYXRjaGRvZy5oIiAvPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRD
b3JlLnZjeHByb2ouZmlsdGVycwkocmV2aXNpb24gMTg4NDgxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0
ZXJzCSh3b3JraW5nIGNvcHkpCkBAIC0zMjM0LDYgKzMyMzQsOSBAQAogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccnVudGltZVxWTS5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVy
PgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxW
TUlubGluZXMuaCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsSW5j
bHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcVk1FbnRyeVNjb3BlLmgi
PgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTg4NDgxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHdvcmtpbmcgY29weSkKQEAgLTM1ODcsNiArMzU4Nyw3IEBACiAJCUZFNTkzMkE2MTgzQzVBMjYw
MEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVk1FbnRyeVNjb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFN0JBNjBE
MUExQTdDRUMwMEYxRjdCNCAvKiBIZWFwVmVyaWZpZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSGVhcFZlcmlmaWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRkU3QkE2MEUxQTFBN0NFQzAwRjFGN0I0IC8qIEhlYXBWZXJpZmllci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIZWFwVmVyaWZpZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRkU5MEJCM0ExQjdDRjY0RTAwNkIzRjAzIC8qIFZNSW5saW5lcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWTUlubGluZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVBMDg2MUUxODJCN0EwNDAwRjZEODUxIC8qIEJyZWFrcG9p
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnJlYWtwb2ludC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRUEwODYxRjE4MkI3QTA0MDBGNkQ4NTEgLyogRGVi
dWdnZXJQcmltaXRpdmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlYnVn
Z2VyUHJpbWl0aXZlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRUI1MUY2QTFB
OTdCNjg4MDAxRjkyMUMgLyogUmVncmVzczE0MTgwOS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBSZWdyZXNzMTQxODA5Lmg7IHBhdGggPSBBUEkvdGVzdHMvUmVncmVzczE0MTgw
OS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDkyOSw2ICs0OTMwLDcgQEAKIAkJ
CQkwRkUwNTAyNDFBQTkwOTU2MDBEMzNCMzMgLyogVmFyT2Zmc2V0LmggKi8sCiAJCQkJRTE4RTNB
NTcwREY5Mjc4QzAwRDkwQjM0IC8qIFZNLmNwcCAqLywKIAkJCQlFMThFM0E1NjBERjkyNzhDMDBE
OTBCMzQgLyogVk0uaCAqLywKKwkJCQlGRTkwQkIzQTFCN0NGNjRFMDA2QjNGMDMgLyogVk1Jbmxp
bmVzLmggKi8sCiAJCQkJRkU1OTMyQTUxODNDNUEyNjAwQTFFQ0NDIC8qIFZNRW50cnlTY29wZS5j
cHAgKi8sCiAJCQkJRkU1OTMyQTYxODNDNUEyNjAwQTFFQ0NDIC8qIFZNRW50cnlTY29wZS5oICov
LAogCQkJCUZFRDk0RjJCMTcxRTNFMjMwMEJFNzdBNCAvKiBXYXRjaGRvZy5jcHAgKi8sCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5j
cHAJKHJldmlzaW9uIDE4ODQ4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDggKzcwLDggQEAKICNpbmNs
dWRlICJTdHJvbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3ltYm9sLmgiCiAjaW5jbHVkZSAiVk1F
bnRyeVNjb3BlLmgiCisjaW5jbHVkZSAiVk1JbmxpbmVzLmgiCiAjaW5jbHVkZSAiVmlydHVhbFJl
Z2lzdGVyLmgiCi0jaW5jbHVkZSAiV2F0Y2hkb2cuaCIKIAogI2luY2x1ZGUgPGxpbWl0cy5oPgog
I2luY2x1ZGUgPHN0ZGlvLmg+CkBAIC04NjYsNyArODY2LDcgQEAgZmFpbGVkSlNPTlA6CiAKICAg
ICBQcm9ncmFtQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBwcm9ncmFtLT5jb2RlQmxvY2soKTsKIAot
ICAgIGlmIChVTkxJS0VMWSh2bS53YXRjaGRvZyAmJiB2bS53YXRjaGRvZy0+ZGlkRmlyZShjYWxs
RnJhbWUpKSkKKyAgICBpZiAoVU5MSUtFTFkodm0uc2hvdWxkVHJpZ2dlclRlcm1pbmF0aW9uKGNh
bGxGcmFtZSkpKQogICAgICAgICByZXR1cm4gdGhyb3dUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0
aW9uKGNhbGxGcmFtZSk7CiAKICAgICBBU1NFUlQoY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkg
PT0gMSk7IC8vIDEgcGFyYW1ldGVyIGZvciAndGhpcycuCkBAIC05MjksNyArOTI5LDcgQEAgSlNW
YWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNhbGwoQ2FsbEZyYQogICAgIH0gZWxzZQogICAgICAg
ICBuZXdDb2RlQmxvY2sgPSAwOwogCi0gICAgaWYgKFVOTElLRUxZKHZtLndhdGNoZG9nICYmIHZt
LndhdGNoZG9nLT5kaWRGaXJlKGNhbGxGcmFtZSkpKQorICAgIGlmIChVTkxJS0VMWSh2bS5zaG91
bGRUcmlnZ2VyVGVybWluYXRpb24oY2FsbEZyYW1lKSkpCiAgICAgICAgIHJldHVybiB0aHJvd1Rl
cm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oY2FsbEZyYW1lKTsKIAogICAgIFByb3RvQ2FsbEZy
YW1lIHByb3RvQ2FsbEZyYW1lOwpAQCAtOTk5LDcgKzk5OSw3IEBAIEpTT2JqZWN0KiBJbnRlcnBy
ZXRlcjo6ZXhlY3V0ZUNvbnN0cnVjdCgKICAgICB9IGVsc2UKICAgICAgICAgbmV3Q29kZUJsb2Nr
ID0gMDsKIAotICAgIGlmIChVTkxJS0VMWSh2bS53YXRjaGRvZyAmJiB2bS53YXRjaGRvZy0+ZGlk
RmlyZShjYWxsRnJhbWUpKSkKKyAgICBpZiAoVU5MSUtFTFkodm0uc2hvdWxkVHJpZ2dlclRlcm1p
bmF0aW9uKGNhbGxGcmFtZSkpKQogICAgICAgICByZXR1cm4gdGhyb3dUZXJtaW5hdGVkRXhlY3V0
aW9uRXhjZXB0aW9uKGNhbGxGcmFtZSk7CiAKICAgICBQcm90b0NhbGxGcmFtZSBwcm90b0NhbGxG
cmFtZTsKQEAgLTEwNzIsNyArMTA3Miw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUo
Q2FsbEZyYW1lQ2wKICAgICBpZiAoTGVnYWN5UHJvZmlsZXIqIHByb2ZpbGVyID0gdm0uZW5hYmxl
ZFByb2ZpbGVyKCkpCiAgICAgICAgIHByb2ZpbGVyLT53aWxsRXhlY3V0ZShjbG9zdXJlLm9sZENh
bGxGcmFtZSwgY2xvc3VyZS5mdW5jdGlvbik7CiAKLSAgICBpZiAoVU5MSUtFTFkodm0ud2F0Y2hk
b2cgJiYgdm0ud2F0Y2hkb2ctPmRpZEZpcmUoY2xvc3VyZS5vbGRDYWxsRnJhbWUpKSkKKyAgICBp
ZiAoVU5MSUtFTFkodm0uc2hvdWxkVHJpZ2dlclRlcm1pbmF0aW9uKGNsb3N1cmUub2xkQ2FsbEZy
YW1lKSkpCiAgICAgICAgIHJldHVybiB0aHJvd1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24o
Y2xvc3VyZS5vbGRDYWxsRnJhbWUpOwogCiAgICAgLy8gRXhlY3V0ZSB0aGUgY29kZToKQEAgLTEx
NTMsNyArMTE1Myw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGEK
ICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChVTkxJS0VMWSh2bS53YXRjaGRvZyAmJiB2bS53
YXRjaGRvZy0+ZGlkRmlyZShjYWxsRnJhbWUpKSkKKyAgICBpZiAoVU5MSUtFTFkodm0uc2hvdWxk
VHJpZ2dlclRlcm1pbmF0aW9uKGNhbGxGcmFtZSkpKQogICAgICAgICByZXR1cm4gdGhyb3dUZXJt
aW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKGNhbGxGcmFtZSk7CiAKICAgICBBU1NFUlQoY29kZUJs
b2NrLT5udW1QYXJhbWV0ZXJzKCkgPT0gMSk7IC8vIDEgcGFyYW1ldGVyIGZvciAndGhpcycuCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHJldmlz
aW9uIDE4ODQ4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTU3LDcgKzU3LDcgQEAKICNpbmNsdWRlICJTY29wZWRBcmd1
bWVudHMuaCIKICNpbmNsdWRlICJUZXN0UnVubmVyVXRpbHMuaCIKICNpbmNsdWRlICJUeXBlUHJv
ZmlsZXJMb2cuaCIKLSNpbmNsdWRlICJXYXRjaGRvZy5oIgorI2luY2x1ZGUgIlZNSW5saW5lcy5o
IgogI2luY2x1ZGUgPHd0Zi9JbmxpbmVBU00uaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC05Njgs
NyArOTY4LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkhhbmRsZVdhdGNoZAogICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigm
dm0sIGV4ZWMpOwogCi0gICAgaWYgKFVOTElLRUxZKHZtLndhdGNoZG9nICYmIHZtLndhdGNoZG9n
LT5kaWRGaXJlKGV4ZWMpKSkKKyAgICBpZiAoVU5MSUtFTFkodm0uc2hvdWxkVHJpZ2dlclRlcm1p
bmF0aW9uKGV4ZWMpKSkKICAgICAgICAgdm0udGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVGVy
bWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbigmdm0pKTsKIH0KIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lvbiAxODg0ODEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01Myw3ICs1Myw3IEBACiAjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3Iu
aCIKICNpbmNsdWRlICJQcm90b0NhbGxGcmFtZS5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVJhcmVE
YXRhSW5saW5lcy5oIgotI2luY2x1ZGUgIldhdGNoZG9nLmgiCisjaW5jbHVkZSAiVk1JbmxpbmVz
LmgiCiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CiAKIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgTExJbnQgewpAQCAtMTI4Niw3ICsxMjg2LDcgQEAgTExJTlRfU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX2hhbmRsZV93YQogewogICAgIExMSU5UX0JFR0lOX05PX1NFVF9QQygp
OwogICAgIEFTU0VSVCh2bS53YXRjaGRvZyk7Ci0gICAgaWYgKFVOTElLRUxZKHZtLndhdGNoZG9n
LT5kaWRGaXJlKGV4ZWMpKSkKKyAgICBpZiAoVU5MSUtFTFkodm0uc2hvdWxkVHJpZ2dlclRlcm1p
bmF0aW9uKGV4ZWMpKSkKICAgICAgICAgTExJTlRfVEhST1coY3JlYXRlVGVybWluYXRlZEV4ZWN1
dGlvbkV4Y2VwdGlvbigmdm0pKTsKICAgICBMTElOVF9SRVRVUk5fVFdPKDAsIGV4ZWMpOwogfQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCShyZXZpc2lvbiAxODg0ODEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NTgs
NiArNTU4LDggQEAgcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcXVldWVNaWNy
b3Rhc2soSlNHbG9iYWxPYmplY3QqLCBQYXNzUmVmUHRyPE1pY3JvdGFzaz4pOwogICAgIEpTX0VY
UE9SVF9QUklWQVRFIHZvaWQgZHJhaW5NaWNyb3Rhc2tzKCk7CiAKKyAgICBpbmxpbmUgYm9vbCBz
aG91bGRUcmlnZ2VyVGVybWluYXRpb24oRXhlY1N0YXRlKik7CisKIHByaXZhdGU6CiAgICAgZnJp
ZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBmcmllbmQgY2xhc3MgQ2xlYXJF
eGNlcHRpb25TY29wZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNSW5s
aW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNSW5s
aW5lcy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1J
bmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVk1JbmxpbmVzX2gKKyNkZWZp
bmUgVk1JbmxpbmVzX2gKKworI2luY2x1ZGUgIlZNLmgiCisjaW5jbHVkZSAiV2F0Y2hkb2cuaCIK
KworbmFtZXNwYWNlIEpTQyB7CisgICAgCitib29sIFZNOjpzaG91bGRUcmlnZ2VyVGVybWluYXRp
b24oRXhlY1N0YXRlKiBleGVjKQoreworICAgIGlmICghd2F0Y2hkb2cpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICByZXR1cm4gd2F0Y2hkb2ctPmRpZEZpcmUoZXhlYyk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gTExJbnREYXRhX2gKKwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvV2F0Y2hkb2cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1dhdGNoZG9nLmNwcAkocmV2aXNpb24gMTg4NDgxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2F0Y2hkb2cuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00Miw3ICs0Miw2IEBAIHN0YXRpYyBzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzIGN1cnJl
bnQKIAogV2F0Y2hkb2c6OldhdGNoZG9nKCkKICAgICA6IG1fdGltZXJEaWRGaXJlKGZhbHNlKQot
ICAgICwgbV9kaWRGaXJlKGZhbHNlKQogICAgICwgbV90aW1lTGltaXQobm9UaW1lTGltaXQpCiAg
ICAgLCBtX2NwdURlYWRsaW5lKG5vVGltZUxpbWl0KQogICAgICwgbV93YWxsQ2xvY2tEZWFkbGlu
ZShub1RpbWVMaW1pdCkKQEAgLTYyLDEyICs2MSwxNyBAQCBpbmxpbmUgYm9vbCBXYXRjaGRvZzo6
aGFzU3RhcnRlZFRpbWVyKCkKICAgICByZXR1cm4gbV9jcHVEZWFkbGluZSAhPSBub1RpbWVMaW1p
dDsKIH0KIAoraW5saW5lIGJvb2wgV2F0Y2hkb2c6Omhhc1NjaGVkdWxlZFRlcm1pbmF0aW9uKCkK
K3sKKyAgICByZXR1cm4gbV90aW1lTGltaXQgPT0gc3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcygw
KTsKK30KKwogdm9pZCBXYXRjaGRvZzo6c2V0VGltZUxpbWl0KFZNJiB2bSwgc3RkOjpjaHJvbm86
Om1pY3Jvc2Vjb25kcyBsaW1pdCwKICAgICBTaG91bGRUZXJtaW5hdGVDYWxsYmFjayBjYWxsYmFj
aywgdm9pZCogZGF0YTEsIHZvaWQqIGRhdGEyKQogewotICAgIGJvb2wgaGFkVGltZUxpbWl0ID0g
aGFzVGltZUxpbWl0KCk7CisgICAgQVNTRVJUKCFoYXNTY2hlZHVsZWRUZXJtaW5hdGlvbigpKTsK
IAotICAgIG1fZGlkRmlyZSA9IGZhbHNlOyAvLyBSZXNldCB0aGUgd2F0Y2hkb2cuCisgICAgYm9v
bCBoYWRUaW1lTGltaXQgPSBoYXNUaW1lTGltaXQoKTsKIAogICAgIG1fdGltZUxpbWl0ID0gbGlt
aXQ7CiAgICAgbV9jYWxsYmFjayA9IGNhbGxiYWNrOwpAQCAtOTQsOCArOTgsMTggQEAgdm9pZCBX
YXRjaGRvZzo6c2V0VGltZUxpbWl0KFZNJiB2bSwgc3RkOgogYm9vbCBXYXRjaGRvZzo6ZGlkRmly
ZVNsb3coRXhlY1N0YXRlKiBleGVjKQogewogICAgIEFTU0VSVChtX3RpbWVyRGlkRmlyZSk7CisK
KyAgICAvLyBUbyBwcmV2ZW50IGEgcmFjZSBjb25kaXRpb24gd2l0aCBmaXJlTWFudWFsbHkoKSwg
dGhpcyBpcyB0aGUgb25seSBwbGFjZSB3aGVyZSB3ZSdyZSBhbGxvd2VkCisgICAgLy8gdG8gY2xl
YXIgbV90aW1lckRpZEZpcmUuIFRoYXQgaXMgYmVjYXVzZSBieSBnZXR0aW5nIGhlcmUsIHdlJ3Jl
IGNvbW1pdHRlZCB0byBjaGVjaworICAgIC8vIGhhc1NjaGVkdWxlZFRlcm1pbmF0aW9uKCkgYmVs
b3cuCisKICAgICBtX3RpbWVyRGlkRmlyZSA9IGZhbHNlOwogCisgICAgLy8gV2UgbmVlZCBhbiBl
eHBsaWNpdCBjaGVjayBoZXJlIGJlY2F1c2UgaWYgd2UgaGF2ZSBhIHNjaGVkdWxlZCB0ZXJtaW5h
dGlvbiwgd2UgZG9uJ3Qgd2FudCB0bworICAgIC8vIGdpdmUgdGhlIHdhdGNoZG9nIGNhbGxiYWNr
IGZ1bmN0aW9uIChpZiBhdmFpbGFibGUpIHRoZSBjaGFuY2UgdG8gcHJldmVudCB0ZXJtaW5hdGlv
bi4KKyAgICBpZiAoaGFzU2NoZWR1bGVkVGVybWluYXRpb24oKSkKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisKICAgICAvLyBBIGxlZ2l0aW1hdGUgdGltZXIgaXMgdGhlIHRpbWVyIHdoaWNoIHdva2Ug
dXAgd2F0Y2hkb2cgYW5kIGNhbiBjYXVzZWQgZGlkRmlyZVNsb3coKSB0byBiZQogICAgIC8vIGNh
bGxlZCBhZnRlciBtX3dhbGxDbG9ja0RlYWRsaW5lIGhhcyBleHBpcmVkLiBBbGwgb3RoZXIgdGlt
ZXJzIGFyZSBjb25zaWRlcmVkIHRvIGJlIHN0YWxlLAogICAgIC8vIGFuZCB0aGVpciB3YWtlIHVw
cyBhcmUgY29uc2lkZXJlZCB0byBiZSBzcHVyaW91cyBhbmQgc2hvdWxkIGJlIGlnbm9yZWQuCkBA
IC0xNjgsMTAgKzE4Miw4IEBAIGJvb2wgV2F0Y2hkb2c6OmRpZEZpcmVTbG93KEV4ZWNTdGF0ZSog
ZXgKICAgICAgICAgLy8gRWxzZSwgd2UgbGV0IG1fY2FsbGJhY2sgZGVjaWRlIGlmIHdlIHNob3Vs
ZCB0ZXJtaW5hdGUgb3Igbm90LgogICAgICAgICBib29sIG5lZWRzVGVybWluYXRpb24gPSAhbV9j
YWxsYmFjawogICAgICAgICAgICAgfHwgbV9jYWxsYmFjayhleGVjLCBtX2NhbGxiYWNrRGF0YTEs
IG1fY2FsbGJhY2tEYXRhMik7Ci0gICAgICAgIGlmIChuZWVkc1Rlcm1pbmF0aW9uKSB7Ci0gICAg
ICAgICAgICBtX2RpZEZpcmUgPSB0cnVlOworICAgICAgICBpZiAobmVlZHNUZXJtaW5hdGlvbikK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9CiAKICAgICAgICAgLy8gSWYgd2Ug
Z2V0IGhlcmUsIHRoZW4gdGhlIGNhbGxiYWNrIGFib3ZlIGRpZCBub3Qgd2FudCB0byB0ZXJtaW5h
dGUgZXhlY3V0aW9uLiBBcyBhCiAgICAgICAgIC8vIHJlc3VsdCwgdGhlIGNhbGxiYWNrIG1heSBo
YXZlIGRvbmUgb25lIG9mIHRoZSBmb2xsb3dpbmc6CkBAIC0yMDEsOSArMjEzLDExIEBAIGJvb2wg
V2F0Y2hkb2c6Omhhc1RpbWVMaW1pdCgpCiAgICAgcmV0dXJuIChtX3RpbWVMaW1pdCAhPSBub1Rp
bWVMaW1pdCk7CiB9CiAKLXZvaWQgV2F0Y2hkb2c6OmZpcmUoKQordm9pZCBXYXRjaGRvZzo6Zmly
ZU1hbnVhbGx5KCkKIHsKLSAgICBtX2RpZEZpcmUgPSB0cnVlOworICAgIG1fdGltZUxpbWl0ID0g
c3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcygwKTsKKyAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgp
OworICAgIG1fdGltZXJEaWRGaXJlID0gdHJ1ZTsKIH0KIAogdm9pZCBXYXRjaGRvZzo6ZW50ZXJl
ZFZNKCkKQEAgLTIzNyw3ICsyNTEsNiBAQCB2b2lkIFdhdGNoZG9nOjpzdGFydFRpbWVyKHN0ZDo6
Y2hyb25vOjptCiAgICAgLy8gRWxzZSwgdGhlIGN1cnJlbnQgYWN0aXZlIHRpbWVyIHdvbid0IGZp
cmUgc29vbiBlbm91Z2guIFNvLCBzdGFydCBhIG5ldyB0aW1lci4KICAgICB0aGlzLT5yZWYoKTsg
Ly8gbV90aW1lckhhbmRsZXIgd2lsbCBkZXJlZiB0byBtYXRjaCBsYXRlci4KICAgICBtX3dhbGxD
bG9ja0RlYWRsaW5lID0gd2FsbENsb2NrRGVhZGxpbmU7Ci0gICAgbV90aW1lckRpZEZpcmUgPSBm
YWxzZTsKIAogICAgIC8vIFdlIGNsZWFyIG1fdGltZXJEaWRGaXJlIGJlY2F1c2Ugd2UncmUgc3Rh
cnRpbmcgYSBuZXcgdGltZXIuIEhvd2V2ZXIsIHdlIG5lZWQgdG8gbWFrZSBzdXJlCiAgICAgLy8g
dGhhdCB0aGUgY2xlYXJpbmcgb2NjdXJzIGJlZm9yZSB0aGUgdGltZXIgdGhyZWFkIGlzIHN0YXJ0
ZWQuIFRoZXJlYWZ0ZXIsIG9ubHkgZGlkRmlyZVNsb3coKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvV2F0Y2hkb2cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9XYXRjaGRvZy5oCShyZXZpc2lvbiAxODg0ODEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9XYXRjaGRvZy5oCSh3b3JraW5nIGNvcHkpCkBAIC00NiwxMiAr
NDYsOCBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBib29sICgqU2hvdWxkVGVybWluYXRlQ2FsbGJh
Y2spKEV4ZWNTdGF0ZSosIHZvaWQqIGRhdGExLCB2b2lkKiBkYXRhMik7CiAgICAgdm9pZCBzZXRU
aW1lTGltaXQoVk0mLCBzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzIGxpbWl0LCBTaG91bGRUZXJt
aW5hdGVDYWxsYmFjayA9IDAsIHZvaWQqIGRhdGExID0gMCwgdm9pZCogZGF0YTIgPSAwKTsKIAot
ICAgIC8vIFRoaXMgdmVyc2lvbiBvZiBkaWRGaXJlKCkgd2lsbCBjaGVjayB0aGUgZWxhcHNlZCBD
UFUgdGltZSBhbmQgY2FsbCB0aGUKLSAgICAvLyBjYWxsYmFjayAoaWYgbmVlZGVkKSB0byBkZXRl
cm1pbmUgaWYgdGhlIHdhdGNoZG9nIHNob3VsZCBmaXJlLgogICAgIGJvb2wgZGlkRmlyZShFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgewotICAgICAgICBpZiAobV9kaWRGaXJlKQotICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgIGlmICghbV90aW1lckRpZEZpcmUpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIHJldHVybiBkaWRGaXJlU2xvdyhleGVjKTsKQEAgLTYxLDEx
ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGVudGVyZWRWTSgpOwogICAgIHZvaWQgZXhpdGVk
Vk0oKTsKIAotICAgIC8vIFRoaXMgdmVyc2lvbiBvZiBkaWRGaXJlKCkgaXMgYSBtb3JlIGVmZmlj
aWVudCB2ZXJzaW9uIGZvciB3aGVuIHdlIHdhbnQKLSAgICAvLyB0byBrbm93IGlmIHRoZSB3YXRj
aGRvZyBoYXMgZmlyZWQgaW4gdGhlIHBhc3QsIGFuZCBub3Qgd2hldGhlciBpdCBzaG91bGQKLSAg
ICAvLyBmaXJlIHJpZ2h0IG5vdy4KLSAgICBib29sIGRpZEZpcmUoKSB7IHJldHVybiBtX2RpZEZp
cmU7IH0KLSAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGZpcmUoKTsKKyAgICBKU19FWFBPUlRf
UFJJVkFURSB2b2lkIGZpcmVNYW51YWxseSgpOwogCiAgICAgdm9pZCogdGltZXJEaWRGaXJlQWRk
cmVzcygpIHsgcmV0dXJuICZtX3RpbWVyRGlkRmlyZTsgfQogCkBAIC03Niw2ICs2OCw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBzdG9wVGltZXIoKTsKIAogICAgIGlubGluZSBib29sIGhhc1N0YXJ0
ZWRUaW1lcigpOworICAgIGlubGluZSBib29sIGhhc1NjaGVkdWxlZFRlcm1pbmF0aW9uKCk7CiAK
ICAgICBib29sIGRpZEZpcmVTbG93KEV4ZWNTdGF0ZSopOwogCkBAIC04NSw3ICs3OCw2IEBAIHBy
aXZhdGU6CiAgICAgLy8gTk9URTogbV90aW1lckRpZEZpcmUgaXMgb25seSBzZXQgYnkgdGhlIHBs
YXRmb3JtIHNwZWNpZmljIHRpbWVyCiAgICAgLy8gKHByb2JhYmx5IGZyb20gYW5vdGhlciB0aHJl
YWQpIGJ1dCBpcyBvbmx5IGNsZWFyZWQgaW4gdGhlIHNjcmlwdCB0aHJlYWQuCiAgICAgYm9vbCBt
X3RpbWVyRGlkRmlyZTsKLSAgICBib29sIG1fZGlkRmlyZTsKIAogICAgIHN0ZDo6Y2hyb25vOjpt
aWNyb3NlY29uZHMgbV90aW1lTGltaXQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4ODQ4
MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDIzIEBACisyMDE1LTA4LTE0ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAg
ICAgICB3YXRjaGRvZyBtX2RpZEZpcmUgc3RhdGUgZXJyb25lb3VzbHkgcmV0YWluZWQuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzEwODIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMu
ICBUaGUgbmV3IGNvZGUgaXMgY292ZXJlZCBieSAgdGhlIEpTQyBBUEkgdGVzdHMgYW5kIGFuIGV4
aXN0aW5nIHRlc3Q6CisgICAgICAgIGZhc3Qvd29ya2Vycy93b3JrZXItdGVybWluYXRlLWZvcmV2
ZXIuaHRtbAorCisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6c2NoZWR1bGVFeGVjdXRpb25UZXJtaW5hdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjppc1Rlcm1pbmF0aW5nRXhl
Y3V0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdENvbnRyb2xsZXI6OmZvcmJp
ZEV4ZWN1dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpp
c0V4ZWN1dGlvblRlcm1pbmF0aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9X
b3JrZXJTY3JpcHRDb250cm9sbGVyLmg6CisKIDIwMTUtMDgtMTQgIFRpbSBIb3J0b24gIDx0aW1v
dGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IHRoZSBNYXZlcmlja3MgYnVpbGQu
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5j
cHAJKHJldmlzaW9uIDE4ODQ4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZl
bnRMaXN0ZW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNSw5ICsxMzUsMTAgQEAgdm9pZCBK
U0V2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50KFNjcmlwdAogICAgICAgICBnbG9iYWxPYmplY3Qt
PnNldEN1cnJlbnRFdmVudChzYXZlZEV2ZW50KTsKIAogICAgICAgICBpZiAoaXM8V29ya2VyR2xv
YmFsU2NvcGU+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KSkgeworICAgICAgICAgICAgYXV0byBz
Y3JpcHRDb250cm9sbGVyID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KCpzY3JpcHRFeGVj
dXRpb25Db250ZXh0KS5zY3JpcHQoKTsKICAgICAgICAgICAgIGJvb2wgdGVybWluYXRvckNhdXNl
ZEV4Y2VwdGlvbiA9IChleGVjLT5oYWRFeGNlcHRpb24oKSAmJiBpc1Rlcm1pbmF0ZWRFeGVjdXRp
b25FeGNlcHRpb24oZXhlYy0+ZXhjZXB0aW9uKCkpKTsKLSAgICAgICAgICAgIGlmICh0ZXJtaW5h
dG9yQ2F1c2VkRXhjZXB0aW9uIHx8ICh2bS53YXRjaGRvZyAmJiB2bS53YXRjaGRvZy0+ZGlkRmly
ZSgpKSkKLSAgICAgICAgICAgICAgICBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oKnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQpLnNjcmlwdCgpLT5mb3JiaWRFeGVjdXRpb24oKTsKKyAgICAgICAg
ICAgIGlmICh0ZXJtaW5hdG9yQ2F1c2VkRXhjZXB0aW9uIHx8IHNjcmlwdENvbnRyb2xsZXItPmlz
VGVybWluYXRpbmdFeGVjdXRpb24oKSkKKyAgICAgICAgICAgICAgICBzY3JpcHRDb250cm9sbGVy
LT5mb3JiaWRFeGVjdXRpb24oKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChleGNlcHRpb24p
IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xs
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNj
cmlwdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAxODg0ODEpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTIxLDggKzEyMSw3IEBAIHZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUoY28K
ICAgICBKU0M6OmV2YWx1YXRlKGV4ZWMsIHNvdXJjZUNvZGUuanNTb3VyY2VDb2RlKCksIG1fd29y
a2VyR2xvYmFsU2NvcGVXcmFwcGVyLT5nbG9iYWxUaGlzKCksIHJldHVybmVkRXhjZXB0aW9uKTsK
IAogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgaWYgKChyZXR1cm5lZEV4Y2VwdGlvbiAm
JiBpc1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24ocmV0dXJuZWRFeGNlcHRpb24pKQotICAg
ICAgICB8fCAodm0ud2F0Y2hkb2cgJiYgdm0ud2F0Y2hkb2ctPmRpZEZpcmUoKSkpIHsKKyAgICBp
ZiAoKHJldHVybmVkRXhjZXB0aW9uICYmIGlzVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihy
ZXR1cm5lZEV4Y2VwdGlvbikpIHx8IGlzVGVybWluYXRpbmdFeGVjdXRpb24oKSkgewogICAgICAg
ICBmb3JiaWRFeGVjdXRpb24oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE0OSwyMCAr
MTQ4LDE5IEBAIHZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6c2V0RXhjZXB0aW8KIHZvaWQg
V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6c2NoZWR1bGVFeGVjdXRpb25UZXJtaW5hdGlvbigpCiB7
CiAgICAgLy8gVGhlIG11dGV4IHByb3ZpZGVzIGEgbWVtb3J5IGJhcnJpZXIgdG8gZW5zdXJlIHRo
YXQgb25jZQotICAgIC8vIHRlcm1pbmF0aW9uIGlzIHNjaGVkdWxlZCwgaXNFeGVjdXRpb25UZXJt
aW5hdGluZyB3aWxsCisgICAgLy8gdGVybWluYXRpb24gaXMgc2NoZWR1bGVkLCBpc1Rlcm1pbmF0
aW5nRXhlY3V0aW9uKCkgd2lsbAogICAgIC8vIGFjY3VyYXRlbHkgcmVmbGVjdCB0aGF0IHN0YXRl
IHdoZW4gY2FsbGVkIGZyb20gYW5vdGhlciB0aHJlYWQuCiAgICAgTXV0ZXhMb2NrZXIgbG9ja2Vy
KG1fc2NoZWR1bGVkVGVybWluYXRpb25NdXRleCk7CisgICAgbV9pc1Rlcm1pbmF0aW5nRXhlY3V0
aW9uID0gdHJ1ZTsKICAgICBpZiAobV92bS0+d2F0Y2hkb2cpCi0gICAgICAgIG1fdm0tPndhdGNo
ZG9nLT5maXJlKCk7CisgICAgICAgIG1fdm0tPndhdGNoZG9nLT5maXJlTWFudWFsbHkoKTsKIH0K
IAotYm9vbCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjppc0V4ZWN1dGlvblRlcm1pbmF0aW5nKCkg
Y29uc3QKK2Jvb2wgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6aXNUZXJtaW5hdGluZ0V4ZWN1dGlv
bigpIGNvbnN0CiB7CiAgICAgLy8gU2VlIGNvbW1lbnRzIGluIHNjaGVkdWxlRXhlY3V0aW9uVGVy
bWluYXRpb24gcmVnYXJkaW5nIG11dGV4IHVzYWdlLgogICAgIE11dGV4TG9ja2VyIGxvY2tlciht
X3NjaGVkdWxlZFRlcm1pbmF0aW9uTXV0ZXgpOwotICAgIGlmIChtX3ZtLT53YXRjaGRvZykKLSAg
ICAgICAgcmV0dXJuIG1fdm0tPndhdGNoZG9nLT5kaWRGaXJlKCk7Ci0gICAgcmV0dXJuIGZhbHNl
OworICAgIHJldHVybiBtX2lzVGVybWluYXRpbmdFeGVjdXRpb247CiB9CiAKIHZvaWQgV29ya2Vy
U2NyaXB0Q29udHJvbGxlcjo6Zm9yYmlkRXhlY3V0aW9uKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmgJKHJldmlzaW9u
IDE4ODQ4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRy
b2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNzEsNyArNzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIC8vIGZvcmJpZEV4ZWN1dGlvbigpL2lzRXhlY3V0aW9uRm9yYmlkZGVuKCkg
dG8gZ3VhcmQgYWdhaW5zdCByZWVudHJ5IGludG8gSlMuCiAgICAgICAgIC8vIENhbiBiZSBjYWxs
ZWQgZnJvbSBhbnkgdGhyZWFkLgogICAgICAgICB2b2lkIHNjaGVkdWxlRXhlY3V0aW9uVGVybWlu
YXRpb24oKTsKLSAgICAgICAgYm9vbCBpc0V4ZWN1dGlvblRlcm1pbmF0aW5nKCkgY29uc3Q7Cisg
ICAgICAgIGJvb2wgaXNUZXJtaW5hdGluZ0V4ZWN1dGlvbigpIGNvbnN0OwogCiAgICAgICAgIC8v
IENhbGxlZCBvbiBXb3JrZXIgdGhyZWFkIHdoZW4gSlMgZXhpdHMgd2l0aCB0ZXJtaW5hdGlvbiBl
eGNlcHRpb24gY2F1c2VkIGJ5IGZvcmJpZEV4ZWN1dGlvbigpIHJlcXVlc3QsCiAgICAgICAgIC8v
IG9yIGJ5IFdvcmtlciB0aHJlYWQgdGVybWluYXRpb24gY29kZSB0byBwcmV2ZW50IGZ1dHVyZSBl
bnRyeSBpbnRvIEpTLgpAQCAtOTcsNiArOTcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIFdvcmtlckdsb2JhbFNjb3BlKiBtX3dvcmtlckdsb2JhbFNjb3BlOwogICAgICAgICBKU0M6
OlN0cm9uZzxKU1dvcmtlckdsb2JhbFNjb3BlPiBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlcjsK
ICAgICAgICAgYm9vbCBtX2V4ZWN1dGlvbkZvcmJpZGRlbjsKKyAgICAgICAgYm9vbCBtX2lzVGVy
bWluYXRpbmdFeGVjdXRpb24geyBmYWxzZSB9OwogICAgICAgICBtdXRhYmxlIE11dGV4IG1fc2No
ZWR1bGVkVGVybWluYXRpb25NdXRleDsKICAgICB9OwogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODg0
ODEpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
OSBAQAorMjAxNS0wOC0xNCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAg
ICAgd2F0Y2hkb2cgbV9kaWRGaXJlIHN0YXRlIGVycm9uZW91c2x5IHJldGFpbmVkLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMxMDgyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0RXhwZWN0YXRp
b25zOgorICAgICAgICAtIFNraXAgZmFzdC93b3JrZXJzL3dvcmtlci10ZXJtaW5hdGUtZm9yZXZl
ci5odG1sIGZvciBub3cgYmVjYXVzZSBpdCB3aWxsIG5vdworICAgICAgICAgIGRldGVjdCB0aGF0
IHdlJ3JlIGZhaWxpbmcgdGhlIHRlc3Qgd2hlbiB0aGUgSlNDIHdhdGNoZG9nIGlzIG5vdCBlbmFi
bGVkLgorICAgICAgICAgIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQ3OTY4LgorCisgICAgICAgICogZmFzdC93b3JrZXJzL3dvcmtlci10ZXJtaW5hdGUtZm9y
ZXZlci1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC93b3JrZXJzL3dvcmtlci10ZXJtaW5h
dGUtZm9yZXZlci5odG1sOgorICAgICAgICAtIFVwZGF0ZWQgdG8gY2hlY2sgaWYgdGhlIHdvcmtl
ciBhY3R1YWxseSBkaWQgdGVybWluYXRlLiAKKwogMjAxNS0wOC0xNCAgQWxleGV5IFByb3NrdXJ5
YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBGcmVxdWVudCBhc3NlcnRpb25zIG9uIGFu
aW1hdGlvbnMvcmVzdGFydC1hZnRlci1zY3JvbGwuaHRtbApJbmRleDogTGF5b3V0VGVzdHMvVGVz
dEV4cGVjdGF0aW9ucwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25z
CShyZXZpc2lvbiAxODg0ODEpCisrKyBMYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCSh3b3Jr
aW5nIGNvcHkpCkBAIC01NDgsMyArNTQ4LDUgQEAgbWVkaWEvc2Vzc2lvbiBbIFNraXAgXQogZmFz
dC9kb20vdGltZXItZmlyZS1hZnRlci1wYWdlLXBhdXNlLmh0bWwgWyBTa2lwIF0KIAogd2Via2l0
Lm9yZy9iLzE0ODAyNiBbIERlYnVnIF0gYW5pbWF0aW9ucy9yZXN0YXJ0LWFmdGVyLXNjcm9sbC5o
dG1sIFsgU2tpcCBdCisKK3dlYmtpdC5vcmcvYi8xNDc5NjggZmFzdC93b3JrZXJzL3dvcmtlci10
ZXJtaW5hdGUtZm9yZXZlci5odG1sIFsgU2tpcCBdCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3dv
cmtlcnMvd29ya2VyLXRlcm1pbmF0ZS1mb3JldmVyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLXRlcm1pbmF0ZS1mb3JldmVyLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMTg4NDgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dv
cmtlci10ZXJtaW5hdGUtZm9yZXZlci1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEg
KzEsMyBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE1OiBXb3JrZXIgd2FzIHN0YXJ0ZWQKK0NP
TlNPTEUgTUVTU0FHRTogbGluZSAzNDogV29ya2VyIHdhcyB0ZXJtaW5hdGVkCiBUZXN0IFdvcmtl
ci50ZXJtaW5hdGUoKSBmb3IgYSB3b3JrZXIgdGhhdCB0cmllcyB0byBydW4gZm9yZXZlci4KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3JrZXItdGVybWluYXRlLWZvcmV2ZXIuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLXRlcm1pbmF0
ZS1mb3JldmVyLmh0bWwJKHJldmlzaW9uIDE4ODQ4MSkKKysrIExheW91dFRlc3RzL2Zhc3Qvd29y
a2Vycy93b3JrZXItdGVybWluYXRlLWZvcmV2ZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwx
MSArMSw1MiBAQAogPGJvZHk+CiA8cD5UZXN0IFdvcmtlci50ZXJtaW5hdGUoKSBmb3IgYSB3b3Jr
ZXIgdGhhdCB0cmllcyB0byBydW4gZm9yZXZlci48L3A+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Cit9CiAKIHZhciB3b3Jr
ZXIgPSBuZXcgV29ya2VyKCdyZXNvdXJjZXMvd29ya2VyLXJ1bi1mb3JldmVyLmpzJyk7Ci13b3Jr
ZXIudGVybWluYXRlKCk7CisKK2Z1bmN0aW9uIHdhaXRGb3JXb3JrZXJUb1N0YXJ0KCkgeworICAg
IHZhciBzdGFydFRpbWUgPSBEYXRlLm5vdygpOworICAgIGZ1bmN0aW9uIGNoZWNrSWZXb3JrZXJT
dGFydGVkKCkgeworICAgICAgICBpZiAoaW50ZXJuYWxzLndvcmtlclRocmVhZENvdW50ID09IDEp
IHsKKyAgICAgICAgICAgIGNvbnNvbGUubG9nKCJXb3JrZXIgd2FzIHN0YXJ0ZWQiKTsKKyAgICAg
ICAgICAgIHdvcmtlci50ZXJtaW5hdGUoKTsKKyAgICAgICAgICAgIHNldFRpbWVvdXQod2FpdEZv
cldvcmtlclRvU3RvcCwgMCk7CisKKyAgICAgICAgfSBlbHNlIGlmIChEYXRlLm5vdygpIC0gc3Rh
cnRUaW1lIDwgNTAwMCkgeworICAgICAgICAgICAgc2V0VGltZW91dChjaGVja0lmV29ya2VyU3Rh
cnRlZCwgMCk7CisKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGNvbnNvbGUubG9nKCJX
b3JrZXIgZGlkIG5vdCBzaG93IHVwIik7CisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKKyAgICAgICAgfSAgICAgICAgICAgIAorICAgIH0KKyAgICBzZXRUaW1lb3V0KGNoZWNr
SWZXb3JrZXJTdGFydGVkLCAwKTsKK30KKworZnVuY3Rpb24gd2FpdEZvcldvcmtlclRvU3RvcCgp
IHsKKyAgICB2YXIgc3RhcnRUaW1lID0gRGF0ZS5ub3coKTsKKyAgICBmdW5jdGlvbiBjaGVja0lm
V29ya2VyU3RvcHBlZCgpIHsKKyAgICAgICAgaWYgKGludGVybmFscy53b3JrZXJUaHJlYWRDb3Vu
dCA9PSAwKSB7CisgICAgICAgICAgICBjb25zb2xlLmxvZygiV29ya2VyIHdhcyB0ZXJtaW5hdGVk
Iik7CisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKworICAgICAgICB9IGVs
c2UgaWYgKERhdGUubm93KCkgLSBzdGFydFRpbWUgPCA1MDAwKSB7CisgICAgICAgICAgICBzZXRU
aW1lb3V0KGNoZWNrSWZXb3JrZXJTdG9wcGVkLCAwKTsKKworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgY29uc29sZS5sb2coIkRpZCBub3Qgc2VlIHdvcmtlciB0ZXJtaW5hdGUiKTsKKyAg
ICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICB9ICAgICAgICAgICAg
CisgICAgfQorICAgIHNldFRpbWVvdXQoY2hlY2tJZldvcmtlclN0b3BwZWQsIDApOworfQorCit3
aW5kb3cuc2V0VGltZW91dCh3YWl0Rm9yV29ya2VyVG9TdGFydCwgMCk7CisKIDwvc2NyaXB0Pgog
PC9ib2R5PgogPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259319</attachid>
            <date>2015-08-18 16:41:58 -0700</date>
            <delta_ts>2015-08-20 18:01:29 -0700</delta_ts>
            <desc>fix 5: latest greatest with Web Workers now able to terminate().</desc>
            <filename>bug-131082.patch</filename>
            <type>text/plain</type>
            <size>29324</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg4NjAyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc2IEBA
CisyMDE1LTA4LTE4ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICB3
YXRjaGRvZyBtX2RpZEZpcmUgc3RhdGUgZXJyb25lb3VzbHkgcmV0YWluZWQuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzEwODIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgd2F0Y2hkb2cgY2FuIGZp
cmUgZm9yIDIgcmVhc29uczoKKyAgICAgICAgMS4gYW4gZXh0ZXJuYWwgY29udHJvbGxpbmcgZW50
aXR5IChpLmUuIGFub3RoZXIgdGhyZWFkKSBoYXMgc2NoZWR1bGVkIHRlcm1pbmF0aW9uCisgICAg
ICAgICAgIG9mIHRoZSBzY3JpcHQgdGhyZWFkIHZpYSB3YXRjaGRvZzo6ZmlyZU1hbnVhbGx5KCku
CisgICAgICAgIDIuIHRoZSBhbGxvd2VkIENQVSB0aW1lIGhhcyBleHBpcmVkLgorCisgICAgICAg
IEZvciBjYXNlIDEsIHdlJ3JlIGRvaW5nIGF3YXkgd2l0aCB0aGUgbV9kaWRGaXJlIGZsYWcuICBX
YXRjaGRvZzo6ZmlyZU1hbnVhbGx5KCkgCisgICAgICAgIHdpbGwgc2V0IG1fdGltZUxpbWl0IHRv
IDAuICBBIHRpbWUgbGltaXQgb2YgMCBpcyByZXNlcnZlZCB0byBtZWFuIHRoYXQgdGVybWluYXRp
b24KKyAgICAgICAgaGFzIGJlZW4gc2NoZWR1bGVkIGJ5IGFuIGV4dGVybmFsIGNvbnRyb2xsaW5n
IGVudGl0eS4gIE9uY2UgbV90aW1lTGltaXQgaXMgc2V0IHRvCisgICAgICAgIDAsIGl0IHdpbGwg
cmVtYWluIHRoZXJlIGkuZS4gdGhpcyBzdGF0ZSBpcyBzdGlja3kuCisKKyAgICAgICAgV2F0Y2hk
b2c6OmZpcmVNYW51YWxseSgpIHdpbGwgYWxzbyBzaW11bGF0ZSBhIHRpbWVyIGZpcmluZyBldmVu
dCBieSBzZXR0aW5nCisgICAgICAgIG1fdGltZXJEaWRGaXJlLiAgVGhpcyB3aWxsIGdldCB0aGUg
c2NyaXB0IHRocmVhZCB0byBjaGVjayBXYXRjaGRvZzo6ZGlkRmlyZSgpIGFuZAorICAgICAgICB0
ZXJtaW5hdGUgZXhlY3V0aW9uLgorCisgICAgICAgIE5vdGU6IHRoZSB3YXRjaGRvZyBvbmx5IGd1
YXJhbnRlZXMgdGhhdCBzY3JpcHQgZXhlY3V0aW9uIHdpbGwgdGVybWluYXRlIGFzIHNvb24KKyAg
ICAgICAgYXMgcG9zc2libGUgZHVlIHRvIGEgdGltZSBsaW1pdCBvZiAwLiAgT25jZSB3ZSd2ZSBl
eGl0ZWQgdGhlIFZNLCB0aGUgY2xpZW50IG9mIHRoZQorICAgICAgICBWTSBpcyByZXNwb25zaWJs
ZSBmcm9tIGtlZXBpbmcgYSBmbGFnIHRvIHByZXZlbnQgbmV3IHNjcmlwdCBleGVjdXRpb24uCisK
KyAgICAgICAgSW4gYSByYWNlIGNvbmRpdGlvbiwgaWYgZmlyZU1hbnVhbGx5KCkgaXMgY2FsbGVk
IGp1c3QgYWZ0ZXIgZXhlY3V0aW9uIGhhcyBnb3R0ZW4KKyAgICAgICAgcGFzdCB0aGUgY2xpZW50
J3MgcmVlbnRyeSBjaGVjayBhbmQgdGhlIGNsaWVudCBpcyBpbiB0aGUgcHJvY2VzcyBvZiByZS1l
bnRlcmluZywKKyAgICAgICAgdGhlIHdvcnN0IHRoYXQgY2FuIGhhcHBlbiBpcyB0aGF0IHdlIHdp
bGwgc2NoZWR1bGUgdGhlIHdhdGNoZG9nIHRpbWVyIHRvIGZpcmUKKyAgICAgICAgYWZ0ZXIgYSBw
ZXJpb2Qgb2YgMC4gIFRoaXMgd2lsbCB0ZXJtaW5hdGUgc2NyaXB0IGV4ZWN1dGlvbiBxdWlja2x5
LCBhbmQgdGhlcmVhZnRlcgorICAgICAgICB0aGUgY2xpZW50J3MgY2hlY2sgc2hvdWxkIGJlIGFi
bGUgdG8gcHJldmVudCBmdXJ0aGVyIGVudHJ5IGludG8gdGhlIFZNLgorCisgICAgICAgIEZvciBj
YXNlIDIsIHRoZSB3YXRjaGRvZyBkb2VzIG5vdCBhbHRlciBtX3RpbWVMaW1pdC4gIElmIHRoZSBD
UFUgZGVhZGxpbmUgaGFzCisgICAgICAgIGJlZW4gcmVhY2hlZCwgdGhlIHNjcmlwdCB0aHJlYWQg
d2lsbCB0ZXJtaW5hdGUgZXhlY3V0aW9uIGFuZCBleGl0IHRoZSBWTS4KKworICAgICAgICBJZiB0
aGUgY2xpZW50IG9mIHRoZSBWTSBzdGFydHMgbmV3IHNjcmlwdCBleGVjdXRpb24sIHRoZSB3YXRj
aGRvZyB3aWxsIGFsbG93CisgICAgICAgIGV4ZWN1dGlvbiBmb3IgdGhlIHNwZWNpZmllZCBtX3Rp
bWVMaW1pdC4gIEluIHRoaXMgY2FzZSwgc2luY2UgbV90aW1lTGltaXQgaXMgbm90CisgICAgICAg
IDAsIHRoZSBzY3JpcHQgZ2V0cyBhIGZyZXNoIGFsbG93YW5jZSBvZiBDUFUgdGltZSB0byBleGVj
dXRlLiAgSGVuY2UsIHRlcm1pbmF0aW9ucworICAgICAgICBkdWUgdG8gd2F0Y2hkb2cgdGltZSBv
dXRzIGFyZSBubyBsb25nZXIgc3RpY2t5LgorCisgICAgICAgICogQVBJL3Rlc3RzL0V4ZWN1dGlv
blRpbWVMaW1pdFRlc3QuY3BwOgorICAgICAgICAoZXh0ZW5kVGVybWluYXRlQ2FsbGJhY2spOgor
ICAgICAgICAodGVzdFJlc2V0QWZ0ZXJUaW1lb3V0KToKKyAgICAgICAgKHRlc3RFeGVjdXRpb25U
aW1lTGltaXQpOgorICAgICAgICAtIEFkZCB0ZXN0IHNjZW5hcmlvcyB0byB2ZXJpZnkgdGhhdCB0
aGUgd2F0Y2hkb2cgaXMgYXV0b21hdGljYWxseSByZXNldCBieSB0aGUgVk0KKyAgICAgICAgICB1
cG9uIHRocm93aW5nIHRoZSBUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uLgorCisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAg
ICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJz
OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpJbnRl
cnByZXRlcjo6ZXhlY3V0ZSk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpleGVjdXRlQ2Fs
bCk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpleGVjdXRlQ29uc3RydWN0KToKKyAgICAg
ICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0
aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAg
ICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKiBydW50aW1lL1ZNSW5saW5lcy5oOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6Vk06OnNob3VsZFRyaWdnZXJUZXJtaW5hdGlvbik6CisgICAgICAg
ICogcnVudGltZS9XYXRjaGRvZy5jcHA6CisgICAgICAgIChKU0M6OldhdGNoZG9nOjpXYXRjaGRv
Zyk6CisgICAgICAgIChKU0M6OldhdGNoZG9nOjpoYXNTdGFydGVkVGltZXIpOgorICAgICAgICAo
SlNDOjpXYXRjaGRvZzo6aGFzU2NoZWR1bGVkVGVybWluYXRpb24pOgorICAgICAgICAoSlNDOjpX
YXRjaGRvZzo6c2V0VGltZUxpbWl0KToKKyAgICAgICAgKEpTQzo6V2F0Y2hkb2c6OmRpZEZpcmVT
bG93KToKKyAgICAgICAgKEpTQzo6V2F0Y2hkb2c6OmZpcmUpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpXYXRjaGRvZzo6ZmlyZU1hbnVhbGx5KToKKyAgICAgICAgKEpTQzo6V2F0Y2hkb2c6OmVu
dGVyZWRWTSk6CisgICAgICAgIChKU0M6OldhdGNoZG9nOjpzdGFydFRpbWVyKToKKyAgICAgICAg
KiBydW50aW1lL1dhdGNoZG9nLmg6CisgICAgICAgIChKU0M6OldhdGNoZG9nOjpkaWRGaXJlKToK
KyAgICAgICAgKEpTQzo6V2F0Y2hkb2c6OnRpbWVyRGlkRmlyZUFkZHJlc3MpOgorCiAyMDE1LTA4
LTE4ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAgVHJ5IHRv
IGZpeCB0aGUgQ0xPT1AgYnVpbGQuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rl
c3RzL0V4ZWN1dGlvblRpbWVMaW1pdFRlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvdGVzdHMvRXhlY3V0aW9uVGltZUxpbWl0VGVzdC5jcHAJKHJldmlzaW9u
IDE4ODYwMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvRXhlY3V0aW9uVGlt
ZUxpbWl0VGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDYgKzc5LDIyIEBAIHN0YXRpYyBi
b29sIGV4dGVuZFRlcm1pbmF0ZUNhbGxiYWNrKEpTQ28KIH0KIAogCitzdGF0aWMgdm9pZCB0ZXN0
UmVzZXRBZnRlclRpbWVvdXQoYm9vbCYgZmFpbGVkKQoreworICAgIEpTVmFsdWVSZWYgdiA9IG51
bGxwdHI7CisgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSBudWxscHRyOworICAgIGNvbnN0IGNo
YXIqIHJlZW50cnlTY3JpcHQgPSAiMTAwIjsKKyAgICBKU1N0cmluZ1JlZiBzY3JpcHQgPSBKU1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhyZWVudHJ5U2NyaXB0KTsKKyAgICB2ID0gSlNFdmFs
dWF0ZVNjcmlwdChjb250ZXh0LCBzY3JpcHQsIG51bGxwdHIsIG51bGxwdHIsIDEsICZleGNlcHRp
b24pOworICAgIGlmIChleGNlcHRpb24pIHsKKyAgICAgICAgcHJpbnRmKCJGQUlMOiBXYXRjaGRv
ZyB0aW1lb3V0IHdhcyBub3QgcmVzZXQuXG4iKTsKKyAgICAgICAgZmFpbGVkID0gdHJ1ZTsKKyAg
ICB9IGVsc2UgaWYgKCFKU1ZhbHVlSXNOdW1iZXIoY29udGV4dCwgdikgfHwgSlNWYWx1ZVRvTnVt
YmVyKGNvbnRleHQsIHYsIG51bGxwdHIpICE9IDEwMCkgeworICAgICAgICBwcmludGYoIkZBSUw6
IFNjcmlwdCByZXN1bHQgaXMgbm90IGFzIGV4cGVjdGVkLlxuIik7CisgICAgICAgIGZhaWxlZCA9
IHRydWU7CisgICAgfQorfQorCiBpbnQgdGVzdEV4ZWN1dGlvblRpbWVMaW1pdCgpCiB7CiAgICAg
Y29udGV4dCA9IEpTR2xvYmFsQ29udGV4dENyZWF0ZUluR3JvdXAobnVsbHB0ciwgbnVsbHB0cik7
CkBAIC0xMjEsNiArMTM3LDggQEAgaW50IHRlc3RFeGVjdXRpb25UaW1lTGltaXQoKQogICAgICAg
ICAgICAgcHJpbnRmKCJGQUlMOiBUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uIHdhcyBub3Qg
dGhyb3duLlxuIik7CiAgICAgICAgICAgICBmYWlsZWQgPSB0cnVlOwogICAgICAgICB9CisKKyAg
ICAgICAgdGVzdFJlc2V0QWZ0ZXJUaW1lb3V0KGZhaWxlZCk7CiAgICAgfQogICAgIAogICAgIC8q
IFRlc3QgdGhlIHNjcmlwdCB0aW1lb3V0J3MgVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbiBz
aG91bGQgTk9UIGJlIGNhdGNoYWJsZTogKi8KQEAgLTE0OCw2ICsxNjYsOCBAQCBpbnQgdGVzdEV4
ZWN1dGlvblRpbWVMaW1pdCgpCiAgICAgICAgICAgICBwcmludGYoIkZBSUw6IFRlcm1pbmF0ZWRF
eGVjdXRpb25FeGNlcHRpb24gd2FzIGNhdWdodC5cbiIpOwogICAgICAgICAgICAgZmFpbGVkID0g
dHJ1ZTsKICAgICAgICAgfQorCisgICAgICAgIHRlc3RSZXNldEFmdGVyVGltZW91dChmYWlsZWQp
OwogICAgIH0KICAgICAKICAgICAvKiBUZXN0IHNjcmlwdCB0aW1lb3V0IHdpdGggbm8gY2FsbGJh
Y2s6ICovCkBAIC0xNzIsNiArMTkyLDggQEAgaW50IHRlc3RFeGVjdXRpb25UaW1lTGltaXQoKQog
ICAgICAgICAgICAgcHJpbnRmKCJGQUlMOiBUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uIHdh
cyBub3QgdGhyb3duLlxuIik7CiAgICAgICAgICAgICBmYWlsZWQgPSB0cnVlOwogICAgICAgICB9
CisKKyAgICAgICAgdGVzdFJlc2V0QWZ0ZXJUaW1lb3V0KGZhaWxlZCk7CiAgICAgfQogICAgIAog
ICAgIC8qIFRlc3Qgc2NyaXB0IHRpbWVvdXQgY2FuY2VsbGF0aW9uOiAqLwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCShyZXZpc2lvbiAxODg2MDIpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNzU0LDYgKzE3NTQsNyBAQAogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxVaW50MzJBcnJheS5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccnVudGltZVxVaW50OEFycmF5LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxydW50aW1lXFZNLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50
aW1lXFZNSW5saW5lcy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxW
TUVudHJ5U2NvcGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcVmFy
T2Zmc2V0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFdhdGNoZG9n
LmgiIC8+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJv
ai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJv
ai5maWx0ZXJzCShyZXZpc2lvbiAxODg2MDIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMJKHdvcmtp
bmcgY29weSkKQEAgLTMyNDksNiArMzI0OSw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxydW50aW1lXFZNLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9D
bEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFZNSW5saW5lcy5o
Ij4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxWTUVudHJ5U2NvcGUuaCI+CiAgICAgICA8
RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxODg2MDIpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBj
b3B5KQpAQCAtMzYwMiw2ICszNjAyLDcgQEAKIAkJRkU1OTMyQTYxODNDNUEyNjAwQTFFQ0NDIC8q
IFZNRW50cnlTY29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWTUVudHJ5
U2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU3QkE2MEQxQTFBN0NFQzAw
RjFGN0I0IC8qIEhlYXBWZXJpZmllci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBIZWFwVmVyaWZpZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlG
RTdCQTYwRTFBMUE3Q0VDMDBGMUY3QjQgLyogSGVhcFZlcmlmaWVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEhlYXBWZXJpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlGRTkwQkIzQTFCN0NGNjRFMDA2QjNGMDMgLyogVk1JbmxpbmVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZNSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGRUEwODYxRTE4MkI3QTA0MDBGNkQ4NTEgLyogQnJlYWtwb2ludC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCcmVha3BvaW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUZFQTA4NjFGMTgyQjdBMDQwMEY2RDg1MSAvKiBEZWJ1Z2dlclByaW1p
dGl2ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVidWdnZXJQcmltaXRp
dmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFQjUxRjZBMUE5N0I2ODgwMDFG
OTIxQyAvKiBSZWdyZXNzMTQxODA5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IFJlZ3Jlc3MxNDE4MDkuaDsgcGF0aCA9IEFQSS90ZXN0cy9SZWdyZXNzMTQxODA5Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00OTQ5LDYgKzQ5NTAsNyBAQAogCQkJCTBGRTA1MDI0
MUFBOTA5NTYwMEQzM0IzMyAvKiBWYXJPZmZzZXQuaCAqLywKIAkJCQlFMThFM0E1NzBERjkyNzhD
MDBEOTBCMzQgLyogVk0uY3BwICovLAogCQkJCUUxOEUzQTU2MERGOTI3OEMwMEQ5MEIzNCAvKiBW
TS5oICovLAorCQkJCUZFOTBCQjNBMUI3Q0Y2NEUwMDZCM0YwMyAvKiBWTUlubGluZXMuaCAqLywK
IAkJCQlGRTU5MzJBNTE4M0M1QTI2MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3BlLmNwcCAqLywKIAkJ
CQlGRTU5MzJBNjE4M0M1QTI2MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3BlLmggKi8sCiAJCQkJRkVE
OTRGMkIxNzFFM0UyMzAwQkU3N0E0IC8qIFdhdGNoZG9nLmNwcCAqLywKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkocmV2aXNp
b24gMTg4NjAyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJl
dGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzEsOCArNzEsOCBAQAogI2luY2x1ZGUgIlN0cm9u
Z0lubGluZXMuaCIKICNpbmNsdWRlICJTeW1ib2wuaCIKICNpbmNsdWRlICJWTUVudHJ5U2NvcGUu
aCIKKyNpbmNsdWRlICJWTUlubGluZXMuaCIKICNpbmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIK
LSNpbmNsdWRlICJXYXRjaGRvZy5oIgogCiAjaW5jbHVkZSA8bGltaXRzLmg+CiAjaW5jbHVkZSA8
c3RkaW8uaD4KQEAgLTg2NSw3ICs4NjUsNyBAQCBmYWlsZWRKU09OUDoKIAogICAgIFByb2dyYW1D
b2RlQmxvY2sqIGNvZGVCbG9jayA9IHByb2dyYW0tPmNvZGVCbG9jaygpOwogCi0gICAgaWYgKFVO
TElLRUxZKHZtLndhdGNoZG9nICYmIHZtLndhdGNoZG9nLT5kaWRGaXJlKGNhbGxGcmFtZSkpKQor
ICAgIGlmIChVTkxJS0VMWSh2bS5zaG91bGRUcmlnZ2VyVGVybWluYXRpb24oY2FsbEZyYW1lKSkp
CiAgICAgICAgIHJldHVybiB0aHJvd1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oY2FsbEZy
YW1lKTsKIAogICAgIEFTU0VSVChjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSA9PSAxKTsgLy8g
MSBwYXJhbWV0ZXIgZm9yICd0aGlzJy4KQEAgLTkyOCw3ICs5MjgsNyBAQCBKU1ZhbHVlIEludGVy
cHJldGVyOjpleGVjdXRlQ2FsbChDYWxsRnJhCiAgICAgfSBlbHNlCiAgICAgICAgIG5ld0NvZGVC
bG9jayA9IDA7CiAKLSAgICBpZiAoVU5MSUtFTFkodm0ud2F0Y2hkb2cgJiYgdm0ud2F0Y2hkb2ct
PmRpZEZpcmUoY2FsbEZyYW1lKSkpCisgICAgaWYgKFVOTElLRUxZKHZtLnNob3VsZFRyaWdnZXJU
ZXJtaW5hdGlvbihjYWxsRnJhbWUpKSkKICAgICAgICAgcmV0dXJuIHRocm93VGVybWluYXRlZEV4
ZWN1dGlvbkV4Y2VwdGlvbihjYWxsRnJhbWUpOwogCiAgICAgUHJvdG9DYWxsRnJhbWUgcHJvdG9D
YWxsRnJhbWU7CkBAIC05OTgsNyArOTk4LDcgQEAgSlNPYmplY3QqIEludGVycHJldGVyOjpleGVj
dXRlQ29uc3RydWN0KAogICAgIH0gZWxzZQogICAgICAgICBuZXdDb2RlQmxvY2sgPSAwOwogCi0g
ICAgaWYgKFVOTElLRUxZKHZtLndhdGNoZG9nICYmIHZtLndhdGNoZG9nLT5kaWRGaXJlKGNhbGxG
cmFtZSkpKQorICAgIGlmIChVTkxJS0VMWSh2bS5zaG91bGRUcmlnZ2VyVGVybWluYXRpb24oY2Fs
bEZyYW1lKSkpCiAgICAgICAgIHJldHVybiB0aHJvd1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRp
b24oY2FsbEZyYW1lKTsKIAogICAgIFByb3RvQ2FsbEZyYW1lIHByb3RvQ2FsbEZyYW1lOwpAQCAt
MTA3MSw3ICsxMDcxLDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShDYWxsRnJhbWVD
bAogICAgIGlmIChMZWdhY3lQcm9maWxlciogcHJvZmlsZXIgPSB2bS5lbmFibGVkUHJvZmlsZXIo
KSkKICAgICAgICAgcHJvZmlsZXItPndpbGxFeGVjdXRlKGNsb3N1cmUub2xkQ2FsbEZyYW1lLCBj
bG9zdXJlLmZ1bmN0aW9uKTsKIAotICAgIGlmIChVTkxJS0VMWSh2bS53YXRjaGRvZyAmJiB2bS53
YXRjaGRvZy0+ZGlkRmlyZShjbG9zdXJlLm9sZENhbGxGcmFtZSkpKQorICAgIGlmIChVTkxJS0VM
WSh2bS5zaG91bGRUcmlnZ2VyVGVybWluYXRpb24oY2xvc3VyZS5vbGRDYWxsRnJhbWUpKSkKICAg
ICAgICAgcmV0dXJuIHRocm93VGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihjbG9zdXJlLm9s
ZENhbGxGcmFtZSk7CiAKICAgICAvLyBFeGVjdXRlIHRoZSBjb2RlOgpAQCAtMTE1Miw3ICsxMTUy
LDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YQogICAgICAgICB9
CiAgICAgfQogCi0gICAgaWYgKFVOTElLRUxZKHZtLndhdGNoZG9nICYmIHZtLndhdGNoZG9nLT5k
aWRGaXJlKGNhbGxGcmFtZSkpKQorICAgIGlmIChVTkxJS0VMWSh2bS5zaG91bGRUcmlnZ2VyVGVy
bWluYXRpb24oY2FsbEZyYW1lKSkpCiAgICAgICAgIHJldHVybiB0aHJvd1Rlcm1pbmF0ZWRFeGVj
dXRpb25FeGNlcHRpb24oY2FsbEZyYW1lKTsKIAogICAgIEFTU0VSVChjb2RlQmxvY2stPm51bVBh
cmFtZXRlcnMoKSA9PSAxKTsgLy8gMSBwYXJhbWV0ZXIgZm9yICd0aGlzJy4KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMTg4NjAy
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBAQAogI2luY2x1ZGUgIlNjb3BlZEFyZ3VtZW50cy5oIgog
I2luY2x1ZGUgIlRlc3RSdW5uZXJVdGlscy5oIgogI2luY2x1ZGUgIlR5cGVQcm9maWxlckxvZy5o
IgotI2luY2x1ZGUgIldhdGNoZG9nLmgiCisjaW5jbHVkZSAiVk1JbmxpbmVzLmgiCiAjaW5jbHVk
ZSA8d3RmL0lubGluZUFTTS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTk5Myw3ICs5OTMsNyBA
QCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSGFuZGxlV2F0Y2hkCiAgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7
CiAKLSAgICBpZiAoVU5MSUtFTFkodm0ud2F0Y2hkb2cgJiYgdm0ud2F0Y2hkb2ctPmRpZEZpcmUo
ZXhlYykpKQorICAgIGlmIChVTkxJS0VMWSh2bS5zaG91bGRUcmlnZ2VyVGVybWluYXRpb24oZXhl
YykpKQogICAgICAgICB2bS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVUZXJtaW5hdGVkRXhl
Y3V0aW9uRXhjZXB0aW9uKCZ2bSkpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDE4ODYwMikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTU0LDcgKzU0LDcgQEAKICNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgogI2luY2x1
ZGUgIlByb3RvQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlUmFyZURhdGFJbmxpbmVz
LmgiCi0jaW5jbHVkZSAiV2F0Y2hkb2cuaCIKKyNpbmNsdWRlICJWTUlubGluZXMuaCIKICNpbmNs
dWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBMTEludCB7CkBAIC0xMzAzLDcgKzEzMDMsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfaGFuZGxlX3dhCiB7CiAgICAgTExJTlRfQkVHSU5fTk9fU0VUX1BDKCk7CiAgICAgQVNT
RVJUKHZtLndhdGNoZG9nKTsKLSAgICBpZiAoVU5MSUtFTFkodm0ud2F0Y2hkb2ctPmRpZEZpcmUo
ZXhlYykpKQorICAgIGlmIChVTkxJS0VMWSh2bS5zaG91bGRUcmlnZ2VyVGVybWluYXRpb24oZXhl
YykpKQogICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0
aW9uKCZ2bSkpOwogICAgIExMSU5UX1JFVFVSTl9UV08oMCwgZXhlYyk7CiB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJldmlzaW9uIDE4ODYwMikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzNyw3ICsyMzcsNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxWTT4gY3JlYXRlQ29udGV4dEdyb3VwKEhlYXBUeXBl
ID0gU21hbGxIZWFwKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSB+Vk0oKTsKIAotICAgIFdhdGNo
ZG9nJiBlbnN1cmVXYXRjaGRvZygpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIFdhdGNoZG9nJiBl
bnN1cmVXYXRjaGRvZygpOwogCiBwcml2YXRlOgogICAgIFJlZlB0cjxKU0xvY2s+IG1fYXBpTG9j
azsKQEAgLTU1OCw2ICs1NTgsOCBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9p
ZCBxdWV1ZU1pY3JvdGFzayhKU0dsb2JhbE9iamVjdCosIFBhc3NSZWZQdHI8TWljcm90YXNrPik7
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkcmFpbk1pY3JvdGFza3MoKTsKIAorICAgIGlu
bGluZSBib29sIHNob3VsZFRyaWdnZXJUZXJtaW5hdGlvbihFeGVjU3RhdGUqKTsKKwogcHJpdmF0
ZToKICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGZyaWVuZCBj
bGFzcyBDbGVhckV4Y2VwdGlvblNjb3BlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk1JbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk1JbmxpbmVzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTUlubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBWTUlubGlu
ZXNfaAorI2RlZmluZSBWTUlubGluZXNfaAorCisjaW5jbHVkZSAiVk0uaCIKKyNpbmNsdWRlICJX
YXRjaGRvZy5oIgorCituYW1lc3BhY2UgSlNDIHsKKyAgICAKK2Jvb2wgVk06OnNob3VsZFRyaWdn
ZXJUZXJtaW5hdGlvbihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgaWYgKCF3YXRjaGRvZykKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB3YXRjaGRvZy0+ZGlkRmlyZShleGVjKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBMTEludERhdGFfaAorCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XYXRjaGRvZy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2F0Y2hkb2cuY3BwCShyZXZpc2lvbiAx
ODg2MDIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XYXRjaGRvZy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDYgQEAgc3RhdGljIHN0ZDo6Y2hyb25vOjptaWNyb3Nl
Y29uZHMgY3VycmVudAogCiBXYXRjaGRvZzo6V2F0Y2hkb2coKQogICAgIDogbV90aW1lckRpZEZp
cmUoZmFsc2UpCi0gICAgLCBtX2RpZEZpcmUoZmFsc2UpCiAgICAgLCBtX3RpbWVMaW1pdChub1Rp
bWVMaW1pdCkKICAgICAsIG1fY3B1RGVhZGxpbmUobm9UaW1lTGltaXQpCiAgICAgLCBtX3dhbGxD
bG9ja0RlYWRsaW5lKG5vVGltZUxpbWl0KQpAQCAtNjIsMTIgKzYxLDE3IEBAIGlubGluZSBib29s
IFdhdGNoZG9nOjpoYXNTdGFydGVkVGltZXIoKQogICAgIHJldHVybiBtX2NwdURlYWRsaW5lICE9
IG5vVGltZUxpbWl0OwogfQogCitpbmxpbmUgYm9vbCBXYXRjaGRvZzo6aGFzU2NoZWR1bGVkVGVy
bWluYXRpb24oKQoreworICAgIHJldHVybiBtX3RpbWVMaW1pdCA9PSBzdGQ6OmNocm9ubzo6bWlj
cm9zZWNvbmRzKDApOworfQorCiB2b2lkIFdhdGNoZG9nOjpzZXRUaW1lTGltaXQoVk0mIHZtLCBz
dGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzIGxpbWl0LAogICAgIFNob3VsZFRlcm1pbmF0ZUNhbGxi
YWNrIGNhbGxiYWNrLCB2b2lkKiBkYXRhMSwgdm9pZCogZGF0YTIpCiB7Ci0gICAgYm9vbCBoYWRU
aW1lTGltaXQgPSBoYXNUaW1lTGltaXQoKTsKKyAgICBBU1NFUlQoIWhhc1NjaGVkdWxlZFRlcm1p
bmF0aW9uKCkpOwogCi0gICAgbV9kaWRGaXJlID0gZmFsc2U7IC8vIFJlc2V0IHRoZSB3YXRjaGRv
Zy4KKyAgICBib29sIGhhZFRpbWVMaW1pdCA9IGhhc1RpbWVMaW1pdCgpOwogCiAgICAgbV90aW1l
TGltaXQgPSBsaW1pdDsKICAgICBtX2NhbGxiYWNrID0gY2FsbGJhY2s7CkBAIC05NCw4ICs5OCwx
OCBAQCB2b2lkIFdhdGNoZG9nOjpzZXRUaW1lTGltaXQoVk0mIHZtLCBzdGQ6CiBib29sIFdhdGNo
ZG9nOjpkaWRGaXJlU2xvdyhFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgQVNTRVJUKG1fdGltZXJE
aWRGaXJlKTsKKworICAgIC8vIFRvIHByZXZlbnQgYSByYWNlIGNvbmRpdGlvbiB3aXRoIGZpcmVN
YW51YWxseSgpLCB0aGlzIGlzIHRoZSBvbmx5IHBsYWNlIHdoZXJlIHdlJ3JlIGFsbG93ZWQKKyAg
ICAvLyB0byBjbGVhciBtX3RpbWVyRGlkRmlyZS4gVGhhdCBpcyBiZWNhdXNlIGJ5IGdldHRpbmcg
aGVyZSwgd2UncmUgY29tbWl0dGVkIHRvIGNoZWNrCisgICAgLy8gaGFzU2NoZWR1bGVkVGVybWlu
YXRpb24oKSBiZWxvdy4KKwogICAgIG1fdGltZXJEaWRGaXJlID0gZmFsc2U7CiAKKyAgICAvLyBX
ZSBuZWVkIGFuIGV4cGxpY2l0IGNoZWNrIGhlcmUgYmVjYXVzZSBpZiB3ZSBoYXZlIGEgc2NoZWR1
bGVkIHRlcm1pbmF0aW9uLCB3ZSBkb24ndCB3YW50IHRvCisgICAgLy8gZ2l2ZSB0aGUgd2F0Y2hk
b2cgY2FsbGJhY2sgZnVuY3Rpb24gKGlmIGF2YWlsYWJsZSkgdGhlIGNoYW5jZSB0byBwcmV2ZW50
IHRlcm1pbmF0aW9uLgorICAgIGlmIChoYXNTY2hlZHVsZWRUZXJtaW5hdGlvbigpKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKwogICAgIC8vIEEgbGVnaXRpbWF0ZSB0aW1lciBpcyB0aGUgdGltZXIg
d2hpY2ggd29rZSB1cCB3YXRjaGRvZyBhbmQgY2FuIGNhdXNlZCBkaWRGaXJlU2xvdygpIHRvIGJl
CiAgICAgLy8gY2FsbGVkIGFmdGVyIG1fd2FsbENsb2NrRGVhZGxpbmUgaGFzIGV4cGlyZWQuIEFs
bCBvdGhlciB0aW1lcnMgYXJlIGNvbnNpZGVyZWQgdG8gYmUgc3RhbGUsCiAgICAgLy8gYW5kIHRo
ZWlyIHdha2UgdXBzIGFyZSBjb25zaWRlcmVkIHRvIGJlIHNwdXJpb3VzIGFuZCBzaG91bGQgYmUg
aWdub3JlZC4KQEAgLTE2OCwxMCArMTgyLDggQEAgYm9vbCBXYXRjaGRvZzo6ZGlkRmlyZVNsb3co
RXhlY1N0YXRlKiBleAogICAgICAgICAvLyBFbHNlLCB3ZSBsZXQgbV9jYWxsYmFjayBkZWNpZGUg
aWYgd2Ugc2hvdWxkIHRlcm1pbmF0ZSBvciBub3QuCiAgICAgICAgIGJvb2wgbmVlZHNUZXJtaW5h
dGlvbiA9ICFtX2NhbGxiYWNrCiAgICAgICAgICAgICB8fCBtX2NhbGxiYWNrKGV4ZWMsIG1fY2Fs
bGJhY2tEYXRhMSwgbV9jYWxsYmFja0RhdGEyKTsKLSAgICAgICAgaWYgKG5lZWRzVGVybWluYXRp
b24pIHsKLSAgICAgICAgICAgIG1fZGlkRmlyZSA9IHRydWU7CisgICAgICAgIGlmIChuZWVkc1Rl
cm1pbmF0aW9uKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KIAogICAgICAg
ICAvLyBJZiB3ZSBnZXQgaGVyZSwgdGhlbiB0aGUgY2FsbGJhY2sgYWJvdmUgZGlkIG5vdCB3YW50
IHRvIHRlcm1pbmF0ZSBleGVjdXRpb24uIEFzIGEKICAgICAgICAgLy8gcmVzdWx0LCB0aGUgY2Fs
bGJhY2sgbWF5IGhhdmUgZG9uZSBvbmUgb2YgdGhlIGZvbGxvd2luZzoKQEAgLTIwMSw5ICsyMTMs
MTEgQEAgYm9vbCBXYXRjaGRvZzo6aGFzVGltZUxpbWl0KCkKICAgICByZXR1cm4gKG1fdGltZUxp
bWl0ICE9IG5vVGltZUxpbWl0KTsKIH0KIAotdm9pZCBXYXRjaGRvZzo6ZmlyZSgpCit2b2lkIFdh
dGNoZG9nOjpmaXJlTWFudWFsbHkoKQogewotICAgIG1fZGlkRmlyZSA9IHRydWU7CisgICAgbV90
aW1lTGltaXQgPSBzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzKDApOworICAgIFdURjo6c3RvcmVT
dG9yZUZlbmNlKCk7CisgICAgbV90aW1lckRpZEZpcmUgPSB0cnVlOwogfQogCiB2b2lkIFdhdGNo
ZG9nOjplbnRlcmVkVk0oKQpAQCAtMjM3LDcgKzI1MSw2IEBAIHZvaWQgV2F0Y2hkb2c6OnN0YXJ0
VGltZXIoc3RkOjpjaHJvbm86Om0KICAgICAvLyBFbHNlLCB0aGUgY3VycmVudCBhY3RpdmUgdGlt
ZXIgd29uJ3QgZmlyZSBzb29uIGVub3VnaC4gU28sIHN0YXJ0IGEgbmV3IHRpbWVyLgogICAgIHRo
aXMtPnJlZigpOyAvLyBtX3RpbWVySGFuZGxlciB3aWxsIGRlcmVmIHRvIG1hdGNoIGxhdGVyLgog
ICAgIG1fd2FsbENsb2NrRGVhZGxpbmUgPSB3YWxsQ2xvY2tEZWFkbGluZTsKLSAgICBtX3RpbWVy
RGlkRmlyZSA9IGZhbHNlOwogCiAgICAgLy8gV2UgY2xlYXIgbV90aW1lckRpZEZpcmUgYmVjYXVz
ZSB3ZSdyZSBzdGFydGluZyBhIG5ldyB0aW1lci4gSG93ZXZlciwgd2UgbmVlZCB0byBtYWtlIHN1
cmUKICAgICAvLyB0aGF0IHRoZSBjbGVhcmluZyBvY2N1cnMgYmVmb3JlIHRoZSB0aW1lciB0aHJl
YWQgaXMgc3RhcnRlZC4gVGhlcmVhZnRlciwgb25seSBkaWRGaXJlU2xvdygpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XYXRjaGRvZy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dhdGNoZG9nLmgJKHJldmlzaW9uIDE4ODYwMikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dhdGNoZG9nLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ2LDEyICs0Niw4IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIGJvb2wgKCpTaG91bGRUZXJt
aW5hdGVDYWxsYmFjaykoRXhlY1N0YXRlKiwgdm9pZCogZGF0YTEsIHZvaWQqIGRhdGEyKTsKICAg
ICB2b2lkIHNldFRpbWVMaW1pdChWTSYsIHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHMgbGltaXQs
IFNob3VsZFRlcm1pbmF0ZUNhbGxiYWNrID0gMCwgdm9pZCogZGF0YTEgPSAwLCB2b2lkKiBkYXRh
MiA9IDApOwogCi0gICAgLy8gVGhpcyB2ZXJzaW9uIG9mIGRpZEZpcmUoKSB3aWxsIGNoZWNrIHRo
ZSBlbGFwc2VkIENQVSB0aW1lIGFuZCBjYWxsIHRoZQotICAgIC8vIGNhbGxiYWNrIChpZiBuZWVk
ZWQpIHRvIGRldGVybWluZSBpZiB0aGUgd2F0Y2hkb2cgc2hvdWxkIGZpcmUuCiAgICAgYm9vbCBk
aWRGaXJlKEV4ZWNTdGF0ZSogZXhlYykKICAgICB7Ci0gICAgICAgIGlmIChtX2RpZEZpcmUpCi0g
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgaWYgKCFtX3RpbWVyRGlkRmlyZSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcmV0dXJuIGRpZEZpcmVTbG93KGV4ZWMp
OwpAQCAtNjEsMTEgKzU3LDcgQEAgcHVibGljOgogICAgIHZvaWQgZW50ZXJlZFZNKCk7CiAgICAg
dm9pZCBleGl0ZWRWTSgpOwogCi0gICAgLy8gVGhpcyB2ZXJzaW9uIG9mIGRpZEZpcmUoKSBpcyBh
IG1vcmUgZWZmaWNpZW50IHZlcnNpb24gZm9yIHdoZW4gd2Ugd2FudAotICAgIC8vIHRvIGtub3cg
aWYgdGhlIHdhdGNoZG9nIGhhcyBmaXJlZCBpbiB0aGUgcGFzdCwgYW5kIG5vdCB3aGV0aGVyIGl0
IHNob3VsZAotICAgIC8vIGZpcmUgcmlnaHQgbm93LgotICAgIGJvb2wgZGlkRmlyZSgpIHsgcmV0
dXJuIG1fZGlkRmlyZTsgfQotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZmlyZSgpOworICAg
IEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZmlyZU1hbnVhbGx5KCk7CiAKICAgICB2b2lkKiB0aW1l
ckRpZEZpcmVBZGRyZXNzKCkgeyByZXR1cm4gJm1fdGltZXJEaWRGaXJlOyB9CiAKQEAgLTc2LDYg
KzY4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0b3BUaW1lcigpOwogCiAgICAgaW5saW5lIGJv
b2wgaGFzU3RhcnRlZFRpbWVyKCk7CisgICAgaW5saW5lIGJvb2wgaGFzU2NoZWR1bGVkVGVybWlu
YXRpb24oKTsKIAogICAgIGJvb2wgZGlkRmlyZVNsb3coRXhlY1N0YXRlKik7CiAKQEAgLTg1LDcg
Kzc4LDYgQEAgcHJpdmF0ZToKICAgICAvLyBOT1RFOiBtX3RpbWVyRGlkRmlyZSBpcyBvbmx5IHNl
dCBieSB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgdGltZXIKICAgICAvLyAocHJvYmFibHkgZnJvbSBh
bm90aGVyIHRocmVhZCkgYnV0IGlzIG9ubHkgY2xlYXJlZCBpbiB0aGUgc2NyaXB0IHRocmVhZC4K
ICAgICBib29sIG1fdGltZXJEaWRGaXJlOwotICAgIGJvb2wgbV9kaWRGaXJlOwogCiAgICAgc3Rk
OjpjaHJvbm86Om1pY3Jvc2Vjb25kcyBtX3RpbWVMaW1pdDsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2
aXNpb24gMTg4NjAyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMjYgQEAKKzIwMTUtMDgtMTggIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUu
Y29tPgorCisgICAgICAgIHdhdGNoZG9nIG1fZGlkRmlyZSBzdGF0ZSBlcnJvbmVvdXNseSByZXRh
aW5lZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEz
MTA4MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cy4gIFRoZSBuZXcgY29kZSBpcyBjb3ZlcmVkIGJ5ICB0aGUgSlNDIEFQSSB0ZXN0
cyBhbmQgYW4gZXhpc3RpbmcgdGVzdDoKKyAgICAgICAgZmFzdC93b3JrZXJzL3dvcmtlci10ZXJt
aW5hdGUtZm9yZXZlci5odG1sCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVu
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNFdmVudExpc3RlbmVyOjpoYW5kbGVFdmVudCk6
CisgICAgICAgICogYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpXb3JrZXJTY3JpcHRDb250cm9s
bGVyKToKKyAgICAgICAgLSBBbHdheXMgY3JlYXRlIGEgd2F0Y2hkb2cgZm9yIHRoZSBXZWIgV29y
a2VyJ3MgVk0uICBXZSBuZWVkIHRoaXMgaW4gb3JkZXIgdG8gc3VwcG9ydAorICAgICAgICAgIFdv
cmtlci50ZXJtaW5hdGUoKS4KKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdENvbnRyb2xs
ZXI6OmV2YWx1YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdENvbnRyb2xsZXI6
OnNjaGVkdWxlRXhlY3V0aW9uVGVybWluYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
U2NyaXB0Q29udHJvbGxlcjo6aXNUZXJtaW5hdGluZ0V4ZWN1dGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpmb3JiaWRFeGVjdXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6aXNFeGVjdXRpb25UZXJtaW5hdGluZyk6
IERlbGV0ZWQuCisgICAgICAgICogYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5o
OgorCiAyMDE1LTA4LTE4ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgZml4IHRoZSBjYWlybyBidWlsZCBhZnRlciByMTg4
NTk0LgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVu
ZXIuY3BwCShyZXZpc2lvbiAxODg2MDIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0V2ZW50TGlzdGVuZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzUsOSArMTM1LDEwIEBAIHZv
aWQgSlNFdmVudExpc3RlbmVyOjpoYW5kbGVFdmVudChTY3JpcHQKICAgICAgICAgZ2xvYmFsT2Jq
ZWN0LT5zZXRDdXJyZW50RXZlbnQoc2F2ZWRFdmVudCk7CiAKICAgICAgICAgaWYgKGlzPFdvcmtl
ckdsb2JhbFNjb3BlPigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkpIHsKKyAgICAgICAgICAgIGF1
dG8gc2NyaXB0Q29udHJvbGxlciA9IGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPigqc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCkuc2NyaXB0KCk7CiAgICAgICAgICAgICBib29sIHRlcm1pbmF0b3JD
YXVzZWRFeGNlcHRpb24gPSAoZXhlYy0+aGFkRXhjZXB0aW9uKCkgJiYgaXNUZXJtaW5hdGVkRXhl
Y3V0aW9uRXhjZXB0aW9uKGV4ZWMtPmV4Y2VwdGlvbigpKSk7Ci0gICAgICAgICAgICBpZiAodGVy
bWluYXRvckNhdXNlZEV4Y2VwdGlvbiB8fCAodm0ud2F0Y2hkb2cgJiYgdm0ud2F0Y2hkb2ctPmRp
ZEZpcmUoKSkpCi0gICAgICAgICAgICAgICAgZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KCpz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KS5zY3JpcHQoKS0+Zm9yYmlkRXhlY3V0aW9uKCk7CisgICAg
ICAgICAgICBpZiAodGVybWluYXRvckNhdXNlZEV4Y2VwdGlvbiB8fCBzY3JpcHRDb250cm9sbGVy
LT5pc1Rlcm1pbmF0aW5nRXhlY3V0aW9uKCkpCisgICAgICAgICAgICAgICAgc2NyaXB0Q29udHJv
bGxlci0+Zm9yYmlkRXhlY3V0aW9uKCk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoZXhjZXB0
aW9uKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250
cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3Jr
ZXJTY3JpcHRDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMTg4NjAyKQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTU2LDYgKzU2LDcgQEAgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6V29ya2VyU2NyaXB0Q29u
dAogICAgICwgbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIoKm1fdm0pCiAgICAgLCBtX2V4ZWN1
dGlvbkZvcmJpZGRlbihmYWxzZSkKIHsKKyAgICBtX3ZtLT5lbnN1cmVXYXRjaGRvZygpOwogICAg
IGluaXROb3JtYWxXb3JsZENsaWVudERhdGEobV92bS5nZXQoKSk7CiB9CiAKQEAgLTEyMSw4ICsx
MjIsNyBAQCB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKGNvCiAgICAgSlND
OjpldmFsdWF0ZShleGVjLCBzb3VyY2VDb2RlLmpzU291cmNlQ29kZSgpLCBtX3dvcmtlckdsb2Jh
bFNjb3BlV3JhcHBlci0+Z2xvYmFsVGhpcygpLCByZXR1cm5lZEV4Y2VwdGlvbik7CiAKICAgICBW
TSYgdm0gPSBleGVjLT52bSgpOwotICAgIGlmICgocmV0dXJuZWRFeGNlcHRpb24gJiYgaXNUZXJt
aW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKHJldHVybmVkRXhjZXB0aW9uKSkKLSAgICAgICAgfHwg
KHZtLndhdGNoZG9nICYmIHZtLndhdGNoZG9nLT5kaWRGaXJlKCkpKSB7CisgICAgaWYgKChyZXR1
cm5lZEV4Y2VwdGlvbiAmJiBpc1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24ocmV0dXJuZWRF
eGNlcHRpb24pKSB8fCBpc1Rlcm1pbmF0aW5nRXhlY3V0aW9uKCkpIHsKICAgICAgICAgZm9yYmlk
RXhlY3V0aW9uKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xNDksMjAgKzE0OSwxOSBA
QCB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OnNldEV4Y2VwdGlvCiB2b2lkIFdvcmtlclNj
cmlwdENvbnRyb2xsZXI6OnNjaGVkdWxlRXhlY3V0aW9uVGVybWluYXRpb24oKQogewogICAgIC8v
IFRoZSBtdXRleCBwcm92aWRlcyBhIG1lbW9yeSBiYXJyaWVyIHRvIGVuc3VyZSB0aGF0IG9uY2UK
LSAgICAvLyB0ZXJtaW5hdGlvbiBpcyBzY2hlZHVsZWQsIGlzRXhlY3V0aW9uVGVybWluYXRpbmcg
d2lsbAorICAgIC8vIHRlcm1pbmF0aW9uIGlzIHNjaGVkdWxlZCwgaXNUZXJtaW5hdGluZ0V4ZWN1
dGlvbigpIHdpbGwKICAgICAvLyBhY2N1cmF0ZWx5IHJlZmxlY3QgdGhhdCBzdGF0ZSB3aGVuIGNh
bGxlZCBmcm9tIGFub3RoZXIgdGhyZWFkLgogICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2NoZWR1
bGVkVGVybWluYXRpb25NdXRleCk7Ci0gICAgaWYgKG1fdm0tPndhdGNoZG9nKQotICAgICAgICBt
X3ZtLT53YXRjaGRvZy0+ZmlyZSgpOworICAgIG1faXNUZXJtaW5hdGluZ0V4ZWN1dGlvbiA9IHRy
dWU7CisgICAgQVNTRVJUKG1fdm0tPndhdGNoZG9nKTsKKyAgICBtX3ZtLT53YXRjaGRvZy0+Zmly
ZU1hbnVhbGx5KCk7CiB9CiAKLWJvb2wgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6aXNFeGVjdXRp
b25UZXJtaW5hdGluZygpIGNvbnN0Citib29sIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmlzVGVy
bWluYXRpbmdFeGVjdXRpb24oKSBjb25zdAogewogICAgIC8vIFNlZSBjb21tZW50cyBpbiBzY2hl
ZHVsZUV4ZWN1dGlvblRlcm1pbmF0aW9uIHJlZ2FyZGluZyBtdXRleCB1c2FnZS4KICAgICBMb2Nr
SG9sZGVyIGxvY2tlcihtX3NjaGVkdWxlZFRlcm1pbmF0aW9uTXV0ZXgpOwotICAgIGlmIChtX3Zt
LT53YXRjaGRvZykKLSAgICAgICAgcmV0dXJuIG1fdm0tPndhdGNoZG9nLT5kaWRGaXJlKCk7Ci0g
ICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBtX2lzVGVybWluYXRpbmdFeGVjdXRpb247CiB9
CiAKIHZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6Zm9yYmlkRXhlY3V0aW9uKCkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9s
bGVyLmgJKHJldmlzaW9uIDE4ODYwMikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dv
cmtlclNjcmlwdENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNzEsNyArNzEsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIGZvcmJpZEV4ZWN1dGlvbigpL2lzRXhlY3V0
aW9uRm9yYmlkZGVuKCkgdG8gZ3VhcmQgYWdhaW5zdCByZWVudHJ5IGludG8gSlMuCiAgICAgICAg
IC8vIENhbiBiZSBjYWxsZWQgZnJvbSBhbnkgdGhyZWFkLgogICAgICAgICB2b2lkIHNjaGVkdWxl
RXhlY3V0aW9uVGVybWluYXRpb24oKTsKLSAgICAgICAgYm9vbCBpc0V4ZWN1dGlvblRlcm1pbmF0
aW5nKCkgY29uc3Q7CisgICAgICAgIGJvb2wgaXNUZXJtaW5hdGluZ0V4ZWN1dGlvbigpIGNvbnN0
OwogCiAgICAgICAgIC8vIENhbGxlZCBvbiBXb3JrZXIgdGhyZWFkIHdoZW4gSlMgZXhpdHMgd2l0
aCB0ZXJtaW5hdGlvbiBleGNlcHRpb24gY2F1c2VkIGJ5IGZvcmJpZEV4ZWN1dGlvbigpIHJlcXVl
c3QsCiAgICAgICAgIC8vIG9yIGJ5IFdvcmtlciB0aHJlYWQgdGVybWluYXRpb24gY29kZSB0byBw
cmV2ZW50IGZ1dHVyZSBlbnRyeSBpbnRvIEpTLgpAQCAtOTcsNiArOTcsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIFdvcmtlckdsb2JhbFNjb3BlKiBtX3dvcmtlckdsb2JhbFNjb3Bl
OwogICAgICAgICBKU0M6OlN0cm9uZzxKU1dvcmtlckdsb2JhbFNjb3BlPiBtX3dvcmtlckdsb2Jh
bFNjb3BlV3JhcHBlcjsKICAgICAgICAgYm9vbCBtX2V4ZWN1dGlvbkZvcmJpZGRlbjsKKyAgICAg
ICAgYm9vbCBtX2lzVGVybWluYXRpbmdFeGVjdXRpb24geyBmYWxzZSB9OwogICAgICAgICBtdXRh
YmxlIExvY2sgbV9zY2hlZHVsZWRUZXJtaW5hdGlvbk11dGV4OwogICAgIH07CiAKSW5kZXg6IExh
eW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDE4ODYwMikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE0IEBACisyMDE1LTA4LTE0ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxl
LmNvbT4KKworICAgICAgICB3YXRjaGRvZyBtX2RpZEZpcmUgc3RhdGUgZXJyb25lb3VzbHkgcmV0
YWluZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MzEwODIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IGZhc3Qvd29ya2Vycy93b3JrZXItdGVybWluYXRlLWZvcmV2ZXItZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIGZhc3Qvd29ya2Vycy93b3JrZXItdGVybWluYXRlLWZvcmV2ZXIuaHRtbDoKKyAgICAg
ICAgLSBVcGRhdGVkIHRvIGNoZWNrIGlmIHRoZSB3b3JrZXIgYWN0dWFsbHkgZGlkIHRlcm1pbmF0
ZS4gCisKIDIwMTUtMDgtMTggIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+
CiAKICAgICAgICAgTWFyayBmYXN0L2Nzcy93aWxsLWNoYW5nZS93aWxsLWNoYW5nZS1jcmVhdGVz
LXN0YWNraW5nLWNvbnRleHQuaHRtbCBhcyBhbiBpbWFnZS1vbmx5CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L3dvcmtlcnMvd29ya2VyLXRlcm1pbmF0ZS1mb3JldmVyLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLXRlcm1pbmF0ZS1mb3Jl
dmVyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTg4NjAyKQorKysgTGF5b3V0VGVzdHMvZmFzdC93
b3JrZXJzL3dvcmtlci10ZXJtaW5hdGUtZm9yZXZlci1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTEgKzEsMyBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE1OiBXb3JrZXIgd2FzIHN0
YXJ0ZWQKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAzNDogV29ya2VyIHdhcyB0ZXJtaW5hdGVkCiBU
ZXN0IFdvcmtlci50ZXJtaW5hdGUoKSBmb3IgYSB3b3JrZXIgdGhhdCB0cmllcyB0byBydW4gZm9y
ZXZlci4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3JrZXItdGVybWluYXRlLWZv
cmV2ZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2Vy
LXRlcm1pbmF0ZS1mb3JldmVyLmh0bWwJKHJldmlzaW9uIDE4ODYwMikKKysrIExheW91dFRlc3Rz
L2Zhc3Qvd29ya2Vycy93b3JrZXItdGVybWluYXRlLWZvcmV2ZXIuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMSwxMSArMSw1MiBAQAogPGJvZHk+CiA8cD5UZXN0IFdvcmtlci50ZXJtaW5hdGUoKSBm
b3IgYSB3b3JrZXIgdGhhdCB0cmllcyB0byBydW4gZm9yZXZlci48L3A+CiA8c2NyaXB0PgotaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Cit9CiAK
IHZhciB3b3JrZXIgPSBuZXcgV29ya2VyKCdyZXNvdXJjZXMvd29ya2VyLXJ1bi1mb3JldmVyLmpz
Jyk7Ci13b3JrZXIudGVybWluYXRlKCk7CisKK2Z1bmN0aW9uIHdhaXRGb3JXb3JrZXJUb1N0YXJ0
KCkgeworICAgIHZhciBzdGFydFRpbWUgPSBEYXRlLm5vdygpOworICAgIGZ1bmN0aW9uIGNoZWNr
SWZXb3JrZXJTdGFydGVkKCkgeworICAgICAgICBpZiAoaW50ZXJuYWxzLndvcmtlclRocmVhZENv
dW50ID09IDEpIHsKKyAgICAgICAgICAgIGNvbnNvbGUubG9nKCJXb3JrZXIgd2FzIHN0YXJ0ZWQi
KTsKKyAgICAgICAgICAgIHdvcmtlci50ZXJtaW5hdGUoKTsKKyAgICAgICAgICAgIHNldFRpbWVv
dXQod2FpdEZvcldvcmtlclRvU3RvcCwgMCk7CisKKyAgICAgICAgfSBlbHNlIGlmIChEYXRlLm5v
dygpIC0gc3RhcnRUaW1lIDwgNTAwMCkgeworICAgICAgICAgICAgc2V0VGltZW91dChjaGVja0lm
V29ya2VyU3RhcnRlZCwgMCk7CisKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGNvbnNv
bGUubG9nKCJXb3JrZXIgZGlkIG5vdCBzaG93IHVwIik7CisgICAgICAgICAgICB0ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsKKyAgICAgICAgfSAgICAgICAgICAgIAorICAgIH0KKyAgICBzZXRUaW1l
b3V0KGNoZWNrSWZXb3JrZXJTdGFydGVkLCAwKTsKK30KKworZnVuY3Rpb24gd2FpdEZvcldvcmtl
clRvU3RvcCgpIHsKKyAgICB2YXIgc3RhcnRUaW1lID0gRGF0ZS5ub3coKTsKKyAgICBmdW5jdGlv
biBjaGVja0lmV29ya2VyU3RvcHBlZCgpIHsKKyAgICAgICAgaWYgKGludGVybmFscy53b3JrZXJU
aHJlYWRDb3VudCA9PSAwKSB7CisgICAgICAgICAgICBjb25zb2xlLmxvZygiV29ya2VyIHdhcyB0
ZXJtaW5hdGVkIik7CisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKworICAg
ICAgICB9IGVsc2UgaWYgKERhdGUubm93KCkgLSBzdGFydFRpbWUgPCA1MDAwKSB7CisgICAgICAg
ICAgICBzZXRUaW1lb3V0KGNoZWNrSWZXb3JrZXJTdG9wcGVkLCAwKTsKKworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgY29uc29sZS5sb2coIkRpZCBub3Qgc2VlIHdvcmtlciB0ZXJtaW5h
dGUiKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICB9ICAg
ICAgICAgICAgCisgICAgfQorICAgIHNldFRpbWVvdXQoY2hlY2tJZldvcmtlclN0b3BwZWQsIDAp
OworfQorCit3aW5kb3cuc2V0VGltZW91dCh3YWl0Rm9yV29ya2VyVG9TdGFydCwgMCk7CisKIDwv
c2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgo=
</data>
<flag name="review"
          id="284479"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259543</attachid>
            <date>2015-08-20 18:01:29 -0700</date>
            <delta_ts>2015-08-26 12:48:04 -0700</delta_ts>
            <desc>fix 6</desc>
            <filename>bug-131082.patch</filename>
            <type>text/plain</type>
            <size>42036</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg4NzIyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkwIEBA
CisyMDE1LTA4LTIwICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICB3
YXRjaGRvZyBtX2RpZEZpcmUgc3RhdGUgZXJyb25lb3VzbHkgcmV0YWluZWQuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzEwODIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgd2F0Y2hkb2cgY2FuIGZp
cmUgZm9yIDIgcmVhc29uczoKKyAgICAgICAgMS4gYW4gZXh0ZXJuYWwgY29udHJvbGxpbmcgZW50
aXR5IChpLmUuIGFub3RoZXIgdGhyZWFkKSBoYXMgc2NoZWR1bGVkIHRlcm1pbmF0aW9uCisgICAg
ICAgICAgIG9mIHRoZSBzY3JpcHQgdGhyZWFkIHZpYSB3YXRjaGRvZzo6dGVybWluYXRlU29vbigp
LgorICAgICAgICAyLiB0aGUgYWxsb3dlZCBDUFUgdGltZSBoYXMgZXhwaXJlZC4KKworICAgICAg
ICBGb3IgY2FzZSAxLCB3ZSdyZSBkb2luZyBhd2F5IHdpdGggdGhlIG1fZGlkRmlyZSBmbGFnLiAg
V2F0Y2hkb2c6OnRlcm1pbmF0ZVNvb24oKSAKKyAgICAgICAgd2lsbCBzZXQgdGhlIHRpbWVyIGRl
YWRsaW5lcyBhbmQgbV90aW1lTGltaXQgdG8gMCwgYW5kIG1fdGltZXJEaWRGaXJlIHRvIHRydWUu
CisgICAgICAgIFRoaXMgd2lsbCBnZXQgdGhlIHNjcmlwdCB0aHJlYWQgdG8gY2hlY2sgV2F0Y2hk
b2c6OmRpZEZpcmUoKSBhbmQgdGVybWluYXRlCisgICAgICAgIGV4ZWN1dGlvbi4KKworICAgICAg
ICBOb3RlOiB0aGUgd2F0Y2hkb2cgb25seSBndWFyYW50ZWVzIHRoYXQgc2NyaXB0IGV4ZWN1dGlv
biB3aWxsIHRlcm1pbmF0ZSBhcyBzb29uCisgICAgICAgIGFzIHBvc3NpYmxlIGR1ZSB0byBhIHRp
bWUgbGltaXQgb2YgMC4gIE9uY2Ugd2UndmUgZXhpdGVkIHRoZSBWTSwgdGhlIGNsaWVudCBvZiB0
aGUKKyAgICAgICAgVk0gaXMgcmVzcG9uc2libGUgZnJvbSBrZWVwaW5nIGEgZmxhZyB0byBwcmV2
ZW50IG5ldyBzY3JpcHQgZXhlY3V0aW9uLgorCisgICAgICAgIEluIGEgcmFjZSBjb25kaXRpb24s
IGlmIHRlcm1pbmF0ZVNvb24oKSBpcyBjYWxsZWQganVzdCBhZnRlciBleGVjdXRpb24gaGFzIGdv
dHRlbgorICAgICAgICBwYXN0IHRoZSBjbGllbnQncyByZWVudHJ5IGNoZWNrIGFuZCB0aGUgY2xp
ZW50IGlzIGluIHRoZSBwcm9jZXNzIG9mIHJlLWVudGVyaW5nLAorICAgICAgICB0aGUgd29yc3Qg
dGhhdCBjYW4gaGFwcGVuIGlzIHRoYXQgd2Ugd2lsbCBzY2hlZHVsZSB0aGUgd2F0Y2hkb2cgdGlt
ZXIgdG8gZmlyZQorICAgICAgICBhZnRlciBhIHBlcmlvZCBvZiAwLiAgVGhpcyB3aWxsIHRlcm1p
bmF0ZSBzY3JpcHQgZXhlY3V0aW9uIHF1aWNrbHksIGFuZCB0aGVyZWFmdGVyCisgICAgICAgIHRo
ZSBjbGllbnQncyBjaGVjayBzaG91bGQgYmUgYWJsZSB0byBwcmV2ZW50IGZ1cnRoZXIgZW50cnkg
aW50byB0aGUgVk0uCisKKyAgICAgICAgVGhlIGNvcnJlY3RuZXNzIChpLmUuIGhhcyBubyByYWNl
IGNvbmRpdGlvbikgb2YgdGhpcyB0eXBlIG9mIHRlcm1pbmF0aW9uIHJlbGllcworICAgICAgICBv
biB0aGUgdGVybWluYXRpb24gc3RhdGUgYmVpbmcgc3RpY2t5LiAgT25jZSB0aGUgc2NyaXB0IHRo
cmVhZCBpcyB0ZXJtaW5hdGVkIHRoaXMKKyAgICAgICAgd2F5LCB0aGUgVk0gd2lsbCBjb250aW51
ZSB0byB0ZXJtaW5hdGUgc2NyaXB0cyBxdWlja2x5IHVudGlsIHRoZSBjbGllbnQgc2V0cyB0aGUK
KyAgICAgICAgdGltZSBsaW1pdCB0byBhIG5vbi16ZXJvIHZhbHVlIChvciBjbGVhcnMgaXQgd2hp
Y2ggc2V0cyB0aGUgdGltZSBsaW1pdCB0bworICAgICAgICBub1RpbWVMaW1pdCkuCisKKyAgICAg
ICAgRm9yIGNhc2UgMiwgdGhlIHdhdGNoZG9nIGRvZXMgbm90IGFsdGVyIG1fdGltZUxpbWl0LiAg
SWYgdGhlIENQVSBkZWFkbGluZSBoYXMKKyAgICAgICAgYmVlbiByZWFjaGVkLCB0aGUgc2NyaXB0
IHRocmVhZCB3aWxsIHRlcm1pbmF0ZSBleGVjdXRpb24gYW5kIGV4aXQgdGhlIFZNLgorCisgICAg
ICAgIElmIHRoZSBjbGllbnQgb2YgdGhlIFZNIHN0YXJ0cyBuZXcgc2NyaXB0IGV4ZWN1dGlvbiwg
dGhlIHdhdGNoZG9nIHdpbGwgYWxsb3cKKyAgICAgICAgZXhlY3V0aW9uIGZvciB0aGUgc3BlY2lm
aWVkIG1fdGltZUxpbWl0LiAgSW4gdGhpcyBjYXNlLCBzaW5jZSBtX3RpbWVMaW1pdCBpcyBub3QK
KyAgICAgICAgMCwgdGhlIHNjcmlwdCBnZXRzIGEgZnJlc2ggYWxsb3dhbmNlIG9mIENQVSB0aW1l
IHRvIGV4ZWN1dGUuICBIZW5jZSwgdGVybWluYXRpb25zCisgICAgICAgIGR1ZSB0byB3YXRjaGRv
ZyB0aW1lIG91dHMgYXJlIG5vIGxvbmdlciBzdGlja3kuCisKKyAgICAgICAgKiBBUEkvSlNDb250
ZXh0UmVmLmNwcDoKKyAgICAgICAgKEpTQ29udGV4dEdyb3VwU2V0RXhlY3V0aW9uVGltZUxpbWl0
KToKKyAgICAgICAgKEpTQ29udGV4dEdyb3VwQ2xlYXJFeGVjdXRpb25UaW1lTGltaXQpOgorICAg
ICAgICAqIEFQSS90ZXN0cy9FeGVjdXRpb25UaW1lTGltaXRUZXN0LmNwcDoKKyAgICAgICAgLSBB
ZGQgdGVzdCBzY2VuYXJpb3MgdG8gdmVyaWZ5IHRoYXQgdGhlIHdhdGNoZG9nIGlzIGF1dG9tYXRp
Y2FsbHkgcmVzZXQgYnkgdGhlIFZNCisgICAgICAgICAgdXBvbiB0aHJvd2luZyB0aGUgVGVybWlu
YXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbi4KKworICAgICAgICAodGVzdFJlc2V0QWZ0ZXJUaW1lb3V0
KToKKyAgICAgICAgKHRlc3RFeGVjdXRpb25UaW1lTGltaXQpOgorICAgICAgICAqIEphdmFTY3Jp
cHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvajoKKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVyczoKKyAgICAgICAg
KiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJz
ZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoK
KyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGUpOgorICAgICAgICAoSlNDOjpJbnRl
cnByZXRlcjo6ZXhlY3V0ZUNhbGwpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0
ZUNvbnN0cnVjdCk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfbG9vcF9oaW50KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19v
cF9sb29wX2hpbnQpOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAg
KiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9T
TE9XX1BBVEhfREVDTCk6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6
OlZNOjpWTSk6CisgICAgICAgIChKU0M6OlZNOjplbnN1cmVXYXRjaGRvZyk6CisgICAgICAgICog
cnVudGltZS9WTS5oOgorICAgICAgICAqIHJ1bnRpbWUvVk1JbmxpbmVzLmg6IEFkZGVkLgorICAg
ICAgICAoSlNDOjpWTTo6c2hvdWxkVHJpZ2dlclRlcm1pbmF0aW9uKToKKyAgICAgICAgKiBydW50
aW1lL1dhdGNoZG9nLmNwcDoKKyAgICAgICAgKEpTQzo6V2F0Y2hkb2c6OldhdGNoZG9nKToKKyAg
ICAgICAgKEpTQzo6V2F0Y2hkb2c6OnNldFRpbWVMaW1pdCk6CisgICAgICAgIChKU0M6OldhdGNo
ZG9nOjp0ZXJtaW5hdGVTb29uKToKKyAgICAgICAgKEpTQzo6V2F0Y2hkb2c6OmRpZEZpcmVTbG93
KToKKyAgICAgICAgKEpTQzo6V2F0Y2hkb2c6Omhhc1RpbWVMaW1pdCk6CisgICAgICAgIChKU0M6
OldhdGNoZG9nOjplbnRlcmVkVk0pOgorICAgICAgICAoSlNDOjpXYXRjaGRvZzo6ZXhpdGVkVk0p
OgorICAgICAgICAoSlNDOjpXYXRjaGRvZzo6c3RhcnRUaW1lcik6CisgICAgICAgIChKU0M6Oldh
dGNoZG9nOjpzdG9wVGltZXIpOgorICAgICAgICAoSlNDOjpXYXRjaGRvZzo6aGFzU3RhcnRlZFRp
bWVyKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2F0Y2hkb2c6OmZpcmUpOiBEZWxldGVkLgor
ICAgICAgICAqIHJ1bnRpbWUvV2F0Y2hkb2cuaDoKKyAgICAgICAgKEpTQzo6V2F0Y2hkb2c6OmRp
ZEZpcmUpOgorICAgICAgICAoSlNDOjpXYXRjaGRvZzo6dGltZXJEaWRGaXJlQWRkcmVzcyk6CisK
IDIwMTUtMDgtMjAgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBP
dmVyZmxvdyBjaGVjayBlbGltaW5hdGlvbiBmYWlscyBmb3IgYSBzaW1wbGUgdGVzdCBjYXNlCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCShyZXZpc2lv
biAxODg3MjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTk5LDkgKzk5LDkgQEAgdm9pZCBKU0NvbnRleHRHcm91cFNldEV4
ZWN1dGlvblRpbWVMaW1pdAogICAgIFdhdGNoZG9nJiB3YXRjaGRvZyA9IHZtLmVuc3VyZVdhdGNo
ZG9nKCk7CiAgICAgaWYgKGNhbGxiYWNrKSB7CiAgICAgICAgIHZvaWQqIGNhbGxiYWNrUHRyID0g
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oY2FsbGJhY2spOwotICAgICAgICB3YXRjaGRvZy5zZXRU
aW1lTGltaXQodm0sIHN0ZDo6Y2hyb25vOjpkdXJhdGlvbl9jYXN0PHN0ZDo6Y2hyb25vOjptaWNy
b3NlY29uZHM+KHN0ZDo6Y2hyb25vOjpkdXJhdGlvbjxkb3VibGU+KGxpbWl0KSksIGludGVybmFs
U2NyaXB0VGltZW91dENhbGxiYWNrLCBjYWxsYmFja1B0ciwgY2FsbGJhY2tEYXRhKTsKKyAgICAg
ICAgd2F0Y2hkb2cuc2V0VGltZUxpbWl0KHN0ZDo6Y2hyb25vOjpkdXJhdGlvbl9jYXN0PHN0ZDo6
Y2hyb25vOjptaWNyb3NlY29uZHM+KHN0ZDo6Y2hyb25vOjpkdXJhdGlvbjxkb3VibGU+KGxpbWl0
KSksIGludGVybmFsU2NyaXB0VGltZW91dENhbGxiYWNrLCBjYWxsYmFja1B0ciwgY2FsbGJhY2tE
YXRhKTsKICAgICB9IGVsc2UKLSAgICAgICAgd2F0Y2hkb2cuc2V0VGltZUxpbWl0KHZtLCBzdGQ6
OmNocm9ubzo6ZHVyYXRpb25fY2FzdDxzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzPihzdGQ6OmNo
cm9ubzo6ZHVyYXRpb248ZG91YmxlPihsaW1pdCkpKTsKKyAgICAgICAgd2F0Y2hkb2cuc2V0VGlt
ZUxpbWl0KHN0ZDo6Y2hyb25vOjpkdXJhdGlvbl9jYXN0PHN0ZDo6Y2hyb25vOjptaWNyb3NlY29u
ZHM+KHN0ZDo6Y2hyb25vOjpkdXJhdGlvbjxkb3VibGU+KGxpbWl0KSkpOwogfQogCiB2b2lkIEpT
Q29udGV4dEdyb3VwQ2xlYXJFeGVjdXRpb25UaW1lTGltaXQoSlNDb250ZXh0R3JvdXBSZWYgZ3Jv
dXApCkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBKU0NvbnRleHRHcm91cENsZWFyRXhlY3V0aW9u
VGltZUxpbQogICAgIFZNJiB2bSA9ICp0b0pTKGdyb3VwKTsKICAgICBKU0xvY2tIb2xkZXIgbG9j
a2VyKCZ2bSk7CiAgICAgaWYgKHZtLndhdGNoZG9nKQotICAgICAgICB2bS53YXRjaGRvZy0+c2V0
VGltZUxpbWl0KHZtLCBXYXRjaGRvZzo6bm9UaW1lTGltaXQpOworICAgICAgICB2bS53YXRjaGRv
Zy0+c2V0VGltZUxpbWl0KFdhdGNoZG9nOjpub1RpbWVMaW1pdCk7CiB9CiAKIC8vIEZyb20gdGhl
IEFQSSdzIHBlcnNwZWN0aXZlLCBhIGdsb2JhbCBjb250ZXh0IHJlbWFpbnMgYWxpdmUgaWZmIGl0
IGhhcyBiZWVuIEpTR2xvYmFsQ29udGV4dFJldGFpbmVkLgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS90ZXN0cy9FeGVjdXRpb25UaW1lTGltaXRUZXN0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0V4ZWN1dGlvblRpbWVMaW1pdFRlc3Qu
Y3BwCShyZXZpc2lvbiAxODg3MjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3Rz
L0V4ZWN1dGlvblRpbWVMaW1pdFRlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Myw2ICs4Mywy
MiBAQCBzdHJ1Y3QgVGllck9wdGlvbnMgewogICAgIGNvbnN0IGNoYXIqIG9wdGlvbnNTdHI7CiB9
OwogCitzdGF0aWMgdm9pZCB0ZXN0UmVzZXRBZnRlclRpbWVvdXQoYm9vbCYgZmFpbGVkKQorewor
ICAgIEpTVmFsdWVSZWYgdiA9IG51bGxwdHI7CisgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSBu
dWxscHRyOworICAgIGNvbnN0IGNoYXIqIHJlZW50cnlTY3JpcHQgPSAiMTAwIjsKKyAgICBKU1N0
cmluZ1JlZiBzY3JpcHQgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhyZWVudHJ5U2Ny
aXB0KTsKKyAgICB2ID0gSlNFdmFsdWF0ZVNjcmlwdChjb250ZXh0LCBzY3JpcHQsIG51bGxwdHIs
IG51bGxwdHIsIDEsICZleGNlcHRpb24pOworICAgIGlmIChleGNlcHRpb24pIHsKKyAgICAgICAg
cHJpbnRmKCJGQUlMOiBXYXRjaGRvZyB0aW1lb3V0IHdhcyBub3QgcmVzZXQuXG4iKTsKKyAgICAg
ICAgZmFpbGVkID0gdHJ1ZTsKKyAgICB9IGVsc2UgaWYgKCFKU1ZhbHVlSXNOdW1iZXIoY29udGV4
dCwgdikgfHwgSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIHYsIG51bGxwdHIpICE9IDEwMCkgewor
ICAgICAgICBwcmludGYoIkZBSUw6IFNjcmlwdCByZXN1bHQgaXMgbm90IGFzIGV4cGVjdGVkLlxu
Iik7CisgICAgICAgIGZhaWxlZCA9IHRydWU7CisgICAgfQorfQorCiBpbnQgdGVzdEV4ZWN1dGlv
blRpbWVMaW1pdCgpCiB7CiAgICAgc3RhdGljIGNvbnN0IFRpZXJPcHRpb25zIHRpZXJPcHRpb25z
TGlzdFtdID0gewpAQCAtMTUyLDYgKzE2OCw4IEBAIGludCB0ZXN0RXhlY3V0aW9uVGltZUxpbWl0
KCkKICAgICAgICAgICAgICAgICBwcmludGYoIkZBSUw6ICVzIFRlcm1pbmF0ZWRFeGVjdXRpb25F
eGNlcHRpb24gd2FzIG5vdCB0aHJvd24uXG4iLCB0aWVyT3B0aW9ucy50aWVyKTsKICAgICAgICAg
ICAgICAgICBmYWlsZWQgPSB0cnVlOwogICAgICAgICAgICAgfQorCisgICAgICAgICAgICB0ZXN0
UmVzZXRBZnRlclRpbWVvdXQoZmFpbGVkKTsKICAgICAgICAgfQogCiAgICAgICAgIC8qIFRlc3Qg
dGhlIHNjcmlwdCB0aW1lb3V0J3MgVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbiBzaG91bGQg
Tk9UIGJlIGNhdGNoYWJsZTogKi8KQEAgLTE4Nyw2ICsyMDUsOCBAQCBpbnQgdGVzdEV4ZWN1dGlv
blRpbWVMaW1pdCgpCiAgICAgICAgICAgICAgICAgcHJpbnRmKCJGQUlMOiAlcyBUZXJtaW5hdGVk
RXhlY3V0aW9uRXhjZXB0aW9uIHdhcyBjYXVnaHQuXG4iLCB0aWVyT3B0aW9ucy50aWVyKTsKICAg
ICAgICAgICAgICAgICBmYWlsZWQgPSB0cnVlOwogICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICB0ZXN0UmVzZXRBZnRlclRpbWVvdXQoZmFpbGVkKTsKICAgICAgICAgfQogICAgICAgICAKICAg
ICAgICAgLyogVGVzdCBzY3JpcHQgdGltZW91dCB3aXRoIG5vIGNhbGxiYWNrOiAqLwpAQCAtMjIy
LDYgKzI0Miw4IEBAIGludCB0ZXN0RXhlY3V0aW9uVGltZUxpbWl0KCkKICAgICAgICAgICAgICAg
ICBwcmludGYoIkZBSUw6ICVzIFRlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24gd2FzIG5vdCB0
aHJvd24uXG4iLCB0aWVyT3B0aW9ucy50aWVyKTsKICAgICAgICAgICAgICAgICBmYWlsZWQgPSB0
cnVlOwogICAgICAgICAgICAgfQorCisgICAgICAgICAgICB0ZXN0UmVzZXRBZnRlclRpbWVvdXQo
ZmFpbGVkKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgLyogVGVzdCBzY3JpcHQgdGlt
ZW91dCBjYW5jZWxsYXRpb246ICovCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2oJKHJldmlzaW9uIDE4ODcyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTE3NjMsNiArMTc2Myw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1l
XFVpbnQzMkFycmF5LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFVp
bnQ4QXJyYXkuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcVk0uaCIg
Lz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcVk1JbmxpbmVzLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFZNRW50cnlTY29wZS5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxWYXJPZmZzZXQuaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcV2F0Y2hkb2cuaCIgLz4KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2ouZmlsdGVycwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMJKHJldmlzaW9uIDE4
ODcyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwkod29ya2luZyBjb3B5KQpAQCAtMzI2MSw2ICsz
MjYxLDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcVk0uaCI+CiAgICAg
ICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcVk1JbmxpbmVzLmgiPgorICAgICAgPEZpbHRlcj5ydW50
aW1lPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxydW50aW1lXFZNRW50cnlTY29wZS5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVy
PgogICAgIDwvQ2xJbmNsdWRlPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJl
dmlzaW9uIDE4ODcyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zNjIxLDYgKzM2MjEs
NyBAQAogCQlGRTU5MzJBNjE4M0M1QTI2MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3BlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZNRW50cnlTY29wZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGRTdCQTYwRDFBMUE3Q0VDMDBGMUY3QjQgLyogSGVhcFZlcmlmaWVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhlYXBWZXJpZmllci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFN0JBNjBFMUExQTdDRUMwMEYxRjdC
NCAvKiBIZWFwVmVyaWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGVh
cFZlcmlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFOTBCQjNBMUI3Q0Y2
NEUwMDZCM0YwMyAvKiBWTUlubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVk1JbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFQTA4NjFFMTgy
QjdBMDQwMEY2RDg1MSAvKiBCcmVha3BvaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEJyZWFrcG9pbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVBMDg2
MUYxODJCN0EwNDAwRjZEODUxIC8qIERlYnVnZ2VyUHJpbWl0aXZlcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBEZWJ1Z2dlclByaW1pdGl2ZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRkVCNTFGNkExQTk3QjY4ODAwMUY5MjFDIC8qIFJlZ3Jlc3MxNDE4MDku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUmVncmVzczE0MTgwOS5oOyBwYXRo
ID0gQVBJL3Rlc3RzL1JlZ3Jlc3MxNDE4MDkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTQ5NzcsNiArNDk3OCw3IEBACiAJCQkJMEZFMDUwMjQxQUE5MDk1NjAwRDMzQjMzIC8qIFZh
ck9mZnNldC5oICovLAogCQkJCUUxOEUzQTU3MERGOTI3OEMwMEQ5MEIzNCAvKiBWTS5jcHAgKi8s
CiAJCQkJRTE4RTNBNTYwREY5Mjc4QzAwRDkwQjM0IC8qIFZNLmggKi8sCisJCQkJRkU5MEJCM0Ex
QjdDRjY0RTAwNkIzRjAzIC8qIFZNSW5saW5lcy5oICovLAogCQkJCUZFNTkzMkE1MTgzQzVBMjYw
MEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuY3BwICovLAogCQkJCUZFNTkzMkE2MTgzQzVBMjYwMEEx
RUNDQyAvKiBWTUVudHJ5U2NvcGUuaCAqLywKIAkJCQlGRUQ5NEYyQjE3MUUzRTIzMDBCRTc3QTQg
LyogV2F0Y2hkb2cuY3BwICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDE4ODcyMikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
MDY1LDcgKzQwNjUsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVk
CiAKICAgICAgICAgICAgIGFkZFRvR3JhcGgoTG9vcEhpbnQpOwogICAgICAgICAgICAgCi0gICAg
ICAgICAgICBpZiAobV92bS0+d2F0Y2hkb2cgJiYgbV92bS0+d2F0Y2hkb2ctPmhhc1RpbWVMaW1p
dCgpKQorICAgICAgICAgICAgaWYgKG1fdm0tPndhdGNoZG9nKQogICAgICAgICAgICAgICAgIGFk
ZFRvR3JhcGgoQ2hlY2tXYXRjaGRvZ1RpbWVyKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAg
TkVYVF9PUENPREUob3BfbG9vcF9oaW50KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkocmV2aXNpb24gMTg4NzIyKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNzEsOCArNzEsOCBAQAogI2luY2x1ZGUgIlN0cm9uZ0lubGluZXMuaCIKICNp
bmNsdWRlICJTeW1ib2wuaCIKICNpbmNsdWRlICJWTUVudHJ5U2NvcGUuaCIKKyNpbmNsdWRlICJW
TUlubGluZXMuaCIKICNpbmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIKLSNpbmNsdWRlICJXYXRj
aGRvZy5oIgogCiAjaW5jbHVkZSA8bGltaXRzLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KQEAgLTg2
NSw3ICs4NjUsNyBAQCBmYWlsZWRKU09OUDoKIAogICAgIFByb2dyYW1Db2RlQmxvY2sqIGNvZGVC
bG9jayA9IHByb2dyYW0tPmNvZGVCbG9jaygpOwogCi0gICAgaWYgKFVOTElLRUxZKHZtLndhdGNo
ZG9nICYmIHZtLndhdGNoZG9nLT5kaWRGaXJlKGNhbGxGcmFtZSkpKQorICAgIGlmIChVTkxJS0VM
WSh2bS5zaG91bGRUcmlnZ2VyVGVybWluYXRpb24oY2FsbEZyYW1lKSkpCiAgICAgICAgIHJldHVy
biB0aHJvd1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oY2FsbEZyYW1lKTsKIAogICAgIEFT
U0VSVChjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSA9PSAxKTsgLy8gMSBwYXJhbWV0ZXIgZm9y
ICd0aGlzJy4KQEAgLTkyOCw3ICs5MjgsNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRl
Q2FsbChDYWxsRnJhCiAgICAgfSBlbHNlCiAgICAgICAgIG5ld0NvZGVCbG9jayA9IDA7CiAKLSAg
ICBpZiAoVU5MSUtFTFkodm0ud2F0Y2hkb2cgJiYgdm0ud2F0Y2hkb2ctPmRpZEZpcmUoY2FsbEZy
YW1lKSkpCisgICAgaWYgKFVOTElLRUxZKHZtLnNob3VsZFRyaWdnZXJUZXJtaW5hdGlvbihjYWxs
RnJhbWUpKSkKICAgICAgICAgcmV0dXJuIHRocm93VGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlv
bihjYWxsRnJhbWUpOwogCiAgICAgUHJvdG9DYWxsRnJhbWUgcHJvdG9DYWxsRnJhbWU7CkBAIC05
OTgsNyArOTk4LDcgQEAgSlNPYmplY3QqIEludGVycHJldGVyOjpleGVjdXRlQ29uc3RydWN0KAog
ICAgIH0gZWxzZQogICAgICAgICBuZXdDb2RlQmxvY2sgPSAwOwogCi0gICAgaWYgKFVOTElLRUxZ
KHZtLndhdGNoZG9nICYmIHZtLndhdGNoZG9nLT5kaWRGaXJlKGNhbGxGcmFtZSkpKQorICAgIGlm
IChVTkxJS0VMWSh2bS5zaG91bGRUcmlnZ2VyVGVybWluYXRpb24oY2FsbEZyYW1lKSkpCiAgICAg
ICAgIHJldHVybiB0aHJvd1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oY2FsbEZyYW1lKTsK
IAogICAgIFByb3RvQ2FsbEZyYW1lIHByb3RvQ2FsbEZyYW1lOwpAQCAtMTA3MSw3ICsxMDcxLDcg
QEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShDYWxsRnJhbWVDbAogICAgIGlmIChMZWdh
Y3lQcm9maWxlciogcHJvZmlsZXIgPSB2bS5lbmFibGVkUHJvZmlsZXIoKSkKICAgICAgICAgcHJv
ZmlsZXItPndpbGxFeGVjdXRlKGNsb3N1cmUub2xkQ2FsbEZyYW1lLCBjbG9zdXJlLmZ1bmN0aW9u
KTsKIAotICAgIGlmIChVTkxJS0VMWSh2bS53YXRjaGRvZyAmJiB2bS53YXRjaGRvZy0+ZGlkRmly
ZShjbG9zdXJlLm9sZENhbGxGcmFtZSkpKQorICAgIGlmIChVTkxJS0VMWSh2bS5zaG91bGRUcmln
Z2VyVGVybWluYXRpb24oY2xvc3VyZS5vbGRDYWxsRnJhbWUpKSkKICAgICAgICAgcmV0dXJuIHRo
cm93VGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihjbG9zdXJlLm9sZENhbGxGcmFtZSk7CiAK
ICAgICAvLyBFeGVjdXRlIHRoZSBjb2RlOgpAQCAtMTE1Miw3ICsxMTUyLDcgQEAgSlNWYWx1ZSBJ
bnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YQogICAgICAgICB9CiAgICAgfQogCi0gICAg
aWYgKFVOTElLRUxZKHZtLndhdGNoZG9nICYmIHZtLndhdGNoZG9nLT5kaWRGaXJlKGNhbGxGcmFt
ZSkpKQorICAgIGlmIChVTkxJS0VMWSh2bS5zaG91bGRUcmlnZ2VyVGVybWluYXRpb24oY2FsbEZy
YW1lKSkpCiAgICAgICAgIHJldHVybiB0aHJvd1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24o
Y2FsbEZyYW1lKTsKIAogICAgIEFTU0VSVChjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSA9PSAx
KTsgLy8gMSBwYXJhbWV0ZXIgZm9yICd0aGlzJy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3Bjb2Rlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzLmNwcAkocmV2aXNpb24gMTg4NzIyKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTE1LDcgKzkxNSw3
IEBAIHZvaWQgSklUOjplbWl0X29wX2xvb3BfaGludChJbnN0cnVjdGlvbioKICAgICB9CiAKICAg
ICAvLyBFbWl0IHRoZSB3YXRjaGRvZyB0aW1lciBjaGVjazoKLSAgICBpZiAobV92bS0+d2F0Y2hk
b2cgJiYgbV92bS0+d2F0Y2hkb2ctPmhhc1RpbWVMaW1pdCgpKQorICAgIGlmIChtX3ZtLT53YXRj
aGRvZykKICAgICAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVzdDgoTm9uWmVybywgQWJzb2x1dGVB
ZGRyZXNzKG1fdm0tPndhdGNoZG9nLT50aW1lckRpZEZpcmVBZGRyZXNzKCkpKSk7CiB9CiAKQEAg
LTk0MSw3ICs5NDEsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbG9vcF9oaW50KEluc3RydWN0
CiAjZW5kaWYKIAogICAgIC8vIEVtaXQgdGhlIHNsb3cgcGF0aCBvZiB0aGUgd2F0Y2hkb2cgdGlt
ZXIgY2hlY2s6Ci0gICAgaWYgKG1fdm0tPndhdGNoZG9nICYmIG1fdm0tPndhdGNoZG9nLT5oYXNU
aW1lTGltaXQoKSkgeworICAgIGlmIChtX3ZtLT53YXRjaGRvZykgewogICAgICAgICBsaW5rU2xv
d0Nhc2UoaXRlcik7CiAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uSGFuZGxlV2F0Y2hk
b2dUaW1lcik7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmNwcAkocmV2aXNpb24gMTg4NzIyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBAQAogI2luY2x1
ZGUgIlNjb3BlZEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIlRlc3RSdW5uZXJVdGlscy5oIgogI2lu
Y2x1ZGUgIlR5cGVQcm9maWxlckxvZy5oIgotI2luY2x1ZGUgIldhdGNoZG9nLmgiCisjaW5jbHVk
ZSAiVk1JbmxpbmVzLmgiCiAjaW5jbHVkZSA8d3RmL0lubGluZUFTTS5oPgogCiBuYW1lc3BhY2Ug
SlNDIHsKQEAgLTEwNzEsNyArMTA3MSw3IEBAIFVudXNlZFB0ciBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkhhbmRsZVcKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKIAotICAgIGlmIChVTkxJS0VMWSh2bS53YXRjaGRv
ZyAmJiB2bS53YXRjaGRvZy0+ZGlkRmlyZShleGVjKSkpCisgICAgaWYgKFVOTElLRUxZKHZtLnNo
b3VsZFRyaWdnZXJUZXJtaW5hdGlvbihleGVjKSkpCiAgICAgICAgIHZtLnRocm93RXhjZXB0aW9u
KGV4ZWMsIGNyZWF0ZVRlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oJnZtKSk7CiAKICAgICBy
ZXR1cm4gbnVsbHB0cjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50U2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMTg4NzIyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQs
NyBAQAogI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiUHJvdG9DYWxs
RnJhbWUuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVSYXJlRGF0YUlubGluZXMuaCIKLSNpbmNsdWRl
ICJXYXRjaGRvZy5oIgorI2luY2x1ZGUgIlZNSW5saW5lcy5oIgogI2luY2x1ZGUgPHd0Zi9TdHJp
bmdQcmludFN0cmVhbS5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKQEAg
LTEzMDMsNyArMTMwMyw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9oYW5kbGVf
d2EKIHsKICAgICBMTElOVF9CRUdJTl9OT19TRVRfUEMoKTsKICAgICBBU1NFUlQodm0ud2F0Y2hk
b2cpOwotICAgIGlmIChVTkxJS0VMWSh2bS53YXRjaGRvZy0+ZGlkRmlyZShleGVjKSkpCisgICAg
aWYgKFVOTElLRUxZKHZtLnNob3VsZFRyaWdnZXJUZXJtaW5hdGlvbihleGVjKSkpCiAgICAgICAg
IExMSU5UX1RIUk9XKGNyZWF0ZVRlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oJnZtKSk7CiAg
ICAgTExJTlRfUkVUVVJOX1RXTygwLCBleGVjKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5jcHAJKHJldmlzaW9uIDE4ODcyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjkyLDcgKzI5Miw3IEBAIFZNOjpW
TShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICBpZiAoT3B0aW9uczo6d2F0
Y2hkb2coKSkgewogICAgICAgICBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzIHRpbWVvdXRNaWxs
aXMoT3B0aW9uczo6d2F0Y2hkb2coKSk7CiAgICAgICAgIFdhdGNoZG9nJiB3YXRjaGRvZyA9IGVu
c3VyZVdhdGNoZG9nKCk7Ci0gICAgICAgIHdhdGNoZG9nLnNldFRpbWVMaW1pdCgqdGhpcywgdGlt
ZW91dE1pbGxpcyk7CisgICAgICAgIHdhdGNoZG9nLnNldFRpbWVMaW1pdCh0aW1lb3V0TWlsbGlz
KTsKICAgICB9CiB9CiAKQEAgLTM4OCw2ICszODgsMTEgQEAgV2F0Y2hkb2cmIFZNOjplbnN1cmVX
YXRjaGRvZygpCiAgICAgICAgIC8vIHRoZSBMTElOVCBhc3N1bWVzIHRoYXQgdGhlIGludGVybmFs
IHNoYXBlIG9mIGEgc3RkOjp1bmlxdWVfcHRyIGlzIHRoZQogICAgICAgICAvLyBzYW1lIGFzIGEg
cGxhaW4gQysrIHBvaW50ZXIsIGFuZCBsb2FkcyB0aGUgYWRkcmVzcyBvZiBXYXRjaGRvZyBmcm9t
IGl0LgogICAgICAgICBSRUxFQVNFX0FTU0VSVCgqcmVpbnRlcnByZXRfY2FzdDxXYXRjaGRvZyoq
Pigmd2F0Y2hkb2cpID09IHdhdGNoZG9nLmdldCgpKTsKKworICAgICAgICAvLyBBbmQgaWYgd2Un
dmUgcHJldmlvdXNseSBjb21waWxlZCBhbnkgZnVuY3Rpb25zLCB3ZSBuZWVkIHRvIHJldmVydAor
ICAgICAgICAvLyB0aGVtIGJlY2F1c2UgdGhleSBkb24ndCBoYXZlIHRoZSBuZWVkZWQgcG9sbGlu
ZyBjaGVja3MgZm9yIHRoZSB3YXRjaGRvZworICAgICAgICAvLyB5ZXQuCisgICAgICAgIGRlbGV0
ZUFsbENvZGUoKTsKICAgICB9CiAgICAgcmV0dXJuICp3YXRjaGRvZzsKIH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkocmV2aXNpb24gMTg4NzIyKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkod29ya2luZyBjb3B5KQpAQCAtMjM3LDcgKzIzNyw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFZNPiBjcmVhdGVDb250ZXh0R3JvdXAoSGVhcFR5cGUg
PSBTbWFsbEhlYXApOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIH5WTSgpOwogCi0gICAgV2F0Y2hk
b2cmIGVuc3VyZVdhdGNoZG9nKCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgV2F0Y2hkb2cmIGVu
c3VyZVdhdGNoZG9nKCk7CiAKIHByaXZhdGU6CiAgICAgUmVmUHRyPEpTTG9jaz4gbV9hcGlMb2Nr
OwpAQCAtNTU3LDYgKzU1Nyw4IEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lk
IHF1ZXVlTWljcm90YXNrKEpTR2xvYmFsT2JqZWN0KiwgUGFzc1JlZlB0cjxNaWNyb3Rhc2s+KTsK
ICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGRyYWluTWljcm90YXNrcygpOwogCisgICAgaW5s
aW5lIGJvb2wgc2hvdWxkVHJpZ2dlclRlcm1pbmF0aW9uKEV4ZWNTdGF0ZSopOworCiBwcml2YXRl
OgogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgZnJpZW5kIGNs
YXNzIENsZWFyRXhjZXB0aW9uU2NvcGU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTUlubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTUlubGluZXMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFZNSW5saW5l
c19oCisjZGVmaW5lIFZNSW5saW5lc19oCisKKyNpbmNsdWRlICJWTS5oIgorI2luY2x1ZGUgIldh
dGNoZG9nLmgiCisKK25hbWVzcGFjZSBKU0MgeworICAgIAorYm9vbCBWTTo6c2hvdWxkVHJpZ2dl
clRlcm1pbmF0aW9uKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBpZiAoIXdhdGNoZG9nKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHdhdGNoZG9nLT5kaWRGaXJlKGV4ZWMpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIExMSW50RGF0YV9oCisKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dhdGNoZG9nLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XYXRjaGRvZy5jcHAJKHJldmlzaW9uIDE4
ODcyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dhdGNoZG9nLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNiBAQCBzdGF0aWMgc3RkOjpjaHJvbm86Om1pY3Jvc2Vj
b25kcyBjdXJyZW50CiAKIFdhdGNoZG9nOjpXYXRjaGRvZygpCiAgICAgOiBtX3RpbWVyRGlkRmly
ZShmYWxzZSkKLSAgICAsIG1fZGlkRmlyZShmYWxzZSkKICAgICAsIG1fdGltZUxpbWl0KG5vVGlt
ZUxpbWl0KQogICAgICwgbV9jcHVEZWFkbGluZShub1RpbWVMaW1pdCkKICAgICAsIG1fd2FsbENs
b2NrRGVhZGxpbmUobm9UaW1lTGltaXQpCkBAIC01MiwxMjYgKzUxLDcxIEBAIFdhdGNoZG9nOjpX
YXRjaGRvZygpCiAgICAgLCBtX3RpbWVyUXVldWUoV29ya1F1ZXVlOjpjcmVhdGUoImpzYy53YXRj
aGRvZy5xdWV1ZSIsIFdvcmtRdWV1ZTo6VHlwZTo6U2VyaWFsLCBXb3JrUXVldWU6OlFPUzo6VXRp
bGl0eSkpCiB7CiAgICAgbV90aW1lckhhbmRsZXIgPSBbdGhpc10geworICAgICAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX2xvY2spOwogICAgICAgICB0aGlzLT5tX3RpbWVyRGlkRmlyZSA9IHRydWU7
CiAgICAgICAgIHRoaXMtPmRlcmVmKCk7CiAgICAgfTsKIH0KIAotaW5saW5lIGJvb2wgV2F0Y2hk
b2c6Omhhc1N0YXJ0ZWRUaW1lcigpCi17Ci0gICAgcmV0dXJuIG1fY3B1RGVhZGxpbmUgIT0gbm9U
aW1lTGltaXQ7Ci19Ci0KLXZvaWQgV2F0Y2hkb2c6OnNldFRpbWVMaW1pdChWTSYgdm0sIHN0ZDo6
Y2hyb25vOjptaWNyb3NlY29uZHMgbGltaXQsCit2b2lkIFdhdGNoZG9nOjpzZXRUaW1lTGltaXQo
c3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcyBsaW1pdCwKICAgICBTaG91bGRUZXJtaW5hdGVDYWxs
YmFjayBjYWxsYmFjaywgdm9pZCogZGF0YTEsIHZvaWQqIGRhdGEyKQogewotICAgIGJvb2wgaGFk
VGltZUxpbWl0ID0gaGFzVGltZUxpbWl0KCk7Ci0KLSAgICBtX2RpZEZpcmUgPSBmYWxzZTsgLy8g
UmVzZXQgdGhlIHdhdGNoZG9nLgorICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CiAKICAg
ICBtX3RpbWVMaW1pdCA9IGxpbWl0OwogICAgIG1fY2FsbGJhY2sgPSBjYWxsYmFjazsKICAgICBt
X2NhbGxiYWNrRGF0YTEgPSBkYXRhMTsKICAgICBtX2NhbGxiYWNrRGF0YTIgPSBkYXRhMjsKIAot
ICAgIC8vIElmIHRoaXMgaXMgdGhlIGZpcnN0IHRpbWUgdGhhdCB0aW1lIGxpbWl0IGlzIGJlaW5n
IGVuYWJsZWQsIHRoZW4gYW55Ci0gICAgLy8gcHJldmlvdXNseSBKSVQgY29tcGlsZWQgY29kZSB3
aWxsIG5vdCBoYXZlIHRoZSBuZWVkZWQgcG9sbGluZyBjaGVja3MuCi0gICAgLy8gSGVuY2UsIHdl
IG5lZWQgdG8gZmx1c2ggYWxsIHRoZSBwcmUtZXhpc3RpbmcgY29tcGlsZWQgY29kZS4KLSAgICAv
LwotICAgIC8vIEhvd2V2ZXIsIGlmIHRoZSB0aW1lIGxpbWl0IGlzIGFscmVhZHkgZW5hYmxlZCwg
YW5kIHdlJ3JlIGp1c3QgY2hhbmdpbmcgdGhlCi0gICAgLy8gdGltZSBsaW1pdCB2YWx1ZSwgdGhl
biBhbnkgZXhpc3RpbmcgSklUdGVkIGNvZGUgd2lsbCBoYXZlIHRoZSBhcHByb3ByaWF0ZQotICAg
IC8vIHBvbGxpbmcgY2hlY2tzLiBIZW5jZSwgdGhlcmUgaXMgbm8gbmVlZCB0byByZS1kbyB0aGlz
IGZsdXNoaW5nLgotICAgIGlmICghaGFkVGltZUxpbWl0KSB7Ci0gICAgICAgIC8vIEFuZCBpZiB3
ZSd2ZSBwcmV2aW91c2x5IGNvbXBpbGVkIGFueSBmdW5jdGlvbnMsIHdlIG5lZWQgdG8gcmV2ZXJ0
Ci0gICAgICAgIC8vIHRoZW0gYmVjYXVzZSB0aGV5IGRvbid0IGhhdmUgdGhlIG5lZWRlZCBwb2xs
aW5nIGNoZWNrcyB5ZXQuCi0gICAgICAgIHZtLmRlbGV0ZUFsbENvZGUoKTsKLSAgICB9Ci0KICAg
ICBpZiAobV9oYXNFbnRlcmVkVk0gJiYgaGFzVGltZUxpbWl0KCkpCi0gICAgICAgIHN0YXJ0VGlt
ZXIobV90aW1lTGltaXQpOworICAgICAgICBzdGFydFRpbWVyKGxvY2tlciwgbV90aW1lTGltaXQp
OworfQorCitKU19FWFBPUlRfUFJJVkFURSB2b2lkIFdhdGNoZG9nOjp0ZXJtaW5hdGVTb29uKCkK
K3sKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworCisgICAgbV90aW1lTGltaXQgPSBz
dGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzKDApOworICAgIG1fY3B1RGVhZGxpbmUgPSBzdGQ6OmNo
cm9ubzo6bWljcm9zZWNvbmRzKDApOworICAgIG1fd2FsbENsb2NrRGVhZGxpbmUgPSBzdGQ6OmNo
cm9ubzo6bWljcm9zZWNvbmRzKDApOworICAgIG1fdGltZXJEaWRGaXJlID0gdHJ1ZTsKIH0KIAog
Ym9vbCBXYXRjaGRvZzo6ZGlkRmlyZVNsb3coRXhlY1N0YXRlKiBleGVjKQogewotICAgIEFTU0VS
VChtX3RpbWVyRGlkRmlyZSk7Ci0gICAgbV90aW1lckRpZEZpcmUgPSBmYWxzZTsKKyAgICB7Cisg
ICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisKKyAgICAgICAgQVNTRVJUKG1fdGlt
ZXJEaWRGaXJlKTsKKyAgICAgICAgbV90aW1lckRpZEZpcmUgPSBmYWxzZTsKKworICAgICAgICBp
ZiAoY3VycmVudFdhbGxDbG9ja1RpbWUoKSA8IG1fd2FsbENsb2NrRGVhZGxpbmUpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7IC8vIEp1c3QgYSBzdGFsZSB0aW1lciBmaXJpbmcuIE5vdGhpbmcg
dG8gZG8uCiAKLSAgICAvLyBBIGxlZ2l0aW1hdGUgdGltZXIgaXMgdGhlIHRpbWVyIHdoaWNoIHdv
a2UgdXAgd2F0Y2hkb2cgYW5kIGNhbiBjYXVzZWQgZGlkRmlyZVNsb3coKSB0byBiZQotICAgIC8v
IGNhbGxlZCBhZnRlciBtX3dhbGxDbG9ja0RlYWRsaW5lIGhhcyBleHBpcmVkLiBBbGwgb3RoZXIg
dGltZXJzIGFyZSBjb25zaWRlcmVkIHRvIGJlIHN0YWxlLAotICAgIC8vIGFuZCB0aGVpciB3YWtl
IHVwcyBhcmUgY29uc2lkZXJlZCB0byBiZSBzcHVyaW91cyBhbmQgc2hvdWxkIGJlIGlnbm9yZWQu
Ci0gICAgLy8KLSAgICAvLyBkaWRGaXJlU2xvdygpIHdpbGwgcmFjZSBhZ2FpbnN0IG1fdGltZXJI
YW5kbGVyIHRvIGNsZWFyIGFuZCBzZXQgbV90aW1lckRpZEZpcmUgcmVzcGVjdGl2ZWx5LgotICAg
IC8vIFdlIG5lZWQgdG8gZGVhbCB3aXRoIGEgdmFyaWV0eSBvZiBzY2VuYXJpb3Mgd2hlcmUgd2Ug
Y2FuIGhhdmUgc3RhbGUgdGltZXJzIGFuZCBsZWdpdGltYXRlCi0gICAgLy8gdGltZXJzIGZpcmlu
ZyBpbiBjbG9zZSBwcm94aW1pdHkgdG8gZWFjaCBvdGhlci4KLSAgICAvLwotICAgIC8vIENvbnNp
ZGVyIHRoZSBmb2xsb3dpbmcgc2NlbmFyaW9zOgotICAgIC8vCi0gICAgLy8gMS4gQSBzdGFsZSB0
aW1lciBmaXJlcyBsb25nIGJlZm9yZSBtX3dhbGxDbG9ja0RlYWRsaW5lIGV4cGlyZXMuCi0gICAg
Ly8KLSAgICAvLyAgICBJbiB0aGlzIGNhc2UsIHRoZSBtX3dhbGxDbG9ja0RlYWRsaW5lIGNoZWNr
IGJlbG93IHdpbGwgZmFpbCBhbmQgdGhlIHN0YWxlIHRpbWVyIHdpbGwgYmUKLSAgICAvLyAgICBp
Z25vcmVkIGFzIHNwdXJpb3VzLiBXZSBqdXN0IG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgd2UgY2xl
YXIgbV90aW1lckRpZEZpcmUgYmVmb3JlIHdlCi0gICAgLy8gICAgY2hlY2sgbV93YWxsQ2xvY2tE
ZWFkbGluZSBhbmQgcmV0dXJuIGJlbG93LgotICAgIC8vCi0gICAgLy8gMi4gQSBzdGFsZSB0aW1l
ciBmaXJlcyBqdXN0IGJlZm9yZSBtX3dhbGxDbG9ja0RlYWRsaW5lIGV4cGlyZXMuCi0gICAgLy8g
ICAgQmVmb3JlIHRoZSB3YXRjaGRvZyBjYW4gZ2V0cyB0byB0aGUgY2xlYXJpbmcgbV90aW1lckRp
ZEZpcmUgYWJvdmUsIHRoZSBsZWdpdCB0aW1lciBhbHNvIGZpcmVzLgotICAgIC8vCi0gICAgLy8g
ICAgSW4gdGhpcyBjYXNlLCBtX3RpbWVyRGlkRmlyZSB3YXMgc2V0IHR3aWNlIGJ5IHRoZSAyIHRp
bWVycywgYnV0IHdlIG9ubHkgY2xlYXIgbmVlZCB0byBjbGVhcgotICAgIC8vICAgIGl0IG9uY2Uu
IFRoZSBtX3dhbGxDbG9ja0RlYWRsaW5lIGJlbG93IHdpbGwgcGFzcyBhbmQgdGhpcyBpbnZvY2F0
aW9uIG9mIGRpZEZpcmVTbG93KCkgd2lsbAotICAgIC8vICAgIGJlIHRyZWF0ZWQgYXMgdGhlIHJl
c3BvbnNlIHRvIHRoZSBsZWdpdCB0aW1lci4gVGhlIHNwdXJpb3VzIHRpbWVyIGlzIGVmZmVjdGl2
ZWx5IGlnbm9yZWQuCi0gICAgLy8KLSAgICAvLyAzLiBBIHN0YXRlIHRpbWVyIGZpcmVzIGp1c3Qg
YmVmb3JlIG1fd2FsbENsb2NrRGVhZGxpbmUgZXhwaXJlcy4KLSAgICAvLyAgICBSaWdodCBhZnRl
ciB0aGUgd2F0Y2hkb2cgY2xlYXJzIG1fdGltZXJEaWRGaXJlIGFib3ZlLCB0aGUgbGVnaXQgdGlt
ZXIgYWxzbyBmaXJlcy4KLSAgICAvLwotICAgIC8vICAgIFRoZSBmYWN0IHRoYXQgdGhlIGxlZ2l0
IHRpbWVyIGZhaWxzIG1lYW5zIHRoYXQgdGhlIG1fd2FsbENsb2NrRGVhZGxpbmUgY2hlY2sgd2ls
bCBwYXNzLgotICAgIC8vICAgIEFzIGxvbmcgYXMgd2UgY2xlYXIgbV90aW1lckRpZEZpcmUgYmVm
b3JlIHdlIGRvIHRoZSBjaGVjaywgd2UgYXJlIHNhZmUuIFRoaXMgaXMgdGhlIHNhbWUKLSAgICAv
LyAgICBzY2VuYXJpbyBhcyAyIGFib3ZlLgotICAgIC8vCi0gICAgLy8gNC4gQSBzdGFsZSB0aW1l
ciBmaXJlcyBqdXN0IGJlZm9yZSBtX3dhbGxDbG9ja0RlYWRsaW5lIGV4cGlyZXMuCi0gICAgLy8g
ICAgUmlnaHQgYWZ0ZXIgd2UgZG8gdGhlIG1fd2FsbENsb2NrRGVhZGxpbmUgY2hlY2sgYmVsb3cs
IHRoZSBsZWdpdCB0aW1lciBmaXJlcy4KLSAgICAvLwotICAgIC8vICAgIFRoZSBmYWN0IHRoYXQg
dGhlIGxlZ2l0IHRpbWVyIGZpcmVzIGFmdGVyIHRoZSBtX3dhbGxDbG9ja0RlYWRsaW5lIGNoZWNr
IG1lYW5zIHRoYXQKLSAgICAvLyAgICB0aGUgbV93YWxsQ2xvY2tEZWFkbGluZSBjaGVjayB3aWxs
IGhhdmUgZmFpbGVkLiBUaGlzIGlzIHRoZSBzYW1lIHNjZW5hcmlvIGFzIDEgYWJvdmUuCi0gICAg
Ly8KLSAgICAvLyA1LiBBIGxlZ2l0IHRpbWVyIGZpcmVzLgotICAgIC8vICAgIEEgc3RhbGUgdGlt
ZXIgYWxzbyBmaXJlcyBiZWZvcmUgd2UgY2xlYXIgbV90aW1lckRpZEZpcmUgYWJvdmUuCi0gICAg
Ly8KLSAgICAvLyAgICBUaGlzIGlzIHRoZSBzYW1lIHNjZW5hcmlvIGFzIDIgYWJvdmUuCi0gICAg
Ly8KLSAgICAvLyA2LiBBIGxlZ2l0IHRpbWVyIGZpcmVzLgotICAgIC8vICAgIEEgc3RhbGUgdGlt
ZXIgZmlyZXMgcmlnaHQgYWZ0ZXIgd2UgY2xlYXIgbV90aW1lckRpZEZpcmUgYWJvdmUuCi0gICAg
Ly8KLSAgICAvLyAgICBJbiB0aGlzIGNhc2UsIHRoZSBtX3dhbGxDbG9ja0RlYWRsaW5lIGNoZWNr
IHdpbGwgcGFzcywgYW5kIHdlIGZpcmUgdGhlIHdhdGNoZG9nCi0gICAgLy8gICAgdGhvdWdoIG1f
dGltZXJEaWRGaXJlIHJlbWFpbnMgc2V0LiBUaGlzIGp1c3QgbWVhbnMgdGhhdCBkaWRGaXJlU2xv
dygpIHdpbGwgYmUgY2FsbGVkIGFnYWluIGR1ZQotICAgIC8vICAgIHRvIG1fdGltZXJEaWRGaXJl
IGJlaW5nIHNldC4gVGhlIHN1YnNlcXVlbnQgaW52b2NhdGlvbiBvZiBkaWRGaXJlU2xvdygpIHdp
bGwgZW5kIHVwIGhhbmRsaW5nCi0gICAgLy8gICAgdGhlIHN0YWxlIHRpbWVyIGFuZCBpZ25vcmlu
ZyBpdC4gVGhpcyBpcyB0aGUgc2FtZSBzY2VuYXJpbyBhcyAxIGFib3ZlLgotICAgIC8vCi0gICAg
Ly8gNy4gQSBsZWdpdCB0aW1lciBmaXJlcy4KLSAgICAvLyAgICBBIHN0YWxlIHRpbWVyIGZpcmVz
IHJpZ2h0IGFmdGVyIHdlIGRvIHRoZSBtX3dhbGxDbG9ja0RlYWRsaW5lIGNoZWNrLgotICAgIC8v
Ci0gICAgLy8gICAgVGhpcyBpcyB0aGUgc2FtZSBhcyA2LCB3aGljaCBtZWFucyBpdCdzIHRoZSBz
YW1lIGFzIDEgYWJvdmUuCi0gICAgLy8KLSAgICAvLyBJbiBhbGwgdGhlc2UgY2FzZXMsIHdlIGp1
c3QgbmVlZCB0byBlbnN1cmUgdGhhdCB3ZSBjbGVhciBtX3RpbWVyRGlkRmlyZSBiZWZvcmUgd2Ug
ZG8gdGhlCi0gICAgLy8gbV93YWxsQ2xvY2tEZWFkbGluZSBjaGVjayBiZWxvdy4gSGVuY2UsIGEg
c3RvcmVMb2FkIGZlbmNlIGlzIG5lZWRlZCB0byBlbnN1cmUgdGhhdCB0aGVzZSAyCi0gICAgLy8g
b3BlcmF0aW9ucyBkbyBub3QgZ2V0IHJlLW9yZGVyZWQuCi0KLSAgICBXVEY6OnN0b3JlTG9hZEZl
bmNlKCk7Ci0KLSAgICBpZiAoY3VycmVudFdhbGxDbG9ja1RpbWUoKSA8IG1fd2FsbENsb2NrRGVh
ZGxpbmUpCi0gICAgICAgIHJldHVybiBmYWxzZTsgLy8gSnVzdCBhIHN0YWxlIHRpbWVyIGZpcmlu
Zy4gTm90aGluZyB0byBkby4KLQotICAgIG1fd2FsbENsb2NrRGVhZGxpbmUgPSBub1RpbWVMaW1p
dDsKLQotICAgIGlmIChjdXJyZW50Q1BVVGltZSgpID49IG1fY3B1RGVhZGxpbmUpIHsKLSAgICAg
ICAgLy8gQ2FzZSAxOiB0aGUgYWxsb3dlZCBDUFUgdGltZSBoYXMgZWxhcHNlZC4KLQotICAgICAg
ICAvLyBJZiBtX2NhbGxiYWNrIGlzIG5vdCBzZXQsIHRoZW4gd2UgdGVybWluYXRlIGJ5IGRlZmF1
bHQuCi0gICAgICAgIC8vIEVsc2UsIHdlIGxldCBtX2NhbGxiYWNrIGRlY2lkZSBpZiB3ZSBzaG91
bGQgdGVybWluYXRlIG9yIG5vdC4KLSAgICAgICAgYm9vbCBuZWVkc1Rlcm1pbmF0aW9uID0gIW1f
Y2FsbGJhY2sKLSAgICAgICAgICAgIHx8IG1fY2FsbGJhY2soZXhlYywgbV9jYWxsYmFja0RhdGEx
LCBtX2NhbGxiYWNrRGF0YTIpOwotICAgICAgICBpZiAobmVlZHNUZXJtaW5hdGlvbikgewotICAg
ICAgICAgICAgbV9kaWRGaXJlID0gdHJ1ZTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICAvLyBTZXQgbV93YWxsQ2xvY2tEZWFkbGluZSB0byBub1RpbWVMaW1pdCBoZXJlIHNvIHRo
YXQgd2UgY2FuIHJlamVjdCBhbGwgZnV0dXJlCisgICAgICAgIC8vIHNwdXJpb3VzIHdha2VzLgor
ICAgICAgICBtX3dhbGxDbG9ja0RlYWRsaW5lID0gbm9UaW1lTGltaXQ7CisKKyAgICAgICAgYXV0
byBjcHVUaW1lID0gY3VycmVudENQVVRpbWUoKTsKKyAgICAgICAgaWYgKGNwdVRpbWUgPCBtX2Nw
dURlYWRsaW5lKSB7CisgICAgICAgICAgICBhdXRvIHJlbWFpbmluZ0NQVVRpbWUgPSBtX2NwdURl
YWRsaW5lIC0gY3B1VGltZTsKKyAgICAgICAgICAgIHN0YXJ0VGltZXIobG9ja2VyLCByZW1haW5p
bmdDUFVUaW1lKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQorICAgIH0K
KworICAgIC8vIE5vdGU6IHdlIHNob3VsZCBub3QgYmUgaG9sZGluZyB0aGUgbG9jayB3aGlsZSBj
YWxsaW5nIHRoZSBjYWxsYmFja3MuIFRoZSBjYWxsYmFja3MgbWF5CisgICAgLy8gY2FsbCBzZXRU
aW1lTGltaXQoKSB3aGljaCB3aWxsIHRyeSB0byBsb2NrIGFzIHdlbGwuCisKKyAgICAvLyBJZiBt
X2NhbGxiYWNrIGlzIG5vdCBzZXQsIHRoZW4gd2UgdGVybWluYXRlIGJ5IGRlZmF1bHQuCisgICAg
Ly8gRWxzZSwgd2UgbGV0IG1fY2FsbGJhY2sgZGVjaWRlIGlmIHdlIHNob3VsZCB0ZXJtaW5hdGUg
b3Igbm90LgorICAgIGJvb2wgbmVlZHNUZXJtaW5hdGlvbiA9ICFtX2NhbGxiYWNrCisgICAgICAg
IHx8IG1fY2FsbGJhY2soZXhlYywgbV9jYWxsYmFja0RhdGExLCBtX2NhbGxiYWNrRGF0YTIpOwor
ICAgIGlmIChuZWVkc1Rlcm1pbmF0aW9uKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHsK
KyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKIAogICAgICAgICAvLyBJZiB3ZSBn
ZXQgaGVyZSwgdGhlbiB0aGUgY2FsbGJhY2sgYWJvdmUgZGlkIG5vdCB3YW50IHRvIHRlcm1pbmF0
ZSBleGVjdXRpb24uIEFzIGEKICAgICAgICAgLy8gcmVzdWx0LCB0aGUgY2FsbGJhY2sgbWF5IGhh
dmUgZG9uZSBvbmUgb2YgdGhlIGZvbGxvd2luZzoKQEAgLTE4NCwxNSArMTI4LDEwIEBAIGJvb2wg
V2F0Y2hkb2c6OmRpZEZpcmVTbG93KEV4ZWNTdGF0ZSogZXgKICAgICAgICAgLy8gSW4gdGhlIGNh
c2Ugb2YgMywgd2UgbmVlZCB0byByZS1zdGFydCB0aGUgdGltZXIgaGVyZS4KIAogICAgICAgICBB
U1NFUlQobV9oYXNFbnRlcmVkVk0pOwotICAgICAgICBpZiAoaGFzVGltZUxpbWl0KCkgJiYgIWhh
c1N0YXJ0ZWRUaW1lcigpKQotICAgICAgICAgICAgc3RhcnRUaW1lcihtX3RpbWVMaW1pdCk7Ci0K
LSAgICB9IGVsc2UgewotICAgICAgICAvLyBDYXNlIDI6IHRoZSBhbGxvd2VkIENQVSB0aW1lIGhh
cyBOT1QgZWxhcHNlZC4KLSAgICAgICAgYXV0byByZW1haW5pbmdDUFVUaW1lID0gbV9jcHVEZWFk
bGluZSAtIGN1cnJlbnRDUFVUaW1lKCk7Ci0gICAgICAgIHN0YXJ0VGltZXIocmVtYWluaW5nQ1BV
VGltZSk7CisgICAgICAgIGJvb2wgY2FsbGJhY2tBbHJlYWR5U3RhcnRlZFRpbWVyID0gKG1fY3B1
RGVhZGxpbmUgIT0gbm9UaW1lTGltaXQpOworICAgICAgICBpZiAoaGFzVGltZUxpbWl0KCkgJiYg
IWNhbGxiYWNrQWxyZWFkeVN0YXJ0ZWRUaW1lcikKKyAgICAgICAgICAgIHN0YXJ0VGltZXIobG9j
a2VyLCBtX3RpbWVMaW1pdCk7CiAgICAgfQotCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0y
MDEsNTQgKzE0MCw0NSBAQCBib29sIFdhdGNoZG9nOjpoYXNUaW1lTGltaXQoKQogICAgIHJldHVy
biAobV90aW1lTGltaXQgIT0gbm9UaW1lTGltaXQpOwogfQogCi12b2lkIFdhdGNoZG9nOjpmaXJl
KCkKLXsKLSAgICBtX2RpZEZpcmUgPSB0cnVlOwotfQotCiB2b2lkIFdhdGNoZG9nOjplbnRlcmVk
Vk0oKQogewogICAgIG1faGFzRW50ZXJlZFZNID0gdHJ1ZTsKLSAgICBpZiAoaGFzVGltZUxpbWl0
KCkpCi0gICAgICAgIHN0YXJ0VGltZXIobV90aW1lTGltaXQpOworICAgIGlmIChoYXNUaW1lTGlt
aXQoKSkgeworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgICAgICBzdGFy
dFRpbWVyKGxvY2tlciwgbV90aW1lTGltaXQpOworICAgIH0KIH0KIAogdm9pZCBXYXRjaGRvZzo6
ZXhpdGVkVk0oKQogewogICAgIEFTU0VSVChtX2hhc0VudGVyZWRWTSk7Ci0gICAgc3RvcFRpbWVy
KCk7CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICBzdG9wVGltZXIobG9ja2Vy
KTsKICAgICBtX2hhc0VudGVyZWRWTSA9IGZhbHNlOwogfQogCi12b2lkIFdhdGNoZG9nOjpzdGFy
dFRpbWVyKHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHMgdGltZUxpbWl0KQordm9pZCBXYXRjaGRv
Zzo6c3RhcnRUaW1lcihMb2NrSG9sZGVyJiwgc3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcyB0aW1l
TGltaXQpCiB7CiAgICAgQVNTRVJUKG1faGFzRW50ZXJlZFZNKTsKICAgICBBU1NFUlQoaGFzVGlt
ZUxpbWl0KCkpOworICAgIEFTU0VSVCh0aW1lTGltaXQgPD0gbV90aW1lTGltaXQpOwogCiAgICAg
bV9jcHVEZWFkbGluZSA9IGN1cnJlbnRDUFVUaW1lKCkgKyB0aW1lTGltaXQ7CiAgICAgYXV0byB3
YWxsQ2xvY2tUaW1lID0gY3VycmVudFdhbGxDbG9ja1RpbWUoKTsKICAgICBhdXRvIHdhbGxDbG9j
a0RlYWRsaW5lID0gd2FsbENsb2NrVGltZSArIHRpbWVMaW1pdDsKIAogICAgIGlmICgod2FsbENs
b2NrVGltZSA8IG1fd2FsbENsb2NrRGVhZGxpbmUpCi0gICAgICAgICYmIChtX3dhbGxDbG9ja0Rl
YWRsaW5lIDw9IHdhbGxDbG9ja0RlYWRsaW5lKSkgeworICAgICAgICAmJiAobV93YWxsQ2xvY2tE
ZWFkbGluZSA8PSB3YWxsQ2xvY2tEZWFkbGluZSkpCiAgICAgICAgIHJldHVybjsgLy8gV2FpdCBm
b3IgdGhlIGN1cnJlbnQgYWN0aXZlIHRpbWVyIHRvIGV4cGlyZSBiZWZvcmUgc3RhcnRpbmcgYSBu
ZXcgb25lLgotICAgIH0KIAogICAgIC8vIEVsc2UsIHRoZSBjdXJyZW50IGFjdGl2ZSB0aW1lciB3
b24ndCBmaXJlIHNvb24gZW5vdWdoLiBTbywgc3RhcnQgYSBuZXcgdGltZXIuCiAgICAgdGhpcy0+
cmVmKCk7IC8vIG1fdGltZXJIYW5kbGVyIHdpbGwgZGVyZWYgdG8gbWF0Y2ggbGF0ZXIuCiAgICAg
bV93YWxsQ2xvY2tEZWFkbGluZSA9IHdhbGxDbG9ja0RlYWRsaW5lOwotICAgIG1fdGltZXJEaWRG
aXJlID0gZmFsc2U7Ci0KLSAgICAvLyBXZSBjbGVhciBtX3RpbWVyRGlkRmlyZSBiZWNhdXNlIHdl
J3JlIHN0YXJ0aW5nIGEgbmV3IHRpbWVyLiBIb3dldmVyLCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZQot
ICAgIC8vIHRoYXQgdGhlIGNsZWFyaW5nIG9jY3VycyBiZWZvcmUgdGhlIHRpbWVyIHRocmVhZCBp
cyBzdGFydGVkLiBUaGVyZWFmdGVyLCBvbmx5IGRpZEZpcmVTbG93KCkKLSAgICAvLyBzaG91bGQg
Y2xlYXIgbV90aW1lckRpZEZpcmUgKHVubGVzcyB3ZSBzdGFydCB5ZXQgYW5vdGhlciB0aW1lciku
IEhlbmNlLCB3ZSBuZWVkIGEgc3RvcmVTdG9yZQotICAgIC8vIGZlbmNlIGhlcmUgdG8gZW5zdXJl
IHRoZXNlIG9wZXJhdGlvbnMgZG8gbm90IGdldCByZS1vcmRlcmVkLgotICAgIFdURjo6c3RvcmVT
dG9yZUZlbmNlKCk7CiAKICAgICBtX3RpbWVyUXVldWUtPmRpc3BhdGNoQWZ0ZXIoc3RkOjpjaHJv
bm86Om5hbm9zZWNvbmRzKHRpbWVMaW1pdCksIG1fdGltZXJIYW5kbGVyKTsKIH0KIAotdm9pZCBX
YXRjaGRvZzo6c3RvcFRpbWVyKCkKK3ZvaWQgV2F0Y2hkb2c6OnN0b3BUaW1lcihMb2NrSG9sZGVy
JikKIHsKICAgICBtX2NwdURlYWRsaW5lID0gbm9UaW1lTGltaXQ7CiB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9XYXRjaGRvZy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1dhdGNoZG9nLmgJKHJldmlzaW9uIDE4ODcyMikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dhdGNoZG9nLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgV2F0Y2hkb2dfaAogI2RlZmluZSBXYXRjaGRvZ19oCiAK
LSNpbmNsdWRlIDxtdXRleD4KKyNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWYuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3
dGYvV29ya1F1ZXVlLmg+CkBAIC00NCwxNCArNDQsMTEgQEAgcHVibGljOgogICAgIFdhdGNoZG9n
KCk7CiAKICAgICB0eXBlZGVmIGJvb2wgKCpTaG91bGRUZXJtaW5hdGVDYWxsYmFjaykoRXhlY1N0
YXRlKiwgdm9pZCogZGF0YTEsIHZvaWQqIGRhdGEyKTsKLSAgICB2b2lkIHNldFRpbWVMaW1pdChW
TSYsIHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHMgbGltaXQsIFNob3VsZFRlcm1pbmF0ZUNhbGxi
YWNrID0gMCwgdm9pZCogZGF0YTEgPSAwLCB2b2lkKiBkYXRhMiA9IDApOworICAgIHZvaWQgc2V0
VGltZUxpbWl0KHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHMgbGltaXQsIFNob3VsZFRlcm1pbmF0
ZUNhbGxiYWNrID0gMCwgdm9pZCogZGF0YTEgPSAwLCB2b2lkKiBkYXRhMiA9IDApOworICAgIEpT
X0VYUE9SVF9QUklWQVRFIHZvaWQgdGVybWluYXRlU29vbigpOwogCi0gICAgLy8gVGhpcyB2ZXJz
aW9uIG9mIGRpZEZpcmUoKSB3aWxsIGNoZWNrIHRoZSBlbGFwc2VkIENQVSB0aW1lIGFuZCBjYWxs
IHRoZQotICAgIC8vIGNhbGxiYWNrIChpZiBuZWVkZWQpIHRvIGRldGVybWluZSBpZiB0aGUgd2F0
Y2hkb2cgc2hvdWxkIGZpcmUuCiAgICAgYm9vbCBkaWRGaXJlKEV4ZWNTdGF0ZSogZXhlYykKICAg
ICB7Ci0gICAgICAgIGlmIChtX2RpZEZpcmUpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgaWYgKCFtX3RpbWVyRGlkRmlyZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgcmV0dXJuIGRpZEZpcmVTbG93KGV4ZWMpOwpAQCAtNjEsMjEgKzU4LDEzIEBAIHB1Ymxp
YzoKICAgICB2b2lkIGVudGVyZWRWTSgpOwogICAgIHZvaWQgZXhpdGVkVk0oKTsKIAotICAgIC8v
IFRoaXMgdmVyc2lvbiBvZiBkaWRGaXJlKCkgaXMgYSBtb3JlIGVmZmljaWVudCB2ZXJzaW9uIGZv
ciB3aGVuIHdlIHdhbnQKLSAgICAvLyB0byBrbm93IGlmIHRoZSB3YXRjaGRvZyBoYXMgZmlyZWQg
aW4gdGhlIHBhc3QsIGFuZCBub3Qgd2hldGhlciBpdCBzaG91bGQKLSAgICAvLyBmaXJlIHJpZ2h0
IG5vdy4KLSAgICBib29sIGRpZEZpcmUoKSB7IHJldHVybiBtX2RpZEZpcmU7IH0KLSAgICBKU19F
WFBPUlRfUFJJVkFURSB2b2lkIGZpcmUoKTsKLQogICAgIHZvaWQqIHRpbWVyRGlkRmlyZUFkZHJl
c3MoKSB7IHJldHVybiAmbV90aW1lckRpZEZpcmU7IH0KIAogICAgIHN0YXRpYyBjb25zdCBzdGQ6
OmNocm9ubzo6bWljcm9zZWNvbmRzIG5vVGltZUxpbWl0OwogCiBwcml2YXRlOgotICAgIHZvaWQg
c3RhcnRUaW1lcihzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzIHRpbWVMaW1pdCk7Ci0gICAgdm9p
ZCBzdG9wVGltZXIoKTsKLQotICAgIGlubGluZSBib29sIGhhc1N0YXJ0ZWRUaW1lcigpOworICAg
IHZvaWQgc3RhcnRUaW1lcihMb2NrSG9sZGVyJiwgc3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcyB0
aW1lTGltaXQpOworICAgIHZvaWQgc3RvcFRpbWVyKExvY2tIb2xkZXImKTsKIAogICAgIGJvb2wg
ZGlkRmlyZVNsb3coRXhlY1N0YXRlKik7CiAKQEAgLTg1LDEzICs3NCwxNiBAQCBwcml2YXRlOgog
ICAgIC8vIE5PVEU6IG1fdGltZXJEaWRGaXJlIGlzIG9ubHkgc2V0IGJ5IHRoZSBwbGF0Zm9ybSBz
cGVjaWZpYyB0aW1lcgogICAgIC8vIChwcm9iYWJseSBmcm9tIGFub3RoZXIgdGhyZWFkKSBidXQg
aXMgb25seSBjbGVhcmVkIGluIHRoZSBzY3JpcHQgdGhyZWFkLgogICAgIGJvb2wgbV90aW1lckRp
ZEZpcmU7Ci0gICAgYm9vbCBtX2RpZEZpcmU7CiAKICAgICBzdGQ6OmNocm9ubzo6bWljcm9zZWNv
bmRzIG1fdGltZUxpbWl0OwogCiAgICAgc3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcyBtX2NwdURl
YWRsaW5lOwogICAgIHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHMgbV93YWxsQ2xvY2tEZWFkbGlu
ZTsKIAorICAgIC8vIFdyaXRlcyB0byBtX3RpbWVyRGlkRmlyZSBhbmQgbV90aW1lTGltaXQsIGFu
ZCBSZWFkcytXcml0ZXMgdG8gbV9jcHVEZWFkbGluZSBhbmQgbV93YWxsQ2xvY2tEZWFkbGluZQor
ICAgIC8vIG11c3QgYmUgZ3VhcmRlZCBieSB0aGlzIGxvY2suCisgICAgTG9jayBtX2xvY2s7CisK
ICAgICBib29sIG1faGFzRW50ZXJlZFZNIHsgZmFsc2UgfTsKIAogICAgIFNob3VsZFRlcm1pbmF0
ZUNhbGxiYWNrIG1fY2FsbGJhY2s7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODg3MjIpCisr
KyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNiBA
QAorMjAxNS0wOC0yMCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
d2F0Y2hkb2cgbV9kaWRGaXJlIHN0YXRlIGVycm9uZW91c2x5IHJldGFpbmVkLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMxMDgyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAgVGhl
IG5ldyBjb2RlIGlzIGNvdmVyZWQgYnkgdGhlIEpTQyBBUEkgdGVzdHMgYW5kIGFuIGV4aXN0aW5n
IHRlc3Q6CisgICAgICAgIGZhc3Qvd29ya2Vycy93b3JrZXItdGVybWluYXRlLWZvcmV2ZXIuaHRt
bAorCisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29y
a2VyU2NyaXB0Q29udHJvbGxlcjo6V29ya2VyU2NyaXB0Q29udHJvbGxlcik6CisgICAgICAgIC0g
QWx3YXlzIGNyZWF0ZSBhIHdhdGNoZG9nIGZvciB0aGUgV2ViIFdvcmtlcidzIFZNLiAgV2UgbmVl
ZCB0aGlzIGluIG9yZGVyIHRvIHN1cHBvcnQKKyAgICAgICAgICBXb3JrZXIudGVybWluYXRlKCku
CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpzY2hlZHVsZUV4ZWN1dGlv
blRlcm1pbmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdENvbnRyb2xsZXI6
OmlzVGVybWluYXRpbmdFeGVjdXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0
Q29udHJvbGxlcjo6Zm9yYmlkRXhlY3V0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNj
cmlwdENvbnRyb2xsZXI6OmlzRXhlY3V0aW9uVGVybWluYXRpbmcpOiBEZWxldGVkLgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuaDoKKwogMjAxNS0wOC0yMCAg
Q29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCwgcm9sbGluZyBvdXQgcjE4ODcxNyBhbmQgcjE4ODcxOS4KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcAkocmV2aXNpb24gMTg4NzIy
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTM1LDkgKzEzNSwxMCBAQCB2b2lkIEpTRXZlbnRMaXN0ZW5lcjo6aGFu
ZGxlRXZlbnQoU2NyaXB0CiAgICAgICAgIGdsb2JhbE9iamVjdC0+c2V0Q3VycmVudEV2ZW50KHNh
dmVkRXZlbnQpOwogCiAgICAgICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4oKnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQpKSB7CisgICAgICAgICAgICBhdXRvIHNjcmlwdENvbnRyb2xsZXIgPSBk
b3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLnNjcmlw
dCgpOwogICAgICAgICAgICAgYm9vbCB0ZXJtaW5hdG9yQ2F1c2VkRXhjZXB0aW9uID0gKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpICYmIGlzVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihleGVjLT5l
eGNlcHRpb24oKSkpOwotICAgICAgICAgICAgaWYgKHRlcm1pbmF0b3JDYXVzZWRFeGNlcHRpb24g
fHwgKHZtLndhdGNoZG9nICYmIHZtLndhdGNoZG9nLT5kaWRGaXJlKCkpKQotICAgICAgICAgICAg
ICAgIGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCku
c2NyaXB0KCktPmZvcmJpZEV4ZWN1dGlvbigpOworICAgICAgICAgICAgaWYgKHRlcm1pbmF0b3JD
YXVzZWRFeGNlcHRpb24gfHwgc2NyaXB0Q29udHJvbGxlci0+aXNUZXJtaW5hdGluZ0V4ZWN1dGlv
bigpKQorICAgICAgICAgICAgICAgIHNjcmlwdENvbnRyb2xsZXItPmZvcmJpZEV4ZWN1dGlvbigp
OwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGV4Y2VwdGlvbikgewpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAJ
KHJldmlzaW9uIDE4ODcyMikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNj
cmlwdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw2ICs1Niw3IEBAIFdvcmtl
clNjcmlwdENvbnRyb2xsZXI6OldvcmtlclNjcmlwdENvbnQKICAgICAsIG1fd29ya2VyR2xvYmFs
U2NvcGVXcmFwcGVyKCptX3ZtKQogICAgICwgbV9leGVjdXRpb25Gb3JiaWRkZW4oZmFsc2UpCiB7
CisgICAgbV92bS0+ZW5zdXJlV2F0Y2hkb2coKTsKICAgICBpbml0Tm9ybWFsV29ybGRDbGllbnRE
YXRhKG1fdm0uZ2V0KCkpOwogfQogCkBAIC0xMjEsOCArMTIyLDcgQEAgdm9pZCBXb3JrZXJTY3Jp
cHRDb250cm9sbGVyOjpldmFsdWF0ZShjbwogICAgIEpTQzo6ZXZhbHVhdGUoZXhlYywgc291cmNl
Q29kZS5qc1NvdXJjZUNvZGUoKSwgbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXItPmdsb2JhbFRo
aXMoKSwgcmV0dXJuZWRFeGNlcHRpb24pOwogCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAg
ICBpZiAoKHJldHVybmVkRXhjZXB0aW9uICYmIGlzVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlv
bihyZXR1cm5lZEV4Y2VwdGlvbikpCi0gICAgICAgIHx8ICh2bS53YXRjaGRvZyAmJiB2bS53YXRj
aGRvZy0+ZGlkRmlyZSgpKSkgeworICAgIGlmICgocmV0dXJuZWRFeGNlcHRpb24gJiYgaXNUZXJt
aW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKHJldHVybmVkRXhjZXB0aW9uKSkgfHwgaXNUZXJtaW5h
dGluZ0V4ZWN1dGlvbigpKSB7CiAgICAgICAgIGZvcmJpZEV4ZWN1dGlvbigpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQpAQCAtMTQ5LDIwICsxNDksMjAgQEAgdm9pZCBXb3JrZXJTY3JpcHRDb250
cm9sbGVyOjpzZXRFeGNlcHRpbwogdm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpzY2hlZHVs
ZUV4ZWN1dGlvblRlcm1pbmF0aW9uKCkKIHsKICAgICAvLyBUaGUgbXV0ZXggcHJvdmlkZXMgYSBt
ZW1vcnkgYmFycmllciB0byBlbnN1cmUgdGhhdCBvbmNlCi0gICAgLy8gdGVybWluYXRpb24gaXMg
c2NoZWR1bGVkLCBpc0V4ZWN1dGlvblRlcm1pbmF0aW5nIHdpbGwKKyAgICAvLyB0ZXJtaW5hdGlv
biBpcyBzY2hlZHVsZWQsIGlzVGVybWluYXRpbmdFeGVjdXRpb24oKSB3aWxsCiAgICAgLy8gYWNj
dXJhdGVseSByZWZsZWN0IHRoYXQgc3RhdGUgd2hlbiBjYWxsZWQgZnJvbSBhbm90aGVyIHRocmVh
ZC4KICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NjaGVkdWxlZFRlcm1pbmF0aW9uTXV0ZXgpOwot
ICAgIGlmIChtX3ZtLT53YXRjaGRvZykKLSAgICAgICAgbV92bS0+d2F0Y2hkb2ctPmZpcmUoKTsK
KyAgICBtX2lzVGVybWluYXRpbmdFeGVjdXRpb24gPSB0cnVlOworCisgICAgQVNTRVJUKG1fdm0t
PndhdGNoZG9nKTsKKyAgICBtX3ZtLT53YXRjaGRvZy0+dGVybWluYXRlU29vbigpOwogfQogCi1i
b29sIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmlzRXhlY3V0aW9uVGVybWluYXRpbmcoKSBjb25z
dAorYm9vbCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjppc1Rlcm1pbmF0aW5nRXhlY3V0aW9uKCkg
Y29uc3QKIHsKICAgICAvLyBTZWUgY29tbWVudHMgaW4gc2NoZWR1bGVFeGVjdXRpb25UZXJtaW5h
dGlvbiByZWdhcmRpbmcgbXV0ZXggdXNhZ2UuCiAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zY2hl
ZHVsZWRUZXJtaW5hdGlvbk11dGV4KTsKLSAgICBpZiAobV92bS0+d2F0Y2hkb2cpCi0gICAgICAg
IHJldHVybiBtX3ZtLT53YXRjaGRvZy0+ZGlkRmlyZSgpOwotICAgIHJldHVybiBmYWxzZTsKKyAg
ICByZXR1cm4gbV9pc1Rlcm1pbmF0aW5nRXhlY3V0aW9uOwogfQogCiB2b2lkIFdvcmtlclNjcmlw
dENvbnRyb2xsZXI6OmZvcmJpZEV4ZWN1dGlvbigpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5oCShyZXZpc2lvbiAxODg3
MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTcxLDcgKzcxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICAvLyBmb3JiaWRFeGVjdXRpb24oKS9pc0V4ZWN1dGlvbkZvcmJpZGRlbigpIHRvIGd1
YXJkIGFnYWluc3QgcmVlbnRyeSBpbnRvIEpTLgogICAgICAgICAvLyBDYW4gYmUgY2FsbGVkIGZy
b20gYW55IHRocmVhZC4KICAgICAgICAgdm9pZCBzY2hlZHVsZUV4ZWN1dGlvblRlcm1pbmF0aW9u
KCk7Ci0gICAgICAgIGJvb2wgaXNFeGVjdXRpb25UZXJtaW5hdGluZygpIGNvbnN0OworICAgICAg
ICBib29sIGlzVGVybWluYXRpbmdFeGVjdXRpb24oKSBjb25zdDsKIAogICAgICAgICAvLyBDYWxs
ZWQgb24gV29ya2VyIHRocmVhZCB3aGVuIEpTIGV4aXRzIHdpdGggdGVybWluYXRpb24gZXhjZXB0
aW9uIGNhdXNlZCBieSBmb3JiaWRFeGVjdXRpb24oKSByZXF1ZXN0LAogICAgICAgICAvLyBvciBi
eSBXb3JrZXIgdGhyZWFkIHRlcm1pbmF0aW9uIGNvZGUgdG8gcHJldmVudCBmdXR1cmUgZW50cnkg
aW50byBKUy4KQEAgLTk3LDYgKzk3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBX
b3JrZXJHbG9iYWxTY29wZSogbV93b3JrZXJHbG9iYWxTY29wZTsKICAgICAgICAgSlNDOjpTdHJv
bmc8SlNXb3JrZXJHbG9iYWxTY29wZT4gbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXI7CiAgICAg
ICAgIGJvb2wgbV9leGVjdXRpb25Gb3JiaWRkZW47CisgICAgICAgIGJvb2wgbV9pc1Rlcm1pbmF0
aW5nRXhlY3V0aW9uIHsgZmFsc2UgfTsKICAgICAgICAgbXV0YWJsZSBMb2NrIG1fc2NoZWR1bGVk
VGVybWluYXRpb25NdXRleDsKICAgICB9OwogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODg3MjIpCisr
KyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAor
MjAxNS0wOC0yMCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgd2F0
Y2hkb2cgbV9kaWRGaXJlIHN0YXRlIGVycm9uZW91c2x5IHJldGFpbmVkLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMxMDgyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L3dvcmtlcnMvd29ya2Vy
LXRlcm1pbmF0ZS1mb3JldmVyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3dvcmtlcnMv
d29ya2VyLXRlcm1pbmF0ZS1mb3JldmVyLmh0bWw6CisgICAgICAgIC0gVXBkYXRlZCB0byBjaGVj
ayBpZiB0aGUgd29ya2VyIGFjdHVhbGx5IGRpZCB0ZXJtaW5hdGUuIAorCiAyMDE1LTA4LTIwICBG
aWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgT3ZlcmZsb3cgY2hlY2sg
ZWxpbWluYXRpb24gZmFpbHMgZm9yIGEgc2ltcGxlIHRlc3QgY2FzZQpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC93b3JrZXJzL3dvcmtlci10ZXJtaW5hdGUtZm9yZXZlci1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci10ZXJtaW5hdGUtZm9y
ZXZlci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE4ODcyMikKKysrIExheW91dFRlc3RzL2Zhc3Qv
d29ya2Vycy93b3JrZXItdGVybWluYXRlLWZvcmV2ZXItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0xICsxLDMgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxNTogV29ya2VyIHdhcyBz
dGFydGVkCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMzQ6IFdvcmtlciB3YXMgdGVybWluYXRlZAog
VGVzdCBXb3JrZXIudGVybWluYXRlKCkgZm9yIGEgd29ya2VyIHRoYXQgdHJpZXMgdG8gcnVuIGZv
cmV2ZXIuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLXRlcm1pbmF0ZS1m
b3JldmVyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtl
ci10ZXJtaW5hdGUtZm9yZXZlci5odG1sCShyZXZpc2lvbiAxODg3MjIpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L3dvcmtlcnMvd29ya2VyLXRlcm1pbmF0ZS1mb3JldmVyLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMTEgKzEsNTIgQEAKIDxib2R5PgogPHA+VGVzdCBXb3JrZXIudGVybWluYXRlKCkg
Zm9yIGEgd29ya2VyIHRoYXQgdHJpZXMgdG8gcnVuIGZvcmV2ZXIuPC9wPgogPHNjcmlwdD4KLWlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgewogICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworfQog
CiB2YXIgd29ya2VyID0gbmV3IFdvcmtlcigncmVzb3VyY2VzL3dvcmtlci1ydW4tZm9yZXZlci5q
cycpOwotd29ya2VyLnRlcm1pbmF0ZSgpOworCitmdW5jdGlvbiB3YWl0Rm9yV29ya2VyVG9TdGFy
dCgpIHsKKyAgICB2YXIgc3RhcnRUaW1lID0gRGF0ZS5ub3coKTsKKyAgICBmdW5jdGlvbiBjaGVj
a0lmV29ya2VyU3RhcnRlZCgpIHsKKyAgICAgICAgaWYgKGludGVybmFscy53b3JrZXJUaHJlYWRD
b3VudCA9PSAxKSB7CisgICAgICAgICAgICBjb25zb2xlLmxvZygiV29ya2VyIHdhcyBzdGFydGVk
Iik7CisgICAgICAgICAgICB3b3JrZXIudGVybWluYXRlKCk7CisgICAgICAgICAgICBzZXRUaW1l
b3V0KHdhaXRGb3JXb3JrZXJUb1N0b3AsIDApOworCisgICAgICAgIH0gZWxzZSBpZiAoRGF0ZS5u
b3coKSAtIHN0YXJ0VGltZSA8IDUwMDApIHsKKyAgICAgICAgICAgIHNldFRpbWVvdXQoY2hlY2tJ
ZldvcmtlclN0YXJ0ZWQsIDApOworCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjb25z
b2xlLmxvZygiV29ya2VyIGRpZCBub3Qgc2hvdyB1cCIpOworICAgICAgICAgICAgdGVzdFJ1bm5l
ci5ub3RpZnlEb25lKCk7CisgICAgICAgIH0gICAgICAgICAgICAKKyAgICB9CisgICAgc2V0VGlt
ZW91dChjaGVja0lmV29ya2VyU3RhcnRlZCwgMCk7Cit9CisKK2Z1bmN0aW9uIHdhaXRGb3JXb3Jr
ZXJUb1N0b3AoKSB7CisgICAgdmFyIHN0YXJ0VGltZSA9IERhdGUubm93KCk7CisgICAgZnVuY3Rp
b24gY2hlY2tJZldvcmtlclN0b3BwZWQoKSB7CisgICAgICAgIGlmIChpbnRlcm5hbHMud29ya2Vy
VGhyZWFkQ291bnQgPT0gMCkgeworICAgICAgICAgICAgY29uc29sZS5sb2coIldvcmtlciB3YXMg
dGVybWluYXRlZCIpOworICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisKKyAg
ICAgICAgfSBlbHNlIGlmIChEYXRlLm5vdygpIC0gc3RhcnRUaW1lIDwgNTAwMCkgeworICAgICAg
ICAgICAgc2V0VGltZW91dChjaGVja0lmV29ya2VyU3RvcHBlZCwgMCk7CisKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIGNvbnNvbGUubG9nKCJEaWQgbm90IHNlZSB3b3JrZXIgdGVybWlu
YXRlIik7CisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgfSAg
ICAgICAgICAgIAorICAgIH0KKyAgICBzZXRUaW1lb3V0KGNoZWNrSWZXb3JrZXJTdG9wcGVkLCAw
KTsKK30KKword2luZG93LnNldFRpbWVvdXQod2FpdEZvcldvcmtlclRvU3RhcnQsIDApOworCiA8
L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4K
</data>
<flag name="review"
          id="284728"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>