<?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>88260</bug_id>
          
          <creation_ts>2012-06-04 14:58:48 -0700</creation_ts>
          <short_desc>Make a builder group support+expect multiple loads.</short_desc>
          <delta_ts>2012-06-04 23:38:50 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Chase Phillips">cmp</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ojan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>640866</commentid>
    <comment_count>0</comment_count>
    <who name="Chase Phillips">cmp</who>
    <bug_when>2012-06-04 14:58:48 -0700</bug_when>
    <thetext>Make a builder group support+expect multiple loads.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640867</commentid>
    <comment_count>1</comment_count>
      <attachid>145634</attachid>
    <who name="Chase Phillips">cmp</who>
    <bug_when>2012-06-04 14:59:26 -0700</bug_when>
    <thetext>Created attachment 145634
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640910</commentid>
    <comment_count>2</comment_count>
      <attachid>145634</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-06-04 15:35:21 -0700</bug_when>
    <thetext>Comment on attachment 145634
Patch

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

Thanks for following up on this. I completely forgot about it. :( This looks good. Just a few minor things to cleanup. FYI, when you next upload it, if you use --request-commit in the webkit-patch command it will set cq? indicating that you&apos;d like the reviewer to put the patch in the commit queue once they approve it.

&gt; Tools/ChangeLog:7
&gt; +

This could use a little bit more description (a couple short sentences) about the changes being made, e.g. something like:
Each BuilderGroup now keeps track of how many sub-groups it still expects to load. We only consider the builder group loaded once all the sub-groups have loaded for failed to load.

&gt; Tools/TestResultServer/static-dashboards/builders.js:51
&gt; +CHROMIUM_LINUX_BUILDER_MASTER = new BuilderMaster(&apos;ChromiumMac&apos;, &apos;http://build.chromium.org/p/chromium.linux/&apos;);

s/ChromiumMac/ChromiumLinux

&gt; Tools/TestResultServer/static-dashboards/builders.js:74
&gt; +    this.groups = 0;
&gt; +    this.expectedGroups = expectedGroups;

Can we kill the expectedGroups argument? Instead, in requestBuilderList you increment expectedGroups. Then the rest of the code just works without needing to hard-code the number of expected groups.

&gt; Tools/TestResultServer/static-dashboards/builders.js:75
&gt; +    this.append(builders);

Do we ever pass in a non-empty builders to the constructor? Can we just remove the argument entirely? Then we also wouldn&apos;t need the length check at the beginning of append.

&gt; Tools/TestResultServer/static-dashboards/builders.js:81
&gt; +    if (flags &amp; BuilderGroup.DEFAULT_BUILDER)
&gt; +        this.defaultBuilder = builder;

While you&apos;re modifying this code, would you mind putting a FIXME here to remove this? AFAIK, we don&apos;t actually use DEFAULT_BUILDER in any meaningful way anymore (we always just default to the first builder in alphabetical order).

&gt; Tools/TestResultServer/static-dashboards/builders.js:100
&gt; +    if (this.groups &gt;= this.expectedGroups)
&gt; +        return true;
&gt; +    return false;

Nit: I&apos;d just merge this all into one line:
    return this.groups &gt;= this.expectedGroups;

&gt; Tools/TestResultServer/static-dashboards/builders.js:127
&gt; +      builderGroups[groupName] = builderGroup;

Needs 4 space indent.

&gt; Tools/TestResultServer/static-dashboards/builders.js:210
&gt; +      g_handleBuildersListLoaded();

Needs 4 space indent.

&gt; Tools/TestResultServer/static-dashboards/flakiness_dashboard_unittests.js:648
&gt; +        &apos;@ToT - dummy.org&apos;: new BuilderGroup(BuilderGroup.TOT_WEBKIT, [], 3),

This will obviously need to change given my request to remove expectedGroups from the constructor, but I&apos;m OK with the tests just setting builderGroup.expectedGroups = 3. Somehow the hard-coding bothers me less in a test. :)

&gt; Tools/TestResultServer/static-dashboards/run-unittests.html:57
&gt; +LAYOUT_TESTS_BUILDER_GROUPS[groupName] = new BuilderGroup(BuilderGroup.TOT_WEBKIT, [], 4);

Ditto here. This can set LAYOUT_TESTS_BUILDER_GROUPS[groupName].expectedGroups = 4.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640946</commentid>
    <comment_count>3</comment_count>
      <attachid>145634</attachid>
    <who name="Chase Phillips">cmp</who>
    <bug_when>2012-06-04 16:10:34 -0700</bug_when>
    <thetext>Comment on attachment 145634
Patch

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

&gt;&gt; Tools/ChangeLog:7
&gt;&gt; +
&gt; 
&gt; This could use a little bit more description (a couple short sentences) about the changes being made, e.g. something like:
&gt; Each BuilderGroup now keeps track of how many sub-groups it still expects to load. We only consider the builder group loaded once all the sub-groups have loaded for failed to load.

Done.

&gt;&gt; Tools/TestResultServer/static-dashboards/builders.js:51
&gt;&gt; +CHROMIUM_LINUX_BUILDER_MASTER = new BuilderMaster(&apos;ChromiumMac&apos;, &apos;http://build.chromium.org/p/chromium.linux/&apos;);
&gt; 
&gt; s/ChromiumMac/ChromiumLinux

Done.

&gt;&gt; Tools/TestResultServer/static-dashboards/builders.js:74
&gt;&gt; +    this.expectedGroups = expectedGroups;
&gt; 
&gt; Can we kill the expectedGroups argument? Instead, in requestBuilderList you increment expectedGroups. Then the rest of the code just works without needing to hard-code the number of expected groups.

Done.

&gt;&gt; Tools/TestResultServer/static-dashboards/builders.js:75
&gt;&gt; +    this.append(builders);
&gt; 
&gt; Do we ever pass in a non-empty builders to the constructor? Can we just remove the argument entirely? Then we also wouldn&apos;t need the length check at the beginning of append.

I didn&apos;t find any cases where builders was non-empty, so I removed it and then updated all of the places where an empty list is passed in so the argument is removed.  I removed the length check at the beginning of append.

&gt;&gt; Tools/TestResultServer/static-dashboards/builders.js:81
&gt;&gt; +        this.defaultBuilder = builder;
&gt; 
&gt; While you&apos;re modifying this code, would you mind putting a FIXME here to remove this? AFAIK, we don&apos;t actually use DEFAULT_BUILDER in any meaningful way anymore (we always just default to the first builder in alphabetical order).

Done.

&gt;&gt; Tools/TestResultServer/static-dashboards/builders.js:100
&gt;&gt; +    return false;
&gt; 
&gt; Nit: I&apos;d just merge this all into one line:
&gt;     return this.groups &gt;= this.expectedGroups;

Done.

&gt;&gt; Tools/TestResultServer/static-dashboards/builders.js:127
&gt;&gt; +      builderGroups[groupName] = builderGroup;
&gt; 
&gt; Needs 4 space indent.

Done.

&gt;&gt; Tools/TestResultServer/static-dashboards/builders.js:210
&gt;&gt; +      g_handleBuildersListLoaded();
&gt; 
&gt; Needs 4 space indent.

Done.

&gt; Tools/TestResultServer/static-dashboards/flakiness_dashboard_unittests.js:634
&gt; +        &apos;@DEPS - dummy.org&apos;: new BuilderGroup(BuilderGroup.DEPS_WEBKIT, [], 1),

I also changed these lines and set .expectedGroups directly after line 635.

&gt;&gt; Tools/TestResultServer/static-dashboards/flakiness_dashboard_unittests.js:648
&gt;&gt; +        &apos;@ToT - dummy.org&apos;: new BuilderGroup(BuilderGroup.TOT_WEBKIT, [], 3),
&gt; 
&gt; This will obviously need to change given my request to remove expectedGroups from the constructor, but I&apos;m OK with the tests just setting builderGroup.expectedGroups = 3. Somehow the hard-coding bothers me less in a test. :)

Done.

&gt;&gt; Tools/TestResultServer/static-dashboards/run-unittests.html:57
&gt;&gt; +LAYOUT_TESTS_BUILDER_GROUPS[groupName] = new BuilderGroup(BuilderGroup.TOT_WEBKIT, [], 4);
&gt; 
&gt; Ditto here. This can set LAYOUT_TESTS_BUILDER_GROUPS[groupName].expectedGroups = 4.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640950</commentid>
    <comment_count>4</comment_count>
      <attachid>145648</attachid>
    <who name="Chase Phillips">cmp</who>
    <bug_when>2012-06-04 16:12:16 -0700</bug_when>
    <thetext>Created attachment 145648
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640972</commentid>
    <comment_count>5</comment_count>
      <attachid>145648</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-06-04 16:25:47 -0700</bug_when>
    <thetext>Comment on attachment 145648
Patch

Looks great. Thanks for fixing this! I assume you want this in the commit queue?

Once this lands, you can push it following these instructions: https://sites.google.com/a/chromium.org/dev/developers/testing/changedashboard. I don&apos;t mind pushing it if you&apos;d rather not take the time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641217</commentid>
    <comment_count>6</comment_count>
      <attachid>145648</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-04 23:38:46 -0700</bug_when>
    <thetext>Comment on attachment 145648
Patch

Clearing flags on attachment: 145648

Committed r119463: &lt;http://trac.webkit.org/changeset/119463&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641218</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-04 23:38:50 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145634</attachid>
            <date>2012-06-04 14:59:26 -0700</date>
            <delta_ts>2012-06-04 16:12:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88260-20120604145925.patch</filename>
            <type>text/plain</type>
            <size>14278</size>
            <attacher name="Chase Phillips">cmp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5MjU3CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNDMyMmQ0ODViODAzNjkwMTRjY2Q4YzM2MWE1MmQwZjFm
YzRmMzg0Ni4uNzExOGVmNmEyY2VlNjRkM2Y0NmRiNjBmZTllYjM5NGMwMDEwYzJhYyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIz
IEBACisyMDEyLTA2LTA0ICBDaGFzZSBQaGlsbGlwcyAgPGNtcEBnb29nbGUuY29tPgorCisgICAg
ICAgIE1ha2UgYSBidWlsZGVyIGdyb3VwIHN1cHBvcnQrZXhwZWN0IG11bHRpcGxlIGxvYWRzLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODgyNjAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RSZXN1
bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvYnVpbGRlcnMuanM6CisgICAgICAgIChCdWlsZGVy
R3JvdXApOgorICAgICAgICAoQnVpbGRlckdyb3VwLnByb3RvdHlwZS5zZXRidWlsZGVyKToKKyAg
ICAgICAgKEJ1aWxkZXJHcm91cC5wcm90b3R5cGUuYXBwZW5kKToKKyAgICAgICAgKEJ1aWxkZXJH
cm91cC5wcm90b3R5cGUubG9hZGVkKToKKyAgICAgICAgKHJlcXVlc3RCdWlsZGVyTGlzdC54aHIu
b25sb2FkKToKKyAgICAgICAgKHJlcXVlc3RCdWlsZGVyTGlzdC54aHIub25lcnJvcik6CisgICAg
ICAgIChvbkVycm9yTG9hZGluZ0J1aWxkZXJMaXN0KToKKyAgICAgICAgKGxvYWRCdWlsZGVyc0xp
c3QpOgorICAgICAgICAqIFRlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvZmxha2lu
ZXNzX2Rhc2hib2FyZF91bml0dGVzdHMuanM6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKiBU
ZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL3J1bi11bml0dGVzdHMuaHRtbDoKKwog
MjAxMi0wNi0wMSAgSmVzc2llIEJlcmxpbiAgPGpiZXJsaW5AYXBwbGUuY29tPgogCiAgICAgICAg
IEZpeCBXaW5kb3dzIGJ1aWxkLgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9z
dGF0aWMtZGFzaGJvYXJkcy9idWlsZGVycy5qcyBiL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3Rh
dGljLWRhc2hib2FyZHMvYnVpbGRlcnMuanMKaW5kZXggZTlmNDVmMWQ5NzE0YjViYTg1OThjMTVj
ZDAyNGM5OTFiMTZmOTA5ZC4uZjc3NDljMGNjMDdmOWQwZTE4NjlkN2Y4OTRjMTZkMWQ3NzJiYjZh
ZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9i
dWlsZGVycy5qcworKysgYi9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRz
L2J1aWxkZXJzLmpzCkBAIC00Niw2ICs0Niw5IEBAIEJ1aWxkZXJNYXN0ZXIucHJvdG90eXBlLmJ1
aWxkZXJKc29uUGF0aCA9IGZ1bmN0aW9uKCkKIH07CiAKIENIUk9NSVVNX0JVSUxERVJfTUFTVEVS
ID0gbmV3IEJ1aWxkZXJNYXN0ZXIoJ0Nocm9taXVtJywgJ2h0dHA6Ly9idWlsZC5jaHJvbWl1bS5v
cmcvcC9jaHJvbWl1bS8nKTsKK0NIUk9NSVVNX1dJTl9CVUlMREVSX01BU1RFUiA9IG5ldyBCdWls
ZGVyTWFzdGVyKCdDaHJvbWl1bVdpbicsICdodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL3AvY2hy
b21pdW0ud2luLycpOworQ0hST01JVU1fTUFDX0JVSUxERVJfTUFTVEVSID0gbmV3IEJ1aWxkZXJN
YXN0ZXIoJ0Nocm9taXVtTWFjJywgJ2h0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1
bS5tYWMvJyk7CitDSFJPTUlVTV9MSU5VWF9CVUlMREVSX01BU1RFUiA9IG5ldyBCdWlsZGVyTWFz
dGVyKCdDaHJvbWl1bU1hYycsICdodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0u
bGludXgvJyk7CiBDSFJPTUlVTU9TX0JVSUxERVJfTUFTVEVSID0gbmV3IEJ1aWxkZXJNYXN0ZXIo
J0Nocm9taXVtQ2hyb21pdW1PUycsICdodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL3AvY2hyb21p
dW0uY2hyb21pdW1vcy8nKTsKIENIUk9NSVVNX0dQVV9CVUlMREVSX01BU1RFUiA9IG5ldyBCdWls
ZGVyTWFzdGVyKCdDaHJvbWl1bUdQVScsICdodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL3AvY2hy
b21pdW0uZ3B1LycpOwogQ0hST01JVU1fR1BVX0ZZSV9CVUlMREVSX01BU1RFUiA9IG5ldyBCdWls
ZGVyTWFzdGVyKCdDaHJvbWl1bUdQVUZZSScsICdodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL3Av
Y2hyb21pdW0uZ3B1LmZ5aS8nKTsKQEAgLTYxLDIwICs2NCw0MCBAQCB2YXIgTEVHQUNZX0JVSUxE
RVJfTUFTVEVSU19UT19HUk9VUFMgPSB7CiAgICAgJ3dlYmtpdC5vcmcnOiAnQFRvVCAtIHdlYmtp
dC5vcmcnCiB9OwogCi1mdW5jdGlvbiBCdWlsZGVyR3JvdXAoaXNUb1RXZWJLaXQsIGJ1aWxkZXJz
KQorZnVuY3Rpb24gQnVpbGRlckdyb3VwKGlzVG9UV2ViS2l0LCBidWlsZGVycywgZXhwZWN0ZWRH
cm91cHMpCiB7CiAgICAgdGhpcy5pc1RvVFdlYktpdCA9IGlzVG9UV2ViS2l0OwogICAgIC8vIE1h
cCBvZiBidWlsZGVyTmFtZSAodGhlIG5hbWUgc2hvd24gaW4gdGhlIHdhdGVyZmFsbCkgdG8gYnVp
bGRlclBhdGggKHRoZQogICAgIC8vIHBhdGggdXNlZCBpbiB0aGUgYnVpbGRlcidzIFVSTCkKICAg
ICB0aGlzLmJ1aWxkZXJzID0ge307CisgICAgdGhpcy5ncm91cHMgPSAwOworICAgIHRoaXMuZXhw
ZWN0ZWRHcm91cHMgPSBleHBlY3RlZEdyb3VwczsKKyAgICB0aGlzLmFwcGVuZChidWlsZGVycyk7
Cit9CisKK0J1aWxkZXJHcm91cC5wcm90b3R5cGUuc2V0YnVpbGRlciA9IGZ1bmN0aW9uKGJ1aWxk
ZXIsIGZsYWdzKSB7CisgICAgdGhpcy5idWlsZGVyc1tidWlsZGVyXSA9IGJ1aWxkZXIucmVwbGFj
ZSgvWyAuKCldL2csICdfJyk7CisgICAgaWYgKGZsYWdzICYgQnVpbGRlckdyb3VwLkRFRkFVTFRf
QlVJTERFUikKKyAgICAgICAgdGhpcy5kZWZhdWx0QnVpbGRlciA9IGJ1aWxkZXI7Cit9OworCitC
dWlsZGVyR3JvdXAucHJvdG90eXBlLmFwcGVuZCA9IGZ1bmN0aW9uKGJ1aWxkZXJzKSB7CisgICAg
Ly8gSWYgYnVpbGRlcnMgaXMgZW1wdHksIHRoaXMgd2FzIHRoZSBpbml0aWFsIHNldHVwIGNhbGws
IHNvIGRvbid0CisgICAgLy8gY291bnQgdGhpcyBhcyBhIHRydWUgYXBwZW5kKCkuCisgICAgaWYg
KGJ1aWxkZXJzLmxlbmd0aCA9PSAwKQorICAgICAgICByZXR1cm47CiAgICAgYnVpbGRlcnMuZm9y
RWFjaChmdW5jdGlvbihidWlsZGVyQW5kRmxhZ3MpIHsKICAgICAgICAgdmFyIGJ1aWxkZXIgPSBi
dWlsZGVyQW5kRmxhZ3NbMF07CiAgICAgICAgIHZhciBmbGFncyA9IGJ1aWxkZXJBbmRGbGFnc1sx
XTsKLQotICAgICAgICB0aGlzLmJ1aWxkZXJzW2J1aWxkZXJdID0gYnVpbGRlci5yZXBsYWNlKC9b
IC4oKV0vZywgJ18nKTsKLSAgICAgICAgaWYgKGZsYWdzICYgQnVpbGRlckdyb3VwLkRFRkFVTFRf
QlVJTERFUikKLSAgICAgICAgICAgIHRoaXMuZGVmYXVsdEJ1aWxkZXIgPSBidWlsZGVyOworICAg
ICAgICB0aGlzLnNldGJ1aWxkZXIoYnVpbGRlciwgZmxhZ3MpOwogICAgIH0sIHRoaXMpOworICAg
IHRoaXMuZ3JvdXBzICs9IDE7Cit9OworCitCdWlsZGVyR3JvdXAucHJvdG90eXBlLmxvYWRlZCA9
IGZ1bmN0aW9uKCkgeworICAgIGlmICh0aGlzLmdyb3VwcyA+PSB0aGlzLmV4cGVjdGVkR3JvdXBz
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIEJ1aWxkZXJH
cm91cC5wcm90b3R5cGUuc2V0dXAgPSBmdW5jdGlvbigpCkBAIC05OCw4ICsxMjEsMTEgQEAgZnVu
Y3Rpb24gYXNzb2NpYXRlQnVpbGRlcnNXaXRoTWFzdGVyKGJ1aWxkZXJzLCBtYXN0ZXIpCiAgICAg
fSk7CiB9CiAKLWZ1bmN0aW9uIHJlcXVlc3RCdWlsZGVyTGlzdChidWlsZGVyR3JvdXBzLCBidWls
ZGVyRmlsdGVyLCBtYXN0ZXIsIGdyb3VwTmFtZSwgZ3JvdXBFbnVtKQorZnVuY3Rpb24gcmVxdWVz
dEJ1aWxkZXJMaXN0KGJ1aWxkZXJHcm91cHMsIGJ1aWxkZXJGaWx0ZXIsIG1hc3RlciwgZ3JvdXBO
YW1lLCBncm91cEVudW0sIGJ1aWxkZXJHcm91cCkKIHsKKyAgICBpZiAoIShncm91cE5hbWUgaW4g
YnVpbGRlckdyb3VwcykpCisgICAgICBidWlsZGVyR3JvdXBzW2dyb3VwTmFtZV0gPSBidWlsZGVy
R3JvdXA7CisKICAgICB2YXIgb25Mb2FkID0gcGFydGlhbChvbkJ1aWxkZXJMaXN0TG9hZCwgYnVp
bGRlckdyb3VwcywgYnVpbGRlckZpbHRlciwgbWFzdGVyLCBncm91cE5hbWUsIGdyb3VwRW51bSk7
CiAgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwogICAgIHZhciB1cmwgPSBtYXN0
ZXIuYnVpbGRlckpzb25QYXRoKCk7CkBAIC0xMDgsOSArMTM0LDkgQEAgZnVuY3Rpb24gcmVxdWVz
dEJ1aWxkZXJMaXN0KGJ1aWxkZXJHcm91cHMsIGJ1aWxkZXJGaWx0ZXIsIG1hc3RlciwgZ3JvdXBO
YW1lLCBncm8KICAgICAgICAgaWYgKHhoci5zdGF0dXMgPT0gMjAwKQogICAgICAgICAgICAgb25M
b2FkKEpTT04ucGFyc2UoeGhyLnJlc3BvbnNlKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
IG9uRXJyb3JMb2FkaW5nQnVpbGRlckxpc3QodXJsKTsKKyAgICAgICAgICAgIG9uRXJyb3JMb2Fk
aW5nQnVpbGRlckxpc3QodXJsLCBidWlsZGVyR3JvdXBzLCBncm91cE5hbWUpOwogICAgIH07Ci0g
ICAgeGhyLm9uZXJyb3IgPSBmdW5jdGlvbigpIHsgb25FcnJvckxvYWRpbmdCdWlsZGVyTGlzdCh1
cmwpOyB9OworICAgIHhoci5vbmVycm9yID0gZnVuY3Rpb24oKSB7IG9uRXJyb3JMb2FkaW5nQnVp
bGRlckxpc3QodXJsLCBidWlsZGVyR3JvdXBzLCBncm91cE5hbWUpOyB9OwogICAgIHhoci5zZW5k
KCk7CiB9CiAKQEAgLTE3OSw1NiArMjA1LDcwIEBAIGZ1bmN0aW9uIG9uQnVpbGRlckxpc3RMb2Fk
KGJ1aWxkZXJHcm91cHMsIGJ1aWxkZXJGaWx0ZXIsIG1hc3RlciwgZ3JvdXBOYW1lLCBncm91CiB7
CiAgICAgdmFyIGJ1aWxkZXJzID0gZ2VuZXJhdGVCdWlsZGVyc0Zyb21CdWlsZGVyTGlzdChPYmpl
Y3Qua2V5cyhqc29uKSwgYnVpbGRlckZpbHRlcik7CiAgICAgYXNzb2NpYXRlQnVpbGRlcnNXaXRo
TWFzdGVyKGJ1aWxkZXJzLCBtYXN0ZXIpOwotICAgIGJ1aWxkZXJHcm91cHNbZ3JvdXBOYW1lXSA9
IG5ldyBCdWlsZGVyR3JvdXAoZ3JvdXBFbnVtLCBidWlsZGVycyk7Ci0gICAgZ19oYW5kbGVCdWls
ZGVyc0xpc3RMb2FkZWQoKTsKKyAgICBidWlsZGVyR3JvdXBzW2dyb3VwTmFtZV0uYXBwZW5kKGJ1
aWxkZXJzKTsKKyAgICBpZiAoYnVpbGRlckdyb3Vwc1tncm91cE5hbWVdLmxvYWRlZCgpKQorICAg
ICAgZ19oYW5kbGVCdWlsZGVyc0xpc3RMb2FkZWQoKTsKIH0KIAotZnVuY3Rpb24gb25FcnJvckxv
YWRpbmdCdWlsZGVyTGlzdCh1cmwpCitmdW5jdGlvbiBvbkVycm9yTG9hZGluZ0J1aWxkZXJMaXN0
KHVybCwgYnVpbGRlckdyb3VwcywgZ3JvdXBOYW1lKQogewotICAgIGFsZXJ0KCdDb3VsZCBub3Qg
bG9hZCBsaXN0IG9mIGJ1aWxkZXJzIGZyb20gJyArIHVybCArICcuIFRyeSByZWxvYWRpbmcuJyk7
CisgICAgYnVpbGRlckdyb3Vwc1tncm91cE5hbWVdLmdyb3VwcyArPSAxOworICAgIGNvbnNvbGUu
bG9nKCdDb3VsZCBub3QgbG9hZCBsaXN0IG9mIGJ1aWxkZXJzIGZyb20gJyArIHVybCArICcuIFRy
eSByZWxvYWRpbmcuJyk7CiB9CiAKLWZ1bmN0aW9uIGxvYWRCdWlsZGVyc0xpc3QoZ3JvdXAsIHRl
c3RUeXBlKSB7CitmdW5jdGlvbiBsb2FkQnVpbGRlcnNMaXN0KGdyb3VwTmFtZSwgdGVzdFR5cGUp
IHsKICAgICBpZiAodGVzdFR5cGUgPT0gJ2dwdV90ZXN0cycpIHsKLSAgICAgICAgc3dpdGNoKGdy
b3VwKSB7CisgICAgICAgIHN3aXRjaChncm91cE5hbWUpIHsKICAgICAgICAgY2FzZSAnQERFUFMg
LSBjaHJvbWl1bS5vcmcnOgotICAgICAgICAgICAgcmVxdWVzdEJ1aWxkZXJMaXN0KENIUk9NSVVN
X0dQVV9URVNUU19CVUlMREVSX0dST1VQUywgaXNDaHJvbWl1bURlcHNHcHVUZXN0UnVubmVyLCBD
SFJPTUlVTV9HUFVfQlVJTERFUl9NQVNURVIsIGdyb3VwLCBCdWlsZGVyR3JvdXAuREVQU19XRUJL
SVQpOworICAgICAgICAgICAgdmFyIGJ1aWxkZXJHcm91cCA9IG5ldyBCdWlsZGVyR3JvdXAoQnVp
bGRlckdyb3VwLkRFUFNfV0VCS0lULCBbXSwgMSk7CisgICAgICAgICAgICByZXF1ZXN0QnVpbGRl
ckxpc3QoQ0hST01JVU1fR1BVX1RFU1RTX0JVSUxERVJfR1JPVVBTLCBpc0Nocm9taXVtRGVwc0dw
dVRlc3RSdW5uZXIsIENIUk9NSVVNX0dQVV9CVUlMREVSX01BU1RFUiwgZ3JvdXBOYW1lLCBCdWls
ZGVyR3JvdXAuREVQU19XRUJLSVQsIGJ1aWxkZXJHcm91cCk7CiAgICAgICAgICAgICBicmVhazsK
IAogICAgICAgICBjYXNlICdAREVQUyBGWUkgLSBjaHJvbWl1bS5vcmcnOgotICAgICAgICAgICAg
cmVxdWVzdEJ1aWxkZXJMaXN0KENIUk9NSVVNX0dQVV9URVNUU19CVUlMREVSX0dST1VQUywgaXND
aHJvbWl1bURlcHNGeWlHcHVUZXN0UnVubmVyLCBDSFJPTUlVTV9HUFVfRllJX0JVSUxERVJfTUFT
VEVSLCBncm91cCwgQnVpbGRlckdyb3VwLkRFUFNfV0VCS0lUKTsKKyAgICAgICAgICAgIHZhciBi
dWlsZGVyR3JvdXAgPSBuZXcgQnVpbGRlckdyb3VwKEJ1aWxkZXJHcm91cC5ERVBTX1dFQktJVCwg
W10sIDEpOworICAgICAgICAgICAgcmVxdWVzdEJ1aWxkZXJMaXN0KENIUk9NSVVNX0dQVV9URVNU
U19CVUlMREVSX0dST1VQUywgaXNDaHJvbWl1bURlcHNGeWlHcHVUZXN0UnVubmVyLCBDSFJPTUlV
TV9HUFVfRllJX0JVSUxERVJfTUFTVEVSLCBncm91cE5hbWUsIEJ1aWxkZXJHcm91cC5ERVBTX1dF
QktJVCwgYnVpbGRlckdyb3VwKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2Ug
J0BUb1QgLSBjaHJvbWl1bS5vcmcnOgotICAgICAgICAgICAgcmVxdWVzdEJ1aWxkZXJMaXN0KENI
Uk9NSVVNX0dQVV9URVNUU19CVUlMREVSX0dST1VQUywgaXNDaHJvbWl1bVRpcE9mVHJlZUdwdVRl
c3RSdW5uZXIsIENIUk9NSVVNX1dFQktJVF9CVUlMREVSX01BU1RFUiwgZ3JvdXAsIEJ1aWxkZXJH
cm91cC5UT1RfV0VCS0lUKTsKKyAgICAgICAgICAgIHZhciBidWlsZGVyR3JvdXAgPSBuZXcgQnVp
bGRlckdyb3VwKEJ1aWxkZXJHcm91cC5UT1RfV0VCS0lULCBbXSwgMSk7CisgICAgICAgICAgICBy
ZXF1ZXN0QnVpbGRlckxpc3QoQ0hST01JVU1fR1BVX1RFU1RTX0JVSUxERVJfR1JPVVBTLCBpc0No
cm9taXVtVGlwT2ZUcmVlR3B1VGVzdFJ1bm5lciwgQ0hST01JVU1fV0VCS0lUX0JVSUxERVJfTUFT
VEVSLCBncm91cE5hbWUsIEJ1aWxkZXJHcm91cC5UT1RfV0VCS0lULCBidWlsZGVyR3JvdXApOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKHRlc3RUeXBlID09
ICdsYXlvdXQtdGVzdHMnKSB7Ci0gICAgICAgIHN3aXRjaChncm91cCkgeworICAgICAgICBzd2l0
Y2goZ3JvdXBOYW1lKSB7CiAgICAgICAgIGNhc2UgJ0BUb1QgLSBjaHJvbWl1bS5vcmcnOgotICAg
ICAgICAgICAgcmVxdWVzdEJ1aWxkZXJMaXN0KExBWU9VVF9URVNUU19CVUlMREVSX0dST1VQUywg
aXNDaHJvbWl1bVdlYmtpdFRpcE9mVHJlZVRlc3RSdW5uZXIsIENIUk9NSVVNX1dFQktJVF9CVUlM
REVSX01BU1RFUiwgZ3JvdXAsIEJ1aWxkZXJHcm91cC5UT1RfV0VCS0lUKTsKKyAgICAgICAgICAg
IHZhciBidWlsZGVyR3JvdXAgPSBuZXcgQnVpbGRlckdyb3VwKEJ1aWxkZXJHcm91cC5UT1RfV0VC
S0lULCBbXSwgMSk7CisgICAgICAgICAgICByZXF1ZXN0QnVpbGRlckxpc3QoTEFZT1VUX1RFU1RT
X0JVSUxERVJfR1JPVVBTLCBpc0Nocm9taXVtV2Via2l0VGlwT2ZUcmVlVGVzdFJ1bm5lciwgQ0hS
T01JVU1fV0VCS0lUX0JVSUxERVJfTUFTVEVSLCBncm91cE5hbWUsIEJ1aWxkZXJHcm91cC5UT1Rf
V0VCS0lULCBidWlsZGVyR3JvdXApOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2Fz
ZSAnQFRvVCAtIHdlYmtpdC5vcmcnOgotICAgICAgICAgICAgcmVxdWVzdEJ1aWxkZXJMaXN0KExB
WU9VVF9URVNUU19CVUlMREVSX0dST1VQUywgaXNXZWJraXRUZXN0UnVubmVyLCBXRUJLSVRfQlVJ
TERFUl9NQVNURVIsIGdyb3VwLCBCdWlsZGVyR3JvdXAuVE9UX1dFQktJVCk7CisgICAgICAgICAg
ICB2YXIgYnVpbGRlckdyb3VwID0gbmV3IEJ1aWxkZXJHcm91cChCdWlsZGVyR3JvdXAuVE9UX1dF
QktJVCwgW10sIDEpOworICAgICAgICAgICAgcmVxdWVzdEJ1aWxkZXJMaXN0KExBWU9VVF9URVNU
U19CVUlMREVSX0dST1VQUywgaXNXZWJraXRUZXN0UnVubmVyLCBXRUJLSVRfQlVJTERFUl9NQVNU
RVIsIGdyb3VwTmFtZSwgQnVpbGRlckdyb3VwLlRPVF9XRUJLSVQsIGJ1aWxkZXJHcm91cCk7CiAg
ICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlICdAREVQUyAtIGNocm9taXVtLm9yZyc6
Ci0gICAgICAgICAgICByZXF1ZXN0QnVpbGRlckxpc3QoTEFZT1VUX1RFU1RTX0JVSUxERVJfR1JP
VVBTLCBpc0Nocm9taXVtV2Via2l0RGVwc1Rlc3RSdW5uZXIsIENIUk9NSVVNX1dFQktJVF9CVUlM
REVSX01BU1RFUiwgZ3JvdXAsIEJ1aWxkZXJHcm91cC5ERVBTX1dFQktJVCk7CisgICAgICAgICAg
ICB2YXIgYnVpbGRlckdyb3VwID0gbmV3IEJ1aWxkZXJHcm91cChCdWlsZGVyR3JvdXAuREVQU19X
RUJLSVQsIFtdLCAxKTsKKyAgICAgICAgICAgIHJlcXVlc3RCdWlsZGVyTGlzdChMQVlPVVRfVEVT
VFNfQlVJTERFUl9HUk9VUFMsIGlzQ2hyb21pdW1XZWJraXREZXBzVGVzdFJ1bm5lciwgQ0hST01J
VU1fV0VCS0lUX0JVSUxERVJfTUFTVEVSLCBncm91cE5hbWUsIEJ1aWxkZXJHcm91cC5ERVBTX1dF
QktJVCwgYnVpbGRlckdyb3VwKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
fSBlbHNlIHsKLSAgICAgICAgc3dpdGNoKGdyb3VwKSB7CisgICAgICAgIHN3aXRjaChncm91cE5h
bWUpIHsKICAgICAgICAgY2FzZSAnQERFUFMgLSBjaHJvbWl1bS5vcmcnOgotICAgICAgICAgICAg
cmVxdWVzdEJ1aWxkZXJMaXN0KENIUk9NSVVNX0dURVNUU19CVUlMREVSX0dST1VQUywgaXNDaHJv
bWl1bURlcHNHVGVzdFJ1bm5lciwgQ0hST01JVU1fQlVJTERFUl9NQVNURVIsIGdyb3VwLCBCdWls
ZGVyR3JvdXAuREVQU19XRUJLSVQpOworICAgICAgICAgICAgdmFyIGJ1aWxkZXJHcm91cCA9IG5l
dyBCdWlsZGVyR3JvdXAoQnVpbGRlckdyb3VwLkRFUFNfV0VCS0lULCBbXSwgNCk7CisgICAgICAg
ICAgICByZXF1ZXN0QnVpbGRlckxpc3QoQ0hST01JVU1fR1RFU1RTX0JVSUxERVJfR1JPVVBTLCBp
c0Nocm9taXVtRGVwc0dUZXN0UnVubmVyLCBDSFJPTUlVTV9CVUlMREVSX01BU1RFUiwgZ3JvdXBO
YW1lLCBCdWlsZGVyR3JvdXAuREVQU19XRUJLSVQsIGJ1aWxkZXJHcm91cCk7CisgICAgICAgICAg
ICByZXF1ZXN0QnVpbGRlckxpc3QoQ0hST01JVU1fR1RFU1RTX0JVSUxERVJfR1JPVVBTLCBpc0No
cm9taXVtRGVwc0dUZXN0UnVubmVyLCBDSFJPTUlVTV9XSU5fQlVJTERFUl9NQVNURVIsIGdyb3Vw
TmFtZSwgQnVpbGRlckdyb3VwLkRFUFNfV0VCS0lULCBidWlsZGVyR3JvdXApOworICAgICAgICAg
ICAgcmVxdWVzdEJ1aWxkZXJMaXN0KENIUk9NSVVNX0dURVNUU19CVUlMREVSX0dST1VQUywgaXND
aHJvbWl1bURlcHNHVGVzdFJ1bm5lciwgQ0hST01JVU1fTUFDX0JVSUxERVJfTUFTVEVSLCBncm91
cE5hbWUsIEJ1aWxkZXJHcm91cC5ERVBTX1dFQktJVCwgYnVpbGRlckdyb3VwKTsKKyAgICAgICAg
ICAgIHJlcXVlc3RCdWlsZGVyTGlzdChDSFJPTUlVTV9HVEVTVFNfQlVJTERFUl9HUk9VUFMsIGlz
Q2hyb21pdW1EZXBzR1Rlc3RSdW5uZXIsIENIUk9NSVVNX0xJTlVYX0JVSUxERVJfTUFTVEVSLCBn
cm91cE5hbWUsIEJ1aWxkZXJHcm91cC5ERVBTX1dFQktJVCwgYnVpbGRlckdyb3VwKTsKICAgICAg
ICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgJ0BERVBTIENyT1MgLSBjaHJvbWl1bS5vcmcn
OgotICAgICAgICAgICAgcmVxdWVzdEJ1aWxkZXJMaXN0KENIUk9NSVVNX0dURVNUU19CVUlMREVS
X0dST1VQUywgaXNDaHJvbWl1bURlcHNDcm9zR1Rlc3RSdW5uZXIsIENIUk9NSVVNT1NfQlVJTERF
Ul9NQVNURVIsIGdyb3VwLCBCdWlsZGVyR3JvdXAuREVQU19XRUJLSVQpOworICAgICAgICAgICAg
dmFyIGJ1aWxkZXJHcm91cCA9IG5ldyBCdWlsZGVyR3JvdXAoQnVpbGRlckdyb3VwLkRFUFNfV0VC
S0lULCBbXSwgMSk7CisgICAgICAgICAgICByZXF1ZXN0QnVpbGRlckxpc3QoQ0hST01JVU1fR1RF
U1RTX0JVSUxERVJfR1JPVVBTLCBpc0Nocm9taXVtRGVwc0Nyb3NHVGVzdFJ1bm5lciwgQ0hST01J
VU1PU19CVUlMREVSX01BU1RFUiwgZ3JvdXBOYW1lLCBCdWlsZGVyR3JvdXAuREVQU19XRUJLSVQs
IGJ1aWxkZXJHcm91cCk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlICdAVG9U
IC0gY2hyb21pdW0ub3JnJzoKLSAgICAgICAgICAgIHJlcXVlc3RCdWlsZGVyTGlzdChDSFJPTUlV
TV9HVEVTVFNfQlVJTERFUl9HUk9VUFMsIGlzQ2hyb21pdW1UaXBPZlRyZWVHVGVzdFJ1bm5lciwg
Q0hST01JVU1fV0VCS0lUX0JVSUxERVJfTUFTVEVSLCBncm91cCwgQnVpbGRlckdyb3VwLlRPVF9X
RUJLSVQpOworICAgICAgICAgICAgdmFyIGJ1aWxkZXJHcm91cCA9IG5ldyBCdWlsZGVyR3JvdXAo
QnVpbGRlckdyb3VwLlRPVF9XRUJLSVQsIFtdLCAxKTsKKyAgICAgICAgICAgIHJlcXVlc3RCdWls
ZGVyTGlzdChDSFJPTUlVTV9HVEVTVFNfQlVJTERFUl9HUk9VUFMsIGlzQ2hyb21pdW1UaXBPZlRy
ZWVHVGVzdFJ1bm5lciwgQ0hST01JVU1fV0VCS0lUX0JVSUxERVJfTUFTVEVSLCBncm91cE5hbWUs
IEJ1aWxkZXJHcm91cC5UT1RfV0VCS0lULCBidWlsZGVyR3JvdXApOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UmVzdWx0U2VydmVy
L3N0YXRpYy1kYXNoYm9hcmRzL2ZsYWtpbmVzc19kYXNoYm9hcmRfdW5pdHRlc3RzLmpzIGIvVG9v
bHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9mbGFraW5lc3NfZGFzaGJvYXJk
X3VuaXR0ZXN0cy5qcwppbmRleCAwZGExOTk3MjU5Yzc4NmYyODQ2NWM1YmQ5MGRhOWYxODBmMGI2
OTc5Li5lYjVjODA5ZjUxM2U3MTUxNGQwMDAyODkzNjQ5ZTJjYTMxYmE2ZTI5IDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2ZsYWtpbmVzc19kYXNo
Ym9hcmRfdW5pdHRlc3RzLmpzCisrKyBiL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRh
c2hib2FyZHMvZmxha2luZXNzX2Rhc2hib2FyZF91bml0dGVzdHMuanMKQEAgLTYzMCw4ICs2MzAs
OCBAQCB0ZXN0KCdhZGRCdWlsZGVyTG9hZEVycm9ycycsIDEsIGZ1bmN0aW9uKCkgewogdGVzdCgn
YnVpbGRlckdyb3VwSXNUb1RXZWJLaXRBdHRyaWJ1dGUnLCAyLCBmdW5jdGlvbigpIHsKICAgICB2
YXIgZHVtbXlNYXN0ZXIgPSBuZXcgQnVpbGRlck1hc3RlcignZHVtbXkub3JnJywgJ2h0dHA6Ly9i
dWlsZC5kdW1teS5vcmcnKTsKICAgICB2YXIgdGVzdEJ1aWxkZXJHcm91cHMgPSB7Ci0gICAgICAg
ICdAVG9UIC0gZHVtbXkub3JnJzogbnVsbCwKLSAgICAgICAgJ0BERVBTIC0gZHVtbXkub3JnJzog
bnVsbCwKKyAgICAgICAgJ0BUb1QgLSBkdW1teS5vcmcnOiBuZXcgQnVpbGRlckdyb3VwKEJ1aWxk
ZXJHcm91cC5UT1RfV0VCS0lULCBbXSwgMSksCisgICAgICAgICdAREVQUyAtIGR1bW15Lm9yZyc6
IG5ldyBCdWlsZGVyR3JvdXAoQnVpbGRlckdyb3VwLkRFUFNfV0VCS0lULCBbXSwgMSksCiAgICAg
fQogICAgIHZhciB0ZXN0SlNPTkRhdGEgPSAieyBcIkR1bW15IEJ1aWxkZXIgMVwiOiBudWxsLCBc
IkR1bW15IEJ1aWxkZXIgMlwiOiBudWxsIH0iOwogCkBAIC02NDIsNiArNjQyLDIyIEBAIHRlc3Qo
J2J1aWxkZXJHcm91cElzVG9UV2ViS2l0QXR0cmlidXRlJywgMiwgZnVuY3Rpb24oKSB7CiAgICAg
ZXF1YWwodGVzdEJ1aWxkZXJHcm91cHNbJ0BERVBTIC0gZHVtbXkub3JnJ10uaXNUb1RXZWJLaXQs
IGZhbHNlKTsKIH0pOwogCit0ZXN0KCdidWlsZGVyR3JvdXBFeHBlY3RlZEdyb3VwcycsIDQsIGZ1
bmN0aW9uKCkgeworICAgIHZhciBkdW1teU1hc3RlciA9IG5ldyBCdWlsZGVyTWFzdGVyKCdkdW1t
eS5vcmcnLCAnaHR0cDovL2J1aWxkLmR1bW15Lm9yZycpOworICAgIHZhciB0ZXN0QnVpbGRlckdy
b3VwcyA9IHsKKyAgICAgICAgJ0BUb1QgLSBkdW1teS5vcmcnOiBuZXcgQnVpbGRlckdyb3VwKEJ1
aWxkZXJHcm91cC5UT1RfV0VCS0lULCBbXSwgMyksCisgICAgfQorICAgIHZhciB0ZXN0SlNPTkRh
dGEgPSAieyBcIkR1bW15IEJ1aWxkZXIgMVwiOiBudWxsIH0iOworICAgIGVxdWFsKHRlc3RCdWls
ZGVyR3JvdXBzWydAVG9UIC0gZHVtbXkub3JnJ10uZXhwZWN0ZWRHcm91cHMsIDMpOworICAgIG9u
QnVpbGRlckxpc3RMb2FkKHRlc3RCdWlsZGVyR3JvdXBzLCAgZnVuY3Rpb24oKSB7IHJldHVybiB0
cnVlOyB9LCBkdW1teU1hc3RlciwgJ0BUb1QgLSBkdW1teS5vcmcnLCBCdWlsZGVyR3JvdXAuVE9U
X1dFQktJVCwgSlNPTi5wYXJzZSh0ZXN0SlNPTkRhdGEpKTsKKyAgICBlcXVhbCh0ZXN0QnVpbGRl
ckdyb3Vwc1snQFRvVCAtIGR1bW15Lm9yZyddLmdyb3VwcywgMSk7CisgICAgdmFyIHRlc3RKU09O
RGF0YSA9ICJ7IFwiRHVtbXkgQnVpbGRlciAyXCI6IG51bGwgfSI7CisgICAgb25CdWlsZGVyTGlz
dExvYWQodGVzdEJ1aWxkZXJHcm91cHMsICBmdW5jdGlvbigpIHsgcmV0dXJuIHRydWU7IH0sIGR1
bW15TWFzdGVyLCAnQFRvVCAtIGR1bW15Lm9yZycsIEJ1aWxkZXJHcm91cC5UT1RfV0VCS0lULCBK
U09OLnBhcnNlKHRlc3RKU09ORGF0YSkpOworICAgIGVxdWFsKHRlc3RCdWlsZGVyR3JvdXBzWydA
VG9UIC0gZHVtbXkub3JnJ10uZ3JvdXBzLCAyKTsKKyAgICBvbkVycm9yTG9hZGluZ0J1aWxkZXJM
aXN0KCdodHRwOi8vYnVpbGQuZHVtbXkub3JnJywgdGVzdEJ1aWxkZXJHcm91cHMsICAnQFRvVCAt
IGR1bW15Lm9yZycpOworICAgIGVxdWFsKHRlc3RCdWlsZGVyR3JvdXBzWydAVG9UIC0gZHVtbXku
b3JnJ10uZ3JvdXBzLCAzKTsKK30pOworCiB0ZXN0KCdzb3J0VGVzdHMnLCA0LCBmdW5jdGlvbigp
IHsKICAgICB2YXIgdGVzdDEgPSBjcmVhdGVSZXN1bHRzT2JqZWN0Rm9yVGVzdCgnZm9vL3Rlc3Qx
Lmh0bWwnLCAnZHVtbXlCdWlsZGVyJyk7CiAgICAgdmFyIHRlc3QyID0gY3JlYXRlUmVzdWx0c09i
amVjdEZvclRlc3QoJ2Zvby90ZXN0Mi5odG1sJywgJ2R1bW15QnVpbGRlcicpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9ydW4tdW5pdHRlc3Rz
Lmh0bWwgYi9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL3J1bi11bml0
dGVzdHMuaHRtbAppbmRleCBiNzQ1MWI1ZjA4OWNkMWE2NTJhNTBiZGIyNmQzYWEwZWE1ZjJiYzBj
Li5lMDM2ODg2MWQyMzk2NzkzN2EzOTM3MmRlN2E2M2Q5OTA3MTQyNmMzIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL3J1bi11bml0dGVzdHMuaHRt
bAorKysgYi9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL3J1bi11bml0
dGVzdHMuaHRtbApAQCAtNTIsOSArNTIsMTAgQEAgZnVuY3Rpb24gZ19oYW5kbGVCdWlsZGVyc0xp
c3RMb2FkZWQoKSB7fTsKIAogPHNjcmlwdD4KIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJyN1c2VU
ZXN0RGF0YT10cnVlJzsKLXZhciBidWlsZGVyR3JvdXAgPSAnQFRvVCAtIGNocm9taXVtLm9yZyc7
Cit2YXIgZ3JvdXBOYW1lID0gJ0BUb1QgLSBjaHJvbWl1bS5vcmcnOwogdmFyIGJ1aWxkZXJzID0g
eydXZWJraXQgTGludXgnOiAnJywgJ1dlYmtpdCBMaW51eCAoZGJnKSc6ICcnLCAnV2Via2l0IE1h
YzEwLjUnOiAnJywgJ1dlYmtpdCBXaW4nOiAnJ307Ci1vbkJ1aWxkZXJMaXN0TG9hZChMQVlPVVRf
VEVTVFNfQlVJTERFUl9HUk9VUFMsIGlzQ2hyb21pdW1XZWJraXRUaXBPZlRyZWVUZXN0UnVubmVy
LCBDSFJPTUlVTV9XRUJLSVRfQlVJTERFUl9NQVNURVIsIGJ1aWxkZXJHcm91cCwgQnVpbGRlckdy
b3VwLlRPVF9XRUJLSVQsIGJ1aWxkZXJzKTsKK0xBWU9VVF9URVNUU19CVUlMREVSX0dST1VQU1tn
cm91cE5hbWVdID0gbmV3IEJ1aWxkZXJHcm91cChCdWlsZGVyR3JvdXAuVE9UX1dFQktJVCwgW10s
IDQpOworb25CdWlsZGVyTGlzdExvYWQoTEFZT1VUX1RFU1RTX0JVSUxERVJfR1JPVVBTLCBpc0No
cm9taXVtV2Via2l0VGlwT2ZUcmVlVGVzdFJ1bm5lciwgQ0hST01JVU1fV0VCS0lUX0JVSUxERVJf
TUFTVEVSLCBncm91cE5hbWUsIEJ1aWxkZXJHcm91cC5UT1RfV0VCS0lULCBidWlsZGVycyk7CiBp
bml0QnVpbGRlcnMoKTsKIDwvc2NyaXB0PgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145648</attachid>
            <date>2012-06-04 16:12:16 -0700</date>
            <delta_ts>2012-06-04 23:38:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88260-20120604161215.patch</filename>
            <type>text/plain</type>
            <size>15181</size>
            <attacher name="Chase Phillips">cmp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5MjU3CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNDMyMmQ0ODViODAzNjkwMTRjY2Q4YzM2MWE1MmQwZjFm
YzRmMzg0Ni4uYWE2YmMwM2UzNWQ2MmYwYzdiMzgwOGRlY2EyNTAxZDRlYjdjOGE2MCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMx
IEBACisyMDEyLTA2LTA0ICBDaGFzZSBQaGlsbGlwcyAgPGNtcEBnb29nbGUuY29tPgorCisgICAg
ICAgIE1ha2UgYSBidWlsZGVyIGdyb3VwIHN1cHBvcnQrZXhwZWN0IG11bHRpcGxlIGxvYWRzLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODgyNjAKKwor
ICAgICAgICBDaGFuZ2UgQnVpbGRlckdyb3VwIHRvIGFsbG93IGV4cGVjdGluZyBtdWx0aXBsZQor
ICAgICAgICBsb2Fkcy4gIFRoaXMgYWxsb3dzIG1lcmdpbmcgcmVzdWx0cyBmb3IgYSBnaXZlbiBz
ZXQKKyAgICAgICAgb2YgYnVpbGRlcnMgaW50byBvbmUgZ3JvdXAuCisKKyAgICAgICAgQWRkIGEg
dGVzdCB0aGF0IHZlcmlmaWVzIHRoYXQgdGhlIGdyb3VwIGNvdW50CisgICAgICAgIGluY3JlbWVu
dHMgY29ycmVjdGx5IGJhc2VkIG9uIHN1Y2Nlc3NmdWwgYW5kIGZhaWxlZAorICAgICAgICBsaXN0
IGxvYWRzLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9idWlsZGVycy5qczoKKyAgICAg
ICAgKEJ1aWxkZXJHcm91cCk6CisgICAgICAgIChCdWlsZGVyR3JvdXAucHJvdG90eXBlLnNldGJ1
aWxkZXIpOgorICAgICAgICAoQnVpbGRlckdyb3VwLnByb3RvdHlwZS5hcHBlbmQpOgorICAgICAg
ICAoQnVpbGRlckdyb3VwLnByb3RvdHlwZS5sb2FkZWQpOgorICAgICAgICAocmVxdWVzdEJ1aWxk
ZXJMaXN0Lnhoci5vbmxvYWQpOgorICAgICAgICAocmVxdWVzdEJ1aWxkZXJMaXN0Lnhoci5vbmVy
cm9yKToKKyAgICAgICAgKG9uRXJyb3JMb2FkaW5nQnVpbGRlckxpc3QpOgorICAgICAgICAobG9h
ZEJ1aWxkZXJzTGlzdCk6CisgICAgICAgICogVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJv
YXJkcy9mbGFraW5lc3NfZGFzaGJvYXJkX3VuaXR0ZXN0cy5qczoKKyAgICAgICAgKHRlc3QpOgor
ICAgICAgICAqIFRlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvcnVuLXVuaXR0ZXN0
cy5odG1sOgorCiAyMDEyLTA2LTAxICBKZXNzaWUgQmVybGluICA8amJlcmxpbkBhcHBsZS5jb20+
CiAKICAgICAgICAgRml4IFdpbmRvd3MgYnVpbGQuCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UmVz
dWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2J1aWxkZXJzLmpzIGIvVG9vbHMvVGVzdFJlc3Vs
dFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9idWlsZGVycy5qcwppbmRleCBlOWY0NWYxZDk3MTRi
NWJhODU5OGMxNWNkMDI0Yzk5MWIxNmY5MDlkLi5jMGFhMDQ5YmNmN2FlYmMzZTM0MTliMmQxYjYx
ODAxYzUxMDgxZmNhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1k
YXNoYm9hcmRzL2J1aWxkZXJzLmpzCisrKyBiL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGlj
LWRhc2hib2FyZHMvYnVpbGRlcnMuanMKQEAgLTQ2LDYgKzQ2LDkgQEAgQnVpbGRlck1hc3Rlci5w
cm90b3R5cGUuYnVpbGRlckpzb25QYXRoID0gZnVuY3Rpb24oKQogfTsKIAogQ0hST01JVU1fQlVJ
TERFUl9NQVNURVIgPSBuZXcgQnVpbGRlck1hc3RlcignQ2hyb21pdW0nLCAnaHR0cDovL2J1aWxk
LmNocm9taXVtLm9yZy9wL2Nocm9taXVtLycpOworQ0hST01JVU1fV0lOX0JVSUxERVJfTUFTVEVS
ID0gbmV3IEJ1aWxkZXJNYXN0ZXIoJ0Nocm9taXVtV2luJywgJ2h0dHA6Ly9idWlsZC5jaHJvbWl1
bS5vcmcvcC9jaHJvbWl1bS53aW4vJyk7CitDSFJPTUlVTV9NQUNfQlVJTERFUl9NQVNURVIgPSBu
ZXcgQnVpbGRlck1hc3RlcignQ2hyb21pdW1NYWMnLCAnaHR0cDovL2J1aWxkLmNocm9taXVtLm9y
Zy9wL2Nocm9taXVtLm1hYy8nKTsKK0NIUk9NSVVNX0xJTlVYX0JVSUxERVJfTUFTVEVSID0gbmV3
IEJ1aWxkZXJNYXN0ZXIoJ0Nocm9taXVtTGludXgnLCAnaHR0cDovL2J1aWxkLmNocm9taXVtLm9y
Zy9wL2Nocm9taXVtLmxpbnV4LycpOwogQ0hST01JVU1PU19CVUlMREVSX01BU1RFUiA9IG5ldyBC
dWlsZGVyTWFzdGVyKCdDaHJvbWl1bUNocm9taXVtT1MnLCAnaHR0cDovL2J1aWxkLmNocm9taXVt
Lm9yZy9wL2Nocm9taXVtLmNocm9taXVtb3MvJyk7CiBDSFJPTUlVTV9HUFVfQlVJTERFUl9NQVNU
RVIgPSBuZXcgQnVpbGRlck1hc3RlcignQ2hyb21pdW1HUFUnLCAnaHR0cDovL2J1aWxkLmNocm9t
aXVtLm9yZy9wL2Nocm9taXVtLmdwdS8nKTsKIENIUk9NSVVNX0dQVV9GWUlfQlVJTERFUl9NQVNU
RVIgPSBuZXcgQnVpbGRlck1hc3RlcignQ2hyb21pdW1HUFVGWUknLCAnaHR0cDovL2J1aWxkLmNo
cm9taXVtLm9yZy9wL2Nocm9taXVtLmdwdS5meWkvJyk7CkBAIC02MSwyMCArNjQsMzYgQEAgdmFy
IExFR0FDWV9CVUlMREVSX01BU1RFUlNfVE9fR1JPVVBTID0gewogICAgICd3ZWJraXQub3JnJzog
J0BUb1QgLSB3ZWJraXQub3JnJwogfTsKIAotZnVuY3Rpb24gQnVpbGRlckdyb3VwKGlzVG9UV2Vi
S2l0LCBidWlsZGVycykKK2Z1bmN0aW9uIEJ1aWxkZXJHcm91cChpc1RvVFdlYktpdCkKIHsKICAg
ICB0aGlzLmlzVG9UV2ViS2l0ID0gaXNUb1RXZWJLaXQ7CiAgICAgLy8gTWFwIG9mIGJ1aWxkZXJO
YW1lICh0aGUgbmFtZSBzaG93biBpbiB0aGUgd2F0ZXJmYWxsKSB0byBidWlsZGVyUGF0aCAodGhl
CiAgICAgLy8gcGF0aCB1c2VkIGluIHRoZSBidWlsZGVyJ3MgVVJMKQogICAgIHRoaXMuYnVpbGRl
cnMgPSB7fTsKKyAgICB0aGlzLmdyb3VwcyA9IDA7CisgICAgdGhpcy5leHBlY3RlZEdyb3VwcyA9
IDA7Cit9CisKK0J1aWxkZXJHcm91cC5wcm90b3R5cGUuc2V0YnVpbGRlciA9IGZ1bmN0aW9uKGJ1
aWxkZXIsIGZsYWdzKSB7CisgICAgdGhpcy5idWlsZGVyc1tidWlsZGVyXSA9IGJ1aWxkZXIucmVw
bGFjZSgvWyAuKCldL2csICdfJyk7CisgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIGF0IHNvbWUg
cG9pbnQsIHdlIGRvbid0IGFjdHVhbGx5IHVzZSBERUZBVUxUX0JVSUxERVIKKyAgICAvLyAgICAg
ICAgaW4gYW55IG1lYW5pbmdmdWwgd2F5IGFueW1vcmUuICBXZSBhbHdheXMganVzdCBkZWZhdWx0
IHRvIHRoZQorICAgIC8vICAgICAgICBmaXJzdCBidWlsZGVyIGluIGFscGhhYmV0aWNhbCBvcmRl
ci4KKyAgICBpZiAoZmxhZ3MgJiBCdWlsZGVyR3JvdXAuREVGQVVMVF9CVUlMREVSKQorICAgICAg
ICB0aGlzLmRlZmF1bHRCdWlsZGVyID0gYnVpbGRlcjsKK307CisKK0J1aWxkZXJHcm91cC5wcm90
b3R5cGUuYXBwZW5kID0gZnVuY3Rpb24oYnVpbGRlcnMpIHsKICAgICBidWlsZGVycy5mb3JFYWNo
KGZ1bmN0aW9uKGJ1aWxkZXJBbmRGbGFncykgewogICAgICAgICB2YXIgYnVpbGRlciA9IGJ1aWxk
ZXJBbmRGbGFnc1swXTsKICAgICAgICAgdmFyIGZsYWdzID0gYnVpbGRlckFuZEZsYWdzWzFdOwot
Ci0gICAgICAgIHRoaXMuYnVpbGRlcnNbYnVpbGRlcl0gPSBidWlsZGVyLnJlcGxhY2UoL1sgLigp
XS9nLCAnXycpOwotICAgICAgICBpZiAoZmxhZ3MgJiBCdWlsZGVyR3JvdXAuREVGQVVMVF9CVUlM
REVSKQotICAgICAgICAgICAgdGhpcy5kZWZhdWx0QnVpbGRlciA9IGJ1aWxkZXI7CisgICAgICAg
IHRoaXMuc2V0YnVpbGRlcihidWlsZGVyLCBmbGFncyk7CiAgICAgfSwgdGhpcyk7CisgICAgdGhp
cy5ncm91cHMgKz0gMTsKK307CisKK0J1aWxkZXJHcm91cC5wcm90b3R5cGUubG9hZGVkID0gZnVu
Y3Rpb24oKSB7CisgICAgcmV0dXJuIHRoaXMuZ3JvdXBzID49IHRoaXMuZXhwZWN0ZWRHcm91cHM7
CiB9CiAKIEJ1aWxkZXJHcm91cC5wcm90b3R5cGUuc2V0dXAgPSBmdW5jdGlvbigpCkBAIC05OCw4
ICsxMTcsMTEgQEAgZnVuY3Rpb24gYXNzb2NpYXRlQnVpbGRlcnNXaXRoTWFzdGVyKGJ1aWxkZXJz
LCBtYXN0ZXIpCiAgICAgfSk7CiB9CiAKLWZ1bmN0aW9uIHJlcXVlc3RCdWlsZGVyTGlzdChidWls
ZGVyR3JvdXBzLCBidWlsZGVyRmlsdGVyLCBtYXN0ZXIsIGdyb3VwTmFtZSwgZ3JvdXBFbnVtKQor
ZnVuY3Rpb24gcmVxdWVzdEJ1aWxkZXJMaXN0KGJ1aWxkZXJHcm91cHMsIGJ1aWxkZXJGaWx0ZXIs
IG1hc3RlciwgZ3JvdXBOYW1lLCBncm91cEVudW0sIGJ1aWxkZXJHcm91cCkKIHsKKyAgICBpZiAo
IShncm91cE5hbWUgaW4gYnVpbGRlckdyb3VwcykpCisgICAgICAgIGJ1aWxkZXJHcm91cHNbZ3Jv
dXBOYW1lXSA9IGJ1aWxkZXJHcm91cDsKKwogICAgIHZhciBvbkxvYWQgPSBwYXJ0aWFsKG9uQnVp
bGRlckxpc3RMb2FkLCBidWlsZGVyR3JvdXBzLCBidWlsZGVyRmlsdGVyLCBtYXN0ZXIsIGdyb3Vw
TmFtZSwgZ3JvdXBFbnVtKTsKICAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CiAg
ICAgdmFyIHVybCA9IG1hc3Rlci5idWlsZGVySnNvblBhdGgoKTsKQEAgLTEwOCwxMCArMTMwLDEx
IEBAIGZ1bmN0aW9uIHJlcXVlc3RCdWlsZGVyTGlzdChidWlsZGVyR3JvdXBzLCBidWlsZGVyRmls
dGVyLCBtYXN0ZXIsIGdyb3VwTmFtZSwgZ3JvCiAgICAgICAgIGlmICh4aHIuc3RhdHVzID09IDIw
MCkKICAgICAgICAgICAgIG9uTG9hZChKU09OLnBhcnNlKHhoci5yZXNwb25zZSkpOwogICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBvbkVycm9yTG9hZGluZ0J1aWxkZXJMaXN0KHVybCk7CisgICAg
ICAgICAgICBvbkVycm9yTG9hZGluZ0J1aWxkZXJMaXN0KHVybCwgYnVpbGRlckdyb3VwcywgZ3Jv
dXBOYW1lKTsKICAgICB9OwotICAgIHhoci5vbmVycm9yID0gZnVuY3Rpb24oKSB7IG9uRXJyb3JM
b2FkaW5nQnVpbGRlckxpc3QodXJsKTsgfTsKKyAgICB4aHIub25lcnJvciA9IGZ1bmN0aW9uKCkg
eyBvbkVycm9yTG9hZGluZ0J1aWxkZXJMaXN0KHVybCwgYnVpbGRlckdyb3VwcywgZ3JvdXBOYW1l
KTsgfTsKICAgICB4aHIuc2VuZCgpOworICAgIGJ1aWxkZXJHcm91cHNbZ3JvdXBOYW1lXS5leHBl
Y3RlZEdyb3VwcyArPSAxOwogfQogCiBmdW5jdGlvbiBpc0Nocm9taXVtRGVwc0dwdVRlc3RSdW5u
ZXIoYnVpbGRlcikKQEAgLTE3OSw1NiArMjAyLDcwIEBAIGZ1bmN0aW9uIG9uQnVpbGRlckxpc3RM
b2FkKGJ1aWxkZXJHcm91cHMsIGJ1aWxkZXJGaWx0ZXIsIG1hc3RlciwgZ3JvdXBOYW1lLCBncm91
CiB7CiAgICAgdmFyIGJ1aWxkZXJzID0gZ2VuZXJhdGVCdWlsZGVyc0Zyb21CdWlsZGVyTGlzdChP
YmplY3Qua2V5cyhqc29uKSwgYnVpbGRlckZpbHRlcik7CiAgICAgYXNzb2NpYXRlQnVpbGRlcnNX
aXRoTWFzdGVyKGJ1aWxkZXJzLCBtYXN0ZXIpOwotICAgIGJ1aWxkZXJHcm91cHNbZ3JvdXBOYW1l
XSA9IG5ldyBCdWlsZGVyR3JvdXAoZ3JvdXBFbnVtLCBidWlsZGVycyk7Ci0gICAgZ19oYW5kbGVC
dWlsZGVyc0xpc3RMb2FkZWQoKTsKKyAgICBidWlsZGVyR3JvdXBzW2dyb3VwTmFtZV0uYXBwZW5k
KGJ1aWxkZXJzKTsKKyAgICBpZiAoYnVpbGRlckdyb3Vwc1tncm91cE5hbWVdLmxvYWRlZCgpKQor
ICAgICAgICBnX2hhbmRsZUJ1aWxkZXJzTGlzdExvYWRlZCgpOwogfQogCi1mdW5jdGlvbiBvbkVy
cm9yTG9hZGluZ0J1aWxkZXJMaXN0KHVybCkKK2Z1bmN0aW9uIG9uRXJyb3JMb2FkaW5nQnVpbGRl
ckxpc3QodXJsLCBidWlsZGVyR3JvdXBzLCBncm91cE5hbWUpCiB7Ci0gICAgYWxlcnQoJ0NvdWxk
IG5vdCBsb2FkIGxpc3Qgb2YgYnVpbGRlcnMgZnJvbSAnICsgdXJsICsgJy4gVHJ5IHJlbG9hZGlu
Zy4nKTsKKyAgICBidWlsZGVyR3JvdXBzW2dyb3VwTmFtZV0uZ3JvdXBzICs9IDE7CisgICAgY29u
c29sZS5sb2coJ0NvdWxkIG5vdCBsb2FkIGxpc3Qgb2YgYnVpbGRlcnMgZnJvbSAnICsgdXJsICsg
Jy4gVHJ5IHJlbG9hZGluZy4nKTsKIH0KIAotZnVuY3Rpb24gbG9hZEJ1aWxkZXJzTGlzdChncm91
cCwgdGVzdFR5cGUpIHsKK2Z1bmN0aW9uIGxvYWRCdWlsZGVyc0xpc3QoZ3JvdXBOYW1lLCB0ZXN0
VHlwZSkgewogICAgIGlmICh0ZXN0VHlwZSA9PSAnZ3B1X3Rlc3RzJykgewotICAgICAgICBzd2l0
Y2goZ3JvdXApIHsKKyAgICAgICAgc3dpdGNoKGdyb3VwTmFtZSkgewogICAgICAgICBjYXNlICdA
REVQUyAtIGNocm9taXVtLm9yZyc6Ci0gICAgICAgICAgICByZXF1ZXN0QnVpbGRlckxpc3QoQ0hS
T01JVU1fR1BVX1RFU1RTX0JVSUxERVJfR1JPVVBTLCBpc0Nocm9taXVtRGVwc0dwdVRlc3RSdW5u
ZXIsIENIUk9NSVVNX0dQVV9CVUlMREVSX01BU1RFUiwgZ3JvdXAsIEJ1aWxkZXJHcm91cC5ERVBT
X1dFQktJVCk7CisgICAgICAgICAgICB2YXIgYnVpbGRlckdyb3VwID0gbmV3IEJ1aWxkZXJHcm91
cChCdWlsZGVyR3JvdXAuREVQU19XRUJLSVQpOworICAgICAgICAgICAgcmVxdWVzdEJ1aWxkZXJM
aXN0KENIUk9NSVVNX0dQVV9URVNUU19CVUlMREVSX0dST1VQUywgaXNDaHJvbWl1bURlcHNHcHVU
ZXN0UnVubmVyLCBDSFJPTUlVTV9HUFVfQlVJTERFUl9NQVNURVIsIGdyb3VwTmFtZSwgQnVpbGRl
ckdyb3VwLkRFUFNfV0VCS0lULCBidWlsZGVyR3JvdXApOwogICAgICAgICAgICAgYnJlYWs7CiAK
ICAgICAgICAgY2FzZSAnQERFUFMgRllJIC0gY2hyb21pdW0ub3JnJzoKLSAgICAgICAgICAgIHJl
cXVlc3RCdWlsZGVyTGlzdChDSFJPTUlVTV9HUFVfVEVTVFNfQlVJTERFUl9HUk9VUFMsIGlzQ2hy
b21pdW1EZXBzRnlpR3B1VGVzdFJ1bm5lciwgQ0hST01JVU1fR1BVX0ZZSV9CVUlMREVSX01BU1RF
UiwgZ3JvdXAsIEJ1aWxkZXJHcm91cC5ERVBTX1dFQktJVCk7CisgICAgICAgICAgICB2YXIgYnVp
bGRlckdyb3VwID0gbmV3IEJ1aWxkZXJHcm91cChCdWlsZGVyR3JvdXAuREVQU19XRUJLSVQpOwor
ICAgICAgICAgICAgcmVxdWVzdEJ1aWxkZXJMaXN0KENIUk9NSVVNX0dQVV9URVNUU19CVUlMREVS
X0dST1VQUywgaXNDaHJvbWl1bURlcHNGeWlHcHVUZXN0UnVubmVyLCBDSFJPTUlVTV9HUFVfRllJ
X0JVSUxERVJfTUFTVEVSLCBncm91cE5hbWUsIEJ1aWxkZXJHcm91cC5ERVBTX1dFQktJVCwgYnVp
bGRlckdyb3VwKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgJ0BUb1QgLSBj
aHJvbWl1bS5vcmcnOgotICAgICAgICAgICAgcmVxdWVzdEJ1aWxkZXJMaXN0KENIUk9NSVVNX0dQ
VV9URVNUU19CVUlMREVSX0dST1VQUywgaXNDaHJvbWl1bVRpcE9mVHJlZUdwdVRlc3RSdW5uZXIs
IENIUk9NSVVNX1dFQktJVF9CVUlMREVSX01BU1RFUiwgZ3JvdXAsIEJ1aWxkZXJHcm91cC5UT1Rf
V0VCS0lUKTsKKyAgICAgICAgICAgIHZhciBidWlsZGVyR3JvdXAgPSBuZXcgQnVpbGRlckdyb3Vw
KEJ1aWxkZXJHcm91cC5UT1RfV0VCS0lUKTsKKyAgICAgICAgICAgIHJlcXVlc3RCdWlsZGVyTGlz
dChDSFJPTUlVTV9HUFVfVEVTVFNfQlVJTERFUl9HUk9VUFMsIGlzQ2hyb21pdW1UaXBPZlRyZWVH
cHVUZXN0UnVubmVyLCBDSFJPTUlVTV9XRUJLSVRfQlVJTERFUl9NQVNURVIsIGdyb3VwTmFtZSwg
QnVpbGRlckdyb3VwLlRPVF9XRUJLSVQsIGJ1aWxkZXJHcm91cCk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAodGVzdFR5cGUgPT0gJ2xheW91dC10ZXN0cycp
IHsKLSAgICAgICAgc3dpdGNoKGdyb3VwKSB7CisgICAgICAgIHN3aXRjaChncm91cE5hbWUpIHsK
ICAgICAgICAgY2FzZSAnQFRvVCAtIGNocm9taXVtLm9yZyc6Ci0gICAgICAgICAgICByZXF1ZXN0
QnVpbGRlckxpc3QoTEFZT1VUX1RFU1RTX0JVSUxERVJfR1JPVVBTLCBpc0Nocm9taXVtV2Via2l0
VGlwT2ZUcmVlVGVzdFJ1bm5lciwgQ0hST01JVU1fV0VCS0lUX0JVSUxERVJfTUFTVEVSLCBncm91
cCwgQnVpbGRlckdyb3VwLlRPVF9XRUJLSVQpOworICAgICAgICAgICAgdmFyIGJ1aWxkZXJHcm91
cCA9IG5ldyBCdWlsZGVyR3JvdXAoQnVpbGRlckdyb3VwLlRPVF9XRUJLSVQpOworICAgICAgICAg
ICAgcmVxdWVzdEJ1aWxkZXJMaXN0KExBWU9VVF9URVNUU19CVUlMREVSX0dST1VQUywgaXNDaHJv
bWl1bVdlYmtpdFRpcE9mVHJlZVRlc3RSdW5uZXIsIENIUk9NSVVNX1dFQktJVF9CVUlMREVSX01B
U1RFUiwgZ3JvdXBOYW1lLCBCdWlsZGVyR3JvdXAuVE9UX1dFQktJVCwgYnVpbGRlckdyb3VwKTsK
ICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgJ0BUb1QgLSB3ZWJraXQub3JnJzoK
LSAgICAgICAgICAgIHJlcXVlc3RCdWlsZGVyTGlzdChMQVlPVVRfVEVTVFNfQlVJTERFUl9HUk9V
UFMsIGlzV2Via2l0VGVzdFJ1bm5lciwgV0VCS0lUX0JVSUxERVJfTUFTVEVSLCBncm91cCwgQnVp
bGRlckdyb3VwLlRPVF9XRUJLSVQpOworICAgICAgICAgICAgdmFyIGJ1aWxkZXJHcm91cCA9IG5l
dyBCdWlsZGVyR3JvdXAoQnVpbGRlckdyb3VwLlRPVF9XRUJLSVQpOworICAgICAgICAgICAgcmVx
dWVzdEJ1aWxkZXJMaXN0KExBWU9VVF9URVNUU19CVUlMREVSX0dST1VQUywgaXNXZWJraXRUZXN0
UnVubmVyLCBXRUJLSVRfQlVJTERFUl9NQVNURVIsIGdyb3VwTmFtZSwgQnVpbGRlckdyb3VwLlRP
VF9XRUJLSVQsIGJ1aWxkZXJHcm91cCk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBj
YXNlICdAREVQUyAtIGNocm9taXVtLm9yZyc6Ci0gICAgICAgICAgICByZXF1ZXN0QnVpbGRlckxp
c3QoTEFZT1VUX1RFU1RTX0JVSUxERVJfR1JPVVBTLCBpc0Nocm9taXVtV2Via2l0RGVwc1Rlc3RS
dW5uZXIsIENIUk9NSVVNX1dFQktJVF9CVUlMREVSX01BU1RFUiwgZ3JvdXAsIEJ1aWxkZXJHcm91
cC5ERVBTX1dFQktJVCk7CisgICAgICAgICAgICB2YXIgYnVpbGRlckdyb3VwID0gbmV3IEJ1aWxk
ZXJHcm91cChCdWlsZGVyR3JvdXAuREVQU19XRUJLSVQpOworICAgICAgICAgICAgcmVxdWVzdEJ1
aWxkZXJMaXN0KExBWU9VVF9URVNUU19CVUlMREVSX0dST1VQUywgaXNDaHJvbWl1bVdlYmtpdERl
cHNUZXN0UnVubmVyLCBDSFJPTUlVTV9XRUJLSVRfQlVJTERFUl9NQVNURVIsIGdyb3VwTmFtZSwg
QnVpbGRlckdyb3VwLkRFUFNfV0VCS0lULCBidWlsZGVyR3JvdXApOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewotICAgICAgICBzd2l0Y2goZ3JvdXApIHsKKyAg
ICAgICAgc3dpdGNoKGdyb3VwTmFtZSkgewogICAgICAgICBjYXNlICdAREVQUyAtIGNocm9taXVt
Lm9yZyc6Ci0gICAgICAgICAgICByZXF1ZXN0QnVpbGRlckxpc3QoQ0hST01JVU1fR1RFU1RTX0JV
SUxERVJfR1JPVVBTLCBpc0Nocm9taXVtRGVwc0dUZXN0UnVubmVyLCBDSFJPTUlVTV9CVUlMREVS
X01BU1RFUiwgZ3JvdXAsIEJ1aWxkZXJHcm91cC5ERVBTX1dFQktJVCk7CisgICAgICAgICAgICB2
YXIgYnVpbGRlckdyb3VwID0gbmV3IEJ1aWxkZXJHcm91cChCdWlsZGVyR3JvdXAuREVQU19XRUJL
SVQpOworICAgICAgICAgICAgcmVxdWVzdEJ1aWxkZXJMaXN0KENIUk9NSVVNX0dURVNUU19CVUlM
REVSX0dST1VQUywgaXNDaHJvbWl1bURlcHNHVGVzdFJ1bm5lciwgQ0hST01JVU1fQlVJTERFUl9N
QVNURVIsIGdyb3VwTmFtZSwgQnVpbGRlckdyb3VwLkRFUFNfV0VCS0lULCBidWlsZGVyR3JvdXAp
OworICAgICAgICAgICAgcmVxdWVzdEJ1aWxkZXJMaXN0KENIUk9NSVVNX0dURVNUU19CVUlMREVS
X0dST1VQUywgaXNDaHJvbWl1bURlcHNHVGVzdFJ1bm5lciwgQ0hST01JVU1fV0lOX0JVSUxERVJf
TUFTVEVSLCBncm91cE5hbWUsIEJ1aWxkZXJHcm91cC5ERVBTX1dFQktJVCwgYnVpbGRlckdyb3Vw
KTsKKyAgICAgICAgICAgIHJlcXVlc3RCdWlsZGVyTGlzdChDSFJPTUlVTV9HVEVTVFNfQlVJTERF
Ul9HUk9VUFMsIGlzQ2hyb21pdW1EZXBzR1Rlc3RSdW5uZXIsIENIUk9NSVVNX01BQ19CVUlMREVS
X01BU1RFUiwgZ3JvdXBOYW1lLCBCdWlsZGVyR3JvdXAuREVQU19XRUJLSVQsIGJ1aWxkZXJHcm91
cCk7CisgICAgICAgICAgICByZXF1ZXN0QnVpbGRlckxpc3QoQ0hST01JVU1fR1RFU1RTX0JVSUxE
RVJfR1JPVVBTLCBpc0Nocm9taXVtRGVwc0dUZXN0UnVubmVyLCBDSFJPTUlVTV9MSU5VWF9CVUlM
REVSX01BU1RFUiwgZ3JvdXBOYW1lLCBCdWlsZGVyR3JvdXAuREVQU19XRUJLSVQsIGJ1aWxkZXJH
cm91cCk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlICdAREVQUyBDck9TIC0g
Y2hyb21pdW0ub3JnJzoKLSAgICAgICAgICAgIHJlcXVlc3RCdWlsZGVyTGlzdChDSFJPTUlVTV9H
VEVTVFNfQlVJTERFUl9HUk9VUFMsIGlzQ2hyb21pdW1EZXBzQ3Jvc0dUZXN0UnVubmVyLCBDSFJP
TUlVTU9TX0JVSUxERVJfTUFTVEVSLCBncm91cCwgQnVpbGRlckdyb3VwLkRFUFNfV0VCS0lUKTsK
KyAgICAgICAgICAgIHZhciBidWlsZGVyR3JvdXAgPSBuZXcgQnVpbGRlckdyb3VwKEJ1aWxkZXJH
cm91cC5ERVBTX1dFQktJVCk7CisgICAgICAgICAgICByZXF1ZXN0QnVpbGRlckxpc3QoQ0hST01J
VU1fR1RFU1RTX0JVSUxERVJfR1JPVVBTLCBpc0Nocm9taXVtRGVwc0Nyb3NHVGVzdFJ1bm5lciwg
Q0hST01JVU1PU19CVUlMREVSX01BU1RFUiwgZ3JvdXBOYW1lLCBCdWlsZGVyR3JvdXAuREVQU19X
RUJLSVQsIGJ1aWxkZXJHcm91cCk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNl
ICdAVG9UIC0gY2hyb21pdW0ub3JnJzoKLSAgICAgICAgICAgIHJlcXVlc3RCdWlsZGVyTGlzdChD
SFJPTUlVTV9HVEVTVFNfQlVJTERFUl9HUk9VUFMsIGlzQ2hyb21pdW1UaXBPZlRyZWVHVGVzdFJ1
bm5lciwgQ0hST01JVU1fV0VCS0lUX0JVSUxERVJfTUFTVEVSLCBncm91cCwgQnVpbGRlckdyb3Vw
LlRPVF9XRUJLSVQpOworICAgICAgICAgICAgdmFyIGJ1aWxkZXJHcm91cCA9IG5ldyBCdWlsZGVy
R3JvdXAoQnVpbGRlckdyb3VwLlRPVF9XRUJLSVQpOworICAgICAgICAgICAgcmVxdWVzdEJ1aWxk
ZXJMaXN0KENIUk9NSVVNX0dURVNUU19CVUlMREVSX0dST1VQUywgaXNDaHJvbWl1bVRpcE9mVHJl
ZUdUZXN0UnVubmVyLCBDSFJPTUlVTV9XRUJLSVRfQlVJTERFUl9NQVNURVIsIGdyb3VwTmFtZSwg
QnVpbGRlckdyb3VwLlRPVF9XRUJLSVQsIGJ1aWxkZXJHcm91cCk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIv
c3RhdGljLWRhc2hib2FyZHMvZmxha2luZXNzX2Rhc2hib2FyZF91bml0dGVzdHMuanMgYi9Ub29s
cy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2ZsYWtpbmVzc19kYXNoYm9hcmRf
dW5pdHRlc3RzLmpzCmluZGV4IDBkYTE5OTcyNTljNzg2ZjI4NDY1YzViZDkwZGE5ZjE4MGYwYjY5
NzkuLmY0NjNkNzI0ZDJjOTUwYzAxMzdlOWM2YTlhYTY0NzhkZjcwYjYyYTkgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvZmxha2luZXNzX2Rhc2hi
b2FyZF91bml0dGVzdHMuanMKKysrIGIvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFz
aGJvYXJkcy9mbGFraW5lc3NfZGFzaGJvYXJkX3VuaXR0ZXN0cy5qcwpAQCAtNjMwLDE4ICs2MzAs
MzcgQEAgdGVzdCgnYWRkQnVpbGRlckxvYWRFcnJvcnMnLCAxLCBmdW5jdGlvbigpIHsKIHRlc3Qo
J2J1aWxkZXJHcm91cElzVG9UV2ViS2l0QXR0cmlidXRlJywgMiwgZnVuY3Rpb24oKSB7CiAgICAg
dmFyIGR1bW15TWFzdGVyID0gbmV3IEJ1aWxkZXJNYXN0ZXIoJ2R1bW15Lm9yZycsICdodHRwOi8v
YnVpbGQuZHVtbXkub3JnJyk7CiAgICAgdmFyIHRlc3RCdWlsZGVyR3JvdXBzID0gewotICAgICAg
ICAnQFRvVCAtIGR1bW15Lm9yZyc6IG51bGwsCi0gICAgICAgICdAREVQUyAtIGR1bW15Lm9yZyc6
IG51bGwsCisgICAgICAgICdAVG9UIC0gZHVtbXkub3JnJzogbmV3IEJ1aWxkZXJHcm91cChCdWls
ZGVyR3JvdXAuVE9UX1dFQktJVCksCisgICAgICAgICdAREVQUyAtIGR1bW15Lm9yZyc6IG5ldyBC
dWlsZGVyR3JvdXAoQnVpbGRlckdyb3VwLkRFUFNfV0VCS0lUKSwKICAgICB9Ci0gICAgdmFyIHRl
c3RKU09ORGF0YSA9ICJ7IFwiRHVtbXkgQnVpbGRlciAxXCI6IG51bGwsIFwiRHVtbXkgQnVpbGRl
ciAyXCI6IG51bGwgfSI7CisgICAgdGVzdEJ1aWxkZXJHcm91cHNbJ0BUb1QgLSBkdW1teS5vcmcn
XS5leHBlY3RlZEdyb3VwcyA9IDE7CisgICAgdGVzdEJ1aWxkZXJHcm91cHNbJ0BERVBTIC0gZHVt
bXkub3JnJ10uZXhwZWN0ZWRHcm91cHMgPSAxOwogCisgICAgdmFyIHRlc3RKU09ORGF0YSA9ICJ7
IFwiRHVtbXkgQnVpbGRlciAxXCI6IG51bGwsIFwiRHVtbXkgQnVpbGRlciAyXCI6IG51bGwgfSI7
CiAgICAgb25CdWlsZGVyTGlzdExvYWQodGVzdEJ1aWxkZXJHcm91cHMsICBmdW5jdGlvbigpIHsg
cmV0dXJuIHRydWU7IH0sIGR1bW15TWFzdGVyLCAnQFRvVCAtIGR1bW15Lm9yZycsIEJ1aWxkZXJH
cm91cC5UT1RfV0VCS0lULCBKU09OLnBhcnNlKHRlc3RKU09ORGF0YSkpOwogICAgIGVxdWFsKHRl
c3RCdWlsZGVyR3JvdXBzWydAVG9UIC0gZHVtbXkub3JnJ10uaXNUb1RXZWJLaXQsIHRydWUpOwot
CiAgICAgb25CdWlsZGVyTGlzdExvYWQodGVzdEJ1aWxkZXJHcm91cHMsICBmdW5jdGlvbigpIHsg
cmV0dXJuIHRydWU7IH0sIGR1bW15TWFzdGVyLCAnQERFUFMgLSBkdW1teS5vcmcnLCBCdWlsZGVy
R3JvdXAuREVQU19XRUJLSVQsIEpTT04ucGFyc2UodGVzdEpTT05EYXRhKSk7CiAgICAgZXF1YWwo
dGVzdEJ1aWxkZXJHcm91cHNbJ0BERVBTIC0gZHVtbXkub3JnJ10uaXNUb1RXZWJLaXQsIGZhbHNl
KTsKIH0pOwogCit0ZXN0KCdidWlsZGVyR3JvdXBFeHBlY3RlZEdyb3VwcycsIDQsIGZ1bmN0aW9u
KCkgeworICAgIHZhciBkdW1teU1hc3RlciA9IG5ldyBCdWlsZGVyTWFzdGVyKCdkdW1teS5vcmcn
LCAnaHR0cDovL2J1aWxkLmR1bW15Lm9yZycpOworICAgIHZhciB0ZXN0QnVpbGRlckdyb3VwcyA9
IHsKKyAgICAgICAgJ0BUb1QgLSBkdW1teS5vcmcnOiBuZXcgQnVpbGRlckdyb3VwKEJ1aWxkZXJH
cm91cC5UT1RfV0VCS0lUKSwKKyAgICB9CisgICAgdGVzdEJ1aWxkZXJHcm91cHNbJ0BUb1QgLSBk
dW1teS5vcmcnXS5leHBlY3RlZEdyb3VwcyA9IDM7CisKKyAgICB2YXIgdGVzdEpTT05EYXRhID0g
InsgXCJEdW1teSBCdWlsZGVyIDFcIjogbnVsbCB9IjsKKyAgICBlcXVhbCh0ZXN0QnVpbGRlckdy
b3Vwc1snQFRvVCAtIGR1bW15Lm9yZyddLmV4cGVjdGVkR3JvdXBzLCAzKTsKKyAgICBvbkJ1aWxk
ZXJMaXN0TG9hZCh0ZXN0QnVpbGRlckdyb3VwcywgIGZ1bmN0aW9uKCkgeyByZXR1cm4gdHJ1ZTsg
fSwgZHVtbXlNYXN0ZXIsICdAVG9UIC0gZHVtbXkub3JnJywgQnVpbGRlckdyb3VwLlRPVF9XRUJL
SVQsIEpTT04ucGFyc2UodGVzdEpTT05EYXRhKSk7CisgICAgZXF1YWwodGVzdEJ1aWxkZXJHcm91
cHNbJ0BUb1QgLSBkdW1teS5vcmcnXS5ncm91cHMsIDEpOworICAgIHZhciB0ZXN0SlNPTkRhdGEg
PSAieyBcIkR1bW15IEJ1aWxkZXIgMlwiOiBudWxsIH0iOworICAgIG9uQnVpbGRlckxpc3RMb2Fk
KHRlc3RCdWlsZGVyR3JvdXBzLCAgZnVuY3Rpb24oKSB7IHJldHVybiB0cnVlOyB9LCBkdW1teU1h
c3RlciwgJ0BUb1QgLSBkdW1teS5vcmcnLCBCdWlsZGVyR3JvdXAuVE9UX1dFQktJVCwgSlNPTi5w
YXJzZSh0ZXN0SlNPTkRhdGEpKTsKKyAgICBlcXVhbCh0ZXN0QnVpbGRlckdyb3Vwc1snQFRvVCAt
IGR1bW15Lm9yZyddLmdyb3VwcywgMik7CisgICAgb25FcnJvckxvYWRpbmdCdWlsZGVyTGlzdCgn
aHR0cDovL2J1aWxkLmR1bW15Lm9yZycsIHRlc3RCdWlsZGVyR3JvdXBzLCAgJ0BUb1QgLSBkdW1t
eS5vcmcnKTsKKyAgICBlcXVhbCh0ZXN0QnVpbGRlckdyb3Vwc1snQFRvVCAtIGR1bW15Lm9yZydd
Lmdyb3VwcywgMyk7Cit9KTsKKwogdGVzdCgnc29ydFRlc3RzJywgNCwgZnVuY3Rpb24oKSB7CiAg
ICAgdmFyIHRlc3QxID0gY3JlYXRlUmVzdWx0c09iamVjdEZvclRlc3QoJ2Zvby90ZXN0MS5odG1s
JywgJ2R1bW15QnVpbGRlcicpOwogICAgIHZhciB0ZXN0MiA9IGNyZWF0ZVJlc3VsdHNPYmplY3RG
b3JUZXN0KCdmb28vdGVzdDIuaHRtbCcsICdkdW1teUJ1aWxkZXInKTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvcnVuLXVuaXR0ZXN0cy5odG1s
IGIvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9ydW4tdW5pdHRlc3Rz
Lmh0bWwKaW5kZXggYjc0NTFiNWYwODljZDFhNjUyYTUwYmRiMjZkM2FhMGVhNWYyYmMwYy4uNWZk
ODFkNWFkZTE3MGI3NGM2YWFiMmQ3MzM1YWQ1ZTJhODAxMjFhNiAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9ydW4tdW5pdHRlc3RzLmh0bWwKKysr
IGIvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9ydW4tdW5pdHRlc3Rz
Lmh0bWwKQEAgLTUyLDkgKzUyLDExIEBAIGZ1bmN0aW9uIGdfaGFuZGxlQnVpbGRlcnNMaXN0TG9h
ZGVkKCkge307CiAKIDxzY3JpcHQ+CiB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICcjdXNlVGVzdERh
dGE9dHJ1ZSc7Ci12YXIgYnVpbGRlckdyb3VwID0gJ0BUb1QgLSBjaHJvbWl1bS5vcmcnOwordmFy
IGdyb3VwTmFtZSA9ICdAVG9UIC0gY2hyb21pdW0ub3JnJzsKIHZhciBidWlsZGVycyA9IHsnV2Vi
a2l0IExpbnV4JzogJycsICdXZWJraXQgTGludXggKGRiZyknOiAnJywgJ1dlYmtpdCBNYWMxMC41
JzogJycsICdXZWJraXQgV2luJzogJyd9Owotb25CdWlsZGVyTGlzdExvYWQoTEFZT1VUX1RFU1RT
X0JVSUxERVJfR1JPVVBTLCBpc0Nocm9taXVtV2Via2l0VGlwT2ZUcmVlVGVzdFJ1bm5lciwgQ0hS
T01JVU1fV0VCS0lUX0JVSUxERVJfTUFTVEVSLCBidWlsZGVyR3JvdXAsIEJ1aWxkZXJHcm91cC5U
T1RfV0VCS0lULCBidWlsZGVycyk7CitMQVlPVVRfVEVTVFNfQlVJTERFUl9HUk9VUFNbZ3JvdXBO
YW1lXSA9IG5ldyBCdWlsZGVyR3JvdXAoQnVpbGRlckdyb3VwLlRPVF9XRUJLSVQpOworTEFZT1VU
X1RFU1RTX0JVSUxERVJfR1JPVVBTW2dyb3VwTmFtZV0uZXhwZWN0ZWRHcm91cHMgPSA0Oworb25C
dWlsZGVyTGlzdExvYWQoTEFZT1VUX1RFU1RTX0JVSUxERVJfR1JPVVBTLCBpc0Nocm9taXVtV2Vi
a2l0VGlwT2ZUcmVlVGVzdFJ1bm5lciwgQ0hST01JVU1fV0VCS0lUX0JVSUxERVJfTUFTVEVSLCBn
cm91cE5hbWUsIEJ1aWxkZXJHcm91cC5UT1RfV0VCS0lULCBidWlsZGVycyk7CiBpbml0QnVpbGRl
cnMoKTsKIDwvc2NyaXB0PgogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>