<?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>70435</bug_id>
          
          <creation_ts>2011-10-19 13:17:35 -0700</creation_ts>
          <short_desc>NRWT ServerProcess can&apos;t read lines from stderr and stdio separately</short_desc>
          <delta_ts>2011-10-20 04:47:12 -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>New Bugs</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>70492</dependson>
          <blocked>56729</blocked>
    
    <blocked>63683</blocked>
    
    <blocked>63981</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Eric Seidel (no email)">eric</assigned_to>
          <cc>abarth</cc>
    
    <cc>aroben</cc>
    
    <cc>dpranke</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>486939</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-10-19 13:17:35 -0700</bug_when>
    <thetext>NRWT ServerProcess can&apos;t read lines from stderr and stdio separately</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>486943</commentid>
    <comment_count>1</comment_count>
      <attachid>111664</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-10-19 13:24:40 -0700</bug_when>
    <thetext>Created attachment 111664
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>486977</commentid>
    <comment_count>2</comment_count>
      <attachid>111664</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-10-19 13:52:40 -0700</bug_when>
    <thetext>Comment on attachment 111664
Patch

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

&gt; Tools/Scripts/webkitpy/layout_tests/port/server_process.py:216
&gt; +    def _pop_error_bytes(self, bytes):

bytes -&gt; number_of_bytes ?

&gt; Tools/Scripts/webkitpy/layout_tests/port/server_process.py:219
&gt; +        # FIXME: Python must have a simpler way to do this partition?
&gt; +        output = self.error[0:bytes]
&gt; +        self.error = self.error[bytes:]

It seems like there should be a more pythonic way of doing this.

&gt; Tools/Scripts/webkitpy/layout_tests/port/server_process.py:248
&gt; +    def _read(self, timeout, termination_checker):
&gt;          deadline = time.time() + timeout

We should be consistent about using dealines.  Switching back and forth is expensive and error prone (e.g., getTimeOfDay changes during execution and your deadline drifts).

&gt; Tools/Scripts/webkitpy/layout_tests/port/server_process.py:253
&gt; +            bytes_to_return = termination_checker()

retrive_bytes ?  Dunno.  termination_checker sounds like it should just return a bool.

&gt; Tools/Scripts/webkitpy/layout_tests/port/webkit.py:505
&gt; +            value = line.split()[1]

This seems somewhat fragile.

&gt; Tools/Scripts/webkitpy/layout_tests/port/webkit.py:519
&gt; +        block.content += line

This is slow, but a problem for another day.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>486990</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-10-19 14:06:33 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 111664 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=111664&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/server_process.py:216
&gt; &gt; +    def _pop_error_bytes(self, bytes):
&gt; 
&gt; bytes -&gt; number_of_bytes ?

Fixed.

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/server_process.py:219
&gt; &gt; +        # FIXME: Python must have a simpler way to do this partition?
&gt; &gt; +        output = self.error[0:bytes]
&gt; &gt; +        self.error = self.error[bytes:]
&gt; 
&gt; It seems like there should be a more pythonic way of doing this.

I&apos;m not sure there is, because there is some question as of it you split before or after the index. :)  But I added a helper function.

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/server_process.py:248
&gt; &gt; +    def _read(self, timeout, termination_checker):
&gt; &gt;          deadline = time.time() + timeout
&gt; 
&gt; We should be consistent about using dealines.  Switching back and forth is expensive and error prone (e.g., getTimeOfDay changes during execution and your deadline drifts).

I completely agree!  Out of scope for this patch though.

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/server_process.py:253
&gt; &gt; +            bytes_to_return = termination_checker()
&gt; 
&gt; retrive_bytes ?  Dunno.  termination_checker sounds like it should just return a bool.

Renamed it fetch_bytes_from_buffers_callback

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/webkit.py:505
&gt; &gt; +            value = line.split()[1]
&gt; 
&gt; This seems somewhat fragile.

Agreed.  It&apos;s just the old code, moved.  Probably best for another day.

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/webkit.py:519
&gt; &gt; +        block.content += line
&gt; 
&gt; This is slow, but a problem for another day.

Yup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>486999</commentid>
    <comment_count>4</comment_count>
      <attachid>111672</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-10-19 14:18:11 -0700</bug_when>
    <thetext>Created attachment 111672
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487016</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-10-19 14:37:44 -0700</bug_when>
    <thetext>Committed r97879: &lt;http://trac.webkit.org/changeset/97879&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487426</commentid>
    <comment_count>6</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-10-20 02:13:19 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Committed r97879: &lt;http://trac.webkit.org/changeset/97879&gt;

Some of the last NRWT commits broke pixel testing:

Testing (4%): 88 ran as expecteImageDiff timed out   
ImageDiff timed out   
worker/0 raised AttributeError(&apos;&apos;NoneType&apos; object has no attribute &apos;startswith&apos;&apos;):
  layout_tests/controllers/worker.py:91 (in run)
    self._worker_connection.run_message_loop()
  layout_tests/controllers/message_broker.py:191 (in run_message_loop)
    self._broker.run_message_loop(self._run_topic, self._client, delay_secs)
  layout_tests/controllers/message_broker.py:127 (in run_message_loop)
    self._run_loop(topic_name, client, block=True, delay_secs=delay_secs)
  layout_tests/controllers/message_broker.py:141 (in _run_loop)
    self._dispatch_message(msg, client)
  layout_tests/controllers/message_broker.py:150 (in _dispatch_message)
    message_handler(message.src, *optargs)
  layout_tests/controllers/worker.py:111 (in handle_test_list)
    self._run_test(test_input)
  layout_tests/controllers/worker.py:126 (in _run_test)
    result = self.run_test_with_timeout(test_input, test_timeout_sec)
  layout_tests/controllers/worker.py:165 (in run_test_with_timeout)
    return self._run_test_in_this_thread(test_input)
  layout_tests/controllers/worker.py:250 (in _run_test_in_this_thread)
    return self.run_single_test(self._driver, test_input)
  layout_tests/controllers/worker.py:254 (in run_single_test)
    test_input, driver, self._name)
  layout_tests/controllers/single_test_runner.py:45 (in run_single_test)
    return runner.run()
  layout_tests/controllers/single_test_runner.py:124 (in run)
    return self._run_compare_test()
  layout_tests/controllers/single_test_runner.py:129 (in _run_compare_test)
    test_result = self._compare_output(driver_output, expected_driver_output)
  layout_tests/controllers/single_test_runner.py:236 (in _compare_output)
    failures.extend(self._compare_image(driver_output, expected_driver_output))
  layout_tests/controllers/single_test_runner.py:279 (in _compare_image)
    diff_result = self._port.diff_image(driver_output.image, expected_driver_output.image)
  layout_tests/port/webkit.py:161 (in diff_image)
    return self._read_image_diff(process)
  layout_tests/port/webkit.py:204 (in _read_image_diff)
    if output.startswith(&apos;diff&apos;):

Can you confirm?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487428</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-10-20 02:23:56 -0700</bug_when>
    <thetext>Looking.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487491</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-10-20 04:47:12 -0700</bug_when>
    <thetext>Regression fix posted in bug 70492.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111664</attachid>
            <date>2011-10-19 13:24:40 -0700</date>
            <delta_ts>2011-10-19 14:18:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-70435-20111019132441.patch</filename>
            <type>text/plain</type>
            <size>19787</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTc3OTAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2YTU2NDM2MmM3ZWViMjI0NzI0OTM4NzJjNjFiYWU4NTMz
YzNmM2RlLi4zOTYyZWEyYzEwYTRmNjZiNTlhZDU2ZjA4NTIxMTNmYzVhODQxNDk4IDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEg
QEAKKzIwMTEtMTAtMTkgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAg
IE5SV1QgU2VydmVyUHJvY2VzcyBjYW4ndCByZWFkIGxpbmVzIGZyb20gc3RkZXJyIGFuZCBzdGRp
byBzZXBhcmF0ZWx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03MDQzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoaXMgaXMgdGhlIHVuZGVybHlpbmcgYnVnIGJlaGluZCBvdXIgbGFjayBvZiBXSzIgc3Vw
cG9ydCwgYW5kIHRpbWVvdXQgZGV0ZWN0aW9uIG9uIFdpbmRvd3MuCisgICAgICAgIERSVCBleHBl
Y3RzIFJXVCB0byByZWFkIG9uZSBsaW5lIGF0IGEgdGltZSBmcm9tIHN0ZGVyciBhbmQgc3Rkb3V0
IGluZGVwZW5kZW50bHkuCisgICAgICAgIFRoaXMgYWxsb3dzIERSVCB0byBjb21tdW5pY2F0ZSBl
cnJvcnMgb3ZlciBzdGRlcnIgYW5kIGhhdmUgdGhlbSByZXNwb25kZWQgdG8gaW1tZWRpYXRlbHkK
KyAgICAgICAgcmVnYXJkbGVzcyBvZiB3aGF0IHN0YXRlIHRoZSBzdGRpbyBzdHJlYW0gbWF5IGJl
IGluLiAgUHJldmlvdXNseSBOUldUJ3MgU2VydmVyUHJvY2VzcworICAgICAgICBjbGFzcyBvbmx5
IGV4cG9zZWQgYSByZWFkX2xpbmUgZnVuY3Rpb24gd2hpY2ggd291bGQgcmVhZCBhIGxpbmUgZnJv
bSBzdGRvdXQKKyAgICAgICAgYW5kIGJhdGNoIGFsbCBvdXRwdXQgZnJvbSBzdGRlcnIgaW50byBh
biBlcnJvciBidWZmZXIuICBDYWxsZXJzIHdvdWxkIG9ubHkgYmUgYWJsZQorICAgICAgICB0byBy
ZXNwb25kIHRvIGNvbW1hbmRzIG92ZXIgc3RkZXJyIGlmIHRoZXkgaGFwcGVuZWQgdG8gY29ycmVz
cG9uZCB3aXRoIGEgc3Rkb3V0IGxpbmUgYm91bmRhcnkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3NlcnZlcl9wcm9jZXNzLnB5OgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5OgorCiAyMDExLTEwLTE4
ICBEaW1pdHJpIEdsYXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgU3Bs
aXQgVGVzdEV4cGVjdGF0aW9uc0VkaXRvciBpbnRvIGl0cyBvd24gZmlsZS4KZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvc2VydmVyX3Byb2Nlc3Mu
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3NlcnZlcl9wcm9j
ZXNzLnB5CmluZGV4IDc3Y2NhNmVmZGY5NmQ5MWI2YWRiYjQ2OGFhMWRlYjA4YTE0MTE3NDEuLmMy
OWQ2MTM5ZjdhNDY0YTg4N2JjZWEyMjgwNDU5NWQxYzk2NWFmMTkgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvc2VydmVyX3Byb2Nlc3MucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9zZXJ2ZXJfcHJvY2Vz
cy5weQpAQCAtNjgsMTAgKzY4LDEwIEBAIGNsYXNzIFNlcnZlclByb2Nlc3M6CiAKICAgICBkZWYg
X3Jlc2V0KHNlbGYpOgogICAgICAgICBzZWxmLl9wcm9jID0gTm9uZQotICAgICAgICBzZWxmLl9v
dXRwdXQgPSAnJworICAgICAgICBzZWxmLl9vdXRwdXQgPSBzdHIoKSAgIyBieXRlc2FycmF5KCkg
b25jZSB3ZSByZXF1aXJlIFB5dGhvbiAyLjYKICAgICAgICAgc2VsZi5jcmFzaGVkID0gRmFsc2UK
ICAgICAgICAgc2VsZi50aW1lZF9vdXQgPSBGYWxzZQotICAgICAgICBzZWxmLmVycm9yID0gJycK
KyAgICAgICAgc2VsZi5lcnJvciA9IHN0cigpICAjIGJ5dGVzYXJyYXkoKSBvbmNlIHdlIHJlcXVp
cmUgUHl0aG9uIDIuNgogCiAgICAgZGVmIF9zdGFydChzZWxmKToKICAgICAgICAgaWYgc2VsZi5f
cHJvYzoKQEAgLTEyNyw0MiArMTI3LDUwIEBAIGNsYXNzIFNlcnZlclByb2Nlc3M6CiAgICAgICAg
ICAgICAjIHN0b3AoKSBjYWxscyBfcmVzZXQoKSwgc28gd2UgaGF2ZSB0byBzZXQgY3Jhc2hlZCB0
byBUcnVlIGFmdGVyIGNhbGxpbmcgc3RvcCgpLgogICAgICAgICAgICAgc2VsZi5jcmFzaGVkID0g
VHJ1ZQogCi0gICAgZGVmIHJlYWRfbGluZShzZWxmLCB0aW1lb3V0KToKLSAgICAgICAgIiIiUmVh
ZCBhIHNpbmdsZSBsaW5lIGZyb20gdGhlIHN1YnByb2Nlc3MsIHdhaXRpbmcgdW50aWwgdGhlIGRl
YWRsaW5lLgotICAgICAgICBJZiB0aGUgZGVhZGxpbmUgcGFzc2VzLCB0aGUgY2FsbCB0aW1lcyBv
dXQuIE5vdGUgdGhhdCBldmVuIGlmIHRoZQotICAgICAgICBzdWJwcm9jZXNzIGhhcyBjcmFzaGVk
IG9yIHRoZSBkZWFkbGluZSBoYXMgcGFzc2VkLCBpZiB0aGVyZSBpcyBvdXRwdXQKLSAgICAgICAg
cGVuZGluZywgaXQgd2lsbCBiZSByZXR1cm5lZC4KLQotICAgICAgICBBcmdzOgotICAgICAgICAg
ICAgdGltZW91dDogZmxvYXRpbmctcG9pbnQgbnVtYmVyIG9mIHNlY29uZHMgdGhlIGNhbGwgaXMg
YWxsb3dlZAotICAgICAgICAgICAgICAgIHRvIGJsb2NrIGZvci4gQSB6ZXJvIG9yIG5lZ2F0aXZl
IG51bWJlciB3aWxsIGF0dGVtcHQgdG8gcmVhZAotICAgICAgICAgICAgICAgIGFueSBleGlzdGlu
ZyBkYXRhLCBidXQgd2lsbCBub3QgYmxvY2suIFRoZXJlIGlzIG5vIHdheSB0bwotICAgICAgICAg
ICAgICAgIGJsb2NrIGluZGVmaW5pdGVseS4KLSAgICAgICAgUmV0dXJuczoKLSAgICAgICAgICAg
IG91dHB1dDogZGF0YSByZXR1cm5lZCwgaWYgYW55LiBJZiBubyBkYXRhIGlzIGF2YWlsYWJsZSBh
bmQgdGhlCi0gICAgICAgICAgICAgICAgY2FsbCB0aW1lcyBvdXQgb3IgY3Jhc2hlcywgYW4gZW1w
dHkgc3RyaW5nIGlzIHJldHVybmVkLiBOb3RlCi0gICAgICAgICAgICAgICAgdGhhdCB0aGUgcmV0
dXJuZWQgc3RyaW5nIGluY2x1ZGVzIHRoZSBuZXdsaW5lICgnXG4nKS4iIiIKLSAgICAgICAgcmV0
dXJuIHNlbGYuX3JlYWQodGltZW91dCwgc2l6ZT0wKQotCi0gICAgZGVmIHJlYWQoc2VsZiwgdGlt
ZW91dCwgc2l6ZSk6Ci0gICAgICAgICIiIkF0dGVtcHRzIHRvIHJlYWQgc2l6ZSBjaGFyYWN0ZXJz
IGZyb20gdGhlIHN1YnByb2Nlc3MsIHdhaXRpbmcgdW50aWwKLSAgICAgICAgdGhlIGRlYWRsaW5l
IHBhc3Nlcy4gSWYgdGhlIGRlYWRsaW5lIHBhc3NlcywgYW55IGF2YWlsYWJsZSBkYXRhIHdpbGwg
YmUKLSAgICAgICAgcmV0dXJuZWQuIE5vdGUgdGhhdCBldmVuIGlmIHRoZSBkZWFkbGluZSBoYXMg
cGFzc2VkIG9yIGlmIHRoZQotICAgICAgICBzdWJwcm9jZXNzIGhhcyBjcmFzaGVkLCBhbnkgYXZh
aWxhYmxlIGRhdGEgd2lsbCBzdGlsbCBiZSByZXR1cm5lZC4KLQotICAgICAgICBBcmdzOgotICAg
ICAgICAgICAgdGltZW91dDogZmxvYXRpbmctcG9pbnQgbnVtYmVyIG9mIHNlY29uZHMgdGhlIGNh
bGwgaXMgYWxsb3dlZAotICAgICAgICAgICAgICAgIHRvIGJsb2NrIGZvci4gQSB6ZXJvIG9yIG5l
Z2F0aXZlIG51bWJlciB3aWxsIGF0dGVtcHQgdG8gcmVhZAotICAgICAgICAgICAgICAgIGFueSBl
eGlzdGluZyBkYXRhLCBidXQgd2lsbCBub3QgYmxvY2suIFRoZXJlIGlzIG5vIHdheSB0bwotICAg
ICAgICAgICAgICAgIGJsb2NrIGluZGVmaW5pdGVseS4KLSAgICAgICAgICAgIHNpemU6IGFtb3Vu
dCBvZiBkYXRhIHRvIHJlYWQuIE11c3QgYmUgYSBwb3N0aXZlIGludGVnZXIuCi0gICAgICAgIFJl
dHVybnM6Ci0gICAgICAgICAgICBvdXRwdXQ6IGRhdGEgcmV0dXJuZWQsIGlmIGFueS4gSWYgbm8g
ZGF0YSBpcyBhdmFpbGFibGUsIGFuIGVtcHR5Ci0gICAgICAgICAgICAgICAgc3RyaW5nIGlzIHJl
dHVybmVkLgotICAgICAgICAiIiIKKyAgICBkZWYgX3BvcF9zdGRvdXRfbGluZV9pZl9yZWFkeShz
ZWxmKToKKyAgICAgICAgaW5kZXhfYWZ0ZXJfbmV3bGluZSA9IHNlbGYuX291dHB1dC5maW5kKCdc
bicpICsgMQorICAgICAgICBpZiBpbmRleF9hZnRlcl9uZXdsaW5lID4gMDoKKyAgICAgICAgICAg
IHJldHVybiBzZWxmLl9wb3Bfb3V0cHV0X2J5dGVzKGluZGV4X2FmdGVyX25ld2xpbmUpCisgICAg
ICAgIHJldHVybiBOb25lCisKKyAgICBkZWYgX3BvcF9zdGRlcnJfbGluZV9pZl9yZWFkeShzZWxm
KToKKyAgICAgICAgaW5kZXhfYWZ0ZXJfbmV3bGluZSA9IHNlbGYuZXJyb3IuZmluZCgnXG4nKSAr
IDEKKyAgICAgICAgaWYgaW5kZXhfYWZ0ZXJfbmV3bGluZSA+IDA6CisgICAgICAgICAgICByZXR1
cm4gc2VsZi5fcG9wX2Vycm9yX2J5dGVzKGluZGV4X2FmdGVyX25ld2xpbmUpCisgICAgICAgIHJl
dHVybiBOb25lCisKKyAgICBkZWYgcmVhZF9zdGRvdXRfbGluZShzZWxmLCB0aW1lb3V0X3NlY29u
ZHMpOgorICAgICAgICByZXR1cm4gc2VsZi5fcmVhZCh0aW1lb3V0X3NlY29uZHMsIHNlbGYuX3Bv
cF9zdGRvdXRfbGluZV9pZl9yZWFkeSkKKworICAgIGRlZiByZWFkX3N0ZGVycl9saW5lKHNlbGYs
IHRpbWVvdXRfc2Vjb25kcyk6CisgICAgICAgIHJldHVybiBzZWxmLl9yZWFkKHRpbWVvdXRfc2Vj
b25kcywgc2VsZi5fcG9wX3N0ZGVycl9saW5lX2lmX3JlYWR5KQorCisgICAgZGVmIHJlYWRfZWl0
aGVyX3N0ZG91dF9vcl9zdGRlcnJfbGluZShzZWxmLCB0aW1lb3V0X3NlY29uZHMpOgorICAgICAg
ICBkZWYgdGVybWluYXRpb25fY2hlY2tlcigpOgorICAgICAgICAgICAgc3Rkb3V0X2xpbmUgPSBz
ZWxmLl9wb3Bfc3Rkb3V0X2xpbmVfaWZfcmVhZHkoKQorICAgICAgICAgICAgaWYgc3Rkb3V0X2xp
bmU6CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZG91dF9saW5lLCBOb25lCisgICAgICAgICAg
ICBzdGRlcnJfbGluZSA9IHNlbGYuX3BvcF9zdGRlcnJfbGluZV9pZl9yZWFkeSgpCisgICAgICAg
ICAgICBpZiBzdGRlcnJfbGluZToKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZSwgc3RkZXJy
X2xpbmUKKyAgICAgICAgICAgIHJldHVybiBOb25lICAjIEluc3RydWN0cyB0aGUgY2FsbGVyIHRv
IGtlZXAgd2FpdGluZy4KKworICAgICAgICByZXR1cm5fdmFsdWUgPSBzZWxmLl9yZWFkKHRpbWVv
dXRfc2Vjb25kcywgdGVybWluYXRpb25fY2hlY2tlcikKKyAgICAgICAgIyBGSVhNRTogVGhpcyBp
cyBhIGJpdCBvZiBhIGhhY2sgYXJvdW5kIHRoZSBmYWN0IHRoYXQgX3JlYWQgbm9ybWFsbHkgb25s
eSByZXR1cm5zIG9uZSB2YWx1ZSwgYnV0IHRoaXMgY2FsbGVyIHdhbnRzIGl0IHRvIHJldHVybiB0
d28uCisgICAgICAgIGlmIHJldHVybl92YWx1ZSBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJu
IE5vbmUsIE5vbmUKKyAgICAgICAgcmV0dXJuIHJldHVybl92YWx1ZQorCisgICAgZGVmIHJlYWRf
c3Rkb3V0KHNlbGYsIHRpbWVvdXRfc2Vjb25kcywgc2l6ZSk6CiAgICAgICAgIGlmIHNpemUgPD0g
MDoKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1NlcnZlclByb2Nlc3MucmVhZCgpIGNh
bGxlZCB3aXRoIGEgbm9uLXBvc2l0aXZlIHNpemU6ICVkICcgJSBzaXplKQotICAgICAgICByZXR1
cm4gc2VsZi5fcmVhZCh0aW1lb3V0LCBzaXplKQorCisgICAgICAgIGRlZiB0ZXJtaW5hdGlvbl9j
aGVja2VyKCk6CisgICAgICAgICAgICBpZiBsZW4oc2VsZi5fb3V0cHV0KSA+PSBzaXplOgorICAg
ICAgICAgICAgICAgIHJldHVybiBzZWxmLl9wb3Bfb3V0cHV0X2J5dGVzKHNpemUpCisgICAgICAg
ICAgICByZXR1cm4gTm9uZQorCisgICAgICAgIHJldHVybiBzZWxmLl9yZWFkKHRpbWVvdXRfc2Vj
b25kcywgdGVybWluYXRpb25fY2hlY2tlcikKIAogICAgIGRlZiBfY2hlY2tfZm9yX2NyYXNoKHNl
bGYpOgogICAgICAgICBpZiBzZWxmLl9wcm9jLnBvbGwoKSAhPSBOb25lOgpAQCAtMTkxLDQ4ICsx
OTksNjQgQEAgY2xhc3MgU2VydmVyUHJvY2VzczoKICAgICAgICAgZXhjZXB0IFNjcmlwdEVycm9y
LCBlOgogICAgICAgICAgICAgc2VsZi5fbG9nKCdVbmFibGUgdG8gc2FtcGxlIHByb2Nlc3MuJykK
IAotICAgIGRlZiBfcmVhZChzZWxmLCB0aW1lb3V0LCBzaXplKToKLSAgICAgICAgIiIiSW50ZXJu
YWwgcm91dGluZSB0aGF0IGFjdHVhbGx5IGRvZXMgdGhlIHJlYWQuIiIiCi0gICAgICAgIGluZGV4
ID0gLTEKKyAgICBkZWYgX2hhbmRsZV90aW1lb3V0KHNlbGYpOgorICAgICAgICBzZWxmLl9leGVj
dXRpdmUud2FpdF9uZXdlc3Qoc2VsZi5fcG9ydC5pc19jcmFzaF9yZXBvcnRlcikKKyAgICAgICAg
aWYgbm90IHNlbGYuY3Jhc2hlZDoKKyAgICAgICAgICAgIHNlbGYuX2NoZWNrX2Zvcl9jcmFzaCgp
CisgICAgICAgIHNlbGYudGltZWRfb3V0ID0gVHJ1ZQorICAgICAgICBpZiBub3Qgc2VsZi5jcmFz
aGVkOgorICAgICAgICAgICAgc2VsZi5fc2FtcGxlKCkKKworICAgIGRlZiBfcG9wX291dHB1dF9i
eXRlcyhzZWxmLCBieXRlcyk6CisgICAgICAgICMgRklYTUU6IFB5dGhvbiBtdXN0IGhhdmUgYSBz
aW1wbGVyIHdheSB0byBkbyB0aGlzIHBhcnRpdGlvbj8KKyAgICAgICAgb3V0cHV0ID0gc2VsZi5f
b3V0cHV0WzA6Ynl0ZXNdCisgICAgICAgIHNlbGYuX291dHB1dCA9IHNlbGYuX291dHB1dFtieXRl
czpdCisgICAgICAgIHJldHVybiBvdXRwdXQKKworICAgIGRlZiBfcG9wX2Vycm9yX2J5dGVzKHNl
bGYsIGJ5dGVzKToKKyAgICAgICAgIyBGSVhNRTogUHl0aG9uIG11c3QgaGF2ZSBhIHNpbXBsZXIg
d2F5IHRvIGRvIHRoaXMgcGFydGl0aW9uPworICAgICAgICBvdXRwdXQgPSBzZWxmLmVycm9yWzA6
Ynl0ZXNdCisgICAgICAgIHNlbGYuZXJyb3IgPSBzZWxmLmVycm9yW2J5dGVzOl0KKyAgICAgICAg
cmV0dXJuIG91dHB1dAorCisgICAgZGVmIF93YWl0X2Zvcl9kYXRhX2FuZF91cGRhdGVfYnVmZmVy
cyhzZWxmLCBtc190b193YWl0KToKICAgICAgICAgb3V0X2ZkID0gc2VsZi5fcHJvYy5zdGRvdXQu
ZmlsZW5vKCkKICAgICAgICAgZXJyX2ZkID0gc2VsZi5fcHJvYy5zdGRlcnIuZmlsZW5vKCkKICAg
ICAgICAgc2VsZWN0X2ZkcyA9IChvdXRfZmQsIGVycl9mZCkKKyAgICAgICAgcmVhZF9mZHMsIF8s
IF8gPSBzZWxlY3Quc2VsZWN0KHNlbGVjdF9mZHMsIFtdLCBzZWxlY3RfZmRzLCBtc190b193YWl0
KQorICAgICAgICB0cnk6CisgICAgICAgICAgICBpZiBvdXRfZmQgaW4gcmVhZF9mZHM6CisgICAg
ICAgICAgICAgICAgc2VsZi5fb3V0cHV0ICs9IHNlbGYuX3Byb2Muc3Rkb3V0LnJlYWQoKQorICAg
ICAgICAgICAgaWYgZXJyX2ZkIGluIHJlYWRfZmRzOgorICAgICAgICAgICAgICAgIHNlbGYuZXJy
b3IgKz0gc2VsZi5fcHJvYy5zdGRlcnIucmVhZCgpCisgICAgICAgIGV4Y2VwdCBJT0Vycm9yLCBl
OgorICAgICAgICAgICAgIyBGSVhNRTogV2h5IGRvIHdlIGlnbm9yZSBhbGwgSU9FcnJvcnMgaGVy
ZT8KKyAgICAgICAgICAgIHBhc3MKKworICAgIGRlZiBfY2hlY2tfZm9yX2Fib3J0KHNlbGYsIGRl
YWRsaW5lKToKKyAgICAgICAgc2VsZi5fY2hlY2tfZm9yX2NyYXNoKCkKKworICAgICAgICBpZiB0
aW1lLnRpbWUoKSA+IGRlYWRsaW5lOgorICAgICAgICAgICAgc2VsZi5faGFuZGxlX3RpbWVvdXQo
KQorCisgICAgICAgIHJldHVybiBzZWxmLmNyYXNoZWQgb3Igc2VsZi50aW1lZF9vdXQKKworICAg
ICMgVGhpcyByZWFkIGZ1bmN0aW9uIGlzIGEgYml0IG9kZGx5LWRlc2lnbmVkLCBhcyBpdCBwb2xs
cyBib3RoIHN0ZG91dCBhbmQgc3RkZXJyLCB5ZXQKKyAgICAjIG9ubHkgcmVhZHMvcmV0dXJucyBm
cm9tIG9uZSBvZiB0aGVtIChidWZmZXJpbmcgYm90aCBpbiBsb2NhbCBzZWxmLl9vdXRwdXQvc2Vs
Zi5lcnJvcikuCisgICAgIyBJdCBtaWdodCBiZSBjbGVhbmVyIHRvIHBhc3MgaW4gdGhlIGZpbGUg
ZGVzY3JpcHRvciB0byBwb2xsIGluc3RlYWQuCisgICAgZGVmIF9yZWFkKHNlbGYsIHRpbWVvdXQs
IHRlcm1pbmF0aW9uX2NoZWNrZXIpOgogICAgICAgICBkZWFkbGluZSA9IHRpbWUudGltZSgpICsg
dGltZW91dAotICAgICAgICB3aGlsZSBub3Qgc2VsZi50aW1lZF9vdXQgYW5kIG5vdCBzZWxmLmNy
YXNoZWQ6Ci0gICAgICAgICAgICBzZWxmLl9jaGVja19mb3JfY3Jhc2goKQorICAgICAgICB3aGls
ZSBUcnVlOgorICAgICAgICAgICAgaWYgc2VsZi5fY2hlY2tfZm9yX2Fib3J0KGRlYWRsaW5lKToK
KyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAgICAgICBieXRlc190b19yZXR1
cm4gPSB0ZXJtaW5hdGlvbl9jaGVja2VyKCkKKyAgICAgICAgICAgIGlmIGJ5dGVzX3RvX3JldHVy
biBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICByZXR1cm4gYnl0ZXNfdG9fcmV0dXJuCiAK
LSAgICAgICAgICAgIG5vdyA9IHRpbWUudGltZSgpCi0gICAgICAgICAgICBpZiBub3cgPiBkZWFk
bGluZToKLSAgICAgICAgICAgICAgICBzZWxmLl9leGVjdXRpdmUud2FpdF9uZXdlc3Qoc2VsZi5f
cG9ydC5pc19jcmFzaF9yZXBvcnRlcikKLSAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5jcmFz
aGVkOgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9jaGVja19mb3JfY3Jhc2goKQotICAgICAg
ICAgICAgICAgIHNlbGYudGltZWRfb3V0ID0gVHJ1ZQotICAgICAgICAgICAgICAgIGlmIG5vdCBz
ZWxmLmNyYXNoZWQ6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3NhbXBsZSgpCi0KLSAgICAg
ICAgICAgICMgQ2hlY2sgdG8gc2VlIGlmIHdlIGhhdmUgYW55IG91dHB1dCB3ZSBjYW4gcmV0dXJu
LgotICAgICAgICAgICAgaWYgc2l6ZSBhbmQgbGVuKHNlbGYuX291dHB1dCkgPj0gc2l6ZToKLSAg
ICAgICAgICAgICAgICBpbmRleCA9IHNpemUKLSAgICAgICAgICAgIGVsaWYgc2l6ZSA9PSAwOgot
ICAgICAgICAgICAgICAgIGluZGV4ID0gc2VsZi5fb3V0cHV0LmZpbmQoJ1xuJykgKyAxCi0KLSAg
ICAgICAgICAgIGlmIGluZGV4ID4gMCBvciBzZWxmLmNyYXNoZWQgb3Igc2VsZi50aW1lZF9vdXQ6
Ci0gICAgICAgICAgICAgICAgb3V0cHV0ID0gc2VsZi5fb3V0cHV0WzA6aW5kZXhdCi0gICAgICAg
ICAgICAgICAgc2VsZi5fb3V0cHV0ID0gc2VsZi5fb3V0cHV0W2luZGV4Ol0KLSAgICAgICAgICAg
ICAgICByZXR1cm4gb3V0cHV0Ci0KLSAgICAgICAgICAgICMgTm9wZSAtIHdhaXQgZm9yIG1vcmUg
ZGF0YS4KLSAgICAgICAgICAgIChyZWFkX2Zkcywgd3JpdGVfZmRzLCBlcnJfZmRzKSA9IHNlbGVj
dC5zZWxlY3Qoc2VsZWN0X2ZkcywgW10sIHNlbGVjdF9mZHMsIGRlYWRsaW5lIC0gbm93KQotICAg
ICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGlmIG91dF9mZCBpbiByZWFkX2ZkczoKLSAg
ICAgICAgICAgICAgICAgICAgc2VsZi5fb3V0cHV0ICs9IHNlbGYuX3Byb2Muc3Rkb3V0LnJlYWQo
KQotICAgICAgICAgICAgICAgIGlmIGVycl9mZCBpbiByZWFkX2ZkczoKLSAgICAgICAgICAgICAg
ICAgICAgc2VsZi5lcnJvciArPSBzZWxmLl9wcm9jLnN0ZGVyci5yZWFkKCkKLSAgICAgICAgICAg
IGV4Y2VwdCBJT0Vycm9yLCBlOgotICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIHNl
bGYuX3dhaXRfZm9yX2RhdGFfYW5kX3VwZGF0ZV9idWZmZXJzKGRlYWRsaW5lIC0gdGltZS50aW1l
KCkpCiAKICAgICBkZWYgc3RvcChzZWxmKToKLSAgICAgICAgIiIiU3RvcCAoc2h1dCBkb3duKSB0
aGUgc3VicHJvY2VzcyksIGlmIGl0IGlzIHJ1bm5pbmcuIiIiCiAgICAgICAgIGlmIG5vdCBzZWxm
Ll9wcm9jOgogICAgICAgICAgICAgcmV0dXJuCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHkKaW5kZXggMzQ5ODA3ZmZhZDVjN2Y3Nzky
ZmY4NGZmNzEzNTU0ZGUxYWI2ZWE2ZC4uZDM0ZjFhMzE0NzEyZTliODk0Zjc2YzFjMDUwNTNmZDRl
MGI4ZThkZSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC93ZWJraXQucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC93ZWJraXQucHkKQEAgLTE3OSw3ICsxNzksNyBAQCBjbGFzcyBXZWJLaXRQb3J0KFBvcnQp
OgogICAgIGRlZiBfcmVhZF9pbWFnZV9kaWZmKHNlbGYsIHNwKToKICAgICAgICAgdGltZW91dCA9
IDIuMAogICAgICAgICBkZWFkbGluZSA9IHRpbWUudGltZSgpICsgdGltZW91dAotICAgICAgICBv
dXRwdXQgPSBzcC5yZWFkX2xpbmUodGltZW91dCkKKyAgICAgICAgb3V0cHV0ID0gc3AucmVhZF9z
dGRvdXRfbGluZSh0aW1lb3V0KQogICAgICAgICBvdXRwdXRfaW1hZ2UgPSAiIgogICAgICAgICBk
aWZmX3BlcmNlbnQgPSAwCiAgICAgICAgIHdoaWxlIG5vdCBzcC50aW1lZF9vdXQgYW5kIG5vdCBz
cC5jcmFzaGVkIGFuZCBvdXRwdXQ6CkBAIC0xODcsMTQgKzE4NywxNCBAQCBjbGFzcyBXZWJLaXRQ
b3J0KFBvcnQpOgogICAgICAgICAgICAgICAgIG0gPSByZS5tYXRjaCgnQ29udGVudC1MZW5ndGg6
IChcZCspJywgb3V0cHV0KQogICAgICAgICAgICAgICAgIGNvbnRlbnRfbGVuZ3RoID0gaW50KG0u
Z3JvdXAoMSkpCiAgICAgICAgICAgICAgICAgdGltZW91dCA9IGRlYWRsaW5lIC0gdGltZS50aW1l
KCkKLSAgICAgICAgICAgICAgICBvdXRwdXRfaW1hZ2UgPSBzcC5yZWFkKHRpbWVvdXQsIGNvbnRl
bnRfbGVuZ3RoKQotICAgICAgICAgICAgICAgIG91dHB1dCA9IHNwLnJlYWRfbGluZSh0aW1lb3V0
KQorICAgICAgICAgICAgICAgIG91dHB1dF9pbWFnZSA9IHNwLnJlYWRfc3Rkb3V0KHRpbWVvdXQs
IGNvbnRlbnRfbGVuZ3RoKQorICAgICAgICAgICAgICAgIG91dHB1dCA9IHNwLnJlYWRfc3Rkb3V0
X2xpbmUodGltZW91dCkKICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgZWxpZiBv
dXRwdXQuc3RhcnRzd2l0aCgnZGlmZicpOgogICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAg
ICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHRpbWVvdXQgPSBkZWFkbGluZSAtIHRpbWUudGlt
ZSgpCi0gICAgICAgICAgICAgICAgb3V0cHV0ID0gc3AucmVhZF9saW5lKGRlYWRsaW5lKQorICAg
ICAgICAgICAgICAgIG91dHB1dCA9IHNwLnJlYWRfc3Rkb3V0X2xpbmUoZGVhZGxpbmUpCiAKICAg
ICAgICAgaWYgc3AudGltZWRfb3V0OgogICAgICAgICAgICAgX2xvZy5lcnJvcigiSW1hZ2VEaWZm
IHRpbWVkIG91dCIpCkBAIC00NzAsMjYgKzQ3MCwyMyBAQCBjbGFzcyBXZWJLaXREcml2ZXIoRHJp
dmVyKToKICAgICAgICAgcmV0dXJuIGNvbW1hbmQgKyAiXG4iCiAKICAgICBkZWYgX3JlYWRfZmly
c3RfYmxvY2soc2VsZiwgZGVhZGxpbmUpOgotICAgICAgICAiIiJSZWFkcyBhIGJsb2NrIGZyb20g
dGhlIHNlcnZlcl9wcm9jZXNzIGFuZCByZXR1cm5zICh0ZXh0X2NvbnRlbnQsIGF1ZGlvX2NvbnRl
bnQpLiIiIgotICAgICAgICBpZiBzZWxmLmRldGVjdGVkX2NyYXNoKCk6Ci0gICAgICAgICAgICBy
ZXR1cm4gKE5vbmUsIE5vbmUpCi0KKyAgICAgICAgIyByZXR1cm5zICh0ZXh0X2NvbnRlbnQsIGF1
ZGlvX2NvbnRlbnQpCiAgICAgICAgIGJsb2NrID0gc2VsZi5fcmVhZF9ibG9jayhkZWFkbGluZSkK
ICAgICAgICAgaWYgYmxvY2suY29udGVudF90eXBlID09ICdhdWRpby93YXYnOgogICAgICAgICAg
ICAgcmV0dXJuIChOb25lLCBibG9jay5kZWNvZGVkX2NvbnRlbnQpCiAgICAgICAgIHJldHVybiAo
YmxvY2suZGVjb2RlZF9jb250ZW50LCBOb25lKQogCiAgICAgZGVmIF9yZWFkX29wdGlvbmFsX2lt
YWdlX2Jsb2NrKHNlbGYsIGRlYWRsaW5lKToKLSAgICAgICAgIiIiUmVhZHMgYSBibG9jayBmcm9t
IHRoZSBzZXJ2ZXJfcHJvY2VzcyBhbmQgcmV0dXJucyAoaW1hZ2UsIGFjdHVhbF9pbWFnZV9oYXNo
KS4iIiIKLSAgICAgICAgaWYgc2VsZi5kZXRlY3RlZF9jcmFzaCgpOgotICAgICAgICAgICAgcmV0
dXJuIChOb25lLCBOb25lKQotCi0gICAgICAgIGJsb2NrID0gc2VsZi5fcmVhZF9ibG9jayhkZWFk
bGluZSkKKyAgICAgICAgIyByZXR1cm5zIChpbWFnZSwgYWN0dWFsX2ltYWdlX2hhc2gpCisgICAg
ICAgIGJsb2NrID0gc2VsZi5fcmVhZF9ibG9jayhkZWFkbGluZSwgd2FpdF9mb3Jfc3RkZXJyX2Vv
Zj1UcnVlKQogICAgICAgICBpZiBibG9jay5jb250ZW50IGFuZCBibG9jay5jb250ZW50X3R5cGUg
PT0gJ2ltYWdlL3BuZyc6CiAgICAgICAgICAgICByZXR1cm4gKGJsb2NrLmRlY29kZWRfY29udGVu
dCwgYmxvY2suY29udGVudF9oYXNoKQogICAgICAgICByZXR1cm4gKE5vbmUsIGJsb2NrLmNvbnRl
bnRfaGFzaCkKIAogICAgIGRlZiBydW5fdGVzdChzZWxmLCBkcml2ZXJfaW5wdXQpOgorICAgICAg
ICBzZWxmLmVycm9yX2Zyb21fdGVzdCA9IHN0cigpCisgICAgICAgIHNlbGYuZXJyX3NlZW5fZW9m
ID0gRmFsc2UKKwogICAgICAgICBjb21tYW5kID0gc2VsZi5fY29tbWFuZF9mcm9tX2RyaXZlcl9p
bnB1dChkcml2ZXJfaW5wdXQpCiAgICAgICAgIHN0YXJ0X3RpbWUgPSB0aW1lLnRpbWUoKQogICAg
ICAgICBkZWFkbGluZSA9IHRpbWUudGltZSgpICsgaW50KGRyaXZlcl9pbnB1dC50aW1lb3V0KSAv
IDEwMDAuMApAQCAtNDk3LDYyICs0OTQsNzcgQEAgY2xhc3MgV2ViS2l0RHJpdmVyKERyaXZlcik6
CiAgICAgICAgIHNlbGYuX3NlcnZlcl9wcm9jZXNzLndyaXRlKGNvbW1hbmQpCiAgICAgICAgIHRl
eHQsIGF1ZGlvID0gc2VsZi5fcmVhZF9maXJzdF9ibG9jayhkZWFkbGluZSkgICMgRmlyc3QgYmxv
Y2sgaXMgZWl0aGVyIHRleHQgb3IgYXVkaW8KICAgICAgICAgaW1hZ2UsIGFjdHVhbF9pbWFnZV9o
YXNoID0gc2VsZi5fcmVhZF9vcHRpb25hbF9pbWFnZV9ibG9jayhkZWFkbGluZSkgICMgVGhlIHNl
Y29uZCAob3B0aW9uYWwpIGJsb2NrIGlzIGltYWdlIGRhdGEuCi0KLSAgICAgICAgZXJyb3JfbGlu
ZXMgPSBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5lcnJvci5zcGxpdGxpbmVzKCkKLSAgICAgICAgIyBG
SVhNRTogVGhpcyBpcyBhIGhhY2suICBJdCBpcyB1bmNsZWFyIHdoeSBzb21ldGltZXMKLSAgICAg
ICAgIyB3ZSBkbyBub3QgZ2V0IGFueSBlcnJvciBsaW5lcyBmcm9tIHRoZSBzZXJ2ZXJfcHJvY2Vz
cwotICAgICAgICAjIHByb2JhYmx5IHdlIGFyZSBub3QgZmx1c2hpbmcgc3RkZXJyLgotICAgICAg
ICBpZiBlcnJvcl9saW5lcyBhbmQgZXJyb3JfbGluZXNbLTFdID09ICIjRU9GIjoKLSAgICAgICAg
ICAgIGVycm9yX2xpbmVzLnBvcCgpICAjIFJlbW92ZSB0aGUgZXhwZWN0ZWQgIiNFT0YiCi0gICAg
ICAgIGVycm9yID0gIlxuIi5qb2luKGVycm9yX2xpbmVzKQotCi0gICAgICAgICMgRklYTUU6IFRo
aXMgc2VlbXMgbGlrZSB0aGUgd3Jvbmcgc2VjdGlvbiBvZiBjb2RlIHRvIGJlIHJlc2V0dGluZyBf
c2VydmVyX3Byb2Nlc3MuZXJyb3IuCi0gICAgICAgIHNlbGYuX3NlcnZlcl9wcm9jZXNzLmVycm9y
ID0gIiIKKyAgICAgICAgIyBXZSBzaG91bGQgaGF2ZSByZWFkIGFsbCBvZiB0aGUgZXJyb3IgYW5k
IG91dHB1dCBhbHJlYWR5IQorICAgICAgICBhc3NlcnQgbm90IHNlbGYuX3NlcnZlcl9wcm9jZXNz
LmVycm9yLCAiVW5wcm9jZXNzZWQgZXJyb3Igb3V0cHV0OiAlcyIgJSBzZWxmLl9zZXJ2ZXJfcHJv
Y2Vzcy5lcnJvcgogICAgICAgICByZXR1cm4gRHJpdmVyT3V0cHV0KHRleHQsIGltYWdlLCBhY3R1
YWxfaW1hZ2VfaGFzaCwgYXVkaW8sCiAgICAgICAgICAgICBjcmFzaD1zZWxmLmRldGVjdGVkX2Ny
YXNoKCksIHRlc3RfdGltZT10aW1lLnRpbWUoKSAtIHN0YXJ0X3RpbWUsCi0gICAgICAgICAgICB0
aW1lb3V0PXNlbGYuX3NlcnZlcl9wcm9jZXNzLnRpbWVkX291dCwgZXJyb3I9ZXJyb3IpCisgICAg
ICAgICAgICB0aW1lb3V0PXNlbGYuX3NlcnZlcl9wcm9jZXNzLnRpbWVkX291dCwgZXJyb3I9c2Vs
Zi5lcnJvcl9mcm9tX3Rlc3QpCisKKyAgICBkZWYgX3JlYWRfaGVhZGVyKHNlbGYsIGJsb2NrLCBs
aW5lLCBoZWFkZXJfdGV4dCwgaGVhZGVyX2F0dHIsIGhlYWRlcl9maWx0ZXI9Tm9uZSk6CisgICAg
ICAgIGlmIGxpbmUuc3RhcnRzd2l0aChoZWFkZXJfdGV4dCkgYW5kIGdldGF0dHIoYmxvY2ssIGhl
YWRlcl9hdHRyKSBpcyBOb25lOgorICAgICAgICAgICAgdmFsdWUgPSBsaW5lLnNwbGl0KClbMV0K
KyAgICAgICAgICAgIGlmIGhlYWRlcl9maWx0ZXI6CisgICAgICAgICAgICAgICAgdmFsdWUgPSBo
ZWFkZXJfZmlsdGVyKHZhbHVlKQorICAgICAgICAgICAgc2V0YXR0cihibG9jaywgaGVhZGVyX2F0
dHIsIHZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgcmV0dXJuIEZhbHNl
CisKKyAgICBkZWYgX3Byb2Nlc3Nfc3Rkb3V0X2xpbmUoc2VsZiwgYmxvY2ssIGxpbmUpOgorICAg
ICAgICBpZiAoc2VsZi5fcmVhZF9oZWFkZXIoYmxvY2ssIGxpbmUsICdDb250ZW50LVR5cGU6ICcs
ICdjb250ZW50X3R5cGUnKQorICAgICAgICAgICAgb3Igc2VsZi5fcmVhZF9oZWFkZXIoYmxvY2ss
IGxpbmUsICdDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiAnLCAnZW5jb2RpbmcnKQorICAgICAg
ICAgICAgb3Igc2VsZi5fcmVhZF9oZWFkZXIoYmxvY2ssIGxpbmUsICdDb250ZW50LUxlbmd0aDog
JywgJ19jb250ZW50X2xlbmd0aCcsIGludCkKKyAgICAgICAgICAgIG9yIHNlbGYuX3JlYWRfaGVh
ZGVyKGJsb2NrLCBsaW5lLCAnQWN0dWFsSGFzaDogJywgJ2NvbnRlbnRfaGFzaCcpKToKKyAgICAg
ICAgICAgIHJldHVybgorICAgICAgICAjIElmIHRoZSBsaW5lIHdhc24ndCBhIGhlYWRlciwgd2Ug
anVzdCBhcHBlbmQgaXQgdG8gdGhlIGNvbnRlbnQuCisgICAgICAgIGJsb2NrLmNvbnRlbnQgKz0g
bGluZQorCisgICAgZGVmIF9zdHJpcF9lb2Yoc2VsZiwgbGluZSk6CisgICAgICAgIGlmIGxpbmUg
YW5kIGxpbmUuZW5kc3dpdGgoIiNFT0ZcbiIpOgorICAgICAgICAgICAgcmV0dXJuIGxpbmVbOi01
XSwgVHJ1ZQorICAgICAgICByZXR1cm4gbGluZSwgRmFsc2UKKworICAgIGRlZiBfcmVhZF9ibG9j
ayhzZWxmLCBkZWFkbGluZSwgd2FpdF9mb3Jfc3RkZXJyX2VvZj1GYWxzZSk6CisgICAgICAgIGJs
b2NrID0gQ29udGVudEJsb2NrKCkKKyAgICAgICAgb3V0X3NlZW5fZW9mID0gRmFsc2UKKworICAg
ICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgaWYgb3V0X3NlZW5fZW9mIGFuZCAoc2VsZi5l
cnJfc2Vlbl9lb2Ygb3Igbm90IHdhaXRfZm9yX3N0ZGVycl9lb2YpOgorICAgICAgICAgICAgICAg
IGJyZWFrCisKKyAgICAgICAgICAgIGlmIHNlbGYuX3NlcnZlcl9wcm9jZXNzLnRpbWVkX291dCBv
ciBzZWxmLmRldGVjdGVkX2NyYXNoKCk6CisgICAgICAgICAgICAgICAgYnJlYWsKIAotICAgIExF
TkdUSF9IRUFERVIgPSAnQ29udGVudC1MZW5ndGg6ICcKLSAgICBIQVNIX0hFQURFUiA9ICdBY3R1
YWxIYXNoOiAnCi0gICAgVFlQRV9IRUFERVIgPSAnQ29udGVudC1UeXBlOiAnCi0gICAgRU5DT0RJ
TkdfSEVBREVSID0gJ0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6ICcKKyAgICAgICAgICAgIHRp
bWVvdXQgPSBkZWFkbGluZSAtIHRpbWUudGltZSgpCiAKLSAgICBkZWYgX3JlYWRfbGluZV91bnRp
bChzZWxmLCBkZWFkbGluZSk6Ci0gICAgICAgIHJldHVybiBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5y
ZWFkX2xpbmUoZGVhZGxpbmUgLSB0aW1lLnRpbWUoKSkKKyAgICAgICAgICAgIGlmIHNlbGYuZXJy
X3NlZW5fZW9mOgorICAgICAgICAgICAgICAgIG91dF9saW5lID0gc2VsZi5fc2VydmVyX3Byb2Nl
c3MucmVhZF9zdGRvdXRfbGluZSh0aW1lb3V0KQorICAgICAgICAgICAgICAgIGVycl9saW5lID0g
Tm9uZQorICAgICAgICAgICAgZWxpZiBvdXRfc2Vlbl9lb2Y6CisgICAgICAgICAgICAgICAgb3V0
X2xpbmUgPSBOb25lCisgICAgICAgICAgICAgICAgZXJyX2xpbmUgPSBzZWxmLl9zZXJ2ZXJfcHJv
Y2Vzcy5yZWFkX3N0ZGVycl9saW5lKHRpbWVvdXQpCisgICAgICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgICAgIG91dF9saW5lLCBlcnJfbGluZSA9IHNlbGYuX3NlcnZlcl9wcm9jZXNzLnJlYWRf
ZWl0aGVyX3N0ZG91dF9vcl9zdGRlcnJfbGluZSh0aW1lb3V0KQogCi0gICAgZGVmIF9yZWFkX2Js
b2NrKHNlbGYsIGRlYWRsaW5lKToKLSAgICAgICAgY29udGVudF90eXBlID0gTm9uZQotICAgICAg
ICBlbmNvZGluZyA9IE5vbmUKLSAgICAgICAgY29udGVudF9oYXNoID0gTm9uZQotICAgICAgICBj
b250ZW50X2xlbmd0aCA9IE5vbmUKKyAgICAgICAgICAgIGlmIG91dF9saW5lOgorICAgICAgICAg
ICAgICAgIGFzc2VydCBub3Qgb3V0X3NlZW5fZW9mCisgICAgICAgICAgICAgICAgb3V0X2xpbmUs
IG91dF9zZWVuX2VvZiA9IHNlbGYuX3N0cmlwX2VvZihvdXRfbGluZSkKKyAgICAgICAgICAgIGlm
IGVycl9saW5lOgorICAgICAgICAgICAgICAgIGFzc2VydCBub3Qgc2VsZi5lcnJfc2Vlbl9lb2YK
KyAgICAgICAgICAgICAgICBlcnJfbGluZSwgc2VsZi5lcnJfc2Vlbl9lb2YgPSBzZWxmLl9zdHJp
cF9lb2YoZXJyX2xpbmUpCiAKLSAgICAgICAgIyBDb250ZW50IGlzIHRyZWF0ZWQgYXMgYmluYXJ5
IGRhdGEgZXZlbiB0aG91Z2ggdGhlIHRleHQgb3V0cHV0IGlzIHVzdWFsbHkgVVRGLTguCi0gICAg
ICAgIGNvbnRlbnQgPSBzdHIoKSAgIyBGSVhNRTogU2hvdWxkIGJlIGJ5dGVhcnJheSgpIG9uY2Ug
d2UgcmVxdWlyZSBQeXRob24gMi42LgotICAgICAgICBsaW5lID0gc2VsZi5fcmVhZF9saW5lX3Vu
dGlsKGRlYWRsaW5lKQotICAgICAgICBlb2YgPSBGYWxzZQotICAgICAgICB3aGlsZSAobm90IHNl
bGYuX3NlcnZlcl9wcm9jZXNzLnRpbWVkX291dCBhbmQgbm90IHNlbGYuZGV0ZWN0ZWRfY3Jhc2go
KSBhbmQgbm90IGVvZik6Ci0gICAgICAgICAgICBjaG9tcGVkX2xpbmUgPSBsaW5lLnJzdHJpcCgp
ICAjIEZJWE1FOiBUaGlzIHdpbGwgcmVtb3ZlIHRyYWlsaW5nIGxpbmVzIGZyb20gdGVzdCBvdXRw
dXQuICBJcyB0aGF0IHJpZ2h0PwotICAgICAgICAgICAgaWYgY2hvbXBlZF9saW5lLmVuZHN3aXRo
KCIjRU9GIik6Ci0gICAgICAgICAgICAgICAgZW9mID0gVHJ1ZQotICAgICAgICAgICAgICAgIGxp
bmUgPSBjaG9tcGVkX2xpbmVbOi00XQotCi0gICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgo
c2VsZi5UWVBFX0hFQURFUikgYW5kIGNvbnRlbnRfdHlwZSBpcyBOb25lOgotICAgICAgICAgICAg
ICAgIGNvbnRlbnRfdHlwZSA9IGxpbmUuc3BsaXQoKVsxXQotICAgICAgICAgICAgZWxpZiBsaW5l
LnN0YXJ0c3dpdGgoc2VsZi5FTkNPRElOR19IRUFERVIpIGFuZCBlbmNvZGluZyBpcyBOb25lOgot
ICAgICAgICAgICAgICAgIGVuY29kaW5nID0gbGluZS5zcGxpdCgpWzFdCi0gICAgICAgICAgICBl
bGlmIGxpbmUuc3RhcnRzd2l0aChzZWxmLkxFTkdUSF9IRUFERVIpIGFuZCBjb250ZW50X2xlbmd0
aCBpcyBOb25lOgotICAgICAgICAgICAgICAgIGNvbnRlbnRfbGVuZ3RoID0gaW50KGxpbmVbbGVu
KHNlbGYuTEVOR1RIX0hFQURFUik6XSkKLSAgICAgICAgICAgICAgICAjIEZJWE1FOiBJbiByZWFs
IEhUVFAgdGhlcmUgc2hvdWxkIHByb2JhYmx5IGJlIGEgYmxhbmsgbGluZQotICAgICAgICAgICAg
ICAgICMgYWZ0ZXIgaGVhZGVycyBiZWZvcmUgY29udGVudCwgYnV0IERSVCBkb2Vzbid0IHdyaXRl
IG9uZS4KLSAgICAgICAgICAgICAgICBjb250ZW50ID0gc2VsZi5fc2VydmVyX3Byb2Nlc3MucmVh
ZChkZWFkbGluZSAtIHRpbWUudGltZSgpLCBjb250ZW50X2xlbmd0aCkKLSAgICAgICAgICAgIGVs
aWYgbGluZS5zdGFydHN3aXRoKHNlbGYuSEFTSF9IRUFERVIpOgotICAgICAgICAgICAgICAgIGNv
bnRlbnRfaGFzaCA9IGxpbmUuc3BsaXQoKVsxXQotICAgICAgICAgICAgZWxpZiBsaW5lOgotICAg
ICAgICAgICAgICAgIGNvbnRlbnQgKz0gbGluZQotICAgICAgICAgICAgaWYgZW9mOgotICAgICAg
ICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBsaW5lID0gc2VsZi5fcmVhZF9saW5lX3VudGls
KGRlYWRsaW5lKQotICAgICAgICByZXR1cm4gQ29udGVudEJsb2NrKGNvbnRlbnRfdHlwZSwgZW5j
b2RpbmcsIGNvbnRlbnRfaGFzaCwgY29udGVudCkKKyAgICAgICAgICAgIGlmIG91dF9saW5lOgor
ICAgICAgICAgICAgICAgIHNlbGYuX3Byb2Nlc3Nfc3Rkb3V0X2xpbmUoYmxvY2ssIG91dF9saW5l
KQorICAgICAgICAgICAgICAgICMgRklYTUU6IFVubGlrZSBIVFRQLCBEUlQgZHVtcHMgdGhlIGNv
bnRlbnQgcmlnaHQgYWZ0ZXIgcHJpbnRpbmcgYSBDb250ZW50LUxlbmd0aCBoZWFkZXIuCisgICAg
ICAgICAgICAgICAgIyBEb24ndCB3YWl0IHVudGlsIHdlJ3JlIGRvbmUgd2l0aCBoZWFkZXJzLCBq
dXN0IHJlYWQgdGhlIGJpbmFyeSBibG9iIHJpZ2h0IG5vdy4KKyAgICAgICAgICAgICAgICBpZiBi
bG9jay5fY29udGVudF9sZW5ndGggaXMgbm90IE5vbmUgYW5kIG5vdCBibG9jay5jb250ZW50Ogor
ICAgICAgICAgICAgICAgICAgICBibG9jay5jb250ZW50ID0gc2VsZi5fc2VydmVyX3Byb2Nlc3Mu
cmVhZF9zdGRvdXQoZGVhZGxpbmUgLSB0aW1lLnRpbWUoKSwgYmxvY2suX2NvbnRlbnRfbGVuZ3Ro
KQorCisgICAgICAgICAgICAjIEZJWE1FOiBOZWVkIHRvIGhhbmRsZSAiI0NSQVNIRUQgLSBXZWJQ
cm9jZXNzIiBhbmQgIiNDUkFTSEVEIi4KKyAgICAgICAgICAgIGlmIGVycl9saW5lOgorICAgICAg
ICAgICAgICAgIHNlbGYuZXJyb3JfZnJvbV90ZXN0ICs9IGVycl9saW5lCisKKyAgICAgICAgYmxv
Y2suZGVjb2RlX2NvbnRlbnQoKQorICAgICAgICByZXR1cm4gYmxvY2sKIAogICAgIGRlZiBzdG9w
KHNlbGYpOgogICAgICAgICBpZiBzZWxmLl9zZXJ2ZXJfcHJvY2VzczoKQEAgLTU2MSwxMiArNTcz
LDE3IEBAIGNsYXNzIFdlYktpdERyaXZlcihEcml2ZXIpOgogCiAKIGNsYXNzIENvbnRlbnRCbG9j
ayhvYmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb250ZW50X3R5cGUsIGVuY29kaW5n
LCBjb250ZW50X2hhc2gsIGNvbnRlbnQpOgotICAgICAgICBzZWxmLmNvbnRlbnRfdHlwZSA9IGNv
bnRlbnRfdHlwZQotICAgICAgICBzZWxmLmVuY29kaW5nID0gZW5jb2RpbmcKLSAgICAgICAgc2Vs
Zi5jb250ZW50X2hhc2ggPSBjb250ZW50X2hhc2gKLSAgICAgICAgc2VsZi5jb250ZW50ID0gY29u
dGVudAorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi5jb250ZW50X3R5cGUg
PSBOb25lCisgICAgICAgIHNlbGYuZW5jb2RpbmcgPSBOb25lCisgICAgICAgIHNlbGYuY29udGVu
dF9oYXNoID0gTm9uZQorICAgICAgICBzZWxmLl9jb250ZW50X2xlbmd0aCA9IE5vbmUKKyAgICAg
ICAgIyBDb250ZW50IGlzIHRyZWF0ZWQgYXMgYmluYXJ5IGRhdGEgZXZlbiB0aG91Z2ggdGhlIHRl
eHQgb3V0cHV0IGlzIHVzdWFsbHkgVVRGLTguCisgICAgICAgIHNlbGYuY29udGVudCA9IHN0cigp
ICAjIEZJWE1FOiBTaG91bGQgYmUgYnl0ZWFycmF5KCkgb25jZSB3ZSByZXF1aXJlIFB5dGhvbiAy
LjYuCisgICAgICAgIHNlbGYuZGVjb2RlZF9jb250ZW50ID0gTm9uZQorCisgICAgZGVmIGRlY29k
ZV9jb250ZW50KHNlbGYpOgogICAgICAgICBpZiBzZWxmLmVuY29kaW5nID09ICdiYXNlNjQnOgot
ICAgICAgICAgICAgc2VsZi5kZWNvZGVkX2NvbnRlbnQgPSBiYXNlNjQuYjY0ZGVjb2RlKGNvbnRl
bnQpCisgICAgICAgICAgICBzZWxmLmRlY29kZWRfY29udGVudCA9IGJhc2U2NC5iNjRkZWNvZGUo
c2VsZi5jb250ZW50KQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5kZWNvZGVkX2Nv
bnRlbnQgPSBjb250ZW50CisgICAgICAgICAgICBzZWxmLmRlY29kZWRfY29udGVudCA9IHNlbGYu
Y29udGVudAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111672</attachid>
            <date>2011-10-19 14:18:11 -0700</date>
            <delta_ts>2011-10-19 14:18:11 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-70435-20111019141811.patch</filename>
            <type>text/plain</type>
            <size>19826</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTc3OTAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2YTU2NDM2MmM3ZWViMjI0NzI0OTM4NzJjNjFiYWU4NTMz
YzNmM2RlLi41YzNkZTU3NGU3ZThiMWE5MGEyZWI5ODA3OTU4YzBhNTk2NDBkY2I3IDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEg
QEAKKzIwMTEtMTAtMTkgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAg
IE5SV1QgU2VydmVyUHJvY2VzcyBjYW4ndCByZWFkIGxpbmVzIGZyb20gc3RkZXJyIGFuZCBzdGRp
byBzZXBhcmF0ZWx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03MDQzNQorCisgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCisKKyAgICAgICAg
VGhpcyBpcyB0aGUgdW5kZXJseWluZyBidWcgYmVoaW5kIG91ciBsYWNrIG9mIFdLMiBzdXBwb3J0
LCBhbmQgdGltZW91dCBkZXRlY3Rpb24gb24gV2luZG93cy4KKyAgICAgICAgRFJUIGV4cGVjdHMg
UldUIHRvIHJlYWQgb25lIGxpbmUgYXQgYSB0aW1lIGZyb20gc3RkZXJyIGFuZCBzdGRvdXQgaW5k
ZXBlbmRlbnRseS4KKyAgICAgICAgVGhpcyBhbGxvd3MgRFJUIHRvIGNvbW11bmljYXRlIGVycm9y
cyBvdmVyIHN0ZGVyciBhbmQgaGF2ZSB0aGVtIHJlc3BvbmRlZCB0byBpbW1lZGlhdGVseQorICAg
ICAgICByZWdhcmRsZXNzIG9mIHdoYXQgc3RhdGUgdGhlIHN0ZGlvIHN0cmVhbSBtYXkgYmUgaW4u
ICBQcmV2aW91c2x5IE5SV1QncyBTZXJ2ZXJQcm9jZXNzCisgICAgICAgIGNsYXNzIG9ubHkgZXhw
b3NlZCBhIHJlYWRfbGluZSBmdW5jdGlvbiB3aGljaCB3b3VsZCByZWFkIGEgbGluZSBmcm9tIHN0
ZG91dAorICAgICAgICBhbmQgYmF0Y2ggYWxsIG91dHB1dCBmcm9tIHN0ZGVyciBpbnRvIGFuIGVy
cm9yIGJ1ZmZlci4gIENhbGxlcnMgd291bGQgb25seSBiZSBhYmxlCisgICAgICAgIHRvIHJlc3Bv
bmQgdG8gY29tbWFuZHMgb3ZlciBzdGRlcnIgaWYgdGhleSBoYXBwZW5lZCB0byBjb3JyZXNwb25k
IHdpdGggYSBzdGRvdXQgbGluZSBib3VuZGFyeS4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvc2VydmVyX3Byb2Nlc3MucHk6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHk6CisKIDIwMTEtMTAtMTggIERp
bWl0cmkgR2xhemtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4KIAogICAgICAgICBTcGxpdCBU
ZXN0RXhwZWN0YXRpb25zRWRpdG9yIGludG8gaXRzIG93biBmaWxlLgpkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9zZXJ2ZXJfcHJvY2Vzcy5weSBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvc2VydmVyX3Byb2Nlc3Mu
cHkKaW5kZXggNzdjY2E2ZWZkZjk2ZDkxYjZhZGJiNDY4YWExZGViMDhhMTQxMTc0MS4uZGQ0Yjhm
NzFiY2YwYzAxMzExNGQwMWIxYzE5ZWZkYmEwOGY5NTg4OSAxMDA2NDQKLS0tIGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9zZXJ2ZXJfcHJvY2Vzcy5weQorKysgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3NlcnZlcl9wcm9jZXNzLnB5
CkBAIC02OCwxMCArNjgsMTAgQEAgY2xhc3MgU2VydmVyUHJvY2VzczoKIAogICAgIGRlZiBfcmVz
ZXQoc2VsZik6CiAgICAgICAgIHNlbGYuX3Byb2MgPSBOb25lCi0gICAgICAgIHNlbGYuX291dHB1
dCA9ICcnCisgICAgICAgIHNlbGYuX291dHB1dCA9IHN0cigpICAjIGJ5dGVzYXJyYXkoKSBvbmNl
IHdlIHJlcXVpcmUgUHl0aG9uIDIuNgorICAgICAgICBzZWxmLl9lcnJvciA9IHN0cigpICAjIGJ5
dGVzYXJyYXkoKSBvbmNlIHdlIHJlcXVpcmUgUHl0aG9uIDIuNgogICAgICAgICBzZWxmLmNyYXNo
ZWQgPSBGYWxzZQogICAgICAgICBzZWxmLnRpbWVkX291dCA9IEZhbHNlCi0gICAgICAgIHNlbGYu
ZXJyb3IgPSAnJwogCiAgICAgZGVmIF9zdGFydChzZWxmKToKICAgICAgICAgaWYgc2VsZi5fcHJv
YzoKQEAgLTEyNyw0MiArMTI3LDUwIEBAIGNsYXNzIFNlcnZlclByb2Nlc3M6CiAgICAgICAgICAg
ICAjIHN0b3AoKSBjYWxscyBfcmVzZXQoKSwgc28gd2UgaGF2ZSB0byBzZXQgY3Jhc2hlZCB0byBU
cnVlIGFmdGVyIGNhbGxpbmcgc3RvcCgpLgogICAgICAgICAgICAgc2VsZi5jcmFzaGVkID0gVHJ1
ZQogCi0gICAgZGVmIHJlYWRfbGluZShzZWxmLCB0aW1lb3V0KToKLSAgICAgICAgIiIiUmVhZCBh
IHNpbmdsZSBsaW5lIGZyb20gdGhlIHN1YnByb2Nlc3MsIHdhaXRpbmcgdW50aWwgdGhlIGRlYWRs
aW5lLgotICAgICAgICBJZiB0aGUgZGVhZGxpbmUgcGFzc2VzLCB0aGUgY2FsbCB0aW1lcyBvdXQu
IE5vdGUgdGhhdCBldmVuIGlmIHRoZQotICAgICAgICBzdWJwcm9jZXNzIGhhcyBjcmFzaGVkIG9y
IHRoZSBkZWFkbGluZSBoYXMgcGFzc2VkLCBpZiB0aGVyZSBpcyBvdXRwdXQKLSAgICAgICAgcGVu
ZGluZywgaXQgd2lsbCBiZSByZXR1cm5lZC4KLQotICAgICAgICBBcmdzOgotICAgICAgICAgICAg
dGltZW91dDogZmxvYXRpbmctcG9pbnQgbnVtYmVyIG9mIHNlY29uZHMgdGhlIGNhbGwgaXMgYWxs
b3dlZAotICAgICAgICAgICAgICAgIHRvIGJsb2NrIGZvci4gQSB6ZXJvIG9yIG5lZ2F0aXZlIG51
bWJlciB3aWxsIGF0dGVtcHQgdG8gcmVhZAotICAgICAgICAgICAgICAgIGFueSBleGlzdGluZyBk
YXRhLCBidXQgd2lsbCBub3QgYmxvY2suIFRoZXJlIGlzIG5vIHdheSB0bwotICAgICAgICAgICAg
ICAgIGJsb2NrIGluZGVmaW5pdGVseS4KLSAgICAgICAgUmV0dXJuczoKLSAgICAgICAgICAgIG91
dHB1dDogZGF0YSByZXR1cm5lZCwgaWYgYW55LiBJZiBubyBkYXRhIGlzIGF2YWlsYWJsZSBhbmQg
dGhlCi0gICAgICAgICAgICAgICAgY2FsbCB0aW1lcyBvdXQgb3IgY3Jhc2hlcywgYW4gZW1wdHkg
c3RyaW5nIGlzIHJldHVybmVkLiBOb3RlCi0gICAgICAgICAgICAgICAgdGhhdCB0aGUgcmV0dXJu
ZWQgc3RyaW5nIGluY2x1ZGVzIHRoZSBuZXdsaW5lICgnXG4nKS4iIiIKLSAgICAgICAgcmV0dXJu
IHNlbGYuX3JlYWQodGltZW91dCwgc2l6ZT0wKQotCi0gICAgZGVmIHJlYWQoc2VsZiwgdGltZW91
dCwgc2l6ZSk6Ci0gICAgICAgICIiIkF0dGVtcHRzIHRvIHJlYWQgc2l6ZSBjaGFyYWN0ZXJzIGZy
b20gdGhlIHN1YnByb2Nlc3MsIHdhaXRpbmcgdW50aWwKLSAgICAgICAgdGhlIGRlYWRsaW5lIHBh
c3Nlcy4gSWYgdGhlIGRlYWRsaW5lIHBhc3NlcywgYW55IGF2YWlsYWJsZSBkYXRhIHdpbGwgYmUK
LSAgICAgICAgcmV0dXJuZWQuIE5vdGUgdGhhdCBldmVuIGlmIHRoZSBkZWFkbGluZSBoYXMgcGFz
c2VkIG9yIGlmIHRoZQotICAgICAgICBzdWJwcm9jZXNzIGhhcyBjcmFzaGVkLCBhbnkgYXZhaWxh
YmxlIGRhdGEgd2lsbCBzdGlsbCBiZSByZXR1cm5lZC4KLQotICAgICAgICBBcmdzOgotICAgICAg
ICAgICAgdGltZW91dDogZmxvYXRpbmctcG9pbnQgbnVtYmVyIG9mIHNlY29uZHMgdGhlIGNhbGwg
aXMgYWxsb3dlZAotICAgICAgICAgICAgICAgIHRvIGJsb2NrIGZvci4gQSB6ZXJvIG9yIG5lZ2F0
aXZlIG51bWJlciB3aWxsIGF0dGVtcHQgdG8gcmVhZAotICAgICAgICAgICAgICAgIGFueSBleGlz
dGluZyBkYXRhLCBidXQgd2lsbCBub3QgYmxvY2suIFRoZXJlIGlzIG5vIHdheSB0bwotICAgICAg
ICAgICAgICAgIGJsb2NrIGluZGVmaW5pdGVseS4KLSAgICAgICAgICAgIHNpemU6IGFtb3VudCBv
ZiBkYXRhIHRvIHJlYWQuIE11c3QgYmUgYSBwb3N0aXZlIGludGVnZXIuCi0gICAgICAgIFJldHVy
bnM6Ci0gICAgICAgICAgICBvdXRwdXQ6IGRhdGEgcmV0dXJuZWQsIGlmIGFueS4gSWYgbm8gZGF0
YSBpcyBhdmFpbGFibGUsIGFuIGVtcHR5Ci0gICAgICAgICAgICAgICAgc3RyaW5nIGlzIHJldHVy
bmVkLgotICAgICAgICAiIiIKKyAgICBkZWYgX3BvcF9zdGRvdXRfbGluZV9pZl9yZWFkeShzZWxm
KToKKyAgICAgICAgaW5kZXhfYWZ0ZXJfbmV3bGluZSA9IHNlbGYuX291dHB1dC5maW5kKCdcbicp
ICsgMQorICAgICAgICBpZiBpbmRleF9hZnRlcl9uZXdsaW5lID4gMDoKKyAgICAgICAgICAgIHJl
dHVybiBzZWxmLl9wb3Bfb3V0cHV0X2J5dGVzKGluZGV4X2FmdGVyX25ld2xpbmUpCisgICAgICAg
IHJldHVybiBOb25lCisKKyAgICBkZWYgX3BvcF9zdGRlcnJfbGluZV9pZl9yZWFkeShzZWxmKToK
KyAgICAgICAgaW5kZXhfYWZ0ZXJfbmV3bGluZSA9IHNlbGYuX2Vycm9yLmZpbmQoJ1xuJykgKyAx
CisgICAgICAgIGlmIGluZGV4X2FmdGVyX25ld2xpbmUgPiAwOgorICAgICAgICAgICAgcmV0dXJu
IHNlbGYuX3BvcF9lcnJvcl9ieXRlcyhpbmRleF9hZnRlcl9uZXdsaW5lKQorICAgICAgICByZXR1
cm4gTm9uZQorCisgICAgZGVmIHJlYWRfc3Rkb3V0X2xpbmUoc2VsZiwgdGltZW91dF9zZWNvbmRz
KToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3JlYWQodGltZW91dF9zZWNvbmRzLCBzZWxmLl9wb3Bf
c3Rkb3V0X2xpbmVfaWZfcmVhZHkpCisKKyAgICBkZWYgcmVhZF9zdGRlcnJfbGluZShzZWxmLCB0
aW1lb3V0X3NlY29uZHMpOgorICAgICAgICByZXR1cm4gc2VsZi5fcmVhZCh0aW1lb3V0X3NlY29u
ZHMsIHNlbGYuX3BvcF9zdGRlcnJfbGluZV9pZl9yZWFkeSkKKworICAgIGRlZiByZWFkX2VpdGhl
cl9zdGRvdXRfb3Jfc3RkZXJyX2xpbmUoc2VsZiwgdGltZW91dF9zZWNvbmRzKToKKyAgICAgICAg
ZGVmIHJldHJpZXZlX2J5dGVzX2Zyb21fYnVmZmVycygpOgorICAgICAgICAgICAgc3Rkb3V0X2xp
bmUgPSBzZWxmLl9wb3Bfc3Rkb3V0X2xpbmVfaWZfcmVhZHkoKQorICAgICAgICAgICAgaWYgc3Rk
b3V0X2xpbmU6CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZG91dF9saW5lLCBOb25lCisgICAg
ICAgICAgICBzdGRlcnJfbGluZSA9IHNlbGYuX3BvcF9zdGRlcnJfbGluZV9pZl9yZWFkeSgpCisg
ICAgICAgICAgICBpZiBzdGRlcnJfbGluZToKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZSwg
c3RkZXJyX2xpbmUKKyAgICAgICAgICAgIHJldHVybiBOb25lICAjIEluc3RydWN0cyB0aGUgY2Fs
bGVyIHRvIGtlZXAgd2FpdGluZy4KKworICAgICAgICByZXR1cm5fdmFsdWUgPSBzZWxmLl9yZWFk
KHRpbWVvdXRfc2Vjb25kcywgcmV0cmlldmVfYnl0ZXNfZnJvbV9idWZmZXJzKQorICAgICAgICAj
IEZJWE1FOiBUaGlzIGlzIGEgYml0IG9mIGEgaGFjayBhcm91bmQgdGhlIGZhY3QgdGhhdCBfcmVh
ZCBub3JtYWxseSBvbmx5IHJldHVybnMgb25lIHZhbHVlLCBidXQgdGhpcyBjYWxsZXIgd2FudHMg
aXQgdG8gcmV0dXJuIHR3by4KKyAgICAgICAgaWYgcmV0dXJuX3ZhbHVlIGlzIE5vbmU6CisgICAg
ICAgICAgICByZXR1cm4gTm9uZSwgTm9uZQorICAgICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlCisK
KyAgICBkZWYgcmVhZF9zdGRvdXQoc2VsZiwgdGltZW91dF9zZWNvbmRzLCBzaXplKToKICAgICAg
ICAgaWYgc2l6ZSA8PSAwOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignU2VydmVyUHJv
Y2Vzcy5yZWFkKCkgY2FsbGVkIHdpdGggYSBub24tcG9zaXRpdmUgc2l6ZTogJWQgJyAlIHNpemUp
Ci0gICAgICAgIHJldHVybiBzZWxmLl9yZWFkKHRpbWVvdXQsIHNpemUpCisKKyAgICAgICAgZGVm
IHJldHJpZXZlX2J5dGVzX2Zyb21fc3Rkb3V0X2J1ZmZlcigpOgorICAgICAgICAgICAgaWYgbGVu
KHNlbGYuX291dHB1dCkgPj0gc2l6ZToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fcG9w
X291dHB1dF9ieXRlcyhzaXplKQorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICBy
ZXR1cm4gc2VsZi5fcmVhZCh0aW1lb3V0X3NlY29uZHMsIHJldHJpZXZlX2J5dGVzX2Zyb21fc3Rk
b3V0X2J1ZmZlcikKIAogICAgIGRlZiBfY2hlY2tfZm9yX2NyYXNoKHNlbGYpOgogICAgICAgICBp
ZiBzZWxmLl9wcm9jLnBvbGwoKSAhPSBOb25lOgpAQCAtMTkxLDQ4ICsxOTksNjMgQEAgY2xhc3Mg
U2VydmVyUHJvY2VzczoKICAgICAgICAgZXhjZXB0IFNjcmlwdEVycm9yLCBlOgogICAgICAgICAg
ICAgc2VsZi5fbG9nKCdVbmFibGUgdG8gc2FtcGxlIHByb2Nlc3MuJykKIAotICAgIGRlZiBfcmVh
ZChzZWxmLCB0aW1lb3V0LCBzaXplKToKLSAgICAgICAgIiIiSW50ZXJuYWwgcm91dGluZSB0aGF0
IGFjdHVhbGx5IGRvZXMgdGhlIHJlYWQuIiIiCi0gICAgICAgIGluZGV4ID0gLTEKKyAgICBkZWYg
X2hhbmRsZV90aW1lb3V0KHNlbGYpOgorICAgICAgICBzZWxmLl9leGVjdXRpdmUud2FpdF9uZXdl
c3Qoc2VsZi5fcG9ydC5pc19jcmFzaF9yZXBvcnRlcikKKyAgICAgICAgaWYgbm90IHNlbGYuY3Jh
c2hlZDoKKyAgICAgICAgICAgIHNlbGYuX2NoZWNrX2Zvcl9jcmFzaCgpCisgICAgICAgIHNlbGYu
dGltZWRfb3V0ID0gVHJ1ZQorICAgICAgICBpZiBub3Qgc2VsZi5jcmFzaGVkOgorICAgICAgICAg
ICAgc2VsZi5fc2FtcGxlKCkKKworICAgIGRlZiBfc3BsaXRfc3RyaW5nX2FmdGVyX2luZGV4KHNl
bGYsIHN0cmluZywgaW5kZXgpOgorICAgICAgICByZXR1cm4gc3RyaW5nWzA6aW5kZXhdLCBzdHJp
bmdbaW5kZXg6XQorCisgICAgZGVmIF9wb3Bfb3V0cHV0X2J5dGVzKHNlbGYsIGJ5dGVzX2NvdW50
KToKKyAgICAgICAgb3V0cHV0LCBzZWxmLl9vdXRwdXQgPSBzZWxmLl9zcGxpdF9zdHJpbmdfYWZ0
ZXJfaW5kZXgoc2VsZi5fb3V0cHV0LCBieXRlc19jb3VudCkKKyAgICAgICAgcmV0dXJuIG91dHB1
dAorCisgICAgZGVmIF9wb3BfZXJyb3JfYnl0ZXMoc2VsZiwgYnl0ZXNfY291bnQpOgorICAgICAg
ICBvdXRwdXQsIHNlbGYuX2Vycm9yID0gc2VsZi5fc3BsaXRfc3RyaW5nX2FmdGVyX2luZGV4KHNl
bGYuX2Vycm9yLCBieXRlc19jb3VudCkKKyAgICAgICAgcmV0dXJuIG91dHB1dAorCisgICAgZGVm
IF93YWl0X2Zvcl9kYXRhX2FuZF91cGRhdGVfYnVmZmVycyhzZWxmLCBtc190b193YWl0KToKICAg
ICAgICAgb3V0X2ZkID0gc2VsZi5fcHJvYy5zdGRvdXQuZmlsZW5vKCkKICAgICAgICAgZXJyX2Zk
ID0gc2VsZi5fcHJvYy5zdGRlcnIuZmlsZW5vKCkKICAgICAgICAgc2VsZWN0X2ZkcyA9IChvdXRf
ZmQsIGVycl9mZCkKKyAgICAgICAgcmVhZF9mZHMsIF8sIF8gPSBzZWxlY3Quc2VsZWN0KHNlbGVj
dF9mZHMsIFtdLCBzZWxlY3RfZmRzLCBtc190b193YWl0KQorICAgICAgICB0cnk6CisgICAgICAg
ICAgICBpZiBvdXRfZmQgaW4gcmVhZF9mZHM6CisgICAgICAgICAgICAgICAgc2VsZi5fb3V0cHV0
ICs9IHNlbGYuX3Byb2Muc3Rkb3V0LnJlYWQoKQorICAgICAgICAgICAgaWYgZXJyX2ZkIGluIHJl
YWRfZmRzOgorICAgICAgICAgICAgICAgIHNlbGYuX2Vycm9yICs9IHNlbGYuX3Byb2Muc3RkZXJy
LnJlYWQoKQorICAgICAgICBleGNlcHQgSU9FcnJvciwgZToKKyAgICAgICAgICAgICMgRklYTUU6
IFdoeSBkbyB3ZSBpZ25vcmUgYWxsIElPRXJyb3JzIGhlcmU/CisgICAgICAgICAgICBwYXNzCisK
KyAgICBkZWYgX2NoZWNrX2Zvcl9hYm9ydChzZWxmLCBkZWFkbGluZSk6CisgICAgICAgIHNlbGYu
X2NoZWNrX2Zvcl9jcmFzaCgpCisKKyAgICAgICAgaWYgdGltZS50aW1lKCkgPiBkZWFkbGluZToK
KyAgICAgICAgICAgIHNlbGYuX2hhbmRsZV90aW1lb3V0KCkKKworICAgICAgICByZXR1cm4gc2Vs
Zi5jcmFzaGVkIG9yIHNlbGYudGltZWRfb3V0CisKKyAgICAjIFRoaXMgcmVhZCBmdW5jdGlvbiBp
cyBhIGJpdCBvZGRseS1kZXNpZ25lZCwgYXMgaXQgcG9sbHMgYm90aCBzdGRvdXQgYW5kIHN0ZGVy
ciwgeWV0CisgICAgIyBvbmx5IHJlYWRzL3JldHVybnMgZnJvbSBvbmUgb2YgdGhlbSAoYnVmZmVy
aW5nIGJvdGggaW4gbG9jYWwgc2VsZi5fb3V0cHV0L3NlbGYuX2Vycm9yKS4KKyAgICAjIEl0IG1p
Z2h0IGJlIGNsZWFuZXIgdG8gcGFzcyBpbiB0aGUgZmlsZSBkZXNjcmlwdG9yIHRvIHBvbGwgaW5z
dGVhZC4KKyAgICBkZWYgX3JlYWQoc2VsZiwgdGltZW91dCwgZmV0Y2hfYnl0ZXNfZnJvbV9idWZm
ZXJzX2NhbGxiYWNrKToKICAgICAgICAgZGVhZGxpbmUgPSB0aW1lLnRpbWUoKSArIHRpbWVvdXQK
LSAgICAgICAgd2hpbGUgbm90IHNlbGYudGltZWRfb3V0IGFuZCBub3Qgc2VsZi5jcmFzaGVkOgot
ICAgICAgICAgICAgc2VsZi5fY2hlY2tfZm9yX2NyYXNoKCkKKyAgICAgICAgd2hpbGUgVHJ1ZToK
KyAgICAgICAgICAgIGlmIHNlbGYuX2NoZWNrX2Zvcl9hYm9ydChkZWFkbGluZSk6CisgICAgICAg
ICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICAgICAgYnl0ZXMgPSBmZXRjaF9ieXRlc19m
cm9tX2J1ZmZlcnNfY2FsbGJhY2soKQorICAgICAgICAgICAgaWYgYnl0ZXMgaXMgbm90IE5vbmU6
CisgICAgICAgICAgICAgICAgcmV0dXJuIGJ5dGVzCiAKLSAgICAgICAgICAgIG5vdyA9IHRpbWUu
dGltZSgpCi0gICAgICAgICAgICBpZiBub3cgPiBkZWFkbGluZToKLSAgICAgICAgICAgICAgICBz
ZWxmLl9leGVjdXRpdmUud2FpdF9uZXdlc3Qoc2VsZi5fcG9ydC5pc19jcmFzaF9yZXBvcnRlcikK
LSAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5jcmFzaGVkOgotICAgICAgICAgICAgICAgICAg
ICBzZWxmLl9jaGVja19mb3JfY3Jhc2goKQotICAgICAgICAgICAgICAgIHNlbGYudGltZWRfb3V0
ID0gVHJ1ZQotICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLmNyYXNoZWQ6Ci0gICAgICAgICAg
ICAgICAgICAgIHNlbGYuX3NhbXBsZSgpCi0KLSAgICAgICAgICAgICMgQ2hlY2sgdG8gc2VlIGlm
IHdlIGhhdmUgYW55IG91dHB1dCB3ZSBjYW4gcmV0dXJuLgotICAgICAgICAgICAgaWYgc2l6ZSBh
bmQgbGVuKHNlbGYuX291dHB1dCkgPj0gc2l6ZToKLSAgICAgICAgICAgICAgICBpbmRleCA9IHNp
emUKLSAgICAgICAgICAgIGVsaWYgc2l6ZSA9PSAwOgotICAgICAgICAgICAgICAgIGluZGV4ID0g
c2VsZi5fb3V0cHV0LmZpbmQoJ1xuJykgKyAxCi0KLSAgICAgICAgICAgIGlmIGluZGV4ID4gMCBv
ciBzZWxmLmNyYXNoZWQgb3Igc2VsZi50aW1lZF9vdXQ6Ci0gICAgICAgICAgICAgICAgb3V0cHV0
ID0gc2VsZi5fb3V0cHV0WzA6aW5kZXhdCi0gICAgICAgICAgICAgICAgc2VsZi5fb3V0cHV0ID0g
c2VsZi5fb3V0cHV0W2luZGV4Ol0KLSAgICAgICAgICAgICAgICByZXR1cm4gb3V0cHV0Ci0KLSAg
ICAgICAgICAgICMgTm9wZSAtIHdhaXQgZm9yIG1vcmUgZGF0YS4KLSAgICAgICAgICAgIChyZWFk
X2Zkcywgd3JpdGVfZmRzLCBlcnJfZmRzKSA9IHNlbGVjdC5zZWxlY3Qoc2VsZWN0X2ZkcywgW10s
IHNlbGVjdF9mZHMsIGRlYWRsaW5lIC0gbm93KQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAg
ICAgICAgIGlmIG91dF9mZCBpbiByZWFkX2ZkczoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5f
b3V0cHV0ICs9IHNlbGYuX3Byb2Muc3Rkb3V0LnJlYWQoKQotICAgICAgICAgICAgICAgIGlmIGVy
cl9mZCBpbiByZWFkX2ZkczoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5lcnJvciArPSBzZWxm
Ll9wcm9jLnN0ZGVyci5yZWFkKCkKLSAgICAgICAgICAgIGV4Y2VwdCBJT0Vycm9yLCBlOgotICAg
ICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIHNlbGYuX3dhaXRfZm9yX2RhdGFfYW5kX3Vw
ZGF0ZV9idWZmZXJzKGRlYWRsaW5lIC0gdGltZS50aW1lKCkpCiAKICAgICBkZWYgc3RvcChzZWxm
KToKLSAgICAgICAgIiIiU3RvcCAoc2h1dCBkb3duKSB0aGUgc3VicHJvY2VzcyksIGlmIGl0IGlz
IHJ1bm5pbmcuIiIiCiAgICAgICAgIGlmIG5vdCBzZWxmLl9wcm9jOgogICAgICAgICAgICAgcmV0
dXJuCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvd2Via2l0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93
ZWJraXQucHkKaW5kZXggMzQ5ODA3ZmZhZDVjN2Y3NzkyZmY4NGZmNzEzNTU0ZGUxYWI2ZWE2ZC4u
MzU1MjY0N2JkNjZmMTUxMGUwNGJlNWNlNWFhNzcxYjczYjYzMmQzMiAxMDA2NDQKLS0tIGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHkKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHkKQEAgLTE3OSw3
ICsxNzksNyBAQCBjbGFzcyBXZWJLaXRQb3J0KFBvcnQpOgogICAgIGRlZiBfcmVhZF9pbWFnZV9k
aWZmKHNlbGYsIHNwKToKICAgICAgICAgdGltZW91dCA9IDIuMAogICAgICAgICBkZWFkbGluZSA9
IHRpbWUudGltZSgpICsgdGltZW91dAotICAgICAgICBvdXRwdXQgPSBzcC5yZWFkX2xpbmUodGlt
ZW91dCkKKyAgICAgICAgb3V0cHV0ID0gc3AucmVhZF9zdGRvdXRfbGluZSh0aW1lb3V0KQogICAg
ICAgICBvdXRwdXRfaW1hZ2UgPSAiIgogICAgICAgICBkaWZmX3BlcmNlbnQgPSAwCiAgICAgICAg
IHdoaWxlIG5vdCBzcC50aW1lZF9vdXQgYW5kIG5vdCBzcC5jcmFzaGVkIGFuZCBvdXRwdXQ6CkBA
IC0xODcsMTQgKzE4NywxNCBAQCBjbGFzcyBXZWJLaXRQb3J0KFBvcnQpOgogICAgICAgICAgICAg
ICAgIG0gPSByZS5tYXRjaCgnQ29udGVudC1MZW5ndGg6IChcZCspJywgb3V0cHV0KQogICAgICAg
ICAgICAgICAgIGNvbnRlbnRfbGVuZ3RoID0gaW50KG0uZ3JvdXAoMSkpCiAgICAgICAgICAgICAg
ICAgdGltZW91dCA9IGRlYWRsaW5lIC0gdGltZS50aW1lKCkKLSAgICAgICAgICAgICAgICBvdXRw
dXRfaW1hZ2UgPSBzcC5yZWFkKHRpbWVvdXQsIGNvbnRlbnRfbGVuZ3RoKQotICAgICAgICAgICAg
ICAgIG91dHB1dCA9IHNwLnJlYWRfbGluZSh0aW1lb3V0KQorICAgICAgICAgICAgICAgIG91dHB1
dF9pbWFnZSA9IHNwLnJlYWRfc3Rkb3V0KHRpbWVvdXQsIGNvbnRlbnRfbGVuZ3RoKQorICAgICAg
ICAgICAgICAgIG91dHB1dCA9IHNwLnJlYWRfc3Rkb3V0X2xpbmUodGltZW91dCkKICAgICAgICAg
ICAgICAgICBicmVhawogICAgICAgICAgICAgZWxpZiBvdXRwdXQuc3RhcnRzd2l0aCgnZGlmZicp
OgogICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAg
ICAgIHRpbWVvdXQgPSBkZWFkbGluZSAtIHRpbWUudGltZSgpCi0gICAgICAgICAgICAgICAgb3V0
cHV0ID0gc3AucmVhZF9saW5lKGRlYWRsaW5lKQorICAgICAgICAgICAgICAgIG91dHB1dCA9IHNw
LnJlYWRfc3Rkb3V0X2xpbmUoZGVhZGxpbmUpCiAKICAgICAgICAgaWYgc3AudGltZWRfb3V0Ogog
ICAgICAgICAgICAgX2xvZy5lcnJvcigiSW1hZ2VEaWZmIHRpbWVkIG91dCIpCkBAIC00NzAsMjYg
KzQ3MCwyMyBAQCBjbGFzcyBXZWJLaXREcml2ZXIoRHJpdmVyKToKICAgICAgICAgcmV0dXJuIGNv
bW1hbmQgKyAiXG4iCiAKICAgICBkZWYgX3JlYWRfZmlyc3RfYmxvY2soc2VsZiwgZGVhZGxpbmUp
OgotICAgICAgICAiIiJSZWFkcyBhIGJsb2NrIGZyb20gdGhlIHNlcnZlcl9wcm9jZXNzIGFuZCBy
ZXR1cm5zICh0ZXh0X2NvbnRlbnQsIGF1ZGlvX2NvbnRlbnQpLiIiIgotICAgICAgICBpZiBzZWxm
LmRldGVjdGVkX2NyYXNoKCk6Ci0gICAgICAgICAgICByZXR1cm4gKE5vbmUsIE5vbmUpCi0KKyAg
ICAgICAgIyByZXR1cm5zICh0ZXh0X2NvbnRlbnQsIGF1ZGlvX2NvbnRlbnQpCiAgICAgICAgIGJs
b2NrID0gc2VsZi5fcmVhZF9ibG9jayhkZWFkbGluZSkKICAgICAgICAgaWYgYmxvY2suY29udGVu
dF90eXBlID09ICdhdWRpby93YXYnOgogICAgICAgICAgICAgcmV0dXJuIChOb25lLCBibG9jay5k
ZWNvZGVkX2NvbnRlbnQpCiAgICAgICAgIHJldHVybiAoYmxvY2suZGVjb2RlZF9jb250ZW50LCBO
b25lKQogCiAgICAgZGVmIF9yZWFkX29wdGlvbmFsX2ltYWdlX2Jsb2NrKHNlbGYsIGRlYWRsaW5l
KToKLSAgICAgICAgIiIiUmVhZHMgYSBibG9jayBmcm9tIHRoZSBzZXJ2ZXJfcHJvY2VzcyBhbmQg
cmV0dXJucyAoaW1hZ2UsIGFjdHVhbF9pbWFnZV9oYXNoKS4iIiIKLSAgICAgICAgaWYgc2VsZi5k
ZXRlY3RlZF9jcmFzaCgpOgotICAgICAgICAgICAgcmV0dXJuIChOb25lLCBOb25lKQotCi0gICAg
ICAgIGJsb2NrID0gc2VsZi5fcmVhZF9ibG9jayhkZWFkbGluZSkKKyAgICAgICAgIyByZXR1cm5z
IChpbWFnZSwgYWN0dWFsX2ltYWdlX2hhc2gpCisgICAgICAgIGJsb2NrID0gc2VsZi5fcmVhZF9i
bG9jayhkZWFkbGluZSwgd2FpdF9mb3Jfc3RkZXJyX2VvZj1UcnVlKQogICAgICAgICBpZiBibG9j
ay5jb250ZW50IGFuZCBibG9jay5jb250ZW50X3R5cGUgPT0gJ2ltYWdlL3BuZyc6CiAgICAgICAg
ICAgICByZXR1cm4gKGJsb2NrLmRlY29kZWRfY29udGVudCwgYmxvY2suY29udGVudF9oYXNoKQog
ICAgICAgICByZXR1cm4gKE5vbmUsIGJsb2NrLmNvbnRlbnRfaGFzaCkKIAogICAgIGRlZiBydW5f
dGVzdChzZWxmLCBkcml2ZXJfaW5wdXQpOgorICAgICAgICBzZWxmLmVycm9yX2Zyb21fdGVzdCA9
IHN0cigpCisgICAgICAgIHNlbGYuZXJyX3NlZW5fZW9mID0gRmFsc2UKKwogICAgICAgICBjb21t
YW5kID0gc2VsZi5fY29tbWFuZF9mcm9tX2RyaXZlcl9pbnB1dChkcml2ZXJfaW5wdXQpCiAgICAg
ICAgIHN0YXJ0X3RpbWUgPSB0aW1lLnRpbWUoKQogICAgICAgICBkZWFkbGluZSA9IHRpbWUudGlt
ZSgpICsgaW50KGRyaXZlcl9pbnB1dC50aW1lb3V0KSAvIDEwMDAuMApAQCAtNDk4LDYxICs0OTUs
NzcgQEAgY2xhc3MgV2ViS2l0RHJpdmVyKERyaXZlcik6CiAgICAgICAgIHRleHQsIGF1ZGlvID0g
c2VsZi5fcmVhZF9maXJzdF9ibG9jayhkZWFkbGluZSkgICMgRmlyc3QgYmxvY2sgaXMgZWl0aGVy
IHRleHQgb3IgYXVkaW8KICAgICAgICAgaW1hZ2UsIGFjdHVhbF9pbWFnZV9oYXNoID0gc2VsZi5f
cmVhZF9vcHRpb25hbF9pbWFnZV9ibG9jayhkZWFkbGluZSkgICMgVGhlIHNlY29uZCAob3B0aW9u
YWwpIGJsb2NrIGlzIGltYWdlIGRhdGEuCiAKLSAgICAgICAgZXJyb3JfbGluZXMgPSBzZWxmLl9z
ZXJ2ZXJfcHJvY2Vzcy5lcnJvci5zcGxpdGxpbmVzKCkKLSAgICAgICAgIyBGSVhNRTogVGhpcyBp
cyBhIGhhY2suICBJdCBpcyB1bmNsZWFyIHdoeSBzb21ldGltZXMKLSAgICAgICAgIyB3ZSBkbyBu
b3QgZ2V0IGFueSBlcnJvciBsaW5lcyBmcm9tIHRoZSBzZXJ2ZXJfcHJvY2VzcwotICAgICAgICAj
IHByb2JhYmx5IHdlIGFyZSBub3QgZmx1c2hpbmcgc3RkZXJyLgotICAgICAgICBpZiBlcnJvcl9s
aW5lcyBhbmQgZXJyb3JfbGluZXNbLTFdID09ICIjRU9GIjoKLSAgICAgICAgICAgIGVycm9yX2xp
bmVzLnBvcCgpICAjIFJlbW92ZSB0aGUgZXhwZWN0ZWQgIiNFT0YiCi0gICAgICAgIGVycm9yID0g
IlxuIi5qb2luKGVycm9yX2xpbmVzKQotCi0gICAgICAgICMgRklYTUU6IFRoaXMgc2VlbXMgbGlr
ZSB0aGUgd3Jvbmcgc2VjdGlvbiBvZiBjb2RlIHRvIGJlIHJlc2V0dGluZyBfc2VydmVyX3Byb2Nl
c3MuZXJyb3IuCi0gICAgICAgIHNlbGYuX3NlcnZlcl9wcm9jZXNzLmVycm9yID0gIiIKKyAgICAg
ICAgIyBXZSBtYXkgbm90IGhhdmUgcmVhZCBhbGwgb3V0cHV0IChpZiBhbiBlcnJvciBvY2N1cmVk
KSwgYnV0IHdlIGNlcnRhaW5seSBzaG91bGQgaGF2ZSByZWFkIGFsbCBlcnJvciBieXRlcy4KKyAg
ICAgICAgYXNzZXJ0IG5vdCBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5fZXJyb3IsICJVbnByb2Nlc3Nl
ZCBlcnJvciBvdXRwdXQ6ICVzIiAlIHNlbGYuX3NlcnZlcl9wcm9jZXNzLl9lcnJvcgogICAgICAg
ICByZXR1cm4gRHJpdmVyT3V0cHV0KHRleHQsIGltYWdlLCBhY3R1YWxfaW1hZ2VfaGFzaCwgYXVk
aW8sCiAgICAgICAgICAgICBjcmFzaD1zZWxmLmRldGVjdGVkX2NyYXNoKCksIHRlc3RfdGltZT10
aW1lLnRpbWUoKSAtIHN0YXJ0X3RpbWUsCi0gICAgICAgICAgICB0aW1lb3V0PXNlbGYuX3NlcnZl
cl9wcm9jZXNzLnRpbWVkX291dCwgZXJyb3I9ZXJyb3IpCisgICAgICAgICAgICB0aW1lb3V0PXNl
bGYuX3NlcnZlcl9wcm9jZXNzLnRpbWVkX291dCwgZXJyb3I9c2VsZi5lcnJvcl9mcm9tX3Rlc3Qp
CisKKyAgICBkZWYgX3JlYWRfaGVhZGVyKHNlbGYsIGJsb2NrLCBsaW5lLCBoZWFkZXJfdGV4dCwg
aGVhZGVyX2F0dHIsIGhlYWRlcl9maWx0ZXI9Tm9uZSk6CisgICAgICAgIGlmIGxpbmUuc3RhcnRz
d2l0aChoZWFkZXJfdGV4dCkgYW5kIGdldGF0dHIoYmxvY2ssIGhlYWRlcl9hdHRyKSBpcyBOb25l
OgorICAgICAgICAgICAgdmFsdWUgPSBsaW5lLnNwbGl0KClbMV0KKyAgICAgICAgICAgIGlmIGhl
YWRlcl9maWx0ZXI6CisgICAgICAgICAgICAgICAgdmFsdWUgPSBoZWFkZXJfZmlsdGVyKHZhbHVl
KQorICAgICAgICAgICAgc2V0YXR0cihibG9jaywgaGVhZGVyX2F0dHIsIHZhbHVlKQorICAgICAg
ICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgX3Byb2Nl
c3Nfc3Rkb3V0X2xpbmUoc2VsZiwgYmxvY2ssIGxpbmUpOgorICAgICAgICBpZiAoc2VsZi5fcmVh
ZF9oZWFkZXIoYmxvY2ssIGxpbmUsICdDb250ZW50LVR5cGU6ICcsICdjb250ZW50X3R5cGUnKQor
ICAgICAgICAgICAgb3Igc2VsZi5fcmVhZF9oZWFkZXIoYmxvY2ssIGxpbmUsICdDb250ZW50LVRy
YW5zZmVyLUVuY29kaW5nOiAnLCAnZW5jb2RpbmcnKQorICAgICAgICAgICAgb3Igc2VsZi5fcmVh
ZF9oZWFkZXIoYmxvY2ssIGxpbmUsICdDb250ZW50LUxlbmd0aDogJywgJ19jb250ZW50X2xlbmd0
aCcsIGludCkKKyAgICAgICAgICAgIG9yIHNlbGYuX3JlYWRfaGVhZGVyKGJsb2NrLCBsaW5lLCAn
QWN0dWFsSGFzaDogJywgJ2NvbnRlbnRfaGFzaCcpKToKKyAgICAgICAgICAgIHJldHVybgorICAg
ICAgICAjIElmIHRoZSBsaW5lIHdhc24ndCBhIGhlYWRlciwgd2UganVzdCBhcHBlbmQgaXQgdG8g
dGhlIGNvbnRlbnQuCisgICAgICAgIGJsb2NrLmNvbnRlbnQgKz0gbGluZQorCisgICAgZGVmIF9z
dHJpcF9lb2Yoc2VsZiwgbGluZSk6CisgICAgICAgIGlmIGxpbmUgYW5kIGxpbmUuZW5kc3dpdGgo
IiNFT0ZcbiIpOgorICAgICAgICAgICAgcmV0dXJuIGxpbmVbOi01XSwgVHJ1ZQorICAgICAgICBy
ZXR1cm4gbGluZSwgRmFsc2UKKworICAgIGRlZiBfcmVhZF9ibG9jayhzZWxmLCBkZWFkbGluZSwg
d2FpdF9mb3Jfc3RkZXJyX2VvZj1GYWxzZSk6CisgICAgICAgIGJsb2NrID0gQ29udGVudEJsb2Nr
KCkKKyAgICAgICAgb3V0X3NlZW5fZW9mID0gRmFsc2UKKworICAgICAgICB3aGlsZSBUcnVlOgor
ICAgICAgICAgICAgaWYgb3V0X3NlZW5fZW9mIGFuZCAoc2VsZi5lcnJfc2Vlbl9lb2Ygb3Igbm90
IHdhaXRfZm9yX3N0ZGVycl9lb2YpOgorICAgICAgICAgICAgICAgIGJyZWFrCiAKLSAgICBMRU5H
VEhfSEVBREVSID0gJ0NvbnRlbnQtTGVuZ3RoOiAnCi0gICAgSEFTSF9IRUFERVIgPSAnQWN0dWFs
SGFzaDogJwotICAgIFRZUEVfSEVBREVSID0gJ0NvbnRlbnQtVHlwZTogJwotICAgIEVOQ09ESU5H
X0hFQURFUiA9ICdDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiAnCisgICAgICAgICAgICBpZiBz
ZWxmLl9zZXJ2ZXJfcHJvY2Vzcy50aW1lZF9vdXQgb3Igc2VsZi5kZXRlY3RlZF9jcmFzaCgpOgor
ICAgICAgICAgICAgICAgIGJyZWFrCiAKLSAgICBkZWYgX3JlYWRfbGluZV91bnRpbChzZWxmLCBk
ZWFkbGluZSk6Ci0gICAgICAgIHJldHVybiBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5yZWFkX2xpbmUo
ZGVhZGxpbmUgLSB0aW1lLnRpbWUoKSkKKyAgICAgICAgICAgIHRpbWVvdXQgPSBkZWFkbGluZSAt
IHRpbWUudGltZSgpCiAKLSAgICBkZWYgX3JlYWRfYmxvY2soc2VsZiwgZGVhZGxpbmUpOgotICAg
ICAgICBjb250ZW50X3R5cGUgPSBOb25lCi0gICAgICAgIGVuY29kaW5nID0gTm9uZQotICAgICAg
ICBjb250ZW50X2hhc2ggPSBOb25lCi0gICAgICAgIGNvbnRlbnRfbGVuZ3RoID0gTm9uZQorICAg
ICAgICAgICAgaWYgc2VsZi5lcnJfc2Vlbl9lb2Y6CisgICAgICAgICAgICAgICAgb3V0X2xpbmUg
PSBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5yZWFkX3N0ZG91dF9saW5lKHRpbWVvdXQpCisgICAgICAg
ICAgICAgICAgZXJyX2xpbmUgPSBOb25lCisgICAgICAgICAgICBlbGlmIG91dF9zZWVuX2VvZjoK
KyAgICAgICAgICAgICAgICBvdXRfbGluZSA9IE5vbmUKKyAgICAgICAgICAgICAgICBlcnJfbGlu
ZSA9IHNlbGYuX3NlcnZlcl9wcm9jZXNzLnJlYWRfc3RkZXJyX2xpbmUodGltZW91dCkKKyAgICAg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgb3V0X2xpbmUsIGVycl9saW5lID0gc2VsZi5f
c2VydmVyX3Byb2Nlc3MucmVhZF9laXRoZXJfc3Rkb3V0X29yX3N0ZGVycl9saW5lKHRpbWVvdXQp
CiAKLSAgICAgICAgIyBDb250ZW50IGlzIHRyZWF0ZWQgYXMgYmluYXJ5IGRhdGEgZXZlbiB0aG91
Z2ggdGhlIHRleHQgb3V0cHV0IGlzIHVzdWFsbHkgVVRGLTguCi0gICAgICAgIGNvbnRlbnQgPSBz
dHIoKSAgIyBGSVhNRTogU2hvdWxkIGJlIGJ5dGVhcnJheSgpIG9uY2Ugd2UgcmVxdWlyZSBQeXRo
b24gMi42LgotICAgICAgICBsaW5lID0gc2VsZi5fcmVhZF9saW5lX3VudGlsKGRlYWRsaW5lKQot
ICAgICAgICBlb2YgPSBGYWxzZQotICAgICAgICB3aGlsZSAobm90IHNlbGYuX3NlcnZlcl9wcm9j
ZXNzLnRpbWVkX291dCBhbmQgbm90IHNlbGYuZGV0ZWN0ZWRfY3Jhc2goKSBhbmQgbm90IGVvZik6
Ci0gICAgICAgICAgICBjaG9tcGVkX2xpbmUgPSBsaW5lLnJzdHJpcCgpICAjIEZJWE1FOiBUaGlz
IHdpbGwgcmVtb3ZlIHRyYWlsaW5nIGxpbmVzIGZyb20gdGVzdCBvdXRwdXQuICBJcyB0aGF0IHJp
Z2h0PwotICAgICAgICAgICAgaWYgY2hvbXBlZF9saW5lLmVuZHN3aXRoKCIjRU9GIik6Ci0gICAg
ICAgICAgICAgICAgZW9mID0gVHJ1ZQotICAgICAgICAgICAgICAgIGxpbmUgPSBjaG9tcGVkX2xp
bmVbOi00XQotCi0gICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoc2VsZi5UWVBFX0hFQURF
UikgYW5kIGNvbnRlbnRfdHlwZSBpcyBOb25lOgotICAgICAgICAgICAgICAgIGNvbnRlbnRfdHlw
ZSA9IGxpbmUuc3BsaXQoKVsxXQotICAgICAgICAgICAgZWxpZiBsaW5lLnN0YXJ0c3dpdGgoc2Vs
Zi5FTkNPRElOR19IRUFERVIpIGFuZCBlbmNvZGluZyBpcyBOb25lOgotICAgICAgICAgICAgICAg
IGVuY29kaW5nID0gbGluZS5zcGxpdCgpWzFdCi0gICAgICAgICAgICBlbGlmIGxpbmUuc3RhcnRz
d2l0aChzZWxmLkxFTkdUSF9IRUFERVIpIGFuZCBjb250ZW50X2xlbmd0aCBpcyBOb25lOgotICAg
ICAgICAgICAgICAgIGNvbnRlbnRfbGVuZ3RoID0gaW50KGxpbmVbbGVuKHNlbGYuTEVOR1RIX0hF
QURFUik6XSkKLSAgICAgICAgICAgICAgICAjIEZJWE1FOiBJbiByZWFsIEhUVFAgdGhlcmUgc2hv
dWxkIHByb2JhYmx5IGJlIGEgYmxhbmsgbGluZQotICAgICAgICAgICAgICAgICMgYWZ0ZXIgaGVh
ZGVycyBiZWZvcmUgY29udGVudCwgYnV0IERSVCBkb2Vzbid0IHdyaXRlIG9uZS4KLSAgICAgICAg
ICAgICAgICBjb250ZW50ID0gc2VsZi5fc2VydmVyX3Byb2Nlc3MucmVhZChkZWFkbGluZSAtIHRp
bWUudGltZSgpLCBjb250ZW50X2xlbmd0aCkKLSAgICAgICAgICAgIGVsaWYgbGluZS5zdGFydHN3
aXRoKHNlbGYuSEFTSF9IRUFERVIpOgotICAgICAgICAgICAgICAgIGNvbnRlbnRfaGFzaCA9IGxp
bmUuc3BsaXQoKVsxXQotICAgICAgICAgICAgZWxpZiBsaW5lOgotICAgICAgICAgICAgICAgIGNv
bnRlbnQgKz0gbGluZQotICAgICAgICAgICAgaWYgZW9mOgotICAgICAgICAgICAgICAgIGJyZWFr
Ci0gICAgICAgICAgICBsaW5lID0gc2VsZi5fcmVhZF9saW5lX3VudGlsKGRlYWRsaW5lKQotICAg
ICAgICByZXR1cm4gQ29udGVudEJsb2NrKGNvbnRlbnRfdHlwZSwgZW5jb2RpbmcsIGNvbnRlbnRf
aGFzaCwgY29udGVudCkKKyAgICAgICAgICAgIGlmIG91dF9saW5lOgorICAgICAgICAgICAgICAg
IGFzc2VydCBub3Qgb3V0X3NlZW5fZW9mCisgICAgICAgICAgICAgICAgb3V0X2xpbmUsIG91dF9z
ZWVuX2VvZiA9IHNlbGYuX3N0cmlwX2VvZihvdXRfbGluZSkKKyAgICAgICAgICAgIGlmIGVycl9s
aW5lOgorICAgICAgICAgICAgICAgIGFzc2VydCBub3Qgc2VsZi5lcnJfc2Vlbl9lb2YKKyAgICAg
ICAgICAgICAgICBlcnJfbGluZSwgc2VsZi5lcnJfc2Vlbl9lb2YgPSBzZWxmLl9zdHJpcF9lb2Yo
ZXJyX2xpbmUpCisKKyAgICAgICAgICAgIGlmIG91dF9saW5lOgorICAgICAgICAgICAgICAgIHNl
bGYuX3Byb2Nlc3Nfc3Rkb3V0X2xpbmUoYmxvY2ssIG91dF9saW5lKQorICAgICAgICAgICAgICAg
ICMgRklYTUU6IFVubGlrZSBIVFRQLCBEUlQgZHVtcHMgdGhlIGNvbnRlbnQgcmlnaHQgYWZ0ZXIg
cHJpbnRpbmcgYSBDb250ZW50LUxlbmd0aCBoZWFkZXIuCisgICAgICAgICAgICAgICAgIyBEb24n
dCB3YWl0IHVudGlsIHdlJ3JlIGRvbmUgd2l0aCBoZWFkZXJzLCBqdXN0IHJlYWQgdGhlIGJpbmFy
eSBibG9iIHJpZ2h0IG5vdy4KKyAgICAgICAgICAgICAgICBpZiBibG9jay5fY29udGVudF9sZW5n
dGggaXMgbm90IE5vbmUgYW5kIG5vdCBibG9jay5jb250ZW50OgorICAgICAgICAgICAgICAgICAg
ICBibG9jay5jb250ZW50ID0gc2VsZi5fc2VydmVyX3Byb2Nlc3MucmVhZF9zdGRvdXQoZGVhZGxp
bmUgLSB0aW1lLnRpbWUoKSwgYmxvY2suX2NvbnRlbnRfbGVuZ3RoKQorCisgICAgICAgICAgICAj
IEZJWE1FOiBOZWVkIHRvIGhhbmRsZSAiI0NSQVNIRUQgLSBXZWJQcm9jZXNzIiBhbmQgIiNDUkFT
SEVEIi4KKyAgICAgICAgICAgIGlmIGVycl9saW5lOgorICAgICAgICAgICAgICAgIHNlbGYuZXJy
b3JfZnJvbV90ZXN0ICs9IGVycl9saW5lCisKKyAgICAgICAgYmxvY2suZGVjb2RlX2NvbnRlbnQo
KQorICAgICAgICByZXR1cm4gYmxvY2sKIAogICAgIGRlZiBzdG9wKHNlbGYpOgogICAgICAgICBp
ZiBzZWxmLl9zZXJ2ZXJfcHJvY2VzczoKQEAgLTU2MSwxMiArNTc0LDE3IEBAIGNsYXNzIFdlYktp
dERyaXZlcihEcml2ZXIpOgogCiAKIGNsYXNzIENvbnRlbnRCbG9jayhvYmplY3QpOgotICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBjb250ZW50X3R5cGUsIGVuY29kaW5nLCBjb250ZW50X2hhc2gsIGNv
bnRlbnQpOgotICAgICAgICBzZWxmLmNvbnRlbnRfdHlwZSA9IGNvbnRlbnRfdHlwZQotICAgICAg
ICBzZWxmLmVuY29kaW5nID0gZW5jb2RpbmcKLSAgICAgICAgc2VsZi5jb250ZW50X2hhc2ggPSBj
b250ZW50X2hhc2gKLSAgICAgICAgc2VsZi5jb250ZW50ID0gY29udGVudAorICAgIGRlZiBfX2lu
aXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi5jb250ZW50X3R5cGUgPSBOb25lCisgICAgICAgIHNl
bGYuZW5jb2RpbmcgPSBOb25lCisgICAgICAgIHNlbGYuY29udGVudF9oYXNoID0gTm9uZQorICAg
ICAgICBzZWxmLl9jb250ZW50X2xlbmd0aCA9IE5vbmUKKyAgICAgICAgIyBDb250ZW50IGlzIHRy
ZWF0ZWQgYXMgYmluYXJ5IGRhdGEgZXZlbiB0aG91Z2ggdGhlIHRleHQgb3V0cHV0IGlzIHVzdWFs
bHkgVVRGLTguCisgICAgICAgIHNlbGYuY29udGVudCA9IHN0cigpICAjIEZJWE1FOiBTaG91bGQg
YmUgYnl0ZWFycmF5KCkgb25jZSB3ZSByZXF1aXJlIFB5dGhvbiAyLjYuCisgICAgICAgIHNlbGYu
ZGVjb2RlZF9jb250ZW50ID0gTm9uZQorCisgICAgZGVmIGRlY29kZV9jb250ZW50KHNlbGYpOgog
ICAgICAgICBpZiBzZWxmLmVuY29kaW5nID09ICdiYXNlNjQnOgotICAgICAgICAgICAgc2VsZi5k
ZWNvZGVkX2NvbnRlbnQgPSBiYXNlNjQuYjY0ZGVjb2RlKGNvbnRlbnQpCisgICAgICAgICAgICBz
ZWxmLmRlY29kZWRfY29udGVudCA9IGJhc2U2NC5iNjRkZWNvZGUoc2VsZi5jb250ZW50KQogICAg
ICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5kZWNvZGVkX2NvbnRlbnQgPSBjb250ZW50Cisg
ICAgICAgICAgICBzZWxmLmRlY29kZWRfY29udGVudCA9IHNlbGYuY29udGVudAo=
</data>
<flag name="commit-queue"
          id="109562"
          type_id="3"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>