<?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>100030</bug_id>
          
          <creation_ts>2012-10-22 14:22:44 -0700</creation_ts>
          <short_desc>run-perf-tests should have a --repeat option</short_desc>
          <delta_ts>2013-03-07 16:40:56 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>77037</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Glenn Adams">glenn</assigned_to>
          <cc>benjamin</cc>
    
    <cc>dpranke</cc>
    
    <cc>eric</cc>
    
    <cc>glenn</cc>
    
    <cc>mkwst</cc>
    
    <cc>ojan</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>747877</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-22 14:22:44 -0700</bug_when>
    <thetext>I often run perf tests 5 times with my patch and 5 times without.  It would be great to be able to pass --repeat 5 rather than running them manually.  Also, I&apos;d like to label the runs with something meaningful to me rather than &quot;r132115&quot; since I use the same base revision both with and without my patch.

While I&apos;m in wishlist land, I&apos;d then like to be able to compare groups of runs in the same way that you can compare individual runs today.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747960</commentid>
    <comment_count>1</comment_count>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2012-10-22 15:24:31 -0700</bug_when>
    <thetext>This seems 3 requests for me.

- repeat option
- grouping the repeated runs (How do you think summarize the results? )
- labeling option</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747962</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-22 15:30:42 -0700</bug_when>
    <thetext>Yes, sorry.  The other tings are just &quot;nice to haves&quot; on top of --repeat.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749235</commentid>
    <comment_count>3</comment_count>
    <who name="Glenn Adams">glenn</who>
    <bug_when>2012-10-23 19:13:14 -0700</bug_when>
    <thetext>+1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750669</commentid>
    <comment_count>4</comment_count>
      <attachid>170614</attachid>
    <who name="Mike West">mkwst</who>
    <bug_when>2012-10-25 04:37:10 -0700</bug_when>
    <thetext>Created attachment 170614
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750677</commentid>
    <comment_count>5</comment_count>
    <who name="Mike West">mkwst</who>
    <bug_when>2012-10-25 04:41:25 -0700</bug_when>
    <thetext>Amusingly, this bug was the top hit when I searched for methods of repeating WebKit perf tests. :)

The attached patch does #1 and #3 from Zoltan&apos;s list: it adds a &apos;--repeat&apos; option which runs the specified set of tests X times, and it adds a &apos;--runtitle&apos; option which allows you to override each run&apos;s column title. If both are specified (e.g. &apos;--runtitle=Clean --repeat=5&apos;), then the column titles are iterated (e.g. &apos;Clean #1&apos;, &apos;Clean #2&apos;, and so on).

I&apos;m not sure how grouping and summarization might work, but it should likely be done in a separate patch anyway.

WDYT?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750881</commentid>
    <comment_count>6</comment_count>
      <attachid>170614</attachid>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2012-10-25 08:54:27 -0700</bug_when>
    <thetext>Comment on attachment 170614
Patch

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

&gt; Tools/Scripts/webkitpy/performance_tests/perftestsrunner.py:313
&gt; +            _log.info(&apos;Running %s (%d of %d)%s&apos; % (test.test_name(), expected + unexpected + 1, len(tests), (&quot; [Run %d of %d]&quot; % (self._currentRun, self._totalRuns) if self._totalRuns &gt; 1 else &quot;&quot;)))

It&apos;s like a bit perl stylish for me. I might write it to more lines using a variable. Not critical.

The change looks good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750978</commentid>
    <comment_count>7</comment_count>
      <attachid>170614</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-10-25 10:30:55 -0700</bug_when>
    <thetext>Comment on attachment 170614
Patch

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

Just a couple of minor things ...

&gt; Tools/Scripts/webkitpy/performance_tests/perftestsrunner.py:71
&gt; +        self._totalRuns = int(self._options.repeat)

You can set type=&quot;int&quot; in make_option() below and avoid this cast.

&gt; Tools/Scripts/webkitpy/performance_tests/perftestsrunner.py:176
&gt; +                exit_code = self._generate_and_show_results()

I would split this into two routines so that you can merge in the results after each run but only show the results at the end.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751010</commentid>
    <comment_count>8</comment_count>
      <attachid>170691</attachid>
    <who name="Mike West">mkwst</who>
    <bug_when>2012-10-25 10:55:54 -0700</bug_when>
    <thetext>Created attachment 170691
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751014</commentid>
    <comment_count>9</comment_count>
    <who name="Mike West">mkwst</who>
    <bug_when>2012-10-25 10:56:46 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 170614 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=170614&amp;action=review
&gt; 
&gt; Just a couple of minor things ...
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/performance_tests/perftestsrunner.py:71
&gt; &gt; +        self._totalRuns = int(self._options.repeat)
&gt; 
&gt; You can set type=&quot;int&quot; in make_option() below and avoid this cast.
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/performance_tests/perftestsrunner.py:176
&gt; &gt; +                exit_code = self._generate_and_show_results()
&gt; 
&gt; I would split this into two routines so that you can merge in the results after each run but only show the results at the end.

Thanks Dirk, Zoltan. I&apos;ve addressed both of your comments.

WDYT?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751034</commentid>
    <comment_count>10</comment_count>
      <attachid>170691</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-10-25 11:11:41 -0700</bug_when>
    <thetext>Comment on attachment 170691
Patch

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

&gt; Tools/Scripts/webkitpy/performance_tests/perftestsrunner.py:179
&gt; +                if self._currentRun == self._totalRuns:

Nit: I&apos;d pull this out of the while loop and into a separate if block.

&gt; Tools/Scripts/webkitpy/performance_tests/perftestsrunner.py:217
&gt; +        if self._options.show_results:

Seems kinda silly to have if block inside this call, or even to have a separate function for this at all if it&apos;s just two lines ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751049</commentid>
    <comment_count>11</comment_count>
      <attachid>170694</attachid>
    <who name="Mike West">mkwst</who>
    <bug_when>2012-10-25 11:31:27 -0700</bug_when>
    <thetext>Created attachment 170694
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751082</commentid>
    <comment_count>12</comment_count>
      <attachid>170694</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-10-25 11:58:35 -0700</bug_when>
    <thetext>Comment on attachment 170694
Patch

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

&gt; Tools/Scripts/webkitpy/performance_tests/perftestsrunner.py:123
&gt; +            optparse.make_option(&quot;--runtitle&quot;,
&gt; +                help=&quot;Specify a name for the run. If provided, this title will replace the WebKit revision in the result page&apos;s column header.&quot;),

There is already --description.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751090</commentid>
    <comment_count>13</comment_count>
    <who name="Mike West">mkwst</who>
    <bug_when>2012-10-25 12:04:30 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 170694 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=170694&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/performance_tests/perftestsrunner.py:123
&gt; &gt; +            optparse.make_option(&quot;--runtitle&quot;,
&gt; &gt; +                help=&quot;Specify a name for the run. If provided, this title will replace the WebKit revision in the result page&apos;s column header.&quot;),
&gt; 
&gt; There is already --description.

&apos;--description&apos; doesn&apos;t overwrite the revision in the column header. It appends something additional to it. That&apos;s not a feature I personally find useful; replacement is what I&apos;m looking for.

Perhaps we could compromise on a flag that toggled description&apos;s behavior between replace or append?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751093</commentid>
    <comment_count>14</comment_count>
      <attachid>170694</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-10-25 12:07:06 -0700</bug_when>
    <thetext>Comment on attachment 170694
Patch

Also, theere should be a test for this. Did you even run test-webkitpy?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751096</commentid>
    <comment_count>15</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-10-25 12:08:50 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #12)
&gt; &gt; (From update of attachment 170694 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=170694&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Tools/Scripts/webkitpy/performance_tests/perftestsrunner.py:123
&gt; &gt; &gt; +            optparse.make_option(&quot;--runtitle&quot;,
&gt; &gt; &gt; +                help=&quot;Specify a name for the run. If provided, this title will replace the WebKit revision in the result page&apos;s column header.&quot;),
&gt; &gt; 
&gt; &gt; There is already --description.
&gt; 
&gt; &apos;--description&apos; doesn&apos;t overwrite the revision in the column header. It appends something additional to it. That&apos;s not a feature I personally find useful; replacement is what I&apos;m looking for.

The problem is that you could be running multiple runs at multiple revisions with different descriptions. I&apos;m fine with hiding revisions when all revisions are same but always overriding the revision number is not the right thing to do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751705</commentid>
    <comment_count>16</comment_count>
    <who name="Mike West">mkwst</who>
    <bug_when>2012-10-26 02:02:37 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 170694 [details])
&gt; Also, theere should be a test for this. Did you even run test-webkitpy?

Oh, look. Tests. *facepalm*

Sorry, didn&apos;t see that at all. I&apos;ll clean this up today.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827710</commentid>
    <comment_count>17</comment_count>
    <who name="Mike West">mkwst</who>
    <bug_when>2013-02-07 11:00:48 -0800</bug_when>
    <thetext>Unassigning myself; let&apos;s be realistic about what I&apos;m actually working on. :/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849754</commentid>
    <comment_count>18</comment_count>
      <attachid>191921</attachid>
    <who name="Glenn Adams">glenn</who>
    <bug_when>2013-03-06 22:38:50 -0800</bug_when>
    <thetext>Created attachment 191921
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849841</commentid>
    <comment_count>19</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-03-07 01:01:10 -0800</bug_when>
    <thetext>After the recent changes of Ryosuke, I am not sure a complete &quot;repeat&quot; is what we want.

Wouldn&apos;t it be more interesting to have control over _process_run_count instead?

Adam, what is the reason you use to run tests 5 times? Was it due to the deviation between runs?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850047</commentid>
    <comment_count>20</comment_count>
    <who name="Glenn Adams">glenn</who>
    <bug_when>2013-03-07 06:53:15 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; After the recent changes of Ryosuke, I am not sure a complete &quot;repeat&quot; is what we want.
&gt; 
&gt; Wouldn&apos;t it be more interesting to have control over _process_run_count instead?

these are orthogonal parameters. repeat controls how many times the outer test set is run, while process_run_count controls how many samples are taken when running a given test within the test set.

rniwa and I discussed this on IRC yesterday, and he is fine with the outer repeat. at his suggestion, i plan to expose the process_run_count as a separate option to permit external configuration.

&gt; Adam, what is the reason you use to run tests 5 times? Was it due to the deviation between runs?

i guess you mean &apos;Glenn&apos;, not &apos;Adam&apos;, but if you are asking why i used 5 in the newly added tests, it is simply because i needed to pick a number greater than 1; i could have used 2 instead, or 10... so no significance</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850049</commentid>
    <comment_count>21</comment_count>
    <who name="Glenn Adams">glenn</who>
    <bug_when>2013-03-07 06:55:04 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; i plan to expose the process_run_count as a separate option to permit external configuration.

i should have added: in a different bug/patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850215</commentid>
    <comment_count>22</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-03-07 10:12:11 -0800</bug_when>
    <thetext>&gt; &gt; Adam, what is the reason you use to run tests 5 times? Was it due to the deviation between runs?
&gt; 
&gt; i guess you mean &apos;Glenn&apos;, not &apos;Adam&apos;, but if you are asking why i used 5 in the newly added tests, it is simply because i needed to pick a number greater than 1; i could have used 2 instead, or 10... so no significance

I meant Adam :)
In his comment, he said he runs the tests 5 times.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850230</commentid>
    <comment_count>23</comment_count>
    <who name="Glenn Adams">glenn</who>
    <bug_when>2013-03-07 10:17:59 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; (In reply to comment #20)
&gt; &gt; i plan to expose the process_run_count as a separate option to permit external configuration.
&gt; 
&gt; i should have added: in a different bug/patch

see https://bugs.webkit.org/show_bug.cgi?id=111726</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850235</commentid>
    <comment_count>24</comment_count>
    <who name="Glenn Adams">glenn</who>
    <bug_when>2013-03-07 10:20:22 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; &gt; &gt; Adam, what is the reason you use to run tests 5 times? Was it due to the deviation between runs?
&gt; &gt; 
&gt; &gt; i guess you mean &apos;Glenn&apos;, not &apos;Adam&apos;, but if you are asking why i used 5 in the newly added tests, it is simply because i needed to pick a number greater than 1; i could have used 2 instead, or 10... so no significance
&gt; 
&gt; I meant Adam :)
&gt; In his comment, he said he runs the tests 5 times.

tnx for clarifying... just wanted to make sure</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850245</commentid>
    <comment_count>25</comment_count>
      <attachid>191921</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-03-07 10:33:00 -0800</bug_when>
    <thetext>Comment on attachment 191921
Patch

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

&gt; Tools/ChangeLog:9
&gt; +        Add --repeat option to run-perf-tests, with default value of 1, which runs
&gt; +        test set repeat count times then uploads and shows results as appropriate.

I have a hard time following the phrase &quot;which runs test set repeat count times&quot;. Revise?

&gt; Tools/Scripts/webkitpy/performance_tests/perftestsrunner.py:182
&gt; +        runCount = 0

Please don&apos;t use camelCase in PEP8 styled code. Use run_count. instead.

&gt; Tools/Scripts/webkitpy/performance_tests/perftestsrunner.py:188
&gt; +            runs = &apos; [Run %d of %d]&apos; % (runCount, repeat) if repeat &gt; 1 else &apos;&apos;

I would use regular parenthesis instead of square brackets unless there is a compelling reason not to.

&gt; Tools/Scripts/webkitpy/performance_tests/perftestsrunner.py:251
&gt; +            results_page_path = self._host.filesystem.splitext(output_json_path)[0] + &apos;.html&apos;

I don&apos;t want to se this code duplicated in two places. Maybe add _results_page_path() ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850344</commentid>
    <comment_count>26</comment_count>
      <attachid>192059</attachid>
    <who name="Glenn Adams">glenn</who>
    <bug_when>2013-03-07 11:58:23 -0800</bug_when>
    <thetext>Created attachment 192059
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850349</commentid>
    <comment_count>27</comment_count>
    <who name="Glenn Adams">glenn</who>
    <bug_when>2013-03-07 12:00:52 -0800</bug_when>
    <thetext>(In reply to comment #26)
&gt; Created an attachment (id=192059) [details]
&gt; Patch for landing

address rniwa comment #25</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850443</commentid>
    <comment_count>28</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-07 13:29:57 -0800</bug_when>
    <thetext>&gt; Adam, what is the reason you use to run tests 5 times? Was it due to the deviation between runs?

It was so I could compute confidence intervals myself.  I understand that the tool can do that for me, but I&apos;m a paranoid panda.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850618</commentid>
    <comment_count>29</comment_count>
      <attachid>192059</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-07 16:40:50 -0800</bug_when>
    <thetext>Comment on attachment 192059
Patch for landing

Clearing flags on attachment: 192059

Committed r145152: &lt;http://trac.webkit.org/changeset/145152&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850620</commentid>
    <comment_count>30</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-07 16:40:56 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170614</attachid>
            <date>2012-10-25 04:37:10 -0700</date>
            <delta_ts>2012-10-25 10:55:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100030-20121025133544.patch</filename>
            <type>text/plain</type>
            <size>7959</size>
            <attacher name="Mike West">mkwst</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyMzQzCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOTY3ZjYyYjJlOWVmNmY0NjUwZWE3YzdiYjFiZDM2YjUz
NTBkZmFlMS4uYTAwYmQ5YzczMzdjMTI5YzJhZTI3MWZhMTZkMGE5MmYyZjBlYWYxZiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2
IEBACisyMDEyLTEwLTI1ICBNaWtlIFdlc3QgIDxta3dzdEBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgcnVuLXBlcmYtdGVzdHMgc2hvdWxkIGhhdmUgYSAtLXJlcGVhdCBvcHRpb24KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDAzMAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyB0
d28gb3B0aW9ucyB0byAncnVuLXBlcmYtdGVzdHMnOiAtLXJlcGVhdCBhbmQKKyAgICAgICAgLS1y
dW50aXRsZS4gVGhlIGZvcm1lciBzZXRzIHRoZSBudW1iZXIgb2YgdGltZXMgdGhlIHNwZWNpZmll
ZCBzZXQgb2YKKyAgICAgICAgdGVzdHMgc2hvdWxkIGJlIHJ1biwgYW5kIHRoZSBsYXR0ZXIgcHJv
dmlkZXMgYSBtZWNoYW5pc20gZm9yCisgICAgICAgIG92ZXJyaWRpbmcgdGhlIGRlZmF1bHQgY29s
dW1uIHRpdGxlIGZvciBhIHJ1bi4gSSdtIGluY2x1ZGluZyB0aGVtIGluCisgICAgICAgIHRoZSBz
YW1lIHBhdGNoIGluIG9yZGVyIHRvIGhhdmUgdGhlIG5pY2UgY29vcGVyYXRpdmUgZWZmZWN0IG9m
CisgICAgICAgIGl0ZXJhdGluZyB0aGUgY29sdW1uIHRpdGxlIGZvciBlYWNoIHJ1bi4gVGhhdCBp
cywgaWYgYSBydW4gdGl0bGUgb2YKKyAgICAgICAgIkNsZWFuIEJ1aWxkIiBpcyBwcm92aWRlZCwg
YW5kIGl0IHJlcGVhdHMgNSB0aW1lcywgdGhlIHRpdGxlcyBvZiB0aGUKKyAgICAgICAgZml2ZSBy
ZXN1bHQgY29sdW1ucyB3aWxsIGJlICJDbGVhbiBCdWlsZCAjMSIsICJDbGVhbiBCdWlsZCAjMiIs
IGFuZCBzbworICAgICAgICBvbi4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcGVyZm9y
bWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVyLnB5OgorICAgICAgICAoUGVyZlRlc3RzUnVubmVy
Ll9faW5pdF9fKToKKyAgICAgICAgICAgIEFkZHMgJ190b3RhbFJ1bnMnIGFuZCAnX2N1cnJlbnRS
dW4nIGluc3RhbmNlIHZhcmlhYmxlcy4KKyAgICAgICAgKFBlcmZUZXN0c1J1bm5lci5fcGFyc2Vf
YXJncyk6CisgICAgICAgICAgICBBZGRzICctLXJlcGVhdCcgYW5kICctLXJ1bnRpdGxlJyBvcHRp
b25zIHRvIHRoZSBydW5uZXIuCisgICAgICAgIChQZXJmVGVzdHNSdW5uZXIucnVuKToKKyAgICAg
ICAgICAgIExvb3Agb3ZlciAnX3J1bl90ZXN0c19zZXQnIHRoZSBudW1iZXIgb2YgdGltZXMgc3Bl
Y2lmaWVkIGJ5ICctLXJlcGVhdCcuCisgICAgICAgIChQZXJmVGVzdHNSdW5uZXIuX2dlbmVyYXRl
X2FuZF9zaG93X3Jlc3VsdHMpOgorICAgICAgICAgICAgT25seSB1cGxvYWQgdGhlIEpTT04gZmls
ZSBhbmQgb3BlbiB0aGUgcmVzdWx0cyBwYWdlIGlmIHdlJ3ZlCisgICAgICAgICAgICBmaW5pc2hl
ZCB0aGUgZmluYWwgcnVuLgorICAgICAgICAoUGVyZlRlc3RzUnVubmVyLl9nZW5lcmF0ZV9yZXN1
bHRzX2RpY3QpOgorICAgICAgICAgICAgQWRkICd3ZWJraXQtcnVudGl0bGUnIHRvIHRoZSBKU09O
IHJlc3VsdCBzZXQgZm9yIHVzZSBpbiB0aGUgdGVtcGxhdGUuCisgICAgICAgIChQZXJmVGVzdHNS
dW5uZXIuX3J1bl90ZXN0c19zZXQpOgorICAgICAgICAgICAgSWYgd2UncmUgcmVwZWF0aW5nIHRo
ZSB0ZXN0cywgbm90ZSB0aGUgY3VycmVudCBydW4gaW4gdGhlIGxvZworICAgICAgICAgICAgbWVz
c2FnZTogIlJ1bm5pbmcgW1RFU1QgTkFNRV0gKDEgb2YgMTAwKSBbUnVuIDEgb2YgNV0iLgorCiAy
MDEyLTEwLTI0ICBaZW5vIEFsYmlzc2VyICA8emVub0B3ZWJraXQub3JnPgogCiAgICAgICAgIElt
cGxlbWVudCBHcmFwaGljc1N1cmZhY2UgZm9yIFdpbmRvd3MuCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0c3J1bm5lci5weSBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVyLnB5
CmluZGV4IDQyZTBkOTZlMTFhNjUyMDVkMThjMDY5OGMyOGNlMGY4YzYzYzFmMmMuLmUxZThmY2M1
ODA3Y2MzMjMwMDBkZmNlZDA5NTRiMTBhMjRiMGE2MjQgMTAwNzU1Ci0tLSBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVyLnB5CisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVyLnB5
CkBAIC02OCw2ICs2OCw4IEBAIGNsYXNzIFBlcmZUZXN0c1J1bm5lcihvYmplY3QpOgogICAgICAg
ICBzZWxmLl9iYXNlX3BhdGggPSBzZWxmLl9wb3J0LnBlcmZfdGVzdHNfZGlyKCkKICAgICAgICAg
c2VsZi5fcmVzdWx0cyA9IHt9CiAgICAgICAgIHNlbGYuX3RpbWVzdGFtcCA9IHRpbWUudGltZSgp
CisgICAgICAgIHNlbGYuX3RvdGFsUnVucyA9IGludChzZWxmLl9vcHRpb25zLnJlcGVhdCkKKyAg
ICAgICAgc2VsZi5fY3VycmVudFJ1biA9IDAKIAogICAgIEBzdGF0aWNtZXRob2QKICAgICBkZWYg
X3BhcnNlX2FyZ3MoYXJncz1Ob25lKToKQEAgLTExNyw2ICsxMTksMTAgQEAgY2xhc3MgUGVyZlRl
c3RzUnVubmVyKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgaGVscD0iUnVuIHJlcGxheSB0ZXN0
cy4iKSwKICAgICAgICAgICAgIG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCItLWZvcmNlIiwgZGVzdD0i
c2tpcHBlZCIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlZmF1bHQ9RmFsc2UsCiAgICAgICAgICAg
ICAgICAgaGVscD0iUnVuIGFsbCB0ZXN0cywgaW5jbHVkaW5nIHRoZSBvbmVzIGluIHRoZSBTa2lw
cGVkIGxpc3QuIiksCisgICAgICAgICAgICBvcHRwYXJzZS5tYWtlX29wdGlvbigiLS1ydW50aXRs
ZSIsCisgICAgICAgICAgICAgICAgaGVscD0iU3BlY2lmeSBhIG5hbWUgZm9yIHRoZSBydW4uIElm
IHByb3ZpZGVkLCB0aGlzIHRpdGxlIHdpbGwgcmVwbGFjZSB0aGUgV2ViS2l0IHJldmlzaW9uIGlu
IHRoZSByZXN1bHQgcGFnZSdzIGNvbHVtbiBoZWFkZXIuIiksCisgICAgICAgICAgICBvcHRwYXJz
ZS5tYWtlX29wdGlvbigiLS1yZXBlYXQiLCBkZWZhdWx0PTEsCisgICAgICAgICAgICAgICAgaGVs
cD0iU3BlY2lmeSBob3cgbWFueSB0aW1lcyB0aGUgc2V0IG9mIHRlc3RzIHNob3VsZCBiZSBydW4u
IERlZmF1bHRzIHRvIDEuIiksCiAgICAgICAgICAgICBdCiAgICAgICAgIHJldHVybiBvcHRwYXJz
ZS5PcHRpb25QYXJzZXIob3B0aW9uX2xpc3Q9KHBlcmZfb3B0aW9uX2xpc3QpKS5wYXJzZV9hcmdz
KGFyZ3MpCiAKQEAgLTE2MywxMSArMTY5LDEzIEBAIGNsYXNzIFBlcmZUZXN0c1J1bm5lcihvYmpl
Y3QpOgogICAgICAgICAgICAgaWYgbm90IHRlc3QucHJlcGFyZShzZWxmLl9vcHRpb25zLnRpbWVf
b3V0X21zKToKICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5FWElUX0NPREVfQkFEX1BSRVBB
UkFUSU9OCiAKLSAgICAgICAgdW5leHBlY3RlZCA9IHNlbGYuX3J1bl90ZXN0c19zZXQoc29ydGVk
KGxpc3QodGVzdHMpLCBrZXk9bGFtYmRhIHRlc3Q6IHRlc3QudGVzdF9uYW1lKCkpLCBzZWxmLl9w
b3J0KQotICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmdlbmVyYXRlX3Jlc3VsdHM6Ci0gICAgICAg
ICAgICBleGl0X2NvZGUgPSBzZWxmLl9nZW5lcmF0ZV9hbmRfc2hvd19yZXN1bHRzKCkKLSAgICAg
ICAgICAgIGlmIGV4aXRfY29kZToKLSAgICAgICAgICAgICAgICByZXR1cm4gZXhpdF9jb2RlCisg
ICAgICAgIHdoaWxlIChzZWxmLl9jdXJyZW50UnVuIDwgc2VsZi5fdG90YWxSdW5zKToKKyAgICAg
ICAgICAgIHNlbGYuX2N1cnJlbnRSdW4gKz0gMQorICAgICAgICAgICAgdW5leHBlY3RlZCA9IHNl
bGYuX3J1bl90ZXN0c19zZXQoc29ydGVkKGxpc3QodGVzdHMpLCBrZXk9bGFtYmRhIHRlc3Q6IHRl
c3QudGVzdF9uYW1lKCkpLCBzZWxmLl9wb3J0KQorICAgICAgICAgICAgaWYgc2VsZi5fb3B0aW9u
cy5nZW5lcmF0ZV9yZXN1bHRzOgorICAgICAgICAgICAgICAgIGV4aXRfY29kZSA9IHNlbGYuX2dl
bmVyYXRlX2FuZF9zaG93X3Jlc3VsdHMoKQorICAgICAgICAgICAgICAgIGlmIGV4aXRfY29kZToK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV4aXRfY29kZQogCiAgICAgICAgIHJldHVybiB1
bmV4cGVjdGVkCiAKQEAgLTE5NCwxMSArMjAyLDExIEBAIGNsYXNzIFBlcmZUZXN0c1J1bm5lcihv
YmplY3QpOgogICAgICAgICByZXN1bHRzX3BhZ2VfcGF0aCA9IHNlbGYuX2hvc3QuZmlsZXN5c3Rl
bS5zcGxpdGV4dChvdXRwdXRfanNvbl9wYXRoKVswXSArICcuaHRtbCcKICAgICAgICAgc2VsZi5f
Z2VuZXJhdGVfb3V0cHV0X2ZpbGVzKG91dHB1dF9qc29uX3BhdGgsIHJlc3VsdHNfcGFnZV9wYXRo
LCBvdXRwdXQpCiAKLSAgICAgICAgaWYgb3B0aW9ucy50ZXN0X3Jlc3VsdHNfc2VydmVyOgorICAg
ICAgICBpZiBvcHRpb25zLnRlc3RfcmVzdWx0c19zZXJ2ZXIgYW5kIChzZWxmLl9jdXJyZW50UnVu
ID09IHNlbGYuX3RvdGFsUnVucyk6CiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fdXBsb2FkX2pz
b24ob3B0aW9ucy50ZXN0X3Jlc3VsdHNfc2VydmVyLCBvdXRwdXRfanNvbl9wYXRoKToKICAgICAg
ICAgICAgICAgICByZXR1cm4gc2VsZi5FWElUX0NPREVfRkFJTEVEX1VQTE9BRElORwogCi0gICAg
ICAgIGlmIG9wdGlvbnMuc2hvd19yZXN1bHRzOgorICAgICAgICBpZiBvcHRpb25zLnNob3dfcmVz
dWx0cyBhbmQgKHNlbGYuX2N1cnJlbnRSdW4gPT0gc2VsZi5fdG90YWxSdW5zKToKICAgICAgICAg
ICAgIHNlbGYuX3BvcnQuc2hvd19yZXN1bHRzX2h0bWxfZmlsZShyZXN1bHRzX3BhZ2VfcGF0aCkK
IAogICAgIGRlZiBfZ2VuZXJhdGVfcmVzdWx0c19kaWN0KHNlbGYsIHRpbWVzdGFtcCwgZGVzY3Jp
cHRpb24sIHBsYXRmb3JtLCBidWlsZGVyX25hbWUsIGJ1aWxkX251bWJlcik6CkBAIC0yMDgsNiAr
MjE2LDEwIEBAIGNsYXNzIFBlcmZUZXN0c1J1bm5lcihvYmplY3QpOgogICAgICAgICBmb3IgKG5h
bWUsIHBhdGgpIGluIHNlbGYuX3BvcnQucmVwb3NpdG9yeV9wYXRocygpOgogICAgICAgICAgICAg
c2NtID0gU0NNRGV0ZWN0b3Ioc2VsZi5faG9zdC5maWxlc3lzdGVtLCBzZWxmLl9ob3N0LmV4ZWN1
dGl2ZSkuZGV0ZWN0X3NjbV9zeXN0ZW0ocGF0aCkgb3Igc2VsZi5faG9zdC5zY20oKQogICAgICAg
ICAgICAgY29udGVudHNbbmFtZSArICctcmV2aXNpb24nXSA9IHNjbS5zdm5fcmV2aXNpb24ocGF0
aCkKKyAgICAgICAgICAgIGlmIChzZWxmLl9vcHRpb25zLnJ1bnRpdGxlKToKKyAgICAgICAgICAg
ICAgICBjb250ZW50c1tuYW1lICsgJy1ydW50aXRsZSddID0gc2VsZi5fb3B0aW9ucy5ydW50aXRs
ZQorICAgICAgICAgICAgICAgIGlmIChzZWxmLl90b3RhbFJ1bnMgPiAxKToKKyAgICAgICAgICAg
ICAgICAgICAgY29udGVudHNbbmFtZSArICctcnVudGl0bGUnXSArPSAiICMlZCIgJSBzZWxmLl9j
dXJyZW50UnVuCiAKICAgICAgICAgIyBGSVhNRTogQWRkIC0tYnJhbmNoIG9yIGF1dG8tZGV0ZWN0
IHRoZSBicmFuY2ggd2UncmUgaW4KICAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4geyd0aW1lc3Rh
bXAnOiBpbnQodGltZXN0YW1wKSwgJ2JyYW5jaCc6IHNlbGYuX2RlZmF1bHRfYnJhbmNoLCAncGxh
dGZvcm0nOiBwbGF0Zm9ybSwKQEAgLTI5OCw3ICszMTAsNyBAQCBjbGFzcyBQZXJmVGVzdHNSdW5u
ZXIob2JqZWN0KToKICAgICAgICAgICAgICAgICAgICAgZHJpdmVyLnN0b3AoKQogICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdW5leHBlY3RlZAogCi0gICAgICAgICAgICBfbG9nLmluZm8oJ1J1
bm5pbmcgJXMgKCVkIG9mICVkKScgJSAodGVzdC50ZXN0X25hbWUoKSwgZXhwZWN0ZWQgKyB1bmV4
cGVjdGVkICsgMSwgbGVuKHRlc3RzKSkpCisgICAgICAgICAgICBfbG9nLmluZm8oJ1J1bm5pbmcg
JXMgKCVkIG9mICVkKSVzJyAlICh0ZXN0LnRlc3RfbmFtZSgpLCBleHBlY3RlZCArIHVuZXhwZWN0
ZWQgKyAxLCBsZW4odGVzdHMpLCAoIiBbUnVuICVkIG9mICVkXSIgJSAoc2VsZi5fY3VycmVudFJ1
biwgc2VsZi5fdG90YWxSdW5zKSBpZiBzZWxmLl90b3RhbFJ1bnMgPiAxIGVsc2UgIiIpKSkKICAg
ICAgICAgICAgIGlmIHNlbGYuX3J1bl9zaW5nbGVfdGVzdCh0ZXN0LCBkcml2ZXIpOgogICAgICAg
ICAgICAgICAgIGV4cGVjdGVkID0gZXhwZWN0ZWQgKyAxCiAgICAgICAgICAgICBlbHNlOgpkaWZm
IC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cgYi9QZXJmb3JtYW5jZVRlc3RzL0No
YW5nZUxvZwppbmRleCA3ZjJhYmE5MzkxOWYxNzdhYTU5MDEwODkzMjdlYjFkN2M2MTVlMjQ0Li4y
OGMwOGQ3MjhlMDdlZWUwMTJhZjJkMzQxOTc2MjhmYTA5NGU3MWNmIDEwMDY0NAotLS0gYS9QZXJm
b3JtYW5jZVRlc3RzL0NoYW5nZUxvZworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE1IEBACisyMDEyLTEwLTI1ICBNaWtlIFdlc3QgIDxta3dzdEBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgcnVuLXBlcmYtdGVzdHMgc2hvdWxkIGhhdmUgYSAtLXJlcGVhdCBvcHRp
b24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDAz
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElmIHRo
ZSB0ZXN0IHJlc3VsdCBoYXMgYSAicnVuIHRpdGxlIiwgdXNlIGl0IGluc3RlYWQgb2YgdGhlIFdl
YktpdAorICAgICAgICByZXZpc2lvbiBpbiB0aGUgcmVzdWx0J3MgY29sdW1uIGhlYWRlci4KKwor
ICAgICAgICAqIHJlc291cmNlcy9yZXN1bHRzLXRlbXBsYXRlLmh0bWw6CisKIDIwMTItMTAtMjMg
IFpvbHRhbiBIb3J2YXRoICA8em9sdGFuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgU3RvcmUgdGhl
IGxvYWRlZCBmaWxlIGxvY2FsbHkgaW4gbWVhc3VyZVBhZ2VMb2FkVGltZQpkaWZmIC0tZ2l0IGEv
UGVyZm9ybWFuY2VUZXN0cy9yZXNvdXJjZXMvcmVzdWx0cy10ZW1wbGF0ZS5odG1sIGIvUGVyZm9y
bWFuY2VUZXN0cy9yZXNvdXJjZXMvcmVzdWx0cy10ZW1wbGF0ZS5odG1sCmluZGV4IDlmZGI3Yjlm
NmIxN2Q3ZGFhMmE4MjUyN2NiY2YyOTRhMWI0ODQwMjIuLjczZjRjODczYjk2ZTlkY2IzNDYzMDVm
OGViMmFhZWViZjAyYjViZjUgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvcmVzb3VyY2Vz
L3Jlc3VsdHMtdGVtcGxhdGUuaHRtbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL3Jlc291cmNlcy9y
ZXN1bHRzLXRlbXBsYXRlLmh0bWwKQEAgLTIwNCw4ICsyMDQsMTEgQEAgZnVuY3Rpb24gVGVzdFJl
c3VsdChhc3NvY2lhdGVkVGVzdCwgcmVzdWx0LCBhc3NvY2lhdGVkUnVuKSB7CiBmdW5jdGlvbiBU
ZXN0UnVuKGVudHJ5KSB7CiAgICAgdGhpcy5kZXNjcmlwdGlvbiA9IGZ1bmN0aW9uICgpIHsgcmV0
dXJuIGVudHJ5WydkZXNjcmlwdGlvbiddOyB9CiAgICAgdGhpcy53ZWJraXRSZXZpc2lvbiA9IGZ1
bmN0aW9uICgpIHsgcmV0dXJuIGVudHJ5Wyd3ZWJraXQtcmV2aXNpb24nXTsgfQorICAgIHRoaXMu
cnVuVGl0bGUgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBlbnRyeVsnd2Via2l0LXJ1bnRpdGxlJ107
IH0KICAgICB0aGlzLmxhYmVsID0gZnVuY3Rpb24gKCkgewogICAgICAgICB2YXIgbGFiZWwgPSAn
cicgKyB0aGlzLndlYmtpdFJldmlzaW9uKCk7CisgICAgICAgIGlmICh0aGlzLnJ1blRpdGxlKCkp
CisgICAgICAgICAgICBsYWJlbCA9IHRoaXMucnVuVGl0bGUoKTsKICAgICAgICAgaWYgKHRoaXMu
ZGVzY3JpcHRpb24oKSkKICAgICAgICAgICAgIGxhYmVsICs9ICcgJmRhc2g7ICcgKyB0aGlzLmRl
c2NyaXB0aW9uKCk7CiAgICAgICAgIHJldHVybiBsYWJlbDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170691</attachid>
            <date>2012-10-25 10:55:54 -0700</date>
            <delta_ts>2012-10-25 11:31:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100030-20121025195427.patch</filename>
            <type>text/plain</type>
            <size>9245</size>
            <attacher name="Mike West">mkwst</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyMzYyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZjJjMDMxZWUzZWE4M2UyZDkzNDYwN2E5ZWRmNGFlZDA2
N2UwNmI1Ny4uNTQwYjAxZjMwOGI3NDU4NzdkMWRjMjk3YjdjYTIwZTVjNDIxYzcwYyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5
IEBACisyMDEyLTEwLTI1ICBNaWtlIFdlc3QgIDxta3dzdEBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgcnVuLXBlcmYtdGVzdHMgc2hvdWxkIGhhdmUgYSAtLXJlcGVhdCBvcHRpb24KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDAzMAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyB0
d28gb3B0aW9ucyB0byAncnVuLXBlcmYtdGVzdHMnOiAtLXJlcGVhdCBhbmQKKyAgICAgICAgLS1y
dW50aXRsZS4gVGhlIGZvcm1lciBzZXRzIHRoZSBudW1iZXIgb2YgdGltZXMgdGhlIHNwZWNpZmll
ZCBzZXQgb2YKKyAgICAgICAgdGVzdHMgc2hvdWxkIGJlIHJ1biwgYW5kIHRoZSBsYXR0ZXIgcHJv
dmlkZXMgYSBtZWNoYW5pc20gZm9yCisgICAgICAgIG92ZXJyaWRpbmcgdGhlIGRlZmF1bHQgY29s
dW1uIHRpdGxlIGZvciBhIHJ1bi4gSSdtIGluY2x1ZGluZyB0aGVtIGluCisgICAgICAgIHRoZSBz
YW1lIHBhdGNoIGluIG9yZGVyIHRvIGhhdmUgdGhlIG5pY2UgY29vcGVyYXRpdmUgZWZmZWN0IG9m
CisgICAgICAgIGl0ZXJhdGluZyB0aGUgY29sdW1uIHRpdGxlIGZvciBlYWNoIHJ1bi4gVGhhdCBp
cywgaWYgYSBydW4gdGl0bGUgb2YKKyAgICAgICAgIkNsZWFuIEJ1aWxkIiBpcyBwcm92aWRlZCwg
YW5kIGl0IHJlcGVhdHMgNSB0aW1lcywgdGhlIHRpdGxlcyBvZiB0aGUKKyAgICAgICAgZml2ZSBy
ZXN1bHQgY29sdW1ucyB3aWxsIGJlICJDbGVhbiBCdWlsZCAjMSIsICJDbGVhbiBCdWlsZCAjMiIs
IGFuZCBzbworICAgICAgICBvbi4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcGVyZm9y
bWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVyLnB5OgorICAgICAgICAoUGVyZlRlc3RzUnVubmVy
Ll9faW5pdF9fKToKKyAgICAgICAgICAgIEFkZHMgJ190b3RhbFJ1bnMnIGFuZCAnX2N1cnJlbnRS
dW4nIGluc3RhbmNlIHZhcmlhYmxlcy4KKyAgICAgICAgKFBlcmZUZXN0c1J1bm5lci5fcGFyc2Vf
YXJncyk6CisgICAgICAgICAgICBBZGRzICctLXJlcGVhdCcgYW5kICctLXJ1bnRpdGxlJyBvcHRp
b25zIHRvIHRoZSBydW5uZXIuCisgICAgICAgIChQZXJmVGVzdHNSdW5uZXIucnVuKToKKyAgICAg
ICAgICAgIExvb3Agb3ZlciAnX3J1bl90ZXN0c19zZXQnIHRoZSBudW1iZXIgb2YgdGltZXMgc3Bl
Y2lmaWVkIGJ5ICctLXJlcGVhdCcuCisgICAgICAgIChQZXJmVGVzdHNSdW5uZXIuX2dlbmVyYXRl
X3Jlc3VsdHMpOgorICAgICAgICAoUGVyZlRlc3RzUnVubmVyLl91cGxvYWRfcmVzdWx0cyk6Cisg
ICAgICAgIChQZXJmVGVzdHNSdW5uZXIuX3Nob3dfcmVzdWx0cyk6CisgICAgICAgICAgICBUaGVz
ZSB0aHJlZSBtZXRob2RzIHNwbGl0ICdfZ2VuZXJhdGVfYW5kX3Nob3dfcmVzdWx0cycKKyAgICAg
ICAgICAgIGludG8gaXRzIGNvbXBvbmVudCB0YXNrcywgYWxsb3dpbmcgdXMgdG8gb25seSB1cGxv
YWQgdGhlIEpTT04gZmlsZQorICAgICAgICAgICAgYW5kIHNob3cgdGhlIHJlc3VsdHMgcGFmZSBp
ZiB3ZSd2ZSBmaW5pc2hlZCB0aGUgZmluYWwgcnVuLgorICAgICAgICAoUGVyZlRlc3RzUnVubmVy
Ll9nZW5lcmF0ZV9yZXN1bHRzX2RpY3QpOgorICAgICAgICAgICAgQWRkICd3ZWJraXQtcnVudGl0
bGUnIHRvIHRoZSBKU09OIHJlc3VsdCBzZXQgZm9yIHVzZSBpbiB0aGUgdGVtcGxhdGUuCisgICAg
ICAgIChQZXJmVGVzdHNSdW5uZXIuX3J1bl90ZXN0c19zZXQpOgorICAgICAgICAgICAgSWYgd2Un
cmUgcmVwZWF0aW5nIHRoZSB0ZXN0cywgbm90ZSB0aGUgY3VycmVudCBydW4gaW4gdGhlIGxvZwor
ICAgICAgICAgICAgbWVzc2FnZTogIlJ1bm5pbmcgW1RFU1QgTkFNRV0gKDEgb2YgMTAwKSBbUnVu
IDEgb2YgNV0iLgorCiAyMDEyLTEwLTI0ICBKb2NlbHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJj
b3R0ZUBkaWdpYS5jb20+CiAKICAgICAgICAgW1F0XSBNb3ZlIHRoZSBRUXVpY2tXZWJWaWV3RXhw
ZXJpbWVudGFsIHBvaW50ZXIgdG8gUVF1aWNrV2ViVmlld1ByaXZhdGUKZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVyLnB5
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdHNydW5u
ZXIucHkKaW5kZXggNDJlMGQ5NmUxMWE2NTIwNWQxOGMwNjk4YzI4Y2UwZjhjNjNjMWYyYy4uOGE3
YTEzNTA1ZTQ1MDFlZGRjMmI1ZjE3ZGI4ODA2Y2MxYWM2MjY1OSAxMDA3NTUKLS0tIGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdHNydW5uZXIucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdHNydW5u
ZXIucHkKQEAgLTY4LDYgKzY4LDggQEAgY2xhc3MgUGVyZlRlc3RzUnVubmVyKG9iamVjdCk6CiAg
ICAgICAgIHNlbGYuX2Jhc2VfcGF0aCA9IHNlbGYuX3BvcnQucGVyZl90ZXN0c19kaXIoKQogICAg
ICAgICBzZWxmLl9yZXN1bHRzID0ge30KICAgICAgICAgc2VsZi5fdGltZXN0YW1wID0gdGltZS50
aW1lKCkKKyAgICAgICAgc2VsZi5fdG90YWxSdW5zID0gc2VsZi5fb3B0aW9ucy5yZXBlYXQKKyAg
ICAgICAgc2VsZi5fY3VycmVudFJ1biA9IDAKIAogICAgIEBzdGF0aWNtZXRob2QKICAgICBkZWYg
X3BhcnNlX2FyZ3MoYXJncz1Ob25lKToKQEAgLTExNyw2ICsxMTksMTAgQEAgY2xhc3MgUGVyZlRl
c3RzUnVubmVyKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgaGVscD0iUnVuIHJlcGxheSB0ZXN0
cy4iKSwKICAgICAgICAgICAgIG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCItLWZvcmNlIiwgZGVzdD0i
c2tpcHBlZCIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlZmF1bHQ9RmFsc2UsCiAgICAgICAgICAg
ICAgICAgaGVscD0iUnVuIGFsbCB0ZXN0cywgaW5jbHVkaW5nIHRoZSBvbmVzIGluIHRoZSBTa2lw
cGVkIGxpc3QuIiksCisgICAgICAgICAgICBvcHRwYXJzZS5tYWtlX29wdGlvbigiLS1ydW50aXRs
ZSIsCisgICAgICAgICAgICAgICAgaGVscD0iU3BlY2lmeSBhIG5hbWUgZm9yIHRoZSBydW4uIElm
IHByb3ZpZGVkLCB0aGlzIHRpdGxlIHdpbGwgcmVwbGFjZSB0aGUgV2ViS2l0IHJldmlzaW9uIGlu
IHRoZSByZXN1bHQgcGFnZSdzIGNvbHVtbiBoZWFkZXIuIiksCisgICAgICAgICAgICBvcHRwYXJz
ZS5tYWtlX29wdGlvbigiLS1yZXBlYXQiLCBkZWZhdWx0PTEsIHR5cGU9ImludCIsCisgICAgICAg
ICAgICAgICAgaGVscD0iU3BlY2lmeSBob3cgbWFueSB0aW1lcyB0aGUgc2V0IG9mIHRlc3RzIHNo
b3VsZCBiZSBydW4uIERlZmF1bHRzIHRvIDEuIiksCiAgICAgICAgICAgICBdCiAgICAgICAgIHJl
dHVybiBvcHRwYXJzZS5PcHRpb25QYXJzZXIob3B0aW9uX2xpc3Q9KHBlcmZfb3B0aW9uX2xpc3Qp
KS5wYXJzZV9hcmdzKGFyZ3MpCiAKQEAgLTE2MywxMSArMTY5LDE5IEBAIGNsYXNzIFBlcmZUZXN0
c1J1bm5lcihvYmplY3QpOgogICAgICAgICAgICAgaWYgbm90IHRlc3QucHJlcGFyZShzZWxmLl9v
cHRpb25zLnRpbWVfb3V0X21zKToKICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5FWElUX0NP
REVfQkFEX1BSRVBBUkFUSU9OCiAKLSAgICAgICAgdW5leHBlY3RlZCA9IHNlbGYuX3J1bl90ZXN0
c19zZXQoc29ydGVkKGxpc3QodGVzdHMpLCBrZXk9bGFtYmRhIHRlc3Q6IHRlc3QudGVzdF9uYW1l
KCkpLCBzZWxmLl9wb3J0KQotICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmdlbmVyYXRlX3Jlc3Vs
dHM6Ci0gICAgICAgICAgICBleGl0X2NvZGUgPSBzZWxmLl9nZW5lcmF0ZV9hbmRfc2hvd19yZXN1
bHRzKCkKLSAgICAgICAgICAgIGlmIGV4aXRfY29kZToKLSAgICAgICAgICAgICAgICByZXR1cm4g
ZXhpdF9jb2RlCisgICAgICAgIHdoaWxlIChzZWxmLl9jdXJyZW50UnVuIDwgc2VsZi5fdG90YWxS
dW5zKToKKyAgICAgICAgICAgIHNlbGYuX2N1cnJlbnRSdW4gKz0gMQorICAgICAgICAgICAgdW5l
eHBlY3RlZCA9IHNlbGYuX3J1bl90ZXN0c19zZXQoc29ydGVkKGxpc3QodGVzdHMpLCBrZXk9bGFt
YmRhIHRlc3Q6IHRlc3QudGVzdF9uYW1lKCkpLCBzZWxmLl9wb3J0KQorICAgICAgICAgICAgaWYg
c2VsZi5fb3B0aW9ucy5nZW5lcmF0ZV9yZXN1bHRzOgorICAgICAgICAgICAgICAgIGV4aXRfY29k
ZSA9IHNlbGYuX2dlbmVyYXRlX3Jlc3VsdHMoKQorICAgICAgICAgICAgICAgIGlmIGV4aXRfY29k
ZToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV4aXRfY29kZQorICAgICAgICAgICAgICAg
IGlmIHNlbGYuX2N1cnJlbnRSdW4gPT0gc2VsZi5fdG90YWxSdW5zOgorICAgICAgICAgICAgICAg
ICAgICBleGl0X2NvZGUgPSBzZWxmLl91cGxvYWRfcmVzdWx0cygpCisgICAgICAgICAgICAgICAg
ICAgIGlmIGV4aXRfY29kZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBleGl0X2Nv
ZGUKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fc2hvd19yZXN1bHRzKCkKKwogCiAgICAgICAg
IHJldHVybiB1bmV4cGVjdGVkCiAKQEAgLTE3Nyw3ICsxOTEsNyBAQCBjbGFzcyBQZXJmVGVzdHNS
dW5uZXIob2JqZWN0KToKICAgICAgICAgICAgIHJldHVybiBvdXRwdXRfanNvbl9wYXRoCiAgICAg
ICAgIHJldHVybiBzZWxmLl9ob3N0LmZpbGVzeXN0ZW0uam9pbihzZWxmLl9wb3J0LnBlcmZfcmVz
dWx0c19kaXJlY3RvcnkoKSwgc2VsZi5fREVGQVVMVF9KU09OX0ZJTEVOQU1FKQogCi0gICAgZGVm
IF9nZW5lcmF0ZV9hbmRfc2hvd19yZXN1bHRzKHNlbGYpOgorICAgIGRlZiBfZ2VuZXJhdGVfcmVz
dWx0cyhzZWxmKToKICAgICAgICAgb3B0aW9ucyA9IHNlbGYuX29wdGlvbnMKICAgICAgICAgb3V0
cHV0X2pzb25fcGF0aCA9IHNlbGYuX291dHB1dF9qc29uX3BhdGgoKQogICAgICAgICBvdXRwdXQg
PSBzZWxmLl9nZW5lcmF0ZV9yZXN1bHRzX2RpY3Qoc2VsZi5fdGltZXN0YW1wLCBvcHRpb25zLmRl
c2NyaXB0aW9uLCBvcHRpb25zLnBsYXRmb3JtLCBvcHRpb25zLmJ1aWxkZXJfbmFtZSwgb3B0aW9u
cy5idWlsZF9udW1iZXIpCkBAIC0xOTQsMTEgKzIwOCwxNCBAQCBjbGFzcyBQZXJmVGVzdHNSdW5u
ZXIob2JqZWN0KToKICAgICAgICAgcmVzdWx0c19wYWdlX3BhdGggPSBzZWxmLl9ob3N0LmZpbGVz
eXN0ZW0uc3BsaXRleHQob3V0cHV0X2pzb25fcGF0aClbMF0gKyAnLmh0bWwnCiAgICAgICAgIHNl
bGYuX2dlbmVyYXRlX291dHB1dF9maWxlcyhvdXRwdXRfanNvbl9wYXRoLCByZXN1bHRzX3BhZ2Vf
cGF0aCwgb3V0cHV0KQogCi0gICAgICAgIGlmIG9wdGlvbnMudGVzdF9yZXN1bHRzX3NlcnZlcjoK
LSAgICAgICAgICAgIGlmIG5vdCBzZWxmLl91cGxvYWRfanNvbihvcHRpb25zLnRlc3RfcmVzdWx0
c19zZXJ2ZXIsIG91dHB1dF9qc29uX3BhdGgpOgorICAgIGRlZiBfdXBsb2FkX3Jlc3VsdHMoc2Vs
Zik6CisgICAgICAgIGlmIHNlbGYuX29wdGlvbnMudGVzdF9yZXN1bHRzX3NlcnZlcjoKKyAgICAg
ICAgICAgIGlmIG5vdCBzZWxmLl91cGxvYWRfanNvbihvcHRpb25zLnRlc3RfcmVzdWx0c19zZXJ2
ZXIsIHNlbGYuX291dHB1dF9qc29uX3BhdGgoKSk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHNl
bGYuRVhJVF9DT0RFX0ZBSUxFRF9VUExPQURJTkcKIAotICAgICAgICBpZiBvcHRpb25zLnNob3df
cmVzdWx0czoKKyAgICBkZWYgX3Nob3dfcmVzdWx0cyhzZWxmKToKKyAgICAgICAgaWYgc2VsZi5f
b3B0aW9ucy5zaG93X3Jlc3VsdHM6CisgICAgICAgICAgICByZXN1bHRzX3BhZ2VfcGF0aCA9IHNl
bGYuX2hvc3QuZmlsZXN5c3RlbS5zcGxpdGV4dChzZWxmLl9vdXRwdXRfanNvbl9wYXRoKCkpWzBd
ICsgJy5odG1sJwogICAgICAgICAgICAgc2VsZi5fcG9ydC5zaG93X3Jlc3VsdHNfaHRtbF9maWxl
KHJlc3VsdHNfcGFnZV9wYXRoKQogCiAgICAgZGVmIF9nZW5lcmF0ZV9yZXN1bHRzX2RpY3Qoc2Vs
ZiwgdGltZXN0YW1wLCBkZXNjcmlwdGlvbiwgcGxhdGZvcm0sIGJ1aWxkZXJfbmFtZSwgYnVpbGRf
bnVtYmVyKToKQEAgLTIwOCw2ICsyMjUsMTAgQEAgY2xhc3MgUGVyZlRlc3RzUnVubmVyKG9iamVj
dCk6CiAgICAgICAgIGZvciAobmFtZSwgcGF0aCkgaW4gc2VsZi5fcG9ydC5yZXBvc2l0b3J5X3Bh
dGhzKCk6CiAgICAgICAgICAgICBzY20gPSBTQ01EZXRlY3RvcihzZWxmLl9ob3N0LmZpbGVzeXN0
ZW0sIHNlbGYuX2hvc3QuZXhlY3V0aXZlKS5kZXRlY3Rfc2NtX3N5c3RlbShwYXRoKSBvciBzZWxm
Ll9ob3N0LnNjbSgpCiAgICAgICAgICAgICBjb250ZW50c1tuYW1lICsgJy1yZXZpc2lvbiddID0g
c2NtLnN2bl9yZXZpc2lvbihwYXRoKQorICAgICAgICAgICAgaWYgKHNlbGYuX29wdGlvbnMucnVu
dGl0bGUpOgorICAgICAgICAgICAgICAgIGNvbnRlbnRzW25hbWUgKyAnLXJ1bnRpdGxlJ10gPSBz
ZWxmLl9vcHRpb25zLnJ1bnRpdGxlCisgICAgICAgICAgICAgICAgaWYgKHNlbGYuX3RvdGFsUnVu
cyA+IDEpOgorICAgICAgICAgICAgICAgICAgICBjb250ZW50c1tuYW1lICsgJy1ydW50aXRsZSdd
ICs9ICIgIyVkIiAlIHNlbGYuX2N1cnJlbnRSdW4KIAogICAgICAgICAjIEZJWE1FOiBBZGQgLS1i
cmFuY2ggb3IgYXV0by1kZXRlY3QgdGhlIGJyYW5jaCB3ZSdyZSBpbgogICAgICAgICBmb3Iga2V5
LCB2YWx1ZSBpbiB7J3RpbWVzdGFtcCc6IGludCh0aW1lc3RhbXApLCAnYnJhbmNoJzogc2VsZi5f
ZGVmYXVsdF9icmFuY2gsICdwbGF0Zm9ybSc6IHBsYXRmb3JtLApAQCAtMjk3LDggKzMxOCw4IEBA
IGNsYXNzIFBlcmZUZXN0c1J1bm5lcihvYmplY3QpOgogICAgICAgICAgICAgICAgIGlmIG5vdCBz
ZWxmLl9ob3N0LnVzZXIuY29uZmlybSgiUmVhZHkgdG8gcnVuIHRlc3Q/Iik6CiAgICAgICAgICAg
ICAgICAgICAgIGRyaXZlci5zdG9wKCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZXhw
ZWN0ZWQKLQotICAgICAgICAgICAgX2xvZy5pbmZvKCdSdW5uaW5nICVzICglZCBvZiAlZCknICUg
KHRlc3QudGVzdF9uYW1lKCksIGV4cGVjdGVkICsgdW5leHBlY3RlZCArIDEsIGxlbih0ZXN0cykp
KQorICAgICAgICAgICAgcnVucyA9ICIgW1J1biAlZCBvZiAlZF0iICUgKHNlbGYuX2N1cnJlbnRS
dW4sIHNlbGYuX3RvdGFsUnVucykgaWYgc2VsZi5fdG90YWxSdW5zID4gMSBlbHNlICIiCisgICAg
ICAgICAgICBfbG9nLmluZm8oJ1J1bm5pbmcgJXMgKCVkIG9mICVkKSVzJyAlICh0ZXN0LnRlc3Rf
bmFtZSgpLCBleHBlY3RlZCArIHVuZXhwZWN0ZWQgKyAxLCBsZW4odGVzdHMpLCBydW5zKSkKICAg
ICAgICAgICAgIGlmIHNlbGYuX3J1bl9zaW5nbGVfdGVzdCh0ZXN0LCBkcml2ZXIpOgogICAgICAg
ICAgICAgICAgIGV4cGVjdGVkID0gZXhwZWN0ZWQgKyAxCiAgICAgICAgICAgICBlbHNlOgpkaWZm
IC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cgYi9QZXJmb3JtYW5jZVRlc3RzL0No
YW5nZUxvZwppbmRleCAzNjA2ODAzOTlmMDRlNTFkM2RiZDAzNmJjYzNlM2NmNGQ3MDFhZGFiLi42
NDM1ZTJkYzE2YTgxOTk4MjZjNGZhNjkxYTZkOGQ5OTU1NzUxYWE4IDEwMDY0NAotLS0gYS9QZXJm
b3JtYW5jZVRlc3RzL0NoYW5nZUxvZworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE1IEBACisyMDEyLTEwLTI1ICBNaWtlIFdlc3QgIDxta3dzdEBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgcnVuLXBlcmYtdGVzdHMgc2hvdWxkIGhhdmUgYSAtLXJlcGVhdCBvcHRp
b24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDAz
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElmIHRo
ZSB0ZXN0IHJlc3VsdCBoYXMgYSAicnVuIHRpdGxlIiwgdXNlIGl0IGluc3RlYWQgb2YgdGhlIFdl
YktpdAorICAgICAgICByZXZpc2lvbiBpbiB0aGUgcmVzdWx0J3MgY29sdW1uIGhlYWRlci4KKwor
ICAgICAgICAqIHJlc291cmNlcy9yZXN1bHRzLXRlbXBsYXRlLmh0bWw6CisKIDIwMTItMTAtMjQg
IFpvbHRhbiBIb3J2YXRoICA8em9sdGFuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUkVHUkVTU0lP
TihyMTMxOTgyKTogU2tpcCBTVkcvU3ZnTmVzdGVkVXNlLmh0bWwgcGVyZm9ybWFuY2V0ZXN0IHNp
bmNlIGl0IGlzIGNyYXNoaW5nCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL3Jlc291cmNl
cy9yZXN1bHRzLXRlbXBsYXRlLmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL3Jlc291cmNlcy9yZXN1
bHRzLXRlbXBsYXRlLmh0bWwKaW5kZXggOWZkYjdiOWY2YjE3ZDdkYWEyYTgyNTI3Y2JjZjI5NGEx
YjQ4NDAyMi4uNzNmNGM4NzNiOTZlOWRjYjM0NjMwNWY4ZWIyYWFlZWJmMDJiNWJmNSAxMDA2NDQK
LS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9yZXNvdXJjZXMvcmVzdWx0cy10ZW1wbGF0ZS5odG1sCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvcmVzb3VyY2VzL3Jlc3VsdHMtdGVtcGxhdGUuaHRtbApAQCAt
MjA0LDggKzIwNCwxMSBAQCBmdW5jdGlvbiBUZXN0UmVzdWx0KGFzc29jaWF0ZWRUZXN0LCByZXN1
bHQsIGFzc29jaWF0ZWRSdW4pIHsKIGZ1bmN0aW9uIFRlc3RSdW4oZW50cnkpIHsKICAgICB0aGlz
LmRlc2NyaXB0aW9uID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gZW50cnlbJ2Rlc2NyaXB0aW9uJ107
IH0KICAgICB0aGlzLndlYmtpdFJldmlzaW9uID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gZW50cnlb
J3dlYmtpdC1yZXZpc2lvbiddOyB9CisgICAgdGhpcy5ydW5UaXRsZSA9IGZ1bmN0aW9uICgpIHsg
cmV0dXJuIGVudHJ5Wyd3ZWJraXQtcnVudGl0bGUnXTsgfQogICAgIHRoaXMubGFiZWwgPSBmdW5j
dGlvbiAoKSB7CiAgICAgICAgIHZhciBsYWJlbCA9ICdyJyArIHRoaXMud2Via2l0UmV2aXNpb24o
KTsKKyAgICAgICAgaWYgKHRoaXMucnVuVGl0bGUoKSkKKyAgICAgICAgICAgIGxhYmVsID0gdGhp
cy5ydW5UaXRsZSgpOwogICAgICAgICBpZiAodGhpcy5kZXNjcmlwdGlvbigpKQogICAgICAgICAg
ICAgbGFiZWwgKz0gJyAmZGFzaDsgJyArIHRoaXMuZGVzY3JpcHRpb24oKTsKICAgICAgICAgcmV0
dXJuIGxhYmVsOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170694</attachid>
            <date>2012-10-25 11:31:27 -0700</date>
            <delta_ts>2013-03-06 22:38:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100030-20121025203000.patch</filename>
            <type>text/plain</type>
            <size>9025</size>
            <attacher name="Mike West">mkwst</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyMzYyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZjJjMDMxZWUzZWE4M2UyZDkzNDYwN2E5ZWRmNGFlZDA2
N2UwNmI1Ny4uYjU3MDRiNmYwZjM4NzA3NmMxY2RlOWExY2ZlMWI2MmU0MjNiYmZkNiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4
IEBACisyMDEyLTEwLTI1ICBNaWtlIFdlc3QgIDxta3dzdEBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgcnVuLXBlcmYtdGVzdHMgc2hvdWxkIGhhdmUgYSAtLXJlcGVhdCBvcHRpb24KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDAzMAorCisgICAgICAg
IFJldmlld2VkIGJ5IERpcmsgUHJhbmtlLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyB0d28g
b3B0aW9ucyB0byAncnVuLXBlcmYtdGVzdHMnOiAtLXJlcGVhdCBhbmQKKyAgICAgICAgLS1ydW50
aXRsZS4gVGhlIGZvcm1lciBzZXRzIHRoZSBudW1iZXIgb2YgdGltZXMgdGhlIHNwZWNpZmllZCBz
ZXQgb2YKKyAgICAgICAgdGVzdHMgc2hvdWxkIGJlIHJ1biwgYW5kIHRoZSBsYXR0ZXIgcHJvdmlk
ZXMgYSBtZWNoYW5pc20gZm9yCisgICAgICAgIG92ZXJyaWRpbmcgdGhlIGRlZmF1bHQgY29sdW1u
IHRpdGxlIGZvciBhIHJ1bi4gSSdtIGluY2x1ZGluZyB0aGVtIGluCisgICAgICAgIHRoZSBzYW1l
IHBhdGNoIGluIG9yZGVyIHRvIGhhdmUgdGhlIG5pY2UgY29vcGVyYXRpdmUgZWZmZWN0IG9mCisg
ICAgICAgIGl0ZXJhdGluZyB0aGUgY29sdW1uIHRpdGxlIGZvciBlYWNoIHJ1bi4gVGhhdCBpcywg
aWYgYSBydW4gdGl0bGUgb2YKKyAgICAgICAgIkNsZWFuIEJ1aWxkIiBpcyBwcm92aWRlZCwgYW5k
IGl0IHJlcGVhdHMgNSB0aW1lcywgdGhlIHRpdGxlcyBvZiB0aGUKKyAgICAgICAgZml2ZSByZXN1
bHQgY29sdW1ucyB3aWxsIGJlICJDbGVhbiBCdWlsZCAjMSIsICJDbGVhbiBCdWlsZCAjMiIsIGFu
ZCBzbworICAgICAgICBvbi4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFu
Y2VfdGVzdHMvcGVyZnRlc3RzcnVubmVyLnB5OgorICAgICAgICAoUGVyZlRlc3RzUnVubmVyLl9f
aW5pdF9fKToKKyAgICAgICAgICAgIEFkZHMgJ190b3RhbFJ1bnMnIGFuZCAnX2N1cnJlbnRSdW4n
IGluc3RhbmNlIHZhcmlhYmxlcy4KKyAgICAgICAgKFBlcmZUZXN0c1J1bm5lci5fcGFyc2VfYXJn
cyk6CisgICAgICAgICAgICBBZGRzICctLXJlcGVhdCcgYW5kICctLXJ1bnRpdGxlJyBvcHRpb25z
IHRvIHRoZSBydW5uZXIuCisgICAgICAgIChQZXJmVGVzdHNSdW5uZXIucnVuKToKKyAgICAgICAg
ICAgIExvb3Agb3ZlciAnX3J1bl90ZXN0c19zZXQnIHRoZSBudW1iZXIgb2YgdGltZXMgc3BlY2lm
aWVkIGJ5ICctLXJlcGVhdCcuCisgICAgICAgIChQZXJmVGVzdHNSdW5uZXIuX2dlbmVyYXRlX3Jl
c3VsdHMpOgorICAgICAgICAoUGVyZlRlc3RzUnVubmVyLl91cGxvYWRfYW5kX3Nob3dfcmVzdWx0
cyk6CisgICAgICAgICAgICBUaGVzZSB0d28gbWV0aG9kcyBzcGxpdCAnX2dlbmVyYXRlX2FuZF9z
aG93X3Jlc3VsdHMnCisgICAgICAgICAgICBpbnRvIGl0cyBjb21wb25lbnQgdGFza3MsIGFsbG93
aW5nIHVzIHRvIG9ubHkgdXBsb2FkIHRoZSBKU09OIGZpbGUKKyAgICAgICAgICAgIGFuZCBzaG93
IHRoZSByZXN1bHRzIHBhZ2UgaWYgd2UndmUgZmluaXNoZWQgdGhlIGZpbmFsIHJ1bi4KKyAgICAg
ICAgKFBlcmZUZXN0c1J1bm5lci5fZ2VuZXJhdGVfcmVzdWx0c19kaWN0KToKKyAgICAgICAgICAg
IEFkZCAnd2Via2l0LXJ1bnRpdGxlJyB0byB0aGUgSlNPTiByZXN1bHQgc2V0IGZvciB1c2UgaW4g
dGhlIHRlbXBsYXRlLgorICAgICAgICAoUGVyZlRlc3RzUnVubmVyLl9ydW5fdGVzdHNfc2V0KToK
KyAgICAgICAgICAgIElmIHdlJ3JlIHJlcGVhdGluZyB0aGUgdGVzdHMsIG5vdGUgdGhlIGN1cnJl
bnQgcnVuIGluIHRoZSBsb2cKKyAgICAgICAgICAgIG1lc3NhZ2U6ICJSdW5uaW5nIFtURVNUIE5B
TUVdICgxIG9mIDEwMCkgW1J1biAxIG9mIDVdIi4KKwogMjAxMi0xMC0yNCAgSm9jZWx5biBUdXJj
b3R0ZSAgPGpvY2VseW4udHVyY290dGVAZGlnaWEuY29tPgogCiAgICAgICAgIFtRdF0gTW92ZSB0
aGUgUVF1aWNrV2ViVmlld0V4cGVyaW1lbnRhbCBwb2ludGVyIHRvIFFRdWlja1dlYlZpZXdQcml2
YXRlCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3Rz
L3BlcmZ0ZXN0c3J1bm5lci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2Vf
dGVzdHMvcGVyZnRlc3RzcnVubmVyLnB5CmluZGV4IDQyZTBkOTZlMTFhNjUyMDVkMThjMDY5OGMy
OGNlMGY4YzYzYzFmMmMuLjZhY2VmNmRjZGU4YjExNzBhZjI2MzBlODkzYzE1OGExZTkzZTgxNzcg
MTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVy
ZnRlc3RzcnVubmVyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2Vf
dGVzdHMvcGVyZnRlc3RzcnVubmVyLnB5CkBAIC02OCw2ICs2OCw4IEBAIGNsYXNzIFBlcmZUZXN0
c1J1bm5lcihvYmplY3QpOgogICAgICAgICBzZWxmLl9iYXNlX3BhdGggPSBzZWxmLl9wb3J0LnBl
cmZfdGVzdHNfZGlyKCkKICAgICAgICAgc2VsZi5fcmVzdWx0cyA9IHt9CiAgICAgICAgIHNlbGYu
X3RpbWVzdGFtcCA9IHRpbWUudGltZSgpCisgICAgICAgIHNlbGYuX3RvdGFsUnVucyA9IHNlbGYu
X29wdGlvbnMucmVwZWF0CisgICAgICAgIHNlbGYuX2N1cnJlbnRSdW4gPSAwCiAKICAgICBAc3Rh
dGljbWV0aG9kCiAgICAgZGVmIF9wYXJzZV9hcmdzKGFyZ3M9Tm9uZSk6CkBAIC0xMTcsNiArMTE5
LDEwIEBAIGNsYXNzIFBlcmZUZXN0c1J1bm5lcihvYmplY3QpOgogICAgICAgICAgICAgICAgIGhl
bHA9IlJ1biByZXBsYXkgdGVzdHMuIiksCiAgICAgICAgICAgICBvcHRwYXJzZS5tYWtlX29wdGlv
bigiLS1mb3JjZSIsIGRlc3Q9InNraXBwZWQiLCBhY3Rpb249InN0b3JlX3RydWUiLCBkZWZhdWx0
PUZhbHNlLAogICAgICAgICAgICAgICAgIGhlbHA9IlJ1biBhbGwgdGVzdHMsIGluY2x1ZGluZyB0
aGUgb25lcyBpbiB0aGUgU2tpcHBlZCBsaXN0LiIpLAorICAgICAgICAgICAgb3B0cGFyc2UubWFr
ZV9vcHRpb24oIi0tcnVudGl0bGUiLAorICAgICAgICAgICAgICAgIGhlbHA9IlNwZWNpZnkgYSBu
YW1lIGZvciB0aGUgcnVuLiBJZiBwcm92aWRlZCwgdGhpcyB0aXRsZSB3aWxsIHJlcGxhY2UgdGhl
IFdlYktpdCByZXZpc2lvbiBpbiB0aGUgcmVzdWx0IHBhZ2UncyBjb2x1bW4gaGVhZGVyLiIpLAor
ICAgICAgICAgICAgb3B0cGFyc2UubWFrZV9vcHRpb24oIi0tcmVwZWF0IiwgZGVmYXVsdD0xLCB0
eXBlPSJpbnQiLAorICAgICAgICAgICAgICAgIGhlbHA9IlNwZWNpZnkgaG93IG1hbnkgdGltZXMg
dGhlIHNldCBvZiB0ZXN0cyBzaG91bGQgYmUgcnVuLiBEZWZhdWx0cyB0byAxLiIpLAogICAgICAg
ICAgICAgXQogICAgICAgICByZXR1cm4gb3B0cGFyc2UuT3B0aW9uUGFyc2VyKG9wdGlvbl9saXN0
PShwZXJmX29wdGlvbl9saXN0KSkucGFyc2VfYXJncyhhcmdzKQogCkBAIC0xNjMsOSArMTY5LDE1
IEBAIGNsYXNzIFBlcmZUZXN0c1J1bm5lcihvYmplY3QpOgogICAgICAgICAgICAgaWYgbm90IHRl
c3QucHJlcGFyZShzZWxmLl9vcHRpb25zLnRpbWVfb3V0X21zKToKICAgICAgICAgICAgICAgICBy
ZXR1cm4gc2VsZi5FWElUX0NPREVfQkFEX1BSRVBBUkFUSU9OCiAKLSAgICAgICAgdW5leHBlY3Rl
ZCA9IHNlbGYuX3J1bl90ZXN0c19zZXQoc29ydGVkKGxpc3QodGVzdHMpLCBrZXk9bGFtYmRhIHRl
c3Q6IHRlc3QudGVzdF9uYW1lKCkpLCBzZWxmLl9wb3J0KQotICAgICAgICBpZiBzZWxmLl9vcHRp
b25zLmdlbmVyYXRlX3Jlc3VsdHM6Ci0gICAgICAgICAgICBleGl0X2NvZGUgPSBzZWxmLl9nZW5l
cmF0ZV9hbmRfc2hvd19yZXN1bHRzKCkKKyAgICAgICAgd2hpbGUgKHNlbGYuX2N1cnJlbnRSdW4g
PCBzZWxmLl90b3RhbFJ1bnMpOgorICAgICAgICAgICAgc2VsZi5fY3VycmVudFJ1biArPSAxCisg
ICAgICAgICAgICB1bmV4cGVjdGVkID0gc2VsZi5fcnVuX3Rlc3RzX3NldChzb3J0ZWQobGlzdCh0
ZXN0cyksIGtleT1sYW1iZGEgdGVzdDogdGVzdC50ZXN0X25hbWUoKSksIHNlbGYuX3BvcnQpCisg
ICAgICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmdlbmVyYXRlX3Jlc3VsdHM6CisgICAgICAgICAg
ICAgICAgZXhpdF9jb2RlID0gc2VsZi5fZ2VuZXJhdGVfcmVzdWx0cygpCisgICAgICAgICAgICAg
ICAgaWYgZXhpdF9jb2RlOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXhpdF9jb2RlCisg
ICAgICAgIGlmIHNlbGYuX2N1cnJlbnRSdW4gPT0gc2VsZi5fdG90YWxSdW5zOgorICAgICAgICAg
ICAgZXhpdF9jb2RlID0gc2VsZi5fdXBsb2FkX2FuZF9zaG93X3Jlc3VsdHMoKQogICAgICAgICAg
ICAgaWYgZXhpdF9jb2RlOgogICAgICAgICAgICAgICAgIHJldHVybiBleGl0X2NvZGUKIApAQCAt
MTc3LDcgKzE4OSw3IEBAIGNsYXNzIFBlcmZUZXN0c1J1bm5lcihvYmplY3QpOgogICAgICAgICAg
ICAgcmV0dXJuIG91dHB1dF9qc29uX3BhdGgKICAgICAgICAgcmV0dXJuIHNlbGYuX2hvc3QuZmls
ZXN5c3RlbS5qb2luKHNlbGYuX3BvcnQucGVyZl9yZXN1bHRzX2RpcmVjdG9yeSgpLCBzZWxmLl9E
RUZBVUxUX0pTT05fRklMRU5BTUUpCiAKLSAgICBkZWYgX2dlbmVyYXRlX2FuZF9zaG93X3Jlc3Vs
dHMoc2VsZik6CisgICAgZGVmIF9nZW5lcmF0ZV9yZXN1bHRzKHNlbGYpOgogICAgICAgICBvcHRp
b25zID0gc2VsZi5fb3B0aW9ucwogICAgICAgICBvdXRwdXRfanNvbl9wYXRoID0gc2VsZi5fb3V0
cHV0X2pzb25fcGF0aCgpCiAgICAgICAgIG91dHB1dCA9IHNlbGYuX2dlbmVyYXRlX3Jlc3VsdHNf
ZGljdChzZWxmLl90aW1lc3RhbXAsIG9wdGlvbnMuZGVzY3JpcHRpb24sIG9wdGlvbnMucGxhdGZv
cm0sIG9wdGlvbnMuYnVpbGRlcl9uYW1lLCBvcHRpb25zLmJ1aWxkX251bWJlcikKQEAgLTE5NCwx
MSArMjA2LDEyIEBAIGNsYXNzIFBlcmZUZXN0c1J1bm5lcihvYmplY3QpOgogICAgICAgICByZXN1
bHRzX3BhZ2VfcGF0aCA9IHNlbGYuX2hvc3QuZmlsZXN5c3RlbS5zcGxpdGV4dChvdXRwdXRfanNv
bl9wYXRoKVswXSArICcuaHRtbCcKICAgICAgICAgc2VsZi5fZ2VuZXJhdGVfb3V0cHV0X2ZpbGVz
KG91dHB1dF9qc29uX3BhdGgsIHJlc3VsdHNfcGFnZV9wYXRoLCBvdXRwdXQpCiAKLSAgICAgICAg
aWYgb3B0aW9ucy50ZXN0X3Jlc3VsdHNfc2VydmVyOgotICAgICAgICAgICAgaWYgbm90IHNlbGYu
X3VwbG9hZF9qc29uKG9wdGlvbnMudGVzdF9yZXN1bHRzX3NlcnZlciwgb3V0cHV0X2pzb25fcGF0
aCk6CisgICAgZGVmIF91cGxvYWRfYW5kX3Nob3dfcmVzdWx0cyhzZWxmKToKKyAgICAgICAgaWYg
c2VsZi5fb3B0aW9ucy50ZXN0X3Jlc3VsdHNfc2VydmVyOgorICAgICAgICAgICAgaWYgbm90IHNl
bGYuX3VwbG9hZF9qc29uKG9wdGlvbnMudGVzdF9yZXN1bHRzX3NlcnZlciwgc2VsZi5fb3V0cHV0
X2pzb25fcGF0aCgpKToKICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5FWElUX0NPREVfRkFJ
TEVEX1VQTE9BRElORwotCi0gICAgICAgIGlmIG9wdGlvbnMuc2hvd19yZXN1bHRzOgorICAgICAg
ICBpZiBzZWxmLl9vcHRpb25zLnNob3dfcmVzdWx0czoKKyAgICAgICAgICAgIHJlc3VsdHNfcGFn
ZV9wYXRoID0gc2VsZi5faG9zdC5maWxlc3lzdGVtLnNwbGl0ZXh0KHNlbGYuX291dHB1dF9qc29u
X3BhdGgoKSlbMF0gKyAnLmh0bWwnCiAgICAgICAgICAgICBzZWxmLl9wb3J0LnNob3dfcmVzdWx0
c19odG1sX2ZpbGUocmVzdWx0c19wYWdlX3BhdGgpCiAKICAgICBkZWYgX2dlbmVyYXRlX3Jlc3Vs
dHNfZGljdChzZWxmLCB0aW1lc3RhbXAsIGRlc2NyaXB0aW9uLCBwbGF0Zm9ybSwgYnVpbGRlcl9u
YW1lLCBidWlsZF9udW1iZXIpOgpAQCAtMjA4LDYgKzIyMSwxMCBAQCBjbGFzcyBQZXJmVGVzdHNS
dW5uZXIob2JqZWN0KToKICAgICAgICAgZm9yIChuYW1lLCBwYXRoKSBpbiBzZWxmLl9wb3J0LnJl
cG9zaXRvcnlfcGF0aHMoKToKICAgICAgICAgICAgIHNjbSA9IFNDTURldGVjdG9yKHNlbGYuX2hv
c3QuZmlsZXN5c3RlbSwgc2VsZi5faG9zdC5leGVjdXRpdmUpLmRldGVjdF9zY21fc3lzdGVtKHBh
dGgpIG9yIHNlbGYuX2hvc3Quc2NtKCkKICAgICAgICAgICAgIGNvbnRlbnRzW25hbWUgKyAnLXJl
dmlzaW9uJ10gPSBzY20uc3ZuX3JldmlzaW9uKHBhdGgpCisgICAgICAgICAgICBpZiAoc2VsZi5f
b3B0aW9ucy5ydW50aXRsZSk6CisgICAgICAgICAgICAgICAgY29udGVudHNbbmFtZSArICctcnVu
dGl0bGUnXSA9IHNlbGYuX29wdGlvbnMucnVudGl0bGUKKyAgICAgICAgICAgICAgICBpZiAoc2Vs
Zi5fdG90YWxSdW5zID4gMSk6CisgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRzW25hbWUgKyAn
LXJ1bnRpdGxlJ10gKz0gIiAjJWQiICUgc2VsZi5fY3VycmVudFJ1bgogCiAgICAgICAgICMgRklY
TUU6IEFkZCAtLWJyYW5jaCBvciBhdXRvLWRldGVjdCB0aGUgYnJhbmNoIHdlJ3JlIGluCiAgICAg
ICAgIGZvciBrZXksIHZhbHVlIGluIHsndGltZXN0YW1wJzogaW50KHRpbWVzdGFtcCksICdicmFu
Y2gnOiBzZWxmLl9kZWZhdWx0X2JyYW5jaCwgJ3BsYXRmb3JtJzogcGxhdGZvcm0sCkBAIC0yOTcs
OCArMzE0LDggQEAgY2xhc3MgUGVyZlRlc3RzUnVubmVyKG9iamVjdCk6CiAgICAgICAgICAgICAg
ICAgaWYgbm90IHNlbGYuX2hvc3QudXNlci5jb25maXJtKCJSZWFkeSB0byBydW4gdGVzdD8iKToK
ICAgICAgICAgICAgICAgICAgICAgZHJpdmVyLnN0b3AoKQogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdW5leHBlY3RlZAotCi0gICAgICAgICAgICBfbG9nLmluZm8oJ1J1bm5pbmcgJXMgKCVk
IG9mICVkKScgJSAodGVzdC50ZXN0X25hbWUoKSwgZXhwZWN0ZWQgKyB1bmV4cGVjdGVkICsgMSwg
bGVuKHRlc3RzKSkpCisgICAgICAgICAgICBydW5zID0gIiBbUnVuICVkIG9mICVkXSIgJSAoc2Vs
Zi5fY3VycmVudFJ1biwgc2VsZi5fdG90YWxSdW5zKSBpZiBzZWxmLl90b3RhbFJ1bnMgPiAxIGVs
c2UgIiIKKyAgICAgICAgICAgIF9sb2cuaW5mbygnUnVubmluZyAlcyAoJWQgb2YgJWQpJXMnICUg
KHRlc3QudGVzdF9uYW1lKCksIGV4cGVjdGVkICsgdW5leHBlY3RlZCArIDEsIGxlbih0ZXN0cyks
IHJ1bnMpKQogICAgICAgICAgICAgaWYgc2VsZi5fcnVuX3NpbmdsZV90ZXN0KHRlc3QsIGRyaXZl
cik6CiAgICAgICAgICAgICAgICAgZXhwZWN0ZWQgPSBleHBlY3RlZCArIDEKICAgICAgICAgICAg
IGVsc2U6CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZyBiL1BlcmZvcm1h
bmNlVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDM2MDY4MDM5OWYwNGU1MWQzZGJkMDM2YmNjM2UzY2Y0
ZDcwMWFkYWIuLmJmYzM5NTNkZmI1NmZmZWVlYmViZTI5MzBmMjg4NjhkNTdhNWFjZDcgMTAwNjQ0
Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMTAtMjUgIE1pa2UgV2VzdCAgPG1rd3N0
QGNocm9taXVtLm9yZz4KKworICAgICAgICBydW4tcGVyZi10ZXN0cyBzaG91bGQgaGF2ZSBhIC0t
cmVwZWF0IG9wdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTAwMDMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGlyayBQcmFua2UuCisKKyAgICAg
ICAgSWYgdGhlIHRlc3QgcmVzdWx0IGhhcyBhICJydW4gdGl0bGUiLCB1c2UgaXQgaW5zdGVhZCBv
ZiB0aGUgV2ViS2l0CisgICAgICAgIHJldmlzaW9uIGluIHRoZSByZXN1bHQncyBjb2x1bW4gaGVh
ZGVyLgorCisgICAgICAgICogcmVzb3VyY2VzL3Jlc3VsdHMtdGVtcGxhdGUuaHRtbDoKKwogMjAx
Mi0xMC0yNCAgWm9sdGFuIEhvcnZhdGggIDx6b2x0YW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBS
RUdSRVNTSU9OKHIxMzE5ODIpOiBTa2lwIFNWRy9TdmdOZXN0ZWRVc2UuaHRtbCBwZXJmb3JtYW5j
ZXRlc3Qgc2luY2UgaXQgaXMgY3Jhc2hpbmcKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMv
cmVzb3VyY2VzL3Jlc3VsdHMtdGVtcGxhdGUuaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvcmVzb3Vy
Y2VzL3Jlc3VsdHMtdGVtcGxhdGUuaHRtbAppbmRleCA5ZmRiN2I5ZjZiMTdkN2RhYTJhODI1Mjdj
YmNmMjk0YTFiNDg0MDIyLi43M2Y0Yzg3M2I5NmU5ZGNiMzQ2MzA1ZjhlYjJhYWVlYmYwMmI1YmY1
IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL3Jlc291cmNlcy9yZXN1bHRzLXRlbXBsYXRl
Lmh0bWwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9yZXNvdXJjZXMvcmVzdWx0cy10ZW1wbGF0ZS5o
dG1sCkBAIC0yMDQsOCArMjA0LDExIEBAIGZ1bmN0aW9uIFRlc3RSZXN1bHQoYXNzb2NpYXRlZFRl
c3QsIHJlc3VsdCwgYXNzb2NpYXRlZFJ1bikgewogZnVuY3Rpb24gVGVzdFJ1bihlbnRyeSkgewog
ICAgIHRoaXMuZGVzY3JpcHRpb24gPSBmdW5jdGlvbiAoKSB7IHJldHVybiBlbnRyeVsnZGVzY3Jp
cHRpb24nXTsgfQogICAgIHRoaXMud2Via2l0UmV2aXNpb24gPSBmdW5jdGlvbiAoKSB7IHJldHVy
biBlbnRyeVsnd2Via2l0LXJldmlzaW9uJ107IH0KKyAgICB0aGlzLnJ1blRpdGxlID0gZnVuY3Rp
b24gKCkgeyByZXR1cm4gZW50cnlbJ3dlYmtpdC1ydW50aXRsZSddOyB9CiAgICAgdGhpcy5sYWJl
bCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgdmFyIGxhYmVsID0gJ3InICsgdGhpcy53ZWJraXRS
ZXZpc2lvbigpOworICAgICAgICBpZiAodGhpcy5ydW5UaXRsZSgpKQorICAgICAgICAgICAgbGFi
ZWwgPSB0aGlzLnJ1blRpdGxlKCk7CiAgICAgICAgIGlmICh0aGlzLmRlc2NyaXB0aW9uKCkpCiAg
ICAgICAgICAgICBsYWJlbCArPSAnICZkYXNoOyAnICsgdGhpcy5kZXNjcmlwdGlvbigpOwogICAg
ICAgICByZXR1cm4gbGFiZWw7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191921</attachid>
            <date>2013-03-06 22:38:50 -0800</date>
            <delta_ts>2013-03-07 11:58:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100030-20130306233454.patch</filename>
            <type>text/plain</type>
            <size>17792</size>
            <attacher name="Glenn Adams">glenn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0ODY2CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTQ0ZmI0MGJmMmU4MGY5ZGNjZjAyZmJiODZmMWU5YTc2
OTM4ZWU5MS4uMGQ2MWU3YTQ2MDNkODBhNDFhODBmNGE5ZDQxOGIzZjIxZGY5NTlmYiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0
IEBACisyMDEzLTAzLTA2ICBHbGVubiBBZGFtcyAgPGdsZW5uQHNreW5hdi5jb20+CisKKyAgICAg
ICAgcnVuLXBlcmYtdGVzdHMgc2hvdWxkIGhhdmUgYSAtLXJlcGVhdCBvcHRpb24KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDAzMAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCAtLXJlcGVhdCBvcHRp
b24gdG8gcnVuLXBlcmYtdGVzdHMsIHdpdGggZGVmYXVsdCB2YWx1ZSBvZiAxLCB3aGljaCBydW5z
CisgICAgICAgIHRlc3Qgc2V0IHJlcGVhdCBjb3VudCB0aW1lcyB0aGVuIHVwbG9hZHMgYW5kIHNo
b3dzIHJlc3VsdHMgYXMgYXBwcm9wcmlhdGUuCisKKyAgICAgICAgSW5jaWRlbnRhbGx5IGZpeGVk
IHR5cG86IHMvc3VjZWVkcy9zdWNjZWVkcy8uCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0c3J1bm5lci5weToKKyAgICAgICAgKFBlcmZUZXN0
c1J1bm5lci5fcGFyc2VfYXJncyk6IEFkZCByZXBlYXQgb3B0aW9uLgorICAgICAgICAoUGVyZlRl
c3RzUnVubmVyLnJ1bik6IEFkZCBvdXRlciByZXBlYXQgbG9vcC4KKyAgICAgICAgKFBlcmZUZXN0
c1J1bm5lci5fZ2VuZXJhdGVfcmVzdWx0cyk6IFNwbGl0IGZyb20gb3JpZ2luYWwgX2dlbmVyYXRl
X2FuZF9zaG93X3Jlc3VsdHMuCisgICAgICAgIChQZXJmVGVzdHNSdW5uZXIuX3VwbG9hZF9hbmRf
c2hvd19yZXN1bHRzKTogU3BsaXQgZnJvbSBvcmlnaW5hbCBfZ2VuZXJhdGVfYW5kX3Nob3dfcmVz
dWx0cy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0
ZXN0c3J1bm5lcl9pbnRlZ3JhdGlvbnRlc3QucHk6CisgICAgICAgIChNYWluVGVzdC5fdGVzdF9y
dW5fd2l0aF9qc29uX291dHB1dCk6IEFkZCByZXBlYXQgb3B0aW9uYWwgYXJndW1lbnQgZm9yIGdl
bmVyYXRpbmcgZXhwZWN0ZWQgbG9ncy4gRml4IHR5cG8uCisgICAgICAgIChNYWluVGVzdC5fdGVz
dF9ydW5fd2l0aF9qc29uX291dHB1dC5tb2NrX3VwbG9hZF9qc29uKTogRml4IHR5cG8uCisgICAg
ICAgIChNYWluVGVzdC50ZXN0X3J1bl93aXRoX2pzb25fb3V0cHV0KTogRml4IHR5cG8uCisgICAg
ICAgIChNYWluVGVzdC50ZXN0X3J1bl93aXRoX2Rlc2NyaXB0aW9uKTogRml4IHR5cG8uCisgICAg
ICAgIChNYWluVGVzdC50ZXN0X3J1bl9yZXNwZWN0c19ub19yZXN1bHRzKTogRml4IHR5cG8uCisg
ICAgICAgIChNYWluVGVzdC50ZXN0X3J1bl93aXRoX3NsYXZlX2NvbmZpZ19qc29uKTogRml4IHR5
cG8uCisgICAgICAgIChNYWluVGVzdC50ZXN0X3J1bl93aXRoX211bHRpcGxlX3JlcG9zaXRvcmll
cyk6IEZpeCB0eXBvLgorICAgICAgICAoTWFpblRlc3QudGVzdF9ydW5fd2l0aF91cGxvYWRfanNv
bik6IEZpeCB0eXBvLgorICAgICAgICAoTWFpblRlc3QudGVzdF9ydW5fd2l0aF91cGxvYWRfanNv
bl9zaG91bGRfZ2VuZXJhdGVfcGVyZl93ZWJraXRfanNvbik6IEZpeCB0eXBvLgorICAgICAgICAo
TWFpblRlc3QudGVzdF9ydW5fd2l0aF9yZXBlYXQpOiBBZGRlZCBuZXcgdGVzdCBmb3IgcmVwZWF0
IGNvdW50IHNlbWFudGljcy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNl
X3Rlc3RzL3BlcmZ0ZXN0c3J1bm5lcl91bml0dGVzdC5weToKKyAgICAgICAgKE1haW5UZXN0LnRl
c3RfcGFyc2VfYXJncyk6IEFkZCB0ZXN0IGZvciByZXBlYXQgb3B0aW9uIHBhcnNpbmcuCisKIDIw
MTMtMDMtMDUgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
W2Nocm9taXVtXSBtYWtpbmcgRHVtcFJlbmRlclRyZWVfcmVzb3VyY2VzIGEgc2VwYXJhdGUgYnVu
ZGxlIGJyZWFrcyB4Y29kZQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJm
b3JtYW5jZV90ZXN0cy9wZXJmdGVzdHNydW5uZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0c3J1bm5lci5weQppbmRleCBjNWEwNDA5YzQwMzI5
MWNjZDI2MzYyMWU2MWJkNzg0NTI1ZTNmMGViLi4wYjk3MDY4ODE5MWVlZWExNWI0NTE4MWExMzc5
OTQ4YjdhNDA2OWE0IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1h
bmNlX3Rlc3RzL3BlcmZ0ZXN0c3J1bm5lci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0c3J1bm5lci5weQpAQCAtMTI2LDYgKzEyNiw4IEBA
IGNsYXNzIFBlcmZUZXN0c1J1bm5lcihvYmplY3QpOgogICAgICAgICAgICAgb3B0cGFyc2UubWFr
ZV9vcHRpb24oIi0tYWRkaXRpb25hbC1kcnQtZmxhZyIsIGFjdGlvbj0iYXBwZW5kIiwKICAgICAg
ICAgICAgICAgICBkZWZhdWx0PVtdLCBoZWxwPSJBZGRpdGlvbmFsIGNvbW1hbmQgbGluZSBmbGFn
IHRvIHBhc3MgdG8gRHVtcFJlbmRlclRyZWUgIgogICAgICAgICAgICAgICAgICAgICAgIlNwZWNp
ZnkgbXVsdGlwbGUgdGltZXMgdG8gYWRkIG11bHRpcGxlIGZsYWdzLiIpLAorICAgICAgICAgICAg
b3B0cGFyc2UubWFrZV9vcHRpb24oIi0tcmVwZWF0IiwgZGVmYXVsdD0xLCB0eXBlPSJpbnQiLAor
ICAgICAgICAgICAgICAgIGhlbHA9IlNwZWNpZnkgbnVtYmVyIG9mIHRpbWVzIHRvIHJ1biB0ZXN0
IHNldCAoZGVmYXVsdDogMSkuIiksCiAgICAgICAgICAgICBdCiAgICAgICAgIHJldHVybiBvcHRw
YXJzZS5PcHRpb25QYXJzZXIob3B0aW9uX2xpc3Q9KHBlcmZfb3B0aW9uX2xpc3QpKS5wYXJzZV9h
cmdzKGFyZ3MpCiAKQEAgLTE3NywyNCArMTc5LDM1IEBAIGNsYXNzIFBlcmZUZXN0c1J1bm5lcihv
YmplY3QpOgogICAgICAgICAgICAgX2xvZy5lcnJvcigiQnVpbGQgbm90IHVwIHRvIGRhdGUgZm9y
ICVzIiAlIHNlbGYuX3BvcnQuX3BhdGhfdG9fZHJpdmVyKCkpCiAgICAgICAgICAgICByZXR1cm4g
c2VsZi5FWElUX0NPREVfQkFEX0JVSUxECiAKLSAgICAgICAgdGVzdHMgPSBzZWxmLl9jb2xsZWN0
X3Rlc3RzKCkKLSAgICAgICAgX2xvZy5pbmZvKCJSdW5uaW5nICVkIHRlc3RzIiAlIGxlbih0ZXN0
cykpCisgICAgICAgIHJ1bkNvdW50ID0gMAorICAgICAgICByZXBlYXQgPSBzZWxmLl9vcHRpb25z
LnJlcGVhdAorICAgICAgICB3aGlsZSAocnVuQ291bnQgPCByZXBlYXQpOgorICAgICAgICAgICAg
cnVuQ291bnQgKz0gMQogCi0gICAgICAgIGZvciB0ZXN0IGluIHRlc3RzOgotICAgICAgICAgICAg
aWYgbm90IHRlc3QucHJlcGFyZShzZWxmLl9vcHRpb25zLnRpbWVfb3V0X21zKToKLSAgICAgICAg
ICAgICAgICByZXR1cm4gc2VsZi5FWElUX0NPREVfQkFEX1BSRVBBUkFUSU9OCisgICAgICAgICAg
ICB0ZXN0cyA9IHNlbGYuX2NvbGxlY3RfdGVzdHMoKQorICAgICAgICAgICAgcnVucyA9ICcgW1J1
biAlZCBvZiAlZF0nICUgKHJ1bkNvdW50LCByZXBlYXQpIGlmIHJlcGVhdCA+IDEgZWxzZSAnJwor
ICAgICAgICAgICAgX2xvZy5pbmZvKCJSdW5uaW5nICVkIHRlc3RzJXMiICUgKGxlbih0ZXN0cyks
IHJ1bnMpKQogCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGlmIG5lZWRzX2h0dHA6Ci0gICAg
ICAgICAgICAgICAgc2VsZi5fc3RhcnRfaHR0cF9zZXJ2ZXJzKCkKLSAgICAgICAgICAgIHVuZXhw
ZWN0ZWQgPSBzZWxmLl9ydW5fdGVzdHNfc2V0KHNvcnRlZChsaXN0KHRlc3RzKSwga2V5PWxhbWJk
YSB0ZXN0OiB0ZXN0LnRlc3RfbmFtZSgpKSkKKyAgICAgICAgICAgIGZvciB0ZXN0IGluIHRlc3Rz
OgorICAgICAgICAgICAgICAgIGlmIG5vdCB0ZXN0LnByZXBhcmUoc2VsZi5fb3B0aW9ucy50aW1l
X291dF9tcyk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLkVYSVRfQ09ERV9CQURf
UFJFUEFSQVRJT04KKworICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGlmIG5lZWRz
X2h0dHA6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3N0YXJ0X2h0dHBfc2VydmVycygpCisg
ICAgICAgICAgICAgICAgdW5leHBlY3RlZCA9IHNlbGYuX3J1bl90ZXN0c19zZXQoc29ydGVkKGxp
c3QodGVzdHMpLCBrZXk9bGFtYmRhIHRlc3Q6IHRlc3QudGVzdF9uYW1lKCkpKQorCisgICAgICAg
ICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGlmIG5lZWRzX2h0dHA6CisgICAgICAgICAg
ICAgICAgICAgIHNlbGYuX3N0b3BfaHR0cF9zZXJ2ZXJzKCkKIAotICAgICAgICBmaW5hbGx5Ogot
ICAgICAgICAgICAgaWYgbmVlZHNfaHR0cDoKLSAgICAgICAgICAgICAgICBzZWxmLl9zdG9wX2h0
dHBfc2VydmVycygpCisgICAgICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmdlbmVyYXRlX3Jlc3Vs
dHMgYW5kIG5vdCBzZWxmLl9vcHRpb25zLnByb2ZpbGU6CisgICAgICAgICAgICAgICAgZXhpdF9j
b2RlID0gc2VsZi5fZ2VuZXJhdGVfcmVzdWx0cygpCisgICAgICAgICAgICAgICAgaWYgZXhpdF9j
b2RlOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXhpdF9jb2RlCiAKICAgICAgICAgaWYg
c2VsZi5fb3B0aW9ucy5nZW5lcmF0ZV9yZXN1bHRzIGFuZCBub3Qgc2VsZi5fb3B0aW9ucy5wcm9m
aWxlOgotICAgICAgICAgICAgZXhpdF9jb2RlID0gc2VsZi5fZ2VuZXJhdGVfYW5kX3Nob3dfcmVz
dWx0cygpCisgICAgICAgICAgICBleGl0X2NvZGUgPSBzZWxmLl91cGxvYWRfYW5kX3Nob3dfcmVz
dWx0cygpCiAgICAgICAgICAgICBpZiBleGl0X2NvZGU6CiAgICAgICAgICAgICAgICAgcmV0dXJu
IGV4aXRfY29kZQogCkBAIC0yMDYsNyArMjE5LDcgQEAgY2xhc3MgUGVyZlRlc3RzUnVubmVyKG9i
amVjdCk6CiAgICAgICAgICAgICByZXR1cm4gb3V0cHV0X2pzb25fcGF0aAogICAgICAgICByZXR1
cm4gc2VsZi5faG9zdC5maWxlc3lzdGVtLmpvaW4oc2VsZi5fcG9ydC5wZXJmX3Jlc3VsdHNfZGly
ZWN0b3J5KCksIHNlbGYuX0RFRkFVTFRfSlNPTl9GSUxFTkFNRSkKIAotICAgIGRlZiBfZ2VuZXJh
dGVfYW5kX3Nob3dfcmVzdWx0cyhzZWxmKToKKyAgICBkZWYgX2dlbmVyYXRlX3Jlc3VsdHMoc2Vs
Zik6CiAgICAgICAgIG9wdGlvbnMgPSBzZWxmLl9vcHRpb25zCiAgICAgICAgIG91dHB1dF9qc29u
X3BhdGggPSBzZWxmLl9vdXRwdXRfanNvbl9wYXRoKCkKICAgICAgICAgb3V0cHV0ID0gc2VsZi5f
Z2VuZXJhdGVfcmVzdWx0c19kaWN0KHNlbGYuX3RpbWVzdGFtcCwgb3B0aW9ucy5kZXNjcmlwdGlv
biwgb3B0aW9ucy5wbGF0Zm9ybSwgb3B0aW9ucy5idWlsZGVyX25hbWUsIG9wdGlvbnMuYnVpbGRf
bnVtYmVyKQpAQCAtMjIzLDYgKzIzNiwxMCBAQCBjbGFzcyBQZXJmVGVzdHNSdW5uZXIob2JqZWN0
KToKICAgICAgICAgcmVzdWx0c19wYWdlX3BhdGggPSBzZWxmLl9ob3N0LmZpbGVzeXN0ZW0uc3Bs
aXRleHQob3V0cHV0X2pzb25fcGF0aClbMF0gKyAnLmh0bWwnCiAgICAgICAgIHNlbGYuX2dlbmVy
YXRlX291dHB1dF9maWxlcyhvdXRwdXRfanNvbl9wYXRoLCByZXN1bHRzX3BhZ2VfcGF0aCwgb3V0
cHV0KQogCisgICAgZGVmIF91cGxvYWRfYW5kX3Nob3dfcmVzdWx0cyhzZWxmKToKKyAgICAgICAg
b3B0aW9ucyA9IHNlbGYuX29wdGlvbnMKKyAgICAgICAgb3V0cHV0X2pzb25fcGF0aCA9IHNlbGYu
X291dHB1dF9qc29uX3BhdGgoKQorCiAgICAgICAgIGlmIG9wdGlvbnMudGVzdF9yZXN1bHRzX3Nl
cnZlcjoKICAgICAgICAgICAgIGlmIG9wdGlvbnMudGVzdF9yZXN1bHRzX3NlcnZlciA9PSAnd2Vi
a2l0LXBlcmYuYXBwc3BvdC5jb20nOgogICAgICAgICAgICAgICAgIG9wdGlvbnMudGVzdF9yZXN1
bHRzX3NlcnZlciA9ICdwZXJmLndlYmtpdC5vcmcnCkBAIC0yMzEsNiArMjQ4LDcgQEAgY2xhc3Mg
UGVyZlRlc3RzUnVubmVyKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuRVhJ
VF9DT0RFX0ZBSUxFRF9VUExPQURJTkcKIAogICAgICAgICBpZiBvcHRpb25zLnNob3dfcmVzdWx0
czoKKyAgICAgICAgICAgIHJlc3VsdHNfcGFnZV9wYXRoID0gc2VsZi5faG9zdC5maWxlc3lzdGVt
LnNwbGl0ZXh0KG91dHB1dF9qc29uX3BhdGgpWzBdICsgJy5odG1sJwogICAgICAgICAgICAgc2Vs
Zi5fcG9ydC5zaG93X3Jlc3VsdHNfaHRtbF9maWxlKHJlc3VsdHNfcGFnZV9wYXRoKQogCiAgICAg
ZGVmIF9nZW5lcmF0ZV9yZXN1bHRzX2RpY3Qoc2VsZiwgdGltZXN0YW1wLCBkZXNjcmlwdGlvbiwg
cGxhdGZvcm0sIGJ1aWxkZXJfbmFtZSwgYnVpbGRfbnVtYmVyKToKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVyX2ludGVn
cmF0aW9udGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMv
cGVyZnRlc3RzcnVubmVyX2ludGVncmF0aW9udGVzdC5weQppbmRleCBkYTg0NDc5MGE3MDdlMmY1
NDQ0YmQ1YjYxM2EzNWM1YTY0MTIzMzJkLi5mZjJhYjQ5M2M0OTgzMmRhZTIxNWYxYjM1Y2IyZTFl
MTkxMDNiMTEzIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNl
X3Rlc3RzL3BlcmZ0ZXN0c3J1bm5lcl9pbnRlZ3JhdGlvbnRlc3QucHkKKysrIGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdHNydW5uZXJfaW50ZWdyYXRp
b250ZXN0LnB5CkBAIC0zMDUsNyArMzA1LDcgQEAgY2xhc3MgTWFpblRlc3QodW5pdHRlc3QuVGVz
dENhc2UpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcnNlcl90ZXN0c1snbWVtb3J5LXRl
c3QnXVsnbWV0cmljcyddWydKU0hlYXAnXSwgTWVtb3J5VGVzdERhdGEuanNfaGVhcF9yZXN1bHRz
KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcnNlcl90ZXN0c1snbWVtb3J5LXRlc3QnXVsn
bWV0cmljcyddWydNYWxsb2MnXSwgTWVtb3J5VGVzdERhdGEubWFsbG9jX3Jlc3VsdHMpCiAKLSAg
ICBkZWYgX3Rlc3RfcnVuX3dpdGhfanNvbl9vdXRwdXQoc2VsZiwgcnVubmVyLCBmaWxlc3lzdGVt
LCB1cGxvYWRfc3VjZWVkcz1GYWxzZSwgcmVzdWx0c19zaG93bj1UcnVlLCBleHBlY3RlZF9leGl0
X2NvZGU9MCk6CisgICAgZGVmIF90ZXN0X3J1bl93aXRoX2pzb25fb3V0cHV0KHNlbGYsIHJ1bm5l
ciwgZmlsZXN5c3RlbSwgdXBsb2FkX3N1Y2NlZWRzPUZhbHNlLCByZXN1bHRzX3Nob3duPVRydWUs
IGV4cGVjdGVkX2V4aXRfY29kZT0wLCByZXBlYXQ9MSk6CiAgICAgICAgIGZpbGVzeXN0ZW0ud3Jp
dGVfdGV4dF9maWxlKHJ1bm5lci5fYmFzZV9wYXRoICsgJy9pbnNwZWN0b3IvcGFzcy5odG1sJywg
J3NvbWUgY29udGVudCcpCiAgICAgICAgIGZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKHJ1bm5l
ci5fYmFzZV9wYXRoICsgJy9CaW5kaW5ncy9ldmVudC10YXJnZXQtd3JhcHBlci5odG1sJywgJ3Nv
bWUgY29udGVudCcpCiAKQEAgLTMxNiw4ICszMTYsOCBAQCBjbGFzcyBNYWluVGVzdCh1bml0dGVz
dC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKGhvc3RuYW1lLCBbJ3NvbWUu
aG9zdCddKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihqc29uX3BhdGgsIFsnL21vY2stY2hl
Y2tvdXQvb3V0cHV0Lmpzb24nXSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oaG9zdF9wYXRo
LCBbTm9uZSwgJy9hcGkvcmVwb3J0J10pCi0gICAgICAgICAgICB1cGxvYWRlZFswXSA9IHVwbG9h
ZF9zdWNlZWRzCi0gICAgICAgICAgICByZXR1cm4gdXBsb2FkX3N1Y2VlZHMKKyAgICAgICAgICAg
IHVwbG9hZGVkWzBdID0gdXBsb2FkX3N1Y2NlZWRzCisgICAgICAgICAgICByZXR1cm4gdXBsb2Fk
X3N1Y2NlZWRzCiAKICAgICAgICAgcnVubmVyLl91cGxvYWRfanNvbiA9IG1vY2tfdXBsb2FkX2pz
b24KICAgICAgICAgcnVubmVyLl90aW1lc3RhbXAgPSAxMjM0NTY3ODkKQEAgLTMzMCwxMiArMzMw
LDE1IEBAIGNsYXNzIE1haW5UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgIHN0
ZG91dCwgc3RkZXJyLCBsb2dzID0gb3V0cHV0X2NhcHR1cmUucmVzdG9yZV9vdXRwdXQoKQogCiAg
ICAgICAgIGlmIG5vdCBleHBlY3RlZF9leGl0X2NvZGU6Ci0gICAgICAgICAgICBleHBlY3RlZF9s
b2dzID0gJ1J1bm5pbmcgMiB0ZXN0c1xuJyArIEV2ZW50VGFyZ2V0V3JhcHBlclRlc3REYXRhLm91
dHB1dCArIEluc3BlY3RvclBhc3NUZXN0RGF0YS5vdXRwdXQKKyAgICAgICAgICAgIGV4cGVjdGVk
X2xvZ3MgPSAnJworICAgICAgICAgICAgZm9yIGkgaW4geHJhbmdlKHJlcGVhdCk6CisgICAgICAg
ICAgICAgICAgcnVucyA9ICcgW1J1biAlZCBvZiAlZF0nICUgKGkgKyAxLCByZXBlYXQpIGlmIHJl
cGVhdCA+IDEgZWxzZSAnJworICAgICAgICAgICAgICAgIGV4cGVjdGVkX2xvZ3MgKz0gJ1J1bm5p
bmcgMiB0ZXN0cyVzXG4nICUgcnVucyArIEV2ZW50VGFyZ2V0V3JhcHBlclRlc3REYXRhLm91dHB1
dCArIEluc3BlY3RvclBhc3NUZXN0RGF0YS5vdXRwdXQKICAgICAgICAgICAgIGlmIHJlc3VsdHNf
c2hvd246CiAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfbG9ncyArPSAnTU9DSzogdXNlci5vcGVu
X3VybDogZmlsZTovLy4uLlxuJwogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9u
b3JtYWxpemVfb3V0cHV0KGxvZ3MpLCBleHBlY3RlZF9sb2dzKQogCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwodXBsb2FkZWRbMF0sIHVwbG9hZF9zdWNlZWRzKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHVwbG9hZGVkWzBdLCB1cGxvYWRfc3VjY2VlZHMpCiAKICAgICAgICAgcmV0dXJuIGxv
Z3MKIApAQCAtMzQ3LDcgKzM1MCw3IEBAIGNsYXNzIE1haW5UZXN0KHVuaXR0ZXN0LlRlc3RDYXNl
KToKICAgICBkZWYgdGVzdF9ydW5fd2l0aF9qc29uX291dHB1dChzZWxmKToKICAgICAgICAgcnVu
bmVyLCBwb3J0ID0gc2VsZi5jcmVhdGVfcnVubmVyX2FuZF9zZXR1cF9yZXN1bHRzX3RlbXBsYXRl
KGFyZ3M9WyctLW91dHB1dC1qc29uLXBhdGg9L21vY2stY2hlY2tvdXQvb3V0cHV0Lmpzb24nLAog
ICAgICAgICAgICAgJy0tdGVzdC1yZXN1bHRzLXNlcnZlcj1zb21lLmhvc3QnXSkKLSAgICAgICAg
c2VsZi5fdGVzdF9ydW5fd2l0aF9qc29uX291dHB1dChydW5uZXIsIHBvcnQuaG9zdC5maWxlc3lz
dGVtLCB1cGxvYWRfc3VjZWVkcz1UcnVlKQorICAgICAgICBzZWxmLl90ZXN0X3J1bl93aXRoX2pz
b25fb3V0cHV0KHJ1bm5lciwgcG9ydC5ob3N0LmZpbGVzeXN0ZW0sIHVwbG9hZF9zdWNjZWVkcz1U
cnVlKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2xvYWRfb3V0cHV0X2pzb24ocnVu
bmVyKSwgW3sKICAgICAgICAgICAgICJidWlsZFRpbWUiOiAiMjAxMy0wMi0wOFQxNToxOTozNy40
NjAwMDAiLCAidGVzdHMiOiBzZWxmLl9ldmVudF90YXJnZXRfd3JhcHBlcl9hbmRfaW5zcGVjdG9y
X3Jlc3VsdHMsCiAgICAgICAgICAgICAicmV2aXNpb25zIjogeyJXZWJLaXQiOiB7InRpbWVzdGFt
cCI6ICIyMDEzLTAyLTAxIDA4OjQ4OjA1ICswMDAwIiwgInJldmlzaW9uIjogIjU2NzgifX19XSkK
QEAgLTM1OSw3ICszNjIsNyBAQCBjbGFzcyBNYWluVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAg
ICAgZGVmIHRlc3RfcnVuX3dpdGhfZGVzY3JpcHRpb24oc2VsZik6CiAgICAgICAgIHJ1bm5lciwg
cG9ydCA9IHNlbGYuY3JlYXRlX3J1bm5lcl9hbmRfc2V0dXBfcmVzdWx0c190ZW1wbGF0ZShhcmdz
PVsnLS1vdXRwdXQtanNvbi1wYXRoPS9tb2NrLWNoZWNrb3V0L291dHB1dC5qc29uJywKICAgICAg
ICAgICAgICctLXRlc3QtcmVzdWx0cy1zZXJ2ZXI9c29tZS5ob3N0JywgJy0tZGVzY3JpcHRpb24n
LCAnc29tZSBkZXNjcmlwdGlvbiddKQotICAgICAgICBzZWxmLl90ZXN0X3J1bl93aXRoX2pzb25f
b3V0cHV0KHJ1bm5lciwgcG9ydC5ob3N0LmZpbGVzeXN0ZW0sIHVwbG9hZF9zdWNlZWRzPVRydWUp
CisgICAgICAgIHNlbGYuX3Rlc3RfcnVuX3dpdGhfanNvbl9vdXRwdXQocnVubmVyLCBwb3J0Lmhv
c3QuZmlsZXN5c3RlbSwgdXBsb2FkX3N1Y2NlZWRzPVRydWUpCiAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoc2VsZi5fbG9hZF9vdXRwdXRfanNvbihydW5uZXIpLCBbewogICAgICAgICAgICAgImJ1
aWxkVGltZSI6ICIyMDEzLTAyLTA4VDE1OjE5OjM3LjQ2MDAwMCIsICJkZXNjcmlwdGlvbiI6ICJz
b21lIGRlc2NyaXB0aW9uIiwKICAgICAgICAgICAgICJ0ZXN0cyI6IHNlbGYuX2V2ZW50X3Rhcmdl
dF93cmFwcGVyX2FuZF9pbnNwZWN0b3JfcmVzdWx0cywKQEAgLTM3Nyw3ICszODAsNyBAQCBjbGFz
cyBNYWluVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfcnVuX3Jlc3BlY3Rz
X25vX3Jlc3VsdHMoc2VsZik6CiAgICAgICAgIHJ1bm5lciwgcG9ydCA9IHNlbGYuY3JlYXRlX3J1
bm5lcihhcmdzPVsnLS1vdXRwdXQtanNvbi1wYXRoPS9tb2NrLWNoZWNrb3V0L291dHB1dC5qc29u
JywKICAgICAgICAgICAgICctLXRlc3QtcmVzdWx0cy1zZXJ2ZXI9c29tZS5ob3N0JywgJy0tbm8t
cmVzdWx0cyddKQotICAgICAgICBzZWxmLl90ZXN0X3J1bl93aXRoX2pzb25fb3V0cHV0KHJ1bm5l
ciwgcG9ydC5ob3N0LmZpbGVzeXN0ZW0sIHVwbG9hZF9zdWNlZWRzPUZhbHNlLCByZXN1bHRzX3No
b3duPUZhbHNlKQorICAgICAgICBzZWxmLl90ZXN0X3J1bl93aXRoX2pzb25fb3V0cHV0KHJ1bm5l
ciwgcG9ydC5ob3N0LmZpbGVzeXN0ZW0sIHVwbG9hZF9zdWNjZWVkcz1GYWxzZSwgcmVzdWx0c19z
aG93bj1GYWxzZSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShwb3J0Lmhvc3QuZmlsZXN5c3Rl
bS5pc2ZpbGUoJy9tb2NrLWNoZWNrb3V0L291dHB1dC5qc29uJykpCiAKICAgICBkZWYgdGVzdF9y
dW5fZ2VuZXJhdGVzX2pzb25fYnlfZGVmYXVsdChzZWxmKToKQEAgLTQ3OSw3ICs0ODIsNyBAQCBj
bGFzcyBNYWluVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHJ1bm5lciwgcG9ydCA9
IHNlbGYuY3JlYXRlX3J1bm5lcl9hbmRfc2V0dXBfcmVzdWx0c190ZW1wbGF0ZShhcmdzPVsnLS1v
dXRwdXQtanNvbi1wYXRoPS9tb2NrLWNoZWNrb3V0L291dHB1dC5qc29uJywKICAgICAgICAgICAg
ICctLXNsYXZlLWNvbmZpZy1qc29uLXBhdGg9L21vY2stY2hlY2tvdXQvc2xhdmUtY29uZmlnLmpz
b24nLCAnLS10ZXN0LXJlc3VsdHMtc2VydmVyPXNvbWUuaG9zdCddKQogICAgICAgICBwb3J0Lmhv
c3QuZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUoJy9tb2NrLWNoZWNrb3V0L3NsYXZlLWNvbmZp
Zy5qc29uJywgJ3sia2V5IjogInZhbHVlIn0nKQotICAgICAgICBzZWxmLl90ZXN0X3J1bl93aXRo
X2pzb25fb3V0cHV0KHJ1bm5lciwgcG9ydC5ob3N0LmZpbGVzeXN0ZW0sIHVwbG9hZF9zdWNlZWRz
PVRydWUpCisgICAgICAgIHNlbGYuX3Rlc3RfcnVuX3dpdGhfanNvbl9vdXRwdXQocnVubmVyLCBw
b3J0Lmhvc3QuZmlsZXN5c3RlbSwgdXBsb2FkX3N1Y2NlZWRzPVRydWUpCiAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoc2VsZi5fbG9hZF9vdXRwdXRfanNvbihydW5uZXIpLCBbewogICAgICAgICAg
ICAgImJ1aWxkVGltZSI6ICIyMDEzLTAyLTA4VDE1OjE5OjM3LjQ2MDAwMCIsICJ0ZXN0cyI6IHNl
bGYuX2V2ZW50X3RhcmdldF93cmFwcGVyX2FuZF9pbnNwZWN0b3JfcmVzdWx0cywKICAgICAgICAg
ICAgICJyZXZpc2lvbnMiOiB7IldlYktpdCI6IHsidGltZXN0YW1wIjogIjIwMTMtMDItMDEgMDg6
NDg6MDUgKzAwMDAiLCAicmV2aXNpb24iOiAiNTY3OCJ9fSwgImJ1aWxkZXJLZXkiOiAidmFsdWUi
fV0pCkBAIC00OTgsNyArNTAxLDcgQEAgY2xhc3MgTWFpblRlc3QodW5pdHRlc3QuVGVzdENhc2Up
OgogICAgICAgICBydW5uZXIsIHBvcnQgPSBzZWxmLmNyZWF0ZV9ydW5uZXJfYW5kX3NldHVwX3Jl
c3VsdHNfdGVtcGxhdGUoYXJncz1bJy0tb3V0cHV0LWpzb24tcGF0aD0vbW9jay1jaGVja291dC9v
dXRwdXQuanNvbicsCiAgICAgICAgICAgICAnLS10ZXN0LXJlc3VsdHMtc2VydmVyPXNvbWUuaG9z
dCddKQogICAgICAgICBwb3J0LnJlcG9zaXRvcnlfcGF0aHMgPSBsYW1iZGE6IFsoJ3dlYmtpdCcs
ICcvbW9jay1jaGVja291dCcpLCAoJ3NvbWUnLCAnL21vY2stY2hlY2tvdXQvc29tZScpXQotICAg
ICAgICBzZWxmLl90ZXN0X3J1bl93aXRoX2pzb25fb3V0cHV0KHJ1bm5lciwgcG9ydC5ob3N0LmZp
bGVzeXN0ZW0sIHVwbG9hZF9zdWNlZWRzPVRydWUpCisgICAgICAgIHNlbGYuX3Rlc3RfcnVuX3dp
dGhfanNvbl9vdXRwdXQocnVubmVyLCBwb3J0Lmhvc3QuZmlsZXN5c3RlbSwgdXBsb2FkX3N1Y2Nl
ZWRzPVRydWUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fbG9hZF9vdXRwdXRfanNv
bihydW5uZXIpLCBbewogICAgICAgICAgICAgImJ1aWxkVGltZSI6ICIyMDEzLTAyLTA4VDE1OjE5
OjM3LjQ2MDAwMCIsICJ0ZXN0cyI6IHNlbGYuX2V2ZW50X3RhcmdldF93cmFwcGVyX2FuZF9pbnNw
ZWN0b3JfcmVzdWx0cywKICAgICAgICAgICAgICJyZXZpc2lvbnMiOiB7IndlYmtpdCI6IHsidGlt
ZXN0YW1wIjogIjIwMTMtMDItMDEgMDg6NDg6MDUgKzAwMDAiLCAicmV2aXNpb24iOiAiNTY3OCJ9
LApAQCAtNTA4LDEzICs1MTEsMTMgQEAgY2xhc3MgTWFpblRlc3QodW5pdHRlc3QuVGVzdENhc2Up
OgogICAgICAgICBydW5uZXIsIHBvcnQgPSBzZWxmLmNyZWF0ZV9ydW5uZXJfYW5kX3NldHVwX3Jl
c3VsdHNfdGVtcGxhdGUoYXJncz1bJy0tb3V0cHV0LWpzb24tcGF0aD0vbW9jay1jaGVja291dC9v
dXRwdXQuanNvbicsCiAgICAgICAgICAgICAnLS10ZXN0LXJlc3VsdHMtc2VydmVyJywgJ3NvbWUu
aG9zdCcsICctLXBsYXRmb3JtJywgJ3BsYXRmb3JtMScsICctLWJ1aWxkZXItbmFtZScsICdidWls
ZGVyMScsICctLWJ1aWxkLW51bWJlcicsICcxMjMnXSkKIAotICAgICAgICBzZWxmLl90ZXN0X3J1
bl93aXRoX2pzb25fb3V0cHV0KHJ1bm5lciwgcG9ydC5ob3N0LmZpbGVzeXN0ZW0sIHVwbG9hZF9z
dWNlZWRzPVRydWUpCisgICAgICAgIHNlbGYuX3Rlc3RfcnVuX3dpdGhfanNvbl9vdXRwdXQocnVu
bmVyLCBwb3J0Lmhvc3QuZmlsZXN5c3RlbSwgdXBsb2FkX3N1Y2NlZWRzPVRydWUpCiAgICAgICAg
IGdlbmVyYXRlZF9qc29uID0ganNvbi5sb2Fkcyhwb3J0Lmhvc3QuZmlsZXN5c3RlbS5maWxlc1sn
L21vY2stY2hlY2tvdXQvb3V0cHV0Lmpzb24nXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChn
ZW5lcmF0ZWRfanNvblswXVsncGxhdGZvcm0nXSwgJ3BsYXRmb3JtMScpCiAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoZ2VuZXJhdGVkX2pzb25bMF1bJ2J1aWxkZXJOYW1lJ10sICdidWlsZGVyMScp
CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2VuZXJhdGVkX2pzb25bMF1bJ2J1aWxkTnVtYmVy
J10sIDEyMykKIAotICAgICAgICBzZWxmLl90ZXN0X3J1bl93aXRoX2pzb25fb3V0cHV0KHJ1bm5l
ciwgcG9ydC5ob3N0LmZpbGVzeXN0ZW0sIHVwbG9hZF9zdWNlZWRzPUZhbHNlLCBleHBlY3RlZF9l
eGl0X2NvZGU9UGVyZlRlc3RzUnVubmVyLkVYSVRfQ09ERV9GQUlMRURfVVBMT0FESU5HKQorICAg
ICAgICBzZWxmLl90ZXN0X3J1bl93aXRoX2pzb25fb3V0cHV0KHJ1bm5lciwgcG9ydC5ob3N0LmZp
bGVzeXN0ZW0sIHVwbG9hZF9zdWNjZWVkcz1GYWxzZSwgZXhwZWN0ZWRfZXhpdF9jb2RlPVBlcmZU
ZXN0c1J1bm5lci5FWElUX0NPREVfRkFJTEVEX1VQTE9BRElORykKIAogICAgIGRlZiB0ZXN0X3J1
bl93aXRoX3VwbG9hZF9qc29uX3Nob3VsZF9nZW5lcmF0ZV9wZXJmX3dlYmtpdF9qc29uKHNlbGYp
OgogICAgICAgICBydW5uZXIsIHBvcnQgPSBzZWxmLmNyZWF0ZV9ydW5uZXJfYW5kX3NldHVwX3Jl
c3VsdHNfdGVtcGxhdGUoYXJncz1bJy0tb3V0cHV0LWpzb24tcGF0aD0vbW9jay1jaGVja291dC9v
dXRwdXQuanNvbicsCkBAIC01MjIsNyArNTI1LDcgQEAgY2xhc3MgTWFpblRlc3QodW5pdHRlc3Qu
VGVzdENhc2UpOgogICAgICAgICAgICAgJy0tc2xhdmUtY29uZmlnLWpzb24tcGF0aD0vbW9jay1j
aGVja291dC9zbGF2ZS1jb25maWcuanNvbiddKQogICAgICAgICBwb3J0Lmhvc3QuZmlsZXN5c3Rl
bS53cml0ZV90ZXh0X2ZpbGUoJy9tb2NrLWNoZWNrb3V0L3NsYXZlLWNvbmZpZy5qc29uJywgJ3si
a2V5IjogInZhbHVlMSJ9JykKIAotICAgICAgICBzZWxmLl90ZXN0X3J1bl93aXRoX2pzb25fb3V0
cHV0KHJ1bm5lciwgcG9ydC5ob3N0LmZpbGVzeXN0ZW0sIHVwbG9hZF9zdWNlZWRzPVRydWUpCisg
ICAgICAgIHNlbGYuX3Rlc3RfcnVuX3dpdGhfanNvbl9vdXRwdXQocnVubmVyLCBwb3J0Lmhvc3Qu
ZmlsZXN5c3RlbSwgdXBsb2FkX3N1Y2NlZWRzPVRydWUpCiAgICAgICAgIGdlbmVyYXRlZF9qc29u
ID0ganNvbi5sb2Fkcyhwb3J0Lmhvc3QuZmlsZXN5c3RlbS5maWxlc1snL21vY2stY2hlY2tvdXQv
b3V0cHV0Lmpzb24nXSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoZ2VuZXJh
dGVkX2pzb24sIGxpc3QpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihnZW5lcmF0ZWRf
anNvbiksIDEpCkBAIC01NDIsMyArNTQ1LDI0IEBAIGNsYXNzIE1haW5UZXN0KHVuaXR0ZXN0LlRl
c3RDYXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXRwdXRbJ3Rlc3RzJ11bJ0JpbmRp
bmdzJ11bJ3Rlc3RzJ11bJ2V2ZW50LXRhcmdldC13cmFwcGVyJ10sIHsKICAgICAgICAgICAgICd1
cmwnOiAnaHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1BlcmZvcm1hbmNlVGVz
dHMvQmluZGluZ3MvZXZlbnQtdGFyZ2V0LXdyYXBwZXIuaHRtbCcsCiAgICAgICAgICAgICAnbWV0
cmljcyc6IHsnVGltZSc6IHsnY3VycmVudCc6IFtbMTQ4Ni4wLCAxNDcxLjAsIDE1MTAuMCwgMTUw
NS4wLCAxNDc4LjAsIDE0OTAuMF1dICogNH19fSkKKworICAgIGRlZiB0ZXN0X3J1bl93aXRoX3Jl
cGVhdChzZWxmKToKKyAgICAgICAgcnVubmVyLCBwb3J0ID0gc2VsZi5jcmVhdGVfcnVubmVyX2Fu
ZF9zZXR1cF9yZXN1bHRzX3RlbXBsYXRlKGFyZ3M9WyctLW91dHB1dC1qc29uLXBhdGg9L21vY2st
Y2hlY2tvdXQvb3V0cHV0Lmpzb24nLAorICAgICAgICAgICAgJy0tdGVzdC1yZXN1bHRzLXNlcnZl
cj1zb21lLmhvc3QnLCAnLS1yZXBlYXQnLCAnNSddKQorICAgICAgICBzZWxmLl90ZXN0X3J1bl93
aXRoX2pzb25fb3V0cHV0KHJ1bm5lciwgcG9ydC5ob3N0LmZpbGVzeXN0ZW0sIHVwbG9hZF9zdWNj
ZWVkcz1UcnVlLCByZXBlYXQ9NSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9sb2Fk
X291dHB1dF9qc29uKHJ1bm5lciksIFsKKyAgICAgICAgICAgIHsiYnVpbGRUaW1lIjogIjIwMTMt
MDItMDhUMTU6MTk6MzcuNDYwMDAwIiwKKyAgICAgICAgICAgICJ0ZXN0cyI6IHNlbGYuX2V2ZW50
X3RhcmdldF93cmFwcGVyX2FuZF9pbnNwZWN0b3JfcmVzdWx0cywKKyAgICAgICAgICAgICJyZXZp
c2lvbnMiOiB7IldlYktpdCI6IHsidGltZXN0YW1wIjogIjIwMTMtMDItMDEgMDg6NDg6MDUgKzAw
MDAiLCAicmV2aXNpb24iOiAiNTY3OCJ9fX0sCisgICAgICAgICAgICB7ImJ1aWxkVGltZSI6ICIy
MDEzLTAyLTA4VDE1OjE5OjM3LjQ2MDAwMCIsCisgICAgICAgICAgICAidGVzdHMiOiBzZWxmLl9l
dmVudF90YXJnZXRfd3JhcHBlcl9hbmRfaW5zcGVjdG9yX3Jlc3VsdHMsCisgICAgICAgICAgICAi
cmV2aXNpb25zIjogeyJXZWJLaXQiOiB7InRpbWVzdGFtcCI6ICIyMDEzLTAyLTAxIDA4OjQ4OjA1
ICswMDAwIiwgInJldmlzaW9uIjogIjU2NzgifX19LAorICAgICAgICAgICAgeyJidWlsZFRpbWUi
OiAiMjAxMy0wMi0wOFQxNToxOTozNy40NjAwMDAiLAorICAgICAgICAgICAgInRlc3RzIjogc2Vs
Zi5fZXZlbnRfdGFyZ2V0X3dyYXBwZXJfYW5kX2luc3BlY3Rvcl9yZXN1bHRzLAorICAgICAgICAg
ICAgInJldmlzaW9ucyI6IHsiV2ViS2l0IjogeyJ0aW1lc3RhbXAiOiAiMjAxMy0wMi0wMSAwODo0
ODowNSArMDAwMCIsICJyZXZpc2lvbiI6ICI1Njc4In19fSwKKyAgICAgICAgICAgIHsiYnVpbGRU
aW1lIjogIjIwMTMtMDItMDhUMTU6MTk6MzcuNDYwMDAwIiwKKyAgICAgICAgICAgICJ0ZXN0cyI6
IHNlbGYuX2V2ZW50X3RhcmdldF93cmFwcGVyX2FuZF9pbnNwZWN0b3JfcmVzdWx0cywKKyAgICAg
ICAgICAgICJyZXZpc2lvbnMiOiB7IldlYktpdCI6IHsidGltZXN0YW1wIjogIjIwMTMtMDItMDEg
MDg6NDg6MDUgKzAwMDAiLCAicmV2aXNpb24iOiAiNTY3OCJ9fX0sCisgICAgICAgICAgICB7ImJ1
aWxkVGltZSI6ICIyMDEzLTAyLTA4VDE1OjE5OjM3LjQ2MDAwMCIsCisgICAgICAgICAgICAidGVz
dHMiOiBzZWxmLl9ldmVudF90YXJnZXRfd3JhcHBlcl9hbmRfaW5zcGVjdG9yX3Jlc3VsdHMsCisg
ICAgICAgICAgICAicmV2aXNpb25zIjogeyJXZWJLaXQiOiB7InRpbWVzdGFtcCI6ICIyMDEzLTAy
LTAxIDA4OjQ4OjA1ICswMDAwIiwgInJldmlzaW9uIjogIjU2NzgifX19XSkKZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVy
X3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9w
ZXJmdGVzdHNydW5uZXJfdW5pdHRlc3QucHkKaW5kZXggYTg4ZWVmNTEzMDY2MmJmNjU4ZDdhYzVj
NTQwMTAyOGM2MmY3MDcwYi4uZjlkNTU5MTlkMzZmMzFmY2M5ZjlmNTdiODNkNjBlYjQ3YWU0ZDkz
OSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9w
ZXJmdGVzdHNydW5uZXJfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9w
ZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdHNydW5uZXJfdW5pdHRlc3QucHkKQEAgLTEzNyw2ICsx
MzcsNyBAQCBjbGFzcyBNYWluVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICAg
ICAgJy0tdGVzdC1yZXN1bHRzLXNlcnZlcj1zb21laG9zdCcsCiAgICAgICAgICAgICAgICAgJy0t
YWRkaXRpb25hbC1kcnQtZmxhZz0tLWVuYWJsZS10aHJlYWRlZC1wYXJzZXInLAogICAgICAgICAg
ICAgICAgICctLWFkZGl0aW9uYWwtZHJ0LWZsYWc9LS1hd2Vzb21lc2F1Y2UnLAorICAgICAgICAg
ICAgICAgICctLXJlcGVhdD01JywKICAgICAgICAgICAgICAgICAnLS1kZWJ1ZyddKQogICAgICAg
ICBzZWxmLmFzc2VydFRydWUob3B0aW9ucy5idWlsZCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChvcHRpb25zLmJ1aWxkX2RpcmVjdG9yeSwgJ2ZvbGRlcjQyJykKQEAgLTE1MSw2ICsxNTIsNyBA
QCBjbGFzcyBNYWluVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwob3B0aW9ucy5zbGF2ZV9jb25maWdfanNvbl9wYXRoLCAnYS9zb3VyY2UuanNvbicpCiAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3B0aW9ucy50ZXN0X3Jlc3VsdHNfc2VydmVyLCAnc29t
ZWhvc3QnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wdGlvbnMuYWRkaXRpb25hbF9kcnRf
ZmxhZywgWyctLWVuYWJsZS10aHJlYWRlZC1wYXJzZXInLCAnLS1hd2Vzb21lc2F1Y2UnXSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcHRpb25zLnJlcGVhdCwgNSkKIAogICAgIGRlZiB0ZXN0
X3VwbG9hZF9qc29uKHNlbGYpOgogICAgICAgICBydW5uZXIsIHBvcnQgPSBzZWxmLmNyZWF0ZV9y
dW5uZXIoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192059</attachid>
            <date>2013-03-07 11:58:23 -0800</date>
            <delta_ts>2013-03-07 16:40:50 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-100030-20130307125427.patch</filename>
            <type>text/plain</type>
            <size>18198</size>
            <attacher name="Glenn Adams">glenn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1MTEwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMjFiMjg2NGY4YjZhMGI1MGY2Nzc2ODA0YTNiZWJmYjFi
ODk2ZDk0ZC4uOTRlZjkyODlhOWYwNWJhNjM5ZDY5MTg4NmQ4MTkzODQ0NDBkNGFhYiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1
IEBACisyMDEzLTAzLTA3ICBHbGVubiBBZGFtcyAgPGdsZW5uQHNreW5hdi5jb20+CisKKyAgICAg
ICAgcnVuLXBlcmYtdGVzdHMgc2hvdWxkIGhhdmUgYSAtLXJlcGVhdCBvcHRpb24KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDAzMAorCisgICAgICAg
IFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KKworICAgICAgICBBZGQgLS1yZXBlYXQgb3B0aW9u
IHRvIHJ1bi1wZXJmLXRlc3RzLCB3aXRoIGRlZmF1bHQgdmFsdWUgb2YgMS4gV2hlbiBncmVhdGVy
CisgICAgICAgIHRoYW4gMSwgcnVucyB0ZXN0IHNldCBzcGVjaWZpZWQgbnVtYmVyIG9mIHRpbWVz
LiBOb3RlIHRoYXQgbXVsdGlwbGUgcnVucyBhcmUKKyAgICAgICAgbm90IGFnZ3JlZ2F0ZWQgZm9y
IHN0YXRpc3RpY2FsIHB1cnBvc2VzLgorCisgICAgICAgIEluY2lkZW50YWxseSBmaXhlZCB0eXBv
OiBzL3N1Y2VlZHMvc3VjY2VlZHMvLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wZXJm
b3JtYW5jZV90ZXN0cy9wZXJmdGVzdHNydW5uZXIucHk6CisgICAgICAgIChQZXJmVGVzdHNSdW5u
ZXIuX3BhcnNlX2FyZ3MpOiBBZGQgcmVwZWF0IG9wdGlvbi4KKyAgICAgICAgKFBlcmZUZXN0c1J1
bm5lci5ydW4pOiBBZGQgb3V0ZXIgcmVwZWF0IGxvb3AuCisgICAgICAgIChQZXJmVGVzdHNSdW5u
ZXIuX2dlbmVyYXRlX3Jlc3VsdHMpOiBTcGxpdCBmcm9tIG9yaWdpbmFsIF9nZW5lcmF0ZV9hbmRf
c2hvd19yZXN1bHRzLgorICAgICAgICAoUGVyZlRlc3RzUnVubmVyLl91cGxvYWRfYW5kX3Nob3df
cmVzdWx0cyk6IFNwbGl0IGZyb20gb3JpZ2luYWwgX2dlbmVyYXRlX2FuZF9zaG93X3Jlc3VsdHMu
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdHNy
dW5uZXJfaW50ZWdyYXRpb250ZXN0LnB5OgorICAgICAgICAoTWFpblRlc3QuX3Rlc3RfcnVuX3dp
dGhfanNvbl9vdXRwdXQpOiBBZGQgcmVwZWF0IG9wdGlvbmFsIGFyZ3VtZW50IGZvciBnZW5lcmF0
aW5nIGV4cGVjdGVkIGxvZ3MuIEZpeCB0eXBvLgorICAgICAgICAoTWFpblRlc3QuX3Rlc3RfcnVu
X3dpdGhfanNvbl9vdXRwdXQubW9ja191cGxvYWRfanNvbik6IEZpeCB0eXBvLgorICAgICAgICAo
TWFpblRlc3QudGVzdF9ydW5fd2l0aF9qc29uX291dHB1dCk6IEZpeCB0eXBvLgorICAgICAgICAo
TWFpblRlc3QudGVzdF9ydW5fd2l0aF9kZXNjcmlwdGlvbik6IEZpeCB0eXBvLgorICAgICAgICAo
TWFpblRlc3QudGVzdF9ydW5fcmVzcGVjdHNfbm9fcmVzdWx0cyk6IEZpeCB0eXBvLgorICAgICAg
ICAoTWFpblRlc3QudGVzdF9ydW5fd2l0aF9zbGF2ZV9jb25maWdfanNvbik6IEZpeCB0eXBvLgor
ICAgICAgICAoTWFpblRlc3QudGVzdF9ydW5fd2l0aF9tdWx0aXBsZV9yZXBvc2l0b3JpZXMpOiBG
aXggdHlwby4KKyAgICAgICAgKE1haW5UZXN0LnRlc3RfcnVuX3dpdGhfdXBsb2FkX2pzb24pOiBG
aXggdHlwby4KKyAgICAgICAgKE1haW5UZXN0LnRlc3RfcnVuX3dpdGhfdXBsb2FkX2pzb25fc2hv
dWxkX2dlbmVyYXRlX3BlcmZfd2Via2l0X2pzb24pOiBGaXggdHlwby4KKyAgICAgICAgKE1haW5U
ZXN0LnRlc3RfcnVuX3dpdGhfcmVwZWF0KTogQWRkZWQgbmV3IHRlc3QgZm9yIHJlcGVhdCBjb3Vu
dCBzZW1hbnRpY3MuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0
cy9wZXJmdGVzdHNydW5uZXJfdW5pdHRlc3QucHk6CisgICAgICAgIChNYWluVGVzdC50ZXN0X3Bh
cnNlX2FyZ3MpOiBBZGQgdGVzdCBmb3IgcmVwZWF0IG9wdGlvbiBwYXJzaW5nLgorCiAyMDEzLTAz
LTA3ICBSb2dlciBGb25nICA8cm9nZXJfZm9uZ0BhcHBsZS5jb20+CiAKICAgICAgICAgV2luZG93
cyBkZWJ1ZyBsYXlvdXQgdGVzdHMgYXJlIGNyYXNoaW5nIGxpa2UgY3JhenkgYWdhaW4uCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0
c3J1bm5lci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVy
ZnRlc3RzcnVubmVyLnB5CmluZGV4IGM1YTA0MDljNDAzMjkxY2NkMjYzNjIxZTYxYmQ3ODQ1MjVl
M2YwZWIuLmE2NTFmYjU5YzdhMjczODAxYzUyM2ZkYjgxMTAwYzQ3NDY2OGI3N2YgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVu
bmVyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVy
ZnRlc3RzcnVubmVyLnB5CkBAIC0xMjYsNiArMTI2LDggQEAgY2xhc3MgUGVyZlRlc3RzUnVubmVy
KG9iamVjdCk6CiAgICAgICAgICAgICBvcHRwYXJzZS5tYWtlX29wdGlvbigiLS1hZGRpdGlvbmFs
LWRydC1mbGFnIiwgYWN0aW9uPSJhcHBlbmQiLAogICAgICAgICAgICAgICAgIGRlZmF1bHQ9W10s
IGhlbHA9IkFkZGl0aW9uYWwgY29tbWFuZCBsaW5lIGZsYWcgdG8gcGFzcyB0byBEdW1wUmVuZGVy
VHJlZSAiCiAgICAgICAgICAgICAgICAgICAgICAiU3BlY2lmeSBtdWx0aXBsZSB0aW1lcyB0byBh
ZGQgbXVsdGlwbGUgZmxhZ3MuIiksCisgICAgICAgICAgICBvcHRwYXJzZS5tYWtlX29wdGlvbigi
LS1yZXBlYXQiLCBkZWZhdWx0PTEsIHR5cGU9ImludCIsCisgICAgICAgICAgICAgICAgaGVscD0i
U3BlY2lmeSBudW1iZXIgb2YgdGltZXMgdG8gcnVuIHRlc3Qgc2V0IChkZWZhdWx0OiAxKS4iKSwK
ICAgICAgICAgICAgIF0KICAgICAgICAgcmV0dXJuIG9wdHBhcnNlLk9wdGlvblBhcnNlcihvcHRp
b25fbGlzdD0ocGVyZl9vcHRpb25fbGlzdCkpLnBhcnNlX2FyZ3MoYXJncykKIApAQCAtMTc3LDI0
ICsxNzksMzUgQEAgY2xhc3MgUGVyZlRlc3RzUnVubmVyKG9iamVjdCk6CiAgICAgICAgICAgICBf
bG9nLmVycm9yKCJCdWlsZCBub3QgdXAgdG8gZGF0ZSBmb3IgJXMiICUgc2VsZi5fcG9ydC5fcGF0
aF90b19kcml2ZXIoKSkKICAgICAgICAgICAgIHJldHVybiBzZWxmLkVYSVRfQ09ERV9CQURfQlVJ
TEQKIAotICAgICAgICB0ZXN0cyA9IHNlbGYuX2NvbGxlY3RfdGVzdHMoKQotICAgICAgICBfbG9n
LmluZm8oIlJ1bm5pbmcgJWQgdGVzdHMiICUgbGVuKHRlc3RzKSkKKyAgICAgICAgcnVuX2NvdW50
ID0gMAorICAgICAgICByZXBlYXQgPSBzZWxmLl9vcHRpb25zLnJlcGVhdAorICAgICAgICB3aGls
ZSAocnVuX2NvdW50IDwgcmVwZWF0KToKKyAgICAgICAgICAgIHJ1bl9jb3VudCArPSAxCiAKLSAg
ICAgICAgZm9yIHRlc3QgaW4gdGVzdHM6Ci0gICAgICAgICAgICBpZiBub3QgdGVzdC5wcmVwYXJl
KHNlbGYuX29wdGlvbnMudGltZV9vdXRfbXMpOgotICAgICAgICAgICAgICAgIHJldHVybiBzZWxm
LkVYSVRfQ09ERV9CQURfUFJFUEFSQVRJT04KKyAgICAgICAgICAgIHRlc3RzID0gc2VsZi5fY29s
bGVjdF90ZXN0cygpCisgICAgICAgICAgICBydW5zID0gJyAoUnVuICVkIG9mICVkKScgJSAocnVu
X2NvdW50LCByZXBlYXQpIGlmIHJlcGVhdCA+IDEgZWxzZSAnJworICAgICAgICAgICAgX2xvZy5p
bmZvKCJSdW5uaW5nICVkIHRlc3RzJXMiICUgKGxlbih0ZXN0cyksIHJ1bnMpKQogCi0gICAgICAg
IHRyeToKLSAgICAgICAgICAgIGlmIG5lZWRzX2h0dHA6Ci0gICAgICAgICAgICAgICAgc2VsZi5f
c3RhcnRfaHR0cF9zZXJ2ZXJzKCkKLSAgICAgICAgICAgIHVuZXhwZWN0ZWQgPSBzZWxmLl9ydW5f
dGVzdHNfc2V0KHNvcnRlZChsaXN0KHRlc3RzKSwga2V5PWxhbWJkYSB0ZXN0OiB0ZXN0LnRlc3Rf
bmFtZSgpKSkKKyAgICAgICAgICAgIGZvciB0ZXN0IGluIHRlc3RzOgorICAgICAgICAgICAgICAg
IGlmIG5vdCB0ZXN0LnByZXBhcmUoc2VsZi5fb3B0aW9ucy50aW1lX291dF9tcyk6CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBzZWxmLkVYSVRfQ09ERV9CQURfUFJFUEFSQVRJT04KKworICAg
ICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGlmIG5lZWRzX2h0dHA6CisgICAgICAgICAg
ICAgICAgICAgIHNlbGYuX3N0YXJ0X2h0dHBfc2VydmVycygpCisgICAgICAgICAgICAgICAgdW5l
eHBlY3RlZCA9IHNlbGYuX3J1bl90ZXN0c19zZXQoc29ydGVkKGxpc3QodGVzdHMpLCBrZXk9bGFt
YmRhIHRlc3Q6IHRlc3QudGVzdF9uYW1lKCkpKQorCisgICAgICAgICAgICBmaW5hbGx5OgorICAg
ICAgICAgICAgICAgIGlmIG5lZWRzX2h0dHA6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3N0
b3BfaHR0cF9zZXJ2ZXJzKCkKIAotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgaWYgbmVl
ZHNfaHR0cDoKLSAgICAgICAgICAgICAgICBzZWxmLl9zdG9wX2h0dHBfc2VydmVycygpCisgICAg
ICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmdlbmVyYXRlX3Jlc3VsdHMgYW5kIG5vdCBzZWxmLl9v
cHRpb25zLnByb2ZpbGU6CisgICAgICAgICAgICAgICAgZXhpdF9jb2RlID0gc2VsZi5fZ2VuZXJh
dGVfcmVzdWx0cygpCisgICAgICAgICAgICAgICAgaWYgZXhpdF9jb2RlOgorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZXhpdF9jb2RlCiAKICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5nZW5l
cmF0ZV9yZXN1bHRzIGFuZCBub3Qgc2VsZi5fb3B0aW9ucy5wcm9maWxlOgotICAgICAgICAgICAg
ZXhpdF9jb2RlID0gc2VsZi5fZ2VuZXJhdGVfYW5kX3Nob3dfcmVzdWx0cygpCisgICAgICAgICAg
ICBleGl0X2NvZGUgPSBzZWxmLl91cGxvYWRfYW5kX3Nob3dfcmVzdWx0cygpCiAgICAgICAgICAg
ICBpZiBleGl0X2NvZGU6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGV4aXRfY29kZQogCkBAIC0y
MDYsNyArMjE5LDEwIEBAIGNsYXNzIFBlcmZUZXN0c1J1bm5lcihvYmplY3QpOgogICAgICAgICAg
ICAgcmV0dXJuIG91dHB1dF9qc29uX3BhdGgKICAgICAgICAgcmV0dXJuIHNlbGYuX2hvc3QuZmls
ZXN5c3RlbS5qb2luKHNlbGYuX3BvcnQucGVyZl9yZXN1bHRzX2RpcmVjdG9yeSgpLCBzZWxmLl9E
RUZBVUxUX0pTT05fRklMRU5BTUUpCiAKLSAgICBkZWYgX2dlbmVyYXRlX2FuZF9zaG93X3Jlc3Vs
dHMoc2VsZik6CisgICAgZGVmIF9yZXN1bHRzX3BhZ2VfcGF0aChzZWxmKToKKyAgICAgICAgcmV0
dXJuIHNlbGYuX2hvc3QuZmlsZXN5c3RlbS5zcGxpdGV4dChzZWxmLl9vdXRwdXRfanNvbl9wYXRo
KCkpWzBdICsgJy5odG1sJworCisgICAgZGVmIF9nZW5lcmF0ZV9yZXN1bHRzKHNlbGYpOgogICAg
ICAgICBvcHRpb25zID0gc2VsZi5fb3B0aW9ucwogICAgICAgICBvdXRwdXRfanNvbl9wYXRoID0g
c2VsZi5fb3V0cHV0X2pzb25fcGF0aCgpCiAgICAgICAgIG91dHB1dCA9IHNlbGYuX2dlbmVyYXRl
X3Jlc3VsdHNfZGljdChzZWxmLl90aW1lc3RhbXAsIG9wdGlvbnMuZGVzY3JpcHRpb24sIG9wdGlv
bnMucGxhdGZvcm0sIG9wdGlvbnMuYnVpbGRlcl9uYW1lLCBvcHRpb25zLmJ1aWxkX251bWJlcikK
QEAgLTIyMCwxOCArMjM2LDIwIEBAIGNsYXNzIFBlcmZUZXN0c1J1bm5lcihvYmplY3QpOgogICAg
ICAgICBpZiBub3Qgb3V0cHV0OgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuRVhJVF9DT0RFX0JB
RF9NRVJHRQogCi0gICAgICAgIHJlc3VsdHNfcGFnZV9wYXRoID0gc2VsZi5faG9zdC5maWxlc3lz
dGVtLnNwbGl0ZXh0KG91dHB1dF9qc29uX3BhdGgpWzBdICsgJy5odG1sJwotICAgICAgICBzZWxm
Ll9nZW5lcmF0ZV9vdXRwdXRfZmlsZXMob3V0cHV0X2pzb25fcGF0aCwgcmVzdWx0c19wYWdlX3Bh
dGgsIG91dHB1dCkKKyAgICAgICAgc2VsZi5fZ2VuZXJhdGVfb3V0cHV0X2ZpbGVzKG91dHB1dF9q
c29uX3BhdGgsIHNlbGYuX3Jlc3VsdHNfcGFnZV9wYXRoKCksIG91dHB1dCkKKworICAgIGRlZiBf
dXBsb2FkX2FuZF9zaG93X3Jlc3VsdHMoc2VsZik6CisgICAgICAgIG9wdGlvbnMgPSBzZWxmLl9v
cHRpb25zCiAKICAgICAgICAgaWYgb3B0aW9ucy50ZXN0X3Jlc3VsdHNfc2VydmVyOgogICAgICAg
ICAgICAgaWYgb3B0aW9ucy50ZXN0X3Jlc3VsdHNfc2VydmVyID09ICd3ZWJraXQtcGVyZi5hcHBz
cG90LmNvbSc6CiAgICAgICAgICAgICAgICAgb3B0aW9ucy50ZXN0X3Jlc3VsdHNfc2VydmVyID0g
J3BlcmYud2Via2l0Lm9yZycKIAotICAgICAgICAgICAgaWYgbm90IHNlbGYuX3VwbG9hZF9qc29u
KG9wdGlvbnMudGVzdF9yZXN1bHRzX3NlcnZlciwgb3V0cHV0X2pzb25fcGF0aCk6CisgICAgICAg
ICAgICBpZiBub3Qgc2VsZi5fdXBsb2FkX2pzb24ob3B0aW9ucy50ZXN0X3Jlc3VsdHNfc2VydmVy
LCBzZWxmLl9vdXRwdXRfanNvbl9wYXRoKCkpOgogICAgICAgICAgICAgICAgIHJldHVybiBzZWxm
LkVYSVRfQ09ERV9GQUlMRURfVVBMT0FESU5HCiAKICAgICAgICAgaWYgb3B0aW9ucy5zaG93X3Jl
c3VsdHM6Ci0gICAgICAgICAgICBzZWxmLl9wb3J0LnNob3dfcmVzdWx0c19odG1sX2ZpbGUocmVz
dWx0c19wYWdlX3BhdGgpCisgICAgICAgICAgICBzZWxmLl9wb3J0LnNob3dfcmVzdWx0c19odG1s
X2ZpbGUoc2VsZi5fcmVzdWx0c19wYWdlX3BhdGgoKSkKIAogICAgIGRlZiBfZ2VuZXJhdGVfcmVz
dWx0c19kaWN0KHNlbGYsIHRpbWVzdGFtcCwgZGVzY3JpcHRpb24sIHBsYXRmb3JtLCBidWlsZGVy
X25hbWUsIGJ1aWxkX251bWJlcik6CiAgICAgICAgIHJldmlzaW9ucyA9IHt9CmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0c3J1bm5l
cl9pbnRlZ3JhdGlvbnRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNl
X3Rlc3RzL3BlcmZ0ZXN0c3J1bm5lcl9pbnRlZ3JhdGlvbnRlc3QucHkKaW5kZXggZGE4NDQ3OTBh
NzA3ZTJmNTQ0NGJkNWI2MTNhMzVjNWE2NDEyMzMyZC4uOGE5MGZkNTAwMzFkN2JkNjA2MDg2NTIy
YmI2NTE0NTk0NDdkNTc0MSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJm
b3JtYW5jZV90ZXN0cy9wZXJmdGVzdHNydW5uZXJfaW50ZWdyYXRpb250ZXN0LnB5CisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVyX2lu
dGVncmF0aW9udGVzdC5weQpAQCAtMzA1LDcgKzMwNSw3IEBAIGNsYXNzIE1haW5UZXN0KHVuaXR0
ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJzZXJfdGVzdHNbJ21l
bW9yeS10ZXN0J11bJ21ldHJpY3MnXVsnSlNIZWFwJ10sIE1lbW9yeVRlc3REYXRhLmpzX2hlYXBf
cmVzdWx0cykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJzZXJfdGVzdHNbJ21lbW9yeS10
ZXN0J11bJ21ldHJpY3MnXVsnTWFsbG9jJ10sIE1lbW9yeVRlc3REYXRhLm1hbGxvY19yZXN1bHRz
KQogCi0gICAgZGVmIF90ZXN0X3J1bl93aXRoX2pzb25fb3V0cHV0KHNlbGYsIHJ1bm5lciwgZmls
ZXN5c3RlbSwgdXBsb2FkX3N1Y2VlZHM9RmFsc2UsIHJlc3VsdHNfc2hvd249VHJ1ZSwgZXhwZWN0
ZWRfZXhpdF9jb2RlPTApOgorICAgIGRlZiBfdGVzdF9ydW5fd2l0aF9qc29uX291dHB1dChzZWxm
LCBydW5uZXIsIGZpbGVzeXN0ZW0sIHVwbG9hZF9zdWNjZWVkcz1GYWxzZSwgcmVzdWx0c19zaG93
bj1UcnVlLCBleHBlY3RlZF9leGl0X2NvZGU9MCwgcmVwZWF0PTEpOgogICAgICAgICBmaWxlc3lz
dGVtLndyaXRlX3RleHRfZmlsZShydW5uZXIuX2Jhc2VfcGF0aCArICcvaW5zcGVjdG9yL3Bhc3Mu
aHRtbCcsICdzb21lIGNvbnRlbnQnKQogICAgICAgICBmaWxlc3lzdGVtLndyaXRlX3RleHRfZmls
ZShydW5uZXIuX2Jhc2VfcGF0aCArICcvQmluZGluZ3MvZXZlbnQtdGFyZ2V0LXdyYXBwZXIuaHRt
bCcsICdzb21lIGNvbnRlbnQnKQogCkBAIC0zMTYsOCArMzE2LDggQEAgY2xhc3MgTWFpblRlc3Qo
dW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihob3N0bmFtZSwg
Wydzb21lLmhvc3QnXSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oanNvbl9wYXRoLCBbJy9t
b2NrLWNoZWNrb3V0L291dHB1dC5qc29uJ10pCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKGhv
c3RfcGF0aCwgW05vbmUsICcvYXBpL3JlcG9ydCddKQotICAgICAgICAgICAgdXBsb2FkZWRbMF0g
PSB1cGxvYWRfc3VjZWVkcwotICAgICAgICAgICAgcmV0dXJuIHVwbG9hZF9zdWNlZWRzCisgICAg
ICAgICAgICB1cGxvYWRlZFswXSA9IHVwbG9hZF9zdWNjZWVkcworICAgICAgICAgICAgcmV0dXJu
IHVwbG9hZF9zdWNjZWVkcwogCiAgICAgICAgIHJ1bm5lci5fdXBsb2FkX2pzb24gPSBtb2NrX3Vw
bG9hZF9qc29uCiAgICAgICAgIHJ1bm5lci5fdGltZXN0YW1wID0gMTIzNDU2Nzg5CkBAIC0zMzAs
MTIgKzMzMCwxNSBAQCBjbGFzcyBNYWluVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAg
ICAgICBzdGRvdXQsIHN0ZGVyciwgbG9ncyA9IG91dHB1dF9jYXB0dXJlLnJlc3RvcmVfb3V0cHV0
KCkKIAogICAgICAgICBpZiBub3QgZXhwZWN0ZWRfZXhpdF9jb2RlOgotICAgICAgICAgICAgZXhw
ZWN0ZWRfbG9ncyA9ICdSdW5uaW5nIDIgdGVzdHNcbicgKyBFdmVudFRhcmdldFdyYXBwZXJUZXN0
RGF0YS5vdXRwdXQgKyBJbnNwZWN0b3JQYXNzVGVzdERhdGEub3V0cHV0CisgICAgICAgICAgICBl
eHBlY3RlZF9sb2dzID0gJycKKyAgICAgICAgICAgIGZvciBpIGluIHhyYW5nZShyZXBlYXQpOgor
ICAgICAgICAgICAgICAgIHJ1bnMgPSAnIChSdW4gJWQgb2YgJWQpJyAlIChpICsgMSwgcmVwZWF0
KSBpZiByZXBlYXQgPiAxIGVsc2UgJycKKyAgICAgICAgICAgICAgICBleHBlY3RlZF9sb2dzICs9
ICdSdW5uaW5nIDIgdGVzdHMlc1xuJyAlIHJ1bnMgKyBFdmVudFRhcmdldFdyYXBwZXJUZXN0RGF0
YS5vdXRwdXQgKyBJbnNwZWN0b3JQYXNzVGVzdERhdGEub3V0cHV0CiAgICAgICAgICAgICBpZiBy
ZXN1bHRzX3Nob3duOgogICAgICAgICAgICAgICAgIGV4cGVjdGVkX2xvZ3MgKz0gJ01PQ0s6IHVz
ZXIub3Blbl91cmw6IGZpbGU6Ly8uLi5cbicKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
c2VsZi5fbm9ybWFsaXplX291dHB1dChsb2dzKSwgZXhwZWN0ZWRfbG9ncykKIAotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHVwbG9hZGVkWzBdLCB1cGxvYWRfc3VjZWVkcykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCh1cGxvYWRlZFswXSwgdXBsb2FkX3N1Y2NlZWRzKQogCiAgICAgICAgIHJl
dHVybiBsb2dzCiAKQEAgLTM0Nyw3ICszNTAsNyBAQCBjbGFzcyBNYWluVGVzdCh1bml0dGVzdC5U
ZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfcnVuX3dpdGhfanNvbl9vdXRwdXQoc2VsZik6CiAgICAg
ICAgIHJ1bm5lciwgcG9ydCA9IHNlbGYuY3JlYXRlX3J1bm5lcl9hbmRfc2V0dXBfcmVzdWx0c190
ZW1wbGF0ZShhcmdzPVsnLS1vdXRwdXQtanNvbi1wYXRoPS9tb2NrLWNoZWNrb3V0L291dHB1dC5q
c29uJywKICAgICAgICAgICAgICctLXRlc3QtcmVzdWx0cy1zZXJ2ZXI9c29tZS5ob3N0J10pCi0g
ICAgICAgIHNlbGYuX3Rlc3RfcnVuX3dpdGhfanNvbl9vdXRwdXQocnVubmVyLCBwb3J0Lmhvc3Qu
ZmlsZXN5c3RlbSwgdXBsb2FkX3N1Y2VlZHM9VHJ1ZSkKKyAgICAgICAgc2VsZi5fdGVzdF9ydW5f
d2l0aF9qc29uX291dHB1dChydW5uZXIsIHBvcnQuaG9zdC5maWxlc3lzdGVtLCB1cGxvYWRfc3Vj
Y2VlZHM9VHJ1ZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9sb2FkX291dHB1dF9q
c29uKHJ1bm5lciksIFt7CiAgICAgICAgICAgICAiYnVpbGRUaW1lIjogIjIwMTMtMDItMDhUMTU6
MTk6MzcuNDYwMDAwIiwgInRlc3RzIjogc2VsZi5fZXZlbnRfdGFyZ2V0X3dyYXBwZXJfYW5kX2lu
c3BlY3Rvcl9yZXN1bHRzLAogICAgICAgICAgICAgInJldmlzaW9ucyI6IHsiV2ViS2l0IjogeyJ0
aW1lc3RhbXAiOiAiMjAxMy0wMi0wMSAwODo0ODowNSArMDAwMCIsICJyZXZpc2lvbiI6ICI1Njc4
In19fV0pCkBAIC0zNTksNyArMzYyLDcgQEAgY2xhc3MgTWFpblRlc3QodW5pdHRlc3QuVGVzdENh
c2UpOgogICAgIGRlZiB0ZXN0X3J1bl93aXRoX2Rlc2NyaXB0aW9uKHNlbGYpOgogICAgICAgICBy
dW5uZXIsIHBvcnQgPSBzZWxmLmNyZWF0ZV9ydW5uZXJfYW5kX3NldHVwX3Jlc3VsdHNfdGVtcGxh
dGUoYXJncz1bJy0tb3V0cHV0LWpzb24tcGF0aD0vbW9jay1jaGVja291dC9vdXRwdXQuanNvbics
CiAgICAgICAgICAgICAnLS10ZXN0LXJlc3VsdHMtc2VydmVyPXNvbWUuaG9zdCcsICctLWRlc2Ny
aXB0aW9uJywgJ3NvbWUgZGVzY3JpcHRpb24nXSkKLSAgICAgICAgc2VsZi5fdGVzdF9ydW5fd2l0
aF9qc29uX291dHB1dChydW5uZXIsIHBvcnQuaG9zdC5maWxlc3lzdGVtLCB1cGxvYWRfc3VjZWVk
cz1UcnVlKQorICAgICAgICBzZWxmLl90ZXN0X3J1bl93aXRoX2pzb25fb3V0cHV0KHJ1bm5lciwg
cG9ydC5ob3N0LmZpbGVzeXN0ZW0sIHVwbG9hZF9zdWNjZWVkcz1UcnVlKQogICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHNlbGYuX2xvYWRfb3V0cHV0X2pzb24ocnVubmVyKSwgW3sKICAgICAgICAg
ICAgICJidWlsZFRpbWUiOiAiMjAxMy0wMi0wOFQxNToxOTozNy40NjAwMDAiLCAiZGVzY3JpcHRp
b24iOiAic29tZSBkZXNjcmlwdGlvbiIsCiAgICAgICAgICAgICAidGVzdHMiOiBzZWxmLl9ldmVu
dF90YXJnZXRfd3JhcHBlcl9hbmRfaW5zcGVjdG9yX3Jlc3VsdHMsCkBAIC0zNzcsNyArMzgwLDcg
QEAgY2xhc3MgTWFpblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X3J1bl9y
ZXNwZWN0c19ub19yZXN1bHRzKHNlbGYpOgogICAgICAgICBydW5uZXIsIHBvcnQgPSBzZWxmLmNy
ZWF0ZV9ydW5uZXIoYXJncz1bJy0tb3V0cHV0LWpzb24tcGF0aD0vbW9jay1jaGVja291dC9vdXRw
dXQuanNvbicsCiAgICAgICAgICAgICAnLS10ZXN0LXJlc3VsdHMtc2VydmVyPXNvbWUuaG9zdCcs
ICctLW5vLXJlc3VsdHMnXSkKLSAgICAgICAgc2VsZi5fdGVzdF9ydW5fd2l0aF9qc29uX291dHB1
dChydW5uZXIsIHBvcnQuaG9zdC5maWxlc3lzdGVtLCB1cGxvYWRfc3VjZWVkcz1GYWxzZSwgcmVz
dWx0c19zaG93bj1GYWxzZSkKKyAgICAgICAgc2VsZi5fdGVzdF9ydW5fd2l0aF9qc29uX291dHB1
dChydW5uZXIsIHBvcnQuaG9zdC5maWxlc3lzdGVtLCB1cGxvYWRfc3VjY2VlZHM9RmFsc2UsIHJl
c3VsdHNfc2hvd249RmFsc2UpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocG9ydC5ob3N0LmZp
bGVzeXN0ZW0uaXNmaWxlKCcvbW9jay1jaGVja291dC9vdXRwdXQuanNvbicpKQogCiAgICAgZGVm
IHRlc3RfcnVuX2dlbmVyYXRlc19qc29uX2J5X2RlZmF1bHQoc2VsZik6CkBAIC00NzksNyArNDgy
LDcgQEAgY2xhc3MgTWFpblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBydW5uZXIs
IHBvcnQgPSBzZWxmLmNyZWF0ZV9ydW5uZXJfYW5kX3NldHVwX3Jlc3VsdHNfdGVtcGxhdGUoYXJn
cz1bJy0tb3V0cHV0LWpzb24tcGF0aD0vbW9jay1jaGVja291dC9vdXRwdXQuanNvbicsCiAgICAg
ICAgICAgICAnLS1zbGF2ZS1jb25maWctanNvbi1wYXRoPS9tb2NrLWNoZWNrb3V0L3NsYXZlLWNv
bmZpZy5qc29uJywgJy0tdGVzdC1yZXN1bHRzLXNlcnZlcj1zb21lLmhvc3QnXSkKICAgICAgICAg
cG9ydC5ob3N0LmZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKCcvbW9jay1jaGVja291dC9zbGF2
ZS1jb25maWcuanNvbicsICd7ImtleSI6ICJ2YWx1ZSJ9JykKLSAgICAgICAgc2VsZi5fdGVzdF9y
dW5fd2l0aF9qc29uX291dHB1dChydW5uZXIsIHBvcnQuaG9zdC5maWxlc3lzdGVtLCB1cGxvYWRf
c3VjZWVkcz1UcnVlKQorICAgICAgICBzZWxmLl90ZXN0X3J1bl93aXRoX2pzb25fb3V0cHV0KHJ1
bm5lciwgcG9ydC5ob3N0LmZpbGVzeXN0ZW0sIHVwbG9hZF9zdWNjZWVkcz1UcnVlKQogICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2xvYWRfb3V0cHV0X2pzb24ocnVubmVyKSwgW3sKICAg
ICAgICAgICAgICJidWlsZFRpbWUiOiAiMjAxMy0wMi0wOFQxNToxOTozNy40NjAwMDAiLCAidGVz
dHMiOiBzZWxmLl9ldmVudF90YXJnZXRfd3JhcHBlcl9hbmRfaW5zcGVjdG9yX3Jlc3VsdHMsCiAg
ICAgICAgICAgICAicmV2aXNpb25zIjogeyJXZWJLaXQiOiB7InRpbWVzdGFtcCI6ICIyMDEzLTAy
LTAxIDA4OjQ4OjA1ICswMDAwIiwgInJldmlzaW9uIjogIjU2NzgifX0sICJidWlsZGVyS2V5Ijog
InZhbHVlIn1dKQpAQCAtNDk4LDcgKzUwMSw3IEBAIGNsYXNzIE1haW5UZXN0KHVuaXR0ZXN0LlRl
c3RDYXNlKToKICAgICAgICAgcnVubmVyLCBwb3J0ID0gc2VsZi5jcmVhdGVfcnVubmVyX2FuZF9z
ZXR1cF9yZXN1bHRzX3RlbXBsYXRlKGFyZ3M9WyctLW91dHB1dC1qc29uLXBhdGg9L21vY2stY2hl
Y2tvdXQvb3V0cHV0Lmpzb24nLAogICAgICAgICAgICAgJy0tdGVzdC1yZXN1bHRzLXNlcnZlcj1z
b21lLmhvc3QnXSkKICAgICAgICAgcG9ydC5yZXBvc2l0b3J5X3BhdGhzID0gbGFtYmRhOiBbKCd3
ZWJraXQnLCAnL21vY2stY2hlY2tvdXQnKSwgKCdzb21lJywgJy9tb2NrLWNoZWNrb3V0L3NvbWUn
KV0KLSAgICAgICAgc2VsZi5fdGVzdF9ydW5fd2l0aF9qc29uX291dHB1dChydW5uZXIsIHBvcnQu
aG9zdC5maWxlc3lzdGVtLCB1cGxvYWRfc3VjZWVkcz1UcnVlKQorICAgICAgICBzZWxmLl90ZXN0
X3J1bl93aXRoX2pzb25fb3V0cHV0KHJ1bm5lciwgcG9ydC5ob3N0LmZpbGVzeXN0ZW0sIHVwbG9h
ZF9zdWNjZWVkcz1UcnVlKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2xvYWRfb3V0
cHV0X2pzb24ocnVubmVyKSwgW3sKICAgICAgICAgICAgICJidWlsZFRpbWUiOiAiMjAxMy0wMi0w
OFQxNToxOTozNy40NjAwMDAiLCAidGVzdHMiOiBzZWxmLl9ldmVudF90YXJnZXRfd3JhcHBlcl9h
bmRfaW5zcGVjdG9yX3Jlc3VsdHMsCiAgICAgICAgICAgICAicmV2aXNpb25zIjogeyJ3ZWJraXQi
OiB7InRpbWVzdGFtcCI6ICIyMDEzLTAyLTAxIDA4OjQ4OjA1ICswMDAwIiwgInJldmlzaW9uIjog
IjU2NzgifSwKQEAgLTUwOCwxMyArNTExLDEzIEBAIGNsYXNzIE1haW5UZXN0KHVuaXR0ZXN0LlRl
c3RDYXNlKToKICAgICAgICAgcnVubmVyLCBwb3J0ID0gc2VsZi5jcmVhdGVfcnVubmVyX2FuZF9z
ZXR1cF9yZXN1bHRzX3RlbXBsYXRlKGFyZ3M9WyctLW91dHB1dC1qc29uLXBhdGg9L21vY2stY2hl
Y2tvdXQvb3V0cHV0Lmpzb24nLAogICAgICAgICAgICAgJy0tdGVzdC1yZXN1bHRzLXNlcnZlcics
ICdzb21lLmhvc3QnLCAnLS1wbGF0Zm9ybScsICdwbGF0Zm9ybTEnLCAnLS1idWlsZGVyLW5hbWUn
LCAnYnVpbGRlcjEnLCAnLS1idWlsZC1udW1iZXInLCAnMTIzJ10pCiAKLSAgICAgICAgc2VsZi5f
dGVzdF9ydW5fd2l0aF9qc29uX291dHB1dChydW5uZXIsIHBvcnQuaG9zdC5maWxlc3lzdGVtLCB1
cGxvYWRfc3VjZWVkcz1UcnVlKQorICAgICAgICBzZWxmLl90ZXN0X3J1bl93aXRoX2pzb25fb3V0
cHV0KHJ1bm5lciwgcG9ydC5ob3N0LmZpbGVzeXN0ZW0sIHVwbG9hZF9zdWNjZWVkcz1UcnVlKQog
ICAgICAgICBnZW5lcmF0ZWRfanNvbiA9IGpzb24ubG9hZHMocG9ydC5ob3N0LmZpbGVzeXN0ZW0u
ZmlsZXNbJy9tb2NrLWNoZWNrb3V0L291dHB1dC5qc29uJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoZ2VuZXJhdGVkX2pzb25bMF1bJ3BsYXRmb3JtJ10sICdwbGF0Zm9ybTEnKQogICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGdlbmVyYXRlZF9qc29uWzBdWydidWlsZGVyTmFtZSddLCAnYnVp
bGRlcjEnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdlbmVyYXRlZF9qc29uWzBdWydidWls
ZE51bWJlciddLCAxMjMpCiAKLSAgICAgICAgc2VsZi5fdGVzdF9ydW5fd2l0aF9qc29uX291dHB1
dChydW5uZXIsIHBvcnQuaG9zdC5maWxlc3lzdGVtLCB1cGxvYWRfc3VjZWVkcz1GYWxzZSwgZXhw
ZWN0ZWRfZXhpdF9jb2RlPVBlcmZUZXN0c1J1bm5lci5FWElUX0NPREVfRkFJTEVEX1VQTE9BRElO
RykKKyAgICAgICAgc2VsZi5fdGVzdF9ydW5fd2l0aF9qc29uX291dHB1dChydW5uZXIsIHBvcnQu
aG9zdC5maWxlc3lzdGVtLCB1cGxvYWRfc3VjY2VlZHM9RmFsc2UsIGV4cGVjdGVkX2V4aXRfY29k
ZT1QZXJmVGVzdHNSdW5uZXIuRVhJVF9DT0RFX0ZBSUxFRF9VUExPQURJTkcpCiAKICAgICBkZWYg
dGVzdF9ydW5fd2l0aF91cGxvYWRfanNvbl9zaG91bGRfZ2VuZXJhdGVfcGVyZl93ZWJraXRfanNv
bihzZWxmKToKICAgICAgICAgcnVubmVyLCBwb3J0ID0gc2VsZi5jcmVhdGVfcnVubmVyX2FuZF9z
ZXR1cF9yZXN1bHRzX3RlbXBsYXRlKGFyZ3M9WyctLW91dHB1dC1qc29uLXBhdGg9L21vY2stY2hl
Y2tvdXQvb3V0cHV0Lmpzb24nLApAQCAtNTIyLDcgKzUyNSw3IEBAIGNsYXNzIE1haW5UZXN0KHVu
aXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgICctLXNsYXZlLWNvbmZpZy1qc29uLXBhdGg9
L21vY2stY2hlY2tvdXQvc2xhdmUtY29uZmlnLmpzb24nXSkKICAgICAgICAgcG9ydC5ob3N0LmZp
bGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKCcvbW9jay1jaGVja291dC9zbGF2ZS1jb25maWcuanNv
bicsICd7ImtleSI6ICJ2YWx1ZTEifScpCiAKLSAgICAgICAgc2VsZi5fdGVzdF9ydW5fd2l0aF9q
c29uX291dHB1dChydW5uZXIsIHBvcnQuaG9zdC5maWxlc3lzdGVtLCB1cGxvYWRfc3VjZWVkcz1U
cnVlKQorICAgICAgICBzZWxmLl90ZXN0X3J1bl93aXRoX2pzb25fb3V0cHV0KHJ1bm5lciwgcG9y
dC5ob3N0LmZpbGVzeXN0ZW0sIHVwbG9hZF9zdWNjZWVkcz1UcnVlKQogICAgICAgICBnZW5lcmF0
ZWRfanNvbiA9IGpzb24ubG9hZHMocG9ydC5ob3N0LmZpbGVzeXN0ZW0uZmlsZXNbJy9tb2NrLWNo
ZWNrb3V0L291dHB1dC5qc29uJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNl
KGdlbmVyYXRlZF9qc29uLCBsaXN0KSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZ2Vu
ZXJhdGVkX2pzb24pLCAxKQpAQCAtNTQyLDMgKzU0NSwyNCBAQCBjbGFzcyBNYWluVGVzdCh1bml0
dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0cHV0Wyd0ZXN0cydd
WydCaW5kaW5ncyddWyd0ZXN0cyddWydldmVudC10YXJnZXQtd3JhcHBlciddLCB7CiAgICAgICAg
ICAgICAndXJsJzogJ2h0dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90cnVuay9QZXJmb3Jt
YW5jZVRlc3RzL0JpbmRpbmdzL2V2ZW50LXRhcmdldC13cmFwcGVyLmh0bWwnLAogICAgICAgICAg
ICAgJ21ldHJpY3MnOiB7J1RpbWUnOiB7J2N1cnJlbnQnOiBbWzE0ODYuMCwgMTQ3MS4wLCAxNTEw
LjAsIDE1MDUuMCwgMTQ3OC4wLCAxNDkwLjBdXSAqIDR9fX0pCisKKyAgICBkZWYgdGVzdF9ydW5f
d2l0aF9yZXBlYXQoc2VsZik6CisgICAgICAgIHJ1bm5lciwgcG9ydCA9IHNlbGYuY3JlYXRlX3J1
bm5lcl9hbmRfc2V0dXBfcmVzdWx0c190ZW1wbGF0ZShhcmdzPVsnLS1vdXRwdXQtanNvbi1wYXRo
PS9tb2NrLWNoZWNrb3V0L291dHB1dC5qc29uJywKKyAgICAgICAgICAgICctLXRlc3QtcmVzdWx0
cy1zZXJ2ZXI9c29tZS5ob3N0JywgJy0tcmVwZWF0JywgJzUnXSkKKyAgICAgICAgc2VsZi5fdGVz
dF9ydW5fd2l0aF9qc29uX291dHB1dChydW5uZXIsIHBvcnQuaG9zdC5maWxlc3lzdGVtLCB1cGxv
YWRfc3VjY2VlZHM9VHJ1ZSwgcmVwZWF0PTUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2Vs
Zi5fbG9hZF9vdXRwdXRfanNvbihydW5uZXIpLCBbCisgICAgICAgICAgICB7ImJ1aWxkVGltZSI6
ICIyMDEzLTAyLTA4VDE1OjE5OjM3LjQ2MDAwMCIsCisgICAgICAgICAgICAidGVzdHMiOiBzZWxm
Ll9ldmVudF90YXJnZXRfd3JhcHBlcl9hbmRfaW5zcGVjdG9yX3Jlc3VsdHMsCisgICAgICAgICAg
ICAicmV2aXNpb25zIjogeyJXZWJLaXQiOiB7InRpbWVzdGFtcCI6ICIyMDEzLTAyLTAxIDA4OjQ4
OjA1ICswMDAwIiwgInJldmlzaW9uIjogIjU2NzgifX19LAorICAgICAgICAgICAgeyJidWlsZFRp
bWUiOiAiMjAxMy0wMi0wOFQxNToxOTozNy40NjAwMDAiLAorICAgICAgICAgICAgInRlc3RzIjog
c2VsZi5fZXZlbnRfdGFyZ2V0X3dyYXBwZXJfYW5kX2luc3BlY3Rvcl9yZXN1bHRzLAorICAgICAg
ICAgICAgInJldmlzaW9ucyI6IHsiV2ViS2l0IjogeyJ0aW1lc3RhbXAiOiAiMjAxMy0wMi0wMSAw
ODo0ODowNSArMDAwMCIsICJyZXZpc2lvbiI6ICI1Njc4In19fSwKKyAgICAgICAgICAgIHsiYnVp
bGRUaW1lIjogIjIwMTMtMDItMDhUMTU6MTk6MzcuNDYwMDAwIiwKKyAgICAgICAgICAgICJ0ZXN0
cyI6IHNlbGYuX2V2ZW50X3RhcmdldF93cmFwcGVyX2FuZF9pbnNwZWN0b3JfcmVzdWx0cywKKyAg
ICAgICAgICAgICJyZXZpc2lvbnMiOiB7IldlYktpdCI6IHsidGltZXN0YW1wIjogIjIwMTMtMDIt
MDEgMDg6NDg6MDUgKzAwMDAiLCAicmV2aXNpb24iOiAiNTY3OCJ9fX0sCisgICAgICAgICAgICB7
ImJ1aWxkVGltZSI6ICIyMDEzLTAyLTA4VDE1OjE5OjM3LjQ2MDAwMCIsCisgICAgICAgICAgICAi
dGVzdHMiOiBzZWxmLl9ldmVudF90YXJnZXRfd3JhcHBlcl9hbmRfaW5zcGVjdG9yX3Jlc3VsdHMs
CisgICAgICAgICAgICAicmV2aXNpb25zIjogeyJXZWJLaXQiOiB7InRpbWVzdGFtcCI6ICIyMDEz
LTAyLTAxIDA4OjQ4OjA1ICswMDAwIiwgInJldmlzaW9uIjogIjU2NzgifX19LAorICAgICAgICAg
ICAgeyJidWlsZFRpbWUiOiAiMjAxMy0wMi0wOFQxNToxOTozNy40NjAwMDAiLAorICAgICAgICAg
ICAgInRlc3RzIjogc2VsZi5fZXZlbnRfdGFyZ2V0X3dyYXBwZXJfYW5kX2luc3BlY3Rvcl9yZXN1
bHRzLAorICAgICAgICAgICAgInJldmlzaW9ucyI6IHsiV2ViS2l0IjogeyJ0aW1lc3RhbXAiOiAi
MjAxMy0wMi0wMSAwODo0ODowNSArMDAwMCIsICJyZXZpc2lvbiI6ICI1Njc4In19fV0pCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0
c3J1bm5lcl91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2Vf
dGVzdHMvcGVyZnRlc3RzcnVubmVyX3VuaXR0ZXN0LnB5CmluZGV4IGE4OGVlZjUxMzA2NjJiZjY1
OGQ3YWM1YzU0MDEwMjhjNjJmNzA3MGIuLmY5ZDU1OTE5ZDM2ZjMxZmNjOWY5ZjU3YjgzZDYwZWI0
N2FlNGQ5MzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2Vf
dGVzdHMvcGVyZnRlc3RzcnVubmVyX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVyX3VuaXR0ZXN0LnB5CkBAIC0x
MzcsNiArMTM3LDcgQEAgY2xhc3MgTWFpblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAg
ICAgICAgICAgICctLXRlc3QtcmVzdWx0cy1zZXJ2ZXI9c29tZWhvc3QnLAogICAgICAgICAgICAg
ICAgICctLWFkZGl0aW9uYWwtZHJ0LWZsYWc9LS1lbmFibGUtdGhyZWFkZWQtcGFyc2VyJywKICAg
ICAgICAgICAgICAgICAnLS1hZGRpdGlvbmFsLWRydC1mbGFnPS0tYXdlc29tZXNhdWNlJywKKyAg
ICAgICAgICAgICAgICAnLS1yZXBlYXQ9NScsCiAgICAgICAgICAgICAgICAgJy0tZGVidWcnXSkK
ICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wdGlvbnMuYnVpbGQpCiAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwob3B0aW9ucy5idWlsZF9kaXJlY3RvcnksICdmb2xkZXI0MicpCkBAIC0xNTEsNiAr
MTUyLDcgQEAgY2xhc3MgTWFpblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKG9wdGlvbnMuc2xhdmVfY29uZmlnX2pzb25fcGF0aCwgJ2Evc291cmNlLmpz
b24nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wdGlvbnMudGVzdF9yZXN1bHRzX3NlcnZl
ciwgJ3NvbWVob3N0JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcHRpb25zLmFkZGl0aW9u
YWxfZHJ0X2ZsYWcsIFsnLS1lbmFibGUtdGhyZWFkZWQtcGFyc2VyJywgJy0tYXdlc29tZXNhdWNl
J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3B0aW9ucy5yZXBlYXQsIDUpCiAKICAgICBk
ZWYgdGVzdF91cGxvYWRfanNvbihzZWxmKToKICAgICAgICAgcnVubmVyLCBwb3J0ID0gc2VsZi5j
cmVhdGVfcnVubmVyKCkK
</data>

          </attachment>
      

    </bug>

</bugzilla>