<?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>112898</bug_id>
          
          <creation_ts>2013-03-21 04:23:54 -0700</creation_ts>
          <short_desc>NRWT: Enable pixel tests when retrying tests</short_desc>
          <delta_ts>2013-03-25 11:09:35 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>112995</dependson>
    
    <dependson>113223</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>abarth</cc>
    
    <cc>dpranke</cc>
    
    <cc>eric</cc>
    
    <cc>ossy</cc>
    
    <cc>robert</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>860204</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-03-21 04:23:54 -0700</bug_when>
    <thetext>It&apos;ll be helpful to regenerate actual results when we&apos;re retrying tests so that bots on build.webkit.org and EWS bots can generate actual results.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>860207</commentid>
    <comment_count>1</comment_count>
      <attachid>194223</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-03-21 04:24:47 -0700</bug_when>
    <thetext>Created attachment 194223
Work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861001</commentid>
    <comment_count>2</comment_count>
      <attachid>194417</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2013-03-21 19:30:38 -0700</bug_when>
    <thetext>Created attachment 194417
one-line patch to force pixel tests on on the retry

So, forcing pixel tests on on the retry should be a one-line change (as demonstrated in the patch I&apos;ve just attached).

I haven&apos;t decided how I feel about this yet, because it&apos;s kind of a hack to change the options object, but it may be an acceptable hack.

There&apos;s at least a couple of other loose ends ...

as you noted on #webkit, it looks like the files aren&apos;t being written into retries/ on the retry. I&apos;m not yet sure how that could be true, since I thought I had tests for this and at first glance the code looks right.

Also, printing out the unexpected results is a little strange; you get [ Failure Pass Failure ].

We might need to make results.html and/or results.json aware of which links (in which directories) to use as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861153</commentid>
    <comment_count>3</comment_count>
      <attachid>194456</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-03-21 23:44:58 -0700</bug_when>
    <thetext>Created attachment 194456
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861815</commentid>
    <comment_count>4</comment_count>
      <attachid>194456</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2013-03-22 13:46:35 -0700</bug_when>
    <thetext>Comment on attachment 194456
Patch

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

Looks basically pretty good ... a few nits.

&gt; Tools/Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:660
&gt; +        res, err, _ = logging_run([&apos;--no-pixel&apos;, &apos;failures/unexpected/text-image-checksum.html&apos;], tests_included=True, host=host)

nit: I&apos;d prefer --no-pixel-tests for this. --no-pixel is kinda of a deprecated hack.

&gt; Tools/Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:-837
&gt; -        self.assertEqual(len(stats[&apos;http&apos;][&apos;tests&apos;][&apos;passes&apos;][&apos;image.html&apos;][&apos;results&apos;]), 5)

you deleted this assert when you moved this to a free function. Do you need to add it back in to test_reftest_with_two_notrefs()?

&gt; Tools/Scripts/webkitpy/layout_tests/controllers/manager.py:202
&gt; +                forced_pixel_tests_in_retry = self._force_pixel_tests_if_needed()

Nit: I&apos;d probably call this &quot;enable&quot; rather than &quot;force&quot; ... it just sounds nicer :).

&gt; Tools/Scripts/webkitpy/layout_tests/controllers/manager.py:211
&gt; +                    self._options.pixel_tests = False

Is this needed?

&gt; Tools/Scripts/webkitpy/layout_tests/controllers/manager.py:271
&gt; +        self._port.start_helper()

I waffled a bit on whether restarting the helper should be part of this routine or part of the caller, but I&apos;m not sure if there&apos;s a clear win one way or another.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861817</commentid>
    <comment_count>5</comment_count>
      <attachid>194456</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-03-22 13:49:17 -0700</bug_when>
    <thetext>Comment on attachment 194456
Patch

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

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:-837
&gt;&gt; -        self.assertEqual(len(stats[&apos;http&apos;][&apos;tests&apos;][&apos;passes&apos;][&apos;image.html&apos;][&apos;results&apos;]), 5)
&gt; 
&gt; you deleted this assert when you moved this to a free function. Do you need to add it back in to test_reftest_with_two_notrefs()?

Notice that these two statements appear after return statement so this was a dead code before the move.
Also, this assertion refers to some file in http/tests/passes, which isn&apos;t ran in test_reftest_with_two_notrefs.

I&apos;m inclined to delete this dead code unless you have a suggestion as to how to fix it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861818</commentid>
    <comment_count>6</comment_count>
      <attachid>194456</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2013-03-22 13:50:46 -0700</bug_when>
    <thetext>Comment on attachment 194456
Patch

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

&gt;&gt;&gt; Tools/Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:-837
&gt;&gt;&gt; -        self.assertEqual(len(stats[&apos;http&apos;][&apos;tests&apos;][&apos;passes&apos;][&apos;image.html&apos;][&apos;results&apos;]), 5)
&gt;&gt; 
&gt;&gt; you deleted this assert when you moved this to a free function. Do you need to add it back in to test_reftest_with_two_notrefs()?
&gt; 
&gt; Notice that these two statements appear after return statement so this was a dead code before the move.
&gt; Also, this assertion refers to some file in http/tests/passes, which isn&apos;t ran in test_reftest_with_two_notrefs.
&gt; 
&gt; I&apos;m inclined to delete this dead code unless you have a suggestion as to how to fix it.

Ah, you&apos;re right. Hm. ... yeah, deleting is fine, I guess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861825</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-03-22 13:58:58 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 194456 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=194456&amp;action=review
&gt;
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/controllers/manager.py:211
&gt; &gt; +                    self._options.pixel_tests = False
&gt; 
&gt; Is this needed?

Yes. Otherwise, results.html is going to think we&apos;ve ran pixel tests as pixel_tests_enabled is set true in test_run_results.summarize_results.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861833</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-03-22 14:07:54 -0700</bug_when>
    <thetext>Committed r146657: &lt;http://trac.webkit.org/changeset/146657&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862910</commentid>
    <comment_count>9</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2013-03-25 10:59:21 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Committed r146657: &lt;http://trac.webkit.org/changeset/146657&gt;

It caused a regression: https://bugs.webkit.org/show_bug.cgi?id=113223 
Could you check it, please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862922</commentid>
    <comment_count>10</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-03-25 11:09:35 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; Committed r146657: &lt;http://trac.webkit.org/changeset/146657&gt;
&gt; 
&gt; It caused a regression: https://bugs.webkit.org/show_bug.cgi?id=113223 
&gt; Could you check it, please?

Yup, I just realized it. Sorry about that. Will try to check in a fix today.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194223</attachid>
            <date>2013-03-21 04:24:47 -0700</date>
            <delta_ts>2013-03-21 23:44:50 -0700</delta_ts>
            <desc>Work in progress</desc>
            <filename>wip11289</filename>
            <type>text/plain</type>
            <size>22066</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X3J1
bl9yZXN1bHRzX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X3J1bl9yZXN1bHRzX3VuaXR0ZXN0LnB5CShyZXZp
c2lvbiAxNDY0NDkpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2Rl
bHMvdGVzdF9ydW5fcmVzdWx0c191bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtODQsNyAr
ODQsNyBAQAogICAgIGVsc2U6CiAgICAgICAgIHJldHJ5X3Jlc3VsdHMgPSBOb25lCiAKLSAgICBy
ZXR1cm4gdGVzdF9ydW5fcmVzdWx0cy5zdW1tYXJpemVfcmVzdWx0cyhwb3J0LCBpbml0aWFsX3Jl
c3VsdHMuZXhwZWN0YXRpb25zLCBpbml0aWFsX3Jlc3VsdHMsIHJldHJ5X3Jlc3VsdHMpCisgICAg
cmV0dXJuIHRlc3RfcnVuX3Jlc3VsdHMuc3VtbWFyaXplX3Jlc3VsdHMocG9ydCwgaW5pdGlhbF9y
ZXN1bHRzLmV4cGVjdGF0aW9ucywgaW5pdGlhbF9yZXN1bHRzLCByZXRyeV9yZXN1bHRzLCBmb3Jj
ZWRfcGl4ZWxfdGVzdHNfaW5fcmV0cnk9RmFsc2UpCiAKIAogY2xhc3MgSW50ZXJwcmV0VGVzdEZh
aWx1cmVzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9ydW5fcmVzdWx0cy5weQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9ydW5fcmVz
dWx0cy5weQkocmV2aXNpb24gMTQ2NDQ5KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvbW9kZWxzL3Rlc3RfcnVuX3Jlc3VsdHMucHkJKHdvcmtpbmcgY29weSkKQEAgLTEx
Niw3ICsxMTYsNyBAQAogICAgIHJldHVybiB0ZXN0X2RpY3QKIAogCi1kZWYgc3VtbWFyaXplX3Jl
c3VsdHMocG9ydF9vYmosIGV4cGVjdGF0aW9ucywgaW5pdGlhbF9yZXN1bHRzLCByZXRyeV9yZXN1
bHRzKToKK2RlZiBzdW1tYXJpemVfcmVzdWx0cyhwb3J0X29iaiwgZXhwZWN0YXRpb25zLCBpbml0
aWFsX3Jlc3VsdHMsIHJldHJ5X3Jlc3VsdHMsIGZvcmNlZF9waXhlbF90ZXN0c19pbl9yZXRyeSk6
CiAgICAgIiIiUmV0dXJucyBhIGRpY3Rpb25hcnkgY29udGFpbmluZyBhIHN1bW1hcnkgb2YgdGhl
IHRlc3QgcnVucywgd2l0aCB0aGUgZm9sbG93aW5nIGZpZWxkczoKICAgICAgICAgJ3ZlcnNpb24n
OiBhIHZlcnNpb24gaW5kaWNhdG9yCiAgICAgICAgICdmaXhhYmxlJzogVGhlIG51bWJlciBvZiBm
aXhhYmxlIHRlc3RzIChOT1cgLSBQQVNTKQpAQCAtMTg3LDggKzE4NywxMSBAQAogICAgICAgICAg
ICAgZWxpZiByZXRyeV9yZXN1bHRzOgogICAgICAgICAgICAgICAgIHJldHJ5X3Jlc3VsdF90eXBl
ID0gcmV0cnlfcmVzdWx0cy51bmV4cGVjdGVkX3Jlc3VsdHNfYnlfbmFtZVt0ZXN0X25hbWVdLnR5
cGUKICAgICAgICAgICAgICAgICBpZiByZXN1bHRfdHlwZSAhPSByZXRyeV9yZXN1bHRfdHlwZToK
LSAgICAgICAgICAgICAgICAgICAgYWN0dWFsLmFwcGVuZChrZXl3b3Jkc1tyZXRyeV9yZXN1bHRf
dHlwZV0pCi0gICAgICAgICAgICAgICAgICAgIG51bV9mbGFreSArPSAxCisgICAgICAgICAgICAg
ICAgICAgIGlmIGZvcmNlZF9waXhlbF90ZXN0c19pbl9yZXRyeSBhbmQgcmVzdWx0X3R5cGUgPT0g
dGVzdF9leHBlY3RhdGlvbnMuVEVYVCBhbmQgcmV0cnlfcmVzdWx0X3R5cGUgPT0gdGVzdF9leHBl
Y3RhdGlvbnMuSU1BR0VfUExVU19URVhUOgorICAgICAgICAgICAgICAgICAgICAgICAgbnVtX3Jl
Z3Jlc3Npb25zICs9IDEKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGFjdHVhbC5hcHBlbmQoa2V5d29yZHNbcmV0cnlfcmVzdWx0X3R5cGVdKQorICAg
ICAgICAgICAgICAgICAgICAgICAgbnVtX2ZsYWt5ICs9IDEKICAgICAgICAgICAgICAgICBlbHNl
OgogICAgICAgICAgICAgICAgICAgICBudW1fcmVncmVzc2lvbnMgKz0gMQogICAgICAgICAgICAg
ZWxzZToKQEAgLTIzMCw3ICsyMzMsNiBAQAogICAgIHJlc3VsdHNbJ2xheW91dF90ZXN0c19kaXIn
XSA9IHBvcnRfb2JqLmxheW91dF90ZXN0c19kaXIoKQogICAgIHJlc3VsdHNbJ2hhc193ZGlmZidd
ID0gcG9ydF9vYmoud2RpZmZfYXZhaWxhYmxlKCkKICAgICByZXN1bHRzWydoYXNfcHJldHR5X3Bh
dGNoJ10gPSBwb3J0X29iai5wcmV0dHlfcGF0Y2hfYXZhaWxhYmxlKCkKLSAgICByZXN1bHRzWydw
aXhlbF90ZXN0c19lbmFibGVkJ10gPSBwb3J0X29iai5nZXRfb3B0aW9uKCdwaXhlbF90ZXN0cycp
CiAKICAgICB0cnk6CiAgICAgICAgICMgV2Ugb25seSB1c2UgdGhlIHN2biByZXZpc2lvbiBmb3Ig
dXNpbmcgdHJhYyBsaW5rcyBpbiB0aGUgcmVzdWx0cy5odG1sIGZpbGUsCkluZGV4OiBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3BvcnRfdGVzdGNhc2UucHkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9wb3J0X3Rl
c3RjYXNlLnB5CShyZXZpc2lvbiAxNDY0NDkpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L3BvcnRfdGVzdGNhc2UucHkJKHdvcmtpbmcgY29weSkKQEAgLTEwNywx
MSArMTA3LDExIEBACiAKICAgICBkZWYgdGVzdF9kcml2ZXJfY21kX2xpbmUoc2VsZik6CiAgICAg
ICAgIHBvcnQgPSBzZWxmLm1ha2VfcG9ydCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsZW4o
cG9ydC5kcml2ZXJfY21kX2xpbmUoKSkpCiAKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxlbihw
b3J0LmRyaXZlcl9jbWRfbGluZShGYWxzZSkpKQogICAgICAgICBvcHRpb25zID0gTW9ja09wdGlv
bnMoYWRkaXRpb25hbF9kcnRfZmxhZz1bJy0tZm9vPWJhcicsICctLWZvbz1iYXonXSkKICAgICAg
ICAgcG9ydCA9IHNlbGYubWFrZV9wb3J0KG9wdGlvbnM9b3B0aW9ucykKLSAgICAgICAgY21kX2xp
bmUgPSBwb3J0LmRyaXZlcl9jbWRfbGluZSgpCisgICAgICAgIGNtZF9saW5lID0gcG9ydC5kcml2
ZXJfY21kX2xpbmUoRmFsc2UpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnLS1mb289YmFyJyBp
biBjbWRfbGluZSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCctLWZvbz1iYXonIGluIGNtZF9s
aW5lKQogCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2No
cm9taXVtX2FuZHJvaWQucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9hbmRyb2lkLnB5CShyZXZpc2lvbiAxNDY0NDkpCisr
KyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2FuZHJv
aWQucHkJKHdvcmtpbmcgY29weSkKQEAgLTI1OCwxNiArMjU4LDE2IEBACiAgICAgICAgIGFkZGl0
aW9uYWxfZGlyc1tMQVlPVVRfVEVTVF9QQVRIX1BSRUZJWF0gPSBzZWxmLmxheW91dF90ZXN0c19k
aXIoKQogICAgICAgICBzdXBlcihDaHJvbWl1bUFuZHJvaWRQb3J0LCBzZWxmKS5zdGFydF9odHRw
X3NlcnZlcihhZGRpdGlvbmFsX2RpcnMsIG51bWJlcl9vZl9zZXJ2ZXJzKQogCi0gICAgZGVmIGNy
ZWF0ZV9kcml2ZXIoc2VsZiwgd29ya2VyX251bWJlciwgbm9fdGltZW91dD1GYWxzZSk6CisgICAg
ZGVmIGNyZWF0ZV9kcml2ZXIoc2VsZiwgd29ya2VyX251bWJlciwgbm9fdGltZW91dD1GYWxzZSwg
cGl4ZWxfdGVzdHM9RmFsc2UpOgogICAgICAgICAjIFdlIGRvbid0IHdhbnQgdGhlIGRlZmF1bHQg
RHJpdmVyUHJveHkgd2hpY2ggaXMgbm90IGNvbXBhdGlibGUgd2l0aCBvdXIgZHJpdmVyLgogICAg
ICAgICAjIFNlZSBjb21tZW50cyBpbiBDaHJvbWl1bUFuZHJvaWREcml2ZXIuc3RhcnQoKS4KLSAg
ICAgICAgcmV0dXJuIENocm9taXVtQW5kcm9pZERyaXZlcihzZWxmLCB3b3JrZXJfbnVtYmVyLCBw
aXhlbF90ZXN0cz1zZWxmLmdldF9vcHRpb24oJ3BpeGVsX3Rlc3RzJyksCisgICAgICAgIHJldHVy
biBDaHJvbWl1bUFuZHJvaWREcml2ZXIoc2VsZiwgd29ya2VyX251bWJlciwgcGl4ZWxfdGVzdHM9
cGl4ZWxfdGVzdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBGb3Jj
ZSBubyB0aW1lb3V0IHRvIGF2b2lkIER1bXBSZW5kZXJUcmVlIHRpbWVvdXRzIGJlZm9yZSBOUldU
LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vX3RpbWVvdXQ9VHJ1ZSkK
IAotICAgIGRlZiBkcml2ZXJfY21kX2xpbmUoc2VsZik6CisgICAgZGVmIGRyaXZlcl9jbWRfbGlu
ZShzZWxmLCBwaXhlbF90ZXN0cyk6CiAgICAgICAgICMgT3ZlcnJpZGUgdG8gcmV0dXJuIHRoZSBh
Y3R1YWwgRHVtcFJlbmRlclRyZWUgY29tbWFuZCBsaW5lLgotICAgICAgICByZXR1cm4gc2VsZi5j
cmVhdGVfZHJpdmVyKDApLl9kcnRfY21kX2xpbmUoc2VsZi5nZXRfb3B0aW9uKCdwaXhlbF90ZXN0
cycpLCBbXSkKKyAgICAgICAgcmV0dXJuIHNlbGYuY3JlYXRlX2RyaXZlcigwLCBwaXhlbF90ZXN0
cykuX2RydF9jbWRfbGluZShwaXhlbF90ZXN0cywgW10pCiAKICAgICBkZWYgcGF0aF90b19hZGIo
c2VsZik6CiAgICAgICAgIGlmIENocm9taXVtQW5kcm9pZFBvcnQuX2FkYl9wYXRoOgpJbmRleDog
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tb2NrX2RydF91bml0dGVz
dC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L21vY2tfZHJ0X3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAxNDY0NDkpCisrKyBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L21vY2tfZHJ0X3VuaXR0ZXN0LnB5CSh3b3Jr
aW5nIGNvcHkpCkBAIC05NSw3ICs5NSw3IEBACiAKIGNsYXNzIE1vY2tEUlRUZXN0KHVuaXR0ZXN0
LlRlc3RDYXNlKToKICAgICBkZWYgaW5wdXRfbGluZShzZWxmLCBwb3J0LCB0ZXN0X25hbWUsIGNo
ZWNrc3VtPU5vbmUpOgotICAgICAgICB1cmwgPSBwb3J0LmNyZWF0ZV9kcml2ZXIoMCkudGVzdF90
b191cmkodGVzdF9uYW1lKQorICAgICAgICB1cmwgPSBwb3J0LmNyZWF0ZV9kcml2ZXIoMCwgRmFs
c2UpLnRlc3RfdG9fdXJpKHRlc3RfbmFtZSkKICAgICAgICAgaWYgdXJsLnN0YXJ0c3dpdGgoJ2Zp
bGU6Ly8nKToKICAgICAgICAgICAgIHVybCA9IHVybFtsZW4oJ2ZpbGU6Ly8nKTpdCiAKQEAgLTIy
NywxMyArMjI3LDEzIEBACiAgICAgICAgIHJldHVybiBtb2NrX2RydC5Nb2NrVGVzdFNoZWxsKG9w
dGlvbnMsIGFyZ3MsIGhvc3QsIHN0ZGluLCBzdGRvdXQsIHN0ZGVycikKIAogICAgIGRlZiBpbnB1
dF9saW5lKHNlbGYsIHBvcnQsIHRlc3RfbmFtZSwgY2hlY2tzdW09Tm9uZSk6Ci0gICAgICAgIHVy
bCA9IHBvcnQuY3JlYXRlX2RyaXZlcigwKS50ZXN0X3RvX3VyaSh0ZXN0X25hbWUpCisgICAgICAg
IHVybCA9IHBvcnQuY3JlYXRlX2RyaXZlcigwLCBGYWxzZSkudGVzdF90b191cmkodGVzdF9uYW1l
KQogICAgICAgICBpZiBjaGVja3N1bToKICAgICAgICAgICAgIHJldHVybiB1cmwgKyAnIDYwMDAg
JyArIGNoZWNrc3VtICsgJ1xuJwogICAgICAgICByZXR1cm4gdXJsICsgJyA2MDAwXG4nCiAKICAg
ICBkZWYgZXhwZWN0ZWRfb3V0cHV0KHNlbGYsIHBvcnQsIHRlc3RfbmFtZSwgcGl4ZWxfdGVzdHMs
IHRleHRfb3V0cHV0LCBleHBlY3RlZF9jaGVja3N1bSk6Ci0gICAgICAgIHVybCA9IHBvcnQuY3Jl
YXRlX2RyaXZlcigwKS50ZXN0X3RvX3VyaSh0ZXN0X25hbWUpCisgICAgICAgIHVybCA9IHBvcnQu
Y3JlYXRlX2RyaXZlcigwLCBGYWxzZSkudGVzdF90b191cmkodGVzdF9uYW1lKQogICAgICAgICBv
dXRwdXQgPSBbJyNVUkw6JXNcbicgJSB1cmxdCiAgICAgICAgIGlmIGV4cGVjdGVkX2NoZWNrc3Vt
OgogICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCgnI01ENTolc1xuJyAlIGV4cGVjdGVkX2NoZWNr
c3VtKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tb2Nr
X2RydC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L21vY2tfZHJ0LnB5CShyZXZpc2lvbiAxNDY0NDkpCisrKyBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L21vY2tfZHJ0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC03
NCwxMCArNzQsMTAgQEAKICAgICBkZWYgY2hlY2tfc3lzX2RlcHMoc2VsZiwgbmVlZHNfaHR0cCk6
CiAgICAgICAgIHJldHVybiBUcnVlCiAKLSAgICBkZWYgY3JlYXRlX2RyaXZlcihzZWxmLCB3b3Jr
ZXJfbnVtYmVyLCBub190aW1lb3V0PUZhbHNlKToKKyAgICBkZWYgY3JlYXRlX2RyaXZlcihzZWxm
LCB3b3JrZXJfbnVtYmVyLCBwaXhlbF90ZXN0cywgbm9fdGltZW91dD1GYWxzZSk6CiAgICAgICAg
ICMgVGhlIG1hZ2ljIG9mIHRoZSBNb2NrRFJUUG9ydCBpcyB0aGF0IHdlIGNyZWF0ZSBhIGRyaXZl
ciB0aGF0IGhhcyBhCiAgICAgICAgICMgY21kX2xpbmUoKSBtZXRob2QgbW9ua2V5LXBhdGNoZWQg
dG8gaW52b2tlIHRoaXMgc2NyaXB0IGluc3RlYWQgb2YgRFJULgotICAgICAgICByZXR1cm4gRHJp
dmVyUHJveHkoc2VsZiwgd29ya2VyX251bWJlciwgc2VsZi5fbW9ja2VkX2RyaXZlcl9tYWtlciwg
cGl4ZWxfdGVzdHM9c2VsZi5nZXRfb3B0aW9uKCdwaXhlbF90ZXN0cycpLCBub190aW1lb3V0PW5v
X3RpbWVvdXQpCisgICAgICAgIHJldHVybiBEcml2ZXJQcm94eShzZWxmLCB3b3JrZXJfbnVtYmVy
LCBzZWxmLl9tb2NrZWRfZHJpdmVyX21ha2VyLCBwaXhlbF90ZXN0cz1waXhlbF90ZXN0cywgbm9f
dGltZW91dD1ub190aW1lb3V0KQogCiAgICAgQHN0YXRpY21ldGhvZAogICAgIGRlZiBfbW9ja2Vk
X2RyaXZlcl9tYWtlcihwb3J0LCB3b3JrZXJfbnVtYmVyLCBwaXhlbF90ZXN0cywgbm9fdGltZW91
dD1GYWxzZSk6CkBAIC0xNzgsNyArMTc4LDcgQEAKICAgICAgICAgaWYgb3B0aW9ucy5wbGF0Zm9y
bToKICAgICAgICAgICAgIHBvcnRfbmFtZSA9IG9wdGlvbnMucGxhdGZvcm0KICAgICAgICAgc2Vs
Zi5fcG9ydCA9IFBvcnRGYWN0b3J5KGhvc3QpLmdldChwb3J0X25hbWU9cG9ydF9uYW1lLCBvcHRp
b25zPW9wdGlvbnMpCi0gICAgICAgIHNlbGYuX2RyaXZlciA9IHNlbGYuX3BvcnQuY3JlYXRlX2Ry
aXZlcigwKQorICAgICAgICBzZWxmLl9kcml2ZXIgPSBzZWxmLl9wb3J0LmNyZWF0ZV9kcml2ZXIo
MCwgb3B0aW9ucy5waXhlbF90ZXN0cykKIAogICAgIGRlZiBydW4oc2VsZik6CiAgICAgICAgIHdo
aWxlIFRydWU6CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2Jhc2UucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9iYXNlLnB5CShyZXZpc2lvbiAxNDY0NDkpCisrKyBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkJKHdvcmtpbmcgY29weSkKQEAgLTI0Niw5ICsy
NDYsOCBAQAogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIGlmIG5vdCBzZWxmLl9j
aGVja19kcml2ZXIoKToKICAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICBpZiBzZWxm
LmdldF9vcHRpb24oJ3BpeGVsX3Rlc3RzJyk6Ci0gICAgICAgICAgICBpZiBub3Qgc2VsZi5jaGVj
a19pbWFnZV9kaWZmKCk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGlm
IG5vdCBzZWxmLmNoZWNrX2ltYWdlX2RpZmYoKToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQog
ICAgICAgICBpZiBub3Qgc2VsZi5fY2hlY2tfcG9ydF9idWlsZCgpOgogICAgICAgICAgICAgcmV0
dXJuIEZhbHNlCiAgICAgICAgIHJldHVybiBUcnVlCkBAIC03MDQsMTAgKzcwMywxMCBAQAogICAg
ICAgICAgICAgcmV0dXJuIHRlc3RfbmFtZSArICcvJwogICAgICAgICByZXR1cm4gdGVzdF9uYW1l
CiAKLSAgICBkZWYgZHJpdmVyX2NtZF9saW5lKHNlbGYpOgorICAgIGRlZiBkcml2ZXJfY21kX2xp
bmUoc2VsZiwgcGl4ZWxfdGVzdHMpOgogICAgICAgICAiIiJQcmludHMgdGhlIERSVCBjb21tYW5k
IGxpbmUgdGhhdCB3aWxsIGJlIHVzZWQuIiIiCi0gICAgICAgIGRyaXZlciA9IHNlbGYuY3JlYXRl
X2RyaXZlcigwKQotICAgICAgICByZXR1cm4gZHJpdmVyLmNtZF9saW5lKHNlbGYuZ2V0X29wdGlv
bigncGl4ZWxfdGVzdHMnKSwgW10pCisgICAgICAgIGRyaXZlciA9IHNlbGYuY3JlYXRlX2RyaXZl
cigwLCBwaXhlbF90ZXN0cykKKyAgICAgICAgcmV0dXJuIGRyaXZlci5jbWRfbGluZShwaXhlbF90
ZXN0cywgW10pCiAKICAgICBkZWYgdXBkYXRlX2Jhc2VsaW5lKHNlbGYsIGJhc2VsaW5lX3BhdGgs
IGRhdGEpOgogICAgICAgICAiIiJVcGRhdGVzIHRoZSBiYXNlbGluZSBmb3IgYSB0ZXN0LgpAQCAt
OTI2LDkgKzkyNSw5IEBACiAgICAgICAgIHJlc3VsdHNfZmlsZW5hbWUgaW4gYSB1c2VycycgYnJv
d3Nlci4iIiIKICAgICAgICAgcmV0dXJuIHNlbGYuaG9zdC51c2VyLm9wZW5fdXJsKHBhdGguYWJz
cGF0aF90b191cmkoc2VsZi5ob3N0LnBsYXRmb3JtLCByZXN1bHRzX2ZpbGVuYW1lKSkKIAotICAg
IGRlZiBjcmVhdGVfZHJpdmVyKHNlbGYsIHdvcmtlcl9udW1iZXIsIG5vX3RpbWVvdXQ9RmFsc2Up
OgorICAgIGRlZiBjcmVhdGVfZHJpdmVyKHNlbGYsIHdvcmtlcl9udW1iZXIsIHBpeGVsX3Rlc3Rz
LCBub190aW1lb3V0PUZhbHNlKToKICAgICAgICAgIiIiUmV0dXJuIGEgbmV3bHkgY3JlYXRlZCBE
cml2ZXIgc3ViY2xhc3MgZm9yIHN0YXJ0aW5nL3N0b3BwaW5nIHRoZSB0ZXN0IGRyaXZlci4iIiIK
LSAgICAgICAgcmV0dXJuIGRyaXZlci5Ecml2ZXJQcm94eShzZWxmLCB3b3JrZXJfbnVtYmVyLCBz
ZWxmLl9kcml2ZXJfY2xhc3MoKSwgcGl4ZWxfdGVzdHM9c2VsZi5nZXRfb3B0aW9uKCdwaXhlbF90
ZXN0cycpLCBub190aW1lb3V0PW5vX3RpbWVvdXQpCisgICAgICAgIHJldHVybiBkcml2ZXIuRHJp
dmVyUHJveHkoc2VsZiwgd29ya2VyX251bWJlciwgc2VsZi5fZHJpdmVyX2NsYXNzKCksIHBpeGVs
X3Rlc3RzPXBpeGVsX3Rlc3RzLCBub190aW1lb3V0PW5vX3RpbWVvdXQpCiAKICAgICBkZWYgc3Rh
cnRfaGVscGVyKHNlbGYpOgogICAgICAgICAiIiJJZiBhIHBvcnQgbmVlZHMgdG8gcmVjb25maWd1
cmUgZ3JhcGhpY3Mgc2V0dGluZ3Mgb3IgZG8gb3RoZXIKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fYW5kcm9pZF91bml0dGVzdC5weQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9t
aXVtX2FuZHJvaWRfdW5pdHRlc3QucHkJKHJldmlzaW9uIDE0NjQ0OSkKKysrIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fYW5kcm9pZF91bml0dGVzdC5w
eQkod29ya2luZyBjb3B5KQpAQCAtMzQxLDYgKzM0MSw2IEBACiAgICAgICAgIHBvcnQxID0gY2hy
b21pdW1fYW5kcm9pZC5DaHJvbWl1bUFuZHJvaWRQb3J0KAogICAgICAgICAgICAgICAgIE1vY2tT
eXN0ZW1Ib3N0KGV4ZWN1dGl2ZT1Nb2NrRXhlY3V0aXZlMihydW5fY29tbWFuZF9mbj1tb2NrX3J1
bl9jb21tYW5kLm1vY2tfcnVuX2NvbW1hbmRfZm4pKSwKICAgICAgICAgICAgICAgICAnY2hyb21p
dW0tYW5kcm9pZCcsIG9wdGlvbnM9b3B0aW9ucykKLSAgICAgICAgY21kX2xpbmUgPSBwb3J0MS5k
cml2ZXJfY21kX2xpbmUoKQorICAgICAgICBjbWRfbGluZSA9IHBvcnQxLmRyaXZlcl9jbWRfbGlu
ZShGYWxzZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbWRfbGluZS5jb3VudCgnLS1lbmNv
ZGUtYmluYXJ5JyksIDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY21kX2xpbmUuY291bnQo
Jy0tZW5hYmxlLWhhcmR3YXJlLWdwdScpLCAxKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c19pbnRlZ3JhdGlvbnRlc3QucHkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90
ZXN0c19pbnRlZ3JhdGlvbnRlc3QucHkJKHJldmlzaW9uIDE0NjQ0OSkKKysrIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfaW50ZWdyYXRpb250ZXN0
LnB5CSh3b3JraW5nIGNvcHkpCkBAIC02NDksNiArNjQ5LDIwIEBACiAgICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZShob3N0LmZpbGVzeXN0ZW0uZXhpc3RzKCcvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMv
ZmFpbHVyZXMvZmxha3kvdGV4dC1hY3R1YWwudHh0JykpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFs
c2UoaG9zdC5maWxlc3lzdGVtLmV4aXN0cygncmV0cmllcycpKQogCisgICAgZGVmIHRlc3RfcmV0
cnlpbmdfZm9yY2VfcGl4ZWxfdGVzdHMoc2VsZik6CisgICAgICAgIGhvc3QgPSBNb2NrSG9zdCgp
CisgICAgICAgIHJlcywgZXJyLCBfID0gbG9nZ2luZ19ydW4oWyctLW5vLXJldHJ5LWZhaWx1cmVz
JywgJy0tbm8tcGl4ZWwnLCAnZmFpbHVyZXMvdW5leHBlY3RlZC90ZXh0LWltYWdlLWNoZWNrc3Vt
Lmh0bWwnXSwgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSwgaG9zdD1ob3N0KQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHJlcywgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgnUmV0cnlpbmcnIGlu
IGVyci5nZXR2YWx1ZSgpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaG9zdC5maWxlc3lzdGVt
LmV4aXN0cygnL3RtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2ZhaWx1cmVzL3VuZXhwZWN0ZWQvdGV4
dC1pbWFnZS1jaGVja3N1bS1hY3R1YWwudHh0JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uo
aG9zdC5maWxlc3lzdGVtLmV4aXN0cygnL3RtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2ZhaWx1cmVz
L3VuZXhwZWN0ZWQvdGV4dC1pbWFnZS1jaGVja3N1bS1hY3R1YWwucG5nJykpCisgICAgICAgIGhv
c3QgPSBNb2NrSG9zdCgpCisgICAgICAgIHJlcywgZXJyLCBfID0gbG9nZ2luZ19ydW4oWyctLW5v
LXBpeGVsJywgJ2ZhaWx1cmVzL3VuZXhwZWN0ZWQvdGV4dC1pbWFnZS1jaGVja3N1bS5odG1sJ10s
IHRlc3RzX2luY2x1ZGVkPVRydWUsIGhvc3Q9aG9zdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChyZXMsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnUmV0cnlpbmcnIGluIGVyci5nZXR2
YWx1ZSgpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaG9zdC5maWxlc3lzdGVtLmV4aXN0cygn
L3RtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2ZhaWx1cmVzL3VuZXhwZWN0ZWQvdGV4dC1pbWFnZS1j
aGVja3N1bS1hY3R1YWwudHh0JykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShob3N0LmZpbGVz
eXN0ZW0uZXhpc3RzKCcvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZmFpbHVyZXMvdW5leHBlY3Rl
ZC90ZXh0LWltYWdlLWNoZWNrc3VtLWFjdHVhbC5wbmcnKSkKKwogICAgIGRlZiB0ZXN0X3J1bl9v
cmRlcl9faW5saW5lKHNlbGYpOgogICAgICAgICAjIFRoZXNlIG5leHQgdGVzdHMgdGVzdCB0aGF0
IHdlIHJ1biB0aGUgdGVzdHMgaW4gYXNjZW5kaW5nIGFscGhhYmV0aWNhbAogICAgICAgICAjIG9y
ZGVyIHBlciBkaXJlY3RvcnkuIEhUVFAgdGVzdHMgYXJlIHNoYXJkZWQgc2VwYXJhdGVseSBmcm9t
IG90aGVyIHRlc3RzLApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
Y29udHJvbGxlcnMvbWFuYWdlci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyLnB5CShyZXZpc2lvbiAxNDY0NDkp
CisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5h
Z2VyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xOTIsMTIgKzE5MiwxNCBAQAogICAgICAgICAgICAg
cmV0dXJuIHRlc3RfcnVuX3Jlc3VsdHMuUnVuRGV0YWlscyhleGl0X2NvZGU9LTEpCiAKICAgICAg
ICAgc3RhcnRfdGltZSA9IHRpbWUudGltZSgpCisgICAgICAgIGZvcmNlZF9waXhlbF90ZXN0c19p
bl9yZXRyeSA9IEZhbHNlCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGluaXRpYWxfcmVzdWx0
cyA9IHNlbGYuX3J1bl90ZXN0cyh0ZXN0c190b19ydW4sIHRlc3RzX3RvX3NraXAsIHNlbGYuX29w
dGlvbnMucmVwZWF0X2VhY2gsIHNlbGYuX29wdGlvbnMuaXRlcmF0aW9ucywKICAgICAgICAgICAg
ICAgICBpbnQoc2VsZi5fb3B0aW9ucy5jaGlsZF9wcm9jZXNzZXMpLCByZXRyeWluZz1GYWxzZSkK
IAogICAgICAgICAgICAgdGVzdHNfdG9fcmV0cnkgPSBzZWxmLl90ZXN0c190b19yZXRyeShpbml0
aWFsX3Jlc3VsdHMsIGluY2x1ZGVfY3Jhc2hlcz1zZWxmLl9wb3J0LnNob3VsZF9yZXRyeV9jcmFz
aGVzKCkpCiAgICAgICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnJldHJ5X2ZhaWx1cmVzIGFuZCB0
ZXN0c190b19yZXRyeSBhbmQgbm90IGluaXRpYWxfcmVzdWx0cy5pbnRlcnJ1cHRlZDoKKyAgICAg
ICAgICAgICAgICBmb3JjZWRfcGl4ZWxfdGVzdHNfaW5fcmV0cnkgPSBzZWxmLl9mb3JjZV9waXhl
bF90ZXN0c19pZl9uZWVkZWQoKQogICAgICAgICAgICAgICAgIF9sb2cuaW5mbygnJykKICAgICAg
ICAgICAgICAgICBfbG9nLmluZm8oIlJldHJ5aW5nICVkIHVuZXhwZWN0ZWQgZmFpbHVyZShzKSAu
Li4iICUgbGVuKHRlc3RzX3RvX3JldHJ5KSkKICAgICAgICAgICAgICAgICBfbG9nLmluZm8oJycp
CkBAIC0yMTgsNyArMjIwLDcgQEAKICAgICAgICAgICAgIHNlbGYuX2xvb2tfZm9yX25ld19jcmFz
aF9sb2dzKHJldHJ5X3Jlc3VsdHMsIHN0YXJ0X3RpbWUpCiAKICAgICAgICAgX2xvZy5kZWJ1Zygi
c3VtbWFyaXppbmcgcmVzdWx0cyIpCi0gICAgICAgIHN1bW1hcml6ZWRfcmVzdWx0cyA9IHRlc3Rf
cnVuX3Jlc3VsdHMuc3VtbWFyaXplX3Jlc3VsdHMoc2VsZi5fcG9ydCwgc2VsZi5fZXhwZWN0YXRp
b25zLCBpbml0aWFsX3Jlc3VsdHMsIHJldHJ5X3Jlc3VsdHMpCisgICAgICAgIHN1bW1hcml6ZWRf
cmVzdWx0cyA9IHRlc3RfcnVuX3Jlc3VsdHMuc3VtbWFyaXplX3Jlc3VsdHMoc2VsZi5fcG9ydCwg
c2VsZi5fZXhwZWN0YXRpb25zLCBpbml0aWFsX3Jlc3VsdHMsIHJldHJ5X3Jlc3VsdHMsIGZvcmNl
ZF9waXhlbF90ZXN0c19pbl9yZXRyeSkKICAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF9yZXN1
bHRzKGVuZF90aW1lIC0gc3RhcnRfdGltZSwgaW5pdGlhbF9yZXN1bHRzLCBzdW1tYXJpemVkX3Jl
c3VsdHMpCiAKICAgICAgICAgaWYgbm90IHNlbGYuX29wdGlvbnMuZHJ5X3J1bjoKQEAgLTI0Mywy
MCArMjQ1LDI5IEBACiAgICAgICAgICAgICBmb3IgdGVzdCBpbiB0ZXN0c190b19ydW46CiAgICAg
ICAgICAgICAgICAgZm9yIF8gaW4geHJhbmdlKHJlcGVhdF9lYWNoKToKICAgICAgICAgICAgICAg
ICAgICAgdGVzdF9pbnB1dHMuYXBwZW5kKHNlbGYuX3Rlc3RfaW5wdXRfZm9yX2ZpbGUodGVzdCkp
Ci0KICAgICAgICAgcmV0dXJuIHNlbGYuX3J1bm5lci5ydW5fdGVzdHMoc2VsZi5fZXhwZWN0YXRp
b25zLCB0ZXN0X2lucHV0cywgdGVzdHNfdG9fc2tpcCwgbnVtX3dvcmtlcnMsIG5lZWRzX2h0dHAs
IG5lZWRzX3dlYnNvY2tldHMsIHJldHJ5aW5nKQogCiAgICAgZGVmIF9jbGVhbl91cF9ydW4oc2Vs
Zik6Ci0gICAgICAgICIiIlJlc3RvcmVzIHRoZSBzeXN0ZW0gYWZ0ZXIgd2UncmUgZG9uZSBydW5u
aW5nIHRlc3RzLiIiIgotICAgICAgICBfbG9nLmRlYnVnKCJmbHVzaGluZyBzdGRvdXQiKQorICAg
ICAgICBfbG9nLmRlYnVnKCJGbHVzaGluZyBzdGRvdXQiKQogICAgICAgICBzeXMuc3Rkb3V0LmZs
dXNoKCkKLSAgICAgICAgX2xvZy5kZWJ1ZygiZmx1c2hpbmcgc3RkZXJyIikKKyAgICAgICAgX2xv
Zy5kZWJ1ZygiRmx1c2hpbmcgc3RkZXJyIikKICAgICAgICAgc3lzLnN0ZGVyci5mbHVzaCgpCi0g
ICAgICAgIF9sb2cuZGVidWcoInN0b3BwaW5nIGhlbHBlciIpCisgICAgICAgIF9sb2cuZGVidWco
IlN0b3BwaW5nIGhlbHBlciIpCiAgICAgICAgIHNlbGYuX3BvcnQuc3RvcF9oZWxwZXIoKQotICAg
ICAgICBfbG9nLmRlYnVnKCJjbGVhbmluZyB1cCBwb3J0IikKKyAgICAgICAgX2xvZy5kZWJ1Zygi
Q2xlYW5pbmcgdXAgcG9ydCIpCiAgICAgICAgIHNlbGYuX3BvcnQuY2xlYW5fdXBfdGVzdF9ydW4o
KQogCisgICAgZGVmIF9mb3JjZV9waXhlbF90ZXN0c19pZl9uZWVkZWQoc2VsZik6CisgICAgICAg
IGlmIHNlbGYuX29wdGlvbnMucGl4ZWxfdGVzdHM6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UK
KworICAgICAgICBfbG9nLmRlYnVnKCJSZXN0YXJ0aW5nIGhlbHBlciIpCisgICAgICAgIHNlbGYu
X3BvcnQuc3RvcF9oZWxwZXIoKQorICAgICAgICBzZWxmLl9vcHRpb25zLnBpeGVsX3Rlc3RzID0g
VHJ1ZQorICAgICAgICBzZWxmLl9wb3J0LnN0YXJ0X2hlbHBlcigpCisKKyAgICAgICAgcmV0dXJu
IFRydWUKKwogICAgIGRlZiBfbG9va19mb3JfbmV3X2NyYXNoX2xvZ3Moc2VsZiwgcnVuX3Jlc3Vs
dHMsIHN0YXJ0X3RpbWUpOgogICAgICAgICAiIiJTaW5jZSBjcmFzaCBsb2dzIGNhbiB0YWtlIGEg
bG9uZyB0aW1lIHRvIGJlIHdyaXR0ZW4gb3V0IGlmIHRoZSBzeXN0ZW0gaXMKICAgICAgICAgICAg
dW5kZXIgc3RyZXNzIGRvIGEgc2Vjb25kIHBhc3MgYXQgdGhlIGVuZCBvZiB0aGUgdGVzdCBydW4u
CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9s
YXlvdXRfdGVzdF9ydW5uZXIucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbGF5b3V0X3Rlc3RfcnVubmVyLnB5CShyZXZpc2lv
biAxNDY0NDkpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9s
bGVycy9sYXlvdXRfdGVzdF9ydW5uZXIucHkJKHdvcmtpbmcgY29weSkKQEAgLTM4NCw3ICszODQs
NyBAQAogICAgICAgICAiIiIKICAgICAgICAgd29ya2VyID0gc2VsZgogCi0gICAgICAgIGRyaXZl
ciA9IHNlbGYuX3BvcnQuY3JlYXRlX2RyaXZlcihzZWxmLl93b3JrZXJfbnVtYmVyKQorICAgICAg
ICBkcml2ZXIgPSBzZWxmLl9wb3J0LmNyZWF0ZV9kcml2ZXIoc2VsZi5fd29ya2VyX251bWJlciwg
c2VsZi5fb3B0aW9ucy5waXhlbF90ZXN0cykKIAogICAgICAgICBjbGFzcyBTaW5nbGVUZXN0VGhy
ZWFkKHRocmVhZGluZy5UaHJlYWQpOgogICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgpA
QCAtNDI4LDcgKzQyOCw3IEBACiAgICAgICAgIGlmIHNlbGYuX2RyaXZlciBhbmQgc2VsZi5fZHJp
dmVyLmhhc19jcmFzaGVkKCk6CiAgICAgICAgICAgICBzZWxmLl9raWxsX2RyaXZlcigpCiAgICAg
ICAgIGlmIG5vdCBzZWxmLl9kcml2ZXI6Ci0gICAgICAgICAgICBzZWxmLl9kcml2ZXIgPSBzZWxm
Ll9wb3J0LmNyZWF0ZV9kcml2ZXIoc2VsZi5fd29ya2VyX251bWJlcikKKyAgICAgICAgICAgIHNl
bGYuX2RyaXZlciA9IHNlbGYuX3BvcnQuY3JlYXRlX2RyaXZlcihzZWxmLl93b3JrZXJfbnVtYmVy
LCBzZWxmLl9vcHRpb25zLnBpeGVsX3Rlc3RzKQogICAgICAgICByZXR1cm4gc2VsZi5fcnVuX3Np
bmdsZV90ZXN0KHNlbGYuX2RyaXZlciwgdGVzdF9pbnB1dCwgc3RvcF93aGVuX2RvbmUpCiAKICAg
ICBkZWYgX3J1bl9zaW5nbGVfdGVzdChzZWxmLCBkcml2ZXIsIHRlc3RfaW5wdXQsIHN0b3Bfd2hl
bl9kb25lKToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3ZpZXdz
L3ByaW50aW5nLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3ZpZXdzL3ByaW50aW5nLnB5CShyZXZpc2lvbiAxNDY0NDkpCisrKyBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy92aWV3cy9wcmludGluZy5weQkod29ya2luZyBjb3B5
KQpAQCAtOTQsNyArOTQsNyBAQAogICAgICAgICBzZWxmLl9wcmludF9kZWZhdWx0KCJSZWd1bGFy
IHRpbWVvdXQ6ICVzLCBzbG93IHRlc3QgdGltZW91dDogJXMiICUKICAgICAgICAgICAgICAgICAg
IChzZWxmLl9vcHRpb25zLnRpbWVfb3V0X21zLCBzZWxmLl9vcHRpb25zLnNsb3dfdGltZV9vdXRf
bXMpKQogCi0gICAgICAgIHNlbGYuX3ByaW50X2RlZmF1bHQoJ0NvbW1hbmQgbGluZTogJyArICcg
Jy5qb2luKHNlbGYuX3BvcnQuZHJpdmVyX2NtZF9saW5lKCkpKQorICAgICAgICBzZWxmLl9wcmlu
dF9kZWZhdWx0KCdDb21tYW5kIGxpbmU6ICcgKyAnICcuam9pbihzZWxmLl9wb3J0LmRyaXZlcl9j
bWRfbGluZShzZWxmLl9vcHRpb25zLnBpeGVsX3Rlc3RzKSkpCiAgICAgICAgIHNlbGYuX3ByaW50
X2RlZmF1bHQoJycpCiAKICAgICBkZWYgcHJpbnRfZm91bmQoc2VsZiwgbnVtX2FsbF90ZXN0X2Zp
bGVzLCBudW1fdG9fcnVuLCByZXBlYXRfZWFjaCwgaXRlcmF0aW9ucyk6CkluZGV4OiBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0X3VuaXR0ZXN0LnB5Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVy
ZnRlc3RfdW5pdHRlc3QucHkJKHJldmlzaW9uIDE0NjQ0OSkKKysrIFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29w
eSkKQEAgLTI4Niw3ICsyODYsNyBAQAogICAgICAgICB0ZXN0Ll91cmwgPSAnaHR0cDovL3NvbWUt
dGVzdC8nCiAKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgZHJpdmVyID0gcG9ydC5jcmVhdGVf
ZHJpdmVyKHdvcmtlcl9udW1iZXI9MSwgbm9fdGltZW91dD1UcnVlKQorICAgICAgICAgICAgZHJp
dmVyID0gcG9ydC5jcmVhdGVfZHJpdmVyKHdvcmtlcl9udW1iZXI9MSwgcGl4ZWxfdGVzdHM9RmFs
c2UsIG5vX3RpbWVvdXQ9VHJ1ZSkKICAgICAgICAgICAgIG91dHB1dCA9IHRlc3QucnVuX3Npbmds
ZShkcml2ZXIsICcvcGF0aC9zb21lLWRpci9zb21lLXRlc3QucmVwbGF5JywgdGltZV9vdXRfbXM9
MTAwKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG91dHB1dCkKICAgICAgICAgZmluYWxs
eToKQEAgLTMxMSw3ICszMTEsNyBAQAogICAgICAgICB0ZXN0Ll91cmwgPSAnaHR0cDovL3NvbWUt
dGVzdC8nCiAKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgZHJpdmVyID0gcG9ydC5jcmVhdGVf
ZHJpdmVyKHdvcmtlcl9udW1iZXI9MSwgbm9fdGltZW91dD1UcnVlKQorICAgICAgICAgICAgZHJp
dmVyID0gcG9ydC5jcmVhdGVfZHJpdmVyKHdvcmtlcl9udW1iZXI9MSwgcGl4ZWxfdGVzdHM9RmFs
c2UsIG5vX3RpbWVvdXQ9VHJ1ZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdC5y
dW5fc2luZ2xlKGRyaXZlciwgJy9wYXRoL3NvbWUtZGlyL3NvbWUtdGVzdC5yZXBsYXknLCB0aW1l
X291dF9tcz0xMDApLCBOb25lKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgYWN0dWFs
X3N0ZG91dCwgYWN0dWFsX3N0ZGVyciwgYWN0dWFsX2xvZ3MgPSBvdXRwdXRfY2FwdHVyZS5yZXN0
b3JlX291dHB1dCgpCkBAIC0zMzIsNyArMzMyLDcgQEAKICAgICAgICAgb3V0cHV0X2NhcHR1cmUg
PSBPdXRwdXRDYXB0dXJlKCkKICAgICAgICAgb3V0cHV0X2NhcHR1cmUuY2FwdHVyZV9vdXRwdXQo
KQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBkcml2ZXIgPSBwb3J0LmNyZWF0ZV9kcml2ZXIo
d29ya2VyX251bWJlcj0xLCBub190aW1lb3V0PVRydWUpCisgICAgICAgICAgICBkcml2ZXIgPSBw
b3J0LmNyZWF0ZV9kcml2ZXIod29ya2VyX251bWJlcj0xLCBwaXhlbF90ZXN0cz1GYWxzZSwgbm9f
dGltZW91dD1UcnVlKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHRlc3QuX3J1bl93aXRo
X2RyaXZlcihkcml2ZXIsIE5vbmUpKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgYWN0
dWFsX3N0ZG91dCwgYWN0dWFsX3N0ZGVyciwgYWN0dWFsX2xvZ3MgPSBvdXRwdXRfY2FwdHVyZS5y
ZXN0b3JlX291dHB1dCgpCkBAIC0zNTcsNyArMzU3LDcgQEAKICAgICAgICAgb3V0cHV0X2NhcHR1
cmUgPSBPdXRwdXRDYXB0dXJlKCkKICAgICAgICAgb3V0cHV0X2NhcHR1cmUuY2FwdHVyZV9vdXRw
dXQoKQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBkcml2ZXIgPSBwb3J0LmNyZWF0ZV9kcml2
ZXIod29ya2VyX251bWJlcj0xLCBub190aW1lb3V0PVRydWUpCisgICAgICAgICAgICBkcml2ZXIg
PSBwb3J0LmNyZWF0ZV9kcml2ZXIod29ya2VyX251bWJlcj0xLCBwaXhlbF90ZXN0cz1GYWxzZSwg
bm9fdGltZW91dD1UcnVlKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHRlc3QuX3J1bl93
aXRoX2RyaXZlcihkcml2ZXIsIE5vbmUpKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAg
YWN0dWFsX3N0ZG91dCwgYWN0dWFsX3N0ZGVyciwgYWN0dWFsX2xvZ3MgPSBvdXRwdXRfY2FwdHVy
ZS5yZXN0b3JlX291dHB1dCgpCkBAIC0zODIsNyArMzgyLDcgQEAKICAgICAgICAgdGVzdC5fdXJs
ID0gJ2h0dHA6Ly9zb21lLXRlc3QvJwogCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIGRyaXZl
ciA9IHBvcnQuY3JlYXRlX2RyaXZlcih3b3JrZXJfbnVtYmVyPTEsIG5vX3RpbWVvdXQ9VHJ1ZSkK
KyAgICAgICAgICAgIGRyaXZlciA9IHBvcnQuY3JlYXRlX2RyaXZlcih3b3JrZXJfbnVtYmVyPTEs
IHBpeGVsX3Rlc3RzPUZhbHNlLCBub190aW1lb3V0PVRydWUpCiAgICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHRlc3QucnVuX3NpbmdsZShkcml2ZXIsICcvcGF0aC9zb21lLWRpci9zb21lLXRl
c3QucmVwbGF5JywgdGltZV9vdXRfbXM9MTAwKSwgTm9uZSkKICAgICAgICAgZmluYWxseToKICAg
ICAgICAgICAgIGFjdHVhbF9zdGRvdXQsIGFjdHVhbF9zdGRlcnIsIGFjdHVhbF9sb2dzID0gb3V0
cHV0X2NhcHR1cmUucmVzdG9yZV9vdXRwdXQoKQpAQCAtNDA4LDcgKzQwOCw3IEBACiAgICAgICAg
IHRlc3QuX3VybCA9ICdodHRwOi8vc29tZS10ZXN0LycKIAogICAgICAgICB0cnk6Ci0gICAgICAg
ICAgICBkcml2ZXIgPSBwb3J0LmNyZWF0ZV9kcml2ZXIod29ya2VyX251bWJlcj0xLCBub190aW1l
b3V0PVRydWUpCisgICAgICAgICAgICBkcml2ZXIgPSBwb3J0LmNyZWF0ZV9kcml2ZXIod29ya2Vy
X251bWJlcj0xLCBwaXhlbF90ZXN0cz1GYWxzZSwgbm9fdGltZW91dD1UcnVlKQogICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0LnJ1bl9zaW5nbGUoZHJpdmVyLCAnL3BhdGgvc29tZS1k
aXIvc29tZS10ZXN0LnJlcGxheScsIHRpbWVfb3V0X21zPTEwMCksIE5vbmUpCiAgICAgICAgIGZp
bmFsbHk6CiAgICAgICAgICAgICBhY3R1YWxfc3Rkb3V0LCBhY3R1YWxfc3RkZXJyLCBhY3R1YWxf
bG9ncyA9IG91dHB1dF9jYXB0dXJlLnJlc3RvcmVfb3V0cHV0KCkKSW5kZXg6IFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3QucHkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdC5weQkocmV2
aXNpb24gMTQ2NDQ5KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0
cy9wZXJmdGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMTE2LDcgKzExNiw3IEBACiAgICAgICAg
IHJldHVybiBUcnVlCiAKICAgICBkZWYgX2NyZWF0ZV9kcml2ZXIoc2VsZik6Ci0gICAgICAgIHJl
dHVybiBzZWxmLl9wb3J0LmNyZWF0ZV9kcml2ZXIod29ya2VyX251bWJlcj0wLCBub190aW1lb3V0
PVRydWUpCisgICAgICAgIHJldHVybiBzZWxmLl9wb3J0LmNyZWF0ZV9kcml2ZXIod29ya2VyX251
bWJlcj0wLCBwaXhlbF90ZXN0cz1GYWxzZSwgbm9fdGltZW91dD1UcnVlKQogCiAgICAgZGVmIHJ1
bihzZWxmLCB0aW1lX291dF9tcyk6CiAgICAgICAgIGZvciBfIGluIHhyYW5nZShzZWxmLl90ZXN0
X3J1bm5lcl9jb3VudCk6CkBAIC0zNjcsNyArMzY3LDcgQEAKIAogICAgICAgICBfbG9nLmluZm8o
IlByZXBhcmluZyByZXBsYXkgZm9yICVzIiAlIHNlbGYudGVzdF9uYW1lKCkpCiAKLSAgICAgICAg
ZHJpdmVyID0gc2VsZi5fcG9ydC5jcmVhdGVfZHJpdmVyKHdvcmtlcl9udW1iZXI9MCwgbm9fdGlt
ZW91dD1UcnVlKQorICAgICAgICBkcml2ZXIgPSBzZWxmLl9wb3J0LmNyZWF0ZV9kcml2ZXIod29y
a2VyX251bWJlcj0wLCBwaXhlbF90ZXN0cz1GYWxzZSwgbm9fdGltZW91dD1UcnVlKQogICAgICAg
ICB0cnk6CiAgICAgICAgICAgICBvdXRwdXQgPSBzZWxmLnJ1bl9zaW5nbGUoZHJpdmVyLCBzZWxm
Ll9hcmNoaXZlX3BhdGgsIHRpbWVfb3V0X21zLCByZWNvcmQ9VHJ1ZSkKICAgICAgICAgZmluYWxs
eToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRl
c3RzcnVubmVyX2ludGVncmF0aW9udGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0c3J1bm5lcl9pbnRlZ3JhdGlvbnRl
c3QucHkJKHJldmlzaW9uIDE0NjQ0OSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9y
bWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVyX2ludGVncmF0aW9udGVzdC5weQkod29ya2luZyBj
b3B5KQpAQCAtMjAzLDcgKzIwMyw3IEBACiAgICAgZGVmIGNyZWF0ZV9ydW5uZXIoc2VsZiwgYXJn
cz1bXSwgZHJpdmVyX2NsYXNzPVRlc3REcml2ZXIpOgogICAgICAgICBvcHRpb25zLCBwYXJzZWRf
YXJncyA9IFBlcmZUZXN0c1J1bm5lci5fcGFyc2VfYXJncyhhcmdzKQogICAgICAgICB0ZXN0X3Bv
cnQgPSBUZXN0UG9ydChob3N0PU1vY2tIb3N0KCksIG9wdGlvbnM9b3B0aW9ucykKLSAgICAgICAg
dGVzdF9wb3J0LmNyZWF0ZV9kcml2ZXIgPSBsYW1iZGEgd29ya2VyX251bWJlcj1Ob25lLCBub190
aW1lb3V0PUZhbHNlOiBkcml2ZXJfY2xhc3MoKQorICAgICAgICB0ZXN0X3BvcnQuY3JlYXRlX2Ry
aXZlciA9IGxhbWJkYSB3b3JrZXJfbnVtYmVyPU5vbmUsIHBpeGVsX3Rlc3RzPUZhbHNlLCBub190
aW1lb3V0PUZhbHNlOiBkcml2ZXJfY2xhc3MoKQogCiAgICAgICAgIHJ1bm5lciA9IFBlcmZUZXN0
c1J1bm5lcihhcmdzPWFyZ3MsIHBvcnQ9dGVzdF9wb3J0KQogICAgICAgICBydW5uZXIuX2hvc3Qu
ZmlsZXN5c3RlbS5tYXliZV9tYWtlX2RpcmVjdG9yeShydW5uZXIuX2Jhc2VfcGF0aCwgJ2luc3Bl
Y3RvcicpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194417</attachid>
            <date>2013-03-21 19:30:38 -0700</date>
            <delta_ts>2013-03-21 23:44:53 -0700</delta_ts>
            <desc>one-line patch to force pixel tests on on the retry</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>723</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xs
ZXJzL21hbmFnZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250
cm9sbGVycy9tYW5hZ2VyLnB5CmluZGV4IDE2ZTg1YzguLjNlMWUxY2MgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXIucHkK
KysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFu
YWdlci5weQpAQCAtMjAxLDYgKzIwMSw3IEBAIGNsYXNzIE1hbmFnZXIob2JqZWN0KToKICAgICAg
ICAgICAgICAgICBfbG9nLmluZm8oJycpCiAgICAgICAgICAgICAgICAgX2xvZy5pbmZvKCJSZXRy
eWluZyAlZCB1bmV4cGVjdGVkIGZhaWx1cmUocykgLi4uIiAlIGxlbih0ZXN0c190b19yZXRyeSkp
CiAgICAgICAgICAgICAgICAgX2xvZy5pbmZvKCcnKQorICAgICAgICAgICAgICAgIHNlbGYuX29w
dGlvbnMucGl4ZWxfdGVzdHMgPSBUcnVlCiAgICAgICAgICAgICAgICAgcmV0cnlfcmVzdWx0cyA9
IHNlbGYuX3J1bl90ZXN0cyh0ZXN0c190b19yZXRyeSwgdGVzdHNfdG9fc2tpcD1zZXQoKSwgcmVw
ZWF0X2VhY2g9MSwgaXRlcmF0aW9ucz0xLAogICAgICAgICAgICAgICAgICAgICBudW1fd29ya2Vy
cz0xLCByZXRyeWluZz1UcnVlKQogICAgICAgICAgICAgZWxzZToK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194456</attachid>
            <date>2013-03-21 23:44:58 -0700</date>
            <delta_ts>2013-03-22 13:50:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112898-20130321234047.patch</filename>
            <type>text/plain</type>
            <size>20232</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE0NjU2NCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDQwIEBACisyMDEzLTAzLTIxICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgor
CisgICAgICAgIE5SV1Q6IEVuYWJsZSBwaXhlbCB0ZXN0cyB3aGVuIHJldHJ5aW5nIHRlc3RzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTI4OTgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXIucHk6CisgICAgICAgIChN
YW5hZ2VyLnJ1bik6IENhbGwgX2ZvcmNlX3BpeGVsX3Rlc3RzX2lmX25lZWRlZCBiZWZvcmUgcmV0
cnlpbmcgdGVzdHMgYW5kIHNldCBwaXhlbF90ZXN0cyBGYWxzZQorICAgICAgICBpZiB3ZSd2ZSBm
b3JjZWQgcGl4ZWwgdGVzdHMgaW4gdGhlIHJldHJ5LgorICAgICAgICAoTWFuYWdlci5fcnVuX3Rl
c3RzKToKKyAgICAgICAgKE1hbmFnZXIuX2NsZWFuX3VwX3J1bik6IEZpeGVkIHRoZSBjYXBpdGFs
aXphdGlvbnMuCisgICAgICAgIChNYW5hZ2VyLl9mb3JjZV9waXhlbF90ZXN0c19pZl9uZWVkZWQp
OiBBZGRlZC4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVs
cy90ZXN0X3J1bl9yZXN1bHRzLnB5OgorICAgICAgICAoX2ludGVycHJldF90ZXN0X2ZhaWx1cmVz
KTogTm93IHRoYXQgdGhpcyBmdW5jdGlvbiBtYXliZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMsIG9u
bHkgc2V0CisgICAgICAgICdpbWFnZV9kaWZmX3BlcmNlbnQnIGlmIGl0IGRvZXNuJ3QgYWxyZWFk
eSBleGlzdC4KKworICAgICAgICAoc3VtbWFyaXplX3Jlc3VsdHMpOiBXaGVuIHRoZSBmaXJzdCBh
dHRlbXB0IHJlc3VsdGVkIGluIGEgdGV4dCBmYWlsdXJlIGFuZCB0aGUgc2Vjb25kIGF0dGVtcHQK
KyAgICAgICAgcmVzdWx0ZWQgaW4gaW1hZ2UgYW5kIHRleHQgZmFpbHVyZXMgYW5kIHdlJ3ZlIGZv
cmNlZCB0byBydW4gcGl4ZWwgdGVzdHMgaW4gdGhlIHJldHJ5IHJ1biwKKyAgICAgICAgdHJlYXQg
dGhpcyBhcyBhIHJlZ3VsYXIgcmVncmVzc2lvbiBpbnN0ZWFkIG9mIGEgZmxha2luZXNzLgorCisg
ICAgICAgIEFsc28gdXBkYXRlIHRlc3RfZGljdCB3aXRoIHJldHJ5X3Jlc3VsdCBzbyB0aGF0IGlt
YWdlX2RpZmZfcGVyY2VudCBtYXliZSBmaWxsZWQgaW4gaWYgcmV0cnkKKyAgICAgICAgcnVuIGhh
ZCBpbWFnZSBkaWZmcy4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L21vZGVscy90ZXN0X3J1bl9yZXN1bHRzX3VuaXR0ZXN0LnB5OgorICAgICAgICAoc3VtbWFyaXpl
ZF9yZXN1bHRzKToKKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1
bl93ZWJraXRfdGVzdHNfaW50ZWdyYXRpb250ZXN0LnB5OgorICAgICAgICAocGFyc2VfZnVsbF9y
ZXN1bHRzKTogTW92ZWQgb3V0IG9mIEVuZFRvRW5kVGVzdCB0byBiZSB1c2VkIGluIHRlc3RfcmV0
cnlpbmdfZm9yY2VfcGl4ZWxfdGVzdHMuCisgICAgICAgIEFsc28gcmVtb3ZlZCBzb21lIGRlYWQg
Y29kZS4KKworICAgICAgICAoUnVuVGVzdC50ZXN0X3JldHJ5aW5nX2ZvcmNlX3BpeGVsX3Rlc3Rz
KTogQWRkZWQuIEFzc2VydCB0aGF0IHdlIGdlbmVyYXRlIGFuZCBvbmx5IGdlbmVyYXRlCisgICAg
ICAgIHBpeGVsIHJlc3VsdHMgaW4gcmV0cmllcyB3aGVuIHBpeGVsIHRlc3RzIGlzIHR1cm5lZCBv
ZmYuIEFsc28gYXNzZXJ0IHRoYXQgaW1hZ2VfZGlmZl9wZXJjZW50CisgICAgICAgIGlzIHNldCBh
bmQgcGl4ZWxfdGVzdHNfZW5hYmxlZCBpcyBzZXQgdG8gZmFsc2UuCisgICAgICAgIChFbmRUb0Vu
ZFRlc3QudGVzdF9yZWZ0ZXN0X3dpdGhfdHdvX25vdHJlZnMpOgorCiAyMDEzLTAzLTIxICBEaXJr
IFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIG5yd3QgaXMgbm8gbG9u
Z2VyIHNhdmluZyByZXRyeSByZXN1bHRzIGluIHRoZSByZXRyaWVzLyBzdWJkaXJlY3RvcnkKSW5k
ZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNf
aW50ZWdyYXRpb250ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfaW50ZWdyYXRpb250ZXN0LnB5CShyZXZpc2lv
biAxNDY1NjApCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Vi
a2l0X3Rlc3RzX2ludGVncmF0aW9udGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMTU4LDYgKzE1
OCwxMiBAQCBkZWYgZ2V0X3Rlc3RfcmVzdWx0cyhhcmdzLCBob3N0PU5vbmUpOgogICAgIHJldHVy
biBhbGxfcmVzdWx0cwogCiAKK2RlZiBwYXJzZV9mdWxsX3Jlc3VsdHMoZnVsbF9yZXN1bHRzX3Rl
eHQpOgorICAgIGpzb25fdG9fZXZhbCA9IGZ1bGxfcmVzdWx0c190ZXh0LnJlcGxhY2UoIkFERF9S
RVNVTFRTKCIsICIiKS5yZXBsYWNlKCIpOyIsICIiKQorICAgIGNvbXByZXNzZWRfcmVzdWx0cyA9
IGpzb24ubG9hZHMoanNvbl90b19ldmFsKQorICAgIHJldHVybiBjb21wcmVzc2VkX3Jlc3VsdHMK
KworCiBjbGFzcyBTdHJlYW1UZXN0aW5nTWl4aW4ob2JqZWN0KToKICAgICBkZWYgYXNzZXJ0Q29u
dGFpbnMoc2VsZiwgc3RyZWFtLCBzdHJpbmcpOgogICAgICAgICBzZWxmLmFzc2VydFRydWUoc3Ry
aW5nIGluIHN0cmVhbS5nZXR2YWx1ZSgpKQpAQCAtNjQ5LDYgKzY1NSwyMSBAQCBjbGFzcyBSdW5U
ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlLCBTdHJlYW1UCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSho
b3N0LmZpbGVzeXN0ZW0uZXhpc3RzKCcvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZmFpbHVyZXMv
Zmxha3kvdGV4dC1hY3R1YWwudHh0JykpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaG9zdC5m
aWxlc3lzdGVtLmV4aXN0cygncmV0cmllcycpKQogCisgICAgZGVmIHRlc3RfcmV0cnlpbmdfZm9y
Y2VfcGl4ZWxfdGVzdHMoc2VsZik6CisgICAgICAgIGhvc3QgPSBNb2NrSG9zdCgpCisgICAgICAg
IHJlcywgZXJyLCBfID0gbG9nZ2luZ19ydW4oWyctLW5vLXBpeGVsJywgJ2ZhaWx1cmVzL3VuZXhw
ZWN0ZWQvdGV4dC1pbWFnZS1jaGVja3N1bS5odG1sJ10sIHRlc3RzX2luY2x1ZGVkPVRydWUsIGhv
c3Q9aG9zdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMsIDEpCisgICAgICAgIHNlbGYu
YXNzZXJ0VHJ1ZSgnUmV0cnlpbmcnIGluIGVyci5nZXR2YWx1ZSgpKQorICAgICAgICBzZWxmLmFz
c2VydFRydWUoaG9zdC5maWxlc3lzdGVtLmV4aXN0cygnL3RtcC9sYXlvdXQtdGVzdC1yZXN1bHRz
L2ZhaWx1cmVzL3VuZXhwZWN0ZWQvdGV4dC1pbWFnZS1jaGVja3N1bS1hY3R1YWwudHh0JykpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaG9zdC5maWxlc3lzdGVtLmV4aXN0cygnL3RtcC9sYXlv
dXQtdGVzdC1yZXN1bHRzL2ZhaWx1cmVzL3VuZXhwZWN0ZWQvdGV4dC1pbWFnZS1jaGVja3N1bS1h
Y3R1YWwucG5nJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShob3N0LmZpbGVzeXN0ZW0uZXhp
c3RzKCcvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvcmV0cmllcy9mYWlsdXJlcy91bmV4cGVjdGVk
L3RleHQtaW1hZ2UtY2hlY2tzdW0tYWN0dWFsLnR4dCcpKQorICAgICAgICBzZWxmLmFzc2VydFRy
dWUoaG9zdC5maWxlc3lzdGVtLmV4aXN0cygnL3RtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL3JldHJp
ZXMvZmFpbHVyZXMvdW5leHBlY3RlZC90ZXh0LWltYWdlLWNoZWNrc3VtLWFjdHVhbC5wbmcnKSkK
KyAgICAgICAganNvbl9zdHJpbmcgPSBob3N0LmZpbGVzeXN0ZW0ucmVhZF90ZXh0X2ZpbGUoJy90
bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mdWxsX3Jlc3VsdHMuanNvbicpCisgICAgICAgIGpzb24g
PSBwYXJzZV9mdWxsX3Jlc3VsdHMoanNvbl9zdHJpbmcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoanNvblsidGVzdHMiXVsiZmFpbHVyZXMiXVsidW5leHBlY3RlZCJdWyJ0ZXh0LWltYWdlLWNo
ZWNrc3VtLmh0bWwiXSwKKyAgICAgICAgICAgIHsiZXhwZWN0ZWQiOiAiUEFTUyIsICJhY3R1YWwi
OiAiVEVYVCBJTUFHRStURVhUIiwgImltYWdlX2RpZmZfcGVyY2VudCI6IDF9KQorICAgICAgICBz
ZWxmLmFzc2VydEZhbHNlKGpzb25bInBpeGVsX3Rlc3RzX2VuYWJsZWQiXSkKKwogICAgIGRlZiB0
ZXN0X3JldHJ5aW5nX3VzZXNfcmV0cmllc19kaXJlY3Rvcnkoc2VsZik6CiAgICAgICAgIGhvc3Qg
PSBNb2NrSG9zdCgpCiAgICAgICAgIHJlcywgZXJyLCBfID0gbG9nZ2luZ19ydW4oWyctLWRlYnVn
LXJ3dC1sb2dnaW5nJywgJ2ZhaWx1cmVzL3VuZXhwZWN0ZWQvdGV4dC1pbWFnZS1jaGVja3N1bS5o
dG1sJ10sIHRlc3RzX2luY2x1ZGVkPVRydWUsIGhvc3Q9aG9zdCkKQEAgLTgyNSwyNSArODQ2LDE1
IEBAIGNsYXNzIFJ1blRlc3QodW5pdHRlc3QuVGVzdENhc2UsIFN0cmVhbVQKIAogCiBjbGFzcyBF
bmRUb0VuZFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiBwYXJzZV9mdWxsX3Jlc3Vs
dHMoc2VsZiwgZnVsbF9yZXN1bHRzX3RleHQpOgotICAgICAgICBqc29uX3RvX2V2YWwgPSBmdWxs
X3Jlc3VsdHNfdGV4dC5yZXBsYWNlKCJBRERfUkVTVUxUUygiLCAiIikucmVwbGFjZSgiKTsiLCAi
IikKLSAgICAgICAgY29tcHJlc3NlZF9yZXN1bHRzID0ganNvbi5sb2Fkcyhqc29uX3RvX2V2YWwp
Ci0gICAgICAgIHJldHVybiBjb21wcmVzc2VkX3Jlc3VsdHMKLQotICAgICAgICAjIENoZWNrIHRo
YXQgd2UgcmVjb3JkZWQgdGhlIHRlc3QgcnVuIHRpbWVzIGFuZCBvcmRlcmluZy4gTm90ZSB0aGF0
Ci0gICAgICAgICMgcHJldHR5IG11Y2ggbm9uZSBvZiB0aGUgYWN0dWFsIHZhbHVlcyBjYW4gYmUg
Z3VhcmFudGVlZCwgYnV0IGF0IGxlYXN0Ci0gICAgICAgICMgd2UgY2FuIHRlc3QgdGhhdCB0aGV5
J3JlIHRoZXJlLgotICAgICAgICBzdGF0cyA9IGpzb24ubG9hZHMoaG9zdC5maWxlc3lzdGVtLnJl
YWRfdGV4dF9maWxlKCcvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvc3RhdHMuanNvbicpKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzdGF0c1snaHR0cCddWyd0ZXN0cyddWydwYXNzZXMn
XVsnaW1hZ2UuaHRtbCddWydyZXN1bHRzJ10pLCA1KQotCiAgICAgZGVmIHRlc3RfcmVmdGVzdF93
aXRoX3R3b19ub3RyZWZzKHNlbGYpOgogICAgICAgICAjIFRlc3QgdGhhdCB3ZSB1cGRhdGUgZXhw
ZWN0YXRpb25zIGluIHBsYWNlLiBJZiB0aGUgZXhwZWN0YXRpb24KICAgICAgICAgIyBpcyBtaXNz
aW5nLCB1cGRhdGUgdGhlIGV4cGVjdGVkIGdlbmVyaWMgbG9jYXRpb24uCiAgICAgICAgIGhvc3Qg
PSBNb2NrSG9zdCgpCiAgICAgICAgIHJlcywgXywgXyA9IGxvZ2dpbmdfcnVuKFsnLS1uby1zaG93
LXJlc3VsdHMnLCAncmVmdGVzdHMvZm9vLyddLCB0ZXN0c19pbmNsdWRlZD1UcnVlLCBob3N0PWhv
c3QpCiAgICAgICAgIGZpbGVfbGlzdCA9IGhvc3QuZmlsZXN5c3RlbS53cml0dGVuX2ZpbGVzLmtl
eXMoKQorCiAgICAgICAgIGpzb25fc3RyaW5nID0gaG9zdC5maWxlc3lzdGVtLnJlYWRfdGV4dF9m
aWxlKCcvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZnVsbF9yZXN1bHRzLmpzb24nKQotICAgICAg
ICBqc29uID0gc2VsZi5wYXJzZV9mdWxsX3Jlc3VsdHMoanNvbl9zdHJpbmcpCisgICAgICAgIGpz
b24gPSBwYXJzZV9mdWxsX3Jlc3VsdHMoanNvbl9zdHJpbmcpCiAgICAgICAgIHNlbGYuYXNzZXJ0
VHJ1ZSgibXVsdGlwbGUtbWF0Y2gtc3VjY2Vzcy5odG1sIiBub3QgaW4ganNvblsidGVzdHMiXVsi
cmVmdGVzdHMiXVsiZm9vIl0pCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgibXVsdGlwbGUtbWlz
bWF0Y2gtc3VjY2Vzcy5odG1sIiBub3QgaW4ganNvblsidGVzdHMiXVsicmVmdGVzdHMiXVsiZm9v
Il0pCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgibXVsdGlwbGUtYm90aC1zdWNjZXNzLmh0bWwi
IG5vdCBpbiBqc29uWyJ0ZXN0cyJdWyJyZWZ0ZXN0cyJdWyJmb28iXSkKSW5kZXg6IFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXIucHkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMv
bWFuYWdlci5weQkocmV2aXNpb24gMTQ2NTYwKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlci5weQkod29ya2luZyBjb3B5KQpAQCAtMTky
LDE3ICsxOTIsMjMgQEAgY2xhc3MgTWFuYWdlcihvYmplY3QpOgogICAgICAgICAgICAgcmV0dXJu
IHRlc3RfcnVuX3Jlc3VsdHMuUnVuRGV0YWlscyhleGl0X2NvZGU9LTEpCiAKICAgICAgICAgc3Rh
cnRfdGltZSA9IHRpbWUudGltZSgpCisgICAgICAgIGZvcmNlZF9waXhlbF90ZXN0c19pbl9yZXRy
eSA9IEZhbHNlCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGluaXRpYWxfcmVzdWx0cyA9IHNl
bGYuX3J1bl90ZXN0cyh0ZXN0c190b19ydW4sIHRlc3RzX3RvX3NraXAsIHNlbGYuX29wdGlvbnMu
cmVwZWF0X2VhY2gsIHNlbGYuX29wdGlvbnMuaXRlcmF0aW9ucywKICAgICAgICAgICAgICAgICBp
bnQoc2VsZi5fb3B0aW9ucy5jaGlsZF9wcm9jZXNzZXMpLCByZXRyeWluZz1GYWxzZSkKIAogICAg
ICAgICAgICAgdGVzdHNfdG9fcmV0cnkgPSBzZWxmLl90ZXN0c190b19yZXRyeShpbml0aWFsX3Jl
c3VsdHMsIGluY2x1ZGVfY3Jhc2hlcz1zZWxmLl9wb3J0LnNob3VsZF9yZXRyeV9jcmFzaGVzKCkp
CiAgICAgICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnJldHJ5X2ZhaWx1cmVzIGFuZCB0ZXN0c190
b19yZXRyeSBhbmQgbm90IGluaXRpYWxfcmVzdWx0cy5pbnRlcnJ1cHRlZDoKKyAgICAgICAgICAg
ICAgICBmb3JjZWRfcGl4ZWxfdGVzdHNfaW5fcmV0cnkgPSBzZWxmLl9mb3JjZV9waXhlbF90ZXN0
c19pZl9uZWVkZWQoKQorCiAgICAgICAgICAgICAgICAgX2xvZy5pbmZvKCcnKQogICAgICAgICAg
ICAgICAgIF9sb2cuaW5mbygiUmV0cnlpbmcgJWQgdW5leHBlY3RlZCBmYWlsdXJlKHMpIC4uLiIg
JSBsZW4odGVzdHNfdG9fcmV0cnkpKQogICAgICAgICAgICAgICAgIF9sb2cuaW5mbygnJykKICAg
ICAgICAgICAgICAgICByZXRyeV9yZXN1bHRzID0gc2VsZi5fcnVuX3Rlc3RzKHRlc3RzX3RvX3Jl
dHJ5LCB0ZXN0c190b19za2lwPXNldCgpLCByZXBlYXRfZWFjaD0xLCBpdGVyYXRpb25zPTEsCiAg
ICAgICAgICAgICAgICAgICAgIG51bV93b3JrZXJzPTEsIHJldHJ5aW5nPVRydWUpCisKKyAgICAg
ICAgICAgICAgICBpZiBmb3JjZWRfcGl4ZWxfdGVzdHNfaW5fcmV0cnk6CisgICAgICAgICAgICAg
ICAgICAgIHNlbGYuX29wdGlvbnMucGl4ZWxfdGVzdHMgPSBGYWxzZQogICAgICAgICAgICAgZWxz
ZToKICAgICAgICAgICAgICAgICByZXRyeV9yZXN1bHRzID0gTm9uZQogICAgICAgICBmaW5hbGx5
OgpAQCAtMjE4LDcgKzIyNCw3IEBAIGNsYXNzIE1hbmFnZXIob2JqZWN0KToKICAgICAgICAgICAg
IHNlbGYuX2xvb2tfZm9yX25ld19jcmFzaF9sb2dzKHJldHJ5X3Jlc3VsdHMsIHN0YXJ0X3RpbWUp
CiAKICAgICAgICAgX2xvZy5kZWJ1Zygic3VtbWFyaXppbmcgcmVzdWx0cyIpCi0gICAgICAgIHN1
bW1hcml6ZWRfcmVzdWx0cyA9IHRlc3RfcnVuX3Jlc3VsdHMuc3VtbWFyaXplX3Jlc3VsdHMoc2Vs
Zi5fcG9ydCwgc2VsZi5fZXhwZWN0YXRpb25zLCBpbml0aWFsX3Jlc3VsdHMsIHJldHJ5X3Jlc3Vs
dHMpCisgICAgICAgIHN1bW1hcml6ZWRfcmVzdWx0cyA9IHRlc3RfcnVuX3Jlc3VsdHMuc3VtbWFy
aXplX3Jlc3VsdHMoc2VsZi5fcG9ydCwgc2VsZi5fZXhwZWN0YXRpb25zLCBpbml0aWFsX3Jlc3Vs
dHMsIHJldHJ5X3Jlc3VsdHMsIGZvcmNlZF9waXhlbF90ZXN0c19pbl9yZXRyeSkKICAgICAgICAg
c2VsZi5fcHJpbnRlci5wcmludF9yZXN1bHRzKGVuZF90aW1lIC0gc3RhcnRfdGltZSwgaW5pdGlh
bF9yZXN1bHRzLCBzdW1tYXJpemVkX3Jlc3VsdHMpCiAKICAgICAgICAgaWYgbm90IHNlbGYuX29w
dGlvbnMuZHJ5X3J1bjoKQEAgLTI0MywyMCArMjQ5LDI5IEBAIGNsYXNzIE1hbmFnZXIob2JqZWN0
KToKICAgICAgICAgICAgIGZvciB0ZXN0IGluIHRlc3RzX3RvX3J1bjoKICAgICAgICAgICAgICAg
ICBmb3IgXyBpbiB4cmFuZ2UocmVwZWF0X2VhY2gpOgogICAgICAgICAgICAgICAgICAgICB0ZXN0
X2lucHV0cy5hcHBlbmQoc2VsZi5fdGVzdF9pbnB1dF9mb3JfZmlsZSh0ZXN0KSkKLQogICAgICAg
ICByZXR1cm4gc2VsZi5fcnVubmVyLnJ1bl90ZXN0cyhzZWxmLl9leHBlY3RhdGlvbnMsIHRlc3Rf
aW5wdXRzLCB0ZXN0c190b19za2lwLCBudW1fd29ya2VycywgbmVlZHNfaHR0cCwgbmVlZHNfd2Vi
c29ja2V0cywgcmV0cnlpbmcpCiAKICAgICBkZWYgX2NsZWFuX3VwX3J1bihzZWxmKToKLSAgICAg
ICAgIiIiUmVzdG9yZXMgdGhlIHN5c3RlbSBhZnRlciB3ZSdyZSBkb25lIHJ1bm5pbmcgdGVzdHMu
IiIiCi0gICAgICAgIF9sb2cuZGVidWcoImZsdXNoaW5nIHN0ZG91dCIpCisgICAgICAgIF9sb2cu
ZGVidWcoIkZsdXNoaW5nIHN0ZG91dCIpCiAgICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQotICAg
ICAgICBfbG9nLmRlYnVnKCJmbHVzaGluZyBzdGRlcnIiKQorICAgICAgICBfbG9nLmRlYnVnKCJG
bHVzaGluZyBzdGRlcnIiKQogICAgICAgICBzeXMuc3RkZXJyLmZsdXNoKCkKLSAgICAgICAgX2xv
Zy5kZWJ1Zygic3RvcHBpbmcgaGVscGVyIikKKyAgICAgICAgX2xvZy5kZWJ1ZygiU3RvcHBpbmcg
aGVscGVyIikKICAgICAgICAgc2VsZi5fcG9ydC5zdG9wX2hlbHBlcigpCi0gICAgICAgIF9sb2cu
ZGVidWcoImNsZWFuaW5nIHVwIHBvcnQiKQorICAgICAgICBfbG9nLmRlYnVnKCJDbGVhbmluZyB1
cCBwb3J0IikKICAgICAgICAgc2VsZi5fcG9ydC5jbGVhbl91cF90ZXN0X3J1bigpCiAKKyAgICBk
ZWYgX2ZvcmNlX3BpeGVsX3Rlc3RzX2lmX25lZWRlZChzZWxmKToKKyAgICAgICAgaWYgc2VsZi5f
b3B0aW9ucy5waXhlbF90ZXN0czoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAg
IF9sb2cuZGVidWcoIlJlc3RhcnRpbmcgaGVscGVyIikKKyAgICAgICAgc2VsZi5fcG9ydC5zdG9w
X2hlbHBlcigpCisgICAgICAgIHNlbGYuX29wdGlvbnMucGl4ZWxfdGVzdHMgPSBUcnVlCisgICAg
ICAgIHNlbGYuX3BvcnQuc3RhcnRfaGVscGVyKCkKKworICAgICAgICByZXR1cm4gVHJ1ZQorCiAg
ICAgZGVmIF9sb29rX2Zvcl9uZXdfY3Jhc2hfbG9ncyhzZWxmLCBydW5fcmVzdWx0cywgc3RhcnRf
dGltZSk6CiAgICAgICAgICIiIlNpbmNlIGNyYXNoIGxvZ3MgY2FuIHRha2UgYSBsb25nIHRpbWUg
dG8gYmUgd3JpdHRlbiBvdXQgaWYgdGhlIHN5c3RlbSBpcwogICAgICAgICAgICB1bmRlciBzdHJl
c3MgZG8gYSBzZWNvbmQgcGFzcyBhdCB0aGUgZW5kIG9mIHRoZSB0ZXN0IHJ1bi4KSW5kZXg6IFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X3J1bl9yZXN1bHRz
LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21v
ZGVscy90ZXN0X3J1bl9yZXN1bHRzLnB5CShyZXZpc2lvbiAxNDY1NjApCisrKyBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9ydW5fcmVzdWx0cy5weQkod29y
a2luZyBjb3B5KQpAQCAtMTA5LDE0ICsxMDksMTUgQEAgZGVmIF9pbnRlcnByZXRfdGVzdF9mYWls
dXJlcyhmYWlsdXJlcyk6CiAgICAgaWYgdGVzdF9mYWlsdXJlcy5GYWlsdXJlTWlzc2luZ0ltYWdl
IGluIGZhaWx1cmVfdHlwZXMgb3IgdGVzdF9mYWlsdXJlcy5GYWlsdXJlTWlzc2luZ0ltYWdlSGFz
aCBpbiBmYWlsdXJlX3R5cGVzOgogICAgICAgICB0ZXN0X2RpY3RbJ2lzX21pc3NpbmdfaW1hZ2Un
XSA9IFRydWUKIAotICAgIGZvciBmYWlsdXJlIGluIGZhaWx1cmVzOgotICAgICAgICBpZiBpc2lu
c3RhbmNlKGZhaWx1cmUsIHRlc3RfZmFpbHVyZXMuRmFpbHVyZUltYWdlSGFzaE1pc21hdGNoKSBv
ciBpc2luc3RhbmNlKGZhaWx1cmUsIHRlc3RfZmFpbHVyZXMuRmFpbHVyZVJlZnRlc3RNaXNtYXRj
aCk6Ci0gICAgICAgICAgICB0ZXN0X2RpY3RbJ2ltYWdlX2RpZmZfcGVyY2VudCddID0gZmFpbHVy
ZS5kaWZmX3BlcmNlbnQKKyAgICBpZiAnaW1hZ2VfZGlmZl9wZXJjZW50JyBub3QgaW4gdGVzdF9k
aWN0OgorICAgICAgICBmb3IgZmFpbHVyZSBpbiBmYWlsdXJlczoKKyAgICAgICAgICAgIGlmIGlz
aW5zdGFuY2UoZmFpbHVyZSwgdGVzdF9mYWlsdXJlcy5GYWlsdXJlSW1hZ2VIYXNoTWlzbWF0Y2gp
IG9yIGlzaW5zdGFuY2UoZmFpbHVyZSwgdGVzdF9mYWlsdXJlcy5GYWlsdXJlUmVmdGVzdE1pc21h
dGNoKToKKyAgICAgICAgICAgICAgICB0ZXN0X2RpY3RbJ2ltYWdlX2RpZmZfcGVyY2VudCddID0g
ZmFpbHVyZS5kaWZmX3BlcmNlbnQKIAogICAgIHJldHVybiB0ZXN0X2RpY3QKIAogCi1kZWYgc3Vt
bWFyaXplX3Jlc3VsdHMocG9ydF9vYmosIGV4cGVjdGF0aW9ucywgaW5pdGlhbF9yZXN1bHRzLCBy
ZXRyeV9yZXN1bHRzKToKK2RlZiBzdW1tYXJpemVfcmVzdWx0cyhwb3J0X29iaiwgZXhwZWN0YXRp
b25zLCBpbml0aWFsX3Jlc3VsdHMsIHJldHJ5X3Jlc3VsdHMsIGZvcmNlZF9waXhlbF90ZXN0c19p
bl9yZXRyeSk6CiAgICAgIiIiUmV0dXJucyBhIGRpY3Rpb25hcnkgY29udGFpbmluZyBhIHN1bW1h
cnkgb2YgdGhlIHRlc3QgcnVucywgd2l0aCB0aGUgZm9sbG93aW5nIGZpZWxkczoKICAgICAgICAg
J3ZlcnNpb24nOiBhIHZlcnNpb24gaW5kaWNhdG9yCiAgICAgICAgICdmaXhhYmxlJzogVGhlIG51
bWJlciBvZiBmaXhhYmxlIHRlc3RzIChOT1cgLSBQQVNTKQpAQCAtMTg3LDYgKzE4OCwxMSBAQCBk
ZWYgc3VtbWFyaXplX3Jlc3VsdHMocG9ydF9vYmosIGV4cGVjdGF0CiAgICAgICAgICAgICBlbGlm
IHJldHJ5X3Jlc3VsdHM6CiAgICAgICAgICAgICAgICAgcmV0cnlfcmVzdWx0X3R5cGUgPSByZXRy
eV9yZXN1bHRzLnVuZXhwZWN0ZWRfcmVzdWx0c19ieV9uYW1lW3Rlc3RfbmFtZV0udHlwZQogICAg
ICAgICAgICAgICAgIGlmIHJlc3VsdF90eXBlICE9IHJldHJ5X3Jlc3VsdF90eXBlOgorICAgICAg
ICAgICAgICAgICAgICBpZiBmb3JjZWRfcGl4ZWxfdGVzdHNfaW5fcmV0cnkgYW5kIHJlc3VsdF90
eXBlID09IHRlc3RfZXhwZWN0YXRpb25zLlRFWFQgYW5kIHJldHJ5X3Jlc3VsdF90eXBlID09IHRl
c3RfZXhwZWN0YXRpb25zLklNQUdFX1BMVVNfVEVYVDoKKyAgICAgICAgICAgICAgICAgICAgICAg
IG51bV9yZWdyZXNzaW9ucyArPSAxCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICAgICAgICAgICAgICBhY3R1YWwuYXBwZW5kKGtleXdvcmRzW3JldHJ5X3Jlc3VsdF90eXBl
XSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG51bV9mbGFreSArPSAxCiAgICAgICAgICAgICAg
ICAgICAgIGFjdHVhbC5hcHBlbmQoa2V5d29yZHNbcmV0cnlfcmVzdWx0X3R5cGVdKQogICAgICAg
ICAgICAgICAgICAgICBudW1fZmxha3kgKz0gMQogICAgICAgICAgICAgICAgIGVsc2U6CkBAIC0x
OTksNiArMjA1LDExIEBAIGRlZiBzdW1tYXJpemVfcmVzdWx0cyhwb3J0X29iaiwgZXhwZWN0YXQK
IAogICAgICAgICB0ZXN0X2RpY3QudXBkYXRlKF9pbnRlcnByZXRfdGVzdF9mYWlsdXJlcyhyZXN1
bHQuZmFpbHVyZXMpKQogCisgICAgICAgIGlmIHJldHJ5X3Jlc3VsdHM6CisgICAgICAgICAgICBy
ZXRyeV9yZXN1bHQgPSByZXRyeV9yZXN1bHRzLnVuZXhwZWN0ZWRfcmVzdWx0c19ieV9uYW1lLmdl
dCh0ZXN0X25hbWUpCisgICAgICAgICAgICBpZiByZXRyeV9yZXN1bHQ6CisgICAgICAgICAgICAg
ICAgdGVzdF9kaWN0LnVwZGF0ZShfaW50ZXJwcmV0X3Rlc3RfZmFpbHVyZXMocmV0cnlfcmVzdWx0
LmZhaWx1cmVzKSkKKwogICAgICAgICAjIFN0b3JlIHRlc3QgaGllcmFyY2hpY2FsbHkgYnkgZGly
ZWN0b3J5LiBlLmcuCiAgICAgICAgICMgZm9vL2Jhci9iYXouaHRtbDogdGVzdF9kaWN0CiAgICAg
ICAgICMgZm9vL2Jhci9iYXoxLmh0bWw6IHRlc3RfZGljdApJbmRleDogVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfcnVuX3Jlc3VsdHNfdW5pdHRlc3QucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxz
L3Rlc3RfcnVuX3Jlc3VsdHNfdW5pdHRlc3QucHkJKHJldmlzaW9uIDE0NjU2MCkKKysrIFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X3J1bl9yZXN1bHRzX3Vu
aXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC04NCw3ICs4NCw3IEBAIGRlZiBzdW1tYXJpemVk
X3Jlc3VsdHMocG9ydCwgZXhwZWN0ZWQsIHAKICAgICBlbHNlOgogICAgICAgICByZXRyeV9yZXN1
bHRzID0gTm9uZQogCi0gICAgcmV0dXJuIHRlc3RfcnVuX3Jlc3VsdHMuc3VtbWFyaXplX3Jlc3Vs
dHMocG9ydCwgaW5pdGlhbF9yZXN1bHRzLmV4cGVjdGF0aW9ucywgaW5pdGlhbF9yZXN1bHRzLCBy
ZXRyeV9yZXN1bHRzKQorICAgIHJldHVybiB0ZXN0X3J1bl9yZXN1bHRzLnN1bW1hcml6ZV9yZXN1
bHRzKHBvcnQsIGluaXRpYWxfcmVzdWx0cy5leHBlY3RhdGlvbnMsIGluaXRpYWxfcmVzdWx0cywg
cmV0cnlfcmVzdWx0cywgZm9yY2VkX3BpeGVsX3Rlc3RzX2luX3JldHJ5PUZhbHNlKQogCiAKIGNs
YXNzIEludGVycHJldFRlc3RGYWlsdXJlc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpJbmRleDog
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxv
ZwkocmV2aXNpb24gMTQ2NTY1KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTMtMDMtMjEgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgTlJXVDogRW5hYmxlIHBpeGVsIHRlc3RzIHdoZW4gcmV0cnlp
bmcgdGVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTExMjg5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IExpbmsgdG8gaW1hZ2VzIGFuZCBpbWFnZSBkaWZmIGluIHJldHJpZXMgd2hlbiB0aGV5J3JlIG9u
bHkgYXZhaWxhYmxlIGluIHJldHJpZXMuCisKKyAgICAgICAgKiBmYXN0L2hhcm5lc3MvcmVzb3Vy
Y2VzL3Jlc3VsdHMtdGVzdC5qczogQWRkZWQgYSB0ZXN0IGNhc2UuCisgICAgICAgICogZmFzdC9o
YXJuZXNzL3Jlc3VsdHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvaGFybmVzcy9yZXN1
bHRzLmh0bWw6CisgICAgICAgIChpbWFnZVJlc3VsdHNDZWxsKTogRXh0cmFjdGVkIGZyb20gdGFi
bGVSb3cuCisgICAgICAgICh0YWJsZVJvdyk6IFNwbGl0IHRoZSBhY3R1YWwgcmVzdWx0IGludG8g
dHdvIHRva2VucyAoZmlyc3QgYXR0ZW1wdCBhbmQgcmV0cnkpLAorICAgICAgICBhbmQgdGhlbiBj
aGVjayBpZiB0aGUgaW1hZ2UgZmFpbHVyZSB3YXMgZGV0ZWN0ZWQgaW4gdGhlIGZpcnN0IGF0dGVt
cHQuIElmIG5vdCwKKyAgICAgICAgYWRkIGh5cGVybGlua3MgdG8gdGhlIGFjdHVhbCByZXN1bHRz
IGluIHRoZSByZXRyeSBydW4uCisKIDIwMTMtMDMtMjEgIEhhamltZSBNb3JyaXRhICA8bW9ycml0
YUBnb29nbGUuY29tPgogCiAgICAgICAgIEN1c3RvbSBFbGVtZW50czogInJlYWR5Q2FsbGJhY2si
IGxpZmVjeWNsZSBjYWxsYmFjayBzaG91bGQgYmUgY2FsbGVkLgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9oYXJuZXNzL3Jlc3VsdHMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvaGFybmVzcy9yZXN1bHRzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTQ2NTYwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9oYXJuZXNzL3Jlc3VsdHMtZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0yNTEsMyArMjUxLDQgQEAgVEVTVC00NDogUEFTUwogVEVTVC00NTogUEFTUwog
VEVTVC00NTogUEFTUwogVEVTVC00NTogUEFTUworVEVTVC00NjogUEFTUwpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9oYXJuZXNzL3Jlc3VsdHMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2hhcm5lc3MvcmVzdWx0cy5odG1sCShyZXZpc2lvbiAxNDY1NjApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2hhcm5lc3MvcmVzdWx0cy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC01NjMsNiAr
NTYzLDM3IEBAIGZ1bmN0aW9uIHRleHRSZXN1bHRMaW5rcyhwcmVmaXgpCiAgICAgcmV0dXJuIGh0
bWw7CiB9CiAKK2Z1bmN0aW9uIGltYWdlUmVzdWx0c0NlbGwodGVzdE9iamVjdCwgdGVzdFByZWZp
eCwgYWN0dWFsKSB7CisgICAgdmFyIHJvdyA9ICcnOworCisgICAgaWYgKGFjdHVhbC5pbmRleE9m
KCdJTUFHRScpICE9IC0xKSB7CisgICAgICAgIGdsb2JhbFN0YXRlKCkuaGFzSW1hZ2VGYWlsdXJl
cyA9IHRydWU7CisKKyAgICAgICAgaWYgKHRlc3RPYmplY3QucmVmdGVzdF90eXBlICYmIHRlc3RP
YmplY3QucmVmdGVzdF90eXBlLmluZGV4T2YoJyE9JykgIT0gLTEpIHsKKyAgICAgICAgICAgIHJv
dyArPSByZXN1bHRMaW5rKHRlc3RQcmVmaXgsICctZXhwZWN0ZWQtbWlzbWF0Y2guaHRtbCcsICdy
ZWYgbWlzbWF0Y2ggaHRtbCcpOworICAgICAgICAgICAgcm93ICs9IHJlc3VsdExpbmsodGVzdFBy
ZWZpeCwgJy1hY3R1YWwucG5nJywgJ2FjdHVhbCcpOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgaWYgKHRlc3RPYmplY3QucmVmdGVzdF90eXBlICYmIHRlc3RPYmplY3QucmVmdGVzdF90
eXBlLmluZGV4T2YoJz09JykgIT0gLTEpIHsKKyAgICAgICAgICAgICAgICByb3cgKz0gcmVzdWx0
TGluayh0ZXN0UHJlZml4LCAnLWV4cGVjdGVkLmh0bWwnLCAncmVmIGh0bWwnKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGlmIChnbG9iYWxTdGF0ZSgpLnNob3VsZFRvZ2dsZUltYWdlcykg
eworICAgICAgICAgICAgICAgIHJvdyArPSByZXN1bHRMaW5rKHRlc3RQcmVmaXgsICctZGlmZnMu
aHRtbCcsICdpbWFnZXMnKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
cm93ICs9IHJlc3VsdExpbmsodGVzdFByZWZpeCwgJy1leHBlY3RlZC5wbmcnLCAnZXhwZWN0ZWQn
KTsKKyAgICAgICAgICAgICAgICByb3cgKz0gcmVzdWx0TGluayh0ZXN0UHJlZml4LCAnLWFjdHVh
bC5wbmcnLCAnYWN0dWFsJyk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciBkaWZm
ID0gdGVzdE9iamVjdC5pbWFnZV9kaWZmX3BlcmNlbnQ7CisgICAgICAgICAgICByb3cgKz0gcmVz
dWx0TGluayh0ZXN0UHJlZml4LCAnLWRpZmYucG5nJywgJ2RpZmYgKCcgKyBkaWZmICsgJyUpJyk7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoYWN0dWFsLmluZGV4T2YoJ01JU1NJTkcnKSAh
PSAtMSAmJiB0ZXN0T2JqZWN0LmlzX21pc3NpbmdfaW1hZ2UpCisgICAgICAgIHJvdyArPSByZXN1
bHRMaW5rKHRlc3RQcmVmaXgsICctYWN0dWFsLnBuZycsICdwbmcgcmVzdWx0Jyk7CisKKyAgICBy
ZXR1cm4gcm93OworfQorCiBmdW5jdGlvbiB0YWJsZVJvdyh0ZXN0T2JqZWN0KQogeyAgICAKICAg
ICB2YXIgcm93ID0gJzx0Ym9keScKQEAgLTU3NCw2NiArNjA1LDM5IEBAIGZ1bmN0aW9uIHRhYmxl
Um93KHRlc3RPYmplY3QpCiAKICAgICByb3cgKz0gJzx0ZD4nICsgdGVzdExpbmtXaXRoRXhwYW5k
QnV0dG9uKHRlc3RPYmplY3QubmFtZSkgKyAnPC90ZD4nOwogCi0gICAgdmFyIHRlc3RfcHJlZml4
ID0gc3RyaXBFeHRlbnNpb24odGVzdE9iamVjdC5uYW1lKTsKKyAgICB2YXIgdGVzdFByZWZpeCA9
IHN0cmlwRXh0ZW5zaW9uKHRlc3RPYmplY3QubmFtZSk7CiAgICAgcm93ICs9ICc8dGQ+JzsKICAg
ICAKICAgICB2YXIgYWN0dWFsID0gdGVzdE9iamVjdC5hY3R1YWw7Ci0gICAgdmFyIGV4cGVjdGVk
ID0gdGVzdE9iamVjdC5leHBlY3RlZDsKICAgICBpZiAoYWN0dWFsLmluZGV4T2YoJ1RFWFQnKSAh
PSAtMSkgewogICAgICAgICBnbG9iYWxTdGF0ZSgpLmhhc1RleHRGYWlsdXJlcyA9IHRydWU7Ci0g
ICAgICAgIHJvdyArPSB0ZXh0UmVzdWx0TGlua3ModGVzdF9wcmVmaXgpOworICAgICAgICByb3cg
Kz0gdGV4dFJlc3VsdExpbmtzKHRlc3RQcmVmaXgpOwogICAgIH0KICAgICAKICAgICBpZiAoYWN0
dWFsLmluZGV4T2YoJ0FVRElPJykgIT0gLTEpIHsKLSAgICAgICAgcm93ICs9IHJlc3VsdExpbmso
dGVzdF9wcmVmaXgsICctZXhwZWN0ZWQud2F2JywgJ2V4cGVjdGVkIGF1ZGlvJyk7Ci0gICAgICAg
IHJvdyArPSByZXN1bHRMaW5rKHRlc3RfcHJlZml4LCAnLWFjdHVhbC53YXYnLCAnYWN0dWFsIGF1
ZGlvJyk7CisgICAgICAgIHJvdyArPSByZXN1bHRMaW5rKHRlc3RQcmVmaXgsICctZXhwZWN0ZWQu
d2F2JywgJ2V4cGVjdGVkIGF1ZGlvJyk7CisgICAgICAgIHJvdyArPSByZXN1bHRMaW5rKHRlc3RQ
cmVmaXgsICctYWN0dWFsLndhdicsICdhY3R1YWwgYXVkaW8nKTsKICAgICB9CiAKICAgICBpZiAo
YWN0dWFsLmluZGV4T2YoJ01JU1NJTkcnKSAhPSAtMSkgewotICAgICAgICBleHBlY3RlZCA9ICcn
OwogICAgICAgICBpZiAodGVzdE9iamVjdC5pc19taXNzaW5nX2F1ZGlvKQotICAgICAgICAgICAg
cm93ICs9IHJlc3VsdExpbmsodGVzdF9wcmVmaXgsICctYWN0dWFsLndhdicsICdhdWRpbyByZXN1
bHQnKTsKKyAgICAgICAgICAgIHJvdyArPSByZXN1bHRMaW5rKHRlc3RQcmVmaXgsICctYWN0dWFs
LndhdicsICdhdWRpbyByZXN1bHQnKTsKICAgICAgICAgaWYgKHRlc3RPYmplY3QuaXNfbWlzc2lu
Z190ZXh0KQotICAgICAgICAgICAgcm93ICs9IHJlc3VsdExpbmsodGVzdF9wcmVmaXgsICctYWN0
dWFsLnR4dCcsICdyZXN1bHQnKTsKKyAgICAgICAgICAgIHJvdyArPSByZXN1bHRMaW5rKHRlc3RQ
cmVmaXgsICctYWN0dWFsLnR4dCcsICdyZXN1bHQnKTsKICAgICB9CiAKLSAgICByb3cgKz0gJzwv
dGQ+PHRkPic7Ci0KLSAgICBpZiAoYWN0dWFsLmluZGV4T2YoJ0lNQUdFJykgIT0gLTEpIHsKLSAg
ICAgICAgZ2xvYmFsU3RhdGUoKS5oYXNJbWFnZUZhaWx1cmVzID0gdHJ1ZTsKLQotICAgICAgICBp
ZiAodGVzdE9iamVjdC5yZWZ0ZXN0X3R5cGUgJiYgdGVzdE9iamVjdC5yZWZ0ZXN0X3R5cGUuaW5k
ZXhPZignIT0nKSAhPSAtMSkgewotICAgICAgICAgICAgcm93ICs9IHJlc3VsdExpbmsodGVzdF9w
cmVmaXgsICctZXhwZWN0ZWQtbWlzbWF0Y2guaHRtbCcsICdyZWYgbWlzbWF0Y2ggaHRtbCcpOwot
ICAgICAgICAgICAgcm93ICs9IHJlc3VsdExpbmsodGVzdF9wcmVmaXgsICctYWN0dWFsLnBuZycs
ICdhY3R1YWwnKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmICh0ZXN0T2JqZWN0
LnJlZnRlc3RfdHlwZSAmJiB0ZXN0T2JqZWN0LnJlZnRlc3RfdHlwZS5pbmRleE9mKCc9PScpICE9
IC0xKSB7Ci0gICAgICAgICAgICAgICAgcm93ICs9IHJlc3VsdExpbmsodGVzdF9wcmVmaXgsICct
ZXhwZWN0ZWQuaHRtbCcsICdyZWYgaHRtbCcpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
aWYgKGdsb2JhbFN0YXRlKCkuc2hvdWxkVG9nZ2xlSW1hZ2VzKSB7Ci0gICAgICAgICAgICAgICAg
cm93ICs9IHJlc3VsdExpbmsodGVzdF9wcmVmaXgsICctZGlmZnMuaHRtbCcsICdpbWFnZXMnKTsK
LSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcm93ICs9IHJlc3VsdExpbmso
dGVzdF9wcmVmaXgsICctZXhwZWN0ZWQucG5nJywgJ2V4cGVjdGVkJyk7Ci0gICAgICAgICAgICAg
ICAgcm93ICs9IHJlc3VsdExpbmsodGVzdF9wcmVmaXgsICctYWN0dWFsLnBuZycsICdhY3R1YWwn
KTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdmFyIGRpZmYgPSB0ZXN0T2JqZWN0Lmlt
YWdlX2RpZmZfcGVyY2VudDsKLSAgICAgICAgICAgIHJvdyArPSByZXN1bHRMaW5rKHRlc3RfcHJl
Zml4LCAnLWRpZmYucG5nJywgJ2RpZmYgKCcgKyBkaWZmICsgJyUpJyk7Ci0gICAgICAgIH0KLSAg
ICB9Ci0KLSAgICBpZiAoYWN0dWFsLmluZGV4T2YoJ01JU1NJTkcnKSAhPSAtMSkgewotICAgICAg
ICBleHBlY3RlZCA9ICcnOwotICAgICAgICBpZiAodGVzdE9iamVjdC5pc19taXNzaW5nX2ltYWdl
KQotICAgICAgICAgICAgcm93ICs9IHJlc3VsdExpbmsodGVzdF9wcmVmaXgsICctYWN0dWFsLnBu
ZycsICdwbmcgcmVzdWx0Jyk7Ci0gICAgfQorICAgIHZhciBhY3R1YWxUb2tlbnMgPSBhY3R1YWwu
c3BsaXQoL1xzKy8pOworICAgIHZhciBjZWxsID0gaW1hZ2VSZXN1bHRzQ2VsbCh0ZXN0T2JqZWN0
LCB0ZXN0UHJlZml4LCBhY3R1YWxUb2tlbnNbMF0pOworICAgIGlmICghY2VsbCAmJiBhY3R1YWxU
b2tlbnMubGVuZ3RoID4gMSkKKyAgICAgICAgY2VsbCA9IGltYWdlUmVzdWx0c0NlbGwodGVzdE9i
amVjdCwgJ3JldHJpZXMvJyArIHRlc3RQcmVmaXgsIGFjdHVhbFRva2Vuc1sxXSk7CiAKLSAgICBy
b3cgKz0gJzwvdGQ+JzsKKyAgICByb3cgKz0gJzwvdGQ+PHRkPicgKyBjZWxsICsgJzwvdGQ+JzsK
IAogICAgIGlmIChnbG9iYWxTdGF0ZSgpLnJlc3VsdHMudXNlc19leHBlY3RhdGlvbnNfZmlsZSB8
fCBhY3R1YWwuaW5kZXhPZignICcpICE9IC0xKQogICAgICAgICByb3cgKz0gJzx0ZD4nICsgYWN0
dWFsICsgJzwvdGQ+JzsKIAogICAgIGlmIChnbG9iYWxTdGF0ZSgpLnJlc3VsdHMudXNlc19leHBl
Y3RhdGlvbnNfZmlsZSkKLSAgICAgICAgcm93ICs9ICc8dGQ+JyArIGV4cGVjdGVkICsgJzwvdGQ+
JzsKKyAgICAgICAgcm93ICs9ICc8dGQ+JyArIChhY3R1YWwuaW5kZXhPZignTUlTU0lORycpID09
IC0xID8gdGVzdE9iamVjdC5leHBlY3RlZCA6ICcnKSArICc8L3RkPic7CiAKICAgICByb3cgKz0g
JzwvdHI+PC90Ym9keT4nOwogICAgIHJldHVybiByb3c7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2hhcm5lc3MvcmVzb3VyY2VzL3Jlc3VsdHMtdGVzdC5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2hhcm5lc3MvcmVzb3VyY2VzL3Jlc3VsdHMtdGVzdC5qcwkocmV2aXNpb24gMTQ2
NTYwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9oYXJuZXNzL3Jlc291cmNlcy9yZXN1bHRzLXRlc3Qu
anMJKHdvcmtpbmcgY29weSkKQEAgLTc3Miw2ICs3NzIsMTMgQEAgZnVuY3Rpb24gcnVuVGVzdHMo
KQogICAgICAgICBhc3NlcnRUcnVlKGZsYWdnZWRUZXN0c1RleHRib3guaW5uZXJUZXh0ID09ICdm
b28vYmFyMS5odG1sXG5mb28vYmFyMi5odG1sJyk7CiAgICAgfSk7CiAKKyAgICByZXN1bHRzID0g
bW9ja1Jlc3VsdHMoKTsKKyAgICByZXN1bHRzLnRlc3RzWydmb28vYmFyLWltYWdlLmh0bWwnXSA9
IG1vY2tFeHBlY3RhdGlvbignUEFTUycsICdURVhUIElNQUdFK1RFWFQnKTsKKyAgICByZXN1bHRz
LnBpeGVsX3Rlc3RzX2VuYWJsZWQgPSBmYWxzZTsKKyAgICBydW5UZXN0KHJlc3VsdHMsIGZ1bmN0
aW9uKCkgeworICAgICAgICBhc3NlcnRUcnVlKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ3Rib2R5
IHRkOm50aC1jaGlsZCgzKSBhJykuZ2V0QXR0cmlidXRlKCdocmVmJykgPT0gJ3JldHJpZXMvZm9v
L2Jhci1pbWFnZS1kaWZmcy5odG1sJyk7CisgICAgfSk7CisKICAgICBkb2N1bWVudC5ib2R5Lmlu
bmVySFRNTCA9ICc8cHJlPicgKyBnX2xvZy5qb2luKCdcbicpICsgJzwvcHJlPic7CiB9CiAK
</data>
<flag name="review"
          id="216218"
          type_id="1"
          status="+"
          setter="dpranke"
    />
          </attachment>
      

    </bug>

</bugzilla>