<?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>63683</bug_id>
          
          <creation_ts>2011-06-29 20:37:52 -0700</creation_ts>
          <short_desc>Teach new-run-webkit-tests about #CRASHED and #CRASHED - WebProcess</short_desc>
          <delta_ts>2022-02-27 23:46:47 -0800</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>63743</dependson>
    
    <dependson>70435</dependson>
          <blocked>56729</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>andersca</cc>
    
    <cc>aroben</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>430140</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-29 20:37:52 -0700</bug_when>
    <thetext>Teach new-run-webkit-tests about #CRASHED and #CRASHED - WebProcess</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>430141</commentid>
    <comment_count>1</comment_count>
      <attachid>99226</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-29 20:38:22 -0700</bug_when>
    <thetext>Created attachment 99226
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>430163</commentid>
    <comment_count>2</comment_count>
      <attachid>99234</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-29 21:42:34 -0700</bug_when>
    <thetext>Created attachment 99234
works, but is inelegant</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>430172</commentid>
    <comment_count>3</comment_count>
      <attachid>99234</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-29 22:14:45 -0700</bug_when>
    <thetext>Comment on attachment 99234
works, but is inelegant

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

&gt; Tools/Scripts/webkitpy/common/net/layouttestresults.py:93
&gt; -            return [test_failures.FailureCrash()]
&gt; +            return [test_failures.FailureCrash(process_name=&quot;WebProcess&quot;)]

You should create a new failure type rather than adding state to this one.

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_failures.py:107
&gt; -    def should_kill_dump_render_tree(self):
&gt; -        &quot;&quot;&quot;Returns True if we should kill DumpRenderTree before the next test.&quot;&quot;&quot;
&gt; +    def driver_needs_restart(self):
&gt; +        &quot;&quot;&quot;Returns True if we should kill DumpRenderTree/WebKitTestRunner before the next test.&quot;&quot;&quot;

This should be done in a separate patch.

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_failures_unittest.py:-65
&gt; -    def test_crash(self):
&gt; -        FailureCrash()
&gt; -
&gt; -    def test_hash_incorrect(self):
&gt; -        FailureImageHashIncorrect()
&gt; -
&gt; -    def test_missing(self):
&gt; -        FailureMissingResult()
&gt; -
&gt; -    def test_missing_image(self):
&gt; -        FailureMissingImage()
&gt; -
&gt; -    def test_missing_image_hash(self):
&gt; -        FailureMissingImageHash()
&gt; -
&gt; -    def test_timeout(self):
&gt; -        FailureTimeout()
&gt; -

This should be done in a separate patch.

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_result_writer.py:72
&gt; -            if failure.is_reftest:
&gt; -                writer.write_crash_report(expected_driver_output.error)
&gt; -            else:
&gt; -                writer.write_crash_report(driver_output.error)
&gt; +            writer.write_crash_report(driver_output)

It&apos;s unclear whether this part is correct.

&gt; Tools/Scripts/webkitpy/layout_tests/port/webkit.py:492
&gt; +    def _check_for_driver_crash(self):

You should make these changes separately from all the rest of the plumbing so you can make sure the harness is robust to all these different cases.  Plumbing the information out is a separate problem.

&gt; Tools/Scripts/webkitpy/layout_tests/port/webkit.py:497
&gt; +        if re.search(r&quot;#CRASHED\n&quot;, self._server_process.error, re.MULTILINE):

Obviously we don&apos;t want to use regular expressions.  If we need to do a search, we can just do a substring match since the pattern is trivial.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>430590</commentid>
    <comment_count>4</comment_count>
      <attachid>99234</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-30 11:49:39 -0700</bug_when>
    <thetext>Comment on attachment 99234
works, but is inelegant

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

&gt;&gt; Tools/Scripts/webkitpy/common/net/layouttestresults.py:93
&gt;&gt; +            return [test_failures.FailureCrash(process_name=&quot;WebProcess&quot;)]
&gt; 
&gt; You should create a new failure type rather than adding state to this one.

OK.  We&apos;ll end up needing 3 failures types then.  The existing one for DRT, one for WebTestRunner and one for WebProcess.

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_failures.py:107
&gt;&gt; +        &quot;&quot;&quot;Returns True if we should kill DumpRenderTree/WebKitTestRunner before the next test.&quot;&quot;&quot;
&gt; 
&gt; This should be done in a separate patch.

Will do.

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_failures_unittest.py:-65
&gt;&gt; -
&gt; 
&gt; This should be done in a separate patch.

Done: https://bugs.webkit.org/show_bug.cgi?id=63742

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_result_writer.py:72
&gt;&gt; +            writer.write_crash_report(driver_output)
&gt; 
&gt; It&apos;s unclear whether this part is correct.

I guess I don&apos;t understand why crashing-ref-tests make any sense.  Given the other broken ref_test code I&apos;ve seen, it seems safer to remove the code rather than try and intuit what it&apos;s supposed to do.

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/port/webkit.py:497
&gt;&gt; +        if re.search(r&quot;#CRASHED\n&quot;, self._server_process.error, re.MULTILINE):
&gt; 
&gt; Obviously we don&apos;t want to use regular expressions.  If we need to do a search, we can just do a substring match since the pattern is trivial.

Agreed, this is the inelegant part of the patch.  Things get confusing because DRT expects you to read stderr one line at a time, and we don&apos;t.  We process it all in big gobs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>430603</commentid>
    <comment_count>5</comment_count>
      <attachid>99234</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-06-30 12:03:59 -0700</bug_when>
    <thetext>Comment on attachment 99234
works, but is inelegant

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

&gt;&gt;&gt; Tools/Scripts/webkitpy/common/net/layouttestresults.py:93
&gt;&gt;&gt; +            return [test_failures.FailureCrash(process_name=&quot;WebProcess&quot;)]
&gt;&gt; 
&gt;&gt; You should create a new failure type rather than adding state to this one.
&gt; 
&gt; OK.  We&apos;ll end up needing 3 failures types then.  The existing one for DRT, one for WebTestRunner and one for WebProcess.

Do we really need three? Is there utility in distinguishing a WebTestRunner crash from a WebProcess crash?

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/manager.py:172
&gt; +            # FIXME: This is broken.  I expect this meant to read &quot;hasattr(&apos;is_reftest&apos;, failure) and failure.is_reftest&quot;.

Wouldn&apos;t it have been simpler to just change the line of code, rather than adding the fixme? I understand that it&apos;s a semi-unrelated change, but there were lots of less-related changes in this patch, and what are the odds that you&apos;re going to remember to come back and fix this?

&gt;&gt;&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_result_writer.py:72
&gt;&gt;&gt; +            writer.write_crash_report(driver_output)
&gt;&gt; 
&gt;&gt; It&apos;s unclear whether this part is correct.
&gt; 
&gt; I guess I don&apos;t understand why crashing-ref-tests make any sense.  Given the other broken ref_test code I&apos;ve seen, it seems safer to remove the code rather than try and intuit what it&apos;s supposed to do.

I&apos;m not sure what you mean by &quot;make any sense&quot;. It&apos;s plausible that the driver will crash running the reference just as easily on the test. 

It seems like the question is, what to do if the reference fails or times out? It seems like there&apos;s two options. One is to ensure that we always run the reference *as a test*, so that it would be reported separately. The other would be to roll the reference failure into the test failure. I think the latter path makes more sense (and is what we&apos;re doing here), but the crash report probably needs to indicate that this was from the reference and not the test. (cf. below). Given that, I would either leave the code as is, or add the parameter.

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_result_writer.py:168
&gt; +    def write_crash_report(self, driver_output):

Add an is_reftest param here? (see above)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487020</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-10-19 14:40:44 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 99234 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=99234&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Tools/Scripts/webkitpy/common/net/layouttestresults.py:93
&gt; &gt;&gt;&gt; +            return [test_failures.FailureCrash(process_name=&quot;WebProcess&quot;)]
&gt; &gt;&gt; 
&gt; &gt;&gt; You should create a new failure type rather than adding state to this one.
&gt; &gt; 
&gt; &gt; OK.  We&apos;ll end up needing 3 failures types then.  The existing one for DRT, one for WebTestRunner and one for WebProcess.
&gt; 
&gt; Do we really need three? Is there utility in distinguishing a WebTestRunner crash from a WebProcess crash?

I believe so.  Changes what process we sample.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487068</commentid>
    <comment_count>7</comment_count>
      <attachid>111684</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-10-19 15:42:32 -0700</bug_when>
    <thetext>Created attachment 111684
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487073</commentid>
    <comment_count>8</comment_count>
      <attachid>111684</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-10-19 15:48:48 -0700</bug_when>
    <thetext>Comment on attachment 111684
Patch

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

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_result_writer.py:66
&gt; -            if failure.is_reftest:
&gt; -                writer.write_crash_report(expected_driver_output.error)
&gt; -            else:
&gt; -                writer.write_crash_report(driver_output.error)
&gt; +            writer.write_crash_report(driver_output)

This seems unrelated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487089</commentid>
    <comment_count>9</comment_count>
      <attachid>111688</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-10-19 16:05:30 -0700</bug_when>
    <thetext>Created attachment 111688
Remove unrelated chnage</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487300</commentid>
    <comment_count>10</comment_count>
      <attachid>111688</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-10-19 21:13:34 -0700</bug_when>
    <thetext>Comment on attachment 111688
Remove unrelated chnage

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

&gt; Tools/Scripts/webkitpy/common/net/layouttestresults.py:93
&gt; -            return [test_failures.FailureCrash()]
&gt; +            return [test_failures.FailureCrash(process_name=&quot;WebProcess&quot;)]

This isn&apos;t really right, but the right way to fix this is to use the JSON representation throughout the system.

&gt; Tools/Scripts/webkitpy/layout_tests/port/driver.py:44
&gt; +    def __init__(self, text, image, image_hash, audio,
&gt; +        crash=False, test_time=0, timeout=False, error=&apos;&apos;,
&gt; +        crashed_process_name=None):

This intent is confusing.

&gt; Tools/Scripts/webkitpy/layout_tests/port/webkit.py:477
&gt; +        elif error_line == &quot;#CRASHED - WebProcess\n&quot;:

What about the plugin process?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487301</commentid>
    <comment_count>11</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-10-19 21:15:20 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 111688 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=111688&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/common/net/layouttestresults.py:93
&gt; &gt; -            return [test_failures.FailureCrash()]
&gt; &gt; +            return [test_failures.FailureCrash(process_name=&quot;WebProcess&quot;)]
&gt; 
&gt; This isn&apos;t really right, but the right way to fix this is to use the JSON representation throughout the system.

Yeah. :(

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/driver.py:44
&gt; &gt; +    def __init__(self, text, image, image_hash, audio,
&gt; &gt; +        crash=False, test_time=0, timeout=False, error=&apos;&apos;,
&gt; &gt; +        crashed_process_name=None):
&gt; 
&gt; This intent is confusing.

Fixed.

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/webkit.py:477
&gt; &gt; +        elif error_line == &quot;#CRASHED - WebProcess\n&quot;:
&gt; 
&gt; What about the plugin process?

looks like WebKitTestRunner doesn&apos;t know how to tell us when the plugin process crashed yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487304</commentid>
    <comment_count>12</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-10-19 21:20:09 -0700</bug_when>
    <thetext>Sam, Anders:  do you know if PluginProcess crashes show up as &quot;WebProcess&quot; crashes from WebKitTestRunner?  It would be very easy to add PluginProcess crash reporting to NRWT, if WKTR supported detecting it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487306</commentid>
    <comment_count>13</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-10-19 21:21:33 -0700</bug_when>
    <thetext>Committed r97931: &lt;http://trac.webkit.org/changeset/97931&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99226</attachid>
            <date>2011-06-29 20:38:22 -0700</date>
            <delta_ts>2011-06-29 21:42:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-63683-20110629203821.patch</filename>
            <type>text/plain</type>
            <size>22188</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTAwNzgKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5NDQ0NDZkNzVlODQ4Nzk0YTJhMzRmZDljYzRlNjZhMGI2
YTZkMTczLi43YTliNjM2ZjRiZTczY2FkZjM4ZDE3MmE2Zjk2NDg4MmVkMjc1ZDUxIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjUg
QEAKIDIwMTEtMDYtMjkgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlYWNoIG5ldy1ydW4td2Vi
a2l0LXRlc3RzIGFib3V0ICNDUkFTSEVEIGFuZCAjQ1JBU0hFRCAtIFdlYlByb2Nlc3MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYzNjgzCisKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvbGF5b3V0dGVzdHJlc3VsdHMucHk6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L3Jlc3VsdHNqc29ucGFyc2VyLnB5
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdl
L21hbmFnZXIucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5
b3V0X3BhY2thZ2Uvc2luZ2xlX3Rlc3RfcnVubmVyLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZmFpbHVyZXMucHk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9m
YWlsdXJlc191bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X3Jlc3VsdF93cml0ZXIucHk6CisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2Uvd29ya2VyLnB5OgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weToKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3NlcnZlcl9wcm9jZXNzLnB5
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVz
dHNfaW50ZWdyYXRpb250ZXN0LnB5OgorCisyMDExLTA2LTI5ICBFcmljIFNlaWRlbCAgPGVyaWNA
d2Via2l0Lm9yZz4KKwogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgogCiAgICAgICAg
IFJlZmFjdG9yIFdlYktpdERyaXZlci5ydW5fdGVzdCBpbnRvIHNtYWxsZXIgcGllY2VzCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvbGF5b3V0dGVzdHJlc3Vs
dHMucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvbGF5b3V0dGVzdHJlc3Vs
dHMucHkKaW5kZXggMWNhOGJiM2Q2N2MxOWU2NzhlNjJlN2E3MjUyNjFkMDBmODEwYTFhNi4uNDVm
MWI0Zjk5M2U3NWVmODcxNTE4MDIwOWY2ZjBiNjM0ZTI5YWZjYiAxMDA2NDQKLS0tIGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2xheW91dHRlc3RyZXN1bHRzLnB5CisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9sYXlvdXR0ZXN0cmVzdWx0cy5weQpAQCAt
OTAsNyArOTAsNyBAQCBjbGFzcyBPUldUUmVzdWx0c0hUTUxQYXJzZXIob2JqZWN0KToKICAgICAg
ICAgaWYgdGFibGVfdGl0bGUgPT0gY2xzLmNyYXNoX2tleToKICAgICAgICAgICAgIHJldHVybiBb
dGVzdF9mYWlsdXJlcy5GYWlsdXJlQ3Jhc2goKV0KICAgICAgICAgaWYgdGFibGVfdGl0bGUgPT0g
Y2xzLndlYnByb2Nlc3NfY3Jhc2hfa2V5OgotICAgICAgICAgICAgcmV0dXJuIFt0ZXN0X2ZhaWx1
cmVzLkZhaWx1cmVDcmFzaCgpXQorICAgICAgICAgICAgcmV0dXJuIFt0ZXN0X2ZhaWx1cmVzLkZh
aWx1cmVDcmFzaChwcm9jZXNzX25hbWU9IldlYlByb2Nlc3MiKV0KICAgICAgICAgaWYgdGFibGVf
dGl0bGUgPT0gY2xzLnRpbWVvdXRfa2V5OgogICAgICAgICAgICAgcmV0dXJuIFt0ZXN0X2ZhaWx1
cmVzLkZhaWx1cmVUaW1lb3V0KCldCiAgICAgICAgIGlmIHRhYmxlX3RpdGxlID09IGNscy5taXNz
aW5nX2tleToKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9y
ZXN1bHRzanNvbnBhcnNlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9y
ZXN1bHRzanNvbnBhcnNlci5weQppbmRleCBiNWQ3ODAwMTM4NThjMGRmYzQ1MDI0YTViYzczYjVj
ZmI2ZmQ4ZWE2Li4wN2M1OWViODFkYWIzNTM4ZWI5MzhiMTBjNDRkZDlkMWZhYzY0ZTIwIDEwMDY0
NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvcmVzdWx0c2pzb25wYXJz
ZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L3Jlc3VsdHNqc29u
cGFyc2VyLnB5CkBAIC04OSw2ICs4OSw3IEBAIGNsYXNzIEpTT05UZXN0UmVzdWx0KG9iamVjdCk6
CiAgICAgICAgIGVsaWYgYWN0dWFsID09IHRlc3RfZXhwZWN0YXRpb25zLlRJTUVPVVQ6CiAgICAg
ICAgICAgICByZXR1cm4gW3Rlc3RfZmFpbHVyZXMuRmFpbHVyZVRpbWVvdXQoKV0KICAgICAgICAg
ZWxpZiBhY3R1YWwgPT0gdGVzdF9leHBlY3RhdGlvbnMuQ1JBU0g6CisgICAgICAgICAgICAjIE5P
VEU6IFdlIGRvbid0IGtub3cgd2hhdCBwcm9jZXNzIGNyYXNoZWQgZnJvbSB0aGUganNvbiwganVz
dCB0aGF0IGEgcHJvY2VzcyBjcmFzaGVkLgogICAgICAgICAgICAgcmV0dXJuIFt0ZXN0X2ZhaWx1
cmVzLkZhaWx1cmVDcmFzaCgpXQogICAgICAgICBlbGlmIGFjdHVhbCA9PSB0ZXN0X2V4cGVjdGF0
aW9ucy5NSVNTSU5HOgogICAgICAgICAgICAgcmV0dXJuIFt0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVN
aXNzaW5nUmVzdWx0KCksIHRlc3RfZmFpbHVyZXMuRmFpbHVyZU1pc3NpbmdJbWFnZUhhc2goKSwg
dGVzdF9mYWlsdXJlcy5GYWlsdXJlTWlzc2luZ0ltYWdlKCldCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9tYW5hZ2VyLnB5IGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWFuYWdl
ci5weQppbmRleCA5NjhjMGQ3MTVkZTAwNmExYzJkY2Q2OWZkYmExYzRlYjMwZmNkMzk1Li5iMGMy
M2Y1YWM4NWY2ODkwYmYxMGU4M2JlN2I4ODA2MzExMGViN2ZjIDEwMDY0NAotLS0gYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9tYW5hZ2VyLnB5Cisr
KyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL21h
bmFnZXIucHkKQEAgLTE2OCwxMCArMTY4LDE2IEBAIGRlZiBzdW1tYXJpemVfcmVzdWx0cyhwb3J0
X29iaiwgZXhwZWN0YXRpb25zLCByZXN1bHRfc3VtbWFyeSwgcmV0cnlfc3VtbWFyeSwgdGVzCiAg
ICAgICAgIGlmIHRlc3RfZmFpbHVyZXMuRmFpbHVyZVJlZnRlc3RNaXNtYXRjaCBpbiBmYWlsdXJl
X3R5cGVzOgogICAgICAgICAgICAgdGVzdF9kaWN0Wydpc19yZWZ0ZXN0J10gPSBUcnVlCiAKLSAg
ICAgICAgZm9yIGYgaW4gcmVzdWx0LmZhaWx1cmVzOgorICAgICAgICBmb3IgZmFpbHVyZSBpbiBy
ZXN1bHQuZmFpbHVyZXM6CisgICAgICAgICAgICAjIEZJWE1FOiBUaGlzIGlzIGJyb2tlbi4gIEkg
ZXhwZWN0IHRoaXMgbWVhbnQgdG8gcmVhZCAiaGFzYXR0cignaXNfcmVmdGVzdCcsIGZhaWx1cmUp
IGFuZCBmYWlsdXJlLmlzX3JlZnRlc3QiLgogICAgICAgICAgICAgaWYgJ2lzX3JlZnRlc3QnIGlu
IHJlc3VsdC5mYWlsdXJlczoKICAgICAgICAgICAgICAgICB0ZXN0X2RpY3RbJ2lzX3JlZnRlc3Qn
XSA9IFRydWUKIAorICAgICAgICAgICAgaWYgdHlwZShmYWlsdXJlKSA9PSB0ZXN0X2ZhaWx1cmVz
LkZhaWx1cmVDcmFzaDoKKyAgICAgICAgICAgICAgICBhc3NlcnQgJ2NyYXNoZWRfcHJvY2Vzcycg
bm90IGluIHRlc3RfZGljdCwgIkZhaWx1cmVzICglcykgY29udGFpbnMgbW9yZSB0aGFuIG9uZSBG
YWlsdXJlQ3Jhc2giICUgZmFpbHVyZXMKKyAgICAgICAgICAgICAgICAjIFdlIGNvdWxkIHByaW50
IHRoaXMgb25seSBpZiBmYWlsdXJlLmNyYXNoZWRfcHJvY2Vzc19uYW1lKCkgIT0gcG9ydF9vYmou
ZHJpdmVyX25hbWUoKSBpZiBpdCBibG9hdHMgcmVzdWx0cy5qc29uIHRvbyBtdWNoLgorICAgICAg
ICAgICAgICAgIHRlc3RfZGljdFsnY3Jhc2hlZF9wcm9jZXNzJ10gPSBmYWlsdXJlLmNyYXNoZWRf
cHJvY2Vzc19uYW1lKCkKKwogICAgICAgICBpZiB0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVSZWZ0ZXN0
TWlzbWF0Y2hEaWROb3RPY2N1ciBpbiBmYWlsdXJlX3R5cGVzOgogICAgICAgICAgICAgdGVzdF9k
aWN0Wydpc19taXNtYXRjaF9yZWZ0ZXN0J10gPSBUcnVlCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3NpbmdsZV90ZXN0X3J1
bm5lci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNr
YWdlL3NpbmdsZV90ZXN0X3J1bm5lci5weQppbmRleCBjMzQxZjVhOTFlYjJjMDdhYjliYmU3NDNk
NTVjNWRkZjU4ZDVjZGE1Li5hZTBhODAzNzA0ZDU0MzE0NzhhNGE2OWE3N2JkYjEwZTNlMjVmYTRi
IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRf
cGFja2FnZS9zaW5nbGVfdGVzdF9ydW5uZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2Uvc2luZ2xlX3Rlc3RfcnVubmVyLnB5CkBAIC0y
MDUsOCArMjA1LDkgQEAgY2xhc3MgU2luZ2xlVGVzdFJ1bm5lcjoKICAgICAgICAgIiIiCiAgICAg
ICAgIGZhaWx1cmVzID0gW10KICAgICAgICAgZnMgPSBzZWxmLl9wb3J0Ll9maWxlc3lzdGVtCisg
ICAgICAgIGlzX3JlZnRlc3QgPSBib29sKHJlZmVyZW5jZV9maWxlbmFtZSkKICAgICAgICAgaWYg
ZHJpdmVyX291dHB1dC50aW1lb3V0OgotICAgICAgICAgICAgZmFpbHVyZXMuYXBwZW5kKHRlc3Rf
ZmFpbHVyZXMuRmFpbHVyZVRpbWVvdXQoYm9vbChyZWZlcmVuY2VfZmlsZW5hbWUpKSkKKyAgICAg
ICAgICAgIGZhaWx1cmVzLmFwcGVuZCh0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVUaW1lb3V0KGlzX3Jl
ZnRlc3Q9aXNfcmVmdGVzdCkpCiAKICAgICAgICAgaWYgcmVmZXJlbmNlX2ZpbGVuYW1lOgogICAg
ICAgICAgICAgdGVzdG5hbWUgPSBzZWxmLl9wb3J0LnJlbGF0aXZlX3Rlc3RfZmlsZW5hbWUocmVm
ZXJlbmNlX2ZpbGVuYW1lKQpAQCAtMjE0LDEyICsyMTUsMTAgQEAgY2xhc3MgU2luZ2xlVGVzdFJ1
bm5lcjoKICAgICAgICAgICAgIHRlc3RuYW1lID0gc2VsZi5fdGVzdG5hbWUKIAogICAgICAgICBp
ZiBkcml2ZXJfb3V0cHV0LmNyYXNoOgotICAgICAgICAgICAgZmFpbHVyZXMuYXBwZW5kKHRlc3Rf
ZmFpbHVyZXMuRmFpbHVyZUNyYXNoKGJvb2wocmVmZXJlbmNlX2ZpbGVuYW1lKSkpCi0gICAgICAg
ICAgICBfbG9nLmRlYnVnKCIlcyBTdGFja3RyYWNlIGZvciAlczpcbiVzIiAlIChzZWxmLl93b3Jr
ZXJfbmFtZSwgdGVzdG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkcml2ZXJfb3V0cHV0LmVycm9yKSkKKyAgICAgICAgICAgIGZhaWx1
cmVzLmFwcGVuZCh0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVDcmFzaChwcm9jZXNzX25hbWU9ZHJpdmVy
X291dHB1dC5jcmFzaGVkX3Byb2Nlc3NfbmFtZSwgaXNfcmVmdGVzdD1pc19yZWZ0ZXN0KSkKKyAg
ICAgICAgICAgIF9sb2cuZGVidWcoIiVzIFN0YWNrdHJhY2UgZm9yICVzOlxuJXMiICUgKGRyaXZl
cl9vdXRwdXQuY3Jhc2hlZF9wcm9jZXNzX25hbWUsIHRlc3RuYW1lLCBkcml2ZXJfb3V0cHV0LmVy
cm9yKSkKICAgICAgICAgZWxpZiBkcml2ZXJfb3V0cHV0LmVycm9yOgotICAgICAgICAgICAgX2xv
Zy5kZWJ1ZygiJXMgJXMgb3V0cHV0IHN0ZGVyciBsaW5lczpcbiVzIiAlIChzZWxmLl93b3JrZXJf
bmFtZSwgdGVzdG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRyaXZlcl9vdXRwdXQuZXJyb3IpKQorICAgICAgICAgICAgX2xv
Zy5kZWJ1ZygiJXMgJXMgb3V0cHV0IHN0ZGVyciBsaW5lczpcbiVzIiAlIChzZWxmLl93b3JrZXJf
bmFtZSwgdGVzdG5hbWUsIGRyaXZlcl9vdXRwdXQuZXJyb3IpKQogICAgICAgICByZXR1cm4gZmFp
bHVyZXMKIAogICAgIGRlZiBfY29tcGFyZV9vdXRwdXQoc2VsZiwgZHJpdmVyX291dHB1dCwgZXhw
ZWN0ZWRfZHJpdmVyX291dHB1dCk6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2ZhaWx1cmVzLnB5IGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9mYWlsdXJlcy5w
eQppbmRleCBkMmJiNzYxYjIyNWViMWIzYzVlMzVhNGI5MzQzOTg2NzQ1MTQ2NDU1Li41OWZmNTA5
ODhkM2Y3MWI3ODBkMGM2Y2I5Nzc0YjczN2U3Y2JlZDMyIDEwMDY0NAotLS0gYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2ZhaWx1cmVzLnB5
CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdl
L3Rlc3RfZmFpbHVyZXMucHkKQEAgLTEwMyw4ICsxMDMsOCBAQCBjbGFzcyBUZXN0RmFpbHVyZShv
YmplY3QpOgogICAgICAgICAiIiJSZXR1cm5zIHRoZSBzdHJpbmcvSlNPTiByZXByZXNlbnRhdGlv
biBvZiBhIFRlc3RGYWlsdXJlLiIiIgogICAgICAgICByZXR1cm4gY1BpY2tsZS5kdW1wcyhzZWxm
KQogCi0gICAgZGVmIHNob3VsZF9raWxsX2R1bXBfcmVuZGVyX3RyZWUoc2VsZik6Ci0gICAgICAg
ICIiIlJldHVybnMgVHJ1ZSBpZiB3ZSBzaG91bGQga2lsbCBEdW1wUmVuZGVyVHJlZSBiZWZvcmUg
dGhlIG5leHQgdGVzdC4iIiIKKyAgICBkZWYgZHJpdmVyX25lZWRzX3Jlc3RhcnQoc2VsZik6Cisg
ICAgICAgICIiIlJldHVybnMgVHJ1ZSBpZiB3ZSBzaG91bGQga2lsbCBEdW1wUmVuZGVyVHJlZS9X
ZWJLaXRUZXN0UnVubmVyIGJlZm9yZSB0aGUgbmV4dCB0ZXN0LiIiIgogICAgICAgICByZXR1cm4g
RmFsc2UKIAogCkBAIC0xMTcsMjEgKzExNywyNSBAQCBjbGFzcyBGYWlsdXJlVGltZW91dChUZXN0
RmFpbHVyZSk6CiAgICAgZGVmIG1lc3NhZ2UoKToKICAgICAgICAgcmV0dXJuICJUZXN0IHRpbWVk
IG91dCIKIAotICAgIGRlZiBzaG91bGRfa2lsbF9kdW1wX3JlbmRlcl90cmVlKHNlbGYpOgorICAg
IGRlZiBkcml2ZXJfbmVlZHNfcmVzdGFydChzZWxmKToKICAgICAgICAgcmV0dXJuIFRydWUKIAog
CiBjbGFzcyBGYWlsdXJlQ3Jhc2goVGVzdEZhaWx1cmUpOgotICAgICIiIkR1bXBSZW5kZXJUcmVl
IGNyYXNoZWQuIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGlzX3JlZnRlc3Q9RmFsc2UpOgor
ICAgICIiIkEgcHJvY2VzcyBjcmFzaGVkIGR1cmluZyB0ZXN0aW5nIChEdW1wUmVuZGVyVHJlZSwg
V2ViS2l0VGVzdFJ1bm5lciwgV2ViUHJvY2VzcywgZXRjLikiIiIKKyAgICBkZWYgX19pbml0X18o
c2VsZiwgcHJvY2Vzc19uYW1lPU5vbmUsIGlzX3JlZnRlc3Q9RmFsc2UpOgorICAgICAgICBzZWxm
Ll9jcmFzaGVkX3Byb2Nlc3NfbmFtZSA9IHByb2Nlc3NfbmFtZSBvciAiRHVtcFJlbmRlclRyZWUi
CiAgICAgICAgIHNlbGYuaXNfcmVmdGVzdCA9IGlzX3JlZnRlc3QKIAogICAgIEBzdGF0aWNtZXRo
b2QKICAgICBkZWYgbWVzc2FnZSgpOgotICAgICAgICAjIEZJWE1FOiBUaGlzIGlzIHdyb25nIGZv
ciBXZWJLaXQyICh3aGljaCB1c2VzIFdlYktpdFRlc3RSdW5uZXIpLgorICAgICAgICAjIEZJWE1F
OiBUaGlzIGlzIHdyb25nIGZvciBXZWJLaXQyLCBidXQgc2luY2UgaXQncyBzdGF0aWMsIG5vIGVh
c3kgd2F5IHRvIGZpeCBpdC4KICAgICAgICAgcmV0dXJuICJEdW1wUmVuZGVyVHJlZSBjcmFzaGVk
IgogCi0gICAgZGVmIHNob3VsZF9raWxsX2R1bXBfcmVuZGVyX3RyZWUoc2VsZik6CisgICAgZGVm
IGNyYXNoZWRfcHJvY2Vzc19uYW1lKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fY3Jhc2hl
ZF9wcm9jZXNzX25hbWUKKworICAgIGRlZiBkcml2ZXJfbmVlZHNfcmVzdGFydChzZWxmKToKICAg
ICAgICAgcmV0dXJuIFRydWUKIAogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2ZhaWx1cmVzX3VuaXR0ZXN0LnB5IGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9m
YWlsdXJlc191bml0dGVzdC5weQppbmRleCBiN2NiZDRhMjhhNGJlN2I5ZTA2NTg4Y2FhZGNhOTQ2
Njc3MGEyMmJhLi45MTU4MWVkMDZhZDlhYWRiZDQzNTJlN2E1OTU2MmY1MjZjNzNhNGQ1IDEwMDY0
NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2Fn
ZS90ZXN0X2ZhaWx1cmVzX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZmFpbHVyZXNfdW5pdHRlc3QucHkKQEAg
LTQ1LDI0ICs0NSw2IEBAIGNsYXNzIFRlc3RGYWlsdXJlc2VzdCh1bml0dGVzdC5UZXN0Q2FzZSk6
CiAgICAgICAgICMgQWxzbyB0ZXN0IHRoYXQgIT0gaXMgaW1wbGVtZW50ZWQuCiAgICAgICAgIHNl
bGYuYXNzZXJ0RmFsc2UoZmFpbHVyZV9vYmogIT0gbmV3X2ZhaWx1cmVfb2JqKQogCi0gICAgZGVm
IHRlc3RfY3Jhc2goc2VsZik6Ci0gICAgICAgIEZhaWx1cmVDcmFzaCgpCi0KLSAgICBkZWYgdGVz
dF9oYXNoX2luY29ycmVjdChzZWxmKToKLSAgICAgICAgRmFpbHVyZUltYWdlSGFzaEluY29ycmVj
dCgpCi0KLSAgICBkZWYgdGVzdF9taXNzaW5nKHNlbGYpOgotICAgICAgICBGYWlsdXJlTWlzc2lu
Z1Jlc3VsdCgpCi0KLSAgICBkZWYgdGVzdF9taXNzaW5nX2ltYWdlKHNlbGYpOgotICAgICAgICBG
YWlsdXJlTWlzc2luZ0ltYWdlKCkKLQotICAgIGRlZiB0ZXN0X21pc3NpbmdfaW1hZ2VfaGFzaChz
ZWxmKToKLSAgICAgICAgRmFpbHVyZU1pc3NpbmdJbWFnZUhhc2goKQotCi0gICAgZGVmIHRlc3Rf
dGltZW91dChzZWxmKToKLSAgICAgICAgRmFpbHVyZVRpbWVvdXQoKQotCiAgICAgZGVmIHRlc3Rf
dW5rbm93bl9mYWlsdXJlX3R5cGUoc2VsZik6CiAgICAgICAgIGNsYXNzIFVua25vd25GYWlsdXJl
KFRlc3RGYWlsdXJlKToKICAgICAgICAgICAgIHBhc3MKZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfcmVzdWx0X3dyaXRl
ci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdl
L3Rlc3RfcmVzdWx0X3dyaXRlci5weQppbmRleCBiYTQ1MDEwN2IyMjgwMzU1YmRlNjM2ZmIyMjc2
NzBjNGQ0ZDY3MjM3Li45MjdhNjFhMWMyODk5NTQ0YTNmMWZjYzUwMWY1OTliNjNjZTI5ZjNhIDEw
MDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFj
a2FnZS90ZXN0X3Jlc3VsdF93cml0ZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9yZXN1bHRfd3JpdGVyLnB5CkBAIC02OSwx
MCArNjksNyBAQCBkZWYgd3JpdGVfdGVzdF9yZXN1bHQocG9ydCwgZmlsZW5hbWUsIGRyaXZlcl9v
dXRwdXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9mYWlsdXJlcy5G
YWlsdXJlTWlzc2luZ0F1ZGlvKSk6CiAgICAgICAgICAgICB3cml0ZXIud3JpdGVfYXVkaW9fZmls
ZXMoZHJpdmVyX291dHB1dC5hdWRpbywgZXhwZWN0ZWRfZHJpdmVyX291dHB1dC5hdWRpbykKICAg
ICAgICAgZWxpZiBpc2luc3RhbmNlKGZhaWx1cmUsIHRlc3RfZmFpbHVyZXMuRmFpbHVyZUNyYXNo
KToKLSAgICAgICAgICAgIGlmIGZhaWx1cmUuaXNfcmVmdGVzdDoKLSAgICAgICAgICAgICAgICB3
cml0ZXIud3JpdGVfY3Jhc2hfcmVwb3J0KGV4cGVjdGVkX2RyaXZlcl9vdXRwdXQuZXJyb3IpCi0g
ICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHdyaXRlci53cml0ZV9jcmFzaF9yZXBv
cnQoZHJpdmVyX291dHB1dC5lcnJvcikKKyAgICAgICAgICAgIHdyaXRlci53cml0ZV9jcmFzaF9y
ZXBvcnQoZHJpdmVyX291dHB1dCkKICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGZhaWx1cmUsIHRl
c3RfZmFpbHVyZXMuRmFpbHVyZVJlZnRlc3RNaXNtYXRjaCk6CiAgICAgICAgICAgICB3cml0ZXIu
d3JpdGVfaW1hZ2VfZmlsZXMoZHJpdmVyX291dHB1dC5pbWFnZSwgZXhwZWN0ZWRfZHJpdmVyX291
dHB1dC5pbWFnZSkKICAgICAgICAgICAgIHdyaXRlci5jcmVhdGVfaW1hZ2VfZGlmZl9hbmRfd3Jp
dGVfcmVzdWx0KGRyaXZlcl9vdXRwdXQuaW1hZ2UsIGV4cGVjdGVkX2RyaXZlcl9vdXRwdXQuaW1h
Z2UpCkBAIC0xNjgsMTYgKzE2NSwxNiBAQCBjbGFzcyBUZXN0UmVzdWx0V3JpdGVyKG9iamVjdCk6
CiAgICAgICAgIGZzLm1heWJlX21ha2VfZGlyZWN0b3J5KGZzLmRpcm5hbWUoZmlsZW5hbWUpKQog
ICAgICAgICBmcy53cml0ZV9iaW5hcnlfZmlsZShmaWxlbmFtZSwgZXJyb3IpCiAKLSAgICBkZWYg
d3JpdGVfY3Jhc2hfcmVwb3J0KHNlbGYsIGVycm9yKToKKyAgICBkZWYgd3JpdGVfY3Jhc2hfcmVw
b3J0KHNlbGYsIGRyaXZlcl9vdXRwdXQpOgogICAgICAgICBmcyA9IHNlbGYuX3BvcnQuX2ZpbGVz
eXN0ZW0KICAgICAgICAgZmlsZW5hbWUgPSBzZWxmLm91dHB1dF9maWxlbmFtZShzZWxmLkZJTEVO
QU1FX1NVRkZJWF9DUkFTSF9MT0cgKyAiLnR4dCIpCiAgICAgICAgIGZzLm1heWJlX21ha2VfZGly
ZWN0b3J5KGZzLmRpcm5hbWUoZmlsZW5hbWUpKQogICAgICAgICAjIEZJWE1FOiBXZSBzaG91bGRu
J3QgYmUgZ3JhYmJpbmcgcHJpdmF0ZSBtZW1iZXJzIG9mIHBvcnQuCiAgICAgICAgIGNyYXNoX2xv
Z3MgPSBDcmFzaExvZ3MoZnMpCi0gICAgICAgIGxvZyA9IGNyYXNoX2xvZ3MuZmluZF9uZXdlc3Rf
bG9nKHNlbGYuX3BvcnQuZHJpdmVyX25hbWUoKSkKKyAgICAgICAgbG9nID0gY3Jhc2hfbG9ncy5m
aW5kX25ld2VzdF9sb2coZHJpdmVyX291dHB1dC5jcmFzaGVkX3Byb2Nlc3NfbmFtZSkKICAgICAg
ICAgIyBDcmFzaExvZ3MgZG9lc24ndCBzdXBwb3J0IGV2ZXJ5IHBsYXRmb3JtLCBzbyB3ZSBmYWxs
IGJhY2sgdG8KICAgICAgICAgIyBpbmNsdWRpbmcgdGhlIHN0ZGVyciBvdXRwdXQsIHdoaWNoIGlz
IGFkbWl0dGVkbHkgc29tZXdoYXQgcmVkdW5kYW50LgotICAgICAgICBmcy53cml0ZV90ZXh0X2Zp
bGUoZmlsZW5hbWUsIGxvZyBpZiBsb2cgZWxzZSBlcnJvcikKKyAgICAgICAgZnMud3JpdGVfdGV4
dF9maWxlKGZpbGVuYW1lLCBsb2cgaWYgbG9nIGVsc2UgZHJpdmVyX291dHB1dC5lcnJvcikKIAog
ICAgIGRlZiB3cml0ZV90ZXh0X2ZpbGVzKHNlbGYsIGFjdHVhbF90ZXh0LCBleHBlY3RlZF90ZXh0
KToKICAgICAgICAgc2VsZi53cml0ZV9vdXRwdXRfZmlsZXMoIi50eHQiLCBhY3R1YWxfdGV4dCwg
ZXhwZWN0ZWRfdGV4dCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL2xheW91dF9wYWNrYWdlL3dvcmtlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3dvcmtlci5weQppbmRleCAxZjU0YTg4ZmI0ZDRj
NzM1YjI4MmQzNzA2NjNjNGFiZmQ4ZWI0YTYzLi5lYTQ1N2U4ZjQ2ZTU2MjIwZGZiZDM1YzMzNTYz
YTE2OTMxNWEyYTcxIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9sYXlvdXRfcGFja2FnZS93b3JrZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2Uvd29ya2VyLnB5CkBAIC0xNzksNyArMTc5LDcg
QEAgY2xhc3MgV29ya2VyKG1hbmFnZXJfd29ya2VyX2Jyb2tlci5BYnN0cmFjdFdvcmtlcik6CiAK
ICAgICAgICAgaWYgcmVzdWx0LmZhaWx1cmVzOgogICAgICAgICAgICAgIyBDaGVjayBhbmQga2ls
bCBEdW1wUmVuZGVyVHJlZSBpZiB3ZSBuZWVkIHRvLgotICAgICAgICAgICAgaWYgYW55KFtmLnNo
b3VsZF9raWxsX2R1bXBfcmVuZGVyX3RyZWUoKSBmb3IgZiBpbiByZXN1bHQuZmFpbHVyZXNdKToK
KyAgICAgICAgICAgIGlmIGFueShbZi5kcml2ZXJfbmVlZHNfcmVzdGFydCgpIGZvciBmIGluIHJl
c3VsdC5mYWlsdXJlc10pOgogICAgICAgICAgICAgICAgIHNlbGYua2lsbF9kcml2ZXIoKQogICAg
ICAgICAgICAgICAgICMgUmVzZXQgdGhlIGJhdGNoIGNvdW50IHNpbmNlIHRoZSBzaGVsbCBqdXN0
IGJvdW5jZWQuCiAgICAgICAgICAgICAgICAgc2VsZi5fYmF0Y2hfY291bnQgPSAwCmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkKaW5kZXggZTE5
NDJkMTZmMDkzYzYwNWQ3OWQyOTNmYTdjOTk1YTI4Y2Q4ZDRkMi4uNGYyMTAyNTUxZmU5MzljMjgw
NTYyNzBjMzg3ZmMyYjM4Yjg1NTg4MyAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQpAQCAtOTIzLDcgKzkyMyw4IEBAIGNsYXNzIERyaXZl
ck91dHB1dChvYmplY3QpOgogICAgICIiIkdyb3VwcyBpbmZvcm1hdGlvbiBhYm91dCBhIG91dHB1
dCBmcm9tIGRyaXZlciBmb3IgZWFzeSBwYXNzaW5nIG9mIGRhdGEuIiIiCiAKICAgICBkZWYgX19p
bml0X18oc2VsZiwgdGV4dCwgaW1hZ2UsIGltYWdlX2hhc2gsIGF1ZGlvLAotICAgICAgICAgICAg
ICAgICBjcmFzaD1GYWxzZSwgdGVzdF90aW1lPTAsIHRpbWVvdXQ9RmFsc2UsIGVycm9yPScnKToK
KyAgICAgICAgICAgICAgICAgY3Jhc2g9RmFsc2UsIHRlc3RfdGltZT0wLCB0aW1lb3V0PUZhbHNl
LCBlcnJvcj0nJywKKyAgICAgICAgICAgICAgICAgY3Jhc2hlZF9wcm9jZXNzX25hbWU9Tm9uZSk6
CiAgICAgICAgICIiIkluaXRpYWxpemVzIGEgVGVzdE91dHB1dCBvYmplY3QuCiAKICAgICAgICAg
QXJnczoKQEAgLTkzMiw2ICs5MzMsNyBAQCBjbGFzcyBEcml2ZXJPdXRwdXQob2JqZWN0KToKICAg
ICAgICAgICBpbWFnZV9oYXNoOiBhIHN0cmluZyBjb250YWluaW5nIHRoZSBjaGVja3N1bSBvZiB0
aGUgaW1hZ2UKICAgICAgICAgICBhdWRpbzogY29udGVudHMgb2YgYW4gYXVkaW8gc3RyZWFtLCBp
ZiBhbnkgKGluIFdBViBmb3JtYXQpCiAgICAgICAgICAgY3Jhc2g6IGEgYm9vbGVhbiBpbmRpY2F0
aW5nIHdoZXRoZXIgdGhlIGRyaXZlciBjcmFzaGVkIG9uIHRoZSB0ZXN0CisgICAgICAgICAgY3Jh
c2hlZF9wcm9jZXNzX25hbWU6IGEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIG5hbWUgb2YgdGhlIHRl
c3QgcHJvY2VzcyB3aGljaCBjcmFzaGVkCiAgICAgICAgICAgdGVzdF90aW1lOiB0aGUgdGltZSB0
aGUgdGVzdCB0b29rIHRvIGV4ZWN1dGUKICAgICAgICAgICB0aW1lb3V0OiBhIGJvb2xlYW4gaW5k
aWNhdGluZyB3aGVodGVyIHRoZSB0ZXN0IHRpbWVkIG91dAogICAgICAgICAgIGVycm9yOiBhbnkg
dW5leHBlY3RlZCBvciBhZGRpdGlvbmFsIChvciBlcnJvcikgdGV4dCBvdXRwdXQKQEAgLTk0MSw2
ICs5NDMsNyBAQCBjbGFzcyBEcml2ZXJPdXRwdXQob2JqZWN0KToKICAgICAgICAgc2VsZi5pbWFn
ZV9oYXNoID0gaW1hZ2VfaGFzaAogICAgICAgICBzZWxmLmF1ZGlvID0gYXVkaW8KICAgICAgICAg
c2VsZi5jcmFzaCA9IGNyYXNoCisgICAgICAgIHNlbGYuY3Jhc2hlZF9wcm9jZXNzX25hbWUgPSBj
cmFzaGVkX3Byb2Nlc3NfbmFtZQogICAgICAgICBzZWxmLnRlc3RfdGltZSA9IHRlc3RfdGltZQog
ICAgICAgICBzZWxmLnRpbWVvdXQgPSB0aW1lb3V0CiAgICAgICAgIHNlbGYuZXJyb3IgPSBlcnJv
cgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9z
ZXJ2ZXJfcHJvY2Vzcy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvc2VydmVyX3Byb2Nlc3MucHkKaW5kZXggNjQzMjE2ZWNkMmE4MzA2YjlmYjQ0MDJlNjRiZjFi
ZDc2YTBhNWFlZS4uYzI2ZDM1YTEyZWU2NjMwMWNmNDRlZjdlZDE5MDViMmMzNmIxMGI5YyAxMDA2
NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9zZXJ2ZXJf
cHJvY2Vzcy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L3NlcnZlcl9wcm9jZXNzLnB5CkBAIC02Niw2ICs2Niw5IEBAIGNsYXNzIFNlcnZlclByb2Nlc3M6
CiAgICAgICAgIHNlbGYudGltZWRfb3V0ID0gRmFsc2UKICAgICAgICAgc2VsZi5lcnJvciA9ICcn
CiAKKyAgICBkZWYgcHJvY2Vzc19uYW1lKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fbmFt
ZQorCiAgICAgZGVmIF9zdGFydChzZWxmKToKICAgICAgICAgaWYgc2VsZi5fcHJvYzoKICAgICAg
ICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIiVzIGFscmVhZHkgcnVubmluZyIgJSBzZWxmLl9uYW1l
KQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93
ZWJraXQucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtp
dC5weQppbmRleCAyZWJhY2Y1NTAwMTc2OTA2ODY1YzVkZTVjNmQ0NmFkZjkxMGNjZGFlLi5iYjVl
ZGEzNTY0MmMzMGVjMGNiY2YyZDk1NDQ5NTljODFlM2FhYWQ2IDEwMDY0NAotLS0gYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weQorKysgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weQpAQCAtMTMyLDggKzEz
Miw3IEBAIGNsYXNzIFdlYktpdFBvcnQoYmFzZS5Qb3J0KToKICAgICAgICAgICAgIHJldHVybiBG
YWxzZQogICAgICAgICByZXR1cm4gVHJ1ZQogCi0gICAgZGVmIGRpZmZfaW1hZ2Uoc2VsZiwgZXhw
ZWN0ZWRfY29udGVudHMsIGFjdHVhbF9jb250ZW50cywKLSAgICAgICAgICAgICAgICAgICBkaWZm
X2ZpbGVuYW1lPU5vbmUpOgorICAgIGRlZiBkaWZmX2ltYWdlKHNlbGYsIGV4cGVjdGVkX2NvbnRl
bnRzLCBhY3R1YWxfY29udGVudHMsIGRpZmZfZmlsZW5hbWU9Tm9uZSk6CiAgICAgICAgICIiIlJl
dHVybiBUcnVlIGlmIHRoZSB0d28gZmlsZXMgYXJlIGRpZmZlcmVudC4gQWxzbyB3cml0ZSBhIGRl
bHRhCiAgICAgICAgIGltYWdlIG9mIHRoZSB0d28gaW1hZ2VzIGludG8gfGRpZmZfZmlsZW5hbWV8
IGlmIGl0IGlzIG5vdCBOb25lLiIiIgogCkBAIC0zODIsNiArMzgxLDExIEBAIGNsYXNzIFdlYktp
dERyaXZlcihiYXNlLkRyaXZlcik6CiAgICAgICAgIHNlbGYuX3dvcmtlcl9udW1iZXIgPSB3b3Jr
ZXJfbnVtYmVyCiAgICAgICAgIHNlbGYuX3BvcnQgPSBwb3J0CiAgICAgICAgIHNlbGYuX2RyaXZl
cl90ZW1wZGlyID0gcG9ydC5fZmlsZXN5c3RlbS5ta2R0ZW1wKHByZWZpeD0nJXMtJyAlIHNlbGYu
X3BvcnQuZHJpdmVyX25hbWUoKSkKKyAgICAgICAgIyBXZWJLaXRUZXN0UnVubmVyIGNhbiByZXBv
cnQgYmFjayBzdWJwcm9jZXNzIGNyYXNoZXMgYnkgcHJpbnRpbmcKKyAgICAgICAgIyAiI0NSQVNI
RUQgLSBQUk9DRVNTTkFNRSIuICBTaW5jZSB0aG9zZSBjYW4gaGFwcGVuIGF0IGFueSB0aW1lCisg
ICAgICAgICMgYW5kIFNlcnZlclByb2Nlc3Mgd29uJ3QgYmUgYXdhcmUgb2YgdGhlbSAoc2luY2Ug
dGhlIGFjdHVhbCB0b29sCisgICAgICAgICMgZGlkbid0IGNyYXNoLCBqdXN0IGEgc3VicHJvY2Vz
cykgd2UgcmVjb3JkIHRoZSBjcmFzaGVkIHN1YnByb2Nlc3MgbmFtZSBoZXJlLgorICAgICAgICBz
ZWxmLl9jcmFzaGVkX3N1YnByb2Nlc3NfbmFtZSA9IE5vbmUKIAogICAgIGRlZiBfX2RlbF9fKHNl
bGYpOgogICAgICAgICBzZWxmLl9wb3J0Ll9maWxlc3lzdGVtLnJtdHJlZShzdHIoc2VsZi5fZHJp
dmVyX3RlbXBkaXIpKQpAQCAtNDA3LDYgKzQxMSw3IEBAIGNsYXNzIFdlYktpdERyaXZlcihiYXNl
LkRyaXZlcik6CiAgICAgICAgIGVudmlyb25tZW50WydEWUxEX0ZSQU1FV09SS19QQVRIJ10gPSBz
ZWxmLl9wb3J0Ll9idWlsZF9wYXRoKCkKICAgICAgICAgIyBGSVhNRTogV2UncmUgYXNzdW1pbmcg
dGhhdCBXZWJLaXRUZXN0UnVubmVyIGNoZWNrcyB0aGlzIER1bXBSZW5kZXJUcmVlLW5hbWVkIGVu
dmlyb25tZW50IHZhcmlhYmxlLgogICAgICAgICBlbnZpcm9ubWVudFsnRFVNUFJFTkRFUlRSRUVf
VEVNUCddID0gc3RyKHNlbGYuX2RyaXZlcl90ZW1wZGlyKQorICAgICAgICBzZWxmLl9jcmFzaGVk
X3N1YnByb2Nlc3NfbmFtZSA9IE5vbmUKICAgICAgICAgc2VsZi5fc2VydmVyX3Byb2Nlc3MgPSBz
ZXJ2ZXJfcHJvY2Vzcy5TZXJ2ZXJQcm9jZXNzKHNlbGYuX3BvcnQsIHNlbGYuX3BvcnQuZHJpdmVy
X25hbWUoKSwgc2VsZi5jbWRfbGluZSgpLCBlbnZpcm9ubWVudCkKIAogICAgIGRlZiBwb2xsKHNl
bGYpOgpAQCAtNDE3LDExICs0MjIsMjAgQEAgY2xhc3MgV2ViS2l0RHJpdmVyKGJhc2UuRHJpdmVy
KToKICAgICAgICAgc2VsZi5fc2VydmVyX3Byb2Nlc3Muc3RhcnQoKQogICAgICAgICByZXR1cm4K
IAotICAgIGRlZiBkZXRlY3RlZF9jcmFzaChzZWxmKToKLSAgICAgICAgIyBGSVhNRTogV2UgY2Fu
J3QganVzdCBjaGVjayBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5jcmFzaGVkIGZvciB0d28gcmVhc29u
czoKLSAgICAgICAgIyAxLiBXZWJLaXRUZXN0UnVubmVyIHdpbGwgcHJpbnQgIiNDUkFTSEVEIC0g
V2ViUHJvY2VzcyIgYW5kIHRoZW4gZXhpdCBpZiB0aGUgV2ViUHJvY2VzcyBjcmFzaGVzLgotICAg
ICAgICAjIDIuIEFkYW0gUm9iZW4gdGVsbHMgbWUgV2luZG93cyBEdW1wUmVuZGVyVHJlZSBjYW4g
cHJpbnQgIiNDUkFTSEVEIiB5ZXQgc3RpbGwgZXhpdCBjbGVhbmx5LgotICAgICAgICByZXR1cm4g
c2VsZi5fc2VydmVyX3Byb2Nlc3MuY3Jhc2hlZAorICAgIGRlZiBfZGV0ZWN0ZWRfY3Jhc2goc2Vs
Zik6CisgICAgICAgICMgV2UgY2FuJ3QganVzdCBjaGVjayBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5j
cmFzaGVkIGJlY2F1c2UgV2ViS2l0VGVzdFJ1bm5lcgorICAgICAgICAjIGNhbiByZXBvcnQgc3Vi
cHJvY2VzcyBjcmFzaGVzIGF0IGFueSB0aW1lIGJ5IHByaW50aW5nCisgICAgICAgICMgIiNDUkFT
SEVEIC0gV2ViUHJvY2VzcyIsIHdlIHdhbnQgdG8gY291bnQgdGhvc2UgYXMgY3Jhc2hlcyBhcyB3
ZWxsLgorICAgICAgICByZXR1cm4gc2VsZi5fc2VydmVyX3Byb2Nlc3MuY3Jhc2hlZCBvciBzZWxm
Ll9jcmFzaGVkX3N1YnByb2Nlc3NfbmFtZQorCisgICAgZGVmIF9zdWJwcm9jZXNzX2NyYXNoZWQo
c2VsZiwgc3VicHJvY2Vzc19uYW1lKToKKyAgICAgICAgYXNzZXJ0IG5vdCBzZWxmLl9kZXRlY3Rl
ZF9jcmFzaCgpLCAiQSBjcmFzaCB3YXMgcmVwb3J0ZWQgdHdpY2UsIHNvbWV0aGluZyBpcyB3cm9u
Zy4iCisgICAgICAgIHNlbGYuX2NyYXNoZWRfc3VicHJvY2Vzc19uYW1lID0gc3VicHJvY2Vzc19u
YW1lCisKKyAgICBkZWYgX2NyYXNoZWRfcHJvY2Vzc19uYW1lKHNlbGYpOgorICAgICAgICBpZiBu
b3Qgc2VsZi5fZGV0ZWN0ZWRfY3Jhc2goKToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAg
ICAgIHJldHVybiBzZWxmLl9jcmFzaGVkX3N1YnByb2Nlc3NfbmFtZSBvciBzZWxmLl9zZXJ2ZXJf
cHJvY2Vzcy5wcm9jZXNzX25hbWUoKQogCiAgICAgZGVmIF9jb21tYW5kX2Zyb21fZHJpdmVyX2lu
cHV0KHNlbGYsIGRyaXZlcl9pbnB1dCk6CiAgICAgICAgIHVyaSA9IHNlbGYuX3BvcnQuZmlsZW5h
bWVfdG9fdXJpKGRyaXZlcl9pbnB1dC5maWxlbmFtZSkKQEAgLTQzNCw3ICs0NDgsNyBAQCBjbGFz
cyBXZWJLaXREcml2ZXIoYmFzZS5Ecml2ZXIpOgogCiAgICAgZGVmIF9yZWFkX2ZpcnN0X2Jsb2Nr
KHNlbGYsIGRlYWRsaW5lKToKICAgICAgICAgIiIiUmVhZHMgYSBibG9jayBmcm9tIHRoZSBzZXJ2
ZXJfcHJvY2VzcyBhbmQgcmV0dXJucyAodGV4dF9jb250ZW50LCBhdWRpb19jb250ZW50KS4iIiIK
LSAgICAgICAgaWYgc2VsZi5kZXRlY3RlZF9jcmFzaCgpOgorICAgICAgICBpZiBzZWxmLl9kZXRl
Y3RlZF9jcmFzaCgpOgogICAgICAgICAgICAgcmV0dXJuIChOb25lLCBOb25lKQogCiAgICAgICAg
IGJsb2NrID0gc2VsZi5fcmVhZF9ibG9jayhkZWFkbGluZSkKQEAgLTQ0NCw3ICs0NTgsNyBAQCBj
bGFzcyBXZWJLaXREcml2ZXIoYmFzZS5Ecml2ZXIpOgogCiAgICAgZGVmIF9yZWFkX29wdGlvbmFs
X2ltYWdlX2Jsb2NrKHNlbGYsIGRlYWRsaW5lKToKICAgICAgICAgIiIiUmVhZHMgYSBibG9jayBm
cm9tIHRoZSBzZXJ2ZXJfcHJvY2VzcyBhbmQgcmV0dXJucyAoaW1hZ2UsIGFjdHVhbF9pbWFnZV9o
YXNoKS4iIiIKLSAgICAgICAgaWYgc2VsZi5kZXRlY3RlZF9jcmFzaCgpOgorICAgICAgICBpZiBz
ZWxmLl9kZXRlY3RlZF9jcmFzaCgpOgogICAgICAgICAgICAgcmV0dXJuIChOb25lLCBOb25lKQog
CiAgICAgICAgIGJsb2NrID0gc2VsZi5fcmVhZF9ibG9jayhkZWFkbGluZSkKQEAgLTQ3Miw4ICs0
ODYsOSBAQCBjbGFzcyBXZWJLaXREcml2ZXIoYmFzZS5Ecml2ZXIpOgogICAgICAgICAjIEZJWE1F
OiBUaGlzIHNlZW1zIGxpa2UgdGhlIHdyb25nIHNlY3Rpb24gb2YgY29kZSB0byBiZSByZXNldHRp
bmcgX3NlcnZlcl9wcm9jZXNzLmVycm9yLgogICAgICAgICBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5l
cnJvciA9ICIiCiAgICAgICAgIHJldHVybiBiYXNlLkRyaXZlck91dHB1dCh0ZXh0LCBpbWFnZSwg
YWN0dWFsX2ltYWdlX2hhc2gsIGF1ZGlvLAotICAgICAgICAgICAgY3Jhc2g9c2VsZi5kZXRlY3Rl
ZF9jcmFzaCgpLCB0ZXN0X3RpbWU9dGltZS50aW1lKCkgLSBzdGFydF90aW1lLAotICAgICAgICAg
ICAgdGltZW91dD1zZWxmLl9zZXJ2ZXJfcHJvY2Vzcy50aW1lZF9vdXQsIGVycm9yPWVycm9yKQor
ICAgICAgICAgICAgY3Jhc2g9c2VsZi5fZGV0ZWN0ZWRfY3Jhc2goKSwgdGVzdF90aW1lPXRpbWUu
dGltZSgpIC0gc3RhcnRfdGltZSwKKyAgICAgICAgICAgIHRpbWVvdXQ9c2VsZi5fc2VydmVyX3By
b2Nlc3MudGltZWRfb3V0LCBlcnJvcj1lcnJvciwKKyAgICAgICAgICAgIGNyYXNoZWRfcHJvY2Vz
c19uYW1lPXNlbGYuX2NyYXNoZWRfcHJvY2Vzc19uYW1lKCkpCiAKICAgICBkZWYgX3JlYWRfYmxv
Y2soc2VsZiwgZGVhZGxpbmUpOgogICAgICAgICBMRU5HVEhfSEVBREVSID0gJ0NvbnRlbnQtTGVu
Z3RoOiAnCkBAIC00OTEsMTEgKzUwNiwxOSBAQCBjbGFzcyBXZWJLaXREcml2ZXIoYmFzZS5Ecml2
ZXIpOgogICAgICAgICB0aW1lb3V0ID0gZGVhZGxpbmUgLSB0aW1lLnRpbWUoKQogICAgICAgICBs
aW5lID0gc2VsZi5fc2VydmVyX3Byb2Nlc3MucmVhZF9saW5lKHRpbWVvdXQpCiAgICAgICAgIGVv
ZiA9IEZhbHNlCi0gICAgICAgIHdoaWxlIChub3Qgc2VsZi5fc2VydmVyX3Byb2Nlc3MudGltZWRf
b3V0IGFuZCBub3Qgc2VsZi5kZXRlY3RlZF9jcmFzaCgpIGFuZCBub3QgZW9mKToKKyAgICAgICAg
d2hpbGUgKG5vdCBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy50aW1lZF9vdXQgYW5kIG5vdCBzZWxmLl9k
ZXRlY3RlZF9jcmFzaCgpIGFuZCBub3QgZW9mKToKICAgICAgICAgICAgIGNob21wZWRfbGluZSA9
IGxpbmUucnN0cmlwKCkKKyAgICAgICAgICAgICMgRklYTUU6IFRoaXMgc2hvdWxkIHByb2JhYmx5
IGJlIC5jb250YWlucygiI0VPRiIpIGluc3RlYWQgb2YgZW5kc3dpdGgKICAgICAgICAgICAgIGlm
IGNob21wZWRfbGluZS5lbmRzd2l0aCgiI0VPRiIpOgogICAgICAgICAgICAgICAgIGVvZiA9IFRy
dWUKICAgICAgICAgICAgICAgICBsaW5lID0gY2hvbXBlZF9saW5lWzotNF0KKyAgICAgICAgICAg
IGVsaWYgY2hvbXBlZF9saW5lLmVuZHN3aXRoKCIjQ1JBU0hFRCIpOgorICAgICAgICAgICAgICAg
ICMgVGhpcyBpcyB1c2VkIG9uIFdpbmRvd3MgdG8gcmVwb3J0IHRoYXQgdGhlIHByb2Nlc3MgaGFz
IGNyYXNoZWQKKyAgICAgICAgICAgICAgICAjIFNlZSBodHRwOi8vdHJhYy53ZWJraXQub3JnL2No
YW5nZXNldC82NTUzNy4KKyAgICAgICAgICAgICAgICBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5jcmFz
aCA9IFRydWUKKyAgICAgICAgICAgIGVsaWYgY2hvbXBlZF9saW5lLmVuZHN3aXRoKCIjQ1JBU0hF
RCAtIFdlYlByb2Nlc3MiKToKKyAgICAgICAgICAgICAgICAjIFdlYktpdFRlc3RSdW5uZXIgdXNl
cyB0aGlzIHRvIHJlcG9ydCB0aGF0IHRoZSBXZWJQcm9jZXNzIHN1YnByb2Nlc3MgY3Jhc2hlZC4K
KyAgICAgICAgICAgICAgICBzZWxmLnN1YnByb2Nlc3NfY3Jhc2hlZCgiV2ViUHJvY2VzcyIpCiAK
ICAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aChUWVBFX0hFQURFUikgYW5kIGNvbnRlbnRf
dHlwZSBpcyBOb25lOgogICAgICAgICAgICAgICAgIGNvbnRlbnRfdHlwZSA9IGxpbmUuc3BsaXQo
KVsxXQpAQCAtNTExLDcgKzUzNCw3IEBAIGNsYXNzIFdlYktpdERyaXZlcihiYXNlLkRyaXZlcik6
CiAgICAgICAgICAgICAgICAgY29udGVudF9oYXNoID0gbGluZS5zcGxpdCgpWzFdCiAgICAgICAg
ICAgICBlbGlmIGxpbmU6CiAgICAgICAgICAgICAgICAgY29udGVudCArPSBsaW5lCi0gICAgICAg
ICAgICBpZiBub3QgZW9mOgorICAgICAgICAgICAgaWYgbm90IGVvZiBhbmQgbm90IHNlbGYuX2Rl
dGVjdGVkX2NyYXNoKCk6CiAgICAgICAgICAgICAgICAgbGluZSA9IHNlbGYuX3NlcnZlcl9wcm9j
ZXNzLnJlYWRfbGluZSh0aW1lb3V0KQogICAgICAgICAgICAgICAgIHRpbWVvdXQgPSBkZWFkbGlu
ZSAtIHRpbWUudGltZSgpCiAgICAgICAgIHJldHVybiBDb250ZW50QmxvY2soY29udGVudF90eXBl
LCBlbmNvZGluZywgY29udGVudF9oYXNoLCBjb250ZW50KQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c19pbnRlZ3JhdGlvbnRl
c3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rl
c3RzX2ludGVncmF0aW9udGVzdC5weQppbmRleCA3Y2FjZDM2OGNkMmY1MTBiNTJkM2Y5NWFmYzU2
Mzg3NmEyMWIxYTg3Li42ZmJkMDcwM2NlZjE2ZWRkZDE3ZGMzNTBiMGE3NTg4ZmU1YjEzN2M2IDEw
MDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0
X3Rlc3RzX2ludGVncmF0aW9udGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX2ludGVncmF0aW9udGVzdC5weQpAQCAtNDEzLDcg
KzQxMyw3IEBAIGNsYXNzIE1haW5UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAg
IHRlc3RzX2luY2x1ZGVkPVRydWUsCiAgICAgICAgICAgICByZWNvcmRfcmVzdWx0cz1UcnVlLAog
ICAgICAgICAgICAgZmlsZXN5c3RlbT1mcykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZzLnJl
YWRfdGV4dF9maWxlKCcvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvdW5leHBlY3RlZF9yZXN1bHRz
Lmpzb24nKS5maW5kKCd7ImNyYXNoLXdpdGgtc3RkZXJyLmh0bWwiOnsiZXhwZWN0ZWQiOiJQQVNT
IiwiYWN0dWFsIjoiQ1JBU0giLCJoYXNfc3RkZXJyIjp0cnVlfX0nKSAhPSAtMSkKKyAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKGZzLnJlYWRfdGV4dF9maWxlKCcvdG1wL2xheW91dC10ZXN0LXJlc3Vs
dHMvdW5leHBlY3RlZF9yZXN1bHRzLmpzb24nKS5maW5kKCd7ImNyYXNoLXdpdGgtc3RkZXJyLmh0
bWwiOnsiZXhwZWN0ZWQiOiJQQVNTIiwiY3Jhc2hlZF9wcm9jZXNzIjoiRHVtcFJlbmRlclRyZWUi
LCJhY3R1YWwiOiJDUkFTSCIsImhhc19zdGRlcnIiOnRydWV9fScpICE9IC0xKQogCiAgICAgZGVm
IHRlc3RfY3Jhc2hfbG9nKHNlbGYpOgogICAgICAgICBtb2NrX2NyYXNoX3JlcG9ydCA9ICdtb2Nr
LWNyYXNoLXJlcG9ydCcK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99234</attachid>
            <date>2011-06-29 21:42:34 -0700</date>
            <delta_ts>2011-10-19 15:42:28 -0700</delta_ts>
            <desc>works, but is inelegant</desc>
            <filename>bug-63683-20110629214232.patch</filename>
            <type>text/plain</type>
            <size>25458</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTAwNzgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggOWRjYzQ5
MTcyYTUzM2UyZTc5ZTc3Njg4ZTYyYzc5YjNjNDNmYzNjMC4uNGE5NWUyZDUxMTQxMjY0MTgwYmQ1
ZWVhYjllYmFlZTRkYjg2Zjg3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKQEAgLTE4MCw2ICsxODAs
NyBAQCBpbmxpbmUgRnJhbWU6OkZyYW1lKFBhZ2UqIHBhZ2UsIEhUTUxGcmFtZU93bmVyRWxlbWVu
dCogb3duZXJFbGVtZW50LCBGcmFtZUxvYWRlcgogICAgIE1hdGhNTE5hbWVzOjppbml0KCk7CiAg
ICAgWE1MTlNOYW1lczo6aW5pdCgpOwogICAgIFhNTE5hbWVzOjppbml0KCk7CisgICAgQ1JBU0go
KTsKIAogICAgIGlmICghb3duZXJFbGVtZW50KSB7CiAjaWYgRU5BQkxFKFRJTEVEX0JBQ0tJTkdf
U1RPUkUpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5k
ZXggOTQ0NDQ2ZDc1ZTg0ODc5NGEyYTM0ZmQ5Y2M0ZTY2YTBiNmE2ZDE3My4uN2E5YjYzNmY0YmU3
M2NhZGYzOGQxNzJhNmY5NjQ4ODJlZDI3NWQ1MSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9n
CisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI1IEBACiAyMDExLTA2LTI5ICBFcmlj
IFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUZWFjaCBuZXctcnVuLXdlYmtpdC10ZXN0cyBhYm91dCAjQ1JB
U0hFRCBhbmQgI0NSQVNIRUQgLSBXZWJQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MzY4MworCisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vbmV0L2xheW91dHRlc3RyZXN1bHRzLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL25ldC9yZXN1bHRzanNvbnBhcnNlci5weToKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9tYW5hZ2VyLnB5OgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3NpbmdsZV90
ZXN0X3J1bm5lci5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9s
YXlvdXRfcGFja2FnZS90ZXN0X2ZhaWx1cmVzLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZmFpbHVyZXNfdW5pdHRlc3QucHk6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2Uv
dGVzdF9yZXN1bHRfd3JpdGVyLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL2xheW91dF9wYWNrYWdlL3dvcmtlci5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9zZXJ2ZXJfcHJvY2Vzcy5weToKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weToKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX2ludGVncmF0aW9udGVzdC5w
eToKKworMjAxMS0wNi0yOSAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CisKICAgICAg
ICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KIAogICAgICAgICBSZWZhY3RvciBXZWJLaXREcml2
ZXIucnVuX3Rlc3QgaW50byBzbWFsbGVyIHBpZWNlcwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vbmV0L2xheW91dHRlc3RyZXN1bHRzLnB5IGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vbmV0L2xheW91dHRlc3RyZXN1bHRzLnB5CmluZGV4IDFjYThiYjNk
NjdjMTllNjc4ZTYyZTdhNzI1MjYxZDAwZjgxMGExYTYuLjQ1ZjFiNGY5OTNlNzVlZjg3MTUxODAy
MDlmNmYwYjYzNGUyOWFmY2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL25ldC9sYXlvdXR0ZXN0cmVzdWx0cy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9uZXQvbGF5b3V0dGVzdHJlc3VsdHMucHkKQEAgLTkwLDcgKzkwLDcgQEAgY2xhc3Mg
T1JXVFJlc3VsdHNIVE1MUGFyc2VyKG9iamVjdCk6CiAgICAgICAgIGlmIHRhYmxlX3RpdGxlID09
IGNscy5jcmFzaF9rZXk6CiAgICAgICAgICAgICByZXR1cm4gW3Rlc3RfZmFpbHVyZXMuRmFpbHVy
ZUNyYXNoKCldCiAgICAgICAgIGlmIHRhYmxlX3RpdGxlID09IGNscy53ZWJwcm9jZXNzX2NyYXNo
X2tleToKLSAgICAgICAgICAgIHJldHVybiBbdGVzdF9mYWlsdXJlcy5GYWlsdXJlQ3Jhc2goKV0K
KyAgICAgICAgICAgIHJldHVybiBbdGVzdF9mYWlsdXJlcy5GYWlsdXJlQ3Jhc2gocHJvY2Vzc19u
YW1lPSJXZWJQcm9jZXNzIildCiAgICAgICAgIGlmIHRhYmxlX3RpdGxlID09IGNscy50aW1lb3V0
X2tleToKICAgICAgICAgICAgIHJldHVybiBbdGVzdF9mYWlsdXJlcy5GYWlsdXJlVGltZW91dCgp
XQogICAgICAgICBpZiB0YWJsZV90aXRsZSA9PSBjbHMubWlzc2luZ19rZXk6CmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvcmVzdWx0c2pzb25wYXJzZXIucHkg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvcmVzdWx0c2pzb25wYXJzZXIucHkK
aW5kZXggYjVkNzgwMDEzODU4YzBkZmM0NTAyNGE1YmM3M2I1Y2ZiNmZkOGVhNi4uMDdjNTllYjgx
ZGFiMzUzOGViOTM4YjEwYzQ0ZGQ5ZDFmYWM2NGUyMCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vbmV0L3Jlc3VsdHNqc29ucGFyc2VyLnB5CisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9yZXN1bHRzanNvbnBhcnNlci5weQpAQCAtODksNiAr
ODksNyBAQCBjbGFzcyBKU09OVGVzdFJlc3VsdChvYmplY3QpOgogICAgICAgICBlbGlmIGFjdHVh
bCA9PSB0ZXN0X2V4cGVjdGF0aW9ucy5USU1FT1VUOgogICAgICAgICAgICAgcmV0dXJuIFt0ZXN0
X2ZhaWx1cmVzLkZhaWx1cmVUaW1lb3V0KCldCiAgICAgICAgIGVsaWYgYWN0dWFsID09IHRlc3Rf
ZXhwZWN0YXRpb25zLkNSQVNIOgorICAgICAgICAgICAgIyBOT1RFOiBXZSBkb24ndCBrbm93IHdo
YXQgcHJvY2VzcyBjcmFzaGVkIGZyb20gdGhlIGpzb24sIGp1c3QgdGhhdCBhIHByb2Nlc3MgY3Jh
c2hlZC4KICAgICAgICAgICAgIHJldHVybiBbdGVzdF9mYWlsdXJlcy5GYWlsdXJlQ3Jhc2goKV0K
ICAgICAgICAgZWxpZiBhY3R1YWwgPT0gdGVzdF9leHBlY3RhdGlvbnMuTUlTU0lORzoKICAgICAg
ICAgICAgIHJldHVybiBbdGVzdF9mYWlsdXJlcy5GYWlsdXJlTWlzc2luZ1Jlc3VsdCgpLCB0ZXN0
X2ZhaWx1cmVzLkZhaWx1cmVNaXNzaW5nSW1hZ2VIYXNoKCksIHRlc3RfZmFpbHVyZXMuRmFpbHVy
ZU1pc3NpbmdJbWFnZSgpXQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWFuYWdlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL21hbmFnZXIucHkKaW5kZXggOTY4YzBkNzE1
ZGUwMDZhMWMyZGNkNjlmZGJhMWM0ZWIzMGZjZDM5NS4uYjBjMjNmNWFjODVmNjg5MGJmMTBlODNi
ZTdiODgwNjMxMTBlYjdmYyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWFuYWdlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9tYW5hZ2VyLnB5CkBAIC0xNjgsMTAg
KzE2OCwxNiBAQCBkZWYgc3VtbWFyaXplX3Jlc3VsdHMocG9ydF9vYmosIGV4cGVjdGF0aW9ucywg
cmVzdWx0X3N1bW1hcnksIHJldHJ5X3N1bW1hcnksIHRlcwogICAgICAgICBpZiB0ZXN0X2ZhaWx1
cmVzLkZhaWx1cmVSZWZ0ZXN0TWlzbWF0Y2ggaW4gZmFpbHVyZV90eXBlczoKICAgICAgICAgICAg
IHRlc3RfZGljdFsnaXNfcmVmdGVzdCddID0gVHJ1ZQogCi0gICAgICAgIGZvciBmIGluIHJlc3Vs
dC5mYWlsdXJlczoKKyAgICAgICAgZm9yIGZhaWx1cmUgaW4gcmVzdWx0LmZhaWx1cmVzOgorICAg
ICAgICAgICAgIyBGSVhNRTogVGhpcyBpcyBicm9rZW4uICBJIGV4cGVjdCB0aGlzIG1lYW50IHRv
IHJlYWQgImhhc2F0dHIoJ2lzX3JlZnRlc3QnLCBmYWlsdXJlKSBhbmQgZmFpbHVyZS5pc19yZWZ0
ZXN0Ii4KICAgICAgICAgICAgIGlmICdpc19yZWZ0ZXN0JyBpbiByZXN1bHQuZmFpbHVyZXM6CiAg
ICAgICAgICAgICAgICAgdGVzdF9kaWN0Wydpc19yZWZ0ZXN0J10gPSBUcnVlCiAKKyAgICAgICAg
ICAgIGlmIHR5cGUoZmFpbHVyZSkgPT0gdGVzdF9mYWlsdXJlcy5GYWlsdXJlQ3Jhc2g6CisgICAg
ICAgICAgICAgICAgYXNzZXJ0ICdjcmFzaGVkX3Byb2Nlc3MnIG5vdCBpbiB0ZXN0X2RpY3QsICJG
YWlsdXJlcyAoJXMpIGNvbnRhaW5zIG1vcmUgdGhhbiBvbmUgRmFpbHVyZUNyYXNoIiAlIGZhaWx1
cmVzCisgICAgICAgICAgICAgICAgIyBXZSBjb3VsZCBwcmludCB0aGlzIG9ubHkgaWYgZmFpbHVy
ZS5jcmFzaGVkX3Byb2Nlc3NfbmFtZSgpICE9IHBvcnRfb2JqLmRyaXZlcl9uYW1lKCkgaWYgaXQg
YmxvYXRzIHJlc3VsdHMuanNvbiB0b28gbXVjaC4KKyAgICAgICAgICAgICAgICB0ZXN0X2RpY3Rb
J2NyYXNoZWRfcHJvY2VzcyddID0gZmFpbHVyZS5jcmFzaGVkX3Byb2Nlc3NfbmFtZSgpCisKICAg
ICAgICAgaWYgdGVzdF9mYWlsdXJlcy5GYWlsdXJlUmVmdGVzdE1pc21hdGNoRGlkTm90T2NjdXIg
aW4gZmFpbHVyZV90eXBlczoKICAgICAgICAgICAgIHRlc3RfZGljdFsnaXNfbWlzbWF0Y2hfcmVm
dGVzdCddID0gVHJ1ZQogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9zaW5nbGVfdGVzdF9ydW5uZXIucHkgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9zaW5nbGVfdGVzdF9ydW5u
ZXIucHkKaW5kZXggYzM0MWY1YTkxZWIyYzA3YWI5YmJlNzQzZDU1YzVkZGY1OGQ1Y2RhNS4uYWUw
YTgwMzcwNGQ1NDMxNDc4YTRhNjlhNzdiZGIxMGUzZTI1ZmE0YiAxMDA2NDQKLS0tIGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2Uvc2luZ2xlX3Rlc3Rf
cnVubmVyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91
dF9wYWNrYWdlL3NpbmdsZV90ZXN0X3J1bm5lci5weQpAQCAtMjA1LDggKzIwNSw5IEBAIGNsYXNz
IFNpbmdsZVRlc3RSdW5uZXI6CiAgICAgICAgICIiIgogICAgICAgICBmYWlsdXJlcyA9IFtdCiAg
ICAgICAgIGZzID0gc2VsZi5fcG9ydC5fZmlsZXN5c3RlbQorICAgICAgICBpc19yZWZ0ZXN0ID0g
Ym9vbChyZWZlcmVuY2VfZmlsZW5hbWUpCiAgICAgICAgIGlmIGRyaXZlcl9vdXRwdXQudGltZW91
dDoKLSAgICAgICAgICAgIGZhaWx1cmVzLmFwcGVuZCh0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVUaW1l
b3V0KGJvb2wocmVmZXJlbmNlX2ZpbGVuYW1lKSkpCisgICAgICAgICAgICBmYWlsdXJlcy5hcHBl
bmQodGVzdF9mYWlsdXJlcy5GYWlsdXJlVGltZW91dChpc19yZWZ0ZXN0PWlzX3JlZnRlc3QpKQog
CiAgICAgICAgIGlmIHJlZmVyZW5jZV9maWxlbmFtZToKICAgICAgICAgICAgIHRlc3RuYW1lID0g
c2VsZi5fcG9ydC5yZWxhdGl2ZV90ZXN0X2ZpbGVuYW1lKHJlZmVyZW5jZV9maWxlbmFtZSkKQEAg
LTIxNCwxMiArMjE1LDEwIEBAIGNsYXNzIFNpbmdsZVRlc3RSdW5uZXI6CiAgICAgICAgICAgICB0
ZXN0bmFtZSA9IHNlbGYuX3Rlc3RuYW1lCiAKICAgICAgICAgaWYgZHJpdmVyX291dHB1dC5jcmFz
aDoKLSAgICAgICAgICAgIGZhaWx1cmVzLmFwcGVuZCh0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVDcmFz
aChib29sKHJlZmVyZW5jZV9maWxlbmFtZSkpKQotICAgICAgICAgICAgX2xvZy5kZWJ1ZygiJXMg
U3RhY2t0cmFjZSBmb3IgJXM6XG4lcyIgJSAoc2VsZi5fd29ya2VyX25hbWUsIHRlc3RuYW1lLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJp
dmVyX291dHB1dC5lcnJvcikpCisgICAgICAgICAgICBmYWlsdXJlcy5hcHBlbmQodGVzdF9mYWls
dXJlcy5GYWlsdXJlQ3Jhc2gocHJvY2Vzc19uYW1lPWRyaXZlcl9vdXRwdXQuY3Jhc2hlZF9wcm9j
ZXNzX25hbWUsIGlzX3JlZnRlc3Q9aXNfcmVmdGVzdCkpCisgICAgICAgICAgICBfbG9nLmRlYnVn
KCIlcyBTdGFja3RyYWNlIGZvciAlczpcbiVzIiAlIChkcml2ZXJfb3V0cHV0LmNyYXNoZWRfcHJv
Y2Vzc19uYW1lLCB0ZXN0bmFtZSwgZHJpdmVyX291dHB1dC5lcnJvcikpCiAgICAgICAgIGVsaWYg
ZHJpdmVyX291dHB1dC5lcnJvcjoKLSAgICAgICAgICAgIF9sb2cuZGVidWcoIiVzICVzIG91dHB1
dCBzdGRlcnIgbGluZXM6XG4lcyIgJSAoc2VsZi5fd29ya2VyX25hbWUsIHRlc3RuYW1lLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
cml2ZXJfb3V0cHV0LmVycm9yKSkKKyAgICAgICAgICAgIF9sb2cuZGVidWcoIiVzICVzIG91dHB1
dCBzdGRlcnIgbGluZXM6XG4lcyIgJSAoc2VsZi5fd29ya2VyX25hbWUsIHRlc3RuYW1lLCBkcml2
ZXJfb3V0cHV0LmVycm9yKSkKICAgICAgICAgcmV0dXJuIGZhaWx1cmVzCiAKICAgICBkZWYgX2Nv
bXBhcmVfb3V0cHV0KHNlbGYsIGRyaXZlcl9vdXRwdXQsIGV4cGVjdGVkX2RyaXZlcl9vdXRwdXQp
OgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0
X3BhY2thZ2UvdGVzdF9leHBlY3RhdGlvbnMucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0aW9ucy5weQppbmRleCA4ZWVl
NjI3YzBmYmViYzA0ZDVlNjg4NTVkMzJlMDVkYWQ2MDc0OGU2Li5hYzk3YjM4ZjhmZDRkYzdhZmJl
ZjUxZTQwZmU1ZTY3YjAxNTQ1OWY4IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0aW9ucy5weQorKysgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2V4
cGVjdGF0aW9ucy5weQpAQCAtMTg4LDYgKzE4OCw3IEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvbnM6
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElNQUdFX1BMVVNfVEVYVDogKCdpbWFn
ZSBhbmQgdGV4dCBtaXNtYXRjaCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdpbWFnZSBhbmQgdGV4dCBtaXNtYXRjaCcpLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBBVURJTzogKCdhdWRpbyBtaXNtYXRjaCcsICdhdWRpbyBtaXNt
YXRjaCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEZJWE1FOiBUaGlzIGRl
c2NyaXB0aW9uIGlzIHdyb25nIGZvciBXZWJLaXQyLgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDUkFTSDogKCdEdW1wUmVuZGVyVHJlZSBjcmFzaCcsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ0R1bXBSZW5kZXJUcmVlIGNyYXNoZXMnKSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVElNRU9VVDogKCd0ZXN0IHRpbWVkIG91dCcsICd0
ZXN0cyB0aW1lZCBvdXQnKSwKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZmFpbHVyZXMucHkgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2ZhaWx1cmVzLnB5Cmlu
ZGV4IGQyYmI3NjFiMjI1ZWIxYjNjNWUzNWE0YjkzNDM5ODY3NDUxNDY0NTUuLjU5ZmY1MDk4OGQz
ZjcxYjc4MGQwYzZjYjk3NzRiNzM3ZTdjYmVkMzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZmFpbHVyZXMucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVz
dF9mYWlsdXJlcy5weQpAQCAtMTAzLDggKzEwMyw4IEBAIGNsYXNzIFRlc3RGYWlsdXJlKG9iamVj
dCk6CiAgICAgICAgICIiIlJldHVybnMgdGhlIHN0cmluZy9KU09OIHJlcHJlc2VudGF0aW9uIG9m
IGEgVGVzdEZhaWx1cmUuIiIiCiAgICAgICAgIHJldHVybiBjUGlja2xlLmR1bXBzKHNlbGYpCiAK
LSAgICBkZWYgc2hvdWxkX2tpbGxfZHVtcF9yZW5kZXJfdHJlZShzZWxmKToKLSAgICAgICAgIiIi
UmV0dXJucyBUcnVlIGlmIHdlIHNob3VsZCBraWxsIER1bXBSZW5kZXJUcmVlIGJlZm9yZSB0aGUg
bmV4dCB0ZXN0LiIiIgorICAgIGRlZiBkcml2ZXJfbmVlZHNfcmVzdGFydChzZWxmKToKKyAgICAg
ICAgIiIiUmV0dXJucyBUcnVlIGlmIHdlIHNob3VsZCBraWxsIER1bXBSZW5kZXJUcmVlL1dlYktp
dFRlc3RSdW5uZXIgYmVmb3JlIHRoZSBuZXh0IHRlc3QuIiIiCiAgICAgICAgIHJldHVybiBGYWxz
ZQogCiAKQEAgLTExNywyMSArMTE3LDI1IEBAIGNsYXNzIEZhaWx1cmVUaW1lb3V0KFRlc3RGYWls
dXJlKToKICAgICBkZWYgbWVzc2FnZSgpOgogICAgICAgICByZXR1cm4gIlRlc3QgdGltZWQgb3V0
IgogCi0gICAgZGVmIHNob3VsZF9raWxsX2R1bXBfcmVuZGVyX3RyZWUoc2VsZik6CisgICAgZGVm
IGRyaXZlcl9uZWVkc19yZXN0YXJ0KHNlbGYpOgogICAgICAgICByZXR1cm4gVHJ1ZQogCiAKIGNs
YXNzIEZhaWx1cmVDcmFzaChUZXN0RmFpbHVyZSk6Ci0gICAgIiIiRHVtcFJlbmRlclRyZWUgY3Jh
c2hlZC4iIiIKLSAgICBkZWYgX19pbml0X18oc2VsZiwgaXNfcmVmdGVzdD1GYWxzZSk6CisgICAg
IiIiQSBwcm9jZXNzIGNyYXNoZWQgZHVyaW5nIHRlc3RpbmcgKER1bXBSZW5kZXJUcmVlLCBXZWJL
aXRUZXN0UnVubmVyLCBXZWJQcm9jZXNzLCBldGMuKSIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBwcm9jZXNzX25hbWU9Tm9uZSwgaXNfcmVmdGVzdD1GYWxzZSk6CisgICAgICAgIHNlbGYuX2Ny
YXNoZWRfcHJvY2Vzc19uYW1lID0gcHJvY2Vzc19uYW1lIG9yICJEdW1wUmVuZGVyVHJlZSIKICAg
ICAgICAgc2VsZi5pc19yZWZ0ZXN0ID0gaXNfcmVmdGVzdAogCiAgICAgQHN0YXRpY21ldGhvZAog
ICAgIGRlZiBtZXNzYWdlKCk6Ci0gICAgICAgICMgRklYTUU6IFRoaXMgaXMgd3JvbmcgZm9yIFdl
YktpdDIgKHdoaWNoIHVzZXMgV2ViS2l0VGVzdFJ1bm5lcikuCisgICAgICAgICMgRklYTUU6IFRo
aXMgaXMgd3JvbmcgZm9yIFdlYktpdDIsIGJ1dCBzaW5jZSBpdCdzIHN0YXRpYywgbm8gZWFzeSB3
YXkgdG8gZml4IGl0LgogICAgICAgICByZXR1cm4gIkR1bXBSZW5kZXJUcmVlIGNyYXNoZWQiCiAK
LSAgICBkZWYgc2hvdWxkX2tpbGxfZHVtcF9yZW5kZXJfdHJlZShzZWxmKToKKyAgICBkZWYgY3Jh
c2hlZF9wcm9jZXNzX25hbWUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9jcmFzaGVkX3By
b2Nlc3NfbmFtZQorCisgICAgZGVmIGRyaXZlcl9uZWVkc19yZXN0YXJ0KHNlbGYpOgogICAgICAg
ICByZXR1cm4gVHJ1ZQogCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZmFpbHVyZXNfdW5pdHRlc3QucHkgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2ZhaWx1
cmVzX3VuaXR0ZXN0LnB5CmluZGV4IGI3Y2JkNGEyOGE0YmU3YjllMDY1ODhjYWFkY2E5NDY2Nzcw
YTIyYmEuLjkxNTgxZWQwNmFkOWFhZGJkNDM1MmU3YTU5NTYyZjUyNmM3M2E0ZDUgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rl
c3RfZmFpbHVyZXNfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9mYWlsdXJlc191bml0dGVzdC5weQpAQCAtNDUs
MjQgKzQ1LDYgQEAgY2xhc3MgVGVzdEZhaWx1cmVzZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAg
ICAgICAgIyBBbHNvIHRlc3QgdGhhdCAhPSBpcyBpbXBsZW1lbnRlZC4KICAgICAgICAgc2VsZi5h
c3NlcnRGYWxzZShmYWlsdXJlX29iaiAhPSBuZXdfZmFpbHVyZV9vYmopCiAKLSAgICBkZWYgdGVz
dF9jcmFzaChzZWxmKToKLSAgICAgICAgRmFpbHVyZUNyYXNoKCkKLQotICAgIGRlZiB0ZXN0X2hh
c2hfaW5jb3JyZWN0KHNlbGYpOgotICAgICAgICBGYWlsdXJlSW1hZ2VIYXNoSW5jb3JyZWN0KCkK
LQotICAgIGRlZiB0ZXN0X21pc3Npbmcoc2VsZik6Ci0gICAgICAgIEZhaWx1cmVNaXNzaW5nUmVz
dWx0KCkKLQotICAgIGRlZiB0ZXN0X21pc3NpbmdfaW1hZ2Uoc2VsZik6Ci0gICAgICAgIEZhaWx1
cmVNaXNzaW5nSW1hZ2UoKQotCi0gICAgZGVmIHRlc3RfbWlzc2luZ19pbWFnZV9oYXNoKHNlbGYp
OgotICAgICAgICBGYWlsdXJlTWlzc2luZ0ltYWdlSGFzaCgpCi0KLSAgICBkZWYgdGVzdF90aW1l
b3V0KHNlbGYpOgotICAgICAgICBGYWlsdXJlVGltZW91dCgpCi0KICAgICBkZWYgdGVzdF91bmtu
b3duX2ZhaWx1cmVfdHlwZShzZWxmKToKICAgICAgICAgY2xhc3MgVW5rbm93bkZhaWx1cmUoVGVz
dEZhaWx1cmUpOgogICAgICAgICAgICAgcGFzcwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9yZXN1bHRfd3JpdGVyLnB5
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVz
dF9yZXN1bHRfd3JpdGVyLnB5CmluZGV4IGJhNDUwMTA3YjIyODAzNTViZGU2MzZmYjIyNzY3MGM0
ZDRkNjcyMzcuLjNlYzY5ZGQzN2RmMzM3ZTFhNTc2OTJhNTIzOWExYWQ0MzUyODlhZGEgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdl
L3Rlc3RfcmVzdWx0X3dyaXRlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X3Jlc3VsdF93cml0ZXIucHkKQEAgLTY5LDEwICs2
OSw3IEBAIGRlZiB3cml0ZV90ZXN0X3Jlc3VsdChwb3J0LCBmaWxlbmFtZSwgZHJpdmVyX291dHB1
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2ZhaWx1cmVzLkZhaWx1
cmVNaXNzaW5nQXVkaW8pKToKICAgICAgICAgICAgIHdyaXRlci53cml0ZV9hdWRpb19maWxlcyhk
cml2ZXJfb3V0cHV0LmF1ZGlvLCBleHBlY3RlZF9kcml2ZXJfb3V0cHV0LmF1ZGlvKQogICAgICAg
ICBlbGlmIGlzaW5zdGFuY2UoZmFpbHVyZSwgdGVzdF9mYWlsdXJlcy5GYWlsdXJlQ3Jhc2gpOgot
ICAgICAgICAgICAgaWYgZmFpbHVyZS5pc19yZWZ0ZXN0OgotICAgICAgICAgICAgICAgIHdyaXRl
ci53cml0ZV9jcmFzaF9yZXBvcnQoZXhwZWN0ZWRfZHJpdmVyX291dHB1dC5lcnJvcikKLSAgICAg
ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgd3JpdGVyLndyaXRlX2NyYXNoX3JlcG9ydChk
cml2ZXJfb3V0cHV0LmVycm9yKQorICAgICAgICAgICAgd3JpdGVyLndyaXRlX2NyYXNoX3JlcG9y
dChkcml2ZXJfb3V0cHV0KQogICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZmFpbHVyZSwgdGVzdF9m
YWlsdXJlcy5GYWlsdXJlUmVmdGVzdE1pc21hdGNoKToKICAgICAgICAgICAgIHdyaXRlci53cml0
ZV9pbWFnZV9maWxlcyhkcml2ZXJfb3V0cHV0LmltYWdlLCBleHBlY3RlZF9kcml2ZXJfb3V0cHV0
LmltYWdlKQogICAgICAgICAgICAgd3JpdGVyLmNyZWF0ZV9pbWFnZV9kaWZmX2FuZF93cml0ZV9y
ZXN1bHQoZHJpdmVyX291dHB1dC5pbWFnZSwgZXhwZWN0ZWRfZHJpdmVyX291dHB1dC5pbWFnZSkK
QEAgLTE2OCwxNiArMTY1LDE5IEBAIGNsYXNzIFRlc3RSZXN1bHRXcml0ZXIob2JqZWN0KToKICAg
ICAgICAgZnMubWF5YmVfbWFrZV9kaXJlY3RvcnkoZnMuZGlybmFtZShmaWxlbmFtZSkpCiAgICAg
ICAgIGZzLndyaXRlX2JpbmFyeV9maWxlKGZpbGVuYW1lLCBlcnJvcikKIAotICAgIGRlZiB3cml0
ZV9jcmFzaF9yZXBvcnQoc2VsZiwgZXJyb3IpOgorICAgIGRlZiB3cml0ZV9jcmFzaF9yZXBvcnQo
c2VsZiwgZHJpdmVyX291dHB1dCk6CiAgICAgICAgIGZzID0gc2VsZi5fcG9ydC5fZmlsZXN5c3Rl
bQogICAgICAgICBmaWxlbmFtZSA9IHNlbGYub3V0cHV0X2ZpbGVuYW1lKHNlbGYuRklMRU5BTUVf
U1VGRklYX0NSQVNIX0xPRyArICIudHh0IikKICAgICAgICAgZnMubWF5YmVfbWFrZV9kaXJlY3Rv
cnkoZnMuZGlybmFtZShmaWxlbmFtZSkpCiAgICAgICAgICMgRklYTUU6IFdlIHNob3VsZG4ndCBi
ZSBncmFiYmluZyBwcml2YXRlIG1lbWJlcnMgb2YgcG9ydC4KICAgICAgICAgY3Jhc2hfbG9ncyA9
IENyYXNoTG9ncyhmcykKLSAgICAgICAgbG9nID0gY3Jhc2hfbG9ncy5maW5kX25ld2VzdF9sb2co
c2VsZi5fcG9ydC5kcml2ZXJfbmFtZSgpKQorICAgICAgICAjIElmIHRoZSBkcml2ZXJfb3V0cHV0
IGRvZXMgbm90IGNvbnRhaW4gYSBwcm9jZXNzIG5hbWUsIGFzc3VtZSB0aGUgZGVmYXVsdCBkcml2
ZXIKKyAgICAgICAgIyBmb3IgdGhlIHBvcnQgY3Jhc2hlZC4gKFRoaXMgbWFrZXMgdW5pdC10ZXN0
aW5nIGVhc3kgYW5kIHN1cHBvcnRzIGxlZ2FjeSBjb2RlLikKKyAgICAgICAgY3Jhc2hlZF9wcm9j
ZXNzID0gZHJpdmVyX291dHB1dC5jcmFzaGVkX3Byb2Nlc3NfbmFtZSBvciBzZWxmLl9wb3J0LmRy
aXZlcl9uYW1lKCkKKyAgICAgICAgbG9nID0gY3Jhc2hfbG9ncy5maW5kX25ld2VzdF9sb2coY3Jh
c2hlZF9wcm9jZXNzKQogICAgICAgICAjIENyYXNoTG9ncyBkb2Vzbid0IHN1cHBvcnQgZXZlcnkg
cGxhdGZvcm0sIHNvIHdlIGZhbGwgYmFjayB0bwogICAgICAgICAjIGluY2x1ZGluZyB0aGUgc3Rk
ZXJyIG91dHB1dCwgd2hpY2ggaXMgYWRtaXR0ZWRseSBzb21ld2hhdCByZWR1bmRhbnQuCi0gICAg
ICAgIGZzLndyaXRlX3RleHRfZmlsZShmaWxlbmFtZSwgbG9nIGlmIGxvZyBlbHNlIGVycm9yKQor
ICAgICAgICBmcy53cml0ZV90ZXh0X2ZpbGUoZmlsZW5hbWUsIGxvZyBpZiBsb2cgZWxzZSBkcml2
ZXJfb3V0cHV0LmVycm9yKQogCiAgICAgZGVmIHdyaXRlX3RleHRfZmlsZXMoc2VsZiwgYWN0dWFs
X3RleHQsIGV4cGVjdGVkX3RleHQpOgogICAgICAgICBzZWxmLndyaXRlX291dHB1dF9maWxlcygi
LnR4dCIsIGFjdHVhbF90ZXh0LCBleHBlY3RlZF90ZXh0KQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2Uvd29ya2VyLnB5IGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2Uvd29ya2VyLnB5
CmluZGV4IDFmNTRhODhmYjRkNGM3MzViMjgyZDM3MDY2M2M0YWJmZDhlYjRhNjMuLmVhNDU3ZThm
NDZlNTYyMjBkZmJkMzVjMzM1NjNhMTY5MzE1YTJhNzEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3dvcmtlci5weQorKysgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS93b3JrZXIu
cHkKQEAgLTE3OSw3ICsxNzksNyBAQCBjbGFzcyBXb3JrZXIobWFuYWdlcl93b3JrZXJfYnJva2Vy
LkFic3RyYWN0V29ya2VyKToKIAogICAgICAgICBpZiByZXN1bHQuZmFpbHVyZXM6CiAgICAgICAg
ICAgICAjIENoZWNrIGFuZCBraWxsIER1bXBSZW5kZXJUcmVlIGlmIHdlIG5lZWQgdG8uCi0gICAg
ICAgICAgICBpZiBhbnkoW2Yuc2hvdWxkX2tpbGxfZHVtcF9yZW5kZXJfdHJlZSgpIGZvciBmIGlu
IHJlc3VsdC5mYWlsdXJlc10pOgorICAgICAgICAgICAgaWYgYW55KFtmLmRyaXZlcl9uZWVkc19y
ZXN0YXJ0KCkgZm9yIGYgaW4gcmVzdWx0LmZhaWx1cmVzXSk6CiAgICAgICAgICAgICAgICAgc2Vs
Zi5raWxsX2RyaXZlcigpCiAgICAgICAgICAgICAgICAgIyBSZXNldCB0aGUgYmF0Y2ggY291bnQg
c2luY2UgdGhlIHNoZWxsIGp1c3QgYm91bmNlZC4KICAgICAgICAgICAgICAgICBzZWxmLl9iYXRj
aF9jb3VudCA9IDAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvYmFzZS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvYmFzZS5weQppbmRleCBlMTk0MmQxNmYwOTNjNjA1ZDc5ZDI5M2ZhN2M5OTVhMjhjZDhkNGQy
Li40ZjIxMDI1NTFmZTkzOWMyODA1NjI3MGMzODdmYzJiMzhiODU1ODgzIDEwMDc1NQotLS0gYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CkBAIC05MjMsNyAr
OTIzLDggQEAgY2xhc3MgRHJpdmVyT3V0cHV0KG9iamVjdCk6CiAgICAgIiIiR3JvdXBzIGluZm9y
bWF0aW9uIGFib3V0IGEgb3V0cHV0IGZyb20gZHJpdmVyIGZvciBlYXN5IHBhc3Npbmcgb2YgZGF0
YS4iIiIKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXh0LCBpbWFnZSwgaW1hZ2VfaGFzaCwg
YXVkaW8sCi0gICAgICAgICAgICAgICAgIGNyYXNoPUZhbHNlLCB0ZXN0X3RpbWU9MCwgdGltZW91
dD1GYWxzZSwgZXJyb3I9JycpOgorICAgICAgICAgICAgICAgICBjcmFzaD1GYWxzZSwgdGVzdF90
aW1lPTAsIHRpbWVvdXQ9RmFsc2UsIGVycm9yPScnLAorICAgICAgICAgICAgICAgICBjcmFzaGVk
X3Byb2Nlc3NfbmFtZT1Ob25lKToKICAgICAgICAgIiIiSW5pdGlhbGl6ZXMgYSBUZXN0T3V0cHV0
IG9iamVjdC4KIAogICAgICAgICBBcmdzOgpAQCAtOTMyLDYgKzkzMyw3IEBAIGNsYXNzIERyaXZl
ck91dHB1dChvYmplY3QpOgogICAgICAgICAgIGltYWdlX2hhc2g6IGEgc3RyaW5nIGNvbnRhaW5p
bmcgdGhlIGNoZWNrc3VtIG9mIHRoZSBpbWFnZQogICAgICAgICAgIGF1ZGlvOiBjb250ZW50cyBv
ZiBhbiBhdWRpbyBzdHJlYW0sIGlmIGFueSAoaW4gV0FWIGZvcm1hdCkKICAgICAgICAgICBjcmFz
aDogYSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgZHJpdmVyIGNyYXNoZWQgb24gdGhl
IHRlc3QKKyAgICAgICAgICBjcmFzaGVkX3Byb2Nlc3NfbmFtZTogYSBzdHJpbmcgY29udGFpbmlu
ZyB0aGUgbmFtZSBvZiB0aGUgdGVzdCBwcm9jZXNzIHdoaWNoIGNyYXNoZWQKICAgICAgICAgICB0
ZXN0X3RpbWU6IHRoZSB0aW1lIHRoZSB0ZXN0IHRvb2sgdG8gZXhlY3V0ZQogICAgICAgICAgIHRp
bWVvdXQ6IGEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZWh0ZXIgdGhlIHRlc3QgdGltZWQgb3V0CiAg
ICAgICAgICAgZXJyb3I6IGFueSB1bmV4cGVjdGVkIG9yIGFkZGl0aW9uYWwgKG9yIGVycm9yKSB0
ZXh0IG91dHB1dApAQCAtOTQxLDYgKzk0Myw3IEBAIGNsYXNzIERyaXZlck91dHB1dChvYmplY3Qp
OgogICAgICAgICBzZWxmLmltYWdlX2hhc2ggPSBpbWFnZV9oYXNoCiAgICAgICAgIHNlbGYuYXVk
aW8gPSBhdWRpbwogICAgICAgICBzZWxmLmNyYXNoID0gY3Jhc2gKKyAgICAgICAgc2VsZi5jcmFz
aGVkX3Byb2Nlc3NfbmFtZSA9IGNyYXNoZWRfcHJvY2Vzc19uYW1lCiAgICAgICAgIHNlbGYudGVz
dF90aW1lID0gdGVzdF90aW1lCiAgICAgICAgIHNlbGYudGltZW91dCA9IHRpbWVvdXQKICAgICAg
ICAgc2VsZi5lcnJvciA9IGVycm9yCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L3NlcnZlcl9wcm9jZXNzLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC9zZXJ2ZXJfcHJvY2Vzcy5weQppbmRleCA2NDMyMTZlY2Qy
YTgzMDZiOWZiNDQwMmU2NGJmMWJkNzZhMGE1YWVlLi5hNDVlNjdkZGU3MzM4YzhhYTRmYTI0Nzg5
ZmY4MGY1NTg3ZDcyMTVlIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L3NlcnZlcl9wcm9jZXNzLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvc2VydmVyX3Byb2Nlc3MucHkKQEAgLTY2LDYgKzY2LDkgQEAg
Y2xhc3MgU2VydmVyUHJvY2VzczoKICAgICAgICAgc2VsZi50aW1lZF9vdXQgPSBGYWxzZQogICAg
ICAgICBzZWxmLmVycm9yID0gJycKIAorICAgIGRlZiBwcm9jZXNzX25hbWUoc2VsZik6CisgICAg
ICAgIHJldHVybiBzZWxmLl9uYW1lCisKICAgICBkZWYgX3N0YXJ0KHNlbGYpOgogICAgICAgICBp
ZiBzZWxmLl9wcm9jOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiJXMgYWxyZWFkeSBy
dW5uaW5nIiAlIHNlbGYuX25hbWUpCkBAIC0xNTUsOCArMTU4LDcgQEAgY2xhc3MgU2VydmVyUHJv
Y2VzczoKICAgICAgICAgICAgICAgICBzdHJpbmcgaXMgcmV0dXJuZWQuCiAgICAgICAgICIiIgog
ICAgICAgICBpZiBzaXplIDw9IDA6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdTZXJ2
ZXJQcm9jZXNzLnJlYWQoKSBjYWxsZWQgd2l0aCBhICcKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ25vbi1wb3NpdGl2ZSBzaXplOiAlZCAnICUgc2l6ZSkKKyAgICAgICAgICAgIHJhaXNl
IFZhbHVlRXJyb3IoJ1NlcnZlclByb2Nlc3MucmVhZCgpIGNhbGxlZCB3aXRoIGEgbm9uLXBvc2l0
aXZlIHNpemU6ICVkICcgJSBzaXplKQogICAgICAgICByZXR1cm4gc2VsZi5fcmVhZCh0aW1lb3V0
LCBzaXplKQogCiAgICAgZGVmIF9jaGVja19mb3JfY3Jhc2goc2VsZik6CkBAIC0yMTAsNiArMjEy
LDcgQEAgY2xhc3MgU2VydmVyUHJvY2VzczoKICAgICAgICAgICAgIGlmIGluZGV4ID4gMCBvciBz
ZWxmLmNyYXNoZWQgb3Igc2VsZi50aW1lZF9vdXQ6CiAgICAgICAgICAgICAgICAgb3V0cHV0ID0g
c2VsZi5fb3V0cHV0WzA6aW5kZXhdCiAgICAgICAgICAgICAgICAgc2VsZi5fb3V0cHV0ID0gc2Vs
Zi5fb3V0cHV0W2luZGV4Ol0KKyAgICAgICAgICAgICAgICAjIEZJWE1FOiBXZSBzaG91bGQgYmUg
dXBkYXRpbmcgYm90aCBvdXRwdXQgYW5kIGVycm9yIGFuZCByZXR1cm5pbmcgYm90aC4KICAgICAg
ICAgICAgICAgICByZXR1cm4gb3V0cHV0CiAKICAgICAgICAgICAgICMgTm9wZSAtIHdhaXQgZm9y
IG1vcmUgZGF0YS4KQEAgLTI0OSw4ICsyNTIsNyBAQCBjbGFzcyBTZXJ2ZXJQcm9jZXNzOgogICAg
ICAgICAgICAgIyBwb2xsKCkgaXMgbm90IHRocmVhZHNhZmUgYW5kIGNhbiB0aHJvdyBPU0Vycm9y
IGR1ZSB0bzoKICAgICAgICAgICAgICMgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTE3MzE3
MTcKICAgICAgICAgICAgIGlmIHNlbGYuX3Byb2MucG9sbCgpIGlzIE5vbmU6Ci0gICAgICAgICAg
ICAgICAgX2xvZy53YXJuaW5nKCdzdG9wcGluZyAlcyB0aW1lZCBvdXQsIGtpbGxpbmcgaXQnICUK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbmFtZSkKKyAgICAgICAgICAgICAg
ICBfbG9nLndhcm5pbmcoJ3N0b3BwaW5nICVzIHRpbWVkIG91dCwga2lsbGluZyBpdCcgJSBzZWxm
Ll9uYW1lKQogICAgICAgICAgICAgICAgIHNlbGYuX2V4ZWN1dGl2ZS5raWxsX3Byb2Nlc3Moc2Vs
Zi5fcHJvYy5waWQpCiAgICAgICAgICAgICAgICAgX2xvZy53YXJuaW5nKCdraWxsZWQnKQogICAg
ICAgICBzZWxmLl9yZXNldCgpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvd2Via2l0LnB5CmluZGV4IDJlYmFjZjU1MDAxNzY5MDY4NjVjNWRlNWM2ZDQ2
YWRmOTEwY2NkYWUuLjIwNDI1YWZlNTM5NjMxN2U2OGE1MDMyZTk5MWZiYTA0NTA0ZTUwNGUgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0
LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0
LnB5CkBAIC0xMzIsOCArMTMyLDcgQEAgY2xhc3MgV2ViS2l0UG9ydChiYXNlLlBvcnQpOgogICAg
ICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIHJldHVybiBUcnVlCiAKLSAgICBkZWYgZGlm
Zl9pbWFnZShzZWxmLCBleHBlY3RlZF9jb250ZW50cywgYWN0dWFsX2NvbnRlbnRzLAotICAgICAg
ICAgICAgICAgICAgIGRpZmZfZmlsZW5hbWU9Tm9uZSk6CisgICAgZGVmIGRpZmZfaW1hZ2Uoc2Vs
ZiwgZXhwZWN0ZWRfY29udGVudHMsIGFjdHVhbF9jb250ZW50cywgZGlmZl9maWxlbmFtZT1Ob25l
KToKICAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgdGhlIHR3byBmaWxlcyBhcmUgZGlmZmVyZW50
LiBBbHNvIHdyaXRlIGEgZGVsdGEKICAgICAgICAgaW1hZ2Ugb2YgdGhlIHR3byBpbWFnZXMgaW50
byB8ZGlmZl9maWxlbmFtZXwgaWYgaXQgaXMgbm90IE5vbmUuIiIiCiAKQEAgLTM4Miw2ICszODEs
MTEgQEAgY2xhc3MgV2ViS2l0RHJpdmVyKGJhc2UuRHJpdmVyKToKICAgICAgICAgc2VsZi5fd29y
a2VyX251bWJlciA9IHdvcmtlcl9udW1iZXIKICAgICAgICAgc2VsZi5fcG9ydCA9IHBvcnQKICAg
ICAgICAgc2VsZi5fZHJpdmVyX3RlbXBkaXIgPSBwb3J0Ll9maWxlc3lzdGVtLm1rZHRlbXAocHJl
Zml4PSclcy0nICUgc2VsZi5fcG9ydC5kcml2ZXJfbmFtZSgpKQorICAgICAgICAjIFdlYktpdFRl
c3RSdW5uZXIgY2FuIHJlcG9ydCBiYWNrIHN1YnByb2Nlc3MgY3Jhc2hlcyBieSBwcmludGluZwor
ICAgICAgICAjICIjQ1JBU0hFRCAtIFBST0NFU1NOQU1FIi4gIFNpbmNlIHRob3NlIGNhbiBoYXBw
ZW4gYXQgYW55IHRpbWUKKyAgICAgICAgIyBhbmQgU2VydmVyUHJvY2VzcyB3b24ndCBiZSBhd2Fy
ZSBvZiB0aGVtIChzaW5jZSB0aGUgYWN0dWFsIHRvb2wKKyAgICAgICAgIyBkaWRuJ3QgY3Jhc2gs
IGp1c3QgYSBzdWJwcm9jZXNzKSB3ZSByZWNvcmQgdGhlIGNyYXNoZWQgc3VicHJvY2VzcyBuYW1l
IGhlcmUuCisgICAgICAgIHNlbGYuX2NyYXNoZWRfc3VicHJvY2Vzc19uYW1lID0gTm9uZQogCiAg
ICAgZGVmIF9fZGVsX18oc2VsZik6CiAgICAgICAgIHNlbGYuX3BvcnQuX2ZpbGVzeXN0ZW0ucm10
cmVlKHN0cihzZWxmLl9kcml2ZXJfdGVtcGRpcikpCkBAIC00MDcsNiArNDExLDcgQEAgY2xhc3Mg
V2ViS2l0RHJpdmVyKGJhc2UuRHJpdmVyKToKICAgICAgICAgZW52aXJvbm1lbnRbJ0RZTERfRlJB
TUVXT1JLX1BBVEgnXSA9IHNlbGYuX3BvcnQuX2J1aWxkX3BhdGgoKQogICAgICAgICAjIEZJWE1F
OiBXZSdyZSBhc3N1bWluZyB0aGF0IFdlYktpdFRlc3RSdW5uZXIgY2hlY2tzIHRoaXMgRHVtcFJl
bmRlclRyZWUtbmFtZWQgZW52aXJvbm1lbnQgdmFyaWFibGUuCiAgICAgICAgIGVudmlyb25tZW50
WydEVU1QUkVOREVSVFJFRV9URU1QJ10gPSBzdHIoc2VsZi5fZHJpdmVyX3RlbXBkaXIpCisgICAg
ICAgIHNlbGYuX2NyYXNoZWRfc3VicHJvY2Vzc19uYW1lID0gTm9uZQogICAgICAgICBzZWxmLl9z
ZXJ2ZXJfcHJvY2VzcyA9IHNlcnZlcl9wcm9jZXNzLlNlcnZlclByb2Nlc3Moc2VsZi5fcG9ydCwg
c2VsZi5fcG9ydC5kcml2ZXJfbmFtZSgpLCBzZWxmLmNtZF9saW5lKCksIGVudmlyb25tZW50KQog
CiAgICAgZGVmIHBvbGwoc2VsZik6CkBAIC00MTcsMTEgKzQyMiwxOSBAQCBjbGFzcyBXZWJLaXRE
cml2ZXIoYmFzZS5Ecml2ZXIpOgogICAgICAgICBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5zdGFydCgp
CiAgICAgICAgIHJldHVybgogCi0gICAgZGVmIGRldGVjdGVkX2NyYXNoKHNlbGYpOgotICAgICAg
ICAjIEZJWE1FOiBXZSBjYW4ndCBqdXN0IGNoZWNrIHNlbGYuX3NlcnZlcl9wcm9jZXNzLmNyYXNo
ZWQgZm9yIHR3byByZWFzb25zOgotICAgICAgICAjIDEuIFdlYktpdFRlc3RSdW5uZXIgd2lsbCBw
cmludCAiI0NSQVNIRUQgLSBXZWJQcm9jZXNzIiBhbmQgdGhlbiBleGl0IGlmIHRoZSBXZWJQcm9j
ZXNzIGNyYXNoZXMuCi0gICAgICAgICMgMi4gQWRhbSBSb2JlbiB0ZWxscyBtZSBXaW5kb3dzIER1
bXBSZW5kZXJUcmVlIGNhbiBwcmludCAiI0NSQVNIRUQiIHlldCBzdGlsbCBleGl0IGNsZWFubHku
Ci0gICAgICAgIHJldHVybiBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5jcmFzaGVkCisgICAgZGVmIF9k
ZXRlY3RlZF9jcmFzaChzZWxmKToKKyAgICAgICAgIyBXZSBjYW4ndCBqdXN0IGNoZWNrIHNlbGYu
X3NlcnZlcl9wcm9jZXNzLmNyYXNoZWQgYmVjYXVzZSBXZWJLaXRUZXN0UnVubmVyCisgICAgICAg
ICMgY2FuIHJlcG9ydCBzdWJwcm9jZXNzIGNyYXNoZXMgYXQgYW55IHRpbWUgYnkgcHJpbnRpbmcK
KyAgICAgICAgIyAiI0NSQVNIRUQgLSBXZWJQcm9jZXNzIiwgd2Ugd2FudCB0byBjb3VudCB0aG9z
ZSBhcyBjcmFzaGVzIGFzIHdlbGwuCisgICAgICAgIHJldHVybiBzZWxmLl9zZXJ2ZXJfcHJvY2Vz
cy5jcmFzaGVkIG9yIHNlbGYuX2NyYXNoZWRfc3VicHJvY2Vzc19uYW1lCisKKyAgICBkZWYgX3N1
YnByb2Nlc3NfY3Jhc2hlZChzZWxmLCBzdWJwcm9jZXNzX25hbWUpOgorICAgICAgICBzZWxmLl9j
cmFzaGVkX3N1YnByb2Nlc3NfbmFtZSA9IHN1YnByb2Nlc3NfbmFtZQorCisgICAgZGVmIF9jcmFz
aGVkX3Byb2Nlc3NfbmFtZShzZWxmKToKKyAgICAgICAgaWYgbm90IHNlbGYuX2RldGVjdGVkX2Ny
YXNoKCk6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICByZXR1cm4gc2VsZi5fY3Jh
c2hlZF9zdWJwcm9jZXNzX25hbWUgb3Igc2VsZi5fc2VydmVyX3Byb2Nlc3MucHJvY2Vzc19uYW1l
KCkKIAogICAgIGRlZiBfY29tbWFuZF9mcm9tX2RyaXZlcl9pbnB1dChzZWxmLCBkcml2ZXJfaW5w
dXQpOgogICAgICAgICB1cmkgPSBzZWxmLl9wb3J0LmZpbGVuYW1lX3RvX3VyaShkcml2ZXJfaW5w
dXQuZmlsZW5hbWUpCkBAIC00MzQsNyArNDQ3LDcgQEAgY2xhc3MgV2ViS2l0RHJpdmVyKGJhc2Uu
RHJpdmVyKToKIAogICAgIGRlZiBfcmVhZF9maXJzdF9ibG9jayhzZWxmLCBkZWFkbGluZSk6CiAg
ICAgICAgICIiIlJlYWRzIGEgYmxvY2sgZnJvbSB0aGUgc2VydmVyX3Byb2Nlc3MgYW5kIHJldHVy
bnMgKHRleHRfY29udGVudCwgYXVkaW9fY29udGVudCkuIiIiCi0gICAgICAgIGlmIHNlbGYuZGV0
ZWN0ZWRfY3Jhc2goKToKKyAgICAgICAgaWYgc2VsZi5fZGV0ZWN0ZWRfY3Jhc2goKToKICAgICAg
ICAgICAgIHJldHVybiAoTm9uZSwgTm9uZSkKIAogICAgICAgICBibG9jayA9IHNlbGYuX3JlYWRf
YmxvY2soZGVhZGxpbmUpCkBAIC00NDQsNyArNDU3LDcgQEAgY2xhc3MgV2ViS2l0RHJpdmVyKGJh
c2UuRHJpdmVyKToKIAogICAgIGRlZiBfcmVhZF9vcHRpb25hbF9pbWFnZV9ibG9jayhzZWxmLCBk
ZWFkbGluZSk6CiAgICAgICAgICIiIlJlYWRzIGEgYmxvY2sgZnJvbSB0aGUgc2VydmVyX3Byb2Nl
c3MgYW5kIHJldHVybnMgKGltYWdlLCBhY3R1YWxfaW1hZ2VfaGFzaCkuIiIiCi0gICAgICAgIGlm
IHNlbGYuZGV0ZWN0ZWRfY3Jhc2goKToKKyAgICAgICAgaWYgc2VsZi5fZGV0ZWN0ZWRfY3Jhc2go
KToKICAgICAgICAgICAgIHJldHVybiAoTm9uZSwgTm9uZSkKIAogICAgICAgICBibG9jayA9IHNl
bGYuX3JlYWRfYmxvY2soZGVhZGxpbmUpCkBAIC00NzIsOCArNDg1LDIzIEBAIGNsYXNzIFdlYktp
dERyaXZlcihiYXNlLkRyaXZlcik6CiAgICAgICAgICMgRklYTUU6IFRoaXMgc2VlbXMgbGlrZSB0
aGUgd3Jvbmcgc2VjdGlvbiBvZiBjb2RlIHRvIGJlIHJlc2V0dGluZyBfc2VydmVyX3Byb2Nlc3Mu
ZXJyb3IuCiAgICAgICAgIHNlbGYuX3NlcnZlcl9wcm9jZXNzLmVycm9yID0gIiIKICAgICAgICAg
cmV0dXJuIGJhc2UuRHJpdmVyT3V0cHV0KHRleHQsIGltYWdlLCBhY3R1YWxfaW1hZ2VfaGFzaCwg
YXVkaW8sCi0gICAgICAgICAgICBjcmFzaD1zZWxmLmRldGVjdGVkX2NyYXNoKCksIHRlc3RfdGlt
ZT10aW1lLnRpbWUoKSAtIHN0YXJ0X3RpbWUsCi0gICAgICAgICAgICB0aW1lb3V0PXNlbGYuX3Nl
cnZlcl9wcm9jZXNzLnRpbWVkX291dCwgZXJyb3I9ZXJyb3IpCisgICAgICAgICAgICBjcmFzaD1z
ZWxmLl9kZXRlY3RlZF9jcmFzaCgpLCB0ZXN0X3RpbWU9dGltZS50aW1lKCkgLSBzdGFydF90aW1l
LAorICAgICAgICAgICAgdGltZW91dD1zZWxmLl9zZXJ2ZXJfcHJvY2Vzcy50aW1lZF9vdXQsIGVy
cm9yPWVycm9yLAorICAgICAgICAgICAgY3Jhc2hlZF9wcm9jZXNzX25hbWU9c2VsZi5fY3Jhc2hl
ZF9wcm9jZXNzX25hbWUoKSkKKworICAgIGRlZiBfY2hlY2tfZm9yX2RyaXZlcl9jcmFzaChzZWxm
KToKKyAgICAgICAgIyBGSVhNRTogVGhlc2Ugc2VsZi5fc2VydmVyX3Byb2Nlc3MuZXJyb3IgYXJl
IGEgaGFjay4KKyAgICAgICAgIyBEdW1wUmVuZGVyVHJlZSBleHBlY3RzIHRvIGJlIGFibGUgdG8g
Y29tbXVuaWNhdGUgb24gYm90aCBzdGRvdXQgYW5kIHN0ZGVyciwKKyAgICAgICAgIyB5ZXQgU2Vy
dmVyUHJvY2VzcyBvbmx5IGtub3dzIGhvdyB0byBpbmNyZW1lbnRhbGx5IHByb2Nlc3Mgc3Rkb3V0
LgorICAgICAgICAjIFdlIG5lZWQgdG8gZml4IFNldmVyUHJvY2Vzcy5yZWFkX2xpbmUoKSB0byBy
ZXR1cm4gZGF0YSBmcm9tIGJvdGggc3Rkb3V0IGFuZCBzdGRlcnIuCisgICAgICAgIGlmIHJlLnNl
YXJjaChyIiNDUkFTSEVEXG4iLCBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5lcnJvciwgcmUuTVVMVElM
SU5FKToKKyAgICAgICAgICAgICMgVGhpcyBpcyB1c2VkIG9uIFdpbmRvd3MgdG8gcmVwb3J0IHRo
YXQgdGhlIHByb2Nlc3MgaGFzIGNyYXNoZWQKKyAgICAgICAgICAgICMgU2VlIGh0dHA6Ly90cmFj
LndlYmtpdC5vcmcvY2hhbmdlc2V0LzY1NTM3LgorICAgICAgICAgICAgc2VsZi5fc2VydmVyX3By
b2Nlc3MuY3Jhc2ggPSBUcnVlCisgICAgICAgIGVsaWYgcmUuc2VhcmNoKHIiI0NSQVNIRUQgLSBX
ZWJQcm9jZXNzXG4iLCBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5lcnJvciwgcmUuTVVMVElMSU5FKToK
KyAgICAgICAgICAgICMgV2ViS2l0VGVzdFJ1bm5lciB1c2VzIHRoaXMgdG8gcmVwb3J0IHRoYXQg
dGhlIFdlYlByb2Nlc3Mgc3VicHJvY2VzcyBjcmFzaGVkLgorICAgICAgICAgICAgc2VsZi5fc3Vi
cHJvY2Vzc19jcmFzaGVkKCJXZWJQcm9jZXNzIikKKyAgICAgICAgcmV0dXJuIHNlbGYuX2RldGVj
dGVkX2NyYXNoKCkKIAogICAgIGRlZiBfcmVhZF9ibG9jayhzZWxmLCBkZWFkbGluZSk6CiAgICAg
ICAgIExFTkdUSF9IRUFERVIgPSAnQ29udGVudC1MZW5ndGg6ICcKQEAgLTQ5MSw4ICs1MTksOSBA
QCBjbGFzcyBXZWJLaXREcml2ZXIoYmFzZS5Ecml2ZXIpOgogICAgICAgICB0aW1lb3V0ID0gZGVh
ZGxpbmUgLSB0aW1lLnRpbWUoKQogICAgICAgICBsaW5lID0gc2VsZi5fc2VydmVyX3Byb2Nlc3Mu
cmVhZF9saW5lKHRpbWVvdXQpCiAgICAgICAgIGVvZiA9IEZhbHNlCi0gICAgICAgIHdoaWxlIChu
b3Qgc2VsZi5fc2VydmVyX3Byb2Nlc3MudGltZWRfb3V0IGFuZCBub3Qgc2VsZi5kZXRlY3RlZF9j
cmFzaCgpIGFuZCBub3QgZW9mKToKKyAgICAgICAgd2hpbGUgKG5vdCBzZWxmLl9zZXJ2ZXJfcHJv
Y2Vzcy50aW1lZF9vdXQgYW5kIG5vdCBzZWxmLl9jaGVja19mb3JfZHJpdmVyX2NyYXNoKCkgYW5k
IG5vdCBlb2YpOgogICAgICAgICAgICAgY2hvbXBlZF9saW5lID0gbGluZS5yc3RyaXAoKQorICAg
ICAgICAgICAgIyBGSVhNRTogVGhpcyBzaG91bGQgcHJvYmFibHkgYmUgLmNvbnRhaW5zKCIjRU9G
IikgaW5zdGVhZCBvZiBlbmRzd2l0aAogICAgICAgICAgICAgaWYgY2hvbXBlZF9saW5lLmVuZHN3
aXRoKCIjRU9GIik6CiAgICAgICAgICAgICAgICAgZW9mID0gVHJ1ZQogICAgICAgICAgICAgICAg
IGxpbmUgPSBjaG9tcGVkX2xpbmVbOi00XQpAQCAtNTExLDcgKzU0MCw3IEBAIGNsYXNzIFdlYktp
dERyaXZlcihiYXNlLkRyaXZlcik6CiAgICAgICAgICAgICAgICAgY29udGVudF9oYXNoID0gbGlu
ZS5zcGxpdCgpWzFdCiAgICAgICAgICAgICBlbGlmIGxpbmU6CiAgICAgICAgICAgICAgICAgY29u
dGVudCArPSBsaW5lCi0gICAgICAgICAgICBpZiBub3QgZW9mOgorICAgICAgICAgICAgaWYgbm90
IGVvZiBhbmQgbm90IHNlbGYuX2RldGVjdGVkX2NyYXNoKCk6CiAgICAgICAgICAgICAgICAgbGlu
ZSA9IHNlbGYuX3NlcnZlcl9wcm9jZXNzLnJlYWRfbGluZSh0aW1lb3V0KQogICAgICAgICAgICAg
ICAgIHRpbWVvdXQgPSBkZWFkbGluZSAtIHRpbWUudGltZSgpCiAgICAgICAgIHJldHVybiBDb250
ZW50QmxvY2soY29udGVudF90eXBlLCBlbmNvZGluZywgY29udGVudF9oYXNoLCBjb250ZW50KQpk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtp
dF90ZXN0c19pbnRlZ3JhdGlvbnRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX2ludGVncmF0aW9udGVzdC5weQppbmRleCA3Y2FjZDM2
OGNkMmY1MTBiNTJkM2Y5NWFmYzU2Mzg3NmEyMWIxYTg3Li42ZmJkMDcwM2NlZjE2ZWRkZDE3ZGMz
NTBiMGE3NTg4ZmU1YjEzN2M2IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX2ludGVncmF0aW9udGVzdC5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX2ludGVncmF0
aW9udGVzdC5weQpAQCAtNDEzLDcgKzQxMyw3IEBAIGNsYXNzIE1haW5UZXN0KHVuaXR0ZXN0LlRl
c3RDYXNlKToKICAgICAgICAgICAgIHRlc3RzX2luY2x1ZGVkPVRydWUsCiAgICAgICAgICAgICBy
ZWNvcmRfcmVzdWx0cz1UcnVlLAogICAgICAgICAgICAgZmlsZXN5c3RlbT1mcykKLSAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKGZzLnJlYWRfdGV4dF9maWxlKCcvdG1wL2xheW91dC10ZXN0LXJlc3Vs
dHMvdW5leHBlY3RlZF9yZXN1bHRzLmpzb24nKS5maW5kKCd7ImNyYXNoLXdpdGgtc3RkZXJyLmh0
bWwiOnsiZXhwZWN0ZWQiOiJQQVNTIiwiYWN0dWFsIjoiQ1JBU0giLCJoYXNfc3RkZXJyIjp0cnVl
fX0nKSAhPSAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZzLnJlYWRfdGV4dF9maWxlKCcv
dG1wL2xheW91dC10ZXN0LXJlc3VsdHMvdW5leHBlY3RlZF9yZXN1bHRzLmpzb24nKS5maW5kKCd7
ImNyYXNoLXdpdGgtc3RkZXJyLmh0bWwiOnsiZXhwZWN0ZWQiOiJQQVNTIiwiY3Jhc2hlZF9wcm9j
ZXNzIjoiRHVtcFJlbmRlclRyZWUiLCJhY3R1YWwiOiJDUkFTSCIsImhhc19zdGRlcnIiOnRydWV9
fScpICE9IC0xKQogCiAgICAgZGVmIHRlc3RfY3Jhc2hfbG9nKHNlbGYpOgogICAgICAgICBtb2Nr
X2NyYXNoX3JlcG9ydCA9ICdtb2NrLWNyYXNoLXJlcG9ydCcK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111684</attachid>
            <date>2011-10-19 15:42:32 -0700</date>
            <delta_ts>2011-10-19 16:05:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-63683-20111019154233.patch</filename>
            <type>text/plain</type>
            <size>12823</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTc4ODcKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBmZDk5ZjRmNjVmMjY0OWMyYWQwMDk0YzY5ZGRjODU5Nzk0
NjRlODlmLi4zZWUxNjUzYTcyN2EyYmQ2MTZmYjA1ZWM1MjZhZThkYTgxMDUxZjk0IDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjUg
QEAKIDIwMTEtMTAtMTkgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlYWNoIG5ldy1ydW4td2Vi
a2l0LXRlc3RzIGFib3V0ICNDUkFTSEVEIGFuZCAjQ1JBU0hFRCAtIFdlYlByb2Nlc3MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYzNjgzCisKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvbGF5b3V0dGVzdHJlc3VsdHMucHk6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L3Jlc3VsdHNqc29ucGFyc2VyLnB5
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdl
L21hbmFnZXIucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5
b3V0X3BhY2thZ2Uvc2luZ2xlX3Rlc3RfcnVubmVyLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZmFpbHVyZXMucHk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9m
YWlsdXJlc191bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X3Jlc3VsdF93cml0ZXIucHk6CisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2Uvd29ya2VyLnB5OgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weToKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3NlcnZlcl9wcm9jZXNzLnB5
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVz
dHNfaW50ZWdyYXRpb250ZXN0LnB5OgorCisyMDExLTEwLTE5ICBFcmljIFNlaWRlbCAgPGVyaWNA
d2Via2l0Lm9yZz4KKwogICAgICAgICBuZXctcnVuLXdlYmtpdC10ZXN0cyAtMiB3YXMgY3Jhc2hp
bmcgZHVlIHRvIGJvdGggImphdmEiIGFuZCAiamF2YS8iIGJlaW5nIGxpc3RlZCBpbiBTa2lwcGVk
IGZpbGVzLgogICAgICAgICBNYWtlIE5SV1Qgbm9ybWFsaXplIGRpcmVjdG9yeSBuYW1lcyBpbiBT
a2lwcGVkIGZpbGVzIGR1cmluZyBwYXJzaW5nLgogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9uZXQvbGF5b3V0dGVzdHJlc3VsdHMucHkgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9uZXQvbGF5b3V0dGVzdHJlc3VsdHMucHkKaW5kZXggYzM0MmE2NTM3
NWY1ODgxOGZhOGM5MTU1Y2IwNGQ0NTU4MWQzOGNjMC4uMDVmODIxNWQwYjhhMWNiOGMxNjU5ZWE0
OWRiNzEyOTk4Yjc5NWJjYyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21t
b24vbmV0L2xheW91dHRlc3RyZXN1bHRzLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL25ldC9sYXlvdXR0ZXN0cmVzdWx0cy5weQpAQCAtOTAsNyArOTAsNyBAQCBjbGFzcyBP
UldUUmVzdWx0c0hUTUxQYXJzZXIob2JqZWN0KToKICAgICAgICAgaWYgdGFibGVfdGl0bGUgPT0g
Y2xzLmNyYXNoX2tleToKICAgICAgICAgICAgIHJldHVybiBbdGVzdF9mYWlsdXJlcy5GYWlsdXJl
Q3Jhc2goKV0KICAgICAgICAgaWYgdGFibGVfdGl0bGUgPT0gY2xzLndlYnByb2Nlc3NfY3Jhc2hf
a2V5OgotICAgICAgICAgICAgcmV0dXJuIFt0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVDcmFzaCgpXQor
ICAgICAgICAgICAgcmV0dXJuIFt0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVDcmFzaChwcm9jZXNzX25h
bWU9IldlYlByb2Nlc3MiKV0KICAgICAgICAgaWYgdGFibGVfdGl0bGUgPT0gY2xzLnRpbWVvdXRf
a2V5OgogICAgICAgICAgICAgcmV0dXJuIFt0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVUaW1lb3V0KCld
CiAgICAgICAgIGlmIHRhYmxlX3RpdGxlID09IGNscy5taXNzaW5nX2tleToKZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9yZXN1bHRzanNvbnBhcnNlci5weSBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9yZXN1bHRzanNvbnBhcnNlci5weQpp
bmRleCAxMzg4Zjg4MmI4NTVlNzRhMDIyYjRjOTFjNzBiNTMzYThmMzZlMmQ2Li42MTIwNzEzZWI2
NDdhMzNmNTVkYWY1YWExZjg4MTMwMzQyMmZjYzA2IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9uZXQvcmVzdWx0c2pzb25wYXJzZXIucHkKKysrIGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vbmV0L3Jlc3VsdHNqc29ucGFyc2VyLnB5CkBAIC0xMTYsNiAr
MTE2LDcgQEAgY2xhc3MgSlNPTlRlc3RSZXN1bHQob2JqZWN0KToKICAgICAgICAgZWxpZiBhY3R1
YWwgPT0gdGVzdF9leHBlY3RhdGlvbnMuVElNRU9VVDoKICAgICAgICAgICAgIHJldHVybiBbdGVz
dF9mYWlsdXJlcy5GYWlsdXJlVGltZW91dCgpXQogICAgICAgICBlbGlmIGFjdHVhbCA9PSB0ZXN0
X2V4cGVjdGF0aW9ucy5DUkFTSDoKKyAgICAgICAgICAgICMgTk9URTogV2UgZG9uJ3Qga25vdyB3
aGF0IHByb2Nlc3MgY3Jhc2hlZCBmcm9tIHRoZSBqc29uLCBqdXN0IHRoYXQgYSBwcm9jZXNzIGNy
YXNoZWQuCiAgICAgICAgICAgICByZXR1cm4gW3Rlc3RfZmFpbHVyZXMuRmFpbHVyZUNyYXNoKCld
CiAgICAgICAgIGVsaWYgYWN0dWFsID09IHRlc3RfZXhwZWN0YXRpb25zLk1JU1NJTkc6CiAgICAg
ICAgICAgICByZXR1cm4gW3Rlc3RfZmFpbHVyZXMuRmFpbHVyZU1pc3NpbmdSZXN1bHQoKSwgdGVz
dF9mYWlsdXJlcy5GYWlsdXJlTWlzc2luZ0ltYWdlSGFzaCgpLCB0ZXN0X2ZhaWx1cmVzLkZhaWx1
cmVNaXNzaW5nSW1hZ2UoKV0KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfcmVzdWx0X3dyaXRlci5weSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfcmVzdWx0X3dy
aXRlci5weQppbmRleCAwM2U5NWQ4N2FkZGU3ZDkwN2M0NWRhMDZiNTFjNzJhZDI3OTRlY2Y1Li4z
YTBkZDQzMGFiNDZjYWY1ZTJhZDA3NTJlYmEyODEyNGI3YzQzYTM5IDEwMDY0NAotLS0gYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X3Jlc3Vs
dF93cml0ZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5
b3V0X3BhY2thZ2UvdGVzdF9yZXN1bHRfd3JpdGVyLnB5CkBAIC02MywxMCArNjMsNyBAQCBkZWYg
d3JpdGVfdGVzdF9yZXN1bHQocG9ydCwgdGVzdF9uYW1lLCBkcml2ZXJfb3V0cHV0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfZmFpbHVyZXMuRmFpbHVyZU1pc3NpbmdB
dWRpbykpOgogICAgICAgICAgICAgd3JpdGVyLndyaXRlX2F1ZGlvX2ZpbGVzKGRyaXZlcl9vdXRw
dXQuYXVkaW8sIGV4cGVjdGVkX2RyaXZlcl9vdXRwdXQuYXVkaW8pCiAgICAgICAgIGVsaWYgaXNp
bnN0YW5jZShmYWlsdXJlLCB0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVDcmFzaCk6Ci0gICAgICAgICAg
ICBpZiBmYWlsdXJlLmlzX3JlZnRlc3Q6Ci0gICAgICAgICAgICAgICAgd3JpdGVyLndyaXRlX2Ny
YXNoX3JlcG9ydChleHBlY3RlZF9kcml2ZXJfb3V0cHV0LmVycm9yKQotICAgICAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgICAgICB3cml0ZXIud3JpdGVfY3Jhc2hfcmVwb3J0KGRyaXZlcl9vdXRw
dXQuZXJyb3IpCisgICAgICAgICAgICB3cml0ZXIud3JpdGVfY3Jhc2hfcmVwb3J0KGRyaXZlcl9v
dXRwdXQpCiAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShmYWlsdXJlLCB0ZXN0X2ZhaWx1cmVzLkZh
aWx1cmVSZWZ0ZXN0TWlzbWF0Y2gpOgogICAgICAgICAgICAgd3JpdGVyLndyaXRlX2ltYWdlX2Zp
bGVzKGRyaXZlcl9vdXRwdXQuaW1hZ2UsIGV4cGVjdGVkX2RyaXZlcl9vdXRwdXQuaW1hZ2UpCiAg
ICAgICAgICAgICAjIEZJWE1FOiBUaGlzIHdvcmsgc2hvdWxkIGJlIGRvbmUgZWFybGllciBpbiB0
aGUgcGlwZWxpbmUgKGUuZy4sIHdoZW4gd2UgY29tcGFyZSBpbWFnZXMgZm9yIG5vbi1yZWYgdGVz
dHMpLgpAQCAtMTU1LDE2ICsxNTIsMTkgQEAgY2xhc3MgVGVzdFJlc3VsdFdyaXRlcihvYmplY3Qp
OgogICAgICAgICBmcy5tYXliZV9tYWtlX2RpcmVjdG9yeShmcy5kaXJuYW1lKGZpbGVuYW1lKSkK
ICAgICAgICAgZnMud3JpdGVfYmluYXJ5X2ZpbGUoZmlsZW5hbWUsIGVycm9yKQogCi0gICAgZGVm
IHdyaXRlX2NyYXNoX3JlcG9ydChzZWxmLCBlcnJvcik6CisgICAgZGVmIHdyaXRlX2NyYXNoX3Jl
cG9ydChzZWxmLCBkcml2ZXJfb3V0cHV0KToKICAgICAgICAgZnMgPSBzZWxmLl9wb3J0Ll9maWxl
c3lzdGVtCiAgICAgICAgIGZpbGVuYW1lID0gc2VsZi5vdXRwdXRfZmlsZW5hbWUoc2VsZi5GSUxF
TkFNRV9TVUZGSVhfQ1JBU0hfTE9HICsgIi50eHQiKQogICAgICAgICBmcy5tYXliZV9tYWtlX2Rp
cmVjdG9yeShmcy5kaXJuYW1lKGZpbGVuYW1lKSkKICAgICAgICAgIyBGSVhNRTogV2Ugc2hvdWxk
bid0IGJlIGdyYWJiaW5nIHByaXZhdGUgbWVtYmVycyBvZiBwb3J0LgogICAgICAgICBjcmFzaF9s
b2dzID0gQ3Jhc2hMb2dzKGZzKQotICAgICAgICBsb2cgPSBjcmFzaF9sb2dzLmZpbmRfbmV3ZXN0
X2xvZyhzZWxmLl9wb3J0LmRyaXZlcl9uYW1lKCkpCisgICAgICAgICMgSWYgdGhlIGRyaXZlcl9v
dXRwdXQgZG9lcyBub3QgY29udGFpbiBhIHByb2Nlc3MgbmFtZSwgYXNzdW1lIHRoZSBkZWZhdWx0
IGRyaXZlcgorICAgICAgICAjIGZvciB0aGUgcG9ydCBjcmFzaGVkLiAoVGhpcyBtYWtlcyB1bml0
LXRlc3RpbmcgZWFzeSBhbmQgc3VwcG9ydHMgbGVnYWN5IGNvZGUuKQorICAgICAgICBjcmFzaGVk
X3Byb2Nlc3MgPSBkcml2ZXJfb3V0cHV0LmNyYXNoZWRfcHJvY2Vzc19uYW1lIG9yIHNlbGYuX3Bv
cnQuZHJpdmVyX25hbWUoKQorICAgICAgICBsb2cgPSBjcmFzaF9sb2dzLmZpbmRfbmV3ZXN0X2xv
ZyhjcmFzaGVkX3Byb2Nlc3MpCiAgICAgICAgICMgQ3Jhc2hMb2dzIGRvZXNuJ3Qgc3VwcG9ydCBl
dmVyeSBwbGF0Zm9ybSwgc28gd2UgZmFsbCBiYWNrIHRvCiAgICAgICAgICMgaW5jbHVkaW5nIHRo
ZSBzdGRlcnIgb3V0cHV0LCB3aGljaCBpcyBhZG1pdHRlZGx5IHNvbWV3aGF0IHJlZHVuZGFudC4K
LSAgICAgICAgZnMud3JpdGVfdGV4dF9maWxlKGZpbGVuYW1lLCBsb2cgaWYgbG9nIGVsc2UgZXJy
b3IpCisgICAgICAgIGZzLndyaXRlX3RleHRfZmlsZShmaWxlbmFtZSwgbG9nIGlmIGxvZyBlbHNl
IGRyaXZlcl9vdXRwdXQuZXJyb3IpCiAKICAgICBkZWYgd3JpdGVfdGV4dF9maWxlcyhzZWxmLCBh
Y3R1YWxfdGV4dCwgZXhwZWN0ZWRfdGV4dCk6CiAgICAgICAgIHNlbGYud3JpdGVfb3V0cHV0X2Zp
bGVzKCIudHh0IiwgYWN0dWFsX3RleHQsIGV4cGVjdGVkX3RleHQpCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2RyaXZlci5weSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZHJpdmVyLnB5CmluZGV4IDkxNDViNmNj
OGM2YTFlNzE3MzY0YjJkNjU4MWUyNzNmMzAyOWJmZGQuLmY1YzZjZjZlZTMyZmQ2MzdmODM1NDMx
MDRmMWFlNDEwY2QzMmQ4ZTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvZHJpdmVyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvZHJpdmVyLnB5CkBAIC0zOSw3ICszOSw5IEBAIGNsYXNzIERyaXZlcklu
cHV0KG9iamVjdCk6CiBjbGFzcyBEcml2ZXJPdXRwdXQob2JqZWN0KToKICAgICAiIiJHcm91cHMg
aW5mb3JtYXRpb24gYWJvdXQgYSBvdXRwdXQgZnJvbSBkcml2ZXIgZm9yIGVhc3kgcGFzc2luZyBv
ZiBkYXRhLiIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHRleHQsIGltYWdlLCBpbWFnZV9o
YXNoLCBhdWRpbywgY3Jhc2g9RmFsc2UsIHRlc3RfdGltZT0wLCB0aW1lb3V0PUZhbHNlLCBlcnJv
cj0nJyk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRleHQsIGltYWdlLCBpbWFnZV9oYXNoLCBh
dWRpbywKKyAgICAgICAgY3Jhc2g9RmFsc2UsIHRlc3RfdGltZT0wLCB0aW1lb3V0PUZhbHNlLCBl
cnJvcj0nJywKKyAgICAgICAgY3Jhc2hlZF9wcm9jZXNzX25hbWU9Tm9uZSk6CiAgICAgICAgICMg
RklYTUU6IEFyZ3MgY291bGQgYmUgcmVuYW1lZCB0byBiZXR0ZXIgY2xhcmlmeSB3aGF0IHRoZXkg
ZG8uCiAgICAgICAgIHNlbGYudGV4dCA9IHRleHQKICAgICAgICAgc2VsZi5pbWFnZSA9IGltYWdl
ICAjIE1heSBiZSBlbXB0eS1zdHJpbmcgaWYgdGhlIHRlc3QgY3Jhc2hlcy4KQEAgLTQ3LDYgKzQ5
LDcgQEAgY2xhc3MgRHJpdmVyT3V0cHV0KG9iamVjdCk6CiAgICAgICAgIHNlbGYuaW1hZ2VfZGlm
ZiA9IE5vbmUgICMgaW1hZ2VfZGlmZiBnZXRzIGZpbGxlZCBpbiBhZnRlciBjb25zdHJ1Y3Rpb24u
CiAgICAgICAgIHNlbGYuYXVkaW8gPSBhdWRpbyAgIyBCaW5hcnkgZm9ybWF0IGlzIHBvcnQtZGVw
ZW5kZW50LgogICAgICAgICBzZWxmLmNyYXNoID0gY3Jhc2gKKyAgICAgICAgc2VsZi5jcmFzaGVk
X3Byb2Nlc3NfbmFtZSA9IGNyYXNoZWRfcHJvY2Vzc19uYW1lCiAgICAgICAgIHNlbGYudGVzdF90
aW1lID0gdGVzdF90aW1lCiAgICAgICAgIHNlbGYudGltZW91dCA9IHRpbWVvdXQKICAgICAgICAg
c2VsZi5lcnJvciA9IGVycm9yICAjIHN0ZGVyciBvdXRwdXQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvc2VydmVyX3Byb2Nlc3MucHkgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3NlcnZlcl9wcm9jZXNzLnB5Cmlu
ZGV4IGRkNGI4ZjcxYmNmMGMwMTMxMTRkMDFiMWMxOWVmZGJhMDhmOTU4ODkuLjlmODJmNDIwNWJk
ZmZjNWMzNTQxYmU4ZjAzYWNkYzAzZjZjMTBlNTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvc2VydmVyX3Byb2Nlc3MucHkKKysrIGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9zZXJ2ZXJfcHJvY2Vzcy5weQpAQCAt
NzMsNiArNzMsOSBAQCBjbGFzcyBTZXJ2ZXJQcm9jZXNzOgogICAgICAgICBzZWxmLmNyYXNoZWQg
PSBGYWxzZQogICAgICAgICBzZWxmLnRpbWVkX291dCA9IEZhbHNlCiAKKyAgICBkZWYgcHJvY2Vz
c19uYW1lKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fbmFtZQorCiAgICAgZGVmIF9zdGFy
dChzZWxmKToKICAgICAgICAgaWYgc2VsZi5fcHJvYzoKICAgICAgICAgICAgIHJhaXNlIFZhbHVl
RXJyb3IoIiVzIGFscmVhZHkgcnVubmluZyIgJSBzZWxmLl9uYW1lKQpkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHkgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weQppbmRleCA1ZDAwMDFl
NWVhNmE2NDk3MThkN2NhMjBmOTAwMzNhN2MyY2Q2NDRiLi5hODNiNDk2ZmUxMzFjMTc2ODRhZjM4
OGMwM2I4ZDBiOThiNjQ0ZjFiIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weQpAQCAtNDIwLDYgKzQyMCwxMSBAQCBjbGFzcyBXZWJL
aXREcml2ZXIoRHJpdmVyKToKICAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydCwgd29ya2VyX251
bWJlcik6CiAgICAgICAgIERyaXZlci5fX2luaXRfXyhzZWxmLCBwb3J0LCB3b3JrZXJfbnVtYmVy
KQogICAgICAgICBzZWxmLl9kcml2ZXJfdGVtcGRpciA9IHBvcnQuX2ZpbGVzeXN0ZW0ubWtkdGVt
cChwcmVmaXg9JyVzLScgJSBzZWxmLl9wb3J0LmRyaXZlcl9uYW1lKCkpCisgICAgICAgICMgV2Vi
S2l0VGVzdFJ1bm5lciBjYW4gcmVwb3J0IGJhY2sgc3VicHJvY2VzcyBjcmFzaGVzIGJ5IHByaW50
aW5nCisgICAgICAgICMgIiNDUkFTSEVEIC0gUFJPQ0VTU05BTUUiLiAgU2luY2UgdGhvc2UgY2Fu
IGhhcHBlbiBhdCBhbnkgdGltZQorICAgICAgICAjIGFuZCBTZXJ2ZXJQcm9jZXNzIHdvbid0IGJl
IGF3YXJlIG9mIHRoZW0gKHNpbmNlIHRoZSBhY3R1YWwgdG9vbAorICAgICAgICAjIGRpZG4ndCBj
cmFzaCwganVzdCBhIHN1YnByb2Nlc3MpIHdlIHJlY29yZCB0aGUgY3Jhc2hlZCBzdWJwcm9jZXNz
IG5hbWUgaGVyZS4KKyAgICAgICAgc2VsZi5fY3Jhc2hlZF9zdWJwcm9jZXNzX25hbWUgPSBOb25l
CiAKICAgICAgICAgIyBzdGRlcnIgcmVhZGluZyBpcyBzY29wZWQgb24gYSBwZXItdGVzdCAobm90
IHBlci1ibG9jaykgYmFzaXMsIHNvIHdlIHN0b3JlIHRoZSBhY2N1bXVsYXRlZAogICAgICAgICAj
IHN0ZGVyciBvdXRwdXQsIGFzIHdlbGwgYXMgaWYgd2UndmUgc2VlbiAjRU9GIG9uIHRoaXMgZHJp
dmVyIGluc3RhbmNlLgpAQCAtNDU4LDE2ICs0NjMsMzUgQEAgY2xhc3MgV2ViS2l0RHJpdmVyKERy
aXZlcik6CiAgICAgICAgICMgRklYTUU6IFdlJ3JlIGFzc3VtaW5nIHRoYXQgV2ViS2l0VGVzdFJ1
bm5lciBjaGVja3MgdGhpcyBEdW1wUmVuZGVyVHJlZS1uYW1lZCBlbnZpcm9ubWVudCB2YXJpYWJs
ZS4KICAgICAgICAgZW52aXJvbm1lbnRbJ0RVTVBSRU5ERVJUUkVFX1RFTVAnXSA9IHN0cihzZWxm
Ll9kcml2ZXJfdGVtcGRpcikKICAgICAgICAgZW52aXJvbm1lbnRbJ0xPQ0FMX1JFU09VUkNFX1JP
T1QnXSA9IHNlbGYuX3BvcnQubGF5b3V0X3Rlc3RzX2RpcigpCisgICAgICAgIHNlbGYuX2NyYXNo
ZWRfc3VicHJvY2Vzc19uYW1lID0gTm9uZQogICAgICAgICBzZWxmLl9zZXJ2ZXJfcHJvY2VzcyA9
IHNlcnZlcl9wcm9jZXNzLlNlcnZlclByb2Nlc3Moc2VsZi5fcG9ydCwgc2VydmVyX25hbWUsIHNl
bGYuY21kX2xpbmUoKSwgZW52aXJvbm1lbnQpCiAKICAgICBkZWYgcG9sbChzZWxmKToKICAgICAg
ICAgcmV0dXJuIHNlbGYuX3NlcnZlcl9wcm9jZXNzLnBvbGwoKQogCi0gICAgZGVmIGRldGVjdGVk
X2NyYXNoKHNlbGYpOgotICAgICAgICAjIEZJWE1FOiBXZSBjYW4ndCBqdXN0IGNoZWNrIHNlbGYu
X3NlcnZlcl9wcm9jZXNzLmNyYXNoZWQgZm9yIHR3byByZWFzb25zOgotICAgICAgICAjIDEuIFdl
YktpdFRlc3RSdW5uZXIgd2lsbCBwcmludCAiI0NSQVNIRUQgLSBXZWJQcm9jZXNzIiBhbmQgdGhl
biBleGl0IGlmIHRoZSBXZWJQcm9jZXNzIGNyYXNoZXMuCi0gICAgICAgICMgMi4gQWRhbSBSb2Jl
biB0ZWxscyBtZSBXaW5kb3dzIER1bXBSZW5kZXJUcmVlIGNhbiBwcmludCAiI0NSQVNIRUQiIHll
dCBzdGlsbCBleGl0IGNsZWFubHkuCi0gICAgICAgIHJldHVybiBzZWxmLl9zZXJ2ZXJfcHJvY2Vz
cy5jcmFzaGVkCisgICAgZGVmIF9jaGVja19mb3JfZHJpdmVyX2NyYXNoKHNlbGYsIGVycm9yX2xp
bmUpOgorICAgICAgICBpZiBlcnJvcl9saW5lID09ICIjQ1JBU0hFRFxuIjoKKyAgICAgICAgICAg
ICMgVGhpcyBpcyB1c2VkIG9uIFdpbmRvd3MgdG8gcmVwb3J0IHRoYXQgdGhlIHByb2Nlc3MgaGFz
IGNyYXNoZWQKKyAgICAgICAgICAgICMgU2VlIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdl
c2V0LzY1NTM3LgorICAgICAgICAgICAgc2VsZi5fc2VydmVyX3Byb2Nlc3MuY3Jhc2ggPSBUcnVl
CisgICAgICAgIGVsaWYgZXJyb3JfbGluZSA9PSAiI0NSQVNIRUQgLSBXZWJQcm9jZXNzXG4iOgor
ICAgICAgICAgICAgIyBXZWJLaXRUZXN0UnVubmVyIHVzZXMgdGhpcyB0byByZXBvcnQgdGhhdCB0
aGUgV2ViUHJvY2VzcyBzdWJwcm9jZXNzIGNyYXNoZWQuCisgICAgICAgICAgICBzZWxmLl9zdWJw
cm9jZXNzX2NyYXNoZWQoIldlYlByb2Nlc3MiKQorICAgICAgICByZXR1cm4gc2VsZi5fZGV0ZWN0
ZWRfY3Jhc2goKQorCisgICAgZGVmIF9kZXRlY3RlZF9jcmFzaChzZWxmKToKKyAgICAgICAgIyBX
ZSBjYW4ndCBqdXN0IGNoZWNrIHNlbGYuX3NlcnZlcl9wcm9jZXNzLmNyYXNoZWQgYmVjYXVzZSBX
ZWJLaXRUZXN0UnVubmVyCisgICAgICAgICMgY2FuIHJlcG9ydCBzdWJwcm9jZXNzIGNyYXNoZXMg
YXQgYW55IHRpbWUgYnkgcHJpbnRpbmcKKyAgICAgICAgIyAiI0NSQVNIRUQgLSBXZWJQcm9jZXNz
Iiwgd2Ugd2FudCB0byBjb3VudCB0aG9zZSBhcyBjcmFzaGVzIGFzIHdlbGwuCisgICAgICAgIHJl
dHVybiBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5jcmFzaGVkIG9yIHNlbGYuX2NyYXNoZWRfc3VicHJv
Y2Vzc19uYW1lCisKKyAgICBkZWYgX3N1YnByb2Nlc3NfY3Jhc2hlZChzZWxmLCBzdWJwcm9jZXNz
X25hbWUpOgorICAgICAgICBzZWxmLl9jcmFzaGVkX3N1YnByb2Nlc3NfbmFtZSA9IHN1YnByb2Nl
c3NfbmFtZQorCisgICAgZGVmIF9jcmFzaGVkX3Byb2Nlc3NfbmFtZShzZWxmKToKKyAgICAgICAg
aWYgbm90IHNlbGYuX2RldGVjdGVkX2NyYXNoKCk6CisgICAgICAgICAgICByZXR1cm4gTm9uZQor
ICAgICAgICByZXR1cm4gc2VsZi5fY3Jhc2hlZF9zdWJwcm9jZXNzX25hbWUgb3Igc2VsZi5fc2Vy
dmVyX3Byb2Nlc3MucHJvY2Vzc19uYW1lKCkKIAogICAgIGRlZiBfY29tbWFuZF9mcm9tX2RyaXZl
cl9pbnB1dChzZWxmLCBkcml2ZXJfaW5wdXQpOgogICAgICAgICB1cmkgPSBzZWxmLl9wb3J0LnRl
c3RfdG9fdXJpKGRyaXZlcl9pbnB1dC50ZXN0X25hbWUpCkBAIC01MDcsOCArNTMxLDkgQEAgY2xh
c3MgV2ViS2l0RHJpdmVyKERyaXZlcik6CiAgICAgICAgICMgV2UgbWF5IG5vdCBoYXZlIHJlYWQg
YWxsIG91dHB1dCAoaWYgYW4gZXJyb3Igb2NjdXJlZCksIGJ1dCB3ZSBjZXJ0YWlubHkgc2hvdWxk
IGhhdmUgcmVhZCBhbGwgZXJyb3IgYnl0ZXMuCiAgICAgICAgIGFzc2VydCBub3Qgc2VsZi5fc2Vy
dmVyX3Byb2Nlc3MuX2Vycm9yLCAiVW5wcm9jZXNzZWQgZXJyb3Igb3V0cHV0OiAlcyIgJSBzZWxm
Ll9zZXJ2ZXJfcHJvY2Vzcy5fZXJyb3IKICAgICAgICAgcmV0dXJuIERyaXZlck91dHB1dCh0ZXh0
LCBpbWFnZSwgYWN0dWFsX2ltYWdlX2hhc2gsIGF1ZGlvLAotICAgICAgICAgICAgY3Jhc2g9c2Vs
Zi5kZXRlY3RlZF9jcmFzaCgpLCB0ZXN0X3RpbWU9dGltZS50aW1lKCkgLSBzdGFydF90aW1lLAot
ICAgICAgICAgICAgdGltZW91dD1zZWxmLl9zZXJ2ZXJfcHJvY2Vzcy50aW1lZF9vdXQsIGVycm9y
PXNlbGYuZXJyb3JfZnJvbV90ZXN0KQorICAgICAgICAgICAgY3Jhc2g9c2VsZi5fZGV0ZWN0ZWRf
Y3Jhc2goKSwgdGVzdF90aW1lPXRpbWUudGltZSgpIC0gc3RhcnRfdGltZSwKKyAgICAgICAgICAg
IHRpbWVvdXQ9c2VsZi5fc2VydmVyX3Byb2Nlc3MudGltZWRfb3V0LCBlcnJvcj1zZWxmLmVycm9y
X2Zyb21fdGVzdCwKKyAgICAgICAgICAgIGNyYXNoZWRfcHJvY2Vzc19uYW1lPXNlbGYuX2NyYXNo
ZWRfcHJvY2Vzc19uYW1lKCkpCiAKICAgICBkZWYgX3JlYWRfaGVhZGVyKHNlbGYsIGJsb2NrLCBs
aW5lLCBoZWFkZXJfdGV4dCwgaGVhZGVyX2F0dHIsIGhlYWRlcl9maWx0ZXI9Tm9uZSk6CiAgICAg
ICAgIGlmIGxpbmUuc3RhcnRzd2l0aChoZWFkZXJfdGV4dCkgYW5kIGdldGF0dHIoYmxvY2ssIGhl
YWRlcl9hdHRyKSBpcyBOb25lOgpAQCAtNTQxLDcgKzU2Niw3IEBAIGNsYXNzIFdlYktpdERyaXZl
cihEcml2ZXIpOgogICAgICAgICAgICAgaWYgb3V0X3NlZW5fZW9mIGFuZCAoc2VsZi5lcnJfc2Vl
bl9lb2Ygb3Igbm90IHdhaXRfZm9yX3N0ZGVycl9lb2YpOgogICAgICAgICAgICAgICAgIGJyZWFr
CiAKLSAgICAgICAgICAgIGlmIHNlbGYuX3NlcnZlcl9wcm9jZXNzLnRpbWVkX291dCBvciBzZWxm
LmRldGVjdGVkX2NyYXNoKCk6CisgICAgICAgICAgICBpZiBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy50
aW1lZF9vdXQgb3Igc2VsZi5fZGV0ZWN0ZWRfY3Jhc2goKToKICAgICAgICAgICAgICAgICBicmVh
awogCiAgICAgICAgICAgICB0aW1lb3V0ID0gZGVhZGxpbmUgLSB0aW1lLnRpbWUoKQpAQCAtNTY5
LDggKzU5NCw5IEBAIGNsYXNzIFdlYktpdERyaXZlcihEcml2ZXIpOgogICAgICAgICAgICAgICAg
IGlmIGJsb2NrLl9jb250ZW50X2xlbmd0aCBpcyBub3QgTm9uZSBhbmQgbm90IGJsb2NrLmNvbnRl
bnQ6CiAgICAgICAgICAgICAgICAgICAgIGJsb2NrLmNvbnRlbnQgPSBzZWxmLl9zZXJ2ZXJfcHJv
Y2Vzcy5yZWFkX3N0ZG91dChkZWFkbGluZSAtIHRpbWUudGltZSgpLCBibG9jay5fY29udGVudF9s
ZW5ndGgpCiAKLSAgICAgICAgICAgICMgRklYTUU6IE5lZWQgdG8gaGFuZGxlICIjQ1JBU0hFRCAt
IFdlYlByb2Nlc3MiIGFuZCAiI0NSQVNIRUQiLgogICAgICAgICAgICAgaWYgZXJyX2xpbmU6Cisg
ICAgICAgICAgICAgICAgaWYgc2VsZi5fY2hlY2tfZm9yX2RyaXZlcl9jcmFzaChlcnJfbGluZSk6
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgc2VsZi5lcnJvcl9m
cm9tX3Rlc3QgKz0gZXJyX2xpbmUKIAogICAgICAgICBibG9jay5kZWNvZGVfY29udGVudCgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111688</attachid>
            <date>2011-10-19 16:05:30 -0700</date>
            <delta_ts>2022-02-27 23:46:47 -0800</delta_ts>
            <desc>Remove unrelated chnage</desc>
            <filename>bug-63683-20111019160530.patch</filename>
            <type>text/plain</type>
            <size>10236</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTc4ODcKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBmZDk5ZjRmNjVmMjY0OWMyYWQwMDk0YzY5ZGRjODU5Nzk0
NjRlODlmLi4zZWUxNjUzYTcyN2EyYmQ2MTZmYjA1ZWM1MjZhZThkYTgxMDUxZjk0IDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjUg
QEAKIDIwMTEtMTAtMTkgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlYWNoIG5ldy1ydW4td2Vi
a2l0LXRlc3RzIGFib3V0ICNDUkFTSEVEIGFuZCAjQ1JBU0hFRCAtIFdlYlByb2Nlc3MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYzNjgzCisKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvbGF5b3V0dGVzdHJlc3VsdHMucHk6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L3Jlc3VsdHNqc29ucGFyc2VyLnB5
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdl
L21hbmFnZXIucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5
b3V0X3BhY2thZ2Uvc2luZ2xlX3Rlc3RfcnVubmVyLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZmFpbHVyZXMucHk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9m
YWlsdXJlc191bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X3Jlc3VsdF93cml0ZXIucHk6CisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2Uvd29ya2VyLnB5OgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weToKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3NlcnZlcl9wcm9jZXNzLnB5
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVz
dHNfaW50ZWdyYXRpb250ZXN0LnB5OgorCisyMDExLTEwLTE5ICBFcmljIFNlaWRlbCAgPGVyaWNA
d2Via2l0Lm9yZz4KKwogICAgICAgICBuZXctcnVuLXdlYmtpdC10ZXN0cyAtMiB3YXMgY3Jhc2hp
bmcgZHVlIHRvIGJvdGggImphdmEiIGFuZCAiamF2YS8iIGJlaW5nIGxpc3RlZCBpbiBTa2lwcGVk
IGZpbGVzLgogICAgICAgICBNYWtlIE5SV1Qgbm9ybWFsaXplIGRpcmVjdG9yeSBuYW1lcyBpbiBT
a2lwcGVkIGZpbGVzIGR1cmluZyBwYXJzaW5nLgogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9uZXQvbGF5b3V0dGVzdHJlc3VsdHMucHkgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9uZXQvbGF5b3V0dGVzdHJlc3VsdHMucHkKaW5kZXggYzM0MmE2NTM3
NWY1ODgxOGZhOGM5MTU1Y2IwNGQ0NTU4MWQzOGNjMC4uMDVmODIxNWQwYjhhMWNiOGMxNjU5ZWE0
OWRiNzEyOTk4Yjc5NWJjYyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21t
b24vbmV0L2xheW91dHRlc3RyZXN1bHRzLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL25ldC9sYXlvdXR0ZXN0cmVzdWx0cy5weQpAQCAtOTAsNyArOTAsNyBAQCBjbGFzcyBP
UldUUmVzdWx0c0hUTUxQYXJzZXIob2JqZWN0KToKICAgICAgICAgaWYgdGFibGVfdGl0bGUgPT0g
Y2xzLmNyYXNoX2tleToKICAgICAgICAgICAgIHJldHVybiBbdGVzdF9mYWlsdXJlcy5GYWlsdXJl
Q3Jhc2goKV0KICAgICAgICAgaWYgdGFibGVfdGl0bGUgPT0gY2xzLndlYnByb2Nlc3NfY3Jhc2hf
a2V5OgotICAgICAgICAgICAgcmV0dXJuIFt0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVDcmFzaCgpXQor
ICAgICAgICAgICAgcmV0dXJuIFt0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVDcmFzaChwcm9jZXNzX25h
bWU9IldlYlByb2Nlc3MiKV0KICAgICAgICAgaWYgdGFibGVfdGl0bGUgPT0gY2xzLnRpbWVvdXRf
a2V5OgogICAgICAgICAgICAgcmV0dXJuIFt0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVUaW1lb3V0KCld
CiAgICAgICAgIGlmIHRhYmxlX3RpdGxlID09IGNscy5taXNzaW5nX2tleToKZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9yZXN1bHRzanNvbnBhcnNlci5weSBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9yZXN1bHRzanNvbnBhcnNlci5weQpp
bmRleCAxMzg4Zjg4MmI4NTVlNzRhMDIyYjRjOTFjNzBiNTMzYThmMzZlMmQ2Li42MTIwNzEzZWI2
NDdhMzNmNTVkYWY1YWExZjg4MTMwMzQyMmZjYzA2IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9uZXQvcmVzdWx0c2pzb25wYXJzZXIucHkKKysrIGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vbmV0L3Jlc3VsdHNqc29ucGFyc2VyLnB5CkBAIC0xMTYsNiAr
MTE2LDcgQEAgY2xhc3MgSlNPTlRlc3RSZXN1bHQob2JqZWN0KToKICAgICAgICAgZWxpZiBhY3R1
YWwgPT0gdGVzdF9leHBlY3RhdGlvbnMuVElNRU9VVDoKICAgICAgICAgICAgIHJldHVybiBbdGVz
dF9mYWlsdXJlcy5GYWlsdXJlVGltZW91dCgpXQogICAgICAgICBlbGlmIGFjdHVhbCA9PSB0ZXN0
X2V4cGVjdGF0aW9ucy5DUkFTSDoKKyAgICAgICAgICAgICMgTk9URTogV2UgZG9uJ3Qga25vdyB3
aGF0IHByb2Nlc3MgY3Jhc2hlZCBmcm9tIHRoZSBqc29uLCBqdXN0IHRoYXQgYSBwcm9jZXNzIGNy
YXNoZWQuCiAgICAgICAgICAgICByZXR1cm4gW3Rlc3RfZmFpbHVyZXMuRmFpbHVyZUNyYXNoKCld
CiAgICAgICAgIGVsaWYgYWN0dWFsID09IHRlc3RfZXhwZWN0YXRpb25zLk1JU1NJTkc6CiAgICAg
ICAgICAgICByZXR1cm4gW3Rlc3RfZmFpbHVyZXMuRmFpbHVyZU1pc3NpbmdSZXN1bHQoKSwgdGVz
dF9mYWlsdXJlcy5GYWlsdXJlTWlzc2luZ0ltYWdlSGFzaCgpLCB0ZXN0X2ZhaWx1cmVzLkZhaWx1
cmVNaXNzaW5nSW1hZ2UoKV0KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvZHJpdmVyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9kcml2ZXIucHkKaW5kZXggOTE0NWI2Y2M4YzZhMWU3MTczNjRiMmQ2NTgxZTI3
M2YzMDI5YmZkZC4uZjVjNmNmNmVlMzJmZDYzN2Y4MzU0MzEwNGYxYWU0MTBjZDMyZDhlNiAxMDA2
NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9kcml2ZXIu
cHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9kcml2ZXIu
cHkKQEAgLTM5LDcgKzM5LDkgQEAgY2xhc3MgRHJpdmVySW5wdXQob2JqZWN0KToKIGNsYXNzIERy
aXZlck91dHB1dChvYmplY3QpOgogICAgICIiIkdyb3VwcyBpbmZvcm1hdGlvbiBhYm91dCBhIG91
dHB1dCBmcm9tIGRyaXZlciBmb3IgZWFzeSBwYXNzaW5nIG9mIGRhdGEuIiIiCiAKLSAgICBkZWYg
X19pbml0X18oc2VsZiwgdGV4dCwgaW1hZ2UsIGltYWdlX2hhc2gsIGF1ZGlvLCBjcmFzaD1GYWxz
ZSwgdGVzdF90aW1lPTAsIHRpbWVvdXQ9RmFsc2UsIGVycm9yPScnKToKKyAgICBkZWYgX19pbml0
X18oc2VsZiwgdGV4dCwgaW1hZ2UsIGltYWdlX2hhc2gsIGF1ZGlvLAorICAgICAgICBjcmFzaD1G
YWxzZSwgdGVzdF90aW1lPTAsIHRpbWVvdXQ9RmFsc2UsIGVycm9yPScnLAorICAgICAgICBjcmFz
aGVkX3Byb2Nlc3NfbmFtZT1Ob25lKToKICAgICAgICAgIyBGSVhNRTogQXJncyBjb3VsZCBiZSBy
ZW5hbWVkIHRvIGJldHRlciBjbGFyaWZ5IHdoYXQgdGhleSBkby4KICAgICAgICAgc2VsZi50ZXh0
ID0gdGV4dAogICAgICAgICBzZWxmLmltYWdlID0gaW1hZ2UgICMgTWF5IGJlIGVtcHR5LXN0cmlu
ZyBpZiB0aGUgdGVzdCBjcmFzaGVzLgpAQCAtNDcsNiArNDksNyBAQCBjbGFzcyBEcml2ZXJPdXRw
dXQob2JqZWN0KToKICAgICAgICAgc2VsZi5pbWFnZV9kaWZmID0gTm9uZSAgIyBpbWFnZV9kaWZm
IGdldHMgZmlsbGVkIGluIGFmdGVyIGNvbnN0cnVjdGlvbi4KICAgICAgICAgc2VsZi5hdWRpbyA9
IGF1ZGlvICAjIEJpbmFyeSBmb3JtYXQgaXMgcG9ydC1kZXBlbmRlbnQuCiAgICAgICAgIHNlbGYu
Y3Jhc2ggPSBjcmFzaAorICAgICAgICBzZWxmLmNyYXNoZWRfcHJvY2Vzc19uYW1lID0gY3Jhc2hl
ZF9wcm9jZXNzX25hbWUKICAgICAgICAgc2VsZi50ZXN0X3RpbWUgPSB0ZXN0X3RpbWUKICAgICAg
ICAgc2VsZi50aW1lb3V0ID0gdGltZW91dAogICAgICAgICBzZWxmLmVycm9yID0gZXJyb3IgICMg
c3RkZXJyIG91dHB1dApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9zZXJ2ZXJfcHJvY2Vzcy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvc2VydmVyX3Byb2Nlc3MucHkKaW5kZXggZGQ0YjhmNzFiY2YwYzAxMzEx
NGQwMWIxYzE5ZWZkYmEwOGY5NTg4OS4uOWY4MmY0MjA1YmRmZmM1YzM1NDFiZThmMDNhY2RjMDNm
NmMxMGU1OCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9zZXJ2ZXJfcHJvY2Vzcy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L3NlcnZlcl9wcm9jZXNzLnB5CkBAIC03Myw2ICs3Myw5IEBAIGNsYXNzIFNl
cnZlclByb2Nlc3M6CiAgICAgICAgIHNlbGYuY3Jhc2hlZCA9IEZhbHNlCiAgICAgICAgIHNlbGYu
dGltZWRfb3V0ID0gRmFsc2UKIAorICAgIGRlZiBwcm9jZXNzX25hbWUoc2VsZik6CisgICAgICAg
IHJldHVybiBzZWxmLl9uYW1lCisKICAgICBkZWYgX3N0YXJ0KHNlbGYpOgogICAgICAgICBpZiBz
ZWxmLl9wcm9jOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiJXMgYWxyZWFkeSBydW5u
aW5nIiAlIHNlbGYuX25hbWUpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvd2Via2l0LnB5CmluZGV4IDVkMDAwMWU1ZWE2YTY0OTcxOGQ3Y2EyMGY5MDAz
M2E3YzJjZDY0NGIuLmE4M2I0OTZmZTEzMWMxNzY4NGFmMzg4YzAzYjhkMGI5OGI2NDRmMWIgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0
LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0
LnB5CkBAIC00MjAsNiArNDIwLDExIEBAIGNsYXNzIFdlYktpdERyaXZlcihEcml2ZXIpOgogICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0LCB3b3JrZXJfbnVtYmVyKToKICAgICAgICAgRHJpdmVy
Ll9faW5pdF9fKHNlbGYsIHBvcnQsIHdvcmtlcl9udW1iZXIpCiAgICAgICAgIHNlbGYuX2RyaXZl
cl90ZW1wZGlyID0gcG9ydC5fZmlsZXN5c3RlbS5ta2R0ZW1wKHByZWZpeD0nJXMtJyAlIHNlbGYu
X3BvcnQuZHJpdmVyX25hbWUoKSkKKyAgICAgICAgIyBXZWJLaXRUZXN0UnVubmVyIGNhbiByZXBv
cnQgYmFjayBzdWJwcm9jZXNzIGNyYXNoZXMgYnkgcHJpbnRpbmcKKyAgICAgICAgIyAiI0NSQVNI
RUQgLSBQUk9DRVNTTkFNRSIuICBTaW5jZSB0aG9zZSBjYW4gaGFwcGVuIGF0IGFueSB0aW1lCisg
ICAgICAgICMgYW5kIFNlcnZlclByb2Nlc3Mgd29uJ3QgYmUgYXdhcmUgb2YgdGhlbSAoc2luY2Ug
dGhlIGFjdHVhbCB0b29sCisgICAgICAgICMgZGlkbid0IGNyYXNoLCBqdXN0IGEgc3VicHJvY2Vz
cykgd2UgcmVjb3JkIHRoZSBjcmFzaGVkIHN1YnByb2Nlc3MgbmFtZSBoZXJlLgorICAgICAgICBz
ZWxmLl9jcmFzaGVkX3N1YnByb2Nlc3NfbmFtZSA9IE5vbmUKIAogICAgICAgICAjIHN0ZGVyciBy
ZWFkaW5nIGlzIHNjb3BlZCBvbiBhIHBlci10ZXN0IChub3QgcGVyLWJsb2NrKSBiYXNpcywgc28g
d2Ugc3RvcmUgdGhlIGFjY3VtdWxhdGVkCiAgICAgICAgICMgc3RkZXJyIG91dHB1dCwgYXMgd2Vs
bCBhcyBpZiB3ZSd2ZSBzZWVuICNFT0Ygb24gdGhpcyBkcml2ZXIgaW5zdGFuY2UuCkBAIC00NTgs
MTYgKzQ2MywzNSBAQCBjbGFzcyBXZWJLaXREcml2ZXIoRHJpdmVyKToKICAgICAgICAgIyBGSVhN
RTogV2UncmUgYXNzdW1pbmcgdGhhdCBXZWJLaXRUZXN0UnVubmVyIGNoZWNrcyB0aGlzIER1bXBS
ZW5kZXJUcmVlLW5hbWVkIGVudmlyb25tZW50IHZhcmlhYmxlLgogICAgICAgICBlbnZpcm9ubWVu
dFsnRFVNUFJFTkRFUlRSRUVfVEVNUCddID0gc3RyKHNlbGYuX2RyaXZlcl90ZW1wZGlyKQogICAg
ICAgICBlbnZpcm9ubWVudFsnTE9DQUxfUkVTT1VSQ0VfUk9PVCddID0gc2VsZi5fcG9ydC5sYXlv
dXRfdGVzdHNfZGlyKCkKKyAgICAgICAgc2VsZi5fY3Jhc2hlZF9zdWJwcm9jZXNzX25hbWUgPSBO
b25lCiAgICAgICAgIHNlbGYuX3NlcnZlcl9wcm9jZXNzID0gc2VydmVyX3Byb2Nlc3MuU2VydmVy
UHJvY2VzcyhzZWxmLl9wb3J0LCBzZXJ2ZXJfbmFtZSwgc2VsZi5jbWRfbGluZSgpLCBlbnZpcm9u
bWVudCkKIAogICAgIGRlZiBwb2xsKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5fc2VydmVy
X3Byb2Nlc3MucG9sbCgpCiAKLSAgICBkZWYgZGV0ZWN0ZWRfY3Jhc2goc2VsZik6Ci0gICAgICAg
ICMgRklYTUU6IFdlIGNhbid0IGp1c3QgY2hlY2sgc2VsZi5fc2VydmVyX3Byb2Nlc3MuY3Jhc2hl
ZCBmb3IgdHdvIHJlYXNvbnM6Ci0gICAgICAgICMgMS4gV2ViS2l0VGVzdFJ1bm5lciB3aWxsIHBy
aW50ICIjQ1JBU0hFRCAtIFdlYlByb2Nlc3MiIGFuZCB0aGVuIGV4aXQgaWYgdGhlIFdlYlByb2Nl
c3MgY3Jhc2hlcy4KLSAgICAgICAgIyAyLiBBZGFtIFJvYmVuIHRlbGxzIG1lIFdpbmRvd3MgRHVt
cFJlbmRlclRyZWUgY2FuIHByaW50ICIjQ1JBU0hFRCIgeWV0IHN0aWxsIGV4aXQgY2xlYW5seS4K
LSAgICAgICAgcmV0dXJuIHNlbGYuX3NlcnZlcl9wcm9jZXNzLmNyYXNoZWQKKyAgICBkZWYgX2No
ZWNrX2Zvcl9kcml2ZXJfY3Jhc2goc2VsZiwgZXJyb3JfbGluZSk6CisgICAgICAgIGlmIGVycm9y
X2xpbmUgPT0gIiNDUkFTSEVEXG4iOgorICAgICAgICAgICAgIyBUaGlzIGlzIHVzZWQgb24gV2lu
ZG93cyB0byByZXBvcnQgdGhhdCB0aGUgcHJvY2VzcyBoYXMgY3Jhc2hlZAorICAgICAgICAgICAg
IyBTZWUgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvNjU1MzcuCisgICAgICAgICAg
ICBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5jcmFzaCA9IFRydWUKKyAgICAgICAgZWxpZiBlcnJvcl9s
aW5lID09ICIjQ1JBU0hFRCAtIFdlYlByb2Nlc3NcbiI6CisgICAgICAgICAgICAjIFdlYktpdFRl
c3RSdW5uZXIgdXNlcyB0aGlzIHRvIHJlcG9ydCB0aGF0IHRoZSBXZWJQcm9jZXNzIHN1YnByb2Nl
c3MgY3Jhc2hlZC4KKyAgICAgICAgICAgIHNlbGYuX3N1YnByb2Nlc3NfY3Jhc2hlZCgiV2ViUHJv
Y2VzcyIpCisgICAgICAgIHJldHVybiBzZWxmLl9kZXRlY3RlZF9jcmFzaCgpCisKKyAgICBkZWYg
X2RldGVjdGVkX2NyYXNoKHNlbGYpOgorICAgICAgICAjIFdlIGNhbid0IGp1c3QgY2hlY2sgc2Vs
Zi5fc2VydmVyX3Byb2Nlc3MuY3Jhc2hlZCBiZWNhdXNlIFdlYktpdFRlc3RSdW5uZXIKKyAgICAg
ICAgIyBjYW4gcmVwb3J0IHN1YnByb2Nlc3MgY3Jhc2hlcyBhdCBhbnkgdGltZSBieSBwcmludGlu
ZworICAgICAgICAjICIjQ1JBU0hFRCAtIFdlYlByb2Nlc3MiLCB3ZSB3YW50IHRvIGNvdW50IHRo
b3NlIGFzIGNyYXNoZXMgYXMgd2VsbC4KKyAgICAgICAgcmV0dXJuIHNlbGYuX3NlcnZlcl9wcm9j
ZXNzLmNyYXNoZWQgb3Igc2VsZi5fY3Jhc2hlZF9zdWJwcm9jZXNzX25hbWUKKworICAgIGRlZiBf
c3VicHJvY2Vzc19jcmFzaGVkKHNlbGYsIHN1YnByb2Nlc3NfbmFtZSk6CisgICAgICAgIHNlbGYu
X2NyYXNoZWRfc3VicHJvY2Vzc19uYW1lID0gc3VicHJvY2Vzc19uYW1lCisKKyAgICBkZWYgX2Ny
YXNoZWRfcHJvY2Vzc19uYW1lKHNlbGYpOgorICAgICAgICBpZiBub3Qgc2VsZi5fZGV0ZWN0ZWRf
Y3Jhc2goKToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHJldHVybiBzZWxmLl9j
cmFzaGVkX3N1YnByb2Nlc3NfbmFtZSBvciBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5wcm9jZXNzX25h
bWUoKQogCiAgICAgZGVmIF9jb21tYW5kX2Zyb21fZHJpdmVyX2lucHV0KHNlbGYsIGRyaXZlcl9p
bnB1dCk6CiAgICAgICAgIHVyaSA9IHNlbGYuX3BvcnQudGVzdF90b191cmkoZHJpdmVyX2lucHV0
LnRlc3RfbmFtZSkKQEAgLTUwNyw4ICs1MzEsOSBAQCBjbGFzcyBXZWJLaXREcml2ZXIoRHJpdmVy
KToKICAgICAgICAgIyBXZSBtYXkgbm90IGhhdmUgcmVhZCBhbGwgb3V0cHV0IChpZiBhbiBlcnJv
ciBvY2N1cmVkKSwgYnV0IHdlIGNlcnRhaW5seSBzaG91bGQgaGF2ZSByZWFkIGFsbCBlcnJvciBi
eXRlcy4KICAgICAgICAgYXNzZXJ0IG5vdCBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5fZXJyb3IsICJV
bnByb2Nlc3NlZCBlcnJvciBvdXRwdXQ6ICVzIiAlIHNlbGYuX3NlcnZlcl9wcm9jZXNzLl9lcnJv
cgogICAgICAgICByZXR1cm4gRHJpdmVyT3V0cHV0KHRleHQsIGltYWdlLCBhY3R1YWxfaW1hZ2Vf
aGFzaCwgYXVkaW8sCi0gICAgICAgICAgICBjcmFzaD1zZWxmLmRldGVjdGVkX2NyYXNoKCksIHRl
c3RfdGltZT10aW1lLnRpbWUoKSAtIHN0YXJ0X3RpbWUsCi0gICAgICAgICAgICB0aW1lb3V0PXNl
bGYuX3NlcnZlcl9wcm9jZXNzLnRpbWVkX291dCwgZXJyb3I9c2VsZi5lcnJvcl9mcm9tX3Rlc3Qp
CisgICAgICAgICAgICBjcmFzaD1zZWxmLl9kZXRlY3RlZF9jcmFzaCgpLCB0ZXN0X3RpbWU9dGlt
ZS50aW1lKCkgLSBzdGFydF90aW1lLAorICAgICAgICAgICAgdGltZW91dD1zZWxmLl9zZXJ2ZXJf
cHJvY2Vzcy50aW1lZF9vdXQsIGVycm9yPXNlbGYuZXJyb3JfZnJvbV90ZXN0LAorICAgICAgICAg
ICAgY3Jhc2hlZF9wcm9jZXNzX25hbWU9c2VsZi5fY3Jhc2hlZF9wcm9jZXNzX25hbWUoKSkKIAog
ICAgIGRlZiBfcmVhZF9oZWFkZXIoc2VsZiwgYmxvY2ssIGxpbmUsIGhlYWRlcl90ZXh0LCBoZWFk
ZXJfYXR0ciwgaGVhZGVyX2ZpbHRlcj1Ob25lKToKICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRo
KGhlYWRlcl90ZXh0KSBhbmQgZ2V0YXR0cihibG9jaywgaGVhZGVyX2F0dHIpIGlzIE5vbmU6CkBA
IC01NDEsNyArNTY2LDcgQEAgY2xhc3MgV2ViS2l0RHJpdmVyKERyaXZlcik6CiAgICAgICAgICAg
ICBpZiBvdXRfc2Vlbl9lb2YgYW5kIChzZWxmLmVycl9zZWVuX2VvZiBvciBub3Qgd2FpdF9mb3Jf
c3RkZXJyX2VvZik6CiAgICAgICAgICAgICAgICAgYnJlYWsKIAotICAgICAgICAgICAgaWYgc2Vs
Zi5fc2VydmVyX3Byb2Nlc3MudGltZWRfb3V0IG9yIHNlbGYuZGV0ZWN0ZWRfY3Jhc2goKToKKyAg
ICAgICAgICAgIGlmIHNlbGYuX3NlcnZlcl9wcm9jZXNzLnRpbWVkX291dCBvciBzZWxmLl9kZXRl
Y3RlZF9jcmFzaCgpOgogICAgICAgICAgICAgICAgIGJyZWFrCiAKICAgICAgICAgICAgIHRpbWVv
dXQgPSBkZWFkbGluZSAtIHRpbWUudGltZSgpCkBAIC01NjksOCArNTk0LDkgQEAgY2xhc3MgV2Vi
S2l0RHJpdmVyKERyaXZlcik6CiAgICAgICAgICAgICAgICAgaWYgYmxvY2suX2NvbnRlbnRfbGVu
Z3RoIGlzIG5vdCBOb25lIGFuZCBub3QgYmxvY2suY29udGVudDoKICAgICAgICAgICAgICAgICAg
ICAgYmxvY2suY29udGVudCA9IHNlbGYuX3NlcnZlcl9wcm9jZXNzLnJlYWRfc3Rkb3V0KGRlYWRs
aW5lIC0gdGltZS50aW1lKCksIGJsb2NrLl9jb250ZW50X2xlbmd0aCkKIAotICAgICAgICAgICAg
IyBGSVhNRTogTmVlZCB0byBoYW5kbGUgIiNDUkFTSEVEIC0gV2ViUHJvY2VzcyIgYW5kICIjQ1JB
U0hFRCIuCiAgICAgICAgICAgICBpZiBlcnJfbGluZToKKyAgICAgICAgICAgICAgICBpZiBzZWxm
Ll9jaGVja19mb3JfZHJpdmVyX2NyYXNoKGVycl9saW5lKToKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWsKICAgICAgICAgICAgICAgICBzZWxmLmVycm9yX2Zyb21fdGVzdCArPSBlcnJfbGluZQog
CiAgICAgICAgIGJsb2NrLmRlY29kZV9jb250ZW50KCkK
</data>
<flag name="review"
          id="109577"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>