<?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>81603</bug_id>
          
          <creation_ts>2012-03-19 17:46:14 -0700</creation_ts>
          <short_desc>webkitpy: clean up actually getting crash logs from DRT/WTR crashes</short_desc>
          <delta_ts>2012-03-22 11:56:49 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>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>
          
          <blocked>71380</blocked>
    
    <blocked>76871</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Pranke">dpranke</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>aroben</cc>
    
    <cc>ossy</cc>
    
    <cc>pnormand</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>582534</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-03-19 17:46:14 -0700</bug_when>
    <thetext>currently the logic is scattered between different files and doesn&apos;t actually handle WebProcess crashes properly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582535</commentid>
    <comment_count>1</comment_count>
      <attachid>132735</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-03-19 17:47:42 -0700</bug_when>
    <thetext>Created attachment 132735
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582536</commentid>
    <comment_count>2</comment_count>
      <attachid>132736</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-03-19 17:49:37 -0700</bug_when>
    <thetext>Created attachment 132736
tweak changelog slightly</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583334</commentid>
    <comment_count>3</comment_count>
      <attachid>132736</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2012-03-20 12:12:04 -0700</bug_when>
    <thetext>Comment on attachment 132736
tweak changelog slightly

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

&gt; Tools/ChangeLog:15
&gt; +        Mac will now slow-spin with a timeout waiting for the crash log, rather
&gt; +        than waiting for the ReportCrash process to exit (it appears
&gt; +        that the mac will manage multiple crashes with a single
&gt; +        ReportCrash process, the process waits around longer than
&gt; +        necessary, presumably to avoid thrashing if processes are
&gt; +        repeatedly crashing).

Seems like we could optimize this by just keeping track of all the process name/pid pairs that crashed during the test run, and only trying to retrieve crash logs for them at the very end of the run. Then in the common case ReportCrash would finish its business without us ever having to wait on it. We&apos;d only have to wait for tests that crashed very near the end of the test run.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583386</commentid>
    <comment_count>4</comment_count>
      <attachid>132736</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-03-20 13:02:32 -0700</bug_when>
    <thetext>Comment on attachment 132736
tweak changelog slightly

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

&gt;&gt; Tools/ChangeLog:15
&gt;&gt; +        repeatedly crashing).
&gt; 
&gt; Seems like we could optimize this by just keeping track of all the process name/pid pairs that crashed during the test run, and only trying to retrieve crash logs for them at the very end of the run. Then in the common case ReportCrash would finish its business without us ever having to wait on it. We&apos;d only have to wait for tests that crashed very near the end of the test run.

Perhaps. I think it&apos;s a little conceptually clearer to return the crash as part of the test output itself. In the normal case, most of the waiting happens before we even get notified in the select() that the process has crashed; the only time we need to wait longer is when lots of things are crashing at once.

I&apos;d prefer to leave things as-is until we see a need to do another pass over things.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584635</commentid>
    <comment_count>5</comment_count>
      <attachid>132736</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-21 14:29:32 -0700</bug_when>
    <thetext>Comment on attachment 132736
tweak changelog slightly

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

Ok.  I kind of like aroben&apos;s idea of waiting until the end.  I&apos;m not sure whether that&apos;s going to make things go significantly faster in practice, but it might be a good refinement to experiment with.

&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium.py:611
&gt;          return DriverOutput(text, output_image, actual_checksum, audio=audio_bytes,
&gt; -            crash=crash, crashed_process_name=crashed_process_name, test_time=run_time, timeout=timeout, error=error)
&gt; +            crash=crash, crashed_process_name=crashed_process_name, crashed_pid=crashed_pid, crash_log=crash_log,
&gt; +            test_time=run_time, timeout=timeout, error=error)

This line of code is getting kind of out of control!

&gt; Tools/Scripts/webkitpy/layout_tests/port/mac.py:169
&gt; +        CRASH_LOG_WAIT_TIMEOUT_SECS = 5 * int(self.get_option(&apos;child_processes&apos;))

Is there a reason CRASH_LOG_WAIT_TIMEOUT_SECS is in all caps?  Does get_option return the actual number of child processes we&apos;re using (e.g., if we have memory limitations)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584641</commentid>
    <comment_count>6</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-03-21 14:37:53 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 132736 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=132736&amp;action=review
&gt; 
&gt; Ok.  I kind of like aroben&apos;s idea of waiting until the end.  I&apos;m not sure whether that&apos;s going to make things go significantly faster in practice, but it might be a good refinement to experiment with.
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/chromium.py:611
&gt; &gt;          return DriverOutput(text, output_image, actual_checksum, audio=audio_bytes,
&gt; &gt; -            crash=crash, crashed_process_name=crashed_process_name, test_time=run_time, timeout=timeout, error=error)
&gt; &gt; +            crash=crash, crashed_process_name=crashed_process_name, crashed_pid=crashed_pid, crash_log=crash_log,
&gt; &gt; +            test_time=run_time, timeout=timeout, error=error)
&gt; 
&gt; This line of code is getting kind of out of control!
&gt; 

Yeah ... I&apos;m not sure that the named arguments are really needed, either.

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/mac.py:169
&gt; &gt; +        CRASH_LOG_WAIT_TIMEOUT_SECS = 5 * int(self.get_option(&apos;child_processes&apos;))
&gt; 
&gt; Is there a reason CRASH_LOG_WAIT_TIMEOUT_SECS is in all caps?

Hm. No; it was a constant at one point. Will fix.

&gt;  Does get_option return the actual number of child processes we&apos;re using (e.g., if we have memory limitations)?

It represents the max number of child processes, so it respects the memory limitations. However, we may have fewer children actually running (either because we didn&apos;t need that many, or because the others have already finished). Getting the number actually running would be difficult if not impossible since it depends on what is going on in other processes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584643</commentid>
    <comment_count>7</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-03-21 14:41:32 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 132736 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=132736&amp;action=review
&gt; 
&gt; Ok.  I kind of like aroben&apos;s idea of waiting until the end.  I&apos;m not sure whether that&apos;s going to make things go significantly faster in practice, but it might be a good refinement to experiment with.
&gt; 

Another downside to this is that currently *all* of the &quot;handle test failure and put stuff into layout-test-results&quot; is done in the worker/child processes, in parallel. I wouldn&apos;t really like to split that logic up, and pushing that into the manager to the end could end up slowing things down (would have to code it to see).

There is a certain appeal to only having the manager process writing into layout-test-results, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584685</commentid>
    <comment_count>8</comment_count>
      <attachid>133125</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-03-21 15:21:44 -0700</bug_when>
    <thetext>Created attachment 133125
patch for landing, updated w/ review feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584687</commentid>
    <comment_count>9</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-03-21 15:24:52 -0700</bug_when>
    <thetext>Committed r111609: &lt;http://trac.webkit.org/changeset/111609&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585049</commentid>
    <comment_count>10</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-03-22 01:05:47 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Committed r111609: &lt;http://trac.webkit.org/changeset/111609&gt;

Reopen, because it broke Qt WK2 tester bot:
http://build.webkit.sed.hu/builders/x86-32%20Linux%20Qt%20Release%20WebKit2/builds/21876/steps/layout-test/logs/stdio

Could you check what happened?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585058</commentid>
    <comment_count>11</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-03-22 01:21:24 -0700</bug_when>
    <thetext>I rolled it out to unbreak Qt WK2 tester bot - http://trac.webkit.org/changeset/111661 (with accidentally change in r111615 too)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585417</commentid>
    <comment_count>12</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-03-22 10:00:28 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; I rolled it out to unbreak Qt WK2 tester bot - http://trac.webkit.org/changeset/111661 (with accidentally change in r111615 too)

Argh. This was fixed in r111615 ... it was just the ChangeLog that was wrong :(.

Starting with build 21879 on that bot, though, there appears to be another, different bug. I will look into that one as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585436</commentid>
    <comment_count>13</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-03-22 10:22:09 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #11)
&gt; &gt; I rolled it out to unbreak Qt WK2 tester bot - http://trac.webkit.org/changeset/111661 (with accidentally change in r111615 too)
&gt; 
&gt; Argh. This was fixed in r111615 ... it was just the ChangeLog that was wrong :(.
&gt; 
&gt; Starting with build 21879 on that bot, though, there appears to be another, different bug. I will look into that one as well.

 &apos;\n&apos;.join(&apos;STDERR: &apos; + line for line in stderr.decode(&apos;utf8&apos;).splitlines()) if stderr else &apos;&lt;empty&gt;&apos;)

should be:


 &apos;\n&apos;.join([&apos;STDERR: &apos;] + line for line in stderr.decode(&apos;utf8&apos;).splitlines()) if stderr else &apos;&lt;empty&gt;&apos;)

I think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585508</commentid>
    <comment_count>14</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-03-22 11:21:12 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #12)
&gt; &gt; (In reply to comment #11)
&gt; &gt; &gt; I rolled it out to unbreak Qt WK2 tester bot - http://trac.webkit.org/changeset/111661 (with accidentally change in r111615 too)
&gt; &gt; 
&gt; &gt; Argh. This was fixed in r111615 ... it was just the ChangeLog that was wrong :(.
&gt; &gt; 
&gt; &gt; Starting with build 21879 on that bot, though, there appears to be another, different bug. I will look into that one as well.
&gt; 
&gt;  &apos;\n&apos;.join(&apos;STDERR: &apos; + line for line in stderr.decode(&apos;utf8&apos;).splitlines()) if stderr else &apos;&lt;empty&gt;&apos;)
&gt; 
&gt; should be:
&gt; 
&gt; 
&gt;  &apos;\n&apos;.join([&apos;STDERR: &apos;] + line for line in stderr.decode(&apos;utf8&apos;).splitlines()) if stderr else &apos;&lt;empty&gt;&apos;)
&gt; 
&gt; I think.

No, that part&apos;s correct, as it is prefixing each line with STDERR: (although adding some parentheses will make that clearer).

It&apos;s actually complaining about the %d getting handed a string two lines above. Clearly I need a unit test for this ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585536</commentid>
    <comment_count>15</comment_count>
      <attachid>133304</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-03-22 11:43:19 -0700</bug_when>
    <thetext>Created attachment 133304
fix BasePort._get_crash_log()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585540</commentid>
    <comment_count>16</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-03-22 11:44:38 -0700</bug_when>
    <thetext>Committed r111736: &lt;http://trac.webkit.org/changeset/111736&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132735</attachid>
            <date>2012-03-19 17:47:42 -0700</date>
            <delta_ts>2012-03-19 17:49:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81603-20120319174741.patch</filename>
            <type>text/plain</type>
            <size>19638</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExMjYxCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTNlYWZmYjdiOGU3OGJiN2ZlMGRhNDY2YzBjZTk4ZGVm
YjMwM2QxMC4uZThiMThmMmY4YjEzZjFmY2QzYTY4MzVmMDBiMDlmNmIyMjhiNWJhNiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ4
IEBACiAyMDEyLTAzLTE5ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCisg
ICAgICAgIHdlYmtpdHB5OiBjbGVhbiB1cCBhY3R1YWxseSBnZXR0aW5nIGNyYXNoIGxvZ3MgZnJv
bSBEUlQvV1RSIGNyYXNoZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTgxNjAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIGEgbmV3IF9nZXRfY3Jhc2hfbG9nKCkgb3ZlcnJpZGFibGUgbWV0aG9kIG9u
IHRoZSBQb3J0CisgICAgICAgIG9iamVjdCB0byBjdXN0b21pemUgaG93IHdlIGZldGNoIGNyYXNo
IGxvZ3MgcGVyIHBvcnQuCisgICAgICAgIE1hYyB3aWxsIG5vdyBzbG93LXNwaW4gd2l0aCBhIHRp
bWVvdXQgd2FpdGluZyBmb3IgdGhlIGNyYXNoIGxvZywgcmF0aGVyCisgICAgICAgIHRoYW4gd2Fp
dGluZyBmb3IgdGhlIFJlcG9ydENyYXNoIHByb2Nlc3MgdG8gZXhpdCAoaXQgYXBwZWFycworICAg
ICAgICB0aGF0IHRoZSBtYWMgd2lsbCBtYW5hZ2UgbXVsdGlwbGUgY3Jhc2hlcyB3aXRoIGEgc2lu
Z2xlCisgICAgICAgIFJlcG9ydENyYXNoIHByb2Nlc3MsIHRoZSBwcm9jZXNzIHdhaXRzIGFyb3Vu
ZCBsb25nZXIgdGhhbgorICAgICAgICBuZWNlc3NhcnksIHByZXN1bWFibHkgdG8gYXZvaWQgdGhy
YXNoaW5nIGlmIHByb2Nlc3NlcyBhcmUKKyAgICAgICAgcmVwZWF0ZWRseSBjcmFzaGluZykuCisK
KyAgICAgICAgQWxzbywgYWRkIHRoZSBEcml2ZXJPdXRwdXQgc2hvdWxkIGNvbnRhaW4gdGhlIGNy
YXNoIGxvZyBhbmQgb3RoZXIgaW5mbywKKyAgICAgICAgd2hpY2ggaXMgY3JlYXRlZCBpbiBhIHBv
cnQtc3BlY2lmaWMgbWFubmVyIGJ1dCBjYW4gdGhlbiBiZQorICAgICAgICB0cmVhdGVkIGdlbmVy
aWNhbGx5LgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJv
bGxlcnMvc2luZ2xlX3Rlc3RfcnVubmVyLnB5OgorICAgICAgICAoU2luZ2xlVGVzdFJ1bm5lci5f
aGFuZGxlX2Vycm9yKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2Jhc2UucHk6CisgICAgICAgIChQb3J0LmRpZmZfdGV4dCk6CisgICAgICAgIChQb3J0Ll9n
ZXRfY3Jhc2hfbG9nKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2Nocm9taXVtLnB5OgorICAgICAgICAoQ2hyb21pdW1Ecml2ZXIucnVuX3Rlc3QpOgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fdW5pdHRl
c3QucHk6CisgICAgICAgIChDaHJvbWl1bURyaXZlclRlc3QudGVzdF9jcmFzaF9sb2cpOgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZHJpdmVyLnB5OgorICAg
ICAgICAoRHJpdmVyT3V0cHV0Ll9faW5pdF9fKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L21hYy5weToKKyAgICAgICAgKE1hY1BvcnQuX2dldF9jcmFzaF9s
b2cpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5w
eToKKyAgICAgICAgKFRlc3REcml2ZXIucnVuX3Rlc3QpOgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5OgorICAgICAgICAoV2ViS2l0UG9ydC5f
cmVhZF9pbWFnZV9kaWZmKToKKyAgICAgICAgKFdlYktpdERyaXZlci5fX2luaXRfXyk6CisgICAg
ICAgIChXZWJLaXREcml2ZXIuX3N0YXJ0KToKKyAgICAgICAgKFdlYktpdERyaXZlci5oYXNfY3Jh
c2hlZCk6CisgICAgICAgIChXZWJLaXREcml2ZXIucnVuX3Rlc3QpOgorICAgICAgICAoV2ViS2l0
RHJpdmVyLl9yZWFkX2Jsb2NrKToKKworMjAxMi0wMy0xOSAgRGlyayBQcmFua2UgIDxkcHJhbmtl
QGNocm9taXVtLm9yZz4KKwogICAgICAgICBXVFIgLSBsb2cgdGhlIHBpZCBvZiBhIGNyYXNoaW5n
IFdlYlByb2Nlc3MKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTgxNTc1CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL2NvbnRyb2xsZXJzL3NpbmdsZV90ZXN0X3J1bm5lci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3NpbmdsZV90ZXN0X3J1bm5lci5weQppbmRl
eCBkY2IxMGMxM2RiZjY2NDA4NGJjNGUyNWM3NmQzMDBhMzRlZDZiZmRlLi4yZjg5MGIwYzFmYmY0
MzIyYzVkY2YwNmQ2MjY0MGRkMTA2OWYzNmQ4IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9zaW5nbGVfdGVzdF9ydW5uZXIucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvc2luZ2xl
X3Rlc3RfcnVubmVyLnB5CkBAIC0xOTgsNyArMTk4LDkgQEAgY2xhc3MgU2luZ2xlVGVzdFJ1bm5l
cjoKICAgICAgICAgICAgIHRlc3RuYW1lID0gc2VsZi5fdGVzdF9uYW1lCiAKICAgICAgICAgaWYg
ZHJpdmVyX291dHB1dC5jcmFzaDoKLSAgICAgICAgICAgIGZhaWx1cmVzLmFwcGVuZCh0ZXN0X2Zh
aWx1cmVzLkZhaWx1cmVDcmFzaChib29sKHJlZmVyZW5jZV9maWxlbmFtZSkpKQorICAgICAgICAg
ICAgZmFpbHVyZXMuYXBwZW5kKHRlc3RfZmFpbHVyZXMuRmFpbHVyZUNyYXNoKGJvb2wocmVmZXJl
bmNlX2ZpbGVuYW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkcml2ZXJfb3V0cHV0LmNyYXNoZWRfcHJvY2Vzc19uYW1lLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyaXZlcl9v
dXRwdXQuY3Jhc2hlZF9waWQpKQogICAgICAgICAgICAgaWYgZHJpdmVyX291dHB1dC5lcnJvcjoK
ICAgICAgICAgICAgICAgICBfbG9nLmRlYnVnKCIlcyAlcyBjcmFzaGVkLCBzdGFjayB0cmFjZToi
ICUgKHNlbGYuX3dvcmtlcl9uYW1lLCB0ZXN0bmFtZSkpCiAgICAgICAgICAgICBlbHNlOgpkaWZm
IC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMv
dGVzdF9yZXN1bHRfd3JpdGVyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvY29udHJvbGxlcnMvdGVzdF9yZXN1bHRfd3JpdGVyLnB5CmluZGV4IDc1ZDUyNzhiMzY1MmFj
NWQ2OWQ0M2ZhY2IyZGFkMDMyOGUzMzBkMWYuLjcwYzM1NTMwNzg4ODI4NjI3OWIzYzY0ZjhkMmEz
YmJjODMxYjQwMTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL2NvbnRyb2xsZXJzL3Rlc3RfcmVzdWx0X3dyaXRlci5weQorKysgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy90ZXN0X3Jlc3VsdF93cml0ZXIucHkK
QEAgLTI5LDcgKzI5LDYgQEAKIAogaW1wb3J0IGxvZ2dpbmcKIAotZnJvbSB3ZWJraXRweS5jb21t
b24uc3lzdGVtLmNyYXNobG9ncyBpbXBvcnQgQ3Jhc2hMb2dzCiBmcm9tIHdlYmtpdHB5LmxheW91
dF90ZXN0cy5tb2RlbHMgaW1wb3J0IHRlc3RfZmFpbHVyZXMKIAogCkBAIC02Myw3ICs2Miw3IEBA
IGRlZiB3cml0ZV90ZXN0X3Jlc3VsdChmaWxlc3lzdGVtLCBwb3J0LCB0ZXN0X25hbWUsIGRyaXZl
cl9vdXRwdXQsCiAgICAgICAgICAgICB3cml0ZXIud3JpdGVfYXVkaW9fZmlsZXMoZHJpdmVyX291
dHB1dC5hdWRpbywgZXhwZWN0ZWRfZHJpdmVyX291dHB1dC5hdWRpbykKICAgICAgICAgZWxpZiBp
c2luc3RhbmNlKGZhaWx1cmUsIHRlc3RfZmFpbHVyZXMuRmFpbHVyZUNyYXNoKToKICAgICAgICAg
ICAgIGNyYXNoZWRfZHJpdmVyX291dHB1dCA9IGV4cGVjdGVkX2RyaXZlcl9vdXRwdXQgaWYgZmFp
bHVyZS5pc19yZWZ0ZXN0IGVsc2UgZHJpdmVyX291dHB1dAotICAgICAgICAgICAgd3JpdGVyLndy
aXRlX2NyYXNoX3JlcG9ydChjcmFzaGVkX2RyaXZlcl9vdXRwdXQuY3Jhc2hlZF9wcm9jZXNzX25h
bWUsIGNyYXNoZWRfZHJpdmVyX291dHB1dC5lcnJvcikKKyAgICAgICAgICAgIHdyaXRlci53cml0
ZV9jcmFzaF9sb2coY3Jhc2hlZF9kcml2ZXJfb3V0cHV0LmNyYXNoX2xvZykKICAgICAgICAgZWxp
ZiBpc2luc3RhbmNlKGZhaWx1cmUsIHRlc3RfZmFpbHVyZXMuRmFpbHVyZVJlZnRlc3RNaXNtYXRj
aCk6CiAgICAgICAgICAgICB3cml0ZXIud3JpdGVfaW1hZ2VfZmlsZXMoZHJpdmVyX291dHB1dC5p
bWFnZSwgZXhwZWN0ZWRfZHJpdmVyX291dHB1dC5pbWFnZSkKICAgICAgICAgICAgICMgRklYTUU6
IFRoaXMgd29yayBzaG91bGQgYmUgZG9uZSBlYXJsaWVyIGluIHRoZSBwaXBlbGluZSAoZS5nLiwg
d2hlbiB3ZSBjb21wYXJlIGltYWdlcyBmb3Igbm9uLXJlZiB0ZXN0cykuCkBAIC0xNTcsMTUgKzE1
NiwxMiBAQCBjbGFzcyBUZXN0UmVzdWx0V3JpdGVyKG9iamVjdCk6CiAgICAgICAgIGZzLm1heWJl
X21ha2VfZGlyZWN0b3J5KGZzLmRpcm5hbWUoZmlsZW5hbWUpKQogICAgICAgICBmcy53cml0ZV9i
aW5hcnlfZmlsZShmaWxlbmFtZSwgZXJyb3IpCiAKLSAgICBkZWYgd3JpdGVfY3Jhc2hfcmVwb3J0
KHNlbGYsIGNyYXNoZWRfcHJvY2Vzc19uYW1lLCBlcnJvcik6CisgICAgZGVmIHdyaXRlX2NyYXNo
X2xvZyhzZWxmLCBjcmFzaF9sb2cpOgogICAgICAgICBmcyA9IHNlbGYuX2ZpbGVzeXN0ZW0KICAg
ICAgICAgZmlsZW5hbWUgPSBzZWxmLm91dHB1dF9maWxlbmFtZShzZWxmLkZJTEVOQU1FX1NVRkZJ
WF9DUkFTSF9MT0cgKyAiLnR4dCIpCiAgICAgICAgIGZzLm1heWJlX21ha2VfZGlyZWN0b3J5KGZz
LmRpcm5hbWUoZmlsZW5hbWUpKQotICAgICAgICBjcmFzaF9sb2dzID0gQ3Jhc2hMb2dzKGZzKQot
ICAgICAgICBsb2cgPSBjcmFzaF9sb2dzLmZpbmRfbmV3ZXN0X2xvZyhjcmFzaGVkX3Byb2Nlc3Nf
bmFtZSkKLSAgICAgICAgIyBDcmFzaExvZ3MgZG9lc24ndCBzdXBwb3J0IGV2ZXJ5IHBsYXRmb3Jt
LCBzbyB3ZSBmYWxsIGJhY2sgdG8KLSAgICAgICAgIyBpbmNsdWRpbmcgdGhlIHN0ZGVyciBvdXRw
dXQsIHdoaWNoIGlzIGFkbWl0dGVkbHkgc29tZXdoYXQgcmVkdW5kYW50LgotICAgICAgICBmcy53
cml0ZV90ZXh0X2ZpbGUoZmlsZW5hbWUsIGxvZyBpZiBsb2cgZWxzZSBlcnJvcikKKyAgICAgICAg
aWYgY3Jhc2hfbG9nIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgZnMud3JpdGVfdGV4dF9maWxl
KGZpbGVuYW1lLCBjcmFzaF9sb2cpCiAKICAgICBkZWYgd3JpdGVfdGV4dF9maWxlcyhzZWxmLCBh
Y3R1YWxfdGV4dCwgZXhwZWN0ZWRfdGV4dCk6CiAgICAgICAgIHNlbGYud3JpdGVfb3V0cHV0X2Zp
bGVzKCIudHh0IiwgYWN0dWFsX3RleHQsIGV4cGVjdGVkX3RleHQpCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkKaW5kZXggZTI2MmE5ZDJkMWU5
MWI3MDY5NTQ4OGY3Zjc3N2Y0MDI3ZjE4NWVlZC4uZmMxYzg2YzY1Y2RlN2IzNGRjN2YxMDFmMGE4
ZGRiZWIwZWNjMGJkNSAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9iYXNlLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvYmFzZS5weQpAQCAtMjg3LDkgKzI4Nyw2IEBAIGNsYXNzIFBvcnQob2JqZWN0KToK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdHVhbF9maWxlbmFtZSkKICAg
ICAgICAgcmV0dXJuICcnLmpvaW4oZGlmZikKIAotICAgIGRlZiBpc19jcmFzaF9yZXBvcnRlcihz
ZWxmLCBwcm9jZXNzX25hbWUpOgotICAgICAgICByZXR1cm4gRmFsc2UKLQogICAgIGRlZiBjaGVj
a19mb3JfbGVha3Moc2VsZiwgcHJvY2Vzc19uYW1lLCBwcm9jZXNzX3BpZCk6CiAgICAgICAgICMg
U3ViY2xhc3NlcyBzaG91bGQgY2hlY2sgZm9yIGxlYWtzIGluIHRoZSBydW5uaW5nIHByb2Nlc3MK
ICAgICAgICAgIyBhbmQgcHJpbnQgYW55IG5lY2Vzc2FyeSB3YXJuaW5ncyBpZiBsZWFrcyBhcmUg
Zm91bmQuCkBAIC0xMDUxLDYgKzEwNDgsMTUgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAg
ICAiIiJSZXR1cm5zIHRoZSBwb3J0J3MgZHJpdmVyIGltcGxlbWVudGF0aW9uLiIiIgogICAgICAg
ICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCdQb3J0Ll9kcml2ZXJfY2xhc3MnKQogCisgICAg
ZGVmIF9nZXRfY3Jhc2hfbG9nKHNlbGYsIG5hbWUsIHBpZCwgc3Rkb3V0LCBzdGRlcnIpOgorICAg
ICAgICAjIEZJWE1FOiBEb2VzIGl0IG1ha2Ugc2Vuc2UgdG8gcHVzaCB0aGlzIGxvZ2ljIGludG8g
d2Via2l0cHkuY29tbW9uLnN5c3RlbS5jcmFzaGxvZ3MgPworICAgICAgICBsb2cgPSAnY3Jhc2gg
bG9nIGZvciAlcyAocGlkICVkKVxuJXNcbiVzXG4nICUgKAorICAgICAgICAgICAgbmFtZSBvciAn
Pz8nLAorICAgICAgICAgICAgcGlkIG9yICc8dW5rbm93bj4nLAorICAgICAgICAgICAgJ1xuJy5q
b2luKCdTVERPVVQ6ICcgKyBsaW5lIGZvciBsaW5lIGluIHN0ZG91dC5zcGxpdGxpbmVzKCkpIGlm
IHN0ZG91dCBlbHNlICc8ZW1wdHk+JywKKyAgICAgICAgICAgICdcbicuam9pbignU1RERVJSOiAn
ICsgbGluZSBmb3IgbGluZSBpbiBzdGRlcnIuc3BsaXRsaW5lcygpKSBpZiBzdGRlcnIgZWxzZSAn
PGVtcHR5PicpCisgICAgICAgIHJldHVybiBsb2cKKwogICAgIGRlZiB2aXJ0dWFsX3Rlc3Rfc3Vp
dGVzKHNlbGYpOgogICAgICAgICByZXR1cm4gW10KIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weSBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkKaW5kZXggMmY0MjY0ODQ1YWZh
ZTAyNzg5ZTQ1OGZhYjgxNzJmMDM0ZmNhNzQ2Ni4uM2Q2ZTdlOTIyOGQ4OGM0ZDY3MjYxMjM2YzY5
MjEzYmZkZmZjODExOSAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9jaHJvbWl1bS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5CkBAIC01OTIsMTYgKzU5MiwyMyBAQCBjbGFzcyBDaHJv
bWl1bURyaXZlcihEcml2ZXIpOgogICAgICAgICAgICAgICAgIHRleHQgPSBOb25lCiAKICAgICAg
ICAgZXJyb3IgPSAnJy5qb2luKGVycm9yKQotICAgICAgICBjcmFzaGVkX3Byb2Nlc3NfbmFtZSA9
IE5vbmUKICAgICAgICAgIyBDdXJyZW50bHkgdGhlIHN0YWNrdHJhY2UgaXMgaW4gdGhlIHRleHQg
b3V0cHV0LCBub3QgZXJyb3IsIHNvIGFwcGVuZCB0aGUgdHdvIHRvZ2V0aGVyIHNvCiAgICAgICAg
ICMgdGhhdCB3ZSBjYW4gc2VlIHN0YWNrIGluIHRoZSBvdXRwdXQuIFNlZSBodHRwOi8vd2Via2l0
Lm9yZy9iLzY2ODA2CiAgICAgICAgICMgRklYTUU6IFdlIHJlYWxseSBzaG91bGQgcHJvcGVybHkg
aGFuZGxlIHRoZSBzdGRlcnIgb3V0cHV0IHNlcGFyYXRlbHkuCisgICAgICAgIGNyYXNoX2xvZyA9
ICcnCisgICAgICAgIGNyYXNoZWRfcHJvY2Vzc19uYW1lID0gTm9uZQorICAgICAgICBjcmFzaGVk
X3BpZCA9IE5vbmUKICAgICAgICAgaWYgY3Jhc2g6Ci0gICAgICAgICAgICBlcnJvciA9IGVycm9y
ICsgc3RyKHRleHQpCiAgICAgICAgICAgICBjcmFzaGVkX3Byb2Nlc3NfbmFtZSA9IHNlbGYuX3Bv
cnQuZHJpdmVyX25hbWUoKQorICAgICAgICAgICAgaWYgc2VsZi5fcHJvYzoKKyAgICAgICAgICAg
ICAgICBjcmFzaGVkX3BpZCA9IHNlbGYuX3Byb2MucGlkCisgICAgICAgICAgICBjcmFzaF9sb2cg
PSBzZWxmLl9wb3J0Ll9nZXRfY3Jhc2hfbG9nKGNyYXNoZWRfcHJvY2Vzc19uYW1lLCBjcmFzaGVk
X3BpZCwgdGV4dCwgZXJyb3IpCisgICAgICAgICAgICBpZiB0ZXh0OgorICAgICAgICAgICAgICAg
IGVycm9yID0gZXJyb3IgKyB0ZXh0CiAKICAgICAgICAgcmV0dXJuIERyaXZlck91dHB1dCh0ZXh0
LCBvdXRwdXRfaW1hZ2UsIGFjdHVhbF9jaGVja3N1bSwgYXVkaW89YXVkaW9fYnl0ZXMsCi0gICAg
ICAgICAgICBjcmFzaD1jcmFzaCwgY3Jhc2hlZF9wcm9jZXNzX25hbWU9Y3Jhc2hlZF9wcm9jZXNz
X25hbWUsIHRlc3RfdGltZT1ydW5fdGltZSwgdGltZW91dD10aW1lb3V0LCBlcnJvcj1lcnJvcikK
KyAgICAgICAgICAgIGNyYXNoPWNyYXNoLCBjcmFzaGVkX3Byb2Nlc3NfbmFtZT1jcmFzaGVkX3By
b2Nlc3NfbmFtZSwgY3Jhc2hlZF9waWQ9Y3Jhc2hlZF9waWQsIGNyYXNoX2xvZz1jcmFzaF9sb2cs
CisgICAgICAgICAgICB0ZXN0X3RpbWU9cnVuX3RpbWUsIHRpbWVvdXQ9dGltZW91dCwgZXJyb3I9
ZXJyb3IpCiAKICAgICBkZWYgc3RhcnQoc2VsZiwgcGl4ZWxfdGVzdHMsIHBlcl90ZXN0X2FyZ3Mp
OgogICAgICAgICBpZiBub3Qgc2VsZi5fcHJvYzoKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fdW5pdHRlc3QucHkgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3VuaXR0ZXN0LnB5Cmlu
ZGV4IGQzZDMxMWM0ODc2NWI5NzM3NWE0ZDliNzBhYTRiMzIzOGE1M2I1MDQuLjBjNDE5ZDdjNmNk
MzNmZjAwNjIzMTczN2ZjMGVkZjI2NTg3YjdlOWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fdW5pdHRlc3QucHkKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV91bml0dGVzdC5w
eQpAQCAtOTEsMTcgKzkxLDIzIEBAIGNsYXNzIENocm9taXVtRHJpdmVyVGVzdCh1bml0dGVzdC5U
ZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuZHJpdmVyLl9wcm9jLnN0ZG91dC5yZWFkbGluZSA9IG1v
Y2tfcmVhZGxpbmUKICAgICAgICAgc2VsZi5fYXNzZXJ0X3dyaXRlX2NvbW1hbmRfYW5kX3JlYWRf
bGluZShleHBlY3RlZF9jcmFzaD1UcnVlKQogCi0gICAgZGVmIHRlc3RfY3Jhc2hlZF9wcm9jZXNz
X25hbWUoc2VsZik6CisgICAgZGVmIHRlc3RfY3Jhc2hfbG9nKHNlbGYpOgogICAgICAgICBzZWxm
LmRyaXZlci5fcHJvYyA9IE1vY2soKQogCiAgICAgICAgICMgU2ltdWxhdGUgYSBjcmFzaCBieSBo
YXZpbmcgc3Rkb3V0IGNsb3NlIHVuZXhwZWN0ZWRseS4KICAgICAgICAgZGVmIG1vY2tfcmVhZGxp
bmUoKToKICAgICAgICAgICAgIHJhaXNlIElPRXJyb3IKICAgICAgICAgc2VsZi5kcml2ZXIuX3By
b2Muc3Rkb3V0LnJlYWRsaW5lID0gbW9ja19yZWFkbGluZQorICAgICAgICBzZWxmLmRyaXZlci5f
cHJvYy5waWQgPSAxMjM0CiAKICAgICAgICAgc2VsZi5kcml2ZXIudGVzdF90b191cmkgPSBsYW1i
ZGEgdGVzdDogJ21vY2t0ZXN0dXJpJworICAgICAgICBzZWxmLmRyaXZlci5fcG9ydC5kcml2ZXJf
bmFtZSA9IGxhbWJkYTogJ21vY2tkcml2ZXInCisgICAgICAgIHNlbGYuZHJpdmVyLl9wb3J0Ll9n
ZXRfY3Jhc2hfbG9nID0gbGFtYmRhIG5hbWUsIHBpZCwgb3V0LCBlcnI6ICdtb2NrY3Jhc2hsb2cn
CiAgICAgICAgIGRyaXZlcl9vdXRwdXQgPSBzZWxmLmRyaXZlci5ydW5fdGVzdChEcml2ZXJJbnB1
dCh0ZXN0X25hbWU9J3NvbWUvdGVzdC5odG1sJywgdGltZW91dD0xLCBpbWFnZV9oYXNoPU5vbmUs
IGlzX3JlZnRlc3Q9RmFsc2UpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZHJpdmVy
Ll9wb3J0LmRyaXZlcl9uYW1lKCksIGRyaXZlcl9vdXRwdXQuY3Jhc2hlZF9wcm9jZXNzX25hbWUp
CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShkcml2ZXJfb3V0cHV0LmNyYXNoKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGRyaXZlcl9vdXRwdXQuY3Jhc2hlZF9wcm9jZXNzX25hbWUsICdtb2Nr
ZHJpdmVyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkcml2ZXJfb3V0cHV0LmNyYXNoZWRf
cGlkLCAxMjM0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRyaXZlcl9vdXRwdXQuY3Jhc2hf
bG9nLCAnbW9ja2NyYXNobG9nJykKIAogICAgIGRlZiB0ZXN0X3N0b3Aoc2VsZik6CiAgICAgICAg
IHNlbGYucGlkID0gTm9uZQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9kcml2ZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L2RyaXZlci5weQppbmRleCBmYTZlODFiMmU2M2FiOTNlMWZhMDc0MGU4OGM0MTU5
ZTEyNzYwMWJhLi5lMWQ4YTRiZGM1OWNkMzIzY2VkOGI4NzZkZjhhNjRmZjM3OGI3NDRlIDEwMDY0
NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2RyaXZlci5w
eQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2RyaXZlci5w
eQpAQCAtNjQsNyArNjQsOCBAQCBjbGFzcyBEcml2ZXJPdXRwdXQob2JqZWN0KToKICAgICBzdHJp
cF9wYXR0ZXJucy5hcHBlbmQoKHJlLmNvbXBpbGUoJ3Njcm9sbEhlaWdodCBbMC05XSsnKSwgJ3Nj
cm9sbEhlaWdodCcpKQogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRleHQsIGltYWdlLCBpbWFn
ZV9oYXNoLCBhdWRpbywgY3Jhc2g9RmFsc2UsCi0gICAgICAgICAgICB0ZXN0X3RpbWU9MCwgdGlt
ZW91dD1GYWxzZSwgZXJyb3I9JycsIGNyYXNoZWRfcHJvY2Vzc19uYW1lPU5vbmUpOgorICAgICAg
ICAgICAgdGVzdF90aW1lPTAsIHRpbWVvdXQ9RmFsc2UsIGVycm9yPScnLCBjcmFzaGVkX3Byb2Nl
c3NfbmFtZT0nPz8nLAorICAgICAgICAgICAgY3Jhc2hlZF9waWQ9Tm9uZSwgY3Jhc2hfbG9nPU5v
bmUpOgogICAgICAgICAjIEZJWE1FOiBBcmdzIGNvdWxkIGJlIHJlbmFtZWQgdG8gYmV0dGVyIGNs
YXJpZnkgd2hhdCB0aGV5IGRvLgogICAgICAgICBzZWxmLnRleHQgPSB0ZXh0CiAgICAgICAgIHNl
bGYuaW1hZ2UgPSBpbWFnZSAgIyBNYXkgYmUgZW1wdHktc3RyaW5nIGlmIHRoZSB0ZXN0IGNyYXNo
ZXMuCkBAIC03Myw2ICs3NCw4IEBAIGNsYXNzIERyaXZlck91dHB1dChvYmplY3QpOgogICAgICAg
ICBzZWxmLmF1ZGlvID0gYXVkaW8gICMgQmluYXJ5IGZvcm1hdCBpcyBwb3J0LWRlcGVuZGVudC4K
ICAgICAgICAgc2VsZi5jcmFzaCA9IGNyYXNoCiAgICAgICAgIHNlbGYuY3Jhc2hlZF9wcm9jZXNz
X25hbWUgPSBjcmFzaGVkX3Byb2Nlc3NfbmFtZQorICAgICAgICBzZWxmLmNyYXNoZWRfcGlkID0g
Y3Jhc2hlZF9waWQKKyAgICAgICAgc2VsZi5jcmFzaF9sb2cgPSBjcmFzaF9sb2cKICAgICAgICAg
c2VsZi50ZXN0X3RpbWUgPSB0ZXN0X3RpbWUKICAgICAgICAgc2VsZi50aW1lb3V0ID0gdGltZW91
dAogICAgICAgICBzZWxmLmVycm9yID0gZXJyb3IgICMgc3RkZXJyIG91dHB1dApkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tYWMucHkgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L21hYy5weQppbmRleCA1YWE5ODI2
ZDMwOTcwNzc2NWYyYWNlMDQ5ODhhOWRmYzY5NzU1ODZlLi4xODM0MzdhYWZjMThmOTI3M2IwNzNl
M2ZiNmJmM2Y4NTRhZWRjNmZiIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L21hYy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L21hYy5weQpAQCAtMjgsNyArMjgsOSBAQAogCiBpbXBvcnQgbG9nZ2luZwog
aW1wb3J0IHJlCitpbXBvcnQgdGltZQogCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uY3Jh
c2hsb2dzIGltcG9ydCBDcmFzaExvZ3MKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQu
YXBwbGUgaW1wb3J0IEFwcGxlUG9ydAogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC5s
ZWFrZGV0ZWN0b3IgaW1wb3J0IExlYWtEZXRlY3RvcgogCkBAIC05NSwxMCArOTcsNiBAQCBjbGFz
cyBNYWNQb3J0KEFwcGxlUG9ydCk6CiAgICAgZGVmIGlzX2xpb24oc2VsZik6CiAgICAgICAgIHJl
dHVybiBzZWxmLl92ZXJzaW9uID09ICJsaW9uIgogCi0gICAgIyBCZWxvbmdzIG9uIGEgUGxhdGZv
cm0gb2JqZWN0LgotICAgIGRlZiBpc19jcmFzaF9yZXBvcnRlcihzZWxmLCBwcm9jZXNzX25hbWUp
OgotICAgICAgICByZXR1cm4gcmUuc2VhcmNoKHInUmVwb3J0Q3Jhc2gnLCBwcm9jZXNzX25hbWUp
Ci0KICAgICBkZWYgZGVmYXVsdF9jaGlsZF9wcm9jZXNzZXMoc2VsZik6CiAgICAgICAgIGlmIHNl
bGYuaXNfc25vd2xlb3BhcmQoKToKICAgICAgICAgICAgIF9sb2cud2FybigiQ2Fubm90IHJ1biB0
ZXN0cyBpbiBwYXJhbGxlbCBvbiBTbm93IExlb3BhcmQgZHVlIHRvIHJkYXI6Ly9wcm9ibGVtLzEw
NjIxNTI1LiIpCkBAIC0xNTgsMyArMTU2LDIzIEBAIGNsYXNzIE1hY1BvcnQoQXBwbGVQb3J0KToK
IAogICAgIGRlZiByZWxlYXNlX2h0dHBfbG9jayhzZWxmKToKICAgICAgICAgcGFzcworCisgICAg
ZGVmIF9nZXRfY3Jhc2hfbG9nKHNlbGYsIG5hbWUsIHBpZCwgc3Rkb3V0LCBzdGRlcnIpOgorICAg
ICAgICAjIE5vdGUgdGhhdCB3ZSBkbyBzbG93LXNwaW4gaGVyZSBhbmQgd2FpdCwgc2luY2UgaXQg
YXBwZWFycyB0aGUgdGltZQorICAgICAgICAjIFJlcG9ydENyYXNoIHRha2VzIHRvIGFjdHVhbGx5
IHdyaXRlIGFuZCBmbHVzaCB0aGUgZmlsZSB2YXJpZXMgd2hlbiB0aGVyZSBhcmUKKyAgICAgICAg
IyBsb3RzIG9mIHNpbXVsdGFuZW91cyBjcmFzaGVzIGdvaW5nIG9uLgorICAgICAgICAjIEZJWE1F
OiBTaG91bGQgbW9zdCBvZiB0aGlzIGJlIG1vdmVkIGludG8gQ3Jhc2hMb2dzKCk/CisgICAgICAg
IGNyYXNoX2xvZyA9ICcnCisgICAgICAgIGNyYXNoX2xvZ3MgPSBDcmFzaExvZ3Moc2VsZi5fZmls
ZXN5c3RlbSkKKyAgICAgICAgc3RhcnQgPSB0aW1lLnRpbWUoKQorICAgICAgICBub3cgPSBzdGFy
dAorICAgICAgICBDUkFTSF9MT0dfV0FJVF9USU1FT1VUX1NFQ1MgPSA1ICogaW50KHNlbGYuZ2V0
X29wdGlvbignY2hpbGRfcHJvY2Vzc2VzJykpCisgICAgICAgIHdoaWxlIG5vdCBjcmFzaF9sb2cg
YW5kIG5vdyA8IHN0YXJ0ICsgQ1JBU0hfTE9HX1dBSVRfVElNRU9VVF9TRUNTOgorICAgICAgICAg
ICAgY3Jhc2hfbG9nID0gY3Jhc2hfbG9ncy5maW5kX25ld2VzdF9sb2cobmFtZSwgcGlkLCBpbmNs
dWRlX2Vycm9ycz1UcnVlKQorICAgICAgICAgICAgaWYgbm90IGNyYXNoX2xvZyBvciBub3QgW2xp
bmUgZm9yIGxpbmUgaW4gY3Jhc2hfbG9nLnNwbGl0bGluZXMoKSBpZiBub3QgbGluZS5zdGFydHN3
aXRoKCdFUlJPUicpXToKKyAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKDAuMSkKKyAgICAgICAg
ICAgICAgICBub3cgPSB0aW1lLnRpbWUoKQorICAgICAgICBpZiBub3QgY3Jhc2hfbG9nOgorICAg
ICAgICAgICAgY3Jhc2hfbG9nID0gJ25vIGNyYXNoIGxvZyBmb3VuZCBmb3IgJXM6JWQnICUgKG5h
bWUsIHBpZCkKKyAgICAgICAgICAgIF9sb2cud2FybmluZyhjcmFzaF9sb2cpCisgICAgICAgIHJl
dHVybiBjcmFzaF9sb2cKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvdGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvdGVzdC5weQppbmRleCAyMTYzNzIzMDUyYmQwNDFiY2MzY2E4NzFjZDhiYTM4YTc1MWJh
NDhhLi5mMDhjNTc0MjQzNWViOGM4ZThhMzkwODE3NDBhODVjMDZiOTE3MDQ0IDEwMDY0NAotLS0g
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHkKKysrIGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5CkBAIC0zNSw2
ICszNSw3IEBAIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IFBvcnQsIERy
aXZlciwgRHJpdmVyT3V0cHV0CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0LmJhc2Ug
aW1wb3J0IFZpcnR1YWxUZXN0U3VpdGUKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVs
cy50ZXN0X2NvbmZpZ3VyYXRpb24gaW1wb3J0IFRlc3RDb25maWd1cmF0aW9uCiBmcm9tIHdlYmtp
dHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbV9tb2NrIGltcG9ydCBNb2NrRmlsZVN5c3RlbQor
ZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmNyYXNobG9ncyBpbXBvcnQgQ3Jhc2hMb2dzCiAK
IAogIyBUaGlzIHNldHMgYmFzaWMgZXhwZWN0YXRpb25zIGZvciBhIHRlc3QuIEVhY2ggaW5kaXZp
ZHVhbCBleHBlY3RhdGlvbgpAQCAtNTE5LDEzICs1MjAsMjIgQEAgY2xhc3MgVGVzdERyaXZlcihE
cml2ZXIpOgogICAgICAgICBpZiB0ZXN0LmFjdHVhbF9hdWRpbzoKICAgICAgICAgICAgIGF1ZGlv
ID0gYmFzZTY0LmI2NGRlY29kZSh0ZXN0LmFjdHVhbF9hdWRpbykKICAgICAgICAgY3Jhc2hlZF9w
cm9jZXNzX25hbWUgPSBOb25lCisgICAgICAgIGNyYXNoZWRfcGlkID0gTm9uZQogICAgICAgICBp
ZiB0ZXN0LmNyYXNoOgogICAgICAgICAgICAgY3Jhc2hlZF9wcm9jZXNzX25hbWUgPSBzZWxmLl9w
b3J0LmRyaXZlcl9uYW1lKCkKKyAgICAgICAgICAgIGNyYXNoZWRfcGlkID0gMQogICAgICAgICBl
bGlmIHRlc3Qud2ViX3Byb2Nlc3NfY3Jhc2g6CiAgICAgICAgICAgICBjcmFzaGVkX3Byb2Nlc3Nf
bmFtZSA9ICdXZWJQcm9jZXNzJwotICAgICAgICByZXR1cm4gRHJpdmVyT3V0cHV0KGFjdHVhbF90
ZXh0LCB0ZXN0LmFjdHVhbF9pbWFnZSwKLSAgICAgICAgICAgIHRlc3QuYWN0dWFsX2NoZWNrc3Vt
LCBhdWRpbywgY3Jhc2g9dGVzdC5jcmFzaCBvciB0ZXN0LndlYl9wcm9jZXNzX2NyYXNoLAotICAg
ICAgICAgICAgY3Jhc2hlZF9wcm9jZXNzX25hbWU9Y3Jhc2hlZF9wcm9jZXNzX25hbWUsCisgICAg
ICAgICAgICBjcmFzaGVkX3BpZCA9IDIKKworICAgICAgICBjcmFzaF9sb2cgPSAnJworICAgICAg
ICBpZiBjcmFzaGVkX3Byb2Nlc3NfbmFtZToKKyAgICAgICAgICAgIGNyYXNoX2xvZ3MgPSBDcmFz
aExvZ3Moc2VsZi5fcG9ydC5fZmlsZXN5c3RlbSkKKyAgICAgICAgICAgIGNyYXNoX2xvZyA9IGNy
YXNoX2xvZ3MuZmluZF9uZXdlc3RfbG9nKGNyYXNoZWRfcHJvY2Vzc19uYW1lLCBOb25lKSBvciAn
JworCisgICAgICAgIHJldHVybiBEcml2ZXJPdXRwdXQoYWN0dWFsX3RleHQsIHRlc3QuYWN0dWFs
X2ltYWdlLCB0ZXN0LmFjdHVhbF9jaGVja3N1bSwgYXVkaW8sCisgICAgICAgICAgICBjcmFzaD10
ZXN0LmNyYXNoIG9yIHRlc3Qud2ViX3Byb2Nlc3NfY3Jhc2gsIGNyYXNoZWRfcHJvY2Vzc19uYW1l
PWNyYXNoZWRfcHJvY2Vzc19uYW1lLAorICAgICAgICAgICAgY3Jhc2hlZF9waWQ9Y3Jhc2hlZF9w
aWQsIGNyYXNoX2xvZz1jcmFzaF9sb2csCiAgICAgICAgICAgICB0ZXN0X3RpbWU9dGltZS50aW1l
KCkgLSBzdGFydF90aW1lLCB0aW1lb3V0PXRlc3QudGltZW91dCwgZXJyb3I9dGVzdC5lcnJvcikK
IAogICAgIGRlZiBzdGFydChzZWxmLCBwaXhlbF90ZXN0cywgcGVyX3Rlc3RfYXJncyk6CmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5w
eSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5Cmlu
ZGV4IGI5YzdhMDcwMmEzYWFmYWE1YjE0ZDQ0MzA5YjBmMDNjODYzNmQ2NWYuLmYxNjBkNDkyMDI3
YjViZmNmMDg2M2Y2MTE3ZWZkZmE4YzAyYWJmNGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5CkBAIC00MzcsNyArNDM3LDcgQEAg
Y2xhc3MgV2ViS2l0RHJpdmVyKERyaXZlcik6CiAgICAgICAgICMgIiNDUkFTSEVEIC0gUFJPQ0VT
U05BTUUiLiAgU2luY2UgdGhvc2UgY2FuIGhhcHBlbiBhdCBhbnkgdGltZQogICAgICAgICAjIGFu
ZCBTZXJ2ZXJQcm9jZXNzIHdvbid0IGJlIGF3YXJlIG9mIHRoZW0gKHNpbmNlIHRoZSBhY3R1YWwg
dG9vbAogICAgICAgICAjIGRpZG4ndCBjcmFzaCwganVzdCBhIHN1YnByb2Nlc3MpIHdlIHJlY29y
ZCB0aGUgY3Jhc2hlZCBzdWJwcm9jZXNzIG5hbWUgaGVyZS4KLSAgICAgICAgc2VsZi5fY3Jhc2hl
ZF9zdWJwcm9jZXNzX25hbWUgPSBOb25lCisgICAgICAgIHNlbGYuX2NyYXNoZWRfcHJvY2Vzc19u
YW1lID0gTm9uZQogCiAgICAgICAgICMgc3RkZXJyIHJlYWRpbmcgaXMgc2NvcGVkIG9uIGEgcGVy
LXRlc3QgKG5vdCBwZXItYmxvY2spIGJhc2lzLCBzbyB3ZSBzdG9yZSB0aGUgYWNjdW11bGF0ZWQK
ICAgICAgICAgIyBzdGRlcnIgb3V0cHV0LCBhcyB3ZWxsIGFzIGlmIHdlJ3ZlIHNlZW4gI0VPRiBv
biB0aGlzIGRyaXZlciBpbnN0YW5jZS4KQEAgLTQ4MywyNCArNDgzLDM0IEBAIGNsYXNzIFdlYktp
dERyaXZlcihEcml2ZXIpOgogICAgICAgICAjIEZJWE1FOiBXZSdyZSBhc3N1bWluZyB0aGF0IFdl
YktpdFRlc3RSdW5uZXIgY2hlY2tzIHRoaXMgRHVtcFJlbmRlclRyZWUtbmFtZWQgZW52aXJvbm1l
bnQgdmFyaWFibGUuCiAgICAgICAgIGVudmlyb25tZW50WydEVU1QUkVOREVSVFJFRV9URU1QJ10g
PSBzdHIoc2VsZi5fZHJpdmVyX3RlbXBkaXIpCiAgICAgICAgIGVudmlyb25tZW50WydMT0NBTF9S
RVNPVVJDRV9ST09UJ10gPSBzZWxmLl9wb3J0LmxheW91dF90ZXN0c19kaXIoKQotICAgICAgICBz
ZWxmLl9jcmFzaGVkX3N1YnByb2Nlc3NfbmFtZSA9IE5vbmUKKyAgICAgICAgc2VsZi5fY3Jhc2hl
ZF9wcm9jZXNzX25hbWUgPSBOb25lCisgICAgICAgIHNlbGYuX2NyYXNoZWRfcGlkID0gTm9uZQog
ICAgICAgICBzZWxmLl9zZXJ2ZXJfcHJvY2VzcyA9IHNlcnZlcl9wcm9jZXNzLlNlcnZlclByb2Nl
c3Moc2VsZi5fcG9ydCwgc2VydmVyX25hbWUsIHNlbGYuY21kX2xpbmUocGl4ZWxfdGVzdHMsIHBl
cl90ZXN0X2FyZ3MpLCBlbnZpcm9ubWVudCkKIAogICAgIGRlZiBoYXNfY3Jhc2hlZChzZWxmKToK
ICAgICAgICAgaWYgc2VsZi5fc2VydmVyX3Byb2Nlc3MgaXMgTm9uZToKICAgICAgICAgICAgIHJl
dHVybiBGYWxzZQotICAgICAgICBpZiBzZWxmLl9jcmFzaGVkX3N1YnByb2Nlc3NfbmFtZToKKyAg
ICAgICAgaWYgc2VsZi5fY3Jhc2hlZF9wcm9jZXNzX25hbWU6CisgICAgICAgICAgICByZXR1cm4g
VHJ1ZQorICAgICAgICBpZiBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5oYXNfY3Jhc2hlZCgpOgorICAg
ICAgICAgICAgc2VsZi5fY3Jhc2hlZF9wcm9jZXNzX25hbWUgPSBzZWxmLl9zZXJ2ZXJfcHJvY2Vz
cy5uYW1lKCkKKyAgICAgICAgICAgIHNlbGYuX2NyYXNoZWRfcGlkID0gc2VsZi5fc2VydmVyX3By
b2Nlc3MucGlkKCkKICAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgIHJldHVybiBzZWxm
Ll9zZXJ2ZXJfcHJvY2Vzcy5oYXNfY3Jhc2hlZCgpCiAKICAgICBkZWYgX2NoZWNrX2Zvcl9kcml2
ZXJfY3Jhc2goc2VsZiwgZXJyb3JfbGluZSk6CiAgICAgICAgIGlmIGVycm9yX2xpbmUgPT0gIiND
UkFTSEVEXG4iOgogICAgICAgICAgICAgIyBUaGlzIGlzIHVzZWQgb24gV2luZG93cyB0byByZXBv
cnQgdGhhdCB0aGUgcHJvY2VzcyBoYXMgY3Jhc2hlZAogICAgICAgICAgICAgIyBTZWUgaHR0cDov
L3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvNjU1MzcuCi0gICAgICAgICAgICBzZWxmLl9jcmFz
aGVkX3N1YnByb2Nlc3NfbmFtZSA9IHNlbGYuX3BvcnQuZHJpdmVyX25hbWUoKQotICAgICAgICBl
bGlmIGVycm9yX2xpbmUgPT0gIiNDUkFTSEVEIC0gV2ViUHJvY2Vzc1xuIjoKKyAgICAgICAgICAg
IHNlbGYuX2NyYXNoZWRfcHJvY2Vzc19uYW1lID0gc2VsZi5fc2VydmVyX3Byb2Nlc3MubmFtZSgp
CisgICAgICAgICAgICBzZWxmLl9jcmFzaGVkX3BpZCA9IHNlbGYuX3NlcnZlcl9wcm9jZXNzLnBp
ZCgpCisgICAgICAgIGVsaWYgZXJyb3JfbGluZS5zdGFydHN3aXRoKCIjQ1JBU0hFRCAtIFdlYlBy
b2Nlc3MiKToKICAgICAgICAgICAgICMgV2ViS2l0VGVzdFJ1bm5lciB1c2VzIHRoaXMgdG8gcmVw
b3J0IHRoYXQgdGhlIFdlYlByb2Nlc3Mgc3VicHJvY2VzcyBjcmFzaGVkLgotICAgICAgICAgICAg
c2VsZi5fY3Jhc2hlZF9zdWJwcm9jZXNzX25hbWUgPSAiV2ViUHJvY2VzcyIKKyAgICAgICAgICAg
IHBpZCA9IE5vbmUKKyAgICAgICAgICAgIG0gPSByZS5tYXRjaCgncGlkIChcZCspJywgZXJyX2xp
bmUpCisgICAgICAgICAgICBpZiBtOgorICAgICAgICAgICAgICAgIHBpZCA9IGludChtLmdyb3Vw
KDEpKQorICAgICAgICAgICAgc2VsZi5fY3Jhc2hlZF9wcm9jZXNzX25hbWUgPSAnV2ViUHJvY2Vz
cycKKyAgICAgICAgICAgIHNlbGYuX2NyYXNoZWRfcGlkID0gcGlkCiAgICAgICAgIHJldHVybiBz
ZWxmLl9oYXNfY3Jhc2hlZCgpCiAKICAgICBkZWYgX2NvbW1hbmRfZnJvbV9kcml2ZXJfaW5wdXQo
c2VsZiwgZHJpdmVyX2lucHV0KToKQEAgLTU1MCwxMCArNTYwLDE1IEBAIGNsYXNzIFdlYktpdERy
aXZlcihEcml2ZXIpOgogICAgICAgICAjIEZJWE1FOiBXZSBtYXkgbmVlZCB0byBhbHNvIHJlYWQg
c3RkZXJyIHVudGlsIHRoZSBwcm9jZXNzIGRpZXM/CiAgICAgICAgIHNlbGYuZXJyb3JfZnJvbV90
ZXN0ICs9IHNlbGYuX3NlcnZlcl9wcm9jZXNzLnBvcF9hbGxfYnVmZmVyZWRfc3RkZXJyKCkKIAor
ICAgICAgICBjcmFzaF9sb2cgPSAnJworICAgICAgICBpZiBzZWxmLmhhc19jcmFzaGVkKCk6Cisg
ICAgICAgICAgICBjcmFzaF9sb2cgPSBzZWxmLl9wb3J0Ll9nZXRfY3Jhc2hfbG9nKHNlbGYuX2Ny
YXNoZWRfcHJvY2Vzc19uYW1lLCBzZWxmLl9jcmFzaGVkX3BpZCwgdGV4dCwgc2VsZi5lcnJvcl9m
cm9tX3Rlc3QpCisKICAgICAgICAgcmV0dXJuIERyaXZlck91dHB1dCh0ZXh0LCBpbWFnZSwgYWN0
dWFsX2ltYWdlX2hhc2gsIGF1ZGlvLAogICAgICAgICAgICAgY3Jhc2g9c2VsZi5oYXNfY3Jhc2hl
ZCgpLCB0ZXN0X3RpbWU9dGltZS50aW1lKCkgLSBzdGFydF90aW1lLAogICAgICAgICAgICAgdGlt
ZW91dD1zZWxmLl9zZXJ2ZXJfcHJvY2Vzcy50aW1lZF9vdXQsIGVycm9yPXNlbGYuZXJyb3JfZnJv
bV90ZXN0LAotICAgICAgICAgICAgY3Jhc2hlZF9wcm9jZXNzX25hbWU9c2VsZi5fY3Jhc2hlZF9z
dWJwcm9jZXNzX25hbWUpCisgICAgICAgICAgICBjcmFzaGVkX3Byb2Nlc3NfbmFtZT1zZWxmLl9j
cmFzaGVkX3Byb2Nlc3NfbmFtZSwKKyAgICAgICAgICAgIGNyYXNoZWRfcGlkPXNlbGYuX2NyYXNo
ZWRfcGlkLCBjcmFzaF9sb2c9Y3Jhc2hfbG9nKQogCiAgICAgZGVmIF9yZWFkX2hlYWRlcihzZWxm
LCBibG9jaywgbGluZSwgaGVhZGVyX3RleHQsIGhlYWRlcl9hdHRyLCBoZWFkZXJfZmlsdGVyPU5v
bmUpOgogICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoaGVhZGVyX3RleHQpIGFuZCBnZXRhdHRy
KGJsb2NrLCBoZWFkZXJfYXR0cikgaXMgTm9uZToK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132736</attachid>
            <date>2012-03-19 17:49:37 -0700</date>
            <delta_ts>2012-03-21 15:21:41 -0700</delta_ts>
            <desc>tweak changelog slightly</desc>
            <filename>bug-81603-20120319174935.patch</filename>
            <type>text/plain</type>
            <size>19912</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExMjYxCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTNlYWZmYjdiOGU3OGJiN2ZlMGRhNDY2YzBjZTk4ZGVm
YjMwM2QxMC4uNjM0ODgxM2ViZjc5NmQxYTdiZWJlMDAzY2RhNTg0OWY4OTNhYjhiZCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDUy
IEBACiAyMDEyLTAzLTE5ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCisg
ICAgICAgIHdlYmtpdHB5OiBjbGVhbiB1cCBhY3R1YWxseSBnZXR0aW5nIGNyYXNoIGxvZ3MgZnJv
bSBEUlQvV1RSIGNyYXNoZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTgxNjAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIGEgbmV3IF9nZXRfY3Jhc2hfbG9nKCkgb3ZlcnJpZGFibGUgbWV0aG9kIG9u
IHRoZSBQb3J0CisgICAgICAgIG9iamVjdCB0byBjdXN0b21pemUgaG93IHdlIGZldGNoIGNyYXNo
IGxvZ3MgcGVyIHBvcnQuCisgICAgICAgIE1hYyB3aWxsIG5vdyBzbG93LXNwaW4gd2l0aCBhIHRp
bWVvdXQgd2FpdGluZyBmb3IgdGhlIGNyYXNoIGxvZywgcmF0aGVyCisgICAgICAgIHRoYW4gd2Fp
dGluZyBmb3IgdGhlIFJlcG9ydENyYXNoIHByb2Nlc3MgdG8gZXhpdCAoaXQgYXBwZWFycworICAg
ICAgICB0aGF0IHRoZSBtYWMgd2lsbCBtYW5hZ2UgbXVsdGlwbGUgY3Jhc2hlcyB3aXRoIGEgc2lu
Z2xlCisgICAgICAgIFJlcG9ydENyYXNoIHByb2Nlc3MsIHRoZSBwcm9jZXNzIHdhaXRzIGFyb3Vu
ZCBsb25nZXIgdGhhbgorICAgICAgICBuZWNlc3NhcnksIHByZXN1bWFibHkgdG8gYXZvaWQgdGhy
YXNoaW5nIGlmIHByb2Nlc3NlcyBhcmUKKyAgICAgICAgcmVwZWF0ZWRseSBjcmFzaGluZykuCisK
KyAgICAgICAgQWxzbywgYWRkIHRoZSBEcml2ZXJPdXRwdXQgc2hvdWxkIGNvbnRhaW4gdGhlIGNy
YXNoIGxvZyBhbmQgb3RoZXIgaW5mbywKKyAgICAgICAgd2hpY2ggaXMgY3JlYXRlZCBpbiBhIHBv
cnQtc3BlY2lmaWMgbWFubmVyIGJ1dCBjYW4gdGhlbiBiZQorICAgICAgICB0cmVhdGVkIGdlbmVy
aWNhbGx5LiBQcmV2aW91c2x5IHNpbmdsZV90ZXN0X3J1bm5lciB3b3VsZCBnZXQKKyAgICAgICAg
dG9sZCB0aGF0IHNvbWV0aGluZyBjcmFzaGVkIGFuZCBhdHRlbXB0IHRvIGRvIHNvbWV0aGluZyB0
byBnZXQKKyAgICAgICAgdGhlIGNyYXNoIGxvZywgYnV0IGl0IGRpZG4ndCBoYXZlIHRoZSBpbmZv
cm1hdGlvbiBpdCBuZWVkZWQgdG8KKyAgICAgICAgb2QgdGhlIHJpZ2h0IHRoaW5nOyBiZXR0ZXIg
dG8gbWFrZSB0aGUgZHJpdmVyIGhhbmQgYmFjayB0aGUKKyAgICAgICAgcmlnaHQgaW5mby4KKwor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3Npbmds
ZV90ZXN0X3J1bm5lci5weToKKyAgICAgICAgKFNpbmdsZVRlc3RSdW5uZXIuX2hhbmRsZV9lcnJv
cik6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5
OgorICAgICAgICAoUG9ydC5kaWZmX3RleHQpOgorICAgICAgICAoUG9ydC5fZ2V0X2NyYXNoX2xv
Zyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1
bS5weToKKyAgICAgICAgKENocm9taXVtRHJpdmVyLnJ1bl90ZXN0KToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3VuaXR0ZXN0LnB5OgorICAg
ICAgICAoQ2hyb21pdW1Ecml2ZXJUZXN0LnRlc3RfY3Jhc2hfbG9nKToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2RyaXZlci5weToKKyAgICAgICAgKERyaXZl
ck91dHB1dC5fX2luaXRfXyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9tYWMucHk6CisgICAgICAgIChNYWNQb3J0Ll9nZXRfY3Jhc2hfbG9nKToKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHk6CisgICAgICAg
IChUZXN0RHJpdmVyLnJ1bl90ZXN0KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L3dlYmtpdC5weToKKyAgICAgICAgKFdlYktpdFBvcnQuX3JlYWRfaW1hZ2Vf
ZGlmZik6CisgICAgICAgIChXZWJLaXREcml2ZXIuX19pbml0X18pOgorICAgICAgICAoV2ViS2l0
RHJpdmVyLl9zdGFydCk6CisgICAgICAgIChXZWJLaXREcml2ZXIuaGFzX2NyYXNoZWQpOgorICAg
ICAgICAoV2ViS2l0RHJpdmVyLnJ1bl90ZXN0KToKKyAgICAgICAgKFdlYktpdERyaXZlci5fcmVh
ZF9ibG9jayk6CisKKzIwMTItMDMtMTkgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5v
cmc+CisKICAgICAgICAgV1RSIC0gbG9nIHRoZSBwaWQgb2YgYSBjcmFzaGluZyBXZWJQcm9jZXNz
CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTU3NQog
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9s
bGVycy9zaW5nbGVfdGVzdF9ydW5uZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9jb250cm9sbGVycy9zaW5nbGVfdGVzdF9ydW5uZXIucHkKaW5kZXggZGNiMTBjMTNk
YmY2NjQwODRiYzRlMjVjNzZkMzAwYTM0ZWQ2YmZkZS4uMmY4OTBiMGMxZmJmNDMyMmM1ZGNmMDZk
NjI2NDBkZDEwNjlmMzZkOCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvY29udHJvbGxlcnMvc2luZ2xlX3Rlc3RfcnVubmVyLnB5CisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3NpbmdsZV90ZXN0X3J1bm5l
ci5weQpAQCAtMTk4LDcgKzE5OCw5IEBAIGNsYXNzIFNpbmdsZVRlc3RSdW5uZXI6CiAgICAgICAg
ICAgICB0ZXN0bmFtZSA9IHNlbGYuX3Rlc3RfbmFtZQogCiAgICAgICAgIGlmIGRyaXZlcl9vdXRw
dXQuY3Jhc2g6Ci0gICAgICAgICAgICBmYWlsdXJlcy5hcHBlbmQodGVzdF9mYWlsdXJlcy5GYWls
dXJlQ3Jhc2goYm9vbChyZWZlcmVuY2VfZmlsZW5hbWUpKSkKKyAgICAgICAgICAgIGZhaWx1cmVz
LmFwcGVuZCh0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVDcmFzaChib29sKHJlZmVyZW5jZV9maWxlbmFt
ZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZHJpdmVyX291dHB1dC5jcmFzaGVkX3Byb2Nlc3NfbmFtZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcml2ZXJfb3V0cHV0LmNyYXNo
ZWRfcGlkKSkKICAgICAgICAgICAgIGlmIGRyaXZlcl9vdXRwdXQuZXJyb3I6CiAgICAgICAgICAg
ICAgICAgX2xvZy5kZWJ1ZygiJXMgJXMgY3Jhc2hlZCwgc3RhY2sgdHJhY2U6IiAlIChzZWxmLl93
b3JrZXJfbmFtZSwgdGVzdG5hbWUpKQogICAgICAgICAgICAgZWxzZToKZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3Rlc3RfcmVzdWx0
X3dyaXRlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xs
ZXJzL3Rlc3RfcmVzdWx0X3dyaXRlci5weQppbmRleCA3NWQ1Mjc4YjM2NTJhYzVkNjlkNDNmYWNi
MmRhZDAzMjhlMzMwZDFmLi43MGMzNTUzMDc4ODgyODYyNzliM2M2NGY4ZDJhM2JiYzgzMWI0MDEx
IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9s
bGVycy90ZXN0X3Jlc3VsdF93cml0ZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvY29udHJvbGxlcnMvdGVzdF9yZXN1bHRfd3JpdGVyLnB5CkBAIC0yOSw3ICsy
OSw2IEBACiAKIGltcG9ydCBsb2dnaW5nCiAKLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5j
cmFzaGxvZ3MgaW1wb3J0IENyYXNoTG9ncwogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9k
ZWxzIGltcG9ydCB0ZXN0X2ZhaWx1cmVzCiAKIApAQCAtNjMsNyArNjIsNyBAQCBkZWYgd3JpdGVf
dGVzdF9yZXN1bHQoZmlsZXN5c3RlbSwgcG9ydCwgdGVzdF9uYW1lLCBkcml2ZXJfb3V0cHV0LAog
ICAgICAgICAgICAgd3JpdGVyLndyaXRlX2F1ZGlvX2ZpbGVzKGRyaXZlcl9vdXRwdXQuYXVkaW8s
IGV4cGVjdGVkX2RyaXZlcl9vdXRwdXQuYXVkaW8pCiAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShm
YWlsdXJlLCB0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVDcmFzaCk6CiAgICAgICAgICAgICBjcmFzaGVk
X2RyaXZlcl9vdXRwdXQgPSBleHBlY3RlZF9kcml2ZXJfb3V0cHV0IGlmIGZhaWx1cmUuaXNfcmVm
dGVzdCBlbHNlIGRyaXZlcl9vdXRwdXQKLSAgICAgICAgICAgIHdyaXRlci53cml0ZV9jcmFzaF9y
ZXBvcnQoY3Jhc2hlZF9kcml2ZXJfb3V0cHV0LmNyYXNoZWRfcHJvY2Vzc19uYW1lLCBjcmFzaGVk
X2RyaXZlcl9vdXRwdXQuZXJyb3IpCisgICAgICAgICAgICB3cml0ZXIud3JpdGVfY3Jhc2hfbG9n
KGNyYXNoZWRfZHJpdmVyX291dHB1dC5jcmFzaF9sb2cpCiAgICAgICAgIGVsaWYgaXNpbnN0YW5j
ZShmYWlsdXJlLCB0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVSZWZ0ZXN0TWlzbWF0Y2gpOgogICAgICAg
ICAgICAgd3JpdGVyLndyaXRlX2ltYWdlX2ZpbGVzKGRyaXZlcl9vdXRwdXQuaW1hZ2UsIGV4cGVj
dGVkX2RyaXZlcl9vdXRwdXQuaW1hZ2UpCiAgICAgICAgICAgICAjIEZJWE1FOiBUaGlzIHdvcmsg
c2hvdWxkIGJlIGRvbmUgZWFybGllciBpbiB0aGUgcGlwZWxpbmUgKGUuZy4sIHdoZW4gd2UgY29t
cGFyZSBpbWFnZXMgZm9yIG5vbi1yZWYgdGVzdHMpLgpAQCAtMTU3LDE1ICsxNTYsMTIgQEAgY2xh
c3MgVGVzdFJlc3VsdFdyaXRlcihvYmplY3QpOgogICAgICAgICBmcy5tYXliZV9tYWtlX2RpcmVj
dG9yeShmcy5kaXJuYW1lKGZpbGVuYW1lKSkKICAgICAgICAgZnMud3JpdGVfYmluYXJ5X2ZpbGUo
ZmlsZW5hbWUsIGVycm9yKQogCi0gICAgZGVmIHdyaXRlX2NyYXNoX3JlcG9ydChzZWxmLCBjcmFz
aGVkX3Byb2Nlc3NfbmFtZSwgZXJyb3IpOgorICAgIGRlZiB3cml0ZV9jcmFzaF9sb2coc2VsZiwg
Y3Jhc2hfbG9nKToKICAgICAgICAgZnMgPSBzZWxmLl9maWxlc3lzdGVtCiAgICAgICAgIGZpbGVu
YW1lID0gc2VsZi5vdXRwdXRfZmlsZW5hbWUoc2VsZi5GSUxFTkFNRV9TVUZGSVhfQ1JBU0hfTE9H
ICsgIi50eHQiKQogICAgICAgICBmcy5tYXliZV9tYWtlX2RpcmVjdG9yeShmcy5kaXJuYW1lKGZp
bGVuYW1lKSkKLSAgICAgICAgY3Jhc2hfbG9ncyA9IENyYXNoTG9ncyhmcykKLSAgICAgICAgbG9n
ID0gY3Jhc2hfbG9ncy5maW5kX25ld2VzdF9sb2coY3Jhc2hlZF9wcm9jZXNzX25hbWUpCi0gICAg
ICAgICMgQ3Jhc2hMb2dzIGRvZXNuJ3Qgc3VwcG9ydCBldmVyeSBwbGF0Zm9ybSwgc28gd2UgZmFs
bCBiYWNrIHRvCi0gICAgICAgICMgaW5jbHVkaW5nIHRoZSBzdGRlcnIgb3V0cHV0LCB3aGljaCBp
cyBhZG1pdHRlZGx5IHNvbWV3aGF0IHJlZHVuZGFudC4KLSAgICAgICAgZnMud3JpdGVfdGV4dF9m
aWxlKGZpbGVuYW1lLCBsb2cgaWYgbG9nIGVsc2UgZXJyb3IpCisgICAgICAgIGlmIGNyYXNoX2xv
ZyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGZzLndyaXRlX3RleHRfZmlsZShmaWxlbmFtZSwg
Y3Jhc2hfbG9nKQogCiAgICAgZGVmIHdyaXRlX3RleHRfZmlsZXMoc2VsZiwgYWN0dWFsX3RleHQs
IGV4cGVjdGVkX3RleHQpOgogICAgICAgICBzZWxmLndyaXRlX291dHB1dF9maWxlcygiLnR4dCIs
IGFjdHVhbF90ZXh0LCBleHBlY3RlZF90ZXh0KQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CmluZGV4IGUyNjJhOWQyZDFlOTFiNzA2OTU0ODhm
N2Y3NzdmNDAyN2YxODVlZWQuLmZjMWM4NmM2NWNkZTdiMzRkYzdmMTAxZjBhOGRkYmViMGVjYzBi
ZDUgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
YmFzZS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jh
c2UucHkKQEAgLTI4Nyw5ICsyODcsNiBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhY3R1YWxfZmlsZW5hbWUpCiAgICAgICAgIHJldHVy
biAnJy5qb2luKGRpZmYpCiAKLSAgICBkZWYgaXNfY3Jhc2hfcmVwb3J0ZXIoc2VsZiwgcHJvY2Vz
c19uYW1lKToKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KICAgICBkZWYgY2hlY2tfZm9yX2xlYWtz
KHNlbGYsIHByb2Nlc3NfbmFtZSwgcHJvY2Vzc19waWQpOgogICAgICAgICAjIFN1YmNsYXNzZXMg
c2hvdWxkIGNoZWNrIGZvciBsZWFrcyBpbiB0aGUgcnVubmluZyBwcm9jZXNzCiAgICAgICAgICMg
YW5kIHByaW50IGFueSBuZWNlc3Nhcnkgd2FybmluZ3MgaWYgbGVha3MgYXJlIGZvdW5kLgpAQCAt
MTA1MSw2ICsxMDQ4LDE1IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAgICAgIiIiUmV0dXJu
cyB0aGUgcG9ydCdzIGRyaXZlciBpbXBsZW1lbnRhdGlvbi4iIiIKICAgICAgICAgcmFpc2UgTm90
SW1wbGVtZW50ZWRFcnJvcignUG9ydC5fZHJpdmVyX2NsYXNzJykKIAorICAgIGRlZiBfZ2V0X2Ny
YXNoX2xvZyhzZWxmLCBuYW1lLCBwaWQsIHN0ZG91dCwgc3RkZXJyKToKKyAgICAgICAgIyBGSVhN
RTogRG9lcyBpdCBtYWtlIHNlbnNlIHRvIHB1c2ggdGhpcyBsb2dpYyBpbnRvIHdlYmtpdHB5LmNv
bW1vbi5zeXN0ZW0uY3Jhc2hsb2dzID8KKyAgICAgICAgbG9nID0gJ2NyYXNoIGxvZyBmb3IgJXMg
KHBpZCAlZClcbiVzXG4lc1xuJyAlICgKKyAgICAgICAgICAgIG5hbWUgb3IgJz8/JywKKyAgICAg
ICAgICAgIHBpZCBvciAnPHVua25vd24+JywKKyAgICAgICAgICAgICdcbicuam9pbignU1RET1VU
OiAnICsgbGluZSBmb3IgbGluZSBpbiBzdGRvdXQuc3BsaXRsaW5lcygpKSBpZiBzdGRvdXQgZWxz
ZSAnPGVtcHR5PicsCisgICAgICAgICAgICAnXG4nLmpvaW4oJ1NUREVSUjogJyArIGxpbmUgZm9y
IGxpbmUgaW4gc3RkZXJyLnNwbGl0bGluZXMoKSkgaWYgc3RkZXJyIGVsc2UgJzxlbXB0eT4nKQor
ICAgICAgICByZXR1cm4gbG9nCisKICAgICBkZWYgdmlydHVhbF90ZXN0X3N1aXRlcyhzZWxmKToK
ICAgICAgICAgcmV0dXJuIFtdCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5CmluZGV4IDJmNDI2NDg0NWFmYWUwMjc4OWU0NThm
YWI4MTcyZjAzNGZjYTc0NjYuLjNkNmU3ZTkyMjhkODhjNGQ2NzI2MTIzNmM2OTIxM2JmZGZmYzgx
MTkgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
Y2hyb21pdW0ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9jaHJvbWl1bS5weQpAQCAtNTkyLDE2ICs1OTIsMjMgQEAgY2xhc3MgQ2hyb21pdW1Ecml2ZXIo
RHJpdmVyKToKICAgICAgICAgICAgICAgICB0ZXh0ID0gTm9uZQogCiAgICAgICAgIGVycm9yID0g
Jycuam9pbihlcnJvcikKLSAgICAgICAgY3Jhc2hlZF9wcm9jZXNzX25hbWUgPSBOb25lCiAgICAg
ICAgICMgQ3VycmVudGx5IHRoZSBzdGFja3RyYWNlIGlzIGluIHRoZSB0ZXh0IG91dHB1dCwgbm90
IGVycm9yLCBzbyBhcHBlbmQgdGhlIHR3byB0b2dldGhlciBzbwogICAgICAgICAjIHRoYXQgd2Ug
Y2FuIHNlZSBzdGFjayBpbiB0aGUgb3V0cHV0LiBTZWUgaHR0cDovL3dlYmtpdC5vcmcvYi82Njgw
NgogICAgICAgICAjIEZJWE1FOiBXZSByZWFsbHkgc2hvdWxkIHByb3Blcmx5IGhhbmRsZSB0aGUg
c3RkZXJyIG91dHB1dCBzZXBhcmF0ZWx5LgorICAgICAgICBjcmFzaF9sb2cgPSAnJworICAgICAg
ICBjcmFzaGVkX3Byb2Nlc3NfbmFtZSA9IE5vbmUKKyAgICAgICAgY3Jhc2hlZF9waWQgPSBOb25l
CiAgICAgICAgIGlmIGNyYXNoOgotICAgICAgICAgICAgZXJyb3IgPSBlcnJvciArIHN0cih0ZXh0
KQogICAgICAgICAgICAgY3Jhc2hlZF9wcm9jZXNzX25hbWUgPSBzZWxmLl9wb3J0LmRyaXZlcl9u
YW1lKCkKKyAgICAgICAgICAgIGlmIHNlbGYuX3Byb2M6CisgICAgICAgICAgICAgICAgY3Jhc2hl
ZF9waWQgPSBzZWxmLl9wcm9jLnBpZAorICAgICAgICAgICAgY3Jhc2hfbG9nID0gc2VsZi5fcG9y
dC5fZ2V0X2NyYXNoX2xvZyhjcmFzaGVkX3Byb2Nlc3NfbmFtZSwgY3Jhc2hlZF9waWQsIHRleHQs
IGVycm9yKQorICAgICAgICAgICAgaWYgdGV4dDoKKyAgICAgICAgICAgICAgICBlcnJvciA9IGVy
cm9yICsgdGV4dAogCiAgICAgICAgIHJldHVybiBEcml2ZXJPdXRwdXQodGV4dCwgb3V0cHV0X2lt
YWdlLCBhY3R1YWxfY2hlY2tzdW0sIGF1ZGlvPWF1ZGlvX2J5dGVzLAotICAgICAgICAgICAgY3Jh
c2g9Y3Jhc2gsIGNyYXNoZWRfcHJvY2Vzc19uYW1lPWNyYXNoZWRfcHJvY2Vzc19uYW1lLCB0ZXN0
X3RpbWU9cnVuX3RpbWUsIHRpbWVvdXQ9dGltZW91dCwgZXJyb3I9ZXJyb3IpCisgICAgICAgICAg
ICBjcmFzaD1jcmFzaCwgY3Jhc2hlZF9wcm9jZXNzX25hbWU9Y3Jhc2hlZF9wcm9jZXNzX25hbWUs
IGNyYXNoZWRfcGlkPWNyYXNoZWRfcGlkLCBjcmFzaF9sb2c9Y3Jhc2hfbG9nLAorICAgICAgICAg
ICAgdGVzdF90aW1lPXJ1bl90aW1lLCB0aW1lb3V0PXRpbWVvdXQsIGVycm9yPWVycm9yKQogCiAg
ICAgZGVmIHN0YXJ0KHNlbGYsIHBpeGVsX3Rlc3RzLCBwZXJfdGVzdF9hcmdzKToKICAgICAgICAg
aWYgbm90IHNlbGYuX3Byb2M6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV91bml0dGVzdC5weQppbmRleCBkM2QzMTFj
NDg3NjViOTczNzVhNGQ5YjcwYWE0YjMyMzhhNTNiNTA0Li4wYzQxOWQ3YzZjZDMzZmYwMDYyMzE3
MzdmYzBlZGYyNjU4N2I3ZTlmIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fdW5pdHRlc3QucHkKQEAgLTkxLDE3
ICs5MSwyMyBAQCBjbGFzcyBDaHJvbWl1bURyaXZlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgog
ICAgICAgICBzZWxmLmRyaXZlci5fcHJvYy5zdGRvdXQucmVhZGxpbmUgPSBtb2NrX3JlYWRsaW5l
CiAgICAgICAgIHNlbGYuX2Fzc2VydF93cml0ZV9jb21tYW5kX2FuZF9yZWFkX2xpbmUoZXhwZWN0
ZWRfY3Jhc2g9VHJ1ZSkKIAotICAgIGRlZiB0ZXN0X2NyYXNoZWRfcHJvY2Vzc19uYW1lKHNlbGYp
OgorICAgIGRlZiB0ZXN0X2NyYXNoX2xvZyhzZWxmKToKICAgICAgICAgc2VsZi5kcml2ZXIuX3By
b2MgPSBNb2NrKCkKIAogICAgICAgICAjIFNpbXVsYXRlIGEgY3Jhc2ggYnkgaGF2aW5nIHN0ZG91
dCBjbG9zZSB1bmV4cGVjdGVkbHkuCiAgICAgICAgIGRlZiBtb2NrX3JlYWRsaW5lKCk6CiAgICAg
ICAgICAgICByYWlzZSBJT0Vycm9yCiAgICAgICAgIHNlbGYuZHJpdmVyLl9wcm9jLnN0ZG91dC5y
ZWFkbGluZSA9IG1vY2tfcmVhZGxpbmUKKyAgICAgICAgc2VsZi5kcml2ZXIuX3Byb2MucGlkID0g
MTIzNAogCiAgICAgICAgIHNlbGYuZHJpdmVyLnRlc3RfdG9fdXJpID0gbGFtYmRhIHRlc3Q6ICdt
b2NrdGVzdHVyaScKKyAgICAgICAgc2VsZi5kcml2ZXIuX3BvcnQuZHJpdmVyX25hbWUgPSBsYW1i
ZGE6ICdtb2NrZHJpdmVyJworICAgICAgICBzZWxmLmRyaXZlci5fcG9ydC5fZ2V0X2NyYXNoX2xv
ZyA9IGxhbWJkYSBuYW1lLCBwaWQsIG91dCwgZXJyOiAnbW9ja2NyYXNobG9nJwogICAgICAgICBk
cml2ZXJfb3V0cHV0ID0gc2VsZi5kcml2ZXIucnVuX3Rlc3QoRHJpdmVySW5wdXQodGVzdF9uYW1l
PSdzb21lL3Rlc3QuaHRtbCcsIHRpbWVvdXQ9MSwgaW1hZ2VfaGFzaD1Ob25lLCBpc19yZWZ0ZXN0
PUZhbHNlKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRyaXZlci5fcG9ydC5kcml2
ZXJfbmFtZSgpLCBkcml2ZXJfb3V0cHV0LmNyYXNoZWRfcHJvY2Vzc19uYW1lKQorICAgICAgICBz
ZWxmLmFzc2VydFRydWUoZHJpdmVyX291dHB1dC5jcmFzaCkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChkcml2ZXJfb3V0cHV0LmNyYXNoZWRfcHJvY2Vzc19uYW1lLCAnbW9ja2RyaXZlcicpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHJpdmVyX291dHB1dC5jcmFzaGVkX3BpZCwgMTIzNCkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkcml2ZXJfb3V0cHV0LmNyYXNoX2xvZywgJ21vY2tj
cmFzaGxvZycpCiAKICAgICBkZWYgdGVzdF9zdG9wKHNlbGYpOgogICAgICAgICBzZWxmLnBpZCA9
IE5vbmUKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvZHJpdmVyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9k
cml2ZXIucHkKaW5kZXggZmE2ZTgxYjJlNjNhYjkzZTFmYTA3NDBlODhjNDE1OWUxMjc2MDFiYS4u
ZTFkOGE0YmRjNTljZDMyM2NlZDhiODc2ZGY4YTY0ZmYzNzhiNzQ0ZSAxMDA2NDQKLS0tIGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9kcml2ZXIucHkKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9kcml2ZXIucHkKQEAgLTY0LDcg
KzY0LDggQEAgY2xhc3MgRHJpdmVyT3V0cHV0KG9iamVjdCk6CiAgICAgc3RyaXBfcGF0dGVybnMu
YXBwZW5kKChyZS5jb21waWxlKCdzY3JvbGxIZWlnaHQgWzAtOV0rJyksICdzY3JvbGxIZWlnaHQn
KSkKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXh0LCBpbWFnZSwgaW1hZ2VfaGFzaCwgYXVk
aW8sIGNyYXNoPUZhbHNlLAotICAgICAgICAgICAgdGVzdF90aW1lPTAsIHRpbWVvdXQ9RmFsc2Us
IGVycm9yPScnLCBjcmFzaGVkX3Byb2Nlc3NfbmFtZT1Ob25lKToKKyAgICAgICAgICAgIHRlc3Rf
dGltZT0wLCB0aW1lb3V0PUZhbHNlLCBlcnJvcj0nJywgY3Jhc2hlZF9wcm9jZXNzX25hbWU9Jz8/
JywKKyAgICAgICAgICAgIGNyYXNoZWRfcGlkPU5vbmUsIGNyYXNoX2xvZz1Ob25lKToKICAgICAg
ICAgIyBGSVhNRTogQXJncyBjb3VsZCBiZSByZW5hbWVkIHRvIGJldHRlciBjbGFyaWZ5IHdoYXQg
dGhleSBkby4KICAgICAgICAgc2VsZi50ZXh0ID0gdGV4dAogICAgICAgICBzZWxmLmltYWdlID0g
aW1hZ2UgICMgTWF5IGJlIGVtcHR5LXN0cmluZyBpZiB0aGUgdGVzdCBjcmFzaGVzLgpAQCAtNzMs
NiArNzQsOCBAQCBjbGFzcyBEcml2ZXJPdXRwdXQob2JqZWN0KToKICAgICAgICAgc2VsZi5hdWRp
byA9IGF1ZGlvICAjIEJpbmFyeSBmb3JtYXQgaXMgcG9ydC1kZXBlbmRlbnQuCiAgICAgICAgIHNl
bGYuY3Jhc2ggPSBjcmFzaAogICAgICAgICBzZWxmLmNyYXNoZWRfcHJvY2Vzc19uYW1lID0gY3Jh
c2hlZF9wcm9jZXNzX25hbWUKKyAgICAgICAgc2VsZi5jcmFzaGVkX3BpZCA9IGNyYXNoZWRfcGlk
CisgICAgICAgIHNlbGYuY3Jhc2hfbG9nID0gY3Jhc2hfbG9nCiAgICAgICAgIHNlbGYudGVzdF90
aW1lID0gdGVzdF90aW1lCiAgICAgICAgIHNlbGYudGltZW91dCA9IHRpbWVvdXQKICAgICAgICAg
c2VsZi5lcnJvciA9IGVycm9yICAjIHN0ZGVyciBvdXRwdXQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbWFjLnB5IGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tYWMucHkKaW5kZXggNWFhOTgyNmQzMDk3MDc3NjVm
MmFjZTA0OTg4YTlkZmM2OTc1NTg2ZS4uMTgzNDM3YWFmYzE4ZjkyNzNiMDczZTNmYjZiZjNmODU0
YWVkYzZmYiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9tYWMucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9tYWMucHkKQEAgLTI4LDcgKzI4LDkgQEAKIAogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCByZQor
aW1wb3J0IHRpbWUKIAorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmNyYXNobG9ncyBpbXBv
cnQgQ3Jhc2hMb2dzCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0LmFwcGxlIGltcG9y
dCBBcHBsZVBvcnQKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQubGVha2RldGVjdG9y
IGltcG9ydCBMZWFrRGV0ZWN0b3IKIApAQCAtOTUsMTAgKzk3LDYgQEAgY2xhc3MgTWFjUG9ydChB
cHBsZVBvcnQpOgogICAgIGRlZiBpc19saW9uKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5f
dmVyc2lvbiA9PSAibGlvbiIKIAotICAgICMgQmVsb25ncyBvbiBhIFBsYXRmb3JtIG9iamVjdC4K
LSAgICBkZWYgaXNfY3Jhc2hfcmVwb3J0ZXIoc2VsZiwgcHJvY2Vzc19uYW1lKToKLSAgICAgICAg
cmV0dXJuIHJlLnNlYXJjaChyJ1JlcG9ydENyYXNoJywgcHJvY2Vzc19uYW1lKQotCiAgICAgZGVm
IGRlZmF1bHRfY2hpbGRfcHJvY2Vzc2VzKHNlbGYpOgogICAgICAgICBpZiBzZWxmLmlzX3Nub3ds
ZW9wYXJkKCk6CiAgICAgICAgICAgICBfbG9nLndhcm4oIkNhbm5vdCBydW4gdGVzdHMgaW4gcGFy
YWxsZWwgb24gU25vdyBMZW9wYXJkIGR1ZSB0byByZGFyOi8vcHJvYmxlbS8xMDYyMTUyNS4iKQpA
QCAtMTU4LDMgKzE1NiwyMyBAQCBjbGFzcyBNYWNQb3J0KEFwcGxlUG9ydCk6CiAKICAgICBkZWYg
cmVsZWFzZV9odHRwX2xvY2soc2VsZik6CiAgICAgICAgIHBhc3MKKworICAgIGRlZiBfZ2V0X2Ny
YXNoX2xvZyhzZWxmLCBuYW1lLCBwaWQsIHN0ZG91dCwgc3RkZXJyKToKKyAgICAgICAgIyBOb3Rl
IHRoYXQgd2UgZG8gc2xvdy1zcGluIGhlcmUgYW5kIHdhaXQsIHNpbmNlIGl0IGFwcGVhcnMgdGhl
IHRpbWUKKyAgICAgICAgIyBSZXBvcnRDcmFzaCB0YWtlcyB0byBhY3R1YWxseSB3cml0ZSBhbmQg
Zmx1c2ggdGhlIGZpbGUgdmFyaWVzIHdoZW4gdGhlcmUgYXJlCisgICAgICAgICMgbG90cyBvZiBz
aW11bHRhbmVvdXMgY3Jhc2hlcyBnb2luZyBvbi4KKyAgICAgICAgIyBGSVhNRTogU2hvdWxkIG1v
c3Qgb2YgdGhpcyBiZSBtb3ZlZCBpbnRvIENyYXNoTG9ncygpPworICAgICAgICBjcmFzaF9sb2cg
PSAnJworICAgICAgICBjcmFzaF9sb2dzID0gQ3Jhc2hMb2dzKHNlbGYuX2ZpbGVzeXN0ZW0pCisg
ICAgICAgIHN0YXJ0ID0gdGltZS50aW1lKCkKKyAgICAgICAgbm93ID0gc3RhcnQKKyAgICAgICAg
Q1JBU0hfTE9HX1dBSVRfVElNRU9VVF9TRUNTID0gNSAqIGludChzZWxmLmdldF9vcHRpb24oJ2No
aWxkX3Byb2Nlc3NlcycpKQorICAgICAgICB3aGlsZSBub3QgY3Jhc2hfbG9nIGFuZCBub3cgPCBz
dGFydCArIENSQVNIX0xPR19XQUlUX1RJTUVPVVRfU0VDUzoKKyAgICAgICAgICAgIGNyYXNoX2xv
ZyA9IGNyYXNoX2xvZ3MuZmluZF9uZXdlc3RfbG9nKG5hbWUsIHBpZCwgaW5jbHVkZV9lcnJvcnM9
VHJ1ZSkKKyAgICAgICAgICAgIGlmIG5vdCBjcmFzaF9sb2cgb3Igbm90IFtsaW5lIGZvciBsaW5l
IGluIGNyYXNoX2xvZy5zcGxpdGxpbmVzKCkgaWYgbm90IGxpbmUuc3RhcnRzd2l0aCgnRVJST1In
KV06CisgICAgICAgICAgICAgICAgdGltZS5zbGVlcCgwLjEpCisgICAgICAgICAgICAgICAgbm93
ID0gdGltZS50aW1lKCkKKyAgICAgICAgaWYgbm90IGNyYXNoX2xvZzoKKyAgICAgICAgICAgIGNy
YXNoX2xvZyA9ICdubyBjcmFzaCBsb2cgZm91bmQgZm9yICVzOiVkJyAlIChuYW1lLCBwaWQpCisg
ICAgICAgICAgICBfbG9nLndhcm5pbmcoY3Jhc2hfbG9nKQorICAgICAgICByZXR1cm4gY3Jhc2hf
bG9nCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L3Rlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3Qu
cHkKaW5kZXggMjE2MzcyMzA1MmJkMDQxYmNjM2NhODcxY2Q4YmEzOGE3NTFiYTQ4YS4uZjA4YzU3
NDI0MzVlYjhjOGU4YTM5MDgxNzQwYTg1YzA2YjkxNzA0NCAxMDA2NDQKLS0tIGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5CisrKyBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weQpAQCAtMzUsNiArMzUsNyBAQCBm
cm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBQb3J0LCBEcml2ZXIsIERyaXZl
ck91dHB1dAogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC5iYXNlIGltcG9ydCBWaXJ0
dWFsVGVzdFN1aXRlCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMudGVzdF9jb25m
aWd1cmF0aW9uIGltcG9ydCBUZXN0Q29uZmlndXJhdGlvbgogZnJvbSB3ZWJraXRweS5jb21tb24u
c3lzdGVtLmZpbGVzeXN0ZW1fbW9jayBpbXBvcnQgTW9ja0ZpbGVTeXN0ZW0KK2Zyb20gd2Via2l0
cHkuY29tbW9uLnN5c3RlbS5jcmFzaGxvZ3MgaW1wb3J0IENyYXNoTG9ncwogCiAKICMgVGhpcyBz
ZXRzIGJhc2ljIGV4cGVjdGF0aW9ucyBmb3IgYSB0ZXN0LiBFYWNoIGluZGl2aWR1YWwgZXhwZWN0
YXRpb24KQEAgLTUxOSwxMyArNTIwLDIyIEBAIGNsYXNzIFRlc3REcml2ZXIoRHJpdmVyKToKICAg
ICAgICAgaWYgdGVzdC5hY3R1YWxfYXVkaW86CiAgICAgICAgICAgICBhdWRpbyA9IGJhc2U2NC5i
NjRkZWNvZGUodGVzdC5hY3R1YWxfYXVkaW8pCiAgICAgICAgIGNyYXNoZWRfcHJvY2Vzc19uYW1l
ID0gTm9uZQorICAgICAgICBjcmFzaGVkX3BpZCA9IE5vbmUKICAgICAgICAgaWYgdGVzdC5jcmFz
aDoKICAgICAgICAgICAgIGNyYXNoZWRfcHJvY2Vzc19uYW1lID0gc2VsZi5fcG9ydC5kcml2ZXJf
bmFtZSgpCisgICAgICAgICAgICBjcmFzaGVkX3BpZCA9IDEKICAgICAgICAgZWxpZiB0ZXN0Lndl
Yl9wcm9jZXNzX2NyYXNoOgogICAgICAgICAgICAgY3Jhc2hlZF9wcm9jZXNzX25hbWUgPSAnV2Vi
UHJvY2VzcycKLSAgICAgICAgcmV0dXJuIERyaXZlck91dHB1dChhY3R1YWxfdGV4dCwgdGVzdC5h
Y3R1YWxfaW1hZ2UsCi0gICAgICAgICAgICB0ZXN0LmFjdHVhbF9jaGVja3N1bSwgYXVkaW8sIGNy
YXNoPXRlc3QuY3Jhc2ggb3IgdGVzdC53ZWJfcHJvY2Vzc19jcmFzaCwKLSAgICAgICAgICAgIGNy
YXNoZWRfcHJvY2Vzc19uYW1lPWNyYXNoZWRfcHJvY2Vzc19uYW1lLAorICAgICAgICAgICAgY3Jh
c2hlZF9waWQgPSAyCisKKyAgICAgICAgY3Jhc2hfbG9nID0gJycKKyAgICAgICAgaWYgY3Jhc2hl
ZF9wcm9jZXNzX25hbWU6CisgICAgICAgICAgICBjcmFzaF9sb2dzID0gQ3Jhc2hMb2dzKHNlbGYu
X3BvcnQuX2ZpbGVzeXN0ZW0pCisgICAgICAgICAgICBjcmFzaF9sb2cgPSBjcmFzaF9sb2dzLmZp
bmRfbmV3ZXN0X2xvZyhjcmFzaGVkX3Byb2Nlc3NfbmFtZSwgTm9uZSkgb3IgJycKKworICAgICAg
ICByZXR1cm4gRHJpdmVyT3V0cHV0KGFjdHVhbF90ZXh0LCB0ZXN0LmFjdHVhbF9pbWFnZSwgdGVz
dC5hY3R1YWxfY2hlY2tzdW0sIGF1ZGlvLAorICAgICAgICAgICAgY3Jhc2g9dGVzdC5jcmFzaCBv
ciB0ZXN0LndlYl9wcm9jZXNzX2NyYXNoLCBjcmFzaGVkX3Byb2Nlc3NfbmFtZT1jcmFzaGVkX3By
b2Nlc3NfbmFtZSwKKyAgICAgICAgICAgIGNyYXNoZWRfcGlkPWNyYXNoZWRfcGlkLCBjcmFzaF9s
b2c9Y3Jhc2hfbG9nLAogICAgICAgICAgICAgdGVzdF90aW1lPXRpbWUudGltZSgpIC0gc3RhcnRf
dGltZSwgdGltZW91dD10ZXN0LnRpbWVvdXQsIGVycm9yPXRlc3QuZXJyb3IpCiAKICAgICBkZWYg
c3RhcnQoc2VsZiwgcGl4ZWxfdGVzdHMsIHBlcl90ZXN0X2FyZ3MpOgpkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHkgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weQppbmRleCBiOWM3YTA3
MDJhM2FhZmFhNWIxNGQ0NDMwOWIwZjAzYzg2MzZkNjVmLi5mMTYwZDQ5MjAyN2I1YmZjZjA4NjNm
NjExN2VmZGZhOGMwMmFiZjRmIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weQpAQCAtNDM3LDcgKzQzNyw3IEBAIGNsYXNzIFdlYktp
dERyaXZlcihEcml2ZXIpOgogICAgICAgICAjICIjQ1JBU0hFRCAtIFBST0NFU1NOQU1FIi4gIFNp
bmNlIHRob3NlIGNhbiBoYXBwZW4gYXQgYW55IHRpbWUKICAgICAgICAgIyBhbmQgU2VydmVyUHJv
Y2VzcyB3b24ndCBiZSBhd2FyZSBvZiB0aGVtIChzaW5jZSB0aGUgYWN0dWFsIHRvb2wKICAgICAg
ICAgIyBkaWRuJ3QgY3Jhc2gsIGp1c3QgYSBzdWJwcm9jZXNzKSB3ZSByZWNvcmQgdGhlIGNyYXNo
ZWQgc3VicHJvY2VzcyBuYW1lIGhlcmUuCi0gICAgICAgIHNlbGYuX2NyYXNoZWRfc3VicHJvY2Vz
c19uYW1lID0gTm9uZQorICAgICAgICBzZWxmLl9jcmFzaGVkX3Byb2Nlc3NfbmFtZSA9IE5vbmUK
IAogICAgICAgICAjIHN0ZGVyciByZWFkaW5nIGlzIHNjb3BlZCBvbiBhIHBlci10ZXN0IChub3Qg
cGVyLWJsb2NrKSBiYXNpcywgc28gd2Ugc3RvcmUgdGhlIGFjY3VtdWxhdGVkCiAgICAgICAgICMg
c3RkZXJyIG91dHB1dCwgYXMgd2VsbCBhcyBpZiB3ZSd2ZSBzZWVuICNFT0Ygb24gdGhpcyBkcml2
ZXIgaW5zdGFuY2UuCkBAIC00ODMsMjQgKzQ4MywzNCBAQCBjbGFzcyBXZWJLaXREcml2ZXIoRHJp
dmVyKToKICAgICAgICAgIyBGSVhNRTogV2UncmUgYXNzdW1pbmcgdGhhdCBXZWJLaXRUZXN0UnVu
bmVyIGNoZWNrcyB0aGlzIER1bXBSZW5kZXJUcmVlLW5hbWVkIGVudmlyb25tZW50IHZhcmlhYmxl
LgogICAgICAgICBlbnZpcm9ubWVudFsnRFVNUFJFTkRFUlRSRUVfVEVNUCddID0gc3RyKHNlbGYu
X2RyaXZlcl90ZW1wZGlyKQogICAgICAgICBlbnZpcm9ubWVudFsnTE9DQUxfUkVTT1VSQ0VfUk9P
VCddID0gc2VsZi5fcG9ydC5sYXlvdXRfdGVzdHNfZGlyKCkKLSAgICAgICAgc2VsZi5fY3Jhc2hl
ZF9zdWJwcm9jZXNzX25hbWUgPSBOb25lCisgICAgICAgIHNlbGYuX2NyYXNoZWRfcHJvY2Vzc19u
YW1lID0gTm9uZQorICAgICAgICBzZWxmLl9jcmFzaGVkX3BpZCA9IE5vbmUKICAgICAgICAgc2Vs
Zi5fc2VydmVyX3Byb2Nlc3MgPSBzZXJ2ZXJfcHJvY2Vzcy5TZXJ2ZXJQcm9jZXNzKHNlbGYuX3Bv
cnQsIHNlcnZlcl9uYW1lLCBzZWxmLmNtZF9saW5lKHBpeGVsX3Rlc3RzLCBwZXJfdGVzdF9hcmdz
KSwgZW52aXJvbm1lbnQpCiAKICAgICBkZWYgaGFzX2NyYXNoZWQoc2VsZik6CiAgICAgICAgIGlm
IHNlbGYuX3NlcnZlcl9wcm9jZXNzIGlzIE5vbmU6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UK
LSAgICAgICAgaWYgc2VsZi5fY3Jhc2hlZF9zdWJwcm9jZXNzX25hbWU6CisgICAgICAgIGlmIHNl
bGYuX2NyYXNoZWRfcHJvY2Vzc19uYW1lOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAg
ICAgaWYgc2VsZi5fc2VydmVyX3Byb2Nlc3MuaGFzX2NyYXNoZWQoKToKKyAgICAgICAgICAgIHNl
bGYuX2NyYXNoZWRfcHJvY2Vzc19uYW1lID0gc2VsZi5fc2VydmVyX3Byb2Nlc3MubmFtZSgpCisg
ICAgICAgICAgICBzZWxmLl9jcmFzaGVkX3BpZCA9IHNlbGYuX3NlcnZlcl9wcm9jZXNzLnBpZCgp
CiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICByZXR1cm4gc2VsZi5fc2VydmVyX3By
b2Nlc3MuaGFzX2NyYXNoZWQoKQogCiAgICAgZGVmIF9jaGVja19mb3JfZHJpdmVyX2NyYXNoKHNl
bGYsIGVycm9yX2xpbmUpOgogICAgICAgICBpZiBlcnJvcl9saW5lID09ICIjQ1JBU0hFRFxuIjoK
ICAgICAgICAgICAgICMgVGhpcyBpcyB1c2VkIG9uIFdpbmRvd3MgdG8gcmVwb3J0IHRoYXQgdGhl
IHByb2Nlc3MgaGFzIGNyYXNoZWQKICAgICAgICAgICAgICMgU2VlIGh0dHA6Ly90cmFjLndlYmtp
dC5vcmcvY2hhbmdlc2V0LzY1NTM3LgotICAgICAgICAgICAgc2VsZi5fY3Jhc2hlZF9zdWJwcm9j
ZXNzX25hbWUgPSBzZWxmLl9wb3J0LmRyaXZlcl9uYW1lKCkKLSAgICAgICAgZWxpZiBlcnJvcl9s
aW5lID09ICIjQ1JBU0hFRCAtIFdlYlByb2Nlc3NcbiI6CisgICAgICAgICAgICBzZWxmLl9jcmFz
aGVkX3Byb2Nlc3NfbmFtZSA9IHNlbGYuX3NlcnZlcl9wcm9jZXNzLm5hbWUoKQorICAgICAgICAg
ICAgc2VsZi5fY3Jhc2hlZF9waWQgPSBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5waWQoKQorICAgICAg
ICBlbGlmIGVycm9yX2xpbmUuc3RhcnRzd2l0aCgiI0NSQVNIRUQgLSBXZWJQcm9jZXNzIik6CiAg
ICAgICAgICAgICAjIFdlYktpdFRlc3RSdW5uZXIgdXNlcyB0aGlzIHRvIHJlcG9ydCB0aGF0IHRo
ZSBXZWJQcm9jZXNzIHN1YnByb2Nlc3MgY3Jhc2hlZC4KLSAgICAgICAgICAgIHNlbGYuX2NyYXNo
ZWRfc3VicHJvY2Vzc19uYW1lID0gIldlYlByb2Nlc3MiCisgICAgICAgICAgICBwaWQgPSBOb25l
CisgICAgICAgICAgICBtID0gcmUubWF0Y2goJ3BpZCAoXGQrKScsIGVycl9saW5lKQorICAgICAg
ICAgICAgaWYgbToKKyAgICAgICAgICAgICAgICBwaWQgPSBpbnQobS5ncm91cCgxKSkKKyAgICAg
ICAgICAgIHNlbGYuX2NyYXNoZWRfcHJvY2Vzc19uYW1lID0gJ1dlYlByb2Nlc3MnCisgICAgICAg
ICAgICBzZWxmLl9jcmFzaGVkX3BpZCA9IHBpZAogICAgICAgICByZXR1cm4gc2VsZi5faGFzX2Ny
YXNoZWQoKQogCiAgICAgZGVmIF9jb21tYW5kX2Zyb21fZHJpdmVyX2lucHV0KHNlbGYsIGRyaXZl
cl9pbnB1dCk6CkBAIC01NTAsMTAgKzU2MCwxNSBAQCBjbGFzcyBXZWJLaXREcml2ZXIoRHJpdmVy
KToKICAgICAgICAgIyBGSVhNRTogV2UgbWF5IG5lZWQgdG8gYWxzbyByZWFkIHN0ZGVyciB1bnRp
bCB0aGUgcHJvY2VzcyBkaWVzPwogICAgICAgICBzZWxmLmVycm9yX2Zyb21fdGVzdCArPSBzZWxm
Ll9zZXJ2ZXJfcHJvY2Vzcy5wb3BfYWxsX2J1ZmZlcmVkX3N0ZGVycigpCiAKKyAgICAgICAgY3Jh
c2hfbG9nID0gJycKKyAgICAgICAgaWYgc2VsZi5oYXNfY3Jhc2hlZCgpOgorICAgICAgICAgICAg
Y3Jhc2hfbG9nID0gc2VsZi5fcG9ydC5fZ2V0X2NyYXNoX2xvZyhzZWxmLl9jcmFzaGVkX3Byb2Nl
c3NfbmFtZSwgc2VsZi5fY3Jhc2hlZF9waWQsIHRleHQsIHNlbGYuZXJyb3JfZnJvbV90ZXN0KQor
CiAgICAgICAgIHJldHVybiBEcml2ZXJPdXRwdXQodGV4dCwgaW1hZ2UsIGFjdHVhbF9pbWFnZV9o
YXNoLCBhdWRpbywKICAgICAgICAgICAgIGNyYXNoPXNlbGYuaGFzX2NyYXNoZWQoKSwgdGVzdF90
aW1lPXRpbWUudGltZSgpIC0gc3RhcnRfdGltZSwKICAgICAgICAgICAgIHRpbWVvdXQ9c2VsZi5f
c2VydmVyX3Byb2Nlc3MudGltZWRfb3V0LCBlcnJvcj1zZWxmLmVycm9yX2Zyb21fdGVzdCwKLSAg
ICAgICAgICAgIGNyYXNoZWRfcHJvY2Vzc19uYW1lPXNlbGYuX2NyYXNoZWRfc3VicHJvY2Vzc19u
YW1lKQorICAgICAgICAgICAgY3Jhc2hlZF9wcm9jZXNzX25hbWU9c2VsZi5fY3Jhc2hlZF9wcm9j
ZXNzX25hbWUsCisgICAgICAgICAgICBjcmFzaGVkX3BpZD1zZWxmLl9jcmFzaGVkX3BpZCwgY3Jh
c2hfbG9nPWNyYXNoX2xvZykKIAogICAgIGRlZiBfcmVhZF9oZWFkZXIoc2VsZiwgYmxvY2ssIGxp
bmUsIGhlYWRlcl90ZXh0LCBoZWFkZXJfYXR0ciwgaGVhZGVyX2ZpbHRlcj1Ob25lKToKICAgICAg
ICAgaWYgbGluZS5zdGFydHN3aXRoKGhlYWRlcl90ZXh0KSBhbmQgZ2V0YXR0cihibG9jaywgaGVh
ZGVyX2F0dHIpIGlzIE5vbmU6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133125</attachid>
            <date>2012-03-21 15:21:44 -0700</date>
            <delta_ts>2012-03-22 11:43:13 -0700</delta_ts>
            <desc>patch for landing, updated w/ review feedback</desc>
            <filename>bug-81603-20120321152142.patch</filename>
            <type>text/plain</type>
            <size>20093</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExNTk5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZWI1ZTJkNjkyMjJhMDI5ZjI0NmM2NGZmNDdkZjJjZGMw
ODk2YjlkYi4uN2U2ZWFhMzllNWQwNDA5YTA2NDVjYWNiYjQzNjczNzU2MTFiMTZlYiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUz
IEBACisyMDEyLTAzLTIxICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIHdlYmtpdHB5OiBjbGVhbiB1cCBhY3R1YWxseSBnZXR0aW5nIGNyYXNoIGxvZ3MgZnJv
bSBEUlQvV1RSIGNyYXNoZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTgxNjAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KKworICAg
ICAgICBBZGQgYSBuZXcgX2dldF9jcmFzaF9sb2coKSBvdmVycmlkYWJsZSBtZXRob2Qgb24gdGhl
IFBvcnQKKyAgICAgICAgb2JqZWN0IHRvIGN1c3RvbWl6ZSBob3cgd2UgZmV0Y2ggY3Jhc2ggbG9n
cyBwZXIgcG9ydC4KKyAgICAgICAgTWFjIHdpbGwgbm93IHNsb3ctc3BpbiB3aXRoIGEgdGltZW91
dCB3YWl0aW5nIGZvciB0aGUgY3Jhc2ggbG9nLCByYXRoZXIKKyAgICAgICAgdGhhbiB3YWl0aW5n
IGZvciB0aGUgUmVwb3J0Q3Jhc2ggcHJvY2VzcyB0byBleGl0IChpdCBhcHBlYXJzCisgICAgICAg
IHRoYXQgdGhlIG1hYyB3aWxsIG1hbmFnZSBtdWx0aXBsZSBjcmFzaGVzIHdpdGggYSBzaW5nbGUK
KyAgICAgICAgUmVwb3J0Q3Jhc2ggcHJvY2VzcywgdGhlIHByb2Nlc3Mgd2FpdHMgYXJvdW5kIGxv
bmdlciB0aGFuCisgICAgICAgIG5lY2Vzc2FyeSwgcHJlc3VtYWJseSB0byBhdm9pZCB0aHJhc2hp
bmcgaWYgcHJvY2Vzc2VzIGFyZQorICAgICAgICByZXBlYXRlZGx5IGNyYXNoaW5nKS4KKworICAg
ICAgICBBbHNvLCBhZGQgdGhlIERyaXZlck91dHB1dCBzaG91bGQgY29udGFpbiB0aGUgY3Jhc2gg
bG9nIGFuZCBvdGhlciBpbmZvLAorICAgICAgICB3aGljaCBpcyBjcmVhdGVkIGluIGEgcG9ydC1z
cGVjaWZpYyBtYW5uZXIgYnV0IGNhbiB0aGVuIGJlCisgICAgICAgIHRyZWF0ZWQgZ2VuZXJpY2Fs
bHkuIFByZXZpb3VzbHkgc2luZ2xlX3Rlc3RfcnVubmVyIHdvdWxkIGdldAorICAgICAgICB0b2xk
IHRoYXQgc29tZXRoaW5nIGNyYXNoZWQgYW5kIGF0dGVtcHQgdG8gZG8gc29tZXRoaW5nIHRvIGdl
dAorICAgICAgICB0aGUgY3Jhc2ggbG9nLCBidXQgaXQgZGlkbid0IGhhdmUgdGhlIGluZm9ybWF0
aW9uIGl0IG5lZWRlZCB0bworICAgICAgICBvZCB0aGUgcmlnaHQgdGhpbmc7IGJldHRlciB0byBt
YWtlIHRoZSBkcml2ZXIgaGFuZCBiYWNrIHRoZQorICAgICAgICByaWdodCBpbmZvLgorCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvc2luZ2xlX3Rl
c3RfcnVubmVyLnB5OgorICAgICAgICAoU2luZ2xlVGVzdFJ1bm5lci5faGFuZGxlX2Vycm9yKToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy90ZXN0
X3Jlc3VsdF93cml0ZXIucHk6CisgICAgICAgICh3cml0ZV90ZXN0X3Jlc3VsdCk6CisgICAgICAg
IChUZXN0UmVzdWx0V3JpdGVyLndyaXRlX2NyYXNoX2xvZyk6CisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5OgorICAgICAgICAoUG9ydC5kaWZmX3Rl
eHQpOgorICAgICAgICAoUG9ydC5fZ2V0X2NyYXNoX2xvZyk6CisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weToKKyAgICAgICAgKENocm9taXVt
RHJpdmVyLnJ1bl90ZXN0KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L2Nocm9taXVtX3VuaXR0ZXN0LnB5OgorICAgICAgICAoQ2hyb21pdW1Ecml2ZXJUZXN0
LnRlc3RfY3Jhc2hfbG9nKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L2RyaXZlci5weToKKyAgICAgICAgKERyaXZlck91dHB1dC5fX2luaXRfXyk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tYWMucHk6CisgICAgICAg
IChNYWNQb3J0LmlzX2xpb24pOgorICAgICAgICAoTWFjUG9ydC5fZ2V0X2NyYXNoX2xvZyk6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5OgorICAg
ICAgICAoVGVzdERyaXZlci5ydW5fdGVzdCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHk6CisgICAgICAgIChXZWJLaXREcml2ZXIuX19pbml0
X18pOgorICAgICAgICAoV2ViS2l0RHJpdmVyLl9zdGFydCk6CisgICAgICAgIChXZWJLaXREcml2
ZXIuaGFzX2NyYXNoZWQpOgorICAgICAgICAoV2ViS2l0RHJpdmVyLl9jaGVja19mb3JfZHJpdmVy
X2NyYXNoKToKKyAgICAgICAgKFdlYktpdERyaXZlci5ydW5fdGVzdCk6CisKIDIwMTItMDMtMjEg
IERvbWluaWsgUsO2dHRzY2hlcyAgPGRvbWluaWsucm90dHNjaGVzQGxpbnV4LmludGVsLmNvbT4K
IAogICAgICAgICBbRUZMXSBVc2UgamhidWlsZCBkb3dubG9hZGVkIGZvbnRzIGluc3RlYWQgb2Yg
aGFyZGNvZGVkIHN5c3RlbSBmb250IHBhdGhzCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9zaW5nbGVfdGVzdF9ydW5uZXIucHkgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9zaW5nbGVfdGVz
dF9ydW5uZXIucHkKaW5kZXggZGNiMTBjMTNkYmY2NjQwODRiYzRlMjVjNzZkMzAwYTM0ZWQ2YmZk
ZS4uMmY4OTBiMGMxZmJmNDMyMmM1ZGNmMDZkNjI2NDBkZDEwNjlmMzZkOCAxMDA2NDQKLS0tIGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvc2luZ2xlX3Rl
c3RfcnVubmVyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2Nv
bnRyb2xsZXJzL3NpbmdsZV90ZXN0X3J1bm5lci5weQpAQCAtMTk4LDcgKzE5OCw5IEBAIGNsYXNz
IFNpbmdsZVRlc3RSdW5uZXI6CiAgICAgICAgICAgICB0ZXN0bmFtZSA9IHNlbGYuX3Rlc3RfbmFt
ZQogCiAgICAgICAgIGlmIGRyaXZlcl9vdXRwdXQuY3Jhc2g6Ci0gICAgICAgICAgICBmYWlsdXJl
cy5hcHBlbmQodGVzdF9mYWlsdXJlcy5GYWlsdXJlQ3Jhc2goYm9vbChyZWZlcmVuY2VfZmlsZW5h
bWUpKSkKKyAgICAgICAgICAgIGZhaWx1cmVzLmFwcGVuZCh0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVD
cmFzaChib29sKHJlZmVyZW5jZV9maWxlbmFtZSksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJpdmVyX291dHB1dC5jcmFzaGVkX3Byb2Nl
c3NfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkcml2ZXJfb3V0cHV0LmNyYXNoZWRfcGlkKSkKICAgICAgICAgICAgIGlmIGRyaXZl
cl9vdXRwdXQuZXJyb3I6CiAgICAgICAgICAgICAgICAgX2xvZy5kZWJ1ZygiJXMgJXMgY3Jhc2hl
ZCwgc3RhY2sgdHJhY2U6IiAlIChzZWxmLl93b3JrZXJfbmFtZSwgdGVzdG5hbWUpKQogICAgICAg
ICAgICAgZWxzZToKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL2NvbnRyb2xsZXJzL3Rlc3RfcmVzdWx0X3dyaXRlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3Rlc3RfcmVzdWx0X3dyaXRlci5weQppbmRl
eCA3NWQ1Mjc4YjM2NTJhYzVkNjlkNDNmYWNiMmRhZDAzMjhlMzMwZDFmLi43MGMzNTUzMDc4ODgy
ODYyNzliM2M2NGY4ZDJhM2JiYzgzMWI0MDExIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy90ZXN0X3Jlc3VsdF93cml0ZXIucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvdGVzdF9y
ZXN1bHRfd3JpdGVyLnB5CkBAIC0yOSw3ICsyOSw2IEBACiAKIGltcG9ydCBsb2dnaW5nCiAKLWZy
b20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5jcmFzaGxvZ3MgaW1wb3J0IENyYXNoTG9ncwogZnJv
bSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzIGltcG9ydCB0ZXN0X2ZhaWx1cmVzCiAKIApA
QCAtNjMsNyArNjIsNyBAQCBkZWYgd3JpdGVfdGVzdF9yZXN1bHQoZmlsZXN5c3RlbSwgcG9ydCwg
dGVzdF9uYW1lLCBkcml2ZXJfb3V0cHV0LAogICAgICAgICAgICAgd3JpdGVyLndyaXRlX2F1ZGlv
X2ZpbGVzKGRyaXZlcl9vdXRwdXQuYXVkaW8sIGV4cGVjdGVkX2RyaXZlcl9vdXRwdXQuYXVkaW8p
CiAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShmYWlsdXJlLCB0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVD
cmFzaCk6CiAgICAgICAgICAgICBjcmFzaGVkX2RyaXZlcl9vdXRwdXQgPSBleHBlY3RlZF9kcml2
ZXJfb3V0cHV0IGlmIGZhaWx1cmUuaXNfcmVmdGVzdCBlbHNlIGRyaXZlcl9vdXRwdXQKLSAgICAg
ICAgICAgIHdyaXRlci53cml0ZV9jcmFzaF9yZXBvcnQoY3Jhc2hlZF9kcml2ZXJfb3V0cHV0LmNy
YXNoZWRfcHJvY2Vzc19uYW1lLCBjcmFzaGVkX2RyaXZlcl9vdXRwdXQuZXJyb3IpCisgICAgICAg
ICAgICB3cml0ZXIud3JpdGVfY3Jhc2hfbG9nKGNyYXNoZWRfZHJpdmVyX291dHB1dC5jcmFzaF9s
b2cpCiAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShmYWlsdXJlLCB0ZXN0X2ZhaWx1cmVzLkZhaWx1
cmVSZWZ0ZXN0TWlzbWF0Y2gpOgogICAgICAgICAgICAgd3JpdGVyLndyaXRlX2ltYWdlX2ZpbGVz
KGRyaXZlcl9vdXRwdXQuaW1hZ2UsIGV4cGVjdGVkX2RyaXZlcl9vdXRwdXQuaW1hZ2UpCiAgICAg
ICAgICAgICAjIEZJWE1FOiBUaGlzIHdvcmsgc2hvdWxkIGJlIGRvbmUgZWFybGllciBpbiB0aGUg
cGlwZWxpbmUgKGUuZy4sIHdoZW4gd2UgY29tcGFyZSBpbWFnZXMgZm9yIG5vbi1yZWYgdGVzdHMp
LgpAQCAtMTU3LDE1ICsxNTYsMTIgQEAgY2xhc3MgVGVzdFJlc3VsdFdyaXRlcihvYmplY3QpOgog
ICAgICAgICBmcy5tYXliZV9tYWtlX2RpcmVjdG9yeShmcy5kaXJuYW1lKGZpbGVuYW1lKSkKICAg
ICAgICAgZnMud3JpdGVfYmluYXJ5X2ZpbGUoZmlsZW5hbWUsIGVycm9yKQogCi0gICAgZGVmIHdy
aXRlX2NyYXNoX3JlcG9ydChzZWxmLCBjcmFzaGVkX3Byb2Nlc3NfbmFtZSwgZXJyb3IpOgorICAg
IGRlZiB3cml0ZV9jcmFzaF9sb2coc2VsZiwgY3Jhc2hfbG9nKToKICAgICAgICAgZnMgPSBzZWxm
Ll9maWxlc3lzdGVtCiAgICAgICAgIGZpbGVuYW1lID0gc2VsZi5vdXRwdXRfZmlsZW5hbWUoc2Vs
Zi5GSUxFTkFNRV9TVUZGSVhfQ1JBU0hfTE9HICsgIi50eHQiKQogICAgICAgICBmcy5tYXliZV9t
YWtlX2RpcmVjdG9yeShmcy5kaXJuYW1lKGZpbGVuYW1lKSkKLSAgICAgICAgY3Jhc2hfbG9ncyA9
IENyYXNoTG9ncyhmcykKLSAgICAgICAgbG9nID0gY3Jhc2hfbG9ncy5maW5kX25ld2VzdF9sb2co
Y3Jhc2hlZF9wcm9jZXNzX25hbWUpCi0gICAgICAgICMgQ3Jhc2hMb2dzIGRvZXNuJ3Qgc3VwcG9y
dCBldmVyeSBwbGF0Zm9ybSwgc28gd2UgZmFsbCBiYWNrIHRvCi0gICAgICAgICMgaW5jbHVkaW5n
IHRoZSBzdGRlcnIgb3V0cHV0LCB3aGljaCBpcyBhZG1pdHRlZGx5IHNvbWV3aGF0IHJlZHVuZGFu
dC4KLSAgICAgICAgZnMud3JpdGVfdGV4dF9maWxlKGZpbGVuYW1lLCBsb2cgaWYgbG9nIGVsc2Ug
ZXJyb3IpCisgICAgICAgIGlmIGNyYXNoX2xvZyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGZz
LndyaXRlX3RleHRfZmlsZShmaWxlbmFtZSwgY3Jhc2hfbG9nKQogCiAgICAgZGVmIHdyaXRlX3Rl
eHRfZmlsZXMoc2VsZiwgYWN0dWFsX3RleHQsIGV4cGVjdGVkX3RleHQpOgogICAgICAgICBzZWxm
LndyaXRlX291dHB1dF9maWxlcygiLnR4dCIsIGFjdHVhbF90ZXh0LCBleHBlY3RlZF90ZXh0KQpk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNl
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5Cmlu
ZGV4IGUyNjJhOWQyZDFlOTFiNzA2OTU0ODhmN2Y3NzdmNDAyN2YxODVlZWQuLjgxOGVlN2RiNTA0
NDc1M2JkNGQwNGU3YzdkNjg5ODI0MTdkZDE1MmMgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkKQEAgLTI4Nyw5ICsyODcsNiBAQCBjbGFz
cyBQb3J0KG9iamVjdCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3R1
YWxfZmlsZW5hbWUpCiAgICAgICAgIHJldHVybiAnJy5qb2luKGRpZmYpCiAKLSAgICBkZWYgaXNf
Y3Jhc2hfcmVwb3J0ZXIoc2VsZiwgcHJvY2Vzc19uYW1lKToKLSAgICAgICAgcmV0dXJuIEZhbHNl
Ci0KICAgICBkZWYgY2hlY2tfZm9yX2xlYWtzKHNlbGYsIHByb2Nlc3NfbmFtZSwgcHJvY2Vzc19w
aWQpOgogICAgICAgICAjIFN1YmNsYXNzZXMgc2hvdWxkIGNoZWNrIGZvciBsZWFrcyBpbiB0aGUg
cnVubmluZyBwcm9jZXNzCiAgICAgICAgICMgYW5kIHByaW50IGFueSBuZWNlc3Nhcnkgd2Fybmlu
Z3MgaWYgbGVha3MgYXJlIGZvdW5kLgpAQCAtMTA1MSw2ICsxMDQ4LDE0IEBAIGNsYXNzIFBvcnQo
b2JqZWN0KToKICAgICAgICAgIiIiUmV0dXJucyB0aGUgcG9ydCdzIGRyaXZlciBpbXBsZW1lbnRh
dGlvbi4iIiIKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcignUG9ydC5fZHJpdmVy
X2NsYXNzJykKIAorICAgIGRlZiBfZ2V0X2NyYXNoX2xvZyhzZWxmLCBuYW1lLCBwaWQsIHN0ZG91
dCwgc3RkZXJyKToKKyAgICAgICAgbG9nID0gJ2NyYXNoIGxvZyBmb3IgJXMgKHBpZCAlZClcbiVz
XG4lc1xuJyAlICgKKyAgICAgICAgICAgIG5hbWUgb3IgJz8/JywKKyAgICAgICAgICAgIHBpZCBv
ciAnPHVua25vd24+JywKKyAgICAgICAgICAgICdcbicuam9pbignU1RET1VUOiAnICsgbGluZSBm
b3IgbGluZSBpbiBzdGRvdXQuZGVjb2RlKCd1dGY4Jykuc3BsaXRsaW5lcygpKSBpZiBzdGRvdXQg
ZWxzZSAnPGVtcHR5PicsCisgICAgICAgICAgICAnXG4nLmpvaW4oJ1NUREVSUjogJyArIGxpbmUg
Zm9yIGxpbmUgaW4gc3RkZXJyLmRlY29kZSgndXRmOCcpLnNwbGl0bGluZXMoKSkgaWYgc3RkZXJy
IGVsc2UgJzxlbXB0eT4nKQorICAgICAgICByZXR1cm4gbG9nCisKICAgICBkZWYgdmlydHVhbF90
ZXN0X3N1aXRlcyhzZWxmKToKICAgICAgICAgcmV0dXJuIFtdCiAKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5CmluZGV4IDJmNDI2
NDg0NWFmYWUwMjc4OWU0NThmYWI4MTcyZjAzNGZjYTc0NjYuLjNkNmU3ZTkyMjhkODhjNGQ2NzI2
MTIzNmM2OTIxM2JmZGZmYzgxMTkgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weQpAQCAtNTkyLDE2ICs1OTIsMjMgQEAgY2xh
c3MgQ2hyb21pdW1Ecml2ZXIoRHJpdmVyKToKICAgICAgICAgICAgICAgICB0ZXh0ID0gTm9uZQog
CiAgICAgICAgIGVycm9yID0gJycuam9pbihlcnJvcikKLSAgICAgICAgY3Jhc2hlZF9wcm9jZXNz
X25hbWUgPSBOb25lCiAgICAgICAgICMgQ3VycmVudGx5IHRoZSBzdGFja3RyYWNlIGlzIGluIHRo
ZSB0ZXh0IG91dHB1dCwgbm90IGVycm9yLCBzbyBhcHBlbmQgdGhlIHR3byB0b2dldGhlciBzbwog
ICAgICAgICAjIHRoYXQgd2UgY2FuIHNlZSBzdGFjayBpbiB0aGUgb3V0cHV0LiBTZWUgaHR0cDov
L3dlYmtpdC5vcmcvYi82NjgwNgogICAgICAgICAjIEZJWE1FOiBXZSByZWFsbHkgc2hvdWxkIHBy
b3Blcmx5IGhhbmRsZSB0aGUgc3RkZXJyIG91dHB1dCBzZXBhcmF0ZWx5LgorICAgICAgICBjcmFz
aF9sb2cgPSAnJworICAgICAgICBjcmFzaGVkX3Byb2Nlc3NfbmFtZSA9IE5vbmUKKyAgICAgICAg
Y3Jhc2hlZF9waWQgPSBOb25lCiAgICAgICAgIGlmIGNyYXNoOgotICAgICAgICAgICAgZXJyb3Ig
PSBlcnJvciArIHN0cih0ZXh0KQogICAgICAgICAgICAgY3Jhc2hlZF9wcm9jZXNzX25hbWUgPSBz
ZWxmLl9wb3J0LmRyaXZlcl9uYW1lKCkKKyAgICAgICAgICAgIGlmIHNlbGYuX3Byb2M6CisgICAg
ICAgICAgICAgICAgY3Jhc2hlZF9waWQgPSBzZWxmLl9wcm9jLnBpZAorICAgICAgICAgICAgY3Jh
c2hfbG9nID0gc2VsZi5fcG9ydC5fZ2V0X2NyYXNoX2xvZyhjcmFzaGVkX3Byb2Nlc3NfbmFtZSwg
Y3Jhc2hlZF9waWQsIHRleHQsIGVycm9yKQorICAgICAgICAgICAgaWYgdGV4dDoKKyAgICAgICAg
ICAgICAgICBlcnJvciA9IGVycm9yICsgdGV4dAogCiAgICAgICAgIHJldHVybiBEcml2ZXJPdXRw
dXQodGV4dCwgb3V0cHV0X2ltYWdlLCBhY3R1YWxfY2hlY2tzdW0sIGF1ZGlvPWF1ZGlvX2J5dGVz
LAotICAgICAgICAgICAgY3Jhc2g9Y3Jhc2gsIGNyYXNoZWRfcHJvY2Vzc19uYW1lPWNyYXNoZWRf
cHJvY2Vzc19uYW1lLCB0ZXN0X3RpbWU9cnVuX3RpbWUsIHRpbWVvdXQ9dGltZW91dCwgZXJyb3I9
ZXJyb3IpCisgICAgICAgICAgICBjcmFzaD1jcmFzaCwgY3Jhc2hlZF9wcm9jZXNzX25hbWU9Y3Jh
c2hlZF9wcm9jZXNzX25hbWUsIGNyYXNoZWRfcGlkPWNyYXNoZWRfcGlkLCBjcmFzaF9sb2c9Y3Jh
c2hfbG9nLAorICAgICAgICAgICAgdGVzdF90aW1lPXJ1bl90aW1lLCB0aW1lb3V0PXRpbWVvdXQs
IGVycm9yPWVycm9yKQogCiAgICAgZGVmIHN0YXJ0KHNlbGYsIHBpeGVsX3Rlc3RzLCBwZXJfdGVz
dF9hcmdzKToKICAgICAgICAgaWYgbm90IHNlbGYuX3Byb2M6CmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3VuaXR0ZXN0LnB5IGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV91bml0dGVz
dC5weQppbmRleCBkM2QzMTFjNDg3NjViOTczNzVhNGQ5YjcwYWE0YjMyMzhhNTNiNTA0Li4wYzQx
OWQ3YzZjZDMzZmYwMDYyMzE3MzdmYzBlZGYyNjU4N2I3ZTlmIDEwMDY0NAotLS0gYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3VuaXR0ZXN0LnB5Cisr
KyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fdW5p
dHRlc3QucHkKQEAgLTkxLDE3ICs5MSwyMyBAQCBjbGFzcyBDaHJvbWl1bURyaXZlclRlc3QodW5p
dHRlc3QuVGVzdENhc2UpOgogICAgICAgICBzZWxmLmRyaXZlci5fcHJvYy5zdGRvdXQucmVhZGxp
bmUgPSBtb2NrX3JlYWRsaW5lCiAgICAgICAgIHNlbGYuX2Fzc2VydF93cml0ZV9jb21tYW5kX2Fu
ZF9yZWFkX2xpbmUoZXhwZWN0ZWRfY3Jhc2g9VHJ1ZSkKIAotICAgIGRlZiB0ZXN0X2NyYXNoZWRf
cHJvY2Vzc19uYW1lKHNlbGYpOgorICAgIGRlZiB0ZXN0X2NyYXNoX2xvZyhzZWxmKToKICAgICAg
ICAgc2VsZi5kcml2ZXIuX3Byb2MgPSBNb2NrKCkKIAogICAgICAgICAjIFNpbXVsYXRlIGEgY3Jh
c2ggYnkgaGF2aW5nIHN0ZG91dCBjbG9zZSB1bmV4cGVjdGVkbHkuCiAgICAgICAgIGRlZiBtb2Nr
X3JlYWRsaW5lKCk6CiAgICAgICAgICAgICByYWlzZSBJT0Vycm9yCiAgICAgICAgIHNlbGYuZHJp
dmVyLl9wcm9jLnN0ZG91dC5yZWFkbGluZSA9IG1vY2tfcmVhZGxpbmUKKyAgICAgICAgc2VsZi5k
cml2ZXIuX3Byb2MucGlkID0gMTIzNAogCiAgICAgICAgIHNlbGYuZHJpdmVyLnRlc3RfdG9fdXJp
ID0gbGFtYmRhIHRlc3Q6ICdtb2NrdGVzdHVyaScKKyAgICAgICAgc2VsZi5kcml2ZXIuX3BvcnQu
ZHJpdmVyX25hbWUgPSBsYW1iZGE6ICdtb2NrZHJpdmVyJworICAgICAgICBzZWxmLmRyaXZlci5f
cG9ydC5fZ2V0X2NyYXNoX2xvZyA9IGxhbWJkYSBuYW1lLCBwaWQsIG91dCwgZXJyOiAnbW9ja2Ny
YXNobG9nJwogICAgICAgICBkcml2ZXJfb3V0cHV0ID0gc2VsZi5kcml2ZXIucnVuX3Rlc3QoRHJp
dmVySW5wdXQodGVzdF9uYW1lPSdzb21lL3Rlc3QuaHRtbCcsIHRpbWVvdXQ9MSwgaW1hZ2VfaGFz
aD1Ob25lLCBpc19yZWZ0ZXN0PUZhbHNlKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxm
LmRyaXZlci5fcG9ydC5kcml2ZXJfbmFtZSgpLCBkcml2ZXJfb3V0cHV0LmNyYXNoZWRfcHJvY2Vz
c19uYW1lKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZHJpdmVyX291dHB1dC5jcmFzaCkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChkcml2ZXJfb3V0cHV0LmNyYXNoZWRfcHJvY2Vzc19uYW1l
LCAnbW9ja2RyaXZlcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHJpdmVyX291dHB1dC5j
cmFzaGVkX3BpZCwgMTIzNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkcml2ZXJfb3V0cHV0
LmNyYXNoX2xvZywgJ21vY2tjcmFzaGxvZycpCiAKICAgICBkZWYgdGVzdF9zdG9wKHNlbGYpOgog
ICAgICAgICBzZWxmLnBpZCA9IE5vbmUKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZHJpdmVyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9kcml2ZXIucHkKaW5kZXggZmE2ZTgxYjJlNjNhYjkzZTFmYTA3NDBl
ODhjNDE1OWUxMjc2MDFiYS4uZTFkOGE0YmRjNTljZDMyM2NlZDhiODc2ZGY4YTY0ZmYzNzhiNzQ0
ZSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9k
cml2ZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9k
cml2ZXIucHkKQEAgLTY0LDcgKzY0LDggQEAgY2xhc3MgRHJpdmVyT3V0cHV0KG9iamVjdCk6CiAg
ICAgc3RyaXBfcGF0dGVybnMuYXBwZW5kKChyZS5jb21waWxlKCdzY3JvbGxIZWlnaHQgWzAtOV0r
JyksICdzY3JvbGxIZWlnaHQnKSkKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXh0LCBpbWFn
ZSwgaW1hZ2VfaGFzaCwgYXVkaW8sIGNyYXNoPUZhbHNlLAotICAgICAgICAgICAgdGVzdF90aW1l
PTAsIHRpbWVvdXQ9RmFsc2UsIGVycm9yPScnLCBjcmFzaGVkX3Byb2Nlc3NfbmFtZT1Ob25lKToK
KyAgICAgICAgICAgIHRlc3RfdGltZT0wLCB0aW1lb3V0PUZhbHNlLCBlcnJvcj0nJywgY3Jhc2hl
ZF9wcm9jZXNzX25hbWU9Jz8/JywKKyAgICAgICAgICAgIGNyYXNoZWRfcGlkPU5vbmUsIGNyYXNo
X2xvZz1Ob25lKToKICAgICAgICAgIyBGSVhNRTogQXJncyBjb3VsZCBiZSByZW5hbWVkIHRvIGJl
dHRlciBjbGFyaWZ5IHdoYXQgdGhleSBkby4KICAgICAgICAgc2VsZi50ZXh0ID0gdGV4dAogICAg
ICAgICBzZWxmLmltYWdlID0gaW1hZ2UgICMgTWF5IGJlIGVtcHR5LXN0cmluZyBpZiB0aGUgdGVz
dCBjcmFzaGVzLgpAQCAtNzMsNiArNzQsOCBAQCBjbGFzcyBEcml2ZXJPdXRwdXQob2JqZWN0KToK
ICAgICAgICAgc2VsZi5hdWRpbyA9IGF1ZGlvICAjIEJpbmFyeSBmb3JtYXQgaXMgcG9ydC1kZXBl
bmRlbnQuCiAgICAgICAgIHNlbGYuY3Jhc2ggPSBjcmFzaAogICAgICAgICBzZWxmLmNyYXNoZWRf
cHJvY2Vzc19uYW1lID0gY3Jhc2hlZF9wcm9jZXNzX25hbWUKKyAgICAgICAgc2VsZi5jcmFzaGVk
X3BpZCA9IGNyYXNoZWRfcGlkCisgICAgICAgIHNlbGYuY3Jhc2hfbG9nID0gY3Jhc2hfbG9nCiAg
ICAgICAgIHNlbGYudGVzdF90aW1lID0gdGVzdF90aW1lCiAgICAgICAgIHNlbGYudGltZW91dCA9
IHRpbWVvdXQKICAgICAgICAgc2VsZi5lcnJvciA9IGVycm9yICAjIHN0ZGVyciBvdXRwdXQKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbWFjLnB5
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tYWMucHkKaW5kZXgg
YTkwY2IxYzhmYWEyYTZjYjg5YjQxMzk3MmYyZDk1N2Y0YzE5NTE2Yy4uYTkwZjk0NTYwNjk1ZGY5
ZDA5Y2FkNGIxZjVjZGFkYjU1MjM3ZDQxMSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tYWMucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9tYWMucHkKQEAgLTI5LDcgKzI5LDkgQEAKIGltcG9ydCBsb2dn
aW5nCiBpbXBvcnQgcmUKIGltcG9ydCBzdWJwcm9jZXNzCitpbXBvcnQgdGltZQogCitmcm9tIHdl
YmtpdHB5LmNvbW1vbi5zeXN0ZW0uY3Jhc2hsb2dzIGltcG9ydCBDcmFzaExvZ3MKIGZyb20gd2Vi
a2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQuYXBwbGUgaW1wb3J0IEFwcGxlUG9ydAogZnJvbSB3ZWJr
aXRweS5sYXlvdXRfdGVzdHMucG9ydC5sZWFrZGV0ZWN0b3IgaW1wb3J0IExlYWtEZXRlY3Rvcgog
CkBAIC05NiwxMCArOTgsNiBAQCBjbGFzcyBNYWNQb3J0KEFwcGxlUG9ydCk6CiAgICAgZGVmIGlz
X2xpb24oc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl92ZXJzaW9uID09ICJsaW9uIgogCi0g
ICAgIyBCZWxvbmdzIG9uIGEgUGxhdGZvcm0gb2JqZWN0LgotICAgIGRlZiBpc19jcmFzaF9yZXBv
cnRlcihzZWxmLCBwcm9jZXNzX25hbWUpOgotICAgICAgICByZXR1cm4gcmUuc2VhcmNoKHInUmVw
b3J0Q3Jhc2gnLCBwcm9jZXNzX25hbWUpCi0KICAgICBkZWYgZGVmYXVsdF9jaGlsZF9wcm9jZXNz
ZXMoc2VsZik6CiAgICAgICAgIGlmIHNlbGYuaXNfc25vd2xlb3BhcmQoKToKICAgICAgICAgICAg
IF9sb2cud2FybigiQ2Fubm90IHJ1biB0ZXN0cyBpbiBwYXJhbGxlbCBvbiBTbm93IExlb3BhcmQg
ZHVlIHRvIHJkYXI6Ly9wcm9ibGVtLzEwNjIxNTI1LiIpCkBAIC0xNjAsNiArMTU4LDI1IEBAIGNs
YXNzIE1hY1BvcnQoQXBwbGVQb3J0KToKICAgICBkZWYgcmVsZWFzZV9odHRwX2xvY2soc2VsZik6
CiAgICAgICAgIHBhc3MKIAorICAgIGRlZiBfZ2V0X2NyYXNoX2xvZyhzZWxmLCBuYW1lLCBwaWQs
IHN0ZG91dCwgc3RkZXJyKToKKyAgICAgICAgIyBOb3RlIHRoYXQgd2UgZG8gc2xvdy1zcGluIGhl
cmUgYW5kIHdhaXQsIHNpbmNlIGl0IGFwcGVhcnMgdGhlIHRpbWUKKyAgICAgICAgIyBSZXBvcnRD
cmFzaCB0YWtlcyB0byBhY3R1YWxseSB3cml0ZSBhbmQgZmx1c2ggdGhlIGZpbGUgdmFyaWVzIHdo
ZW4gdGhlcmUgYXJlCisgICAgICAgICMgbG90cyBvZiBzaW11bHRhbmVvdXMgY3Jhc2hlcyBnb2lu
ZyBvbi4KKyAgICAgICAgIyBGSVhNRTogU2hvdWxkIG1vc3Qgb2YgdGhpcyBiZSBtb3ZlZCBpbnRv
IENyYXNoTG9ncygpPworICAgICAgICBjcmFzaF9sb2cgPSAnJworICAgICAgICBjcmFzaF9sb2dz
ID0gQ3Jhc2hMb2dzKHNlbGYuX2ZpbGVzeXN0ZW0pCisgICAgICAgIG5vdyA9IHRpbWUudGltZSgp
CisgICAgICAgIGRlYWRsaW5lID0gbm93ICsgNSAqIGludChzZWxmLmdldF9vcHRpb24oJ2NoaWxk
X3Byb2Nlc3NlcycpKQorICAgICAgICB3aGlsZSBub3QgY3Jhc2hfbG9nIGFuZCBub3cgPD0gZGVh
ZGxpbmU6CisgICAgICAgICAgICBjcmFzaF9sb2cgPSBjcmFzaF9sb2dzLmZpbmRfbmV3ZXN0X2xv
ZyhuYW1lLCBwaWQsIGluY2x1ZGVfZXJyb3JzPVRydWUpCisgICAgICAgICAgICBpZiBub3QgY3Jh
c2hfbG9nIG9yIG5vdCBbbGluZSBmb3IgbGluZSBpbiBjcmFzaF9sb2cuc3BsaXRsaW5lcygpIGlm
IG5vdCBsaW5lLnN0YXJ0c3dpdGgoJ0VSUk9SJyldOgorICAgICAgICAgICAgICAgIHRpbWUuc2xl
ZXAoMC4xKQorICAgICAgICAgICAgICAgIG5vdyA9IHRpbWUudGltZSgpCisgICAgICAgIGlmIG5v
dCBjcmFzaF9sb2c6CisgICAgICAgICAgICBjcmFzaF9sb2cgPSAnbm8gY3Jhc2ggbG9nIGZvdW5k
IGZvciAlczolZCcgJSAobmFtZSwgcGlkKQorICAgICAgICAgICAgX2xvZy53YXJuaW5nKGNyYXNo
X2xvZykKKyAgICAgICAgcmV0dXJuIGNyYXNoX2xvZworCiAgICAgZGVmIF9wYXRoX3RvX2hlbHBl
cihzZWxmKToKICAgICAgICAgYmluYXJ5X25hbWUgPSAnTGF5b3V0VGVzdEhlbHBlcicKICAgICAg
ICAgcmV0dXJuIHNlbGYuX2J1aWxkX3BhdGgoYmluYXJ5X25hbWUpCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHkgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHkKaW5kZXggMjE2MzcyMzA1MmJk
MDQxYmNjM2NhODcxY2Q4YmEzOGE3NTFiYTQ4YS4uZjA4YzU3NDI0MzVlYjhjOGU4YTM5MDgxNzQw
YTg1YzA2YjkxNzA0NCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC90ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvdGVzdC5weQpAQCAtMzUsNiArMzUsNyBAQCBmcm9tIHdlYmtpdHB5LmxheW91dF90
ZXN0cy5wb3J0IGltcG9ydCBQb3J0LCBEcml2ZXIsIERyaXZlck91dHB1dAogZnJvbSB3ZWJraXRw
eS5sYXlvdXRfdGVzdHMucG9ydC5iYXNlIGltcG9ydCBWaXJ0dWFsVGVzdFN1aXRlCiBmcm9tIHdl
YmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMudGVzdF9jb25maWd1cmF0aW9uIGltcG9ydCBUZXN0
Q29uZmlndXJhdGlvbgogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW1fbW9j
ayBpbXBvcnQgTW9ja0ZpbGVTeXN0ZW0KK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5jcmFz
aGxvZ3MgaW1wb3J0IENyYXNoTG9ncwogCiAKICMgVGhpcyBzZXRzIGJhc2ljIGV4cGVjdGF0aW9u
cyBmb3IgYSB0ZXN0LiBFYWNoIGluZGl2aWR1YWwgZXhwZWN0YXRpb24KQEAgLTUxOSwxMyArNTIw
LDIyIEBAIGNsYXNzIFRlc3REcml2ZXIoRHJpdmVyKToKICAgICAgICAgaWYgdGVzdC5hY3R1YWxf
YXVkaW86CiAgICAgICAgICAgICBhdWRpbyA9IGJhc2U2NC5iNjRkZWNvZGUodGVzdC5hY3R1YWxf
YXVkaW8pCiAgICAgICAgIGNyYXNoZWRfcHJvY2Vzc19uYW1lID0gTm9uZQorICAgICAgICBjcmFz
aGVkX3BpZCA9IE5vbmUKICAgICAgICAgaWYgdGVzdC5jcmFzaDoKICAgICAgICAgICAgIGNyYXNo
ZWRfcHJvY2Vzc19uYW1lID0gc2VsZi5fcG9ydC5kcml2ZXJfbmFtZSgpCisgICAgICAgICAgICBj
cmFzaGVkX3BpZCA9IDEKICAgICAgICAgZWxpZiB0ZXN0LndlYl9wcm9jZXNzX2NyYXNoOgogICAg
ICAgICAgICAgY3Jhc2hlZF9wcm9jZXNzX25hbWUgPSAnV2ViUHJvY2VzcycKLSAgICAgICAgcmV0
dXJuIERyaXZlck91dHB1dChhY3R1YWxfdGV4dCwgdGVzdC5hY3R1YWxfaW1hZ2UsCi0gICAgICAg
ICAgICB0ZXN0LmFjdHVhbF9jaGVja3N1bSwgYXVkaW8sIGNyYXNoPXRlc3QuY3Jhc2ggb3IgdGVz
dC53ZWJfcHJvY2Vzc19jcmFzaCwKLSAgICAgICAgICAgIGNyYXNoZWRfcHJvY2Vzc19uYW1lPWNy
YXNoZWRfcHJvY2Vzc19uYW1lLAorICAgICAgICAgICAgY3Jhc2hlZF9waWQgPSAyCisKKyAgICAg
ICAgY3Jhc2hfbG9nID0gJycKKyAgICAgICAgaWYgY3Jhc2hlZF9wcm9jZXNzX25hbWU6CisgICAg
ICAgICAgICBjcmFzaF9sb2dzID0gQ3Jhc2hMb2dzKHNlbGYuX3BvcnQuX2ZpbGVzeXN0ZW0pCisg
ICAgICAgICAgICBjcmFzaF9sb2cgPSBjcmFzaF9sb2dzLmZpbmRfbmV3ZXN0X2xvZyhjcmFzaGVk
X3Byb2Nlc3NfbmFtZSwgTm9uZSkgb3IgJycKKworICAgICAgICByZXR1cm4gRHJpdmVyT3V0cHV0
KGFjdHVhbF90ZXh0LCB0ZXN0LmFjdHVhbF9pbWFnZSwgdGVzdC5hY3R1YWxfY2hlY2tzdW0sIGF1
ZGlvLAorICAgICAgICAgICAgY3Jhc2g9dGVzdC5jcmFzaCBvciB0ZXN0LndlYl9wcm9jZXNzX2Ny
YXNoLCBjcmFzaGVkX3Byb2Nlc3NfbmFtZT1jcmFzaGVkX3Byb2Nlc3NfbmFtZSwKKyAgICAgICAg
ICAgIGNyYXNoZWRfcGlkPWNyYXNoZWRfcGlkLCBjcmFzaF9sb2c9Y3Jhc2hfbG9nLAogICAgICAg
ICAgICAgdGVzdF90aW1lPXRpbWUudGltZSgpIC0gc3RhcnRfdGltZSwgdGltZW91dD10ZXN0LnRp
bWVvdXQsIGVycm9yPXRlc3QuZXJyb3IpCiAKICAgICBkZWYgc3RhcnQoc2VsZiwgcGl4ZWxfdGVz
dHMsIHBlcl90ZXN0X2FyZ3MpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L3dlYmtpdC5weQppbmRleCBiOTk4YzQ3YzliODQ2MmFkNjg2YTRmZTBhNjUz
YjM5NmJiYTJlOTY4Li4xNTkxY2YzNmM3ZDdiZWYyMzlmNGI0MWQzOTVkOGZiNDA2NWUxMGQ0IDEw
MDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtp
dC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtp
dC5weQpAQCAtNDM3LDcgKzQzNyw3IEBAIGNsYXNzIFdlYktpdERyaXZlcihEcml2ZXIpOgogICAg
ICAgICAjICIjQ1JBU0hFRCAtIFBST0NFU1NOQU1FIi4gIFNpbmNlIHRob3NlIGNhbiBoYXBwZW4g
YXQgYW55IHRpbWUKICAgICAgICAgIyBhbmQgU2VydmVyUHJvY2VzcyB3b24ndCBiZSBhd2FyZSBv
ZiB0aGVtIChzaW5jZSB0aGUgYWN0dWFsIHRvb2wKICAgICAgICAgIyBkaWRuJ3QgY3Jhc2gsIGp1
c3QgYSBzdWJwcm9jZXNzKSB3ZSByZWNvcmQgdGhlIGNyYXNoZWQgc3VicHJvY2VzcyBuYW1lIGhl
cmUuCi0gICAgICAgIHNlbGYuX2NyYXNoZWRfc3VicHJvY2Vzc19uYW1lID0gTm9uZQorICAgICAg
ICBzZWxmLl9jcmFzaGVkX3Byb2Nlc3NfbmFtZSA9IE5vbmUKIAogICAgICAgICAjIHN0ZGVyciBy
ZWFkaW5nIGlzIHNjb3BlZCBvbiBhIHBlci10ZXN0IChub3QgcGVyLWJsb2NrKSBiYXNpcywgc28g
d2Ugc3RvcmUgdGhlIGFjY3VtdWxhdGVkCiAgICAgICAgICMgc3RkZXJyIG91dHB1dCwgYXMgd2Vs
bCBhcyBpZiB3ZSd2ZSBzZWVuICNFT0Ygb24gdGhpcyBkcml2ZXIgaW5zdGFuY2UuCkBAIC00ODMs
MjggKzQ4MywzNCBAQCBjbGFzcyBXZWJLaXREcml2ZXIoRHJpdmVyKToKICAgICAgICAgIyBGSVhN
RTogV2UncmUgYXNzdW1pbmcgdGhhdCBXZWJLaXRUZXN0UnVubmVyIGNoZWNrcyB0aGlzIER1bXBS
ZW5kZXJUcmVlLW5hbWVkIGVudmlyb25tZW50IHZhcmlhYmxlLgogICAgICAgICBlbnZpcm9ubWVu
dFsnRFVNUFJFTkRFUlRSRUVfVEVNUCddID0gc3RyKHNlbGYuX2RyaXZlcl90ZW1wZGlyKQogICAg
ICAgICBlbnZpcm9ubWVudFsnTE9DQUxfUkVTT1VSQ0VfUk9PVCddID0gc2VsZi5fcG9ydC5sYXlv
dXRfdGVzdHNfZGlyKCkKLSAgICAgICAgc2VsZi5fY3Jhc2hlZF9zdWJwcm9jZXNzX25hbWUgPSBO
b25lCisgICAgICAgIHNlbGYuX2NyYXNoZWRfcHJvY2Vzc19uYW1lID0gTm9uZQorICAgICAgICBz
ZWxmLl9jcmFzaGVkX3BpZCA9IE5vbmUKICAgICAgICAgc2VsZi5fc2VydmVyX3Byb2Nlc3MgPSBz
ZXJ2ZXJfcHJvY2Vzcy5TZXJ2ZXJQcm9jZXNzKHNlbGYuX3BvcnQsIHNlcnZlcl9uYW1lLCBzZWxm
LmNtZF9saW5lKHBpeGVsX3Rlc3RzLCBwZXJfdGVzdF9hcmdzKSwgZW52aXJvbm1lbnQpCiAKICAg
ICBkZWYgaGFzX2NyYXNoZWQoc2VsZik6CiAgICAgICAgIGlmIHNlbGYuX3NlcnZlcl9wcm9jZXNz
IGlzIE5vbmU6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgaWYgc2VsZi5fY3Jh
c2hlZF9zdWJwcm9jZXNzX25hbWU6CisgICAgICAgIGlmIHNlbGYuX2NyYXNoZWRfcHJvY2Vzc19u
YW1lOgogICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICAgaWYgc2VsZi5fc2VydmVyX3By
b2Nlc3MuaGFzX2NyYXNoZWQoKToKLSAgICAgICAgICAgIHNlbGYuX2NyYXNoZWRfc3VicHJvY2Vz
c19uYW1lID0gc2VsZi5fcG9ydC5kcml2ZXJfbmFtZSgpCisgICAgICAgICAgICBzZWxmLl9jcmFz
aGVkX3Byb2Nlc3NfbmFtZSA9IHNlbGYuX3NlcnZlcl9wcm9jZXNzLm5hbWUoKQorICAgICAgICAg
ICAgc2VsZi5fY3Jhc2hlZF9waWQgPSBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5waWQoKQogICAgICAg
ICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgcmV0dXJuIEZhbHNlCiAKICAgICBkZWYgX2NoZWNr
X2Zvcl9kcml2ZXJfY3Jhc2goc2VsZiwgZXJyb3JfbGluZSk6CiAgICAgICAgIGlmIGVycm9yX2xp
bmUgPT0gIiNDUkFTSEVEXG4iOgogICAgICAgICAgICAgIyBUaGlzIGlzIHVzZWQgb24gV2luZG93
cyB0byByZXBvcnQgdGhhdCB0aGUgcHJvY2VzcyBoYXMgY3Jhc2hlZAogICAgICAgICAgICAgIyBT
ZWUgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvNjU1MzcuCi0gICAgICAgICAgICBz
ZWxmLl9jcmFzaGVkX3N1YnByb2Nlc3NfbmFtZSA9IHNlbGYuX3BvcnQuZHJpdmVyX25hbWUoKQot
ICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgaWYgZXJyb3JfbGluZSA9PSAiI0NSQVNI
RUQgLSBXZWJQcm9jZXNzXG4iOgorICAgICAgICAgICAgc2VsZi5fY3Jhc2hlZF9wcm9jZXNzX25h
bWUgPSBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5uYW1lKCkKKyAgICAgICAgICAgIHNlbGYuX2NyYXNo
ZWRfcGlkID0gc2VsZi5fc2VydmVyX3Byb2Nlc3MucGlkKCkKKyAgICAgICAgZWxpZiBlcnJvcl9s
aW5lLnN0YXJ0c3dpdGgoIiNDUkFTSEVEIC0gV2ViUHJvY2VzcyIpOgogICAgICAgICAgICAgIyBX
ZWJLaXRUZXN0UnVubmVyIHVzZXMgdGhpcyB0byByZXBvcnQgdGhhdCB0aGUgV2ViUHJvY2VzcyBz
dWJwcm9jZXNzIGNyYXNoZWQuCi0gICAgICAgICAgICBzZWxmLl9jcmFzaGVkX3N1YnByb2Nlc3Nf
bmFtZSA9ICJXZWJQcm9jZXNzIgorICAgICAgICAgICAgcGlkID0gTm9uZQorICAgICAgICAgICAg
bSA9IHJlLm1hdGNoKCdwaWQgKFxkKyknLCBlcnJfbGluZSkKKyAgICAgICAgICAgIGlmIG06Cisg
ICAgICAgICAgICAgICAgcGlkID0gaW50KG0uZ3JvdXAoMSkpCisgICAgICAgICAgICBzZWxmLl9j
cmFzaGVkX3Byb2Nlc3NfbmFtZSA9ICdXZWJQcm9jZXNzJworICAgICAgICAgICAgc2VsZi5fY3Jh
c2hlZF9waWQgPSBwaWQKICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgIHJldHVybiBz
ZWxmLmhhc19jcmFzaGVkKCkKIApAQCAtNTU1LDEwICs1NjEsMTUgQEAgY2xhc3MgV2ViS2l0RHJp
dmVyKERyaXZlcik6CiAgICAgICAgICMgRklYTUU6IFdlIG1heSBuZWVkIHRvIGFsc28gcmVhZCBz
dGRlcnIgdW50aWwgdGhlIHByb2Nlc3MgZGllcz8KICAgICAgICAgc2VsZi5lcnJvcl9mcm9tX3Rl
c3QgKz0gc2VsZi5fc2VydmVyX3Byb2Nlc3MucG9wX2FsbF9idWZmZXJlZF9zdGRlcnIoKQogCisg
ICAgICAgIGNyYXNoX2xvZyA9ICcnCisgICAgICAgIGlmIHNlbGYuaGFzX2NyYXNoZWQoKToKKyAg
ICAgICAgICAgIGNyYXNoX2xvZyA9IHNlbGYuX3BvcnQuX2dldF9jcmFzaF9sb2coc2VsZi5fY3Jh
c2hlZF9wcm9jZXNzX25hbWUsIHNlbGYuX2NyYXNoZWRfcGlkLCB0ZXh0LCBzZWxmLmVycm9yX2Zy
b21fdGVzdCkKKwogICAgICAgICByZXR1cm4gRHJpdmVyT3V0cHV0KHRleHQsIGltYWdlLCBhY3R1
YWxfaW1hZ2VfaGFzaCwgYXVkaW8sCiAgICAgICAgICAgICBjcmFzaD1zZWxmLmhhc19jcmFzaGVk
KCksIHRlc3RfdGltZT10aW1lLnRpbWUoKSAtIHN0YXJ0X3RpbWUsCiAgICAgICAgICAgICB0aW1l
b3V0PXNlbGYuX3NlcnZlcl9wcm9jZXNzLnRpbWVkX291dCwgZXJyb3I9c2VsZi5lcnJvcl9mcm9t
X3Rlc3QsCi0gICAgICAgICAgICBjcmFzaGVkX3Byb2Nlc3NfbmFtZT1zZWxmLl9jcmFzaGVkX3N1
YnByb2Nlc3NfbmFtZSkKKyAgICAgICAgICAgIGNyYXNoZWRfcHJvY2Vzc19uYW1lPXNlbGYuX2Ny
YXNoZWRfcHJvY2Vzc19uYW1lLAorICAgICAgICAgICAgY3Jhc2hlZF9waWQ9c2VsZi5fY3Jhc2hl
ZF9waWQsIGNyYXNoX2xvZz1jcmFzaF9sb2cpCiAKICAgICBkZWYgX3JlYWRfaGVhZGVyKHNlbGYs
IGJsb2NrLCBsaW5lLCBoZWFkZXJfdGV4dCwgaGVhZGVyX2F0dHIsIGhlYWRlcl9maWx0ZXI9Tm9u
ZSk6CiAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aChoZWFkZXJfdGV4dCkgYW5kIGdldGF0dHIo
YmxvY2ssIGhlYWRlcl9hdHRyKSBpcyBOb25lOgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133304</attachid>
            <date>2012-03-22 11:43:19 -0700</date>
            <delta_ts>2012-03-22 11:56:49 -0700</delta_ts>
            <desc>fix BasePort._get_crash_log()</desc>
            <filename>bug-81603-20120322114316.patch</filename>
            <type>text/plain</type>
            <size>22008</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExNzMzCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggODE5OTA4Y2QwNGJiZGQyMWViODllY2FiYzNjYTRmYTM1
MGFkOGJkOC4uMjFkNDQ5OWRiZGM3YzIzZDdkZWU1YzhiZWJhZjFlNjY3NmNhYjkyOCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3
IEBACisyMDEyLTAzLTIyICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFJlLWxhbmQgZml4IGZvciByODE2MDMgeWV0IGFnYWluICghKSB3aXRoIGxhdGVzdCBi
dWlsZCBmaXguCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD04MTYwMworCisgICAgICAgIFVucmV2aWV3ZWQsIGJ1aWxkIGZpeC4KKworICAgICAgICBUaGUg
bGF0ZXN0IHByb2JsZW0gd2FzIGEgYmFkIHNwcmludGYoKSBpbgorICAgICAgICBCYXNlUG9ydC5f
Z2V0X2NyYXNoX2xvZygpLiBJJ3ZlIHJld29ya2VkIHRoYXQgcm91dGluZSBhbmQgYWRkZWQKKyAg
ICAgICAgdW5pdCB0ZXN0cyBmb3IgY292ZXJhZ2UuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9zaW5nbGVfdGVzdF9ydW5uZXIucHk6CisgICAg
ICAgIChTaW5nbGVUZXN0UnVubmVyLl9oYW5kbGVfZXJyb3IpOgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3Rlc3RfcmVzdWx0X3dyaXRlci5weToK
KyAgICAgICAgKHdyaXRlX3Rlc3RfcmVzdWx0KToKKyAgICAgICAgKFRlc3RSZXN1bHRXcml0ZXIu
d3JpdGVfY3Jhc2hfbG9nKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L2Jhc2UucHk6CisgICAgICAgIChQb3J0LmRpZmZfdGV4dCk6CisgICAgICAgIChQb3J0
Ll9nZXRfY3Jhc2hfbG9nKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L2Nocm9taXVtLnB5OgorICAgICAgICAoQ2hyb21pdW1Ecml2ZXIucnVuX3Rlc3QpOgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fdW5p
dHRlc3QucHk6CisgICAgICAgIChDaHJvbWl1bURyaXZlclRlc3QudGVzdF9jcmFzaF9sb2cpOgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZHJpdmVyLnB5Ogor
ICAgICAgICAoRHJpdmVyT3V0cHV0Ll9faW5pdF9fKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L21hYy5weToKKyAgICAgICAgKE1hY1BvcnQuaXNfbGlvbik6
CisgICAgICAgIChNYWNQb3J0Ll9nZXRfY3Jhc2hfbG9nKToKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L21hY191bml0dGVzdC5weToKKyAgICAgICAgKHRlc3Rf
ZGVmYXVsdF9jaGlsZF9wcm9jZXNzZXMpOgorICAgICAgICAodGVzdF9nZXRfY3Jhc2hfbG9nKToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L21vY2tfZHJ0X3Vu
aXR0ZXN0LnB5OgorICAgICAgICAoTW9ja0RSVFBvcnRUZXN0LnRlc3RfZ2V0X2NyYXNoX2xvZyk6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9wb3J0X3Rlc3Rj
YXNlLnB5OgorICAgICAgICAoUG9ydFRlc3RDYXNlLnRlc3RfZ2V0X2NyYXNoX2xvZyk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5OgorICAgICAg
ICAoVGVzdERyaXZlci5ydW5fdGVzdCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC93ZWJraXQucHk6CisgICAgICAgIChXZWJLaXREcml2ZXIuX19pbml0X18p
OgorICAgICAgICAoV2ViS2l0RHJpdmVyLl9zdGFydCk6CisgICAgICAgIChXZWJLaXREcml2ZXIu
aGFzX2NyYXNoZWQpOgorICAgICAgICAoV2ViS2l0RHJpdmVyLl9jaGVja19mb3JfZHJpdmVyX2Ny
YXNoKToKKyAgICAgICAgKFdlYktpdERyaXZlci5ydW5fdGVzdCk6CisKIDIwMTItMDMtMjIgIEFs
ZXhhbmRlciBGw6Zyw7h5ICA8YWxleGFuZGVyLmZhZXJveUBub2tpYS5jb20+CiAKICAgICAgICAg
W1F0XSBFbmFibGUgc3VwcG9ydCBmb3IgaGFuZGxpbmcgZGF0YWJhc2UgcXVvdGEncyBpbiB0aGUg
TWluaUJyb3dzZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL2NvbnRyb2xsZXJzL3NpbmdsZV90ZXN0X3J1bm5lci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3NpbmdsZV90ZXN0X3J1bm5lci5weQppbmRl
eCBkY2IxMGMxM2RiZjY2NDA4NGJjNGUyNWM3NmQzMDBhMzRlZDZiZmRlLi4yZjg5MGIwYzFmYmY0
MzIyYzVkY2YwNmQ2MjY0MGRkMTA2OWYzNmQ4IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9zaW5nbGVfdGVzdF9ydW5uZXIucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvc2luZ2xl
X3Rlc3RfcnVubmVyLnB5CkBAIC0xOTgsNyArMTk4LDkgQEAgY2xhc3MgU2luZ2xlVGVzdFJ1bm5l
cjoKICAgICAgICAgICAgIHRlc3RuYW1lID0gc2VsZi5fdGVzdF9uYW1lCiAKICAgICAgICAgaWYg
ZHJpdmVyX291dHB1dC5jcmFzaDoKLSAgICAgICAgICAgIGZhaWx1cmVzLmFwcGVuZCh0ZXN0X2Zh
aWx1cmVzLkZhaWx1cmVDcmFzaChib29sKHJlZmVyZW5jZV9maWxlbmFtZSkpKQorICAgICAgICAg
ICAgZmFpbHVyZXMuYXBwZW5kKHRlc3RfZmFpbHVyZXMuRmFpbHVyZUNyYXNoKGJvb2wocmVmZXJl
bmNlX2ZpbGVuYW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkcml2ZXJfb3V0cHV0LmNyYXNoZWRfcHJvY2Vzc19uYW1lLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyaXZlcl9v
dXRwdXQuY3Jhc2hlZF9waWQpKQogICAgICAgICAgICAgaWYgZHJpdmVyX291dHB1dC5lcnJvcjoK
ICAgICAgICAgICAgICAgICBfbG9nLmRlYnVnKCIlcyAlcyBjcmFzaGVkLCBzdGFjayB0cmFjZToi
ICUgKHNlbGYuX3dvcmtlcl9uYW1lLCB0ZXN0bmFtZSkpCiAgICAgICAgICAgICBlbHNlOgpkaWZm
IC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMv
dGVzdF9yZXN1bHRfd3JpdGVyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvY29udHJvbGxlcnMvdGVzdF9yZXN1bHRfd3JpdGVyLnB5CmluZGV4IDc1ZDUyNzhiMzY1MmFj
NWQ2OWQ0M2ZhY2IyZGFkMDMyOGUzMzBkMWYuLjcwYzM1NTMwNzg4ODI4NjI3OWIzYzY0ZjhkMmEz
YmJjODMxYjQwMTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL2NvbnRyb2xsZXJzL3Rlc3RfcmVzdWx0X3dyaXRlci5weQorKysgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy90ZXN0X3Jlc3VsdF93cml0ZXIucHkK
QEAgLTI5LDcgKzI5LDYgQEAKIAogaW1wb3J0IGxvZ2dpbmcKIAotZnJvbSB3ZWJraXRweS5jb21t
b24uc3lzdGVtLmNyYXNobG9ncyBpbXBvcnQgQ3Jhc2hMb2dzCiBmcm9tIHdlYmtpdHB5LmxheW91
dF90ZXN0cy5tb2RlbHMgaW1wb3J0IHRlc3RfZmFpbHVyZXMKIAogCkBAIC02Myw3ICs2Miw3IEBA
IGRlZiB3cml0ZV90ZXN0X3Jlc3VsdChmaWxlc3lzdGVtLCBwb3J0LCB0ZXN0X25hbWUsIGRyaXZl
cl9vdXRwdXQsCiAgICAgICAgICAgICB3cml0ZXIud3JpdGVfYXVkaW9fZmlsZXMoZHJpdmVyX291
dHB1dC5hdWRpbywgZXhwZWN0ZWRfZHJpdmVyX291dHB1dC5hdWRpbykKICAgICAgICAgZWxpZiBp
c2luc3RhbmNlKGZhaWx1cmUsIHRlc3RfZmFpbHVyZXMuRmFpbHVyZUNyYXNoKToKICAgICAgICAg
ICAgIGNyYXNoZWRfZHJpdmVyX291dHB1dCA9IGV4cGVjdGVkX2RyaXZlcl9vdXRwdXQgaWYgZmFp
bHVyZS5pc19yZWZ0ZXN0IGVsc2UgZHJpdmVyX291dHB1dAotICAgICAgICAgICAgd3JpdGVyLndy
aXRlX2NyYXNoX3JlcG9ydChjcmFzaGVkX2RyaXZlcl9vdXRwdXQuY3Jhc2hlZF9wcm9jZXNzX25h
bWUsIGNyYXNoZWRfZHJpdmVyX291dHB1dC5lcnJvcikKKyAgICAgICAgICAgIHdyaXRlci53cml0
ZV9jcmFzaF9sb2coY3Jhc2hlZF9kcml2ZXJfb3V0cHV0LmNyYXNoX2xvZykKICAgICAgICAgZWxp
ZiBpc2luc3RhbmNlKGZhaWx1cmUsIHRlc3RfZmFpbHVyZXMuRmFpbHVyZVJlZnRlc3RNaXNtYXRj
aCk6CiAgICAgICAgICAgICB3cml0ZXIud3JpdGVfaW1hZ2VfZmlsZXMoZHJpdmVyX291dHB1dC5p
bWFnZSwgZXhwZWN0ZWRfZHJpdmVyX291dHB1dC5pbWFnZSkKICAgICAgICAgICAgICMgRklYTUU6
IFRoaXMgd29yayBzaG91bGQgYmUgZG9uZSBlYXJsaWVyIGluIHRoZSBwaXBlbGluZSAoZS5nLiwg
d2hlbiB3ZSBjb21wYXJlIGltYWdlcyBmb3Igbm9uLXJlZiB0ZXN0cykuCkBAIC0xNTcsMTUgKzE1
NiwxMiBAQCBjbGFzcyBUZXN0UmVzdWx0V3JpdGVyKG9iamVjdCk6CiAgICAgICAgIGZzLm1heWJl
X21ha2VfZGlyZWN0b3J5KGZzLmRpcm5hbWUoZmlsZW5hbWUpKQogICAgICAgICBmcy53cml0ZV9i
aW5hcnlfZmlsZShmaWxlbmFtZSwgZXJyb3IpCiAKLSAgICBkZWYgd3JpdGVfY3Jhc2hfcmVwb3J0
KHNlbGYsIGNyYXNoZWRfcHJvY2Vzc19uYW1lLCBlcnJvcik6CisgICAgZGVmIHdyaXRlX2NyYXNo
X2xvZyhzZWxmLCBjcmFzaF9sb2cpOgogICAgICAgICBmcyA9IHNlbGYuX2ZpbGVzeXN0ZW0KICAg
ICAgICAgZmlsZW5hbWUgPSBzZWxmLm91dHB1dF9maWxlbmFtZShzZWxmLkZJTEVOQU1FX1NVRkZJ
WF9DUkFTSF9MT0cgKyAiLnR4dCIpCiAgICAgICAgIGZzLm1heWJlX21ha2VfZGlyZWN0b3J5KGZz
LmRpcm5hbWUoZmlsZW5hbWUpKQotICAgICAgICBjcmFzaF9sb2dzID0gQ3Jhc2hMb2dzKGZzKQot
ICAgICAgICBsb2cgPSBjcmFzaF9sb2dzLmZpbmRfbmV3ZXN0X2xvZyhjcmFzaGVkX3Byb2Nlc3Nf
bmFtZSkKLSAgICAgICAgIyBDcmFzaExvZ3MgZG9lc24ndCBzdXBwb3J0IGV2ZXJ5IHBsYXRmb3Jt
LCBzbyB3ZSBmYWxsIGJhY2sgdG8KLSAgICAgICAgIyBpbmNsdWRpbmcgdGhlIHN0ZGVyciBvdXRw
dXQsIHdoaWNoIGlzIGFkbWl0dGVkbHkgc29tZXdoYXQgcmVkdW5kYW50LgotICAgICAgICBmcy53
cml0ZV90ZXh0X2ZpbGUoZmlsZW5hbWUsIGxvZyBpZiBsb2cgZWxzZSBlcnJvcikKKyAgICAgICAg
aWYgY3Jhc2hfbG9nIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgZnMud3JpdGVfdGV4dF9maWxl
KGZpbGVuYW1lLCBjcmFzaF9sb2cpCiAKICAgICBkZWYgd3JpdGVfdGV4dF9maWxlcyhzZWxmLCBh
Y3R1YWxfdGV4dCwgZXhwZWN0ZWRfdGV4dCk6CiAgICAgICAgIHNlbGYud3JpdGVfb3V0cHV0X2Zp
bGVzKCIudHh0IiwgYWN0dWFsX3RleHQsIGV4cGVjdGVkX3RleHQpCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkKaW5kZXggMDUwMGJmY2IwNjky
MDZmNjU0NDgyZjExMDJlMTQwYWQzZGYxN2E5NS4uMDQxMTI3NWRhNjk2M2VhY2I2MTQ0N2I3NDdi
MDM5ZjIyNWYxOWY0MCAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9iYXNlLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvYmFzZS5weQpAQCAtMjkwLDkgKzI5MCw2IEBAIGNsYXNzIFBvcnQob2JqZWN0KToK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdHVhbF9maWxlbmFtZSkKICAg
ICAgICAgcmV0dXJuICcnLmpvaW4oZGlmZikKIAotICAgIGRlZiBpc19jcmFzaF9yZXBvcnRlcihz
ZWxmLCBwcm9jZXNzX25hbWUpOgotICAgICAgICByZXR1cm4gRmFsc2UKLQogICAgIGRlZiBjaGVj
a19mb3JfbGVha3Moc2VsZiwgcHJvY2Vzc19uYW1lLCBwcm9jZXNzX3BpZCk6CiAgICAgICAgICMg
U3ViY2xhc3NlcyBzaG91bGQgY2hlY2sgZm9yIGxlYWtzIGluIHRoZSBydW5uaW5nIHByb2Nlc3MK
ICAgICAgICAgIyBhbmQgcHJpbnQgYW55IG5lY2Vzc2FyeSB3YXJuaW5ncyBpZiBsZWFrcyBhcmUg
Zm91bmQuCkBAIC0xMDU0LDYgKzEwNTEsMTUgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAg
ICAiIiJSZXR1cm5zIHRoZSBwb3J0J3MgZHJpdmVyIGltcGxlbWVudGF0aW9uLiIiIgogICAgICAg
ICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCdQb3J0Ll9kcml2ZXJfY2xhc3MnKQogCisgICAg
ZGVmIF9nZXRfY3Jhc2hfbG9nKHNlbGYsIG5hbWUsIHBpZCwgc3Rkb3V0LCBzdGRlcnIpOgorICAg
ICAgICBuYW1lX3N0ciA9IG5hbWUgb3IgJzx1bmtub3duIHByb2Nlc3MgbmFtZT4nCisgICAgICAg
IHBpZF9zdHIgPSBzdHIocGlkIG9yICc8dW5rbm93bj4nKQorICAgICAgICBzdGRvdXRfbGluZXMg
PSAoc3Rkb3V0IG9yICc8ZW1wdHk+JykuZGVjb2RlKCd1dGY4Jykuc3BsaXRsaW5lcygpCisgICAg
ICAgIHN0ZGVycl9saW5lcyA9IChzdGRlcnIgb3IgJzxlbXB0eT4nKS5kZWNvZGUoJ3V0ZjgnKS5z
cGxpdGxpbmVzKCkKKyAgICAgICAgcmV0dXJuICdjcmFzaCBsb2cgZm9yICVzIChwaWQgJXMpOlxu
JXNcbiVzXG4nICUgKG5hbWVfc3RyLCBwaWRfc3RyLAorICAgICAgICAgICAgJ1xuJy5qb2luKCgn
U1RET1VUOiAnICsgbCkgZm9yIGwgaW4gc3Rkb3V0X2xpbmVzKSwKKyAgICAgICAgICAgICdcbicu
am9pbigoJ1NUREVSUjogJyArIGwpIGZvciBsIGluIHN0ZGVycl9saW5lcykpCisKICAgICBkZWYg
dmlydHVhbF90ZXN0X3N1aXRlcyhzZWxmKToKICAgICAgICAgcmV0dXJuIFtdCiAKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5Cmlu
ZGV4IDQyNzUyMDY1OTdmNDc0MmMxNTFmM2NhNzM0YTc3MGU1OWQ2ZjY4MTEuLmFkYTRhODEyYjEx
ODY4NjUyYzhjOWMxNDQxM2E3ZWMwMTE2MWQ0NjggMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkKKysrIGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weQpAQCAtNTkyLDE2ICs1OTIs
MjMgQEAgY2xhc3MgQ2hyb21pdW1Ecml2ZXIoRHJpdmVyKToKICAgICAgICAgICAgICAgICB0ZXh0
ID0gTm9uZQogCiAgICAgICAgIGVycm9yID0gJycuam9pbihlcnJvcikKLSAgICAgICAgY3Jhc2hl
ZF9wcm9jZXNzX25hbWUgPSBOb25lCiAgICAgICAgICMgQ3VycmVudGx5IHRoZSBzdGFja3RyYWNl
IGlzIGluIHRoZSB0ZXh0IG91dHB1dCwgbm90IGVycm9yLCBzbyBhcHBlbmQgdGhlIHR3byB0b2dl
dGhlciBzbwogICAgICAgICAjIHRoYXQgd2UgY2FuIHNlZSBzdGFjayBpbiB0aGUgb3V0cHV0LiBT
ZWUgaHR0cDovL3dlYmtpdC5vcmcvYi82NjgwNgogICAgICAgICAjIEZJWE1FOiBXZSByZWFsbHkg
c2hvdWxkIHByb3Blcmx5IGhhbmRsZSB0aGUgc3RkZXJyIG91dHB1dCBzZXBhcmF0ZWx5LgorICAg
ICAgICBjcmFzaF9sb2cgPSAnJworICAgICAgICBjcmFzaGVkX3Byb2Nlc3NfbmFtZSA9IE5vbmUK
KyAgICAgICAgY3Jhc2hlZF9waWQgPSBOb25lCiAgICAgICAgIGlmIGNyYXNoOgotICAgICAgICAg
ICAgZXJyb3IgPSBlcnJvciArIHN0cih0ZXh0KQogICAgICAgICAgICAgY3Jhc2hlZF9wcm9jZXNz
X25hbWUgPSBzZWxmLl9wb3J0LmRyaXZlcl9uYW1lKCkKKyAgICAgICAgICAgIGlmIHNlbGYuX3By
b2M6CisgICAgICAgICAgICAgICAgY3Jhc2hlZF9waWQgPSBzZWxmLl9wcm9jLnBpZAorICAgICAg
ICAgICAgY3Jhc2hfbG9nID0gc2VsZi5fcG9ydC5fZ2V0X2NyYXNoX2xvZyhjcmFzaGVkX3Byb2Nl
c3NfbmFtZSwgY3Jhc2hlZF9waWQsIHRleHQsIGVycm9yKQorICAgICAgICAgICAgaWYgdGV4dDoK
KyAgICAgICAgICAgICAgICBlcnJvciA9IGVycm9yICsgdGV4dAogCiAgICAgICAgIHJldHVybiBE
cml2ZXJPdXRwdXQodGV4dCwgb3V0cHV0X2ltYWdlLCBhY3R1YWxfY2hlY2tzdW0sIGF1ZGlvPWF1
ZGlvX2J5dGVzLAotICAgICAgICAgICAgY3Jhc2g9Y3Jhc2gsIGNyYXNoZWRfcHJvY2Vzc19uYW1l
PWNyYXNoZWRfcHJvY2Vzc19uYW1lLCB0ZXN0X3RpbWU9cnVuX3RpbWUsIHRpbWVvdXQ9dGltZW91
dCwgZXJyb3I9ZXJyb3IpCisgICAgICAgICAgICBjcmFzaD1jcmFzaCwgY3Jhc2hlZF9wcm9jZXNz
X25hbWU9Y3Jhc2hlZF9wcm9jZXNzX25hbWUsIGNyYXNoZWRfcGlkPWNyYXNoZWRfcGlkLCBjcmFz
aF9sb2c9Y3Jhc2hfbG9nLAorICAgICAgICAgICAgdGVzdF90aW1lPXJ1bl90aW1lLCB0aW1lb3V0
PXRpbWVvdXQsIGVycm9yPWVycm9yKQogCiAgICAgZGVmIHN0YXJ0KHNlbGYsIHBpeGVsX3Rlc3Rz
LCBwZXJfdGVzdF9hcmdzKToKICAgICAgICAgaWYgbm90IHNlbGYuX3Byb2M6CmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3VuaXR0
ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1
bV91bml0dGVzdC5weQppbmRleCA0ZDI2M2JkYTgwOWRlMzdiMTdlYWZjZTNmYWYxOGVhZGI1YWI1
NWRkLi44MDc0MzBlZTQ2NjNkN2ZjZTZhZTRjZjMwNGZmNTk3OTAxN2VlZjkyIDEwMDY0NAotLS0g
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3VuaXR0
ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hy
b21pdW1fdW5pdHRlc3QucHkKQEAgLTkyLDE3ICs5MiwyMyBAQCBjbGFzcyBDaHJvbWl1bURyaXZl
clRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBzZWxmLmRyaXZlci5fcHJvYy5zdGRv
dXQucmVhZGxpbmUgPSBtb2NrX3JlYWRsaW5lCiAgICAgICAgIHNlbGYuX2Fzc2VydF93cml0ZV9j
b21tYW5kX2FuZF9yZWFkX2xpbmUoZXhwZWN0ZWRfY3Jhc2g9VHJ1ZSkKIAotICAgIGRlZiB0ZXN0
X2NyYXNoZWRfcHJvY2Vzc19uYW1lKHNlbGYpOgorICAgIGRlZiB0ZXN0X2NyYXNoX2xvZyhzZWxm
KToKICAgICAgICAgc2VsZi5kcml2ZXIuX3Byb2MgPSBNb2NrKCkKIAogICAgICAgICAjIFNpbXVs
YXRlIGEgY3Jhc2ggYnkgaGF2aW5nIHN0ZG91dCBjbG9zZSB1bmV4cGVjdGVkbHkuCiAgICAgICAg
IGRlZiBtb2NrX3JlYWRsaW5lKCk6CiAgICAgICAgICAgICByYWlzZSBJT0Vycm9yCiAgICAgICAg
IHNlbGYuZHJpdmVyLl9wcm9jLnN0ZG91dC5yZWFkbGluZSA9IG1vY2tfcmVhZGxpbmUKKyAgICAg
ICAgc2VsZi5kcml2ZXIuX3Byb2MucGlkID0gMTIzNAogCiAgICAgICAgIHNlbGYuZHJpdmVyLnRl
c3RfdG9fdXJpID0gbGFtYmRhIHRlc3Q6ICdtb2NrdGVzdHVyaScKKyAgICAgICAgc2VsZi5kcml2
ZXIuX3BvcnQuZHJpdmVyX25hbWUgPSBsYW1iZGE6ICdtb2NrZHJpdmVyJworICAgICAgICBzZWxm
LmRyaXZlci5fcG9ydC5fZ2V0X2NyYXNoX2xvZyA9IGxhbWJkYSBuYW1lLCBwaWQsIG91dCwgZXJy
OiAnbW9ja2NyYXNobG9nJwogICAgICAgICBkcml2ZXJfb3V0cHV0ID0gc2VsZi5kcml2ZXIucnVu
X3Rlc3QoRHJpdmVySW5wdXQodGVzdF9uYW1lPSdzb21lL3Rlc3QuaHRtbCcsIHRpbWVvdXQ9MSwg
aW1hZ2VfaGFzaD1Ob25lLCBpc19yZWZ0ZXN0PUZhbHNlKSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChzZWxmLmRyaXZlci5fcG9ydC5kcml2ZXJfbmFtZSgpLCBkcml2ZXJfb3V0cHV0LmNyYXNo
ZWRfcHJvY2Vzc19uYW1lKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZHJpdmVyX291dHB1dC5j
cmFzaCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkcml2ZXJfb3V0cHV0LmNyYXNoZWRfcHJv
Y2Vzc19uYW1lLCAnbW9ja2RyaXZlcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHJpdmVy
X291dHB1dC5jcmFzaGVkX3BpZCwgMTIzNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkcml2
ZXJfb3V0cHV0LmNyYXNoX2xvZywgJ21vY2tjcmFzaGxvZycpCiAKICAgICBkZWYgdGVzdF9zdG9w
KHNlbGYpOgogICAgICAgICBzZWxmLnBpZCA9IE5vbmUKZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZHJpdmVyLnB5IGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9kcml2ZXIucHkKaW5kZXggZmE2ZTgxYjJlNjNhYjkz
ZTFmYTA3NDBlODhjNDE1OWUxMjc2MDFiYS4uZTFkOGE0YmRjNTljZDMyM2NlZDhiODc2ZGY4YTY0
ZmYzNzhiNzQ0ZSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9kcml2ZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9kcml2ZXIucHkKQEAgLTY0LDcgKzY0LDggQEAgY2xhc3MgRHJpdmVyT3V0cHV0KG9i
amVjdCk6CiAgICAgc3RyaXBfcGF0dGVybnMuYXBwZW5kKChyZS5jb21waWxlKCdzY3JvbGxIZWln
aHQgWzAtOV0rJyksICdzY3JvbGxIZWlnaHQnKSkKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0
ZXh0LCBpbWFnZSwgaW1hZ2VfaGFzaCwgYXVkaW8sIGNyYXNoPUZhbHNlLAotICAgICAgICAgICAg
dGVzdF90aW1lPTAsIHRpbWVvdXQ9RmFsc2UsIGVycm9yPScnLCBjcmFzaGVkX3Byb2Nlc3NfbmFt
ZT1Ob25lKToKKyAgICAgICAgICAgIHRlc3RfdGltZT0wLCB0aW1lb3V0PUZhbHNlLCBlcnJvcj0n
JywgY3Jhc2hlZF9wcm9jZXNzX25hbWU9Jz8/JywKKyAgICAgICAgICAgIGNyYXNoZWRfcGlkPU5v
bmUsIGNyYXNoX2xvZz1Ob25lKToKICAgICAgICAgIyBGSVhNRTogQXJncyBjb3VsZCBiZSByZW5h
bWVkIHRvIGJldHRlciBjbGFyaWZ5IHdoYXQgdGhleSBkby4KICAgICAgICAgc2VsZi50ZXh0ID0g
dGV4dAogICAgICAgICBzZWxmLmltYWdlID0gaW1hZ2UgICMgTWF5IGJlIGVtcHR5LXN0cmluZyBp
ZiB0aGUgdGVzdCBjcmFzaGVzLgpAQCAtNzMsNiArNzQsOCBAQCBjbGFzcyBEcml2ZXJPdXRwdXQo
b2JqZWN0KToKICAgICAgICAgc2VsZi5hdWRpbyA9IGF1ZGlvICAjIEJpbmFyeSBmb3JtYXQgaXMg
cG9ydC1kZXBlbmRlbnQuCiAgICAgICAgIHNlbGYuY3Jhc2ggPSBjcmFzaAogICAgICAgICBzZWxm
LmNyYXNoZWRfcHJvY2Vzc19uYW1lID0gY3Jhc2hlZF9wcm9jZXNzX25hbWUKKyAgICAgICAgc2Vs
Zi5jcmFzaGVkX3BpZCA9IGNyYXNoZWRfcGlkCisgICAgICAgIHNlbGYuY3Jhc2hfbG9nID0gY3Jh
c2hfbG9nCiAgICAgICAgIHNlbGYudGVzdF90aW1lID0gdGVzdF90aW1lCiAgICAgICAgIHNlbGYu
dGltZW91dCA9IHRpbWVvdXQKICAgICAgICAgc2VsZi5lcnJvciA9IGVycm9yICAjIHN0ZGVyciBv
dXRwdXQKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvbWFjLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tYWMu
cHkKaW5kZXggYTkwY2IxYzhmYWEyYTZjYjg5YjQxMzk3MmYyZDk1N2Y0YzE5NTE2Yy4uYTkwZjk0
NTYwNjk1ZGY5ZDA5Y2FkNGIxZjVjZGFkYjU1MjM3ZDQxMSAxMDA2NDQKLS0tIGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tYWMucHkKKysrIGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tYWMucHkKQEAgLTI5LDcgKzI5LDkgQEAKIGlt
cG9ydCBsb2dnaW5nCiBpbXBvcnQgcmUKIGltcG9ydCBzdWJwcm9jZXNzCitpbXBvcnQgdGltZQog
Citmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uY3Jhc2hsb2dzIGltcG9ydCBDcmFzaExvZ3MK
IGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQuYXBwbGUgaW1wb3J0IEFwcGxlUG9ydAog
ZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC5sZWFrZGV0ZWN0b3IgaW1wb3J0IExlYWtE
ZXRlY3RvcgogCkBAIC05NiwxMCArOTgsNiBAQCBjbGFzcyBNYWNQb3J0KEFwcGxlUG9ydCk6CiAg
ICAgZGVmIGlzX2xpb24oc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl92ZXJzaW9uID09ICJs
aW9uIgogCi0gICAgIyBCZWxvbmdzIG9uIGEgUGxhdGZvcm0gb2JqZWN0LgotICAgIGRlZiBpc19j
cmFzaF9yZXBvcnRlcihzZWxmLCBwcm9jZXNzX25hbWUpOgotICAgICAgICByZXR1cm4gcmUuc2Vh
cmNoKHInUmVwb3J0Q3Jhc2gnLCBwcm9jZXNzX25hbWUpCi0KICAgICBkZWYgZGVmYXVsdF9jaGls
ZF9wcm9jZXNzZXMoc2VsZik6CiAgICAgICAgIGlmIHNlbGYuaXNfc25vd2xlb3BhcmQoKToKICAg
ICAgICAgICAgIF9sb2cud2FybigiQ2Fubm90IHJ1biB0ZXN0cyBpbiBwYXJhbGxlbCBvbiBTbm93
IExlb3BhcmQgZHVlIHRvIHJkYXI6Ly9wcm9ibGVtLzEwNjIxNTI1LiIpCkBAIC0xNjAsNiArMTU4
LDI1IEBAIGNsYXNzIE1hY1BvcnQoQXBwbGVQb3J0KToKICAgICBkZWYgcmVsZWFzZV9odHRwX2xv
Y2soc2VsZik6CiAgICAgICAgIHBhc3MKIAorICAgIGRlZiBfZ2V0X2NyYXNoX2xvZyhzZWxmLCBu
YW1lLCBwaWQsIHN0ZG91dCwgc3RkZXJyKToKKyAgICAgICAgIyBOb3RlIHRoYXQgd2UgZG8gc2xv
dy1zcGluIGhlcmUgYW5kIHdhaXQsIHNpbmNlIGl0IGFwcGVhcnMgdGhlIHRpbWUKKyAgICAgICAg
IyBSZXBvcnRDcmFzaCB0YWtlcyB0byBhY3R1YWxseSB3cml0ZSBhbmQgZmx1c2ggdGhlIGZpbGUg
dmFyaWVzIHdoZW4gdGhlcmUgYXJlCisgICAgICAgICMgbG90cyBvZiBzaW11bHRhbmVvdXMgY3Jh
c2hlcyBnb2luZyBvbi4KKyAgICAgICAgIyBGSVhNRTogU2hvdWxkIG1vc3Qgb2YgdGhpcyBiZSBt
b3ZlZCBpbnRvIENyYXNoTG9ncygpPworICAgICAgICBjcmFzaF9sb2cgPSAnJworICAgICAgICBj
cmFzaF9sb2dzID0gQ3Jhc2hMb2dzKHNlbGYuX2ZpbGVzeXN0ZW0pCisgICAgICAgIG5vdyA9IHRp
bWUudGltZSgpCisgICAgICAgIGRlYWRsaW5lID0gbm93ICsgNSAqIGludChzZWxmLmdldF9vcHRp
b24oJ2NoaWxkX3Byb2Nlc3NlcycpKQorICAgICAgICB3aGlsZSBub3QgY3Jhc2hfbG9nIGFuZCBu
b3cgPD0gZGVhZGxpbmU6CisgICAgICAgICAgICBjcmFzaF9sb2cgPSBjcmFzaF9sb2dzLmZpbmRf
bmV3ZXN0X2xvZyhuYW1lLCBwaWQsIGluY2x1ZGVfZXJyb3JzPVRydWUpCisgICAgICAgICAgICBp
ZiBub3QgY3Jhc2hfbG9nIG9yIG5vdCBbbGluZSBmb3IgbGluZSBpbiBjcmFzaF9sb2cuc3BsaXRs
aW5lcygpIGlmIG5vdCBsaW5lLnN0YXJ0c3dpdGgoJ0VSUk9SJyldOgorICAgICAgICAgICAgICAg
IHRpbWUuc2xlZXAoMC4xKQorICAgICAgICAgICAgICAgIG5vdyA9IHRpbWUudGltZSgpCisgICAg
ICAgIGlmIG5vdCBjcmFzaF9sb2c6CisgICAgICAgICAgICBjcmFzaF9sb2cgPSAnbm8gY3Jhc2gg
bG9nIGZvdW5kIGZvciAlczolZCcgJSAobmFtZSwgcGlkKQorICAgICAgICAgICAgX2xvZy53YXJu
aW5nKGNyYXNoX2xvZykKKyAgICAgICAgcmV0dXJuIGNyYXNoX2xvZworCiAgICAgZGVmIF9wYXRo
X3RvX2hlbHBlcihzZWxmKToKICAgICAgICAgYmluYXJ5X25hbWUgPSAnTGF5b3V0VGVzdEhlbHBl
cicKICAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX3BhdGgoYmluYXJ5X25hbWUpCmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L21hY191bml0dGVz
dC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbWFjX3VuaXR0
ZXN0LnB5CmluZGV4IDFjODViNDdjM2Q3MGQ5OTgxYjU4ZTNlNTUzNzI3NWExMDhhMWYxOTAuLjIy
YTczZWM4YWQ5ZmQwMWNjMzVlY2ZmODlkMjkwNzk2YjU0NTYzOTUgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbWFjX3VuaXR0ZXN0LnB5CisrKyBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbWFjX3VuaXR0ZXN0LnB5
CkBAIC0xODgsMyArMTg4LDcgQEAgamF2YS8KICAgICAgICAgZXhwZWN0ZWRfbG9ncyA9ICJDYW5u
b3QgcnVuIHRlc3RzIGluIHBhcmFsbGVsIG9uIFNub3cgTGVvcGFyZCBkdWUgdG8gcmRhcjovL3By
b2JsZW0vMTA2MjE1MjUuXG4iCiAgICAgICAgIGNoaWxkX3Byb2Nlc3NlcyA9IE91dHB1dENhcHR1
cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCBwb3J0LmRlZmF1bHRfY2hpbGRfcHJvY2Vzc2VzLCAo
KSwgZXhwZWN0ZWRfbG9ncz1leHBlY3RlZF9sb2dzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGNoaWxkX3Byb2Nlc3NlcywgMSkKKworICAgIGRlZiB0ZXN0X2dldF9jcmFzaF9sb2coc2VsZik6
CisgICAgICAgICMgTWFjIGNyYXNoIGxvZ3MgYXJlIHRlc3RlZCBlbHNld2hlcmUKKyAgICAgICAg
cGFzcwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9tb2NrX2RydF91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvbW9ja19kcnRfdW5pdHRlc3QucHkKaW5kZXggMGI4NTU3OWY2NzVlNjgyZTIwODA1
NTM1NzY4YTE2ODdiNWY5NmRhOS4uZTJkMzdjYTJjMjkwOTQ0MzY4ZDUzY2I4MGNjMjUwNTViZTYz
MTgxNyAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9tb2NrX2RydF91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L21vY2tfZHJ0X3VuaXR0ZXN0LnB5CkBAIC05MCw2ICs5MCw4IEBAIGNsYXNz
IE1vY2tEUlRQb3J0VGVzdChwb3J0X3Rlc3RjYXNlLlBvcnRUZXN0Q2FzZSk6CiAgICAgZGVmIGlu
dGVncmF0aW9uX3Rlc3RfaGVscGVyKHNlbGYpOgogICAgICAgICBwYXNzCiAKKyAgICBkZWYgdGVz
dF9nZXRfY3Jhc2hfbG9nKHNlbGYpOgorICAgICAgICBwYXNzCiAKIGNsYXNzIE1vY2tEUlRUZXN0
KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgaW5wdXRfbGluZShzZWxmLCBwb3J0LCB0ZXN0
X25hbWUsIGNoZWNrc3VtPU5vbmUpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5CmluZGV4IDAyZDZmMjNkYzg4
MzgyOWRjNTk2YjhjOGRkMTlmZTgxMDZmMjY1MTguLjg4ODRjY2ViNGYwZjgzMmFjNWRiZDg2ZDRh
NGFjZDY5NWU1OTNlNmUgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvcG9ydF90ZXN0Y2FzZS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L3BvcnRfdGVzdGNhc2UucHkKQEAgLTMxMiw2ICszMTIsMTQgQEAg
Y2xhc3MgUG9ydFRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgICAgICAgICAgaSAr
PSAxCiAKKyAgICBkZWYgdGVzdF9nZXRfY3Jhc2hfbG9nKHNlbGYpOgorICAgICAgICBwb3J0ID0g
c2VsZi5tYWtlX3BvcnQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhwb3J0Ll9nZXRfY3Jh
c2hfbG9nKE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpLAorICAgICAgICAgICAoJ2NyYXNoIGxvZyBm
b3IgPHVua25vd24gcHJvY2VzcyBuYW1lPiAocGlkIDx1bmtub3duPik6XG4nCisgICAgICAgICAg
ICAnU1RET1VUOiA8ZW1wdHk+XG4nCisgICAgICAgICAgICAnU1RERVJSOiA8ZW1wdHk+XG4nKSkK
KworCiAjIEZJWE1FOiBUaGlzIGNsYXNzIGFuZCBtYWluKCkgc2hvdWxkIGJlIG1lcmdlZCBpbnRv
IHRlc3Qtd2Via2l0cHkuCiBjbGFzcyBFbmhhbmNlZFRlc3RMb2FkZXIodW5pdHRlc3QuVGVzdExv
YWRlcik6CiAgICAgaW50ZWdyYXRpb25fdGVzdHMgPSBGYWxzZQpkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5IGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5CmluZGV4IDIxNjM3MjMwNTJiZDA0
MWJjYzNjYTg3MWNkOGJhMzhhNzUxYmE0OGEuLmYwOGM1NzQyNDM1ZWI4YzhlOGEzOTA4MTc0MGE4
NWMwNmI5MTcwNDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvdGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L3Rlc3QucHkKQEAgLTM1LDYgKzM1LDcgQEAgZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVz
dHMucG9ydCBpbXBvcnQgUG9ydCwgRHJpdmVyLCBEcml2ZXJPdXRwdXQKIGZyb20gd2Via2l0cHku
bGF5b3V0X3Rlc3RzLnBvcnQuYmFzZSBpbXBvcnQgVmlydHVhbFRlc3RTdWl0ZQogZnJvbSB3ZWJr
aXRweS5sYXlvdXRfdGVzdHMubW9kZWxzLnRlc3RfY29uZmlndXJhdGlvbiBpbXBvcnQgVGVzdENv
bmZpZ3VyYXRpb24KIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVtX21vY2sg
aW1wb3J0IE1vY2tGaWxlU3lzdGVtCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uY3Jhc2hs
b2dzIGltcG9ydCBDcmFzaExvZ3MKIAogCiAjIFRoaXMgc2V0cyBiYXNpYyBleHBlY3RhdGlvbnMg
Zm9yIGEgdGVzdC4gRWFjaCBpbmRpdmlkdWFsIGV4cGVjdGF0aW9uCkBAIC01MTksMTMgKzUyMCwy
MiBAQCBjbGFzcyBUZXN0RHJpdmVyKERyaXZlcik6CiAgICAgICAgIGlmIHRlc3QuYWN0dWFsX2F1
ZGlvOgogICAgICAgICAgICAgYXVkaW8gPSBiYXNlNjQuYjY0ZGVjb2RlKHRlc3QuYWN0dWFsX2F1
ZGlvKQogICAgICAgICBjcmFzaGVkX3Byb2Nlc3NfbmFtZSA9IE5vbmUKKyAgICAgICAgY3Jhc2hl
ZF9waWQgPSBOb25lCiAgICAgICAgIGlmIHRlc3QuY3Jhc2g6CiAgICAgICAgICAgICBjcmFzaGVk
X3Byb2Nlc3NfbmFtZSA9IHNlbGYuX3BvcnQuZHJpdmVyX25hbWUoKQorICAgICAgICAgICAgY3Jh
c2hlZF9waWQgPSAxCiAgICAgICAgIGVsaWYgdGVzdC53ZWJfcHJvY2Vzc19jcmFzaDoKICAgICAg
ICAgICAgIGNyYXNoZWRfcHJvY2Vzc19uYW1lID0gJ1dlYlByb2Nlc3MnCi0gICAgICAgIHJldHVy
biBEcml2ZXJPdXRwdXQoYWN0dWFsX3RleHQsIHRlc3QuYWN0dWFsX2ltYWdlLAotICAgICAgICAg
ICAgdGVzdC5hY3R1YWxfY2hlY2tzdW0sIGF1ZGlvLCBjcmFzaD10ZXN0LmNyYXNoIG9yIHRlc3Qu
d2ViX3Byb2Nlc3NfY3Jhc2gsCi0gICAgICAgICAgICBjcmFzaGVkX3Byb2Nlc3NfbmFtZT1jcmFz
aGVkX3Byb2Nlc3NfbmFtZSwKKyAgICAgICAgICAgIGNyYXNoZWRfcGlkID0gMgorCisgICAgICAg
IGNyYXNoX2xvZyA9ICcnCisgICAgICAgIGlmIGNyYXNoZWRfcHJvY2Vzc19uYW1lOgorICAgICAg
ICAgICAgY3Jhc2hfbG9ncyA9IENyYXNoTG9ncyhzZWxmLl9wb3J0Ll9maWxlc3lzdGVtKQorICAg
ICAgICAgICAgY3Jhc2hfbG9nID0gY3Jhc2hfbG9ncy5maW5kX25ld2VzdF9sb2coY3Jhc2hlZF9w
cm9jZXNzX25hbWUsIE5vbmUpIG9yICcnCisKKyAgICAgICAgcmV0dXJuIERyaXZlck91dHB1dChh
Y3R1YWxfdGV4dCwgdGVzdC5hY3R1YWxfaW1hZ2UsIHRlc3QuYWN0dWFsX2NoZWNrc3VtLCBhdWRp
bywKKyAgICAgICAgICAgIGNyYXNoPXRlc3QuY3Jhc2ggb3IgdGVzdC53ZWJfcHJvY2Vzc19jcmFz
aCwgY3Jhc2hlZF9wcm9jZXNzX25hbWU9Y3Jhc2hlZF9wcm9jZXNzX25hbWUsCisgICAgICAgICAg
ICBjcmFzaGVkX3BpZD1jcmFzaGVkX3BpZCwgY3Jhc2hfbG9nPWNyYXNoX2xvZywKICAgICAgICAg
ICAgIHRlc3RfdGltZT10aW1lLnRpbWUoKSAtIHN0YXJ0X3RpbWUsIHRpbWVvdXQ9dGVzdC50aW1l
b3V0LCBlcnJvcj10ZXN0LmVycm9yKQogCiAgICAgZGVmIHN0YXJ0KHNlbGYsIHBpeGVsX3Rlc3Rz
LCBwZXJfdGVzdF9hcmdzKToKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC93ZWJraXQucHkKaW5kZXggYjk5OGM0N2M5Yjg0NjJhZDY4NmE0ZmUwYTY1M2Iz
OTZiYmEyZTk2OC4uZWY1Yjc3NGM5NTBkZmVmYTliZmJjYWJmZjUwNDgwNjg3ODIxNTU4NyAxMDA2
NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQu
cHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQu
cHkKQEAgLTQzNyw3ICs0MzcsOCBAQCBjbGFzcyBXZWJLaXREcml2ZXIoRHJpdmVyKToKICAgICAg
ICAgIyAiI0NSQVNIRUQgLSBQUk9DRVNTTkFNRSIuICBTaW5jZSB0aG9zZSBjYW4gaGFwcGVuIGF0
IGFueSB0aW1lCiAgICAgICAgICMgYW5kIFNlcnZlclByb2Nlc3Mgd29uJ3QgYmUgYXdhcmUgb2Yg
dGhlbSAoc2luY2UgdGhlIGFjdHVhbCB0b29sCiAgICAgICAgICMgZGlkbid0IGNyYXNoLCBqdXN0
IGEgc3VicHJvY2Vzcykgd2UgcmVjb3JkIHRoZSBjcmFzaGVkIHN1YnByb2Nlc3MgbmFtZSBoZXJl
LgotICAgICAgICBzZWxmLl9jcmFzaGVkX3N1YnByb2Nlc3NfbmFtZSA9IE5vbmUKKyAgICAgICAg
c2VsZi5fY3Jhc2hlZF9wcm9jZXNzX25hbWUgPSBOb25lCisgICAgICAgIHNlbGYuX2NyYXNoZWRf
cGlkID0gTm9uZQogCiAgICAgICAgICMgc3RkZXJyIHJlYWRpbmcgaXMgc2NvcGVkIG9uIGEgcGVy
LXRlc3QgKG5vdCBwZXItYmxvY2spIGJhc2lzLCBzbyB3ZSBzdG9yZSB0aGUgYWNjdW11bGF0ZWQK
ICAgICAgICAgIyBzdGRlcnIgb3V0cHV0LCBhcyB3ZWxsIGFzIGlmIHdlJ3ZlIHNlZW4gI0VPRiBv
biB0aGlzIGRyaXZlciBpbnN0YW5jZS4KQEAgLTQ4MywyOCArNDg0LDM0IEBAIGNsYXNzIFdlYktp
dERyaXZlcihEcml2ZXIpOgogICAgICAgICAjIEZJWE1FOiBXZSdyZSBhc3N1bWluZyB0aGF0IFdl
YktpdFRlc3RSdW5uZXIgY2hlY2tzIHRoaXMgRHVtcFJlbmRlclRyZWUtbmFtZWQgZW52aXJvbm1l
bnQgdmFyaWFibGUuCiAgICAgICAgIGVudmlyb25tZW50WydEVU1QUkVOREVSVFJFRV9URU1QJ10g
PSBzdHIoc2VsZi5fZHJpdmVyX3RlbXBkaXIpCiAgICAgICAgIGVudmlyb25tZW50WydMT0NBTF9S
RVNPVVJDRV9ST09UJ10gPSBzZWxmLl9wb3J0LmxheW91dF90ZXN0c19kaXIoKQotICAgICAgICBz
ZWxmLl9jcmFzaGVkX3N1YnByb2Nlc3NfbmFtZSA9IE5vbmUKKyAgICAgICAgc2VsZi5fY3Jhc2hl
ZF9wcm9jZXNzX25hbWUgPSBOb25lCisgICAgICAgIHNlbGYuX2NyYXNoZWRfcGlkID0gTm9uZQog
ICAgICAgICBzZWxmLl9zZXJ2ZXJfcHJvY2VzcyA9IHNlcnZlcl9wcm9jZXNzLlNlcnZlclByb2Nl
c3Moc2VsZi5fcG9ydCwgc2VydmVyX25hbWUsIHNlbGYuY21kX2xpbmUocGl4ZWxfdGVzdHMsIHBl
cl90ZXN0X2FyZ3MpLCBlbnZpcm9ubWVudCkKIAogICAgIGRlZiBoYXNfY3Jhc2hlZChzZWxmKToK
ICAgICAgICAgaWYgc2VsZi5fc2VydmVyX3Byb2Nlc3MgaXMgTm9uZToKICAgICAgICAgICAgIHJl
dHVybiBGYWxzZQotICAgICAgICBpZiBzZWxmLl9jcmFzaGVkX3N1YnByb2Nlc3NfbmFtZToKKyAg
ICAgICAgaWYgc2VsZi5fY3Jhc2hlZF9wcm9jZXNzX25hbWU6CiAgICAgICAgICAgICByZXR1cm4g
VHJ1ZQogICAgICAgICBpZiBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5oYXNfY3Jhc2hlZCgpOgotICAg
ICAgICAgICAgc2VsZi5fY3Jhc2hlZF9zdWJwcm9jZXNzX25hbWUgPSBzZWxmLl9wb3J0LmRyaXZl
cl9uYW1lKCkKKyAgICAgICAgICAgIHNlbGYuX2NyYXNoZWRfcHJvY2Vzc19uYW1lID0gc2VsZi5f
c2VydmVyX3Byb2Nlc3MubmFtZSgpCisgICAgICAgICAgICBzZWxmLl9jcmFzaGVkX3BpZCA9IHNl
bGYuX3NlcnZlcl9wcm9jZXNzLnBpZCgpCiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAg
ICByZXR1cm4gRmFsc2UKIAogICAgIGRlZiBfY2hlY2tfZm9yX2RyaXZlcl9jcmFzaChzZWxmLCBl
cnJvcl9saW5lKToKICAgICAgICAgaWYgZXJyb3JfbGluZSA9PSAiI0NSQVNIRURcbiI6CiAgICAg
ICAgICAgICAjIFRoaXMgaXMgdXNlZCBvbiBXaW5kb3dzIHRvIHJlcG9ydCB0aGF0IHRoZSBwcm9j
ZXNzIGhhcyBjcmFzaGVkCiAgICAgICAgICAgICAjIFNlZSBodHRwOi8vdHJhYy53ZWJraXQub3Jn
L2NoYW5nZXNldC82NTUzNy4KLSAgICAgICAgICAgIHNlbGYuX2NyYXNoZWRfc3VicHJvY2Vzc19u
YW1lID0gc2VsZi5fcG9ydC5kcml2ZXJfbmFtZSgpCi0gICAgICAgICAgICByZXR1cm4gVHJ1ZQot
ICAgICAgICBpZiBlcnJvcl9saW5lID09ICIjQ1JBU0hFRCAtIFdlYlByb2Nlc3NcbiI6CisgICAg
ICAgICAgICBzZWxmLl9jcmFzaGVkX3Byb2Nlc3NfbmFtZSA9IHNlbGYuX3NlcnZlcl9wcm9jZXNz
Lm5hbWUoKQorICAgICAgICAgICAgc2VsZi5fY3Jhc2hlZF9waWQgPSBzZWxmLl9zZXJ2ZXJfcHJv
Y2Vzcy5waWQoKQorICAgICAgICBlbGlmIGVycm9yX2xpbmUuc3RhcnRzd2l0aCgiI0NSQVNIRUQg
LSBXZWJQcm9jZXNzIik6CiAgICAgICAgICAgICAjIFdlYktpdFRlc3RSdW5uZXIgdXNlcyB0aGlz
IHRvIHJlcG9ydCB0aGF0IHRoZSBXZWJQcm9jZXNzIHN1YnByb2Nlc3MgY3Jhc2hlZC4KLSAgICAg
ICAgICAgIHNlbGYuX2NyYXNoZWRfc3VicHJvY2Vzc19uYW1lID0gIldlYlByb2Nlc3MiCisgICAg
ICAgICAgICBwaWQgPSBOb25lCisgICAgICAgICAgICBtID0gcmUubWF0Y2goJ3BpZCAoXGQrKScs
IGVycm9yX2xpbmUpCisgICAgICAgICAgICBpZiBtOgorICAgICAgICAgICAgICAgIHBpZCA9IGlu
dChtLmdyb3VwKDEpKQorICAgICAgICAgICAgc2VsZi5fY3Jhc2hlZF9wcm9jZXNzX25hbWUgPSAn
V2ViUHJvY2VzcycKKyAgICAgICAgICAgIHNlbGYuX2NyYXNoZWRfcGlkID0gcGlkCiAgICAgICAg
ICAgICByZXR1cm4gVHJ1ZQogICAgICAgICByZXR1cm4gc2VsZi5oYXNfY3Jhc2hlZCgpCiAKQEAg
LTU1NSwxMCArNTYyLDE1IEBAIGNsYXNzIFdlYktpdERyaXZlcihEcml2ZXIpOgogICAgICAgICAj
IEZJWE1FOiBXZSBtYXkgbmVlZCB0byBhbHNvIHJlYWQgc3RkZXJyIHVudGlsIHRoZSBwcm9jZXNz
IGRpZXM/CiAgICAgICAgIHNlbGYuZXJyb3JfZnJvbV90ZXN0ICs9IHNlbGYuX3NlcnZlcl9wcm9j
ZXNzLnBvcF9hbGxfYnVmZmVyZWRfc3RkZXJyKCkKIAorICAgICAgICBjcmFzaF9sb2cgPSAnJwor
ICAgICAgICBpZiBzZWxmLmhhc19jcmFzaGVkKCk6CisgICAgICAgICAgICBjcmFzaF9sb2cgPSBz
ZWxmLl9wb3J0Ll9nZXRfY3Jhc2hfbG9nKHNlbGYuX2NyYXNoZWRfcHJvY2Vzc19uYW1lLCBzZWxm
Ll9jcmFzaGVkX3BpZCwgdGV4dCwgc2VsZi5lcnJvcl9mcm9tX3Rlc3QpCisKICAgICAgICAgcmV0
dXJuIERyaXZlck91dHB1dCh0ZXh0LCBpbWFnZSwgYWN0dWFsX2ltYWdlX2hhc2gsIGF1ZGlvLAog
ICAgICAgICAgICAgY3Jhc2g9c2VsZi5oYXNfY3Jhc2hlZCgpLCB0ZXN0X3RpbWU9dGltZS50aW1l
KCkgLSBzdGFydF90aW1lLAogICAgICAgICAgICAgdGltZW91dD1zZWxmLl9zZXJ2ZXJfcHJvY2Vz
cy50aW1lZF9vdXQsIGVycm9yPXNlbGYuZXJyb3JfZnJvbV90ZXN0LAotICAgICAgICAgICAgY3Jh
c2hlZF9wcm9jZXNzX25hbWU9c2VsZi5fY3Jhc2hlZF9zdWJwcm9jZXNzX25hbWUpCisgICAgICAg
ICAgICBjcmFzaGVkX3Byb2Nlc3NfbmFtZT1zZWxmLl9jcmFzaGVkX3Byb2Nlc3NfbmFtZSwKKyAg
ICAgICAgICAgIGNyYXNoZWRfcGlkPXNlbGYuX2NyYXNoZWRfcGlkLCBjcmFzaF9sb2c9Y3Jhc2hf
bG9nKQogCiAgICAgZGVmIF9yZWFkX2hlYWRlcihzZWxmLCBibG9jaywgbGluZSwgaGVhZGVyX3Rl
eHQsIGhlYWRlcl9hdHRyLCBoZWFkZXJfZmlsdGVyPU5vbmUpOgogICAgICAgICBpZiBsaW5lLnN0
YXJ0c3dpdGgoaGVhZGVyX3RleHQpIGFuZCBnZXRhdHRyKGJsb2NrLCBoZWFkZXJfYXR0cikgaXMg
Tm9uZToK
</data>

          </attachment>
      

    </bug>

</bugzilla>