<?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>175390</bug_id>
          
          <creation_ts>2017-08-09 09:53:12 -0700</creation_ts>
          <short_desc>Allow nested timeouts in webkitpy</short_desc>
          <delta_ts>2017-08-09 14:58:24 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jonathan Bedard">jbedard</reporter>
          <assigned_to name="Jonathan Bedard">jbedard</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>glenn</cc>
    
    <cc>lforschler</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1337009</commentid>
    <comment_count>0</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2017-08-09 09:53:12 -0700</bug_when>
    <thetext>Right now, we use alarms for timeouts.  This is a good technique in Python, but, has issues when timeouts need to be nested or multiple threads are used.  We should allow for timeouts to be nested and warn when timeouts are being used with multiple threads.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337010</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-08-09 09:53:42 -0700</bug_when>
    <thetext>&lt;rdar://problem/33803003&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337014</commentid>
    <comment_count>2</comment_count>
      <attachid>317715</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2017-08-09 10:00:00 -0700</bug_when>
    <thetext>Created attachment 317715
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337015</commentid>
    <comment_count>3</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-09 10:02:31 -0700</bug_when>
    <thetext>Attachment 317715 did not pass style-queue:


ERROR: Tools/Scripts/webkitpy/common/timeout_context.py:69:  [Timeout.__init__.exception_handler] Raising NoneType while only classes, instances or string are allowed  [pylint/E0702] [5]
Total errors found: 1 in 6 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>1337100</commentid>
    <comment_count>4</comment_count>
      <attachid>317715</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2017-08-09 13:26:52 -0700</bug_when>
    <thetext>Comment on attachment 317715
Patch

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

r=me

Wow, this makes the code much more readable in simulated_device.py and simulator_process.py!

&gt; Tools/Scripts/webkitpy/common/timeout_context.py:28
&gt; +import os
&gt; +import math
&gt; +import logging
&gt; +import signal
&gt; +import time
&gt; +import threading

Nit: Alphabetize.

&gt; Tools/Scripts/webkitpy/common/timeout_context.py:56
&gt; +            _log.critical(&apos;Using both alarms and threading in the same process&apos;)
&gt; +            _log.critical(&apos;This is unsupported&apos;)

Nit: Any particular reason this can&apos;t be one log message?

&gt; Tools/Scripts/webkitpy/common/timeout_context.py:61
&gt; +        # seconds=0 is invalid

Nit: Shouldn&apos;t this be:

# seconds == 0 is invalid

&gt; Tools/Scripts/webkitpy/common/timeout_context.py:62
&gt; +        if seconds == 0:

Nit: If you created a helper method called secondsAreInvalid(seconds), then you can get rid of the comment:

        if self.secondsAreInvalid(seconds):

&gt; Tools/Scripts/webkitpy/common/timeout_context.py:63
&gt; +            raise RuntimeError(&apos;Cannot have a timeout of 0&apos;)

Nit:

            raise RuntimeError(&apos;Cannot have a timeout of 0 seconds&apos;)

&gt; Tools/Scripts/webkitpy/common/timeout_context.py:97
&gt; +        # Another timeout is more urgent

Nit: Comments should be sentences ending in periods.  (Please check other comments below.)

&gt; Tools/Scripts/webkitpy/common/timeout_context.py:113
&gt; +        signal.alarm(0)  # Imiediatly disable the alarm so we aren&apos;t interupted

Typos:  Imiediatly, interupted.
Nit: Period at end of sentence.

&gt; Tools/Scripts/webkitpy/common/timeout_context_unittest.py:36
&gt; +    def test_current_timeout(self):
&gt; +        self.assertEqual(None, Timeout.current())
&gt; +        with Timeout(1) as tmp:
&gt; +            self.assertEqual(tmp.data, Timeout.current())
&gt; +        self.assertEqual(None, Timeout.current())

This could be racy if the with: block doesn&apos;t execute in less than 1 second, correct?

This doesn&apos;t block landing the patch; just trying to understand how it works.

&gt; Tools/Scripts/webkitpy/port/simulator_process.py:28
&gt;  from webkitpy.port.server_process import ServerProcess
&gt; -
&gt; +from webkitpy.common.timeout_context import Timeout

Nit: Do we alphabetize by dotted path, or by class name?  Either is fine.  (I was assuming dotted path.)

&gt; Tools/Scripts/webkitpy/xcode/simulated_device.py:30
&gt; +from webkitpy.common.timeout_context import Timeout
&gt;  from webkitpy.common.system.executive import ScriptError
&gt;  from webkitpy.xcode.simulator import Simulator
&gt;  from webkitpy.common.host import Host

Nit:  Alphabetized by neither dotted path nor class name?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337121</commentid>
    <comment_count>5</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2017-08-09 14:08:10 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #4)
&gt; Comment on attachment 317715 [details]
&gt; Patch
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/common/timeout_context_unittest.py:36
&gt; &gt; +    def test_current_timeout(self):
&gt; &gt; +        self.assertEqual(None, Timeout.current())
&gt; &gt; +        with Timeout(1) as tmp:
&gt; &gt; +            self.assertEqual(tmp.data, Timeout.current())
&gt; &gt; +        self.assertEqual(None, Timeout.current())
&gt; 
&gt; This could be racy if the with: block doesn&apos;t execute in less than 1 second,
&gt; correct?
&gt; 

Yes. If the with: block doesn&apos;t execute in less than 1 second, this block of code would raise the default exception.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337127</commentid>
    <comment_count>6</comment_count>
      <attachid>317741</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2017-08-09 14:15:53 -0700</bug_when>
    <thetext>Created attachment 317741
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337149</commentid>
    <comment_count>7</comment_count>
      <attachid>317741</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-08-09 14:58:21 -0700</bug_when>
    <thetext>Comment on attachment 317741
Patch for landing

Clearing flags on attachment: 317741

Committed r220483: &lt;http://trac.webkit.org/changeset/220483&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337150</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-08-09 14:58:24 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317715</attachid>
            <date>2017-08-09 10:00:00 -0700</date>
            <delta_ts>2017-08-09 14:15:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175390-20170809095959.patch</filename>
            <type>text/plain</type>
            <size>22464</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIyMDQ1OSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDU0IEBACisyMDE3LTA4LTA5ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBBbGxvdyBuZXN0ZWQgdGltZW91dHMgaW4gd2Via2l0cHkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTM5MAorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMzM4MDMwMDM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgV2UgbmVlZCB0byBiZSBhYmxlIHRvIG5lc3QgdGltZW91dHMgaW4g
d2Via2l0cHkuIEluIHBhcnRpY3VsYXIsIHdlIGhhdmUgYSBmZXcgY2FzZXMgd2hlcmUgZnVuY3Rp
b25zCisgICAgICAgIHdoaWNoIHVzZSB0aW1lb3V0cyBhbHNvIGNhbGwgdGhlIGV4ZWN1dGl2ZS4g
Rm9yIG9uLWRldmljZSB0ZXN0aW5nLCB3ZSBuZWVkIHRvIGhhdmUgdGltZW91dHMgaW5zaWRlCisg
ICAgICAgIHRoZSBleGVjdXRpdmUgdG8gZGV0ZWN0IGFuZCByZWNvdmVyIGZyb20gYW55IGlzc3Vl
cyBjb25uZWN0aW5nIHdpdGggZGV2aWNlcy4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
YmVuY2htYXJrX3J1bm5lci91dGlscy5weToKKyAgICAgICAgKFRpbWVvdXRFcnJvcik6IERlbGV0
ZWQuCisgICAgICAgICh0aW1lb3V0KTogRGVsZXRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi90aW1lb3V0X2NvbnRleHQucHk6IEFkZGVkLgorICAgICAgICAoVGltZW91dCk6
IEEgdGltZW91dCBjb250ZXh0IGRlc2lnbmVkIHRvIGJlIG5lc3RlZC4KKyAgICAgICAgKFRpbWVv
dXQuVGltZW91dERhdGEpOiBUaGUgZGF0YSByZXF1aXJlZCB0byBjb25zdHJ1Y3QgYW4gYWxhcm0g
Zm9yIGEgZ2l2ZW4gdGltZW91dC4KKyAgICAgICAgKFRpbWVvdXQuVGltZW91dERhdGEuX19pbml0
X18pOgorICAgICAgICAoVGltZW91dC5kZWZhdWx0X2hhbmRsZXIpOiBUaW1lb3V0IGhhbmRsZXIg
dXNlZCBpZiBub25lIGlzIHNwZWNpZmllZC4KKyAgICAgICAgKFRpbWVvdXQuY3VycmVudCk6IEFj
Y2VzcyBkYXRhIGFib3V0IHRoZSBtb3N0IHVyZ2VudCB0aW1lb3V0LgorICAgICAgICAoVGltZW91
dC5fX2luaXRfXyk6IENvbnN0cnVjdCBhIFRpbWVvdXQgb2JqZWN0IHdpdGggc2Vjb25kcyBhbmQg
YW4gb3B0aW9uYWwgaGFuZGxlci4KKyAgICAgICAgKFRpbWVvdXQuX2JpbmRfdGltZW91dF9kYXRh
X3RvX2FsYXJtKTogR2l2ZW4gZGF0YSBhYm91dCBhIHRpbWVvdXQsIGluaXRpYWxpemUgYW4gYWxh
cm0gZm9yIHRoYXQgdGltZW91dC4KKyAgICAgICAgKFRpbWVvdXQuX19lbnRlcl9fKTogVW4tYmlu
ZCBhbGwgYWxhcm1zLiBBZGQgZGF0YSBmb3IgdGhpcyB0aW1lb3V0IHRvIHRoZSBvcmRlcmVkIGxp
c3QgYW5kIGJpbmQgdGhlIG1vc3QKKyAgICAgICAgdXJnZW50IHRpbWVvdXQgZGF0YS4KKyAgICAg
ICAgKFRpbWVvdXQuX19leGl0X18pOiBVbi1iaW5kIGFsbCBhbGFybXMuIFJlbW92ZSBkYXRhIGZv
ciB0aGlzIHRpbWVvdXQgZnJvbSB0aGUgb3JkZXJlZCBsaXN0IGFuZCBiaW5kIHRoZQorICAgICAg
ICBtb3N0IHVyZ2VudCB0aW1lb3V0IGRhdGEsIGlmIHN1Y2ggZGF0YSBleGlzdHMuCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vdGltZW91dF9jb250ZXh0X3VuaXR0ZXN0LnB5OiBB
ZGRlZC4KKyAgICAgICAgKFRpbWVvdXRDb250ZXh0VGVzdHMpOgorICAgICAgICAoVGltZW91dENv
bnRleHRUZXN0cy50ZXN0X2N1cnJlbnRfdGltZW91dCk6IFRlc3QgdGhhdCBhY2Nlc3NpbmcgdGhl
IG5lYXJlc3QgdGltZW91dCB3b3JrcyBhcyBleHBlY3RlZC4KKyAgICAgICAgKFRpbWVvdXRDb250
ZXh0VGVzdHMudGVzdF9pbnZhbGlkX3RpbWVvdXQpOiBUZXN0IGEgdGltZW91dCBvZiAwLgorICAg
ICAgICAoVGltZW91dENvbnRleHRUZXN0cy50ZXN0X3RpbWVvdXRfZGF0YSk6IENvbmZpcm0gdGhh
dCB0aW1lb3V0cyBhcmUgY29uc3RydWN0ZWQgY29ycmVjdGx5LgorICAgICAgICAoVGltZW91dENv
bnRleHRUZXN0cy50ZXN0X25lc3RlZF9pbm5lcl9wcmVjZWRlbmNlKTogQ2hlY2sgdGhhdCBhIG1v
cmUgdXJnZW50IGlubmVyIHRpbWVvdXQgdGFrZXMgcHJlY2VkZW5jZQorICAgICAgICBvdmVyIGEg
bGVzcyB1cmdlbnQgb3V0ZXIgdGltZW91dC4KKyAgICAgICAgKFRpbWVvdXRDb250ZXh0VGVzdHMu
dGVzdF9uZXN0ZWRfb3V0ZXJfcHJlY2VkZW5jZSk6IENoZWNrIHRoYXQgYSBtb3JlIHVyZ2VudCBv
dXRlciB0aW1lb3V0IHRha2VzIHByZWNlZGVuY2UKKyAgICAgICAgb3ZlciBhIGxlc3MgdXJnZW50
IGlubmVyIHRpbWVvdXQuCisgICAgICAgIChUaW1lb3V0Q29udGV4dFRlc3RzLnRlc3Rfbm9fdGlt
ZW91dCk6IFRlc3QgYSBibG9jayBvZiBjb2RlIHdpdGhvdXQgYSB0aW1lb3V0LgorICAgICAgICAo
VGltZW91dENvbnRleHRUZXN0cy50ZXN0X2Jhc2ljX3RpbWVvdXQpOiBUZXN0IGEgYmxvY2sgb2Yg
Y29kZSBleHBlY3RlZCB0byB0aW1lb3V0LgorICAgICAgICAoVGltZW91dENvbnRleHRUZXN0cy50
ZXN0X2V4Y2VwdGlvbl9jb25zdHJ1Y3Rvcl90aW1lb3V0KTogVGVzdCBhIHRpbWVvdXQgd2hlcmUg
dGhlIGhhbmRsZXIgaXMgYW4gZXhjZXB0aW9uLgorICAgICAgICAoVGltZW91dENvbnRleHRUZXN0
cy50ZXN0X25lc3RlZF9pbm5lcl90aW1lb3V0KTogQ29uZmlybSB0aGF0IGEgbW9yZSB1cmdlbnQg
aW5uZXIgdGltZW91dCBpcyB0cmlnZ2VyZWQuCisgICAgICAgIChUaW1lb3V0Q29udGV4dFRlc3Rz
LnRlc3RfbmVzdGVkX291dGVyX3RpbWVvdXQpOiBDb25maXJtIHRoYXQgYSBtb3JlIHVyZ2VudCBv
dXRlciB0aW1lb3V0IGlzIHRyaWdnZXJlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Bv
cnQvc2ltdWxhdG9yX3Byb2Nlc3MucHk6CisgICAgICAgIChTaW11bGF0b3JQcm9jZXNzLl9zdGFy
dCk6IFVzZSBUaW1lb3V0IGNsYXNzLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkveGNvZGUv
c2ltdWxhdGVkX2RldmljZS5weToKKyAgICAgICAgKFNpbXVsYXRlZERldmljZS5sYXVuY2hfYXBw
Ll9sb2dfZGVidWdfZXJyb3IpOiBVc2UgVGltZW91dCBjbGFzcy4KKyAgICAgICAgKFNpbXVsYXRl
ZERldmljZS5sYXVuY2hfYXBwKTogRGl0dG8uCisgICAgICAgIChTaW11bGF0ZWREZXZpY2UubGF1
bmNoX2FwcC5faW5zdGFsbF90aW1lb3V0KTogRGVsZXRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L3hjb2RlL3NpbXVsYXRvci5weToKKyAgICAgICAgKFNpbXVsYXRvci53YWl0X3VudGls
X2RldmljZV9pc19ib290ZWQpOlVzZSBUaW1lb3V0IGNsYXNzLgorICAgICAgICAoU2ltdWxhdG9y
LndhaXRfdW50aWxfZGV2aWNlX2lzX2luX3N0YXRlKTogRGl0dG8uCisKIDIwMTctMDgtMDkgIERh
bmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIy
MTkwMTMpOiBPQXV0aCBmbG93cyBhcmUgYnJva2VuIHdoZW4gcmVkaXJlY3RpbmcgYmFjayB0byBh
cHBsaWNhdGlvbiBhZnRlciBhdXRoZW50aWNhdGlvbgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9iZW5jaG1hcmtfcnVubmVyL3V0aWxzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvYmVuY2htYXJrX3J1bm5lci91dGlscy5weQkocmV2aXNpb24gMjIwNDU1KQor
KysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9iZW5jaG1hcmtfcnVubmVyL3V0aWxzLnB5CSh3b3Jr
aW5nIGNvcHkpCkBAIC00LDkgKzQsNyBAQCBpbXBvcnQgaW1wCiBpbXBvcnQgaW5zcGVjdAogaW1w
b3J0IGxvZ2dpbmcKIGltcG9ydCBvcwotaW1wb3J0IHNpZ25hbAogaW1wb3J0IHNodXRpbAotaW1w
b3J0IHN5cwogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5tZW1vaXplZCBpbXBvcnQgbWVtb2l6ZWQK
IApAQCAtNzcsMjYgKzc1LDMgQEAgZGVmIHdyaXRlX2RlZmF1bHRzKGRvbWFpbiwga2V5LCB2YWx1
ZSk6CiAgICAgZGVmYXVsdHMuc2V0UGVyc2lzdGVudERvbWFpbl9mb3JOYW1lXyhtdXRhYmxlX2Rl
ZmF1bHRzX2Zvcl9kb21haW4sIGRvbWFpbikKICAgICBkZWZhdWx0cy5zeW5jaHJvbml6ZSgpCiAg
ICAgcmV0dXJuIFRydWUKLQotCi0jIEJvcnJvdyB0aGlzIGNvZGUgZnJvbQotIyAnaHR0cDovL3N0
YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8yMjgxODUwL3RpbWVvdXQtZnVuY3Rpb24taWYtaXQt
dGFrZXMtdG9vLWxvbmctdG8tZmluaXNoJwotY2xhc3MgVGltZW91dEVycm9yKEV4Y2VwdGlvbik6
Ci0gICAgcGFzcwotCi0KLWNsYXNzIHRpbWVvdXQ6Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwg
c2Vjb25kcz0xLCBlcnJvcl9tZXNzYWdlPSdUaW1lb3V0Jyk6Ci0gICAgICAgIHNlbGYuc2Vjb25k
cyA9IHNlY29uZHMKLSAgICAgICAgc2VsZi5lcnJvcl9tZXNzYWdlID0gZXJyb3JfbWVzc2FnZQot
Ci0gICAgZGVmIGhhbmRsZV90aW1lb3V0KHNlbGYsIHNpZ251bSwgZnJhbWUpOgotICAgICAgICBy
YWlzZSBUaW1lb3V0RXJyb3Ioc2VsZi5lcnJvcl9tZXNzYWdlKQotCi0gICAgZGVmIF9fZW50ZXJf
XyhzZWxmKToKLSAgICAgICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHQUxSTSwgc2VsZi5oYW5k
bGVfdGltZW91dCkKLSAgICAgICAgc2lnbmFsLmFsYXJtKHNlbGYuc2Vjb25kcykKLQotICAgIGRl
ZiBfX2V4aXRfXyhzZWxmLCB0eXBlLCB2YWx1ZSwgdHJhY2ViYWNrKToKLSAgICAgICAgc2lnbmFs
LmFsYXJtKDApCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi90aW1lb3V0X2Nv
bnRleHQucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vdGlt
ZW91dF9jb250ZXh0LnB5CShub25leGlzdGVudCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL3RpbWVvdXRfY29udGV4dC5weQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEyMSBA
QAorIyBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
IworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgb3MKK2lt
cG9ydCBtYXRoCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IHNpZ25hbAoraW1wb3J0IHRpbWUKK2lt
cG9ydCB0aHJlYWRpbmcKKworX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQorCisK
K2NsYXNzIFRpbWVvdXQob2JqZWN0KToKKworICAgIHRocmVhZF9leGNlcHRpb24gPSBSdW50aW1l
RXJyb3IoJ1RpbWVvdXQgb3JpZ2luYXRlcyBmcm9tIGEgZGlmZmVyZW50IHRocmVhZCcpCisgICAg
X3Byb2Nlc3NfdG9fdGltZW91dF9tYXAgPSB7fQorCisgICAgY2xhc3MgVGltZW91dERhdGEob2Jq
ZWN0KToKKworICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgYWxhcm1fdGltZSwgaGFuZGxlcik6
CisgICAgICAgICAgICBzZWxmLmFsYXJtX3RpbWUgPSBhbGFybV90aW1lCisgICAgICAgICAgICBz
ZWxmLmhhbmRsZXIgPSBoYW5kbGVyCisgICAgICAgICAgICBzZWxmLnRocmVhZF9pZCA9IHRocmVh
ZGluZy5jdXJyZW50X3RocmVhZCgpLmlkZW50CisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVm
IGRlZmF1bHRfaGFuZGxlcihzaWdudW0sIGZyYW1lKToKKyAgICAgICAgcmFpc2UgUnVudGltZUVy
cm9yKCdUaW1lb3V0IGFsYXJtIHdhcyB0cmlnZ2VyZWQnKQorCisgICAgQHN0YXRpY21ldGhvZAor
ICAgIGRlZiBjdXJyZW50KCk6CisgICAgICAgIHJlc3VsdCA9IFRpbWVvdXQuX3Byb2Nlc3NfdG9f
dGltZW91dF9tYXAuZ2V0KG9zLmdldHBpZCgpLCBbXSkKKyAgICAgICAgaWYgbm90IHJlc3VsdDoK
KyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIGlmIHJlc3VsdFswXS50aHJlYWRfaWQg
IT0gdGhyZWFkaW5nLmN1cnJlbnRfdGhyZWFkKCkuaWRlbnQ6CisgICAgICAgICAgICBfbG9nLmNy
aXRpY2FsKCdVc2luZyBib3RoIGFsYXJtcyBhbmQgdGhyZWFkaW5nIGluIHRoZSBzYW1lIHByb2Nl
c3MnKQorICAgICAgICAgICAgX2xvZy5jcml0aWNhbCgnVGhpcyBpcyB1bnN1cHBvcnRlZCcpCisg
ICAgICAgICAgICByYWlzZSBUaW1lb3V0LnRocmVhZF9leGNlcHRpb24KKyAgICAgICAgcmV0dXJu
IHJlc3VsdFswXQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHNlY29uZHM9MSwgaGFuZGxlcj1O
b25lKToKKyAgICAgICAgIyBzZWNvbmRzPTAgaXMgaW52YWxpZAorICAgICAgICBpZiBzZWNvbmRz
ID09IDA6CisgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0Nhbm5vdCBoYXZlIGEgdGlt
ZW91dCBvZiAwJykKKworICAgICAgICBpZiBpc2luc3RhbmNlKGhhbmRsZXIsIEJhc2VFeGNlcHRp
b24pOgorICAgICAgICAgICAgZXhjZXB0aW9uID0gaGFuZGxlcgorCisgICAgICAgICAgICBkZWYg
ZXhjZXB0aW9uX2hhbmRsZXIoc2lnbnVtLCBmcmFtZSk6CisgICAgICAgICAgICAgICAgcmFpc2Ug
ZXhjZXB0aW9uCisKKyAgICAgICAgICAgIGhhbmRsZXIgPSBleGNlcHRpb25faGFuZGxlcgorCisg
ICAgICAgIHNlbGYuX3RpbWVvdXQgPSBzZWNvbmRzCisgICAgICAgIHNlbGYuX2hhbmRsZXIgPSBo
YW5kbGVyIGlmIGhhbmRsZXIgZWxzZSBUaW1lb3V0LmRlZmF1bHRfaGFuZGxlcgorICAgICAgICBz
ZWxmLmRhdGEgPSBOb25lCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIF9iaW5kX3RpbWVv
dXRfZGF0YV90b19hbGFybShkYXRhKToKKyAgICAgICAgZGVmIGhhbmRsZXIoc2lnbnVtLCBmcmFt
ZSk6CisgICAgICAgICAgICBhc3NlcnQgc2lnbnVtID09IHNpZ25hbC5TSUdBTFJNCisgICAgICAg
ICAgICBpZiBkYXRhLnRocmVhZF9pZCAhPSB0aHJlYWRpbmcuY3VycmVudF90aHJlYWQoKS5pZGVu
dDoKKyAgICAgICAgICAgICAgICByYWlzZSBUaW1lb3V0LnRocmVhZF9leGNlcHRpb24KKyAgICAg
ICAgICAgIGRhdGEuaGFuZGxlcihzaWdudW0sIGZyYW1lKQorCisgICAgICAgIGN1cnJlbnRfdGlt
ZSA9IHRpbWUudGltZSgpCisgICAgICAgIGlmIGRhdGEuYWxhcm1fdGltZSA8PSBjdXJyZW50X3Rp
bWU6CisgICAgICAgICAgICBoYW5kbGVyKHNpZ25hbC5TSUdBTFJNLCBOb25lKQorCisgICAgICAg
IHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0FMUk0sIGhhbmRsZXIpCisgICAgICAgIHNpZ25hbC5h
bGFybShpbnQobWF0aC5jZWlsKGRhdGEuYWxhcm1fdGltZSAtIGN1cnJlbnRfdGltZSkpKQorCisg
ICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgc2lnbmFsLmFsYXJtKDApICAjIEltaWVk
aWF0bHkgZGlzYWJsZSB0aGUgYWxhcm0gc28gd2UgYXJlbid0IGludGVydXB0ZWQKKyAgICAgICAg
c2VsZi5kYXRhID0gVGltZW91dC5UaW1lb3V0RGF0YSh0aW1lLnRpbWUoKSArIHNlbGYuX3RpbWVv
dXQsIHNlbGYuX2hhbmRsZXIpCisgICAgICAgIGN1cnJlbnRfdGltZW91dCA9IFRpbWVvdXQuY3Vy
cmVudCgpCisKKyAgICAgICAgIyBBbm90aGVyIHRpbWVvdXQgaXMgbW9yZSB1cmdlbnQKKyAgICAg
ICAgaWYgY3VycmVudF90aW1lb3V0IGFuZCBjdXJyZW50X3RpbWVvdXQuYWxhcm1fdGltZSA8IHNl
bGYuZGF0YS5hbGFybV90aW1lOgorICAgICAgICAgICAgZm9yIGkgaW4geHJhbmdlKGxlbihUaW1l
b3V0Ll9wcm9jZXNzX3RvX3RpbWVvdXRfbWFwW29zLmdldHBpZCgpXSkgLSAxKToKKyAgICAgICAg
ICAgICAgICBpZiBzZWxmLmRhdGEuYWxhcm1fdGltZSA8IFRpbWVvdXQuX3Byb2Nlc3NfdG9fdGlt
ZW91dF9tYXBbb3MuZ2V0cGlkKCldW2kgKyAxXS5hbGFybV90aW1lOgorICAgICAgICAgICAgICAg
ICAgICBUaW1lb3V0Ll9wcm9jZXNzX3RvX3RpbWVvdXRfbWFwW29zLmdldHBpZCgpXS5pbnNlcnQo
aSwgc2VsZi5kYXRhKQorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgVGlt
ZW91dC5fcHJvY2Vzc190b190aW1lb3V0X21hcFtvcy5nZXRwaWQoKV0uYXBwZW5kKHNlbGYuZGF0
YSkKKworICAgICAgICAjIFRoaXMgaXMgdGhlIG1vc3QgdXJnZW50IHRpbWVvdXQKKyAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgIFRpbWVvdXQuX3Byb2Nlc3NfdG9fdGltZW91dF9tYXBbb3MuZ2V0
cGlkKCldID0gW3NlbGYuZGF0YV0gKyBUaW1lb3V0Ll9wcm9jZXNzX3RvX3RpbWVvdXRfbWFwLmdl
dChvcy5nZXRwaWQoKSwgW10pCisKKyAgICAgICAgVGltZW91dC5fYmluZF90aW1lb3V0X2RhdGFf
dG9fYWxhcm0oVGltZW91dC5jdXJyZW50KCkpCisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBk
ZWYgX19leGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192YWx1ZSwgdHJhY2ViYWNrKToKKyAgICAg
ICAgc2lnbmFsLmFsYXJtKDApICAjIEltaWVkaWF0bHkgZGlzYWJsZSB0aGUgYWxhcm0gc28gd2Ug
YXJlbid0IGludGVydXB0ZWQKKworICAgICAgICBpZiBub3QgVGltZW91dC5fcHJvY2Vzc190b190
aW1lb3V0X21hcFtvcy5nZXRwaWQoKV06CisgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3Io
J05vIHRpbWVvdXQgcmVnaXN0ZXJlZCcpCisgICAgICAgIFRpbWVvdXQuX3Byb2Nlc3NfdG9fdGlt
ZW91dF9tYXBbb3MuZ2V0cGlkKCldLnJlbW92ZShzZWxmLmRhdGEpCisgICAgICAgIHNlbGYuZGF0
YSA9IE5vbmUKKworICAgICAgICBpZiBUaW1lb3V0Ll9wcm9jZXNzX3RvX3RpbWVvdXRfbWFwW29z
LmdldHBpZCgpXToKKyAgICAgICAgICAgIFRpbWVvdXQuX2JpbmRfdGltZW91dF9kYXRhX3RvX2Fs
YXJtKFRpbWVvdXQuY3VycmVudCgpKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21t
b24vdGltZW91dF9jb250ZXh0X3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvY29tbW9uL3RpbWVvdXRfY29udGV4dF91bml0dGVzdC5weQkobm9uZXhpc3Rl
bnQpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi90aW1lb3V0X2NvbnRleHRfdW5p
dHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5OCBAQAorIyBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgdGltZQoraW1wb3J0IHRocmVhZGluZwor
aW1wb3J0IHVuaXR0ZXN0CisKK2Zyb20gd2Via2l0cHkuY29tbW9uLnRpbWVvdXRfY29udGV4dCBp
bXBvcnQgVGltZW91dAorCisKK2NsYXNzIFRpbWVvdXRDb250ZXh0VGVzdHModW5pdHRlc3QuVGVz
dENhc2UpOgorCisgICAgZGVmIHRlc3RfY3VycmVudF90aW1lb3V0KHNlbGYpOgorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKE5vbmUsIFRpbWVvdXQuY3VycmVudCgpKQorICAgICAgICB3aXRoIFRp
bWVvdXQoMSkgYXMgdG1wOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0bXAuZGF0YSwg
VGltZW91dC5jdXJyZW50KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgVGltZW91
dC5jdXJyZW50KCkpCisKKyAgICBkZWYgdGVzdF9pbnZhbGlkX3RpbWVvdXQoc2VsZik6CisgICAg
ICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgVGltZW91dCwgMCkKKworICAgIGRl
ZiB0ZXN0X3RpbWVvdXRfZGF0YShzZWxmKToKKyAgICAgICAgdG1wID0gVGltZW91dCgxKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIHRtcC5kYXRhKQorICAgICAgICB3aXRoIHRtcDoK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoTm9uZSwgdG1wLmRhdGEpCisgICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHRocmVhZGluZy5jdXJyZW50X3RocmVhZCgpLmlkZW50LCB0
bXAuZGF0YS50aHJlYWRfaWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIodGltZS50
aW1lKCkgKyAxLCB0bXAuZGF0YS5hbGFybV90aW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KE5vbmUsIHRtcC5kYXRhKQorCisgICAgZGVmIHRlc3RfbmVzdGVkX2lubmVyX3ByZWNlZGVuY2Uo
c2VsZik6CisgICAgICAgIHRtcF9vdXRlciA9IFRpbWVvdXQoMikKKyAgICAgICAgdG1wX2lubmVy
ID0gVGltZW91dCgxKQorICAgICAgICB3aXRoIHRtcF9vdXRlcjoKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwodG1wX291dGVyLmRhdGEsIFRpbWVvdXQuY3VycmVudCgpKQorICAgICAgICAg
ICAgd2l0aCB0bXBfaW5uZXI6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0bXBf
aW5uZXIuZGF0YSwgVGltZW91dC5jdXJyZW50KCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHRtcF9vdXRlci5kYXRhLCBUaW1lb3V0LmN1cnJlbnQoKSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChOb25lLCBUaW1lb3V0LmN1cnJlbnQoKSkKKworICAgIGRlZiB0ZXN0X25lc3RlZF9v
dXRlcl9wcmVjZWRlbmNlKHNlbGYpOgorICAgICAgICB0bXBfb3V0ZXIgPSBUaW1lb3V0KDEpCisg
ICAgICAgIHRtcF9pbm5lciA9IFRpbWVvdXQoMikKKyAgICAgICAgd2l0aCB0bXBfb3V0ZXI6Cisg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRtcF9vdXRlci5kYXRhLCBUaW1lb3V0LmN1cnJl
bnQoKSkKKyAgICAgICAgICAgIHdpdGggdG1wX2lubmVyOgorICAgICAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwodG1wX291dGVyLmRhdGEsIFRpbWVvdXQuY3VycmVudCgpKQorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCh0bXBfb3V0ZXIuZGF0YSwgVGltZW91dC5jdXJyZW50KCkpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgVGltZW91dC5jdXJyZW50KCkpCisKKyAgICBk
ZWYgdGVzdF9ub190aW1lb3V0KHNlbGYpOgorICAgICAgICB3aXRoIFRpbWVvdXQoMik6CisgICAg
ICAgICAgICB0aW1lLnNsZWVwKDEpCisKKyAgICBkZWYgdGVzdF9iYXNpY190aW1lb3V0KHNlbGYp
OgorICAgICAgICBkZWYgc2hvdWxkX3RpbWVvdXQoKToKKyAgICAgICAgICAgIHdpdGggVGltZW91
dCgxKToKKyAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKDIpCisgICAgICAgIHNlbGYuYXNzZXJ0
UmFpc2VzKFJ1bnRpbWVFcnJvciwgc2hvdWxkX3RpbWVvdXQpCisKKyAgICBkZWYgdGVzdF9leGNl
cHRpb25fY29uc3RydWN0b3JfdGltZW91dChzZWxmKToKKyAgICAgICAgZGVmIHNob3VsZF90aW1l
b3V0KCk6CisgICAgICAgICAgICB3aXRoIFRpbWVvdXQoMSwgRXhjZXB0aW9uKCdUaGlzIHNob3Vs
ZCBiZSByYWlzZWQnKSk6CisgICAgICAgICAgICAgICAgdGltZS5zbGVlcCgyKQorICAgICAgICBz
ZWxmLmFzc2VydFJhaXNlcyhFeGNlcHRpb24sIHNob3VsZF90aW1lb3V0KQorCisgICAgZGVmIHRl
c3RfbmVzdGVkX2lubmVyX3RpbWVvdXQoc2VsZik6CisgICAgICAgIGRlZiBzaG91bGRfdGltZW91
dCgpOgorICAgICAgICAgICAgd2l0aCBUaW1lb3V0KDMsIEV4Y2VwdGlvbigiVGhpcyBzaG91bGRu
J3QgYmUgcmFpc2VkIikpOgorICAgICAgICAgICAgICAgIHdpdGggVGltZW91dCgxKToKKyAgICAg
ICAgICAgICAgICAgICAgdGltZS5zbGVlcCgyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhS
dW50aW1lRXJyb3IsIHNob3VsZF90aW1lb3V0KQorCisgICAgZGVmIHRlc3RfbmVzdGVkX291dGVy
X3RpbWVvdXQoc2VsZik6CisgICAgICAgIGRlZiBzaG91bGRfdGltZW91dCgpOgorICAgICAgICAg
ICAgd2l0aCBUaW1lb3V0KDEpOgorICAgICAgICAgICAgICAgIHdpdGggVGltZW91dCgzLCBFeGNl
cHRpb24oIlRoaXMgc2hvdWxkbid0IGJlIHJhaXNlZCIpKToKKyAgICAgICAgICAgICAgICAgICAg
dGltZS5zbGVlcCgyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIHNo
b3VsZF90aW1lb3V0KQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3NpbXVsYXRv
cl9wcm9jZXNzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9z
aW11bGF0b3JfcHJvY2Vzcy5weQkocmV2aXNpb24gMjIwNDU1KQorKysgVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9wb3J0L3NpbXVsYXRvcl9wcm9jZXNzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yMiwx
MSArMjIsMTAgQEAKIAogCiBpbXBvcnQgb3MKLWltcG9ydCBzaWduYWwKIGltcG9ydCB0aW1lCiAK
IGZyb20gd2Via2l0cHkucG9ydC5zZXJ2ZXJfcHJvY2VzcyBpbXBvcnQgU2VydmVyUHJvY2Vzcwot
Citmcm9tIHdlYmtpdHB5LmNvbW1vbi50aW1lb3V0X2NvbnRleHQgaW1wb3J0IFRpbWVvdXQKIAog
Y2xhc3MgU2ltdWxhdG9yUHJvY2VzcyhTZXJ2ZXJQcm9jZXNzKToKIApAQCAtOTUsMzAgKzk0LDI0
IEBAIGNsYXNzIFNpbXVsYXRvclByb2Nlc3MoU2VydmVyUHJvY2Vzcyk6CiAgICAgICAgIHNlbGYu
X3RhcmdldF9ob3N0Lmxpc3RlbmluZ19zb2NrZXQubGlzdGVuKDMpCiAgICAgICAgIHNlbGYuX3Bp
ZCA9IHNlbGYuX3RhcmdldF9ob3N0LmxhdW5jaF9hcHAoc2VsZi5fYnVuZGxlX2lkLCBzZWxmLl9j
bWRbMTpdLCBlbnY9c2VsZi5fZW52KQogCi0gICAgICAgIGRlZiBoYW5kbGVyKHNpZ251bSwgZnJh
bWUpOgotICAgICAgICAgICAgYXNzZXJ0IHNpZ251bSA9PSBzaWduYWwuU0lHQUxSTQotICAgICAg
ICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdUaW1lZCBvdXQgd2FpdGluZyBmb3IgcGlkIHt9IHRv
IGNvbm5lY3QgYXQgcG9ydCB7fScuZm9ybWF0KHNlbGYuX3BpZCwgc2VsZi5fdGFyZ2V0X2hvc3Qu
bGlzdGVuaW5nX3BvcnQoKSkpCi0gICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0FMUk0s
IGhhbmRsZXIpCi0gICAgICAgIHNpZ25hbC5hbGFybSg2KSAgIyBJbiBzZWNvbmRzCi0KLSAgICAg
ICAgc3RkaW4gPSBOb25lCi0gICAgICAgIHN0ZG91dCA9IE5vbmUKLSAgICAgICAgc3RkZXJyID0g
Tm9uZQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICAjIFRoaXMgb3JkZXIgbWF0Y2hlcyB0aGUg
Y2xpZW50IHNpZGUgY29ubmVjdGlvbnMgaW4gVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9JT1NMYXlv
dXRUZXN0Q29tbXVuaWNhdGlvbi5jcHAgc2V0VXBJT1NMYXlvdXRUZXN0Q29tbXVuaWNhdGlvbigp
Ci0gICAgICAgICAgICBzdGRpbiA9IFNpbXVsYXRvclByb2Nlc3MuX2FjY2VwdF9jb25uZWN0aW9u
X2NyZWF0ZV9maWxlKHNlbGYuX3RhcmdldF9ob3N0Lmxpc3RlbmluZ19zb2NrZXQsICd3JykKLSAg
ICAgICAgICAgIHN0ZG91dCA9IFNpbXVsYXRvclByb2Nlc3MuX2FjY2VwdF9jb25uZWN0aW9uX2Ny
ZWF0ZV9maWxlKHNlbGYuX3RhcmdldF9ob3N0Lmxpc3RlbmluZ19zb2NrZXQsICdyYicpCi0gICAg
ICAgICAgICBzdGRlcnIgPSBTaW11bGF0b3JQcm9jZXNzLl9hY2NlcHRfY29ubmVjdGlvbl9jcmVh
dGVfZmlsZShzZWxmLl90YXJnZXRfaG9zdC5saXN0ZW5pbmdfc29ja2V0LCAncmInKQotICAgICAg
ICBleGNlcHQ6Ci0gICAgICAgICAgICAjIFdlIHNldCBzZWxmLl9wcm9jIGFzIF9yZXNldCgpIGFu
ZCBfa2lsbCgpIGRlcGVuZCBvbiBpdC4KLSAgICAgICAgICAgIHNlbGYuX3Byb2MgPSBTaW11bGF0
b3JQcm9jZXNzLlBvcGVuKHNlbGYuX3BpZCwgc3RkaW4sIHN0ZG91dCwgc3RkZXJyLCBzZWxmLl90
YXJnZXRfaG9zdCkKLSAgICAgICAgICAgIGlmIHNlbGYuX3Byb2MucG9sbCgpIGlzIG5vdCBOb25l
OgorICAgICAgICB3aXRoIFRpbWVvdXQoNiwgUnVudGltZUVycm9yKCdUaW1lZCBvdXQgd2FpdGlu
ZyBmb3IgcGlkIHt9IHRvIGNvbm5lY3QgYXQgcG9ydCB7fScuZm9ybWF0KHNlbGYuX3BpZCwgc2Vs
Zi5fdGFyZ2V0X2hvc3QubGlzdGVuaW5nX3BvcnQoKSkpKToKKyAgICAgICAgICAgIHN0ZGluID0g
Tm9uZQorICAgICAgICAgICAgc3Rkb3V0ID0gTm9uZQorICAgICAgICAgICAgc3RkZXJyID0gTm9u
ZQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICMgVGhpcyBvcmRlciBtYXRjaGVz
IHRoZSBjbGllbnQgc2lkZSBjb25uZWN0aW9ucyBpbiBUb29scy9UZXN0UnVubmVyU2hhcmVkL0lP
U0xheW91dFRlc3RDb21tdW5pY2F0aW9uLmNwcCBzZXRVcElPU0xheW91dFRlc3RDb21tdW5pY2F0
aW9uKCkKKyAgICAgICAgICAgICAgICBzdGRpbiA9IFNpbXVsYXRvclByb2Nlc3MuX2FjY2VwdF9j
b25uZWN0aW9uX2NyZWF0ZV9maWxlKHNlbGYuX3RhcmdldF9ob3N0Lmxpc3RlbmluZ19zb2NrZXQs
ICd3JykKKyAgICAgICAgICAgICAgICBzdGRvdXQgPSBTaW11bGF0b3JQcm9jZXNzLl9hY2NlcHRf
Y29ubmVjdGlvbl9jcmVhdGVfZmlsZShzZWxmLl90YXJnZXRfaG9zdC5saXN0ZW5pbmdfc29ja2V0
LCAncmInKQorICAgICAgICAgICAgICAgIHN0ZGVyciA9IFNpbXVsYXRvclByb2Nlc3MuX2FjY2Vw
dF9jb25uZWN0aW9uX2NyZWF0ZV9maWxlKHNlbGYuX3RhcmdldF9ob3N0Lmxpc3RlbmluZ19zb2Nr
ZXQsICdyYicpCisgICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgIyBXZSBzZXQg
c2VsZi5fcHJvYyBhcyBfcmVzZXQoKSBhbmQgX2tpbGwoKSBkZXBlbmQgb24gaXQuCisgICAgICAg
ICAgICAgICAgc2VsZi5fcHJvYyA9IFNpbXVsYXRvclByb2Nlc3MuUG9wZW4oc2VsZi5fcGlkLCBz
dGRpbiwgc3Rkb3V0LCBzdGRlcnIsIHNlbGYuX3RhcmdldF9ob3N0KQorICAgICAgICAgICAgICAg
IGlmIHNlbGYuX3Byb2MucG9sbCgpIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBz
ZWxmLl9yZXNldCgpCisgICAgICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignQXBwIHt9
IHdpdGggcGlkIHt9IGNyYXNoZWQgYmVmb3JlIHN0ZGluIGNvdWxkIGJlIGF0dGFjaGVkJy5mb3Jt
YXQob3MucGF0aC5iYXNlbmFtZShzZWxmLl9jbWRbMF0pLCBzZWxmLl9waWQpKQorICAgICAgICAg
ICAgICAgIHNlbGYuX2tpbGwoKQogICAgICAgICAgICAgICAgIHNlbGYuX3Jlc2V0KCkKLSAgICAg
ICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0FwcCB7fSB3aXRoIHBpZCB7fSBjcmFzaGVkIGJl
Zm9yZSBzdGRpbiBjb3VsZCBiZSBhdHRhY2hlZCcuZm9ybWF0KG9zLnBhdGguYmFzZW5hbWUoc2Vs
Zi5fY21kWzBdKSwgc2VsZi5fcGlkKSkKLSAgICAgICAgICAgIHNlbGYuX2tpbGwoKQotICAgICAg
ICAgICAgc2VsZi5fcmVzZXQoKQotICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgc2lnbmFsLmFs
YXJtKDApICAjIENhbmNlbCBhbGFybQorICAgICAgICAgICAgICAgIHJhaXNlCiAKICAgICAgICAg
c2VsZi5fcHJvYyA9IFNpbXVsYXRvclByb2Nlc3MuUG9wZW4oc2VsZi5fcGlkLCBzdGRpbiwgc3Rk
b3V0LCBzdGRlcnIsIHNlbGYuX3RhcmdldF9ob3N0KQogCkluZGV4OiBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3hjb2RlL3NpbXVsYXRlZF9kZXZpY2UucHkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS94Y29kZS9zaW11bGF0ZWRfZGV2aWNlLnB5CShyZXZpc2lvbiAyMjA0NTUp
CisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3hjb2RlL3NpbXVsYXRlZF9kZXZpY2UucHkJKHdv
cmtpbmcgY29weSkKQEAgLTIyLDkgKzIyLDkgQEAKIAogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBy
ZQotaW1wb3J0IHNpZ25hbAogaW1wb3J0IHN1YnByb2Nlc3MKIAorZnJvbSB3ZWJraXRweS5jb21t
b24udGltZW91dF9jb250ZXh0IGltcG9ydCBUaW1lb3V0CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5z
eXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBTY3JpcHRFcnJvcgogZnJvbSB3ZWJraXRweS54Y29kZS5z
aW11bGF0b3IgaW1wb3J0IFNpbXVsYXRvcgogZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdCBpbXBv
cnQgSG9zdApAQCAtMTcwLDI5ICsxNzAsMjMgQEAgY2xhc3MgU2ltdWxhdGVkRGV2aWNlKG9iamVj
dCk6CiAgICAgICAgIGRlZiBfbG9nX2RlYnVnX2Vycm9yKGVycm9yKToKICAgICAgICAgICAgIF9s
b2cuZGVidWcoZXJyb3IubWVzc2FnZV93aXRoX291dHB1dCgpKQogCi0gICAgICAgIGRlZiBfaW5z
dGFsbF90aW1lb3V0KHNpZ251bSwgZnJhbWUpOgotICAgICAgICAgICAgYXNzZXJ0IHNpZ251bSA9
PSBzaWduYWwuU0lHQUxSTQotICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdUaW1lZCBv
dXQgd2FpdGluZyBmb3IgcHJvY2VzcyB0byBvcGVuIHt9IG9uIHt9Jy5mb3JtYXQoYnVuZGxlX2lk
LCBzZWxmLnVkaWQpKQotCiAgICAgICAgIG91dHB1dCA9IE5vbmUKLSAgICAgICAgc2lnbmFsLnNp
Z25hbChzaWduYWwuU0lHQUxSTSwgX2luc3RhbGxfdGltZW91dCkKLSAgICAgICAgc2lnbmFsLmFs
YXJtKHRpbWVvdXQpICAjIEluIHNlY29uZHMKLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAg
ICAgIG91dHB1dCA9IHNlbGYuX2hvc3QuZXhlY3V0aXZlLnJ1bl9jb21tYW5kKAotICAgICAgICAg
ICAgICAgIFsneGNydW4nLCAnc2ltY3RsJywgJ2xhdW5jaCcsIHNlbGYudWRpZCwgYnVuZGxlX2lk
XSArIGFyZ3MsCi0gICAgICAgICAgICAgICAgZW52PWVudmlyb25tZW50X3RvX3VzZSwKLSAgICAg
ICAgICAgICAgICBlcnJvcl9oYW5kbGVyPV9sb2dfZGVidWdfZXJyb3IsCi0gICAgICAgICAgICAp
Ci0gICAgICAgICAgICBtYXRjaCA9IHJlLm1hdGNoKHInKD9QPGJ1bmRsZT5bXjpdKyk6ICg/UDxw
aWQ+XGQrKVxuJywgb3V0cHV0KQotICAgICAgICAgICAgIyBGSVhNRTogV2Ugc2hvdWxkbid0IG5l
ZWQgdG8gY2hlY2sgdGhlIFBJRCA8cmRhcjovL3Byb2JsZW0vMzExNTQwNzU+LgotICAgICAgICAg
ICAgaWYgbWF0Y2ggYW5kIHNlbGYuZXhlY3V0aXZlLmNoZWNrX3J1bm5pbmdfcGlkKGludChtYXRj
aC5ncm91cCgncGlkJykpKToKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgaWYg
bWF0Y2g6Ci0gICAgICAgICAgICAgICAgX2xvZy5kZWJ1Zygnc2ltY3RsIGxhdW5jaCByZXBvcnRl
ZCBwaWQge30sIGJ1dCB0aGlzIHByb2Nlc3MgaXMgbm90IHJ1bm5pbmcnLmZvcm1hdChtYXRjaC5n
cm91cCgncGlkJykpKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBfbG9nLmRl
YnVnKCdzaW1jdGwgbGF1bmNoIGRpZCBub3QgcmVwb3J0IGEgcGlkJykKIAotICAgICAgICBzaWdu
YWwuYWxhcm0oMCkgICMgQ2FuY2VsIGFsYXJtCisgICAgICAgIHdpdGggVGltZW91dCh0aW1lb3V0
LCBSdW50aW1lRXJyb3IoJ1RpbWVkIG91dCB3YWl0aW5nIGZvciBwcm9jZXNzIHRvIG9wZW4ge30g
b24ge30nLmZvcm1hdChidW5kbGVfaWQsIHNlbGYudWRpZCkpKToKKyAgICAgICAgICAgIHdoaWxl
IFRydWU6CisgICAgICAgICAgICAgICAgb3V0cHV0ID0gc2VsZi5faG9zdC5leGVjdXRpdmUucnVu
X2NvbW1hbmQoCisgICAgICAgICAgICAgICAgICAgIFsneGNydW4nLCAnc2ltY3RsJywgJ2xhdW5j
aCcsIHNlbGYudWRpZCwgYnVuZGxlX2lkXSArIGFyZ3MsCisgICAgICAgICAgICAgICAgICAgIGVu
dj1lbnZpcm9ubWVudF90b191c2UsCisgICAgICAgICAgICAgICAgICAgIGVycm9yX2hhbmRsZXI9
X2xvZ19kZWJ1Z19lcnJvciwKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgbWF0
Y2ggPSByZS5tYXRjaChyJyg/UDxidW5kbGU+W146XSspOiAoP1A8cGlkPlxkKylcbicsIG91dHB1
dCkKKyAgICAgICAgICAgICAgICAjIEZJWE1FOiBXZSBzaG91bGRuJ3QgbmVlZCB0byBjaGVjayB0
aGUgUElEIDxyZGFyOi8vcHJvYmxlbS8zMTE1NDA3NT4uCisgICAgICAgICAgICAgICAgaWYgbWF0
Y2ggYW5kIHNlbGYuZXhlY3V0aXZlLmNoZWNrX3J1bm5pbmdfcGlkKGludChtYXRjaC5ncm91cCgn
cGlkJykpKToKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBpZiBt
YXRjaDoKKyAgICAgICAgICAgICAgICAgICAgX2xvZy5kZWJ1Zygnc2ltY3RsIGxhdW5jaCByZXBv
cnRlZCBwaWQge30sIGJ1dCB0aGlzIHByb2Nlc3MgaXMgbm90IHJ1bm5pbmcnLmZvcm1hdChtYXRj
aC5ncm91cCgncGlkJykpKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAg
ICAgIF9sb2cuZGVidWcoJ3NpbWN0bCBsYXVuY2ggZGlkIG5vdCByZXBvcnQgYSBwaWQnKQogCiAg
ICAgICAgIGlmIG1hdGNoLmdyb3VwKCdidW5kbGUnKSAhPSBidW5kbGVfaWQ6CiAgICAgICAgICAg
ICByYWlzZSBSdW50aW1lRXJyb3IoJ0ZhaWxlZCB0byBmaW5kIHByb2Nlc3MgaWQgZm9yIHt9OiB7
fScuZm9ybWF0KGJ1bmRsZV9pZCwgb3V0cHV0KSkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkveGNvZGUvc2ltdWxhdG9yLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkveGNvZGUvc2ltdWxhdG9yLnB5CShyZXZpc2lvbiAyMjA0NTUpCisrKyBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3hjb2RlL3NpbXVsYXRvci5weQkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgs
NyBAQCBpbXBvcnQgcmUKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgdGltZQogCi1mcm9tIHdl
YmtpdHB5LmJlbmNobWFya19ydW5uZXIudXRpbHMgaW1wb3J0IHRpbWVvdXQKK2Zyb20gd2Via2l0
cHkuY29tbW9uLnRpbWVvdXRfY29udGV4dCBpbXBvcnQgVGltZW91dAogZnJvbSB3ZWJraXRweS5j
b21tb24uaG9zdCBpbXBvcnQgSG9zdAogCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1l
X18pCkBAIC0yNDIsNyArMjQyLDcgQEAgY2xhc3MgU2ltdWxhdG9yKG9iamVjdCk6CiAgICAgQHN0
YXRpY21ldGhvZAogICAgIGRlZiB3YWl0X3VudGlsX2RldmljZV9pc19ib290ZWQodWRpZCwgdGlt
ZW91dF9zZWNvbmRzPTYwICogMTUpOgogICAgICAgICBTaW11bGF0b3Iud2FpdF91bnRpbF9kZXZp
Y2VfaXNfaW5fc3RhdGUodWRpZCwgU2ltdWxhdG9yLkRldmljZVN0YXRlLkJPT1RFRCwgdGltZW91
dF9zZWNvbmRzKQotICAgICAgICB3aXRoIHRpbWVvdXQoc2Vjb25kcz10aW1lb3V0X3NlY29uZHMp
OgorICAgICAgICB3aXRoIFRpbWVvdXQoc2Vjb25kcz10aW1lb3V0X3NlY29uZHMpOgogICAgICAg
ICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAg
ICAgIHN0YXRlID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoWyd4Y3J1bicsICdzaW1jdGwnLCAn
c3Bhd24nLCB1ZGlkLCAnbGF1bmNoY3RsJywgJ3ByaW50JywgJ3N5c3RlbSddKS5zdHJpcCgpCkBA
IC0yNjAsNyArMjYwLDcgQEAgY2xhc3MgU2ltdWxhdG9yKG9iamVjdCk6CiAgICAgQHN0YXRpY21l
dGhvZAogICAgIGRlZiB3YWl0X3VudGlsX2RldmljZV9pc19pbl9zdGF0ZSh1ZGlkLCB3YWl0X3Vu
dGlsX3N0YXRlLCB0aW1lb3V0X3NlY29uZHM9NjAgKiAxNSk6CiAgICAgICAgIF9sb2cuZGVidWco
J3dhaXRpbmcgZm9yIGRldmljZSAlcyB0byBlbnRlciBzdGF0ZSAlcyB3aXRoIHRpbWVvdXQgJXMn
LCB1ZGlkLCBTaW11bGF0b3IuZGV2aWNlX3N0YXRlX2Rlc2NyaXB0aW9uKHdhaXRfdW50aWxfc3Rh
dGUpLCB0aW1lb3V0X3NlY29uZHMpCi0gICAgICAgIHdpdGggdGltZW91dChzZWNvbmRzPXRpbWVv
dXRfc2Vjb25kcyk6CisgICAgICAgIHdpdGggVGltZW91dChzZWNvbmRzPXRpbWVvdXRfc2Vjb25k
cyk6CiAgICAgICAgICAgICBkZXZpY2Vfc3RhdGUgPSBTaW11bGF0b3IuZGV2aWNlX3N0YXRlKHVk
aWQpCiAgICAgICAgICAgICB3aGlsZSAoZGV2aWNlX3N0YXRlICE9IHdhaXRfdW50aWxfc3RhdGUp
OgogICAgICAgICAgICAgICAgIGRldmljZV9zdGF0ZSA9IFNpbXVsYXRvci5kZXZpY2Vfc3RhdGUo
dWRpZCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317741</attachid>
            <date>2017-08-09 14:15:53 -0700</date>
            <delta_ts>2017-08-09 14:58:21 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-175390-20170809141552.patch</filename>
            <type>text/plain</type>
            <size>22519</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIyMDQ1OSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDU0IEBACisyMDE3LTA4LTA5ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBBbGxvdyBuZXN0ZWQgdGltZW91dHMgaW4gd2Via2l0cHkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTM5MAorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMzM4MDMwMDM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgS2ls
emVyLgorCisgICAgICAgIFdlIG5lZWQgdG8gYmUgYWJsZSB0byBuZXN0IHRpbWVvdXRzIGluIHdl
YmtpdHB5LiBJbiBwYXJ0aWN1bGFyLCB3ZSBoYXZlIGEgZmV3IGNhc2VzIHdoZXJlIGZ1bmN0aW9u
cworICAgICAgICB3aGljaCB1c2UgdGltZW91dHMgYWxzbyBjYWxsIHRoZSBleGVjdXRpdmUuIEZv
ciBvbi1kZXZpY2UgdGVzdGluZywgd2UgbmVlZCB0byBoYXZlIHRpbWVvdXRzIGluc2lkZQorICAg
ICAgICB0aGUgZXhlY3V0aXZlIHRvIGRldGVjdCBhbmQgcmVjb3ZlciBmcm9tIGFueSBpc3N1ZXMg
Y29ubmVjdGluZyB3aXRoIGRldmljZXMuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2Jl
bmNobWFya19ydW5uZXIvdXRpbHMucHk6CisgICAgICAgIChUaW1lb3V0RXJyb3IpOiBEZWxldGVk
LgorICAgICAgICAodGltZW91dCk6IERlbGV0ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vdGltZW91dF9jb250ZXh0LnB5OiBBZGRlZC4KKyAgICAgICAgKFRpbWVvdXQpOiBB
IHRpbWVvdXQgY29udGV4dCBkZXNpZ25lZCB0byBiZSBuZXN0ZWQuCisgICAgICAgIChUaW1lb3V0
LlRpbWVvdXREYXRhKTogVGhlIGRhdGEgcmVxdWlyZWQgdG8gY29uc3RydWN0IGFuIGFsYXJtIGZv
ciBhIGdpdmVuIHRpbWVvdXQuCisgICAgICAgIChUaW1lb3V0LlRpbWVvdXREYXRhLl9faW5pdF9f
KToKKyAgICAgICAgKFRpbWVvdXQuZGVmYXVsdF9oYW5kbGVyKTogVGltZW91dCBoYW5kbGVyIHVz
ZWQgaWYgbm9uZSBpcyBzcGVjaWZpZWQuCisgICAgICAgIChUaW1lb3V0LmN1cnJlbnQpOiBBY2Nl
c3MgZGF0YSBhYm91dCB0aGUgbW9zdCB1cmdlbnQgdGltZW91dC4KKyAgICAgICAgKFRpbWVvdXQu
X19pbml0X18pOiBDb25zdHJ1Y3QgYSBUaW1lb3V0IG9iamVjdCB3aXRoIHNlY29uZHMgYW5kIGFu
IG9wdGlvbmFsIGhhbmRsZXIuCisgICAgICAgIChUaW1lb3V0Ll9iaW5kX3RpbWVvdXRfZGF0YV90
b19hbGFybSk6IEdpdmVuIGRhdGEgYWJvdXQgYSB0aW1lb3V0LCBpbml0aWFsaXplIGFuIGFsYXJt
IGZvciB0aGF0IHRpbWVvdXQuCisgICAgICAgIChUaW1lb3V0Ll9fZW50ZXJfXyk6IFVuLWJpbmQg
YWxsIGFsYXJtcy4gQWRkIGRhdGEgZm9yIHRoaXMgdGltZW91dCB0byB0aGUgb3JkZXJlZCBsaXN0
IGFuZCBiaW5kIHRoZSBtb3N0CisgICAgICAgIHVyZ2VudCB0aW1lb3V0IGRhdGEuCisgICAgICAg
IChUaW1lb3V0Ll9fZXhpdF9fKTogVW4tYmluZCBhbGwgYWxhcm1zLiBSZW1vdmUgZGF0YSBmb3Ig
dGhpcyB0aW1lb3V0IGZyb20gdGhlIG9yZGVyZWQgbGlzdCBhbmQgYmluZCB0aGUKKyAgICAgICAg
bW9zdCB1cmdlbnQgdGltZW91dCBkYXRhLCBpZiBzdWNoIGRhdGEgZXhpc3RzLgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3RpbWVvdXRfY29udGV4dF91bml0dGVzdC5weTogQWRk
ZWQuCisgICAgICAgIChUaW1lb3V0Q29udGV4dFRlc3RzKToKKyAgICAgICAgKFRpbWVvdXRDb250
ZXh0VGVzdHMudGVzdF9jdXJyZW50X3RpbWVvdXQpOiBUZXN0IHRoYXQgYWNjZXNzaW5nIHRoZSBu
ZWFyZXN0IHRpbWVvdXQgd29ya3MgYXMgZXhwZWN0ZWQuCisgICAgICAgIChUaW1lb3V0Q29udGV4
dFRlc3RzLnRlc3RfaW52YWxpZF90aW1lb3V0KTogVGVzdCBhIHRpbWVvdXQgb2YgMC4KKyAgICAg
ICAgKFRpbWVvdXRDb250ZXh0VGVzdHMudGVzdF90aW1lb3V0X2RhdGEpOiBDb25maXJtIHRoYXQg
dGltZW91dHMgYXJlIGNvbnN0cnVjdGVkIGNvcnJlY3RseS4KKyAgICAgICAgKFRpbWVvdXRDb250
ZXh0VGVzdHMudGVzdF9uZXN0ZWRfaW5uZXJfcHJlY2VkZW5jZSk6IENoZWNrIHRoYXQgYSBtb3Jl
IHVyZ2VudCBpbm5lciB0aW1lb3V0IHRha2VzIHByZWNlZGVuY2UKKyAgICAgICAgb3ZlciBhIGxl
c3MgdXJnZW50IG91dGVyIHRpbWVvdXQuCisgICAgICAgIChUaW1lb3V0Q29udGV4dFRlc3RzLnRl
c3RfbmVzdGVkX291dGVyX3ByZWNlZGVuY2UpOiBDaGVjayB0aGF0IGEgbW9yZSB1cmdlbnQgb3V0
ZXIgdGltZW91dCB0YWtlcyBwcmVjZWRlbmNlCisgICAgICAgIG92ZXIgYSBsZXNzIHVyZ2VudCBp
bm5lciB0aW1lb3V0LgorICAgICAgICAoVGltZW91dENvbnRleHRUZXN0cy50ZXN0X25vX3RpbWVv
dXQpOiBUZXN0IGEgYmxvY2sgb2YgY29kZSB3aXRob3V0IGEgdGltZW91dC4KKyAgICAgICAgKFRp
bWVvdXRDb250ZXh0VGVzdHMudGVzdF9iYXNpY190aW1lb3V0KTogVGVzdCBhIGJsb2NrIG9mIGNv
ZGUgZXhwZWN0ZWQgdG8gdGltZW91dC4KKyAgICAgICAgKFRpbWVvdXRDb250ZXh0VGVzdHMudGVz
dF9leGNlcHRpb25fY29uc3RydWN0b3JfdGltZW91dCk6IFRlc3QgYSB0aW1lb3V0IHdoZXJlIHRo
ZSBoYW5kbGVyIGlzIGFuIGV4Y2VwdGlvbi4KKyAgICAgICAgKFRpbWVvdXRDb250ZXh0VGVzdHMu
dGVzdF9uZXN0ZWRfaW5uZXJfdGltZW91dCk6IENvbmZpcm0gdGhhdCBhIG1vcmUgdXJnZW50IGlu
bmVyIHRpbWVvdXQgaXMgdHJpZ2dlcmVkLgorICAgICAgICAoVGltZW91dENvbnRleHRUZXN0cy50
ZXN0X25lc3RlZF9vdXRlcl90aW1lb3V0KTogQ29uZmlybSB0aGF0IGEgbW9yZSB1cmdlbnQgb3V0
ZXIgdGltZW91dCBpcyB0cmlnZ2VyZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0
L3NpbXVsYXRvcl9wcm9jZXNzLnB5OgorICAgICAgICAoU2ltdWxhdG9yUHJvY2Vzcy5fc3RhcnQp
OiBVc2UgVGltZW91dCBjbGFzcy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3hjb2RlL3Np
bXVsYXRlZF9kZXZpY2UucHk6CisgICAgICAgIChTaW11bGF0ZWREZXZpY2UubGF1bmNoX2FwcC5f
bG9nX2RlYnVnX2Vycm9yKTogVXNlIFRpbWVvdXQgY2xhc3MuCisgICAgICAgIChTaW11bGF0ZWRE
ZXZpY2UubGF1bmNoX2FwcCk6IERpdHRvLgorICAgICAgICAoU2ltdWxhdGVkRGV2aWNlLmxhdW5j
aF9hcHAuX2luc3RhbGxfdGltZW91dCk6IERlbGV0ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS94Y29kZS9zaW11bGF0b3IucHk6CisgICAgICAgIChTaW11bGF0b3Iud2FpdF91bnRpbF9k
ZXZpY2VfaXNfYm9vdGVkKTpVc2UgVGltZW91dCBjbGFzcy4KKyAgICAgICAgKFNpbXVsYXRvci53
YWl0X3VudGlsX2RldmljZV9pc19pbl9zdGF0ZSk6IERpdHRvLgorCiAyMDE3LTA4LTA5ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMjE5
MDEzKTogT0F1dGggZmxvd3MgYXJlIGJyb2tlbiB3aGVuIHJlZGlyZWN0aW5nIGJhY2sgdG8gYXBw
bGljYXRpb24gYWZ0ZXIgYXV0aGVudGljYXRpb24KSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvYmVuY2htYXJrX3J1bm5lci91dGlscy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2JlbmNobWFya19ydW5uZXIvdXRpbHMucHkJKHJldmlzaW9uIDIyMDQ1NSkKKysr
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvYmVuY2htYXJrX3J1bm5lci91dGlscy5weQkod29ya2lu
ZyBjb3B5KQpAQCAtNCw5ICs0LDcgQEAgaW1wb3J0IGltcAogaW1wb3J0IGluc3BlY3QKIGltcG9y
dCBsb2dnaW5nCiBpbXBvcnQgb3MKLWltcG9ydCBzaWduYWwKIGltcG9ydCBzaHV0aWwKLWltcG9y
dCBzeXMKIAogZnJvbSB3ZWJraXRweS5jb21tb24ubWVtb2l6ZWQgaW1wb3J0IG1lbW9pemVkCiAK
QEAgLTc3LDI2ICs3NSwzIEBAIGRlZiB3cml0ZV9kZWZhdWx0cyhkb21haW4sIGtleSwgdmFsdWUp
OgogICAgIGRlZmF1bHRzLnNldFBlcnNpc3RlbnREb21haW5fZm9yTmFtZV8obXV0YWJsZV9kZWZh
dWx0c19mb3JfZG9tYWluLCBkb21haW4pCiAgICAgZGVmYXVsdHMuc3luY2hyb25pemUoKQogICAg
IHJldHVybiBUcnVlCi0KLQotIyBCb3Jyb3cgdGhpcyBjb2RlIGZyb20KLSMgJ2h0dHA6Ly9zdGFj
a292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMjI4MTg1MC90aW1lb3V0LWZ1bmN0aW9uLWlmLWl0LXRh
a2VzLXRvby1sb25nLXRvLWZpbmlzaCcKLWNsYXNzIFRpbWVvdXRFcnJvcihFeGNlcHRpb24pOgot
ICAgIHBhc3MKLQotCi1jbGFzcyB0aW1lb3V0OgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHNl
Y29uZHM9MSwgZXJyb3JfbWVzc2FnZT0nVGltZW91dCcpOgotICAgICAgICBzZWxmLnNlY29uZHMg
PSBzZWNvbmRzCi0gICAgICAgIHNlbGYuZXJyb3JfbWVzc2FnZSA9IGVycm9yX21lc3NhZ2UKLQot
ICAgIGRlZiBoYW5kbGVfdGltZW91dChzZWxmLCBzaWdudW0sIGZyYW1lKToKLSAgICAgICAgcmFp
c2UgVGltZW91dEVycm9yKHNlbGYuZXJyb3JfbWVzc2FnZSkKLQotICAgIGRlZiBfX2VudGVyX18o
c2VsZik6Ci0gICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0FMUk0sIHNlbGYuaGFuZGxl
X3RpbWVvdXQpCi0gICAgICAgIHNpZ25hbC5hbGFybShzZWxmLnNlY29uZHMpCi0KLSAgICBkZWYg
X19leGl0X18oc2VsZiwgdHlwZSwgdmFsdWUsIHRyYWNlYmFjayk6Ci0gICAgICAgIHNpZ25hbC5h
bGFybSgwKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vdGltZW91dF9jb250
ZXh0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3RpbWVv
dXRfY29udGV4dC5weQkobm9uZXhpc3RlbnQpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi90aW1lb3V0X2NvbnRleHQucHkJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMTkgQEAK
KyMgQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMK
KyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwK
KyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IGxvZ2dpbmcK
K2ltcG9ydCBtYXRoCitpbXBvcnQgb3MKK2ltcG9ydCBzaWduYWwKK2ltcG9ydCB0aW1lCitpbXBv
cnQgdGhyZWFkaW5nCisKK19sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKKworCitj
bGFzcyBUaW1lb3V0KG9iamVjdCk6CisKKyAgICB0aHJlYWRfZXhjZXB0aW9uID0gUnVudGltZUVy
cm9yKCdUaW1lb3V0IG9yaWdpbmF0ZXMgZnJvbSBhIGRpZmZlcmVudCB0aHJlYWQnKQorICAgIF9w
cm9jZXNzX3RvX3RpbWVvdXRfbWFwID0ge30KKworICAgIGNsYXNzIFRpbWVvdXREYXRhKG9iamVj
dCk6CisKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFsYXJtX3RpbWUsIGhhbmRsZXIpOgor
ICAgICAgICAgICAgc2VsZi5hbGFybV90aW1lID0gYWxhcm1fdGltZQorICAgICAgICAgICAgc2Vs
Zi5oYW5kbGVyID0gaGFuZGxlcgorICAgICAgICAgICAgc2VsZi50aHJlYWRfaWQgPSB0aHJlYWRp
bmcuY3VycmVudF90aHJlYWQoKS5pZGVudAorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBk
ZWZhdWx0X2hhbmRsZXIoc2lnbnVtLCBmcmFtZSk6CisgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJv
cignVGltZW91dCBhbGFybSB3YXMgdHJpZ2dlcmVkJykKKworICAgIEBzdGF0aWNtZXRob2QKKyAg
ICBkZWYgY3VycmVudCgpOgorICAgICAgICByZXN1bHQgPSBUaW1lb3V0Ll9wcm9jZXNzX3RvX3Rp
bWVvdXRfbWFwLmdldChvcy5nZXRwaWQoKSwgW10pCisgICAgICAgIGlmIG5vdCByZXN1bHQ6Cisg
ICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICBpZiByZXN1bHRbMF0udGhyZWFkX2lkICE9
IHRocmVhZGluZy5jdXJyZW50X3RocmVhZCgpLmlkZW50OgorICAgICAgICAgICAgX2xvZy5jcml0
aWNhbCgnVXNpbmcgYm90aCBhbGFybXMgYW5kIHRocmVhZGluZyBpbiB0aGUgc2FtZSBwcm9jZXNz
LCB0aGlzIGlzIHVuc3VwcG9ydGVkJykKKyAgICAgICAgICAgIHJhaXNlIFRpbWVvdXQudGhyZWFk
X2V4Y2VwdGlvbgorICAgICAgICByZXR1cm4gcmVzdWx0WzBdCisKKyAgICBkZWYgX19pbml0X18o
c2VsZiwgc2Vjb25kcz0xLCBoYW5kbGVyPU5vbmUpOgorICAgICAgICBpZiBzZWNvbmRzID09IDA6
CisgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0Nhbm5vdCBoYXZlIGEgdGltZW91dCBv
ZiAwIHNlY29uZHMnKQorCisgICAgICAgIGlmIGlzaW5zdGFuY2UoaGFuZGxlciwgQmFzZUV4Y2Vw
dGlvbik6CisgICAgICAgICAgICBleGNlcHRpb24gPSBoYW5kbGVyCisKKyAgICAgICAgICAgIGRl
ZiBleGNlcHRpb25faGFuZGxlcihzaWdudW0sIGZyYW1lKToKKyAgICAgICAgICAgICAgICByYWlz
ZSBleGNlcHRpb24KKworICAgICAgICAgICAgaGFuZGxlciA9IGV4Y2VwdGlvbl9oYW5kbGVyCisK
KyAgICAgICAgc2VsZi5fdGltZW91dCA9IHNlY29uZHMKKyAgICAgICAgc2VsZi5faGFuZGxlciA9
IGhhbmRsZXIgaWYgaGFuZGxlciBlbHNlIFRpbWVvdXQuZGVmYXVsdF9oYW5kbGVyCisgICAgICAg
IHNlbGYuZGF0YSA9IE5vbmUKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgX2JpbmRfdGlt
ZW91dF9kYXRhX3RvX2FsYXJtKGRhdGEpOgorICAgICAgICBkZWYgaGFuZGxlcihzaWdudW0sIGZy
YW1lKToKKyAgICAgICAgICAgIGFzc2VydCBzaWdudW0gPT0gc2lnbmFsLlNJR0FMUk0KKyAgICAg
ICAgICAgIGlmIGRhdGEudGhyZWFkX2lkICE9IHRocmVhZGluZy5jdXJyZW50X3RocmVhZCgpLmlk
ZW50OgorICAgICAgICAgICAgICAgIHJhaXNlIFRpbWVvdXQudGhyZWFkX2V4Y2VwdGlvbgorICAg
ICAgICAgICAgZGF0YS5oYW5kbGVyKHNpZ251bSwgZnJhbWUpCisKKyAgICAgICAgY3VycmVudF90
aW1lID0gdGltZS50aW1lKCkKKyAgICAgICAgaWYgZGF0YS5hbGFybV90aW1lIDw9IGN1cnJlbnRf
dGltZToKKyAgICAgICAgICAgIGhhbmRsZXIoc2lnbmFsLlNJR0FMUk0sIE5vbmUpCisKKyAgICAg
ICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHQUxSTSwgaGFuZGxlcikKKyAgICAgICAgc2lnbmFs
LmFsYXJtKGludChtYXRoLmNlaWwoZGF0YS5hbGFybV90aW1lIC0gY3VycmVudF90aW1lKSkpCisK
KyAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgorICAgICAgICBzaWduYWwuYWxhcm0oMCkgICMgSW1p
ZWRpYXRseSBkaXNhYmxlIHRoZSBhbGFybSBzbyB3ZSBhcmVuJ3QgaW50ZXJ1cHRlZC4KKyAgICAg
ICAgc2VsZi5kYXRhID0gVGltZW91dC5UaW1lb3V0RGF0YSh0aW1lLnRpbWUoKSArIHNlbGYuX3Rp
bWVvdXQsIHNlbGYuX2hhbmRsZXIpCisgICAgICAgIGN1cnJlbnRfdGltZW91dCA9IFRpbWVvdXQu
Y3VycmVudCgpCisKKyAgICAgICAgIyBBbm90aGVyIHRpbWVvdXQgaXMgbW9yZSB1cmdlbnQuCisg
ICAgICAgIGlmIGN1cnJlbnRfdGltZW91dCBhbmQgY3VycmVudF90aW1lb3V0LmFsYXJtX3RpbWUg
PCBzZWxmLmRhdGEuYWxhcm1fdGltZToKKyAgICAgICAgICAgIGZvciBpIGluIHhyYW5nZShsZW4o
VGltZW91dC5fcHJvY2Vzc190b190aW1lb3V0X21hcFtvcy5nZXRwaWQoKV0pIC0gMSk6CisgICAg
ICAgICAgICAgICAgaWYgc2VsZi5kYXRhLmFsYXJtX3RpbWUgPCBUaW1lb3V0Ll9wcm9jZXNzX3Rv
X3RpbWVvdXRfbWFwW29zLmdldHBpZCgpXVtpICsgMV0uYWxhcm1fdGltZToKKyAgICAgICAgICAg
ICAgICAgICAgVGltZW91dC5fcHJvY2Vzc190b190aW1lb3V0X21hcFtvcy5nZXRwaWQoKV0uaW5z
ZXJ0KGksIHNlbGYuZGF0YSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAg
IFRpbWVvdXQuX3Byb2Nlc3NfdG9fdGltZW91dF9tYXBbb3MuZ2V0cGlkKCldLmFwcGVuZChzZWxm
LmRhdGEpCisKKyAgICAgICAgIyBUaGlzIGlzIHRoZSBtb3N0IHVyZ2VudCB0aW1lb3V0CisgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICBUaW1lb3V0Ll9wcm9jZXNzX3RvX3RpbWVvdXRfbWFwW29z
LmdldHBpZCgpXSA9IFtzZWxmLmRhdGFdICsgVGltZW91dC5fcHJvY2Vzc190b190aW1lb3V0X21h
cC5nZXQob3MuZ2V0cGlkKCksIFtdKQorCisgICAgICAgIFRpbWVvdXQuX2JpbmRfdGltZW91dF9k
YXRhX3RvX2FsYXJtKFRpbWVvdXQuY3VycmVudCgpKQorICAgICAgICByZXR1cm4gc2VsZgorCisg
ICAgZGVmIF9fZXhpdF9fKHNlbGYsIGV4Y190eXBlLCBleGNfdmFsdWUsIHRyYWNlYmFjayk6Cisg
ICAgICAgIHNpZ25hbC5hbGFybSgwKSAgIyBJbWllZGlhdGx5IGRpc2FibGUgdGhlIGFsYXJtIHNv
IHdlIGFyZW4ndCBpbnRlcnVwdGVkLgorCisgICAgICAgIGlmIG5vdCBUaW1lb3V0Ll9wcm9jZXNz
X3RvX3RpbWVvdXRfbWFwW29zLmdldHBpZCgpXToKKyAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVF
cnJvcignTm8gdGltZW91dCByZWdpc3RlcmVkJykKKyAgICAgICAgVGltZW91dC5fcHJvY2Vzc190
b190aW1lb3V0X21hcFtvcy5nZXRwaWQoKV0ucmVtb3ZlKHNlbGYuZGF0YSkKKyAgICAgICAgc2Vs
Zi5kYXRhID0gTm9uZQorCisgICAgICAgIGlmIFRpbWVvdXQuX3Byb2Nlc3NfdG9fdGltZW91dF9t
YXBbb3MuZ2V0cGlkKCldOgorICAgICAgICAgICAgVGltZW91dC5fYmluZF90aW1lb3V0X2RhdGFf
dG9fYWxhcm0oVGltZW91dC5jdXJyZW50KCkpCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi90aW1lb3V0X2NvbnRleHRfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vdGltZW91dF9jb250ZXh0X3VuaXR0ZXN0LnB5CShub25l
eGlzdGVudCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3RpbWVvdXRfY29udGV4
dF91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDk4IEBACisjIENvcHlyaWdo
dCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
IyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
CisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCB0aW1lCitpbXBvcnQgdGhyZWFk
aW5nCitpbXBvcnQgdW5pdHRlc3QKKworZnJvbSB3ZWJraXRweS5jb21tb24udGltZW91dF9jb250
ZXh0IGltcG9ydCBUaW1lb3V0CisKKworY2xhc3MgVGltZW91dENvbnRleHRUZXN0cyh1bml0dGVz
dC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9jdXJyZW50X3RpbWVvdXQoc2VsZik6CisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgVGltZW91dC5jdXJyZW50KCkpCisgICAgICAgIHdp
dGggVGltZW91dCgxKSBhcyB0bXA6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRtcC5k
YXRhLCBUaW1lb3V0LmN1cnJlbnQoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBU
aW1lb3V0LmN1cnJlbnQoKSkKKworICAgIGRlZiB0ZXN0X2ludmFsaWRfdGltZW91dChzZWxmKToK
KyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBUaW1lb3V0LCAwKQorCisg
ICAgZGVmIHRlc3RfdGltZW91dF9kYXRhKHNlbGYpOgorICAgICAgICB0bXAgPSBUaW1lb3V0KDEp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgdG1wLmRhdGEpCisgICAgICAgIHdpdGgg
dG1wOgorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChOb25lLCB0bXAuZGF0YSkKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGhyZWFkaW5nLmN1cnJlbnRfdGhyZWFkKCkuaWRl
bnQsIHRtcC5kYXRhLnRocmVhZF9pZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcih0
aW1lLnRpbWUoKSArIDEsIHRtcC5kYXRhLmFsYXJtX3RpbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoTm9uZSwgdG1wLmRhdGEpCisKKyAgICBkZWYgdGVzdF9uZXN0ZWRfaW5uZXJfcHJlY2Vk
ZW5jZShzZWxmKToKKyAgICAgICAgdG1wX291dGVyID0gVGltZW91dCgyKQorICAgICAgICB0bXBf
aW5uZXIgPSBUaW1lb3V0KDEpCisgICAgICAgIHdpdGggdG1wX291dGVyOgorICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCh0bXBfb3V0ZXIuZGF0YSwgVGltZW91dC5jdXJyZW50KCkpCisgICAg
ICAgICAgICB3aXRoIHRtcF9pbm5lcjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHRtcF9pbm5lci5kYXRhLCBUaW1lb3V0LmN1cnJlbnQoKSkKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwodG1wX291dGVyLmRhdGEsIFRpbWVvdXQuY3VycmVudCgpKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKE5vbmUsIFRpbWVvdXQuY3VycmVudCgpKQorCisgICAgZGVmIHRlc3RfbmVz
dGVkX291dGVyX3ByZWNlZGVuY2Uoc2VsZik6CisgICAgICAgIHRtcF9vdXRlciA9IFRpbWVvdXQo
MSkKKyAgICAgICAgdG1wX2lubmVyID0gVGltZW91dCgyKQorICAgICAgICB3aXRoIHRtcF9vdXRl
cjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodG1wX291dGVyLmRhdGEsIFRpbWVvdXQu
Y3VycmVudCgpKQorICAgICAgICAgICAgd2l0aCB0bXBfaW5uZXI6CisgICAgICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCh0bXBfb3V0ZXIuZGF0YSwgVGltZW91dC5jdXJyZW50KCkpCisgICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRtcF9vdXRlci5kYXRhLCBUaW1lb3V0LmN1cnJlbnQo
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBUaW1lb3V0LmN1cnJlbnQoKSkKKwor
ICAgIGRlZiB0ZXN0X25vX3RpbWVvdXQoc2VsZik6CisgICAgICAgIHdpdGggVGltZW91dCgyKToK
KyAgICAgICAgICAgIHRpbWUuc2xlZXAoMSkKKworICAgIGRlZiB0ZXN0X2Jhc2ljX3RpbWVvdXQo
c2VsZik6CisgICAgICAgIGRlZiBzaG91bGRfdGltZW91dCgpOgorICAgICAgICAgICAgd2l0aCBU
aW1lb3V0KDEpOgorICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoMikKKyAgICAgICAgc2VsZi5h
c3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBzaG91bGRfdGltZW91dCkKKworICAgIGRlZiB0ZXN0
X2V4Y2VwdGlvbl9jb25zdHJ1Y3Rvcl90aW1lb3V0KHNlbGYpOgorICAgICAgICBkZWYgc2hvdWxk
X3RpbWVvdXQoKToKKyAgICAgICAgICAgIHdpdGggVGltZW91dCgxLCBFeGNlcHRpb24oJ1RoaXMg
c2hvdWxkIGJlIHJhaXNlZCcpKToKKyAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKDIpCisgICAg
ICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEV4Y2VwdGlvbiwgc2hvdWxkX3RpbWVvdXQpCisKKyAgICBk
ZWYgdGVzdF9uZXN0ZWRfaW5uZXJfdGltZW91dChzZWxmKToKKyAgICAgICAgZGVmIHNob3VsZF90
aW1lb3V0KCk6CisgICAgICAgICAgICB3aXRoIFRpbWVvdXQoMywgRXhjZXB0aW9uKCJUaGlzIHNo
b3VsZG4ndCBiZSByYWlzZWQiKSk6CisgICAgICAgICAgICAgICAgd2l0aCBUaW1lb3V0KDEpOgor
ICAgICAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKDIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFp
c2VzKFJ1bnRpbWVFcnJvciwgc2hvdWxkX3RpbWVvdXQpCisKKyAgICBkZWYgdGVzdF9uZXN0ZWRf
b3V0ZXJfdGltZW91dChzZWxmKToKKyAgICAgICAgZGVmIHNob3VsZF90aW1lb3V0KCk6CisgICAg
ICAgICAgICB3aXRoIFRpbWVvdXQoMSk6CisgICAgICAgICAgICAgICAgd2l0aCBUaW1lb3V0KDMs
IEV4Y2VwdGlvbigiVGhpcyBzaG91bGRuJ3QgYmUgcmFpc2VkIikpOgorICAgICAgICAgICAgICAg
ICAgICB0aW1lLnNsZWVwKDIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJv
ciwgc2hvdWxkX3RpbWVvdXQpCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvc2lt
dWxhdG9yX3Byb2Nlc3MucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9w
b3J0L3NpbXVsYXRvcl9wcm9jZXNzLnB5CShyZXZpc2lvbiAyMjA0NTUpCisrKyBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3BvcnQvc2ltdWxhdG9yX3Byb2Nlc3MucHkJKHdvcmtpbmcgY29weSkKQEAg
LTIyLDEyICsyMiwxMSBAQAogCiAKIGltcG9ydCBvcwotaW1wb3J0IHNpZ25hbAogaW1wb3J0IHRp
bWUKIAorZnJvbSB3ZWJraXRweS5jb21tb24udGltZW91dF9jb250ZXh0IGltcG9ydCBUaW1lb3V0
CiBmcm9tIHdlYmtpdHB5LnBvcnQuc2VydmVyX3Byb2Nlc3MgaW1wb3J0IFNlcnZlclByb2Nlc3MK
IAotCiBjbGFzcyBTaW11bGF0b3JQcm9jZXNzKFNlcnZlclByb2Nlc3MpOgogCiAgICAgY2xhc3Mg
UG9wZW4ob2JqZWN0KToKQEAgLTk1LDMwICs5NCwyNCBAQCBjbGFzcyBTaW11bGF0b3JQcm9jZXNz
KFNlcnZlclByb2Nlc3MpOgogICAgICAgICBzZWxmLl90YXJnZXRfaG9zdC5saXN0ZW5pbmdfc29j
a2V0Lmxpc3RlbigzKQogICAgICAgICBzZWxmLl9waWQgPSBzZWxmLl90YXJnZXRfaG9zdC5sYXVu
Y2hfYXBwKHNlbGYuX2J1bmRsZV9pZCwgc2VsZi5fY21kWzE6XSwgZW52PXNlbGYuX2VudikKIAot
ICAgICAgICBkZWYgaGFuZGxlcihzaWdudW0sIGZyYW1lKToKLSAgICAgICAgICAgIGFzc2VydCBz
aWdudW0gPT0gc2lnbmFsLlNJR0FMUk0KLSAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcign
VGltZWQgb3V0IHdhaXRpbmcgZm9yIHBpZCB7fSB0byBjb25uZWN0IGF0IHBvcnQge30nLmZvcm1h
dChzZWxmLl9waWQsIHNlbGYuX3RhcmdldF9ob3N0Lmxpc3RlbmluZ19wb3J0KCkpKQotICAgICAg
ICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdBTFJNLCBoYW5kbGVyKQotICAgICAgICBzaWduYWwu
YWxhcm0oNikgICMgSW4gc2Vjb25kcwotCi0gICAgICAgIHN0ZGluID0gTm9uZQotICAgICAgICBz
dGRvdXQgPSBOb25lCi0gICAgICAgIHN0ZGVyciA9IE5vbmUKLSAgICAgICAgdHJ5OgotICAgICAg
ICAgICAgIyBUaGlzIG9yZGVyIG1hdGNoZXMgdGhlIGNsaWVudCBzaWRlIGNvbm5lY3Rpb25zIGlu
IFRvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvSU9TTGF5b3V0VGVzdENvbW11bmljYXRpb24uY3BwIHNl
dFVwSU9TTGF5b3V0VGVzdENvbW11bmljYXRpb24oKQotICAgICAgICAgICAgc3RkaW4gPSBTaW11
bGF0b3JQcm9jZXNzLl9hY2NlcHRfY29ubmVjdGlvbl9jcmVhdGVfZmlsZShzZWxmLl90YXJnZXRf
aG9zdC5saXN0ZW5pbmdfc29ja2V0LCAndycpCi0gICAgICAgICAgICBzdGRvdXQgPSBTaW11bGF0
b3JQcm9jZXNzLl9hY2NlcHRfY29ubmVjdGlvbl9jcmVhdGVfZmlsZShzZWxmLl90YXJnZXRfaG9z
dC5saXN0ZW5pbmdfc29ja2V0LCAncmInKQotICAgICAgICAgICAgc3RkZXJyID0gU2ltdWxhdG9y
UHJvY2Vzcy5fYWNjZXB0X2Nvbm5lY3Rpb25fY3JlYXRlX2ZpbGUoc2VsZi5fdGFyZ2V0X2hvc3Qu
bGlzdGVuaW5nX3NvY2tldCwgJ3JiJykKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgIyBX
ZSBzZXQgc2VsZi5fcHJvYyBhcyBfcmVzZXQoKSBhbmQgX2tpbGwoKSBkZXBlbmQgb24gaXQuCi0g
ICAgICAgICAgICBzZWxmLl9wcm9jID0gU2ltdWxhdG9yUHJvY2Vzcy5Qb3BlbihzZWxmLl9waWQs
IHN0ZGluLCBzdGRvdXQsIHN0ZGVyciwgc2VsZi5fdGFyZ2V0X2hvc3QpCi0gICAgICAgICAgICBp
ZiBzZWxmLl9wcm9jLnBvbGwoKSBpcyBub3QgTm9uZToKKyAgICAgICAgd2l0aCBUaW1lb3V0KDYs
IFJ1bnRpbWVFcnJvcignVGltZWQgb3V0IHdhaXRpbmcgZm9yIHBpZCB7fSB0byBjb25uZWN0IGF0
IHBvcnQge30nLmZvcm1hdChzZWxmLl9waWQsIHNlbGYuX3RhcmdldF9ob3N0Lmxpc3RlbmluZ19w
b3J0KCkpKSk6CisgICAgICAgICAgICBzdGRpbiA9IE5vbmUKKyAgICAgICAgICAgIHN0ZG91dCA9
IE5vbmUKKyAgICAgICAgICAgIHN0ZGVyciA9IE5vbmUKKyAgICAgICAgICAgIHRyeToKKyAgICAg
ICAgICAgICAgICAjIFRoaXMgb3JkZXIgbWF0Y2hlcyB0aGUgY2xpZW50IHNpZGUgY29ubmVjdGlv
bnMgaW4gVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9JT1NMYXlvdXRUZXN0Q29tbXVuaWNhdGlvbi5j
cHAgc2V0VXBJT1NMYXlvdXRUZXN0Q29tbXVuaWNhdGlvbigpCisgICAgICAgICAgICAgICAgc3Rk
aW4gPSBTaW11bGF0b3JQcm9jZXNzLl9hY2NlcHRfY29ubmVjdGlvbl9jcmVhdGVfZmlsZShzZWxm
Ll90YXJnZXRfaG9zdC5saXN0ZW5pbmdfc29ja2V0LCAndycpCisgICAgICAgICAgICAgICAgc3Rk
b3V0ID0gU2ltdWxhdG9yUHJvY2Vzcy5fYWNjZXB0X2Nvbm5lY3Rpb25fY3JlYXRlX2ZpbGUoc2Vs
Zi5fdGFyZ2V0X2hvc3QubGlzdGVuaW5nX3NvY2tldCwgJ3JiJykKKyAgICAgICAgICAgICAgICBz
dGRlcnIgPSBTaW11bGF0b3JQcm9jZXNzLl9hY2NlcHRfY29ubmVjdGlvbl9jcmVhdGVfZmlsZShz
ZWxmLl90YXJnZXRfaG9zdC5saXN0ZW5pbmdfc29ja2V0LCAncmInKQorICAgICAgICAgICAgZXhj
ZXB0OgorICAgICAgICAgICAgICAgICMgV2Ugc2V0IHNlbGYuX3Byb2MgYXMgX3Jlc2V0KCkgYW5k
IF9raWxsKCkgZGVwZW5kIG9uIGl0LgorICAgICAgICAgICAgICAgIHNlbGYuX3Byb2MgPSBTaW11
bGF0b3JQcm9jZXNzLlBvcGVuKHNlbGYuX3BpZCwgc3RkaW4sIHN0ZG91dCwgc3RkZXJyLCBzZWxm
Ll90YXJnZXRfaG9zdCkKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9wcm9jLnBvbGwoKSBpcyBu
b3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVzZXQoKQorICAgICAgICAgICAg
ICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0FwcCB7fSB3aXRoIHBpZCB7fSBjcmFzaGVkIGJlZm9y
ZSBzdGRpbiBjb3VsZCBiZSBhdHRhY2hlZCcuZm9ybWF0KG9zLnBhdGguYmFzZW5hbWUoc2VsZi5f
Y21kWzBdKSwgc2VsZi5fcGlkKSkKKyAgICAgICAgICAgICAgICBzZWxmLl9raWxsKCkKICAgICAg
ICAgICAgICAgICBzZWxmLl9yZXNldCgpCi0gICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9u
KCdBcHAge30gd2l0aCBwaWQge30gY3Jhc2hlZCBiZWZvcmUgc3RkaW4gY291bGQgYmUgYXR0YWNo
ZWQnLmZvcm1hdChvcy5wYXRoLmJhc2VuYW1lKHNlbGYuX2NtZFswXSksIHNlbGYuX3BpZCkpCi0g
ICAgICAgICAgICBzZWxmLl9raWxsKCkKLSAgICAgICAgICAgIHNlbGYuX3Jlc2V0KCkKLSAgICAg
ICAgICAgIHJhaXNlCi0gICAgICAgIHNpZ25hbC5hbGFybSgwKSAgIyBDYW5jZWwgYWxhcm0KKyAg
ICAgICAgICAgICAgICByYWlzZQogCiAgICAgICAgIHNlbGYuX3Byb2MgPSBTaW11bGF0b3JQcm9j
ZXNzLlBvcGVuKHNlbGYuX3BpZCwgc3RkaW4sIHN0ZG91dCwgc3RkZXJyLCBzZWxmLl90YXJnZXRf
aG9zdCkKIApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS94Y29kZS9zaW11bGF0ZWRfZGV2
aWNlLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkveGNvZGUvc2ltdWxh
dGVkX2RldmljZS5weQkocmV2aXNpb24gMjIwNDU1KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS94Y29kZS9zaW11bGF0ZWRfZGV2aWNlLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yMiwxMiArMjIs
MTIgQEAKIAogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCByZQotaW1wb3J0IHNpZ25hbAogaW1wb3J0
IHN1YnByb2Nlc3MKIAorZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdCBpbXBvcnQgSG9zdAogZnJv
bSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgU2NyaXB0RXJyb3IKK2Zy
b20gd2Via2l0cHkuY29tbW9uLnRpbWVvdXRfY29udGV4dCBpbXBvcnQgVGltZW91dAogZnJvbSB3
ZWJraXRweS54Y29kZS5zaW11bGF0b3IgaW1wb3J0IFNpbXVsYXRvcgotZnJvbSB3ZWJraXRweS5j
b21tb24uaG9zdCBpbXBvcnQgSG9zdAogCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1l
X18pCiAKQEAgLTE3MCwyOSArMTcwLDIzIEBAIGNsYXNzIFNpbXVsYXRlZERldmljZShvYmplY3Qp
OgogICAgICAgICBkZWYgX2xvZ19kZWJ1Z19lcnJvcihlcnJvcik6CiAgICAgICAgICAgICBfbG9n
LmRlYnVnKGVycm9yLm1lc3NhZ2Vfd2l0aF9vdXRwdXQoKSkKIAotICAgICAgICBkZWYgX2luc3Rh
bGxfdGltZW91dChzaWdudW0sIGZyYW1lKToKLSAgICAgICAgICAgIGFzc2VydCBzaWdudW0gPT0g
c2lnbmFsLlNJR0FMUk0KLSAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignVGltZWQgb3V0
IHdhaXRpbmcgZm9yIHByb2Nlc3MgdG8gb3BlbiB7fSBvbiB7fScuZm9ybWF0KGJ1bmRsZV9pZCwg
c2VsZi51ZGlkKSkKLQogICAgICAgICBvdXRwdXQgPSBOb25lCi0gICAgICAgIHNpZ25hbC5zaWdu
YWwoc2lnbmFsLlNJR0FMUk0sIF9pbnN0YWxsX3RpbWVvdXQpCi0gICAgICAgIHNpZ25hbC5hbGFy
bSh0aW1lb3V0KSAgIyBJbiBzZWNvbmRzCi0gICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAg
ICBvdXRwdXQgPSBzZWxmLl9ob3N0LmV4ZWN1dGl2ZS5ydW5fY29tbWFuZCgKLSAgICAgICAgICAg
ICAgICBbJ3hjcnVuJywgJ3NpbWN0bCcsICdsYXVuY2gnLCBzZWxmLnVkaWQsIGJ1bmRsZV9pZF0g
KyBhcmdzLAotICAgICAgICAgICAgICAgIGVudj1lbnZpcm9ubWVudF90b191c2UsCi0gICAgICAg
ICAgICAgICAgZXJyb3JfaGFuZGxlcj1fbG9nX2RlYnVnX2Vycm9yLAotICAgICAgICAgICAgKQot
ICAgICAgICAgICAgbWF0Y2ggPSByZS5tYXRjaChyJyg/UDxidW5kbGU+W146XSspOiAoP1A8cGlk
PlxkKylcbicsIG91dHB1dCkKLSAgICAgICAgICAgICMgRklYTUU6IFdlIHNob3VsZG4ndCBuZWVk
IHRvIGNoZWNrIHRoZSBQSUQgPHJkYXI6Ly9wcm9ibGVtLzMxMTU0MDc1Pi4KLSAgICAgICAgICAg
IGlmIG1hdGNoIGFuZCBzZWxmLmV4ZWN1dGl2ZS5jaGVja19ydW5uaW5nX3BpZChpbnQobWF0Y2gu
Z3JvdXAoJ3BpZCcpKSk6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGlmIG1h
dGNoOgotICAgICAgICAgICAgICAgIF9sb2cuZGVidWcoJ3NpbWN0bCBsYXVuY2ggcmVwb3J0ZWQg
cGlkIHt9LCBidXQgdGhpcyBwcm9jZXNzIGlzIG5vdCBydW5uaW5nJy5mb3JtYXQobWF0Y2guZ3Jv
dXAoJ3BpZCcpKSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgX2xvZy5kZWJ1
Zygnc2ltY3RsIGxhdW5jaCBkaWQgbm90IHJlcG9ydCBhIHBpZCcpCiAKLSAgICAgICAgc2lnbmFs
LmFsYXJtKDApICAjIENhbmNlbCBhbGFybQorICAgICAgICB3aXRoIFRpbWVvdXQodGltZW91dCwg
UnVudGltZUVycm9yKCdUaW1lZCBvdXQgd2FpdGluZyBmb3IgcHJvY2VzcyB0byBvcGVuIHt9IG9u
IHt9Jy5mb3JtYXQoYnVuZGxlX2lkLCBzZWxmLnVkaWQpKSk6CisgICAgICAgICAgICB3aGlsZSBU
cnVlOgorICAgICAgICAgICAgICAgIG91dHB1dCA9IHNlbGYuX2hvc3QuZXhlY3V0aXZlLnJ1bl9j
b21tYW5kKAorICAgICAgICAgICAgICAgICAgICBbJ3hjcnVuJywgJ3NpbWN0bCcsICdsYXVuY2gn
LCBzZWxmLnVkaWQsIGJ1bmRsZV9pZF0gKyBhcmdzLAorICAgICAgICAgICAgICAgICAgICBlbnY9
ZW52aXJvbm1lbnRfdG9fdXNlLAorICAgICAgICAgICAgICAgICAgICBlcnJvcl9oYW5kbGVyPV9s
b2dfZGVidWdfZXJyb3IsCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIG1hdGNo
ID0gcmUubWF0Y2gocicoP1A8YnVuZGxlPlteOl0rKTogKD9QPHBpZD5cZCspXG4nLCBvdXRwdXQp
CisgICAgICAgICAgICAgICAgIyBGSVhNRTogV2Ugc2hvdWxkbid0IG5lZWQgdG8gY2hlY2sgdGhl
IFBJRCA8cmRhcjovL3Byb2JsZW0vMzExNTQwNzU+LgorICAgICAgICAgICAgICAgIGlmIG1hdGNo
IGFuZCBzZWxmLmV4ZWN1dGl2ZS5jaGVja19ydW5uaW5nX3BpZChpbnQobWF0Y2guZ3JvdXAoJ3Bp
ZCcpKSk6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgaWYgbWF0
Y2g6CisgICAgICAgICAgICAgICAgICAgIF9sb2cuZGVidWcoJ3NpbWN0bCBsYXVuY2ggcmVwb3J0
ZWQgcGlkIHt9LCBidXQgdGhpcyBwcm9jZXNzIGlzIG5vdCBydW5uaW5nJy5mb3JtYXQobWF0Y2gu
Z3JvdXAoJ3BpZCcpKSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAg
ICBfbG9nLmRlYnVnKCdzaW1jdGwgbGF1bmNoIGRpZCBub3QgcmVwb3J0IGEgcGlkJykKIAogICAg
ICAgICBpZiBtYXRjaC5ncm91cCgnYnVuZGxlJykgIT0gYnVuZGxlX2lkOgogICAgICAgICAgICAg
cmFpc2UgUnVudGltZUVycm9yKCdGYWlsZWQgdG8gZmluZCBwcm9jZXNzIGlkIGZvciB7fToge30n
LmZvcm1hdChidW5kbGVfaWQsIG91dHB1dCkpCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3hjb2RlL3NpbXVsYXRvci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3hjb2RlL3NpbXVsYXRvci5weQkocmV2aXNpb24gMjIwNDU1KQorKysgVG9vbHMvU2NyaXB0cy93
ZWJraXRweS94Y29kZS9zaW11bGF0b3IucHkJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcg
QEAgaW1wb3J0IHJlCiBpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHRpbWUKIAotZnJvbSB3ZWJr
aXRweS5iZW5jaG1hcmtfcnVubmVyLnV0aWxzIGltcG9ydCB0aW1lb3V0Citmcm9tIHdlYmtpdHB5
LmNvbW1vbi50aW1lb3V0X2NvbnRleHQgaW1wb3J0IFRpbWVvdXQKIGZyb20gd2Via2l0cHkuY29t
bW9uLmhvc3QgaW1wb3J0IEhvc3QKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9f
KQpAQCAtMjQyLDcgKzI0Miw3IEBAIGNsYXNzIFNpbXVsYXRvcihvYmplY3QpOgogICAgIEBzdGF0
aWNtZXRob2QKICAgICBkZWYgd2FpdF91bnRpbF9kZXZpY2VfaXNfYm9vdGVkKHVkaWQsIHRpbWVv
dXRfc2Vjb25kcz02MCAqIDE1KToKICAgICAgICAgU2ltdWxhdG9yLndhaXRfdW50aWxfZGV2aWNl
X2lzX2luX3N0YXRlKHVkaWQsIFNpbXVsYXRvci5EZXZpY2VTdGF0ZS5CT09URUQsIHRpbWVvdXRf
c2Vjb25kcykKLSAgICAgICAgd2l0aCB0aW1lb3V0KHNlY29uZHM9dGltZW91dF9zZWNvbmRzKToK
KyAgICAgICAgd2l0aCBUaW1lb3V0KHNlY29uZHM9dGltZW91dF9zZWNvbmRzKToKICAgICAgICAg
ICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAg
ICBzdGF0ZSA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFsneGNydW4nLCAnc2ltY3RsJywgJ3Nw
YXduJywgdWRpZCwgJ2xhdW5jaGN0bCcsICdwcmludCcsICdzeXN0ZW0nXSkuc3RyaXAoKQpAQCAt
MjYwLDcgKzI2MCw3IEBAIGNsYXNzIFNpbXVsYXRvcihvYmplY3QpOgogICAgIEBzdGF0aWNtZXRo
b2QKICAgICBkZWYgd2FpdF91bnRpbF9kZXZpY2VfaXNfaW5fc3RhdGUodWRpZCwgd2FpdF91bnRp
bF9zdGF0ZSwgdGltZW91dF9zZWNvbmRzPTYwICogMTUpOgogICAgICAgICBfbG9nLmRlYnVnKCd3
YWl0aW5nIGZvciBkZXZpY2UgJXMgdG8gZW50ZXIgc3RhdGUgJXMgd2l0aCB0aW1lb3V0ICVzJywg
dWRpZCwgU2ltdWxhdG9yLmRldmljZV9zdGF0ZV9kZXNjcmlwdGlvbih3YWl0X3VudGlsX3N0YXRl
KSwgdGltZW91dF9zZWNvbmRzKQotICAgICAgICB3aXRoIHRpbWVvdXQoc2Vjb25kcz10aW1lb3V0
X3NlY29uZHMpOgorICAgICAgICB3aXRoIFRpbWVvdXQoc2Vjb25kcz10aW1lb3V0X3NlY29uZHMp
OgogICAgICAgICAgICAgZGV2aWNlX3N0YXRlID0gU2ltdWxhdG9yLmRldmljZV9zdGF0ZSh1ZGlk
KQogICAgICAgICAgICAgd2hpbGUgKGRldmljZV9zdGF0ZSAhPSB3YWl0X3VudGlsX3N0YXRlKToK
ICAgICAgICAgICAgICAgICBkZXZpY2Vfc3RhdGUgPSBTaW11bGF0b3IuZGV2aWNlX3N0YXRlKHVk
aWQpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>