<?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>157797</bug_id>
          
          <creation_ts>2016-05-17 09:48:31 -0700</creation_ts>
          <short_desc>Add test262 harness support code</short_desc>
          <delta_ts>2016-05-19 10:41:11 -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>WebKit 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>1</everconfirmed>
          <reporter name="Keith Miller">keith_miller</reporter>
          <assigned_to name="Keith Miller">keith_miller</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ossy</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1193852</commentid>
    <comment_count>0</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-05-17 09:48:31 -0700</bug_when>
    <thetext>Add test262 harness support code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193893</commentid>
    <comment_count>1</comment_count>
      <attachid>279140</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-05-17 11:44:51 -0700</bug_when>
    <thetext>Created attachment 279140
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193899</commentid>
    <comment_count>2</comment_count>
      <attachid>279140</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-05-17 11:49:28 -0700</bug_when>
    <thetext>Comment on attachment 279140
Patch

LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193965</commentid>
    <comment_count>3</comment_count>
      <attachid>279140</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-17 13:37:39 -0700</bug_when>
    <thetext>Comment on attachment 279140
Patch

Clearing flags on attachment: 279140

Committed r201039: &lt;http://trac.webkit.org/changeset/201039&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193966</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-17 13:37:44 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1194197</commentid>
    <comment_count>5</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-05-18 01:20:27 -0700</bug_when>
    <thetext>Keith Miller 2016-05-17 11:44:51 PDT
Created attachment 279140 [details]
Patch

Filip Pizlo 2016-05-17 11:49:28 PDT
Comment on attachment 279140 [details]
Patch
LGTM

r+ in 5 minutes? What is the reason for this haste?

I think we could and should make the test262.yaml file less 
verbose and redundant. (bug157807)

For example, harness/assert.js and harness.sta js are included
by all &quot;runTest262&quot; test. I prefer adding these common harness
files to includeFiles in runTest262 function instead.

Additionally we could remove the ugly relative paths to 
harness files, all of them are in the same harness directory.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1194206</commentid>
    <comment_count>6</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-05-18 02:03:01 -0700</bug_when>
    <thetext>One more thing to reduce redundancy. There are ~20.000 tests, 
but only 1000 tests with [onlyStrict] or [noStrict] flags.

runTest262 could handle onlyStrict and noStrict flags instead
of duplicate yaml entries for each tests. We only need two 
conditional calls of addRunCommand in runTest262.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1194209</commentid>
    <comment_count>7</comment_count>
      <attachid>279140</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-05-18 02:17:32 -0700</bug_when>
    <thetext>Comment on attachment 279140
Patch

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

&gt; Tools/Scripts/import-test262-tests:127
&gt; +            @includeFiles &lt;&lt; &quot;donePrintHandle.js&quot;

typo: donePrintHandle.js -&gt; doneprintHandle.js</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1194210</commentid>
    <comment_count>8</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-05-18 02:19:08 -0700</bug_when>
    <thetext>doneprintHandle.js is needed only for async tests, 
this include can be added by runTest262</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1194212</commentid>
    <comment_count>9</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-05-18 02:31:16 -0700</bug_when>
    <thetext>I made a quick measurement. The startup time of run-javascriptcore-tests 
is 30 seconds now, adding test262.yaml increased it to 2 minutes.

I think we should make it faster before running test262 by default.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1194306</commentid>
    <comment_count>10</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-05-18 10:11:07 -0700</bug_when>
    <thetext>&gt; I think we could and should make the test262.yaml file less 
&gt; verbose and redundant. (bug157807)
&gt; 
&gt; For example, harness/assert.js and harness.sta js are included
&gt; by all &quot;runTest262&quot; test. I prefer adding these common harness
&gt; files to includeFiles in runTest262 function instead.
&gt; 
&gt; Additionally we could remove the ugly relative paths to 
&gt; harness files, all of them are in the same harness directory.

The reason why I use all the relative paths is that each test&apos;s run-script is run from the directory of the test itself. If we didn&apos;t precompute the relative path then we would need to do so for each test when we create the run-script. I saw a noticeable decrease in the time it took for run-jsc-stress-tests to start when I switched to relative paths.

&gt; One more thing to reduce redundancy. There are ~20.000 tests, 
&gt; but only 1000 tests with [onlyStrict] or [noStrict] flags.
&gt; 
&gt; runTest262 could handle onlyStrict and noStrict flags instead
&gt; of duplicate yaml entries for each tests. We only need two 
&gt; conditional calls of addRunCommand in runTest262.

There are two entries because we might only fail one of the two modes. It&apos;s not related to processing the flags.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1194830</commentid>
    <comment_count>11</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-05-19 10:41:11 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Comment on attachment 279140 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=279140&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/import-test262-tests:127
&gt; &gt; +            @includeFiles &lt;&lt; &quot;donePrintHandle.js&quot;
&gt; 
&gt; typo: donePrintHandle.js -&gt; doneprintHandle.js

typo fix in bug157902</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>279140</attachid>
            <date>2016-05-17 11:44:51 -0700</date>
            <delta_ts>2016-05-17 13:37:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157797-20160517114547.patch</filename>
            <type>text/plain</type>
            <size>25002</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwODEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
ZDRmZTUzOGMwN2FlNTlhYTIyMDMzNDQxNTRlMTg5NTg4NmYzYTBiLi41NGI3NTMwYTA4ZmYzMzZl
ZTEwZjRiMTkwZjVkZjE2MThkYmUwMGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNCBAQAorMjAxNi0wNS0xNyAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBBZGQgdGVzdDI2MiBoYXJuZXNzIHN1cHBvcnQgY29kZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3Nzk3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRz
IHNvbWUgbmV3IHRvb2xpbmcgbmVlZGVkIHRvIHJ1biBUZXN0MjYyIHdpdGggdGhlIGpzYworICAg
ICAgICBDTEkuIFRoZXJlIHdlcmUgdGhyZWUgb3B0aW9ucyB0aGF0IG5lZWRlZCB0byBiZSBhZGRl
ZCBmb3IgVGVzdDI2MjoKKworICAgICAgICAxKSAiLS10ZXN0MjYyLWFzeW5jIiBUaGlzIG9wdGlv
biBvdmVycmlkZXMgdGhlIHByaW50IGZ1bmN0aW9uIGluIHRoZSB0ZXN0IHJ1bm5lciB0byBsb29r
IGZvcgorICAgICAgICAnVGVzdDI2MjpBc3luY1Rlc3RDb21wbGV0ZScgaW5zdGVhZCBvZiBwcmlu
dGluZyB0aGUgcGFzc2VkIHRleHQuIElmIHRlc3QyNjItYXN5bmMgbW9kZSBpcyBvbgorICAgICAg
ICBhbmQgdGhhdCBzdHJpbmcgaXMgbm90IHBhc3NlZCB0aGVuIHRoZSB0ZXN0IGlzIG1hcmtlZCBh
cyBmYWlsaW5nLgorCisgICAgICAgIDIpICItLXN0cmljdC1maWxlPTxmaWxlPiIgVGhpcyBvcHRp
b24gYXBwZW5kcyBgInVzZSBzdHJpY3QiO1xuYCB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZQorICAg
ICAgICBwYXNzZWQgZmlsZSBiZWZvcmUgcGFzc2luZyB0aGUgc291cmNlIGNvZGUgdG8gdGhlIFZN
LiBUaGlzIG9wdGlvbiBjYW4sIGluIHRoZW9yeSwgYmUgcGFzc2VkCisgICAgICAgIG11bHRpcGxl
IHRpbWVzLgorCisgICAgICAgIDMpICItLWV4Y2VwdGlvbj08bmFtZT4iIFRoaXMgb3B0aW9uIGFz
c2VydHMgdGhhdCBhdCB0aGUgZW5kIG9mIHRoZSBsYXN0IHNjcmlwdCBmaWxlIHBhc3NlZAorICAg
ICAgICB0aGUgVk0gaGFzIGFuIHVuY2F1Z2h0IGV4Y2VwdGlvbiB3aXRoIGl0cyBuYW1lIHByb3Bl
cnR5IGVxdWFsIHRvIHRoZSBwYXNzZWQgbmFtZS4KKworICAgICAgICAqIGpzYy5jcHA6CisgICAg
ICAgIChTY3JpcHQ6OlNjcmlwdCk6CisgICAgICAgIChmaWxsQnVmZmVyV2l0aENvbnRlbnRzT2ZG
aWxlKToKKyAgICAgICAgKGZ1bmN0aW9uUHJpbnQpOgorICAgICAgICAoY2hlY2tVbmNhdWdodEV4
Y2VwdGlvbik6CisgICAgICAgIChydW5XaXRoU2NyaXB0cyk6CisgICAgICAgIChwcmludFVzYWdl
U3RhdGVtZW50KToKKyAgICAgICAgKENvbW1hbmRMaW5lOjpwYXJzZUFyZ3VtZW50cyk6CisgICAg
ICAgIChydW5KU0MpOgorCiAyMDE2LTA1LTEyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNv
bT4KIAogICAgICAgICBCYXNlbGluZSBhbmQgREZHJ3MgSlNDX3JlcG9ydC4uLkNvbXBpbGVUaW1l
cyBuZWVkcyBDb2RlQmxvY2sgaGFzaGVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCAzYzA3OTgx
NDZiYTBlMWQyMTA1MzhiNjdhYThmOWU2ZDJmODMzYzc0Li4wZWViM2YyNzBmYWZkNDFiZTJkMTgy
NDEyZjliNDZiMjEwNGVmNjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNj
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtNTMwLDYgKzUzMCw4
IEBAIGNvbnN0IENsYXNzSW5mbyBJbXB1cmVHZXR0ZXI6OnNfaW5mbyA9IHsgIkltcHVyZUdldHRl
ciIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFUCiBjb25zdCBDbGFzc0luZm8gQ3VzdG9tR2V0dGVy
OjpzX2luZm8gPSB7ICJDdXN0b21HZXR0ZXIiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEN1c3RvbUdldHRlcikgfTsKIGNvbnN0IENsYXNzSW5mbyBSdW50aW1lQXJyYXk6
OnNfaW5mbyA9IHsgIlJ1bnRpbWVBcnJheSIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRI
T0RfVEFCTEUoUnVudGltZUFycmF5KSB9OwogY29uc3QgQ2xhc3NJbmZvIFNpbXBsZU9iamVjdDo6
c19pbmZvID0geyAiU2ltcGxlT2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhP
RF9UQUJMRShTaW1wbGVPYmplY3QpIH07CitzdGF0aWMgYm9vbCB0ZXN0MjYyQXN5bmNQYXNzZWQg
eyBmYWxzZSB9Oworc3RhdGljIGJvb2wgdGVzdDI2MkFzeW5jVGVzdCB7IGZhbHNlIH07CiAKIEVs
ZW1lbnRIYW5kbGVPd25lciogRWxlbWVudDo6aGFuZGxlT3duZXIoKQogewpAQCAtNjM3LDEzICs2
MzksMTcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TaGFk
b3dDaGlja2VuRnVuY3Rpb25zT25TdGFjayhFeGVjU3QKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uU2V0R2xvYmFsQ29uc3RSZWRlY2xhcmF0aW9uU2hvdWxkTm90
VGhyb3coRXhlY1N0YXRlKik7CiAKIHN0cnVjdCBTY3JpcHQgeworICAgIGJvb2wgcGFyc2VBc1N0
cmljdDsKICAgICBib29sIGlzRmlsZTsKICAgICBjaGFyKiBhcmd1bWVudDsKIAotICAgIFNjcmlw
dChib29sIGlzRmlsZSwgY2hhciAqYXJndW1lbnQpCi0gICAgICAgIDogaXNGaWxlKGlzRmlsZSkK
KyAgICBTY3JpcHQoYm9vbCBwYXJzZUFzU3RyaWN0LCBib29sIGlzRmlsZSwgY2hhciAqYXJndW1l
bnQpCisgICAgICAgIDogcGFyc2VBc1N0cmljdChwYXJzZUFzU3RyaWN0KQorICAgICAgICAsIGlz
RmlsZShpc0ZpbGUpCiAgICAgICAgICwgYXJndW1lbnQoYXJndW1lbnQpCiAgICAgeworICAgICAg
ICBpZiAocGFyc2VBc1N0cmljdCkKKyAgICAgICAgICAgIEFTU0VSVChpc0ZpbGUpOwogICAgIH0K
IH07CiAKQEAgLTY2Miw2ICs2NjgsNyBAQCBwdWJsaWM6CiAgICAgVmVjdG9yPFN0cmluZz4gbV9h
cmd1bWVudHM7CiAgICAgYm9vbCBtX3Byb2ZpbGUgeyBmYWxzZSB9OwogICAgIFN0cmluZyBtX3By
b2ZpbGVyT3V0cHV0OworICAgIFN0cmluZyBtX3VuY2F1Z2h0RXhjZXB0aW9uTmFtZTsKICAgICBi
b29sIG1fZHVtcFNhbXBsaW5nUHJvZmlsZXJEYXRhIHsgZmFsc2UgfTsKIAogICAgIHZvaWQgcGFy
c2VBcmd1bWVudHMoaW50LCBjaGFyKiopOwpAQCAtMTAzOCwxMiArMTA0NSwxNCBAQCBzdGF0aWMg
dm9pZCBjb252ZXJ0U2hlYmFuZ1RvSlNDb21tZW50KFZlY3RvcjxjaGFyPiYgYnVmZmVyKQogCiBz
dGF0aWMgYm9vbCBmaWxsQnVmZmVyV2l0aENvbnRlbnRzT2ZGaWxlKEZJTEUqIGZpbGUsIFZlY3Rv
cjxjaGFyPiYgYnVmZmVyKQogeworICAgIC8vIFdlIG1pZ2h0IGhhdmUgaW5qZWN0ZWQgInVzZSBz
dHJpY3QiOyBhdCB0aGUgdG9wLgorICAgIHNpemVfdCBpbml0aWFsU2l6ZSA9IGJ1ZmZlci5zaXpl
KCk7CiAgICAgZnNlZWsoZmlsZSwgMCwgU0VFS19FTkQpOwogICAgIHNpemVfdCBidWZmZXJDYXBh
Y2l0eSA9IGZ0ZWxsKGZpbGUpOwogICAgIGZzZWVrKGZpbGUsIDAsIFNFRUtfU0VUKTsKLSAgICBi
dWZmZXIucmVzaXplKGJ1ZmZlckNhcGFjaXR5KTsKLSAgICBzaXplX3QgcmVhZFNpemUgPSBmcmVh
ZChidWZmZXIuZGF0YSgpLCAxLCBidWZmZXIuc2l6ZSgpLCBmaWxlKTsKLSAgICByZXR1cm4gcmVh
ZFNpemUgPT0gYnVmZmVyLnNpemUoKTsKKyAgICBidWZmZXIucmVzaXplKGJ1ZmZlckNhcGFjaXR5
ICsgaW5pdGlhbFNpemUpOworICAgIHNpemVfdCByZWFkU2l6ZSA9IGZyZWFkKGJ1ZmZlci5kYXRh
KCkgKyBpbml0aWFsU2l6ZSwgMSwgYnVmZmVyLnNpemUoKSwgZmlsZSk7CisgICAgcmV0dXJuIHJl
YWRTaXplID09IGJ1ZmZlci5zaXplKCkgLSBpbml0aWFsU2l6ZTsKIH0KIAogc3RhdGljIGJvb2wg
ZmlsbEJ1ZmZlcldpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBWZWN0
b3I8Y2hhcj4mIGJ1ZmZlcikKQEAgLTExMTUsNiArMTEyNCwxMyBAQCBKU0ludGVybmFsUHJvbWlz
ZSogR2xvYmFsT2JqZWN0Ojptb2R1bGVMb2FkZXJGZXRjaChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJpbnQoRXhl
Y1N0YXRlKiBleGVjKQogeworICAgIGlmICh0ZXN0MjYyQXN5bmNUZXN0KSB7CisgICAgICAgIEpT
VmFsdWUgdmFsdWUgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICAgICAgaWYgKHZhbHVlLmlzU3Ry
aW5nKCkgJiYgV1RGOjplcXVhbChhc1N0cmluZyh2YWx1ZSktPnZhbHVlKGV4ZWMpLmltcGwoKSwg
IlRlc3QyNjI6QXN5bmNUZXN0Q29tcGxldGUiKSkKKyAgICAgICAgICAgIHRlc3QyNjJBc3luY1Bh
c3NlZCA9IHRydWU7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CisgICAgfQorCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGV4ZWMtPmFyZ3VtZW50
Q291bnQoKTsgKytpKSB7CiAgICAgICAgIGlmIChpKQogICAgICAgICAgICAgcHV0Y2hhcignICcp
OwpAQCAtMTk3MSw3ICsxOTg3LDMwIEBAIHN0YXRpYyB2b2lkIGR1bXBFeGNlcHRpb24oR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIE5ha2VkUHRyPEV4Y2VwdGlvbj4gZXZhbHVhCiAgICAgICAg
IGR1bXBFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBldmFsdWF0aW9uRXhjZXB0aW9uLT52YWx1ZSgp
KTsKIH0KIAotc3RhdGljIGJvb2wgcnVuV2l0aFNjcmlwdHMoR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIGNvbnN0IFZlY3RvcjxTY3JpcHQ+JiBzY3JpcHRzLCBib29sIGR1bXAsIGJvb2wgbW9k
dWxlKQorc3RhdGljIGJvb2wgY2hlY2tVbmNhdWdodEV4Y2VwdGlvbihWTSYgdm0sIEdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBOYWtlZFB0cjxFeGNlcHRpb24+IGV2YWx1YXRpb25FeGNlcHRp
b24sIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRFeGNlcHRpb25OYW1lKQoreworICAgIGlmICghZXZh
bHVhdGlvbkV4Y2VwdGlvbikgeworICAgICAgICBwcmludGYoIkV4cGVjdGVkIHVuY2F1Z2h0IGV4
Y2VwdGlvbiB3aXRoIG5hbWUgJyVzJyBidXQgbm9uZSB3YXMgdGhyb3duXG4iLCBleHBlY3RlZEV4
Y2VwdGlvbk5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisKKyAgICBKU1ZhbHVlIGV4Y2VwdGlvbiA9IGV2YWx1YXRpb25FeGNlcHRpb24tPnZhbHVlKCk7
CisgICAgSlNWYWx1ZSBleGNlcHRpb25OYW1lID0gZXhjZXB0aW9uLmdldChnbG9iYWxPYmplY3Qt
Pmdsb2JhbEV4ZWMoKSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSk7CisKKyAgICBpZiAoSlNTdHJp
bmcqIGV4Y2VwdGlvbk5hbWVTdHIgPSBqc0R5bmFtaWNDYXN0PEpTU3RyaW5nKj4oZXhjZXB0aW9u
TmFtZSkpIHsKKyAgICAgICAgY29uc3QgU3RyaW5nJiBuYW1lID0gZXhjZXB0aW9uTmFtZVN0ci0+
dmFsdWUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpOworICAgICAgICBpZiAobmFtZSA9PSBl
eHBlY3RlZEV4Y2VwdGlvbk5hbWUpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
cHJpbnRmKCJFeHBlY3RlZCB1bmNhdWdodCBleGNlcHRpb24gd2l0aCBuYW1lICclcycgYnV0IGdv
dCBvbmUgd2l0aCBuYW1lICclcydcbiIsIGV4cGVjdGVkRXhjZXB0aW9uTmFtZS51dGY4KCkuZGF0
YSgpLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBkdW1wRXhjZXB0aW9uKGdsb2JhbE9i
amVjdCwgZXhjZXB0aW9uKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBwcmlu
dGYoIkV4cGVjdGVkIHVuY2F1Z2h0IGV4Y2VwdGlvbiB3aXRoIG5hbWUgJyVzJyBidXQgZXhjZXB0
aW9uIHZhbHVlIGRpZCBub3QgaGF2ZSBhIG5hbWUgcHJvcGVydHlcbiIsIGV4cGVjdGVkRXhjZXB0
aW9uTmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICBkdW1wRXhjZXB0aW9uKGdsb2JhbE9iamVjdCwg
ZXhjZXB0aW9uKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBib29sIHJ1bldpdGhT
Y3JpcHRzKEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBWZWN0b3I8U2NyaXB0PiYg
c2NyaXB0cywgY29uc3QgU3RyaW5nJiB1bmNhdWdodEV4Y2VwdGlvbk5hbWUsIGJvb2wgZHVtcCwg
Ym9vbCBtb2R1bGUpCiB7CiAgICAgU3RyaW5nIGZpbGVOYW1lOwogICAgIFZlY3RvcjxjaGFyPiBz
Y3JpcHRCdWZmZXI7CkBAIC0xOTk2LDYgKzIwMzUsOSBAQCBzdGF0aWMgYm9vbCBydW5XaXRoU2Ny
aXB0cyhHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVmVjdG9yPFNjcmlwdD4mIHNj
cgogICAgICAgICBKU0ludGVybmFsUHJvbWlzZSogcHJvbWlzZSA9IG51bGxwdHI7CiAgICAgICAg
IGlmIChzY3JpcHRzW2ldLmlzRmlsZSkgewogICAgICAgICAgICAgZmlsZU5hbWUgPSBzY3JpcHRz
W2ldLmFyZ3VtZW50OworICAgICAgICAgICAgaWYgKHNjcmlwdHNbaV0ucGFyc2VBc1N0cmljdCkK
KyAgICAgICAgICAgICAgICBzY3JpcHRCdWZmZXIuYXBwZW5kKCJcInVzZSBzdHJpY3RcIjtcbiIs
IHN0cmxlbigiXCJ1c2Ugc3RyaWN0XCI7XG4iKSk7CisKICAgICAgICAgICAgIGlmIChtb2R1bGUp
CiAgICAgICAgICAgICAgICAgcHJvbWlzZSA9IGxvYWRBbmRFdmFsdWF0ZU1vZHVsZShnbG9iYWxP
YmplY3QtPmdsb2JhbEV4ZWMoKSwgZmlsZU5hbWUpOwogICAgICAgICAgICAgZWxzZSB7CkBAIC0y
MDEyLDE5ICsyMDU0LDI0IEBAIHN0YXRpYyBib29sIHJ1bldpdGhTY3JpcHRzKEdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBjb25zdCBWZWN0b3I8U2NyaXB0PiYgc2NyCiAgICAgICAgIGlmICht
b2R1bGUpIHsKICAgICAgICAgICAgIGlmICghcHJvbWlzZSkKICAgICAgICAgICAgICAgICBwcm9t
aXNlID0gbG9hZEFuZEV2YWx1YXRlTW9kdWxlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBq
c2NTb3VyY2Uoc2NyaXB0QnVmZmVyLCBmaWxlTmFtZSkpOwotICAgICAgICAgICAgZ2xvYmFsT2Jq
ZWN0LT5nbG9iYWxFeGVjKCktPmNsZWFyRXhjZXB0aW9uKCk7CisgICAgICAgICAgICB2bS5jbGVh
ckV4Y2VwdGlvbigpOwogICAgICAgICAgICAgcHJvbWlzZS0+dGhlbihnbG9iYWxPYmplY3QtPmds
b2JhbEV4ZWMoKSwgbnVsbHB0ciwgZXJyb3JIYW5kbGVyKTsKLSAgICAgICAgICAgIGdsb2JhbE9i
amVjdC0+dm0oKS5kcmFpbk1pY3JvdGFza3MoKTsKKyAgICAgICAgICAgIHZtLmRyYWluTWljcm90
YXNrcygpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgTmFrZWRQdHI8RXhjZXB0aW9u
PiBldmFsdWF0aW9uRXhjZXB0aW9uOwogICAgICAgICAgICAgSlNWYWx1ZSByZXR1cm5WYWx1ZSA9
IGV2YWx1YXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBqc2NTb3VyY2Uoc2NyaXB0QnVm
ZmVyLCBmaWxlTmFtZSksIEpTVmFsdWUoKSwgZXZhbHVhdGlvbkV4Y2VwdGlvbik7Ci0gICAgICAg
ICAgICBzdWNjZXNzID0gc3VjY2VzcyAmJiAhZXZhbHVhdGlvbkV4Y2VwdGlvbjsKLSAgICAgICAg
ICAgIGlmIChkdW1wICYmICFldmFsdWF0aW9uRXhjZXB0aW9uKQotICAgICAgICAgICAgICAgIHBy
aW50ZigiRW5kOiAlc1xuIiwgcmV0dXJuVmFsdWUudG9TdHJpbmcoZ2xvYmFsT2JqZWN0LT5nbG9i
YWxFeGVjKCkpLT52YWx1ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSkudXRmOCgpLmRhdGEo
KSk7Ci0gICAgICAgICAgICBkdW1wRXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgZXZhbHVhdGlvbkV4
Y2VwdGlvbik7CisgICAgICAgICAgICBpZiAoIXVuY2F1Z2h0RXhjZXB0aW9uTmFtZSB8fCBpICE9
IHNjcmlwdHMuc2l6ZSgpIC0gMSkgeworICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBzdWNjZXNz
ICYmICFldmFsdWF0aW9uRXhjZXB0aW9uOworICAgICAgICAgICAgICAgIGlmIChkdW1wICYmICFl
dmFsdWF0aW9uRXhjZXB0aW9uKQorICAgICAgICAgICAgICAgICAgICBwcmludGYoIkVuZDogJXNc
biIsIHJldHVyblZhbHVlLnRvU3RyaW5nKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpKS0+dmFs
dWUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAg
ICAgICAgIGR1bXBFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBldmFsdWF0aW9uRXhjZXB0aW9uKTsK
KyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBzdWNjZXNzICYm
IGNoZWNrVW5jYXVnaHRFeGNlcHRpb24odm0sIGdsb2JhbE9iamVjdCwgZXZhbHVhdGlvbkV4Y2Vw
dGlvbiwgdW5jYXVnaHRFeGNlcHRpb25OYW1lKTsKKwogICAgICAgICB9CiAKLSAgICAgICAgZ2xv
YmFsT2JqZWN0LT5nbG9iYWxFeGVjKCktPmNsZWFyRXhjZXB0aW9uKCk7CisgICAgICAgIHNjcmlw
dEJ1ZmZlci5jbGVhcigpOworICAgICAgICB2bS5jbGVhckV4Y2VwdGlvbigpOwogICAgIH0KIAog
I2lmIEVOQUJMRShSRUdFWFBfVFJBQ0lORykKQEAgLTIxMDksNiArMjE1Niw5IEBAIHN0YXRpYyBO
T19SRVRVUk4gdm9pZCBwcmludFVzYWdlU3RhdGVtZW50KGJvb2wgaGVscCA9IGZhbHNlKQogICAg
IGZwcmludGYoc3RkZXJyLCAiICAteCAgICAgICAgIE91dHB1dCBleGl0IGNvZGUgYmVmb3JlIHRl
cm1pbmF0aW5nXG4iKTsKICAgICBmcHJpbnRmKHN0ZGVyciwgIlxuIik7CiAgICAgZnByaW50Zihz
dGRlcnIsICIgIC0tc2FtcGxlICAgICAgICAgICAgICAgICAgIENvbGxlY3RzIGFuZCBvdXRwdXRz
IHNhbXBsaW5nIHByb2ZpbGVyIGRhdGFcbiIpOworICAgIGZwcmludGYoc3RkZXJyLCAiICAtLXRl
c3QyNjItYXN5bmMgICAgICAgICAgICBDaGVjayB0aGF0IHNvbWUgc2NyaXB0IGNhbGxzIHRoZSBw
cmludCBmdW5jdGlvbiB3aXRoIHRoZSBzdHJpbmcgJ1Rlc3QyNjI6QXN5bmNUZXN0Q29tcGxldGUn
XG4iKTsKKyAgICBmcHJpbnRmKHN0ZGVyciwgIiAgLS1zdHJpY3QtZmlsZT08ZmlsZT4gICAgICAg
UGFyc2UgdGhlIGdpdmVuIGZpbGUgYXMgaWYgaXQgd2VyZSBpbiBzdHJpY3QgbW9kZSAodGhpcyBv
cHRpb24gbWF5IGJlIHBhc3NlZCBtb3JlIHRoYW4gb25jZSlcbiIpOworICAgIGZwcmludGYoc3Rk
ZXJyLCAiICAtLWV4Y2VwdGlvbj08bmFtZT4gICAgICAgICBDaGVjayB0aGUgbGFzdCBzY3JpcHQg
ZXhpdHMgd2l0aCBhbiB1bmNhdWdodCBleGNlcHRpb24gd2l0aCB0aGUgc3BlY2lmaWVkIG5hbWVc
biIpOwogICAgIGZwcmludGYoc3RkZXJyLCAiICAtLW9wdGlvbnMgICAgICAgICAgICAgICAgICBE
dW1wcyBhbGwgSlNDIFZNIG9wdGlvbnMgYW5kIGV4aXRzXG4iKTsKICAgICBmcHJpbnRmKHN0ZGVy
ciwgIiAgLS1kdW1wT3B0aW9ucyAgICAgICAgICAgICAgRHVtcHMgYWxsIG5vbi1kZWZhdWx0IEpT
QyBWTSBvcHRpb25zIGJlZm9yZSBjb250aW51aW5nXG4iKTsKICAgICBmcHJpbnRmKHN0ZGVyciwg
IiAgLS08anNjIFZNIG9wdGlvbj49PHZhbHVlPiAgU2V0cyB0aGUgc3BlY2lmaWVkIEpTQyBWTSBv
cHRpb25cbiIpOwpAQCAtMjEzMSwxMyArMjE4MSwxMyBAQCB2b2lkIENvbW1hbmRMaW5lOjpwYXJz
ZUFyZ3VtZW50cyhpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAgICAgICAgIGlmICghc3RyY21wKGFy
ZywgIi1mIikpIHsKICAgICAgICAgICAgIGlmICgrK2kgPT0gYXJnYykKICAgICAgICAgICAgICAg
ICBwcmludFVzYWdlU3RhdGVtZW50KCk7Ci0gICAgICAgICAgICBtX3NjcmlwdHMuYXBwZW5kKFNj
cmlwdCh0cnVlLCBhcmd2W2ldKSk7CisgICAgICAgICAgICBtX3NjcmlwdHMuYXBwZW5kKFNjcmlw
dChmYWxzZSwgdHJ1ZSwgYXJndltpXSkpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IH0KICAgICAgICAgaWYgKCFzdHJjbXAoYXJnLCAiLWUiKSkgewogICAgICAgICAgICAgaWYgKCsr
aSA9PSBhcmdjKQogICAgICAgICAgICAgICAgIHByaW50VXNhZ2VTdGF0ZW1lbnQoKTsKLSAgICAg
ICAgICAgIG1fc2NyaXB0cy5hcHBlbmQoU2NyaXB0KGZhbHNlLCBhcmd2W2ldKSk7CisgICAgICAg
ICAgICBtX3NjcmlwdHMuYXBwZW5kKFNjcmlwdChmYWxzZSwgZmFsc2UsIGFyZ3ZbaV0pKTsKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIGlmICghc3RyY21wKGFyZywg
Ii1pIikpIHsKQEAgLTIxOTUsNiArMjI0NSwyMyBAQCB2b2lkIENvbW1hbmRMaW5lOjpwYXJzZUFy
Z3VtZW50cyhpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgfQogCisgICAgICAgIGlmICghc3RyY21wKGFyZywgIi0tdGVzdDI2Mi1hc3luYyIpKSB7
CisgICAgICAgICAgICB0ZXN0MjYyQXN5bmNUZXN0ID0gdHJ1ZTsKKyAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHN0cmljdEZp
bGVTdHJMZW5ndGggPSBzdHJsZW4oIi0tc3RyaWN0LWZpbGU9Iik7CisgICAgICAgIGlmICghc3Ry
bmNtcChhcmcsICItLXN0cmljdC1maWxlPSIsIHN0cmljdEZpbGVTdHJMZW5ndGgpKSB7CisgICAg
ICAgICAgICBtX3NjcmlwdHMuYXBwZW5kKFNjcmlwdCh0cnVlLCB0cnVlLCBhcmd2W2ldICsgc3Ry
aWN0RmlsZVN0ckxlbmd0aCkpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKwor
ICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgZXhjZXB0aW9uU3RyTGVuZ3RoID0gc3RybGVu
KCItLWV4Y2VwdGlvbj0iKTsKKyAgICAgICAgaWYgKCFzdHJuY21wKGFyZywgIi0tZXhjZXB0aW9u
PSIsIGV4Y2VwdGlvblN0ckxlbmd0aCkpIHsKKyAgICAgICAgICAgIG1fdW5jYXVnaHRFeGNlcHRp
b25OYW1lID0gU3RyaW5nKGFyZyArIGV4Y2VwdGlvblN0ckxlbmd0aCk7CisgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgfQorCiAgICAgICAgIC8vIFNlZSBpZiB0aGUgLS0gb3B0aW9uIGlz
IGEgSlNDIFZNIG9wdGlvbi4KICAgICAgICAgaWYgKHN0cnN0cihhcmcsICItLSIpID09IGFyZykg
ewogICAgICAgICAgICAgaWYgKCFKU0M6Ok9wdGlvbnM6OnNldE9wdGlvbigmYXJnWzJdKSkgewpA
QCAtMjIwNiw3ICsyMjczLDcgQEAgdm9pZCBDb21tYW5kTGluZTo6cGFyc2VBcmd1bWVudHMoaW50
IGFyZ2MsIGNoYXIqKiBhcmd2KQogCiAgICAgICAgIC8vIFRoaXMgYXJnIGlzIG5vdCByZWNvZ25p
emVkIGJ5IHRoZSBWTSBub3IgYnkganNjLiBQYXNzIGl0IG9uIHRvIHRoZQogICAgICAgICAvLyBz
Y3JpcHQuCi0gICAgICAgIG1fc2NyaXB0cy5hcHBlbmQoU2NyaXB0KHRydWUsIGFyZ3ZbaV0pKTsK
KyAgICAgICAgbV9zY3JpcHRzLmFwcGVuZChTY3JpcHQoZmFsc2UsIHRydWUsIGFyZ3ZbaV0pKTsK
ICAgICB9CiAKICAgICBpZiAoaGFzQmFkSlNDT3B0aW9ucyAmJiBKU0M6Ok9wdGlvbnM6OnZhbGlk
YXRlT3B0aW9ucygpKQpAQCAtMjIzOSwxMSArMjMwNiwxMiBAQCBzdGF0aWMgaW50IE5FVkVSX0lO
TElORSBydW5KU0MoVk0qIHZtLCBDb21tYW5kTGluZSBvcHRpb25zKQogICAgICAgICB2bS0+bV9w
ZXJCeXRlY29kZVByb2ZpbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9maWxlcjo6RGF0YWJhc2U+
KCp2bSk7CiAKICAgICBHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IEdsb2JhbE9iamVjdDo6
Y3JlYXRlKCp2bSwgR2xvYmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoKnZtLCBqc051bGwoKSks
IG9wdGlvbnMubV9hcmd1bWVudHMpOwotICAgIGJvb2wgc3VjY2VzcyA9IHJ1bldpdGhTY3JpcHRz
KGdsb2JhbE9iamVjdCwgb3B0aW9ucy5tX3NjcmlwdHMsIG9wdGlvbnMubV9kdW1wLCBvcHRpb25z
Lm1fbW9kdWxlKTsKKyAgICBib29sIHN1Y2Nlc3MgPSBydW5XaXRoU2NyaXB0cyhnbG9iYWxPYmpl
Y3QsIG9wdGlvbnMubV9zY3JpcHRzLCBvcHRpb25zLm1fdW5jYXVnaHRFeGNlcHRpb25OYW1lLCBv
cHRpb25zLm1fZHVtcCwgb3B0aW9ucy5tX21vZHVsZSk7CiAgICAgaWYgKG9wdGlvbnMubV9pbnRl
cmFjdGl2ZSAmJiBzdWNjZXNzKQogICAgICAgICBydW5JbnRlcmFjdGl2ZShnbG9iYWxPYmplY3Qp
OwogCi0gICAgcmVzdWx0ID0gc3VjY2VzcyA/IDAgOiAzOworICAgIHZtLT5kcmFpbk1pY3JvdGFz
a3MoKTsKKyAgICByZXN1bHQgPSBzdWNjZXNzICYmICh0ZXN0MjYyQXN5bmNUZXN0ID09IHRlc3Qy
NjJBc3luY1Bhc3NlZCkgPyAwIDogMzsKIAogICAgIGlmIChvcHRpb25zLm1fZXhpdENvZGUpCiAg
ICAgICAgIHByaW50ZigianNjIGV4aXRpbmcgJWRcbiIsIHJlc3VsdCk7CmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMTJlOWNjMzBhZDE4ZWMwNWU3
MjJhOGZjNGI1NTY0OTZlZWJiODU4MC4uMDZhOWJkMTJmZTU4YWRkNDkzYmQ2NzljYzZmMjY2ZjA5
YzAzZDBhMiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDM0IEBACisyMDE2LTA1LTE3ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxs
ZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCB0ZXN0MjYyIGhhcm5lc3Mgc3VwcG9ydCBjb2Rl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTc3OTcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgaW1w
b3J0LXRlc3QyNjItdGVzdHMgc2NyaXB0IGlzIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIHlhbWwgZmls
ZSB1c2VkIHRvIHJ1biB0ZXN0MjYyLiBJdAorICAgICAgICB0YWtlcyBhIHBhdGggdG8gdGhlIGxv
Y2FsIGNvcHkgb2YgdGhlIFRlc3QyNjIgcmVwb3NpdG9yeSBhcyB3ZWxsIGFzIGFuIG9wdGlvbmFs
IHBhdGggdG8gZmlsZQorICAgICAgICBjb250YWluaW5nIGEgbGlzdCBvZiBmYWlsdXJlcy4gVGhp
cyBzY3JpcHQgY3VycmVudGx5IGp1c3QgY3JlYXRlcyB0aGUgeWFtbCBmaWxlIHVzZWQgdG8gcnVu
CisgICAgICAgIHRoZSBzY3JpcHQuIEl0IGRvZXMgbm90IHJlbG9jYXRlIHRoZSB0ZXN0IGZpbGVz
IGludG8gb3VyIHRlc3RzIGRpcmVjdG9yeS4gSW4gdGhlIGZ1dHVyZSBJCisgICAgICAgIHBsYW4g
dG8gYWRkIHRoYXQgZmVhdHVyZSBidXQgaXQgZGlkbid0IHNlZW0gZXNzZW50aWFsIGZvciB0aGUg
Zmlyc3QgaXRlcmF0aW9uLiBTaW5jZSBtYW55CisgICAgICAgIHRlc3QyNjIgdGVzdHMgbmVlZCB0
byBiZSBydW4gaW4gYm90aCBzdHJpY3QgYW5kIG5vbi1zdHJpY3QgbW9kZSwgaW1wb3J0LXRlc3Qy
NjItdGVzdHMKKyAgICAgICAgY3JlYXRlcyB0d28gc2VwYXJhdGUgcnVucyBmb3IgdGhvc2UgdGVz
dHMuIFRoaXMgZW5hYmxlcyB1cyB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIGZhaWx1cmVzCisgICAg
ICAgIGluIG9ubHkgb25lIG9mIHRoZSB0d28gbW9kZXMuCisKKyAgICAgICAgVGhpcyBwYXRjaCBh
bHNvIHVwZGF0ZXMgdGhlIHJ1bi1qc2Mtc3RyZXNzLXRlc3RzIFNjcmlwdCB0byBydW4gdGVzdHMg
ZnJvbSBUZXN0MjYyLiBJbiBvcmRlcgorICAgICAgICB0byBkbyBzbyB0d28gbmV3IHJ1biBjb21t
YW5kcyB3ZXJlIG5lZWRlZCBydW5UZXN0MjYyIGFuZCBwcmVwYXJlVGVzdDI2MkZpeHR1cmUuIHJ1
blRlc3QyNjIKKyAgICAgICAgdGFrZXMgYW4gYWN0dWFsIHRlc3QgZmlsZSBhbG9uZyB3aXRoIHRo
ZSBtZXRhZGF0YSBhc3NvY2lhdGVkIHdpdGggaXQuIHByZXBhcmVUZXN0MjYyRml4dHVyZQorICAg
ICAgICB0YWtlcyBhIGZpeHR1cmUgZmlsZSAodXNlZCBieSBtb2R1bGUgdGVzdHMgZm9yIGltcG9y
dGluZykgYW5kIG1ha2VzIHN1cmUgdGhhdCBmaWxlIGlzCisgICAgICAgIHByb3Blcmx5IHJlbG9j
YXRlZCB0byB0aGUgdGVzdCBydW5uZXIgZGlyZWN0b3J5LgorCisgICAgICAgIFRoZSBwcm9jY2Vz
cyBJIHVzZWQgdG8gaW1wb3J0IHRoZSB0ZXN0cyB3YXMgdG8gZmlyc3QgcnVuIGltcG9ydC10ZXN0
MjYyLXRlc3RzIHRvIGNyZWF0ZSBhCisgICAgICAgIHlhbWwgZm9yIGFsbCB0aGUgdGVzdHMgKGlt
cG9ydC10ZXN0MjYyLXRlc3RzIGFzc3VtZXMgYWxsIHRlc3RzIHBhc3MgaWYgdG8gZmFpbHVyZXMg
ZmlsZSBpcworICAgICAgICBwYXNzZWQpLiBUaGVuIEkgcmFuIHRoZSBnZW5lcmF0ZWQgeWFtbCBm
aWxlIHdpdGggInJ1bi1qc2Mtc3RyZXNzLXRlc3RzIC12IC1jIDEiIHBpcGluZyB0aGUKKyAgICAg
ICAgb3V0cHV0IHRvIGEgZmlsZSBhbmQgY29sbGVjdGVkIGFsbCB0aGUgbGluZXMgd2l0aCAiRkFJ
TCIgaW4gaXQuIEZpbmFsbHksIEkgcmVyYW4KKyAgICAgICAgaW1wb3J0LXRlc3QyNjItdGVzdHMg
d2l0aCB0aGUgbmV3IGZhaWx1cmUgZmlsZSB0byBjcmVhdGUgdGhlIGZpbmFsIHlhbWwuCisKKyAg
ICAgICAgKiBTY3JpcHRzL2ltcG9ydC10ZXN0MjYyLXRlc3RzOiBBZGRlZC4KKyAgICAgICAgKiBT
Y3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzOgorCiAyMDE2LTA1LTEyICBDc2FiYSBPc3p0cm9n
b27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIEVOQUJMRShFUzZfQVJS
T1dGVU5DVElPTl9TWU5UQVgpIGd1YXJkcwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9pbXBv
cnQtdGVzdDI2Mi10ZXN0cyBiL1Rvb2xzL1NjcmlwdHMvaW1wb3J0LXRlc3QyNjItdGVzdHMKbmV3
IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOTBmYjM2Y2I5MjliZjAzMDEzOTlhOGRkY2JhNGNhNzhkZDc2ZTZkNwotLS0gL2Rl
di9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvaW1wb3J0LXRlc3QyNjItdGVzdHMKQEAgLTAsMCAr
MSwyNTYgQEAKKyMhL3Vzci9iaW4vZW52IHJ1YnkKKworIyBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisjIGFyZSBtZXQ6CisjCisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisjIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisjIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyMgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5ECisjIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorIyBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCisKK3JlcXVpcmUgJ2ZpbGV1dGlscycKK3JlcXVpcmUgJ2dldG9wdGxvbmcnCityZXF1
aXJlICdwYXRobmFtZScKK3JlcXVpcmUgJ3lhbWwnCityZXF1aXJlICdmaW5kJworCitUSElTX1ND
UklQVF9QQVRIID0gUGF0aG5hbWUubmV3KF9fRklMRV9fKS5yZWFscGF0aAorU0NSSVBUU19QQVRI
ID0gVEhJU19TQ1JJUFRfUEFUSC5kaXJuYW1lCitXRUJLSVRfUEFUSCA9IFNDUklQVFNfUEFUSC5k
aXJuYW1lLmRpcm5hbWUKK1RFU1QyNjJfWUFNTF9QQVRIID0gV0VCS0lUX1BBVEggKyAiU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3Rlc3QyNjIueWFtbCIKKworcmFpc2UgdW5sZXNzIFNDUklQ
VFNfUEFUSC5iYXNlbmFtZS50b19zID09ICJTY3JpcHRzIgorcmFpc2UgdW5sZXNzIFNDUklQVFNf
UEFUSC5kaXJuYW1lLmJhc2VuYW1lLnRvX3MgPT0gIlRvb2xzIgorCitkZWYgbXlzeXMoKmNtZCkK
KyAgICBwcmludENvbW1hbmRBcnJheSgqY21kKSBpZiAkdmVyYm9zaXR5ID49IDEKKyAgICByYWlz
ZSAiQ29tbWFuZCBmYWlsZWQ6ICN7JD8uaW5zcGVjdH0iIHVubGVzcyBzeXN0ZW0oKmNtZCkKK2Vu
ZAorCisKK2RlZiB1c2FnZQorICAgIHB1dHMgImltcG9ydC10ZXN0MjYyLXRlc3RzIFtvcHRpb25z
XSA8cGF0aC10by10ZXN0MjYyLXJlcG9zaXRvcnk+IgorICAgIHB1dHMKKyAgICBwdXRzICItaCwg
LS1oZWxwICAgICAgICAgICAgICAgICAgIHByaW50IHRoaXMgaGVscCBtZXNzYWdlLiIKKyAgICBw
dXRzICItZiwgLS1mYWlsdXJlcyBGQUlMVVJFUyAgICAgIFN1cHBsaWVkIGZpbGUgd2lsbCBiZSB1
c2VkIHRvIGRldGVybWluZSB3aGljaCB0ZXN0cyBmYWlsLiIKKyAgICBwdXRzICIgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIElmIGEgZmFpbHVyZXMgZmlsZSBpcyBub3QgcHJvdmlkZWQgYWxs
IHRlc3RzIGFyZSBhc3N1bWVkIHRvIHBhc3MuIgorCisgICAgZXhpdCAxCitlbmQKKworJGZhaWx1
cmVzID0gbmlsCitKU19URVNUX1JFR0VYUCA9IC8uKlwuanMvCitKU19GSVhUVVJFX1JFR0VYUCA9
IC8uKihfRklYVFVSRVwuanN8X1wuanMpLworR0VUX1lBTUxfUkVHRVhQID0gL1wvXCotLS0oPzx5
YW1sPi4qPyktLS1cKlwvL20KKworR2V0b3B0TG9uZy5uZXcoWyItLWhlbHAiLCAiLWgiLCBHZXRv
cHRMb25nOjpOT19BUkdVTUVOVF0sCisgICAgICAgICAgICAgICBbIi0tZmFpbHVyZXMiLCAiLWYi
LCBHZXRvcHRMb25nOjpSRVFVSVJFRF9BUkdVTUVOVF0pLmVhY2ggeworICAgIHwgb3B0LCBhcmcg
fAorICAgIGNhc2Ugb3B0CisgICAgd2hlbiAiLS1oZWxwIgorICAgICAgICB1c2FnZQorICAgIHdo
ZW4gIi0tZmFpbHVyZXMiCisgICAgICAgICRmYWlsdXJlcyA9IEZpbGUub3BlbihQYXRobmFtZS5u
ZXcoYXJnKSkucmVhZGxpbmVzCisgICAgZW5kCit9CisKK2RlZiBkaWRQYXNzRm9yTW9kZShwYXRo
LCBzdHJpY3QpCisgICAgaWYgJGZhaWx1cmVzCisgICAgICAgIGlmIHN0cmljdCA9PSA6c3RyaWN0
CisgICAgICAgICAgICByZXR1cm4gJGZhaWx1cmVzLmdyZXAoLy4qI3twYXRofVwuZGVmYXVsdC1z
dHJpY3QkLykubGVuZ3RoID09IDAKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuICRm
YWlsdXJlcy5ncmVwKC8uKiN7cGF0aH1cLmRlZmF1bHQkLykubGVuZ3RoID09IDAKKyAgICAgICAg
ZW5kCisgICAgZWxzZQorICAgICAgICByZXR1cm4gdHJ1ZQorICAgIGVuZAorZW5kCisKK2NsYXNz
IFRlc3QKKyAgICBhdHRyX3dyaXRlciA6ZmFpbHNXaXRoRXhjZXB0aW9uLCA6aXNNb2R1bGUsIDpp
c0FzeW5jCisgICAgYXR0cl9hY2Nlc3NvciA6aW5jbHVkZUZpbGVzLCA6bmVlZHNTdHJpY3QsIDpu
ZWVkc05vblN0cmljdAorICAgIGF0dHJfcmVhZGVyIDpwYXRoCisKKyAgICBkZWYgaW5pdGlhbGl6
ZShwYXRoKQorICAgICAgICBAcGF0aCA9IHBhdGgKKyAgICAgICAgQGZhaWxzV2l0aEV4Y2VwdGlv
biA9IG5pbAorICAgICAgICBAaW5jbHVkZUZpbGVzID0gW10KKyAgICAgICAgQG5lZWRzU3RyaWN0
ID0gdHJ1ZQorICAgICAgICBAbmVlZHNOb25TdHJpY3QgPSB0cnVlCisgICAgICAgIEBpc01vZHVs
ZSA9IGZhbHNlCisgICAgICAgIEBpc0FzeW5jID0gZmFsc2UKKyAgICBlbmQKKworICAgIGRlZiBj
aGVjaworICAgICAgICAjIFRocm93IGFuIGV4Y2VwdGlvbiBoZXJlIHNpbmNlIEknbSBub3Qgc3Vy
ZSBpZiB0aGUgdGVzdCBpbmZyYXN0cnVjdHVyZSB3b3JrcyBpbiB0aGVzZSBjYXNlcy4KKyAgICAg
ICAgcmFpc2UgaWYgIUBuZWVkc1N0cmljdCBhbmQgIUBuZWVkc05vblN0cmljdAorICAgICAgICBy
YWlzZSBpZiBAaXNNb2R1bGUgYW5kICFAbmVlZHNOb25TdHJpY3QKKyAgICBlbmQKKworICAgIGRl
ZiBmb3JtYXRGbGFncyhzdHJpY3QpCisgICAgICAgIGZsYWdzID0gW10KKyAgICAgICAgZmxhZ3Mg
PDwgc3RyaWN0IGlmIHN0cmljdCA9PSA6c3RyaWN0CisgICAgICAgIGZsYWdzIDw8IDptb2R1bGUg
aWYgQGlzTW9kdWxlCisgICAgICAgIGZsYWdzIDw8IDphc3luYyBpZiBAaXNBc3luYworCisgICAg
ICAgIHJldHVybiBmbGFncy50b19zCisgICAgZW5kCisKKyAgICBkZWYgZm9ybWF0Q21kQXJndW1l
bnRzKHN0cmljdCkKKyAgICAgICAgcmFpc2UgaWYgc3RyaWN0ID09IDpzdHJpY3QgPyAhQG5lZWRz
U3RyaWN0IDogIUBuZWVkc05vblN0cmljdAorICAgICAgICBwYXNzZWQgPSBkaWRQYXNzRm9yTW9k
ZShAcGF0aCwgc3RyaWN0KQorICAgICAgICBjbWQgPSAicnVuVGVzdDI2MiIKKyAgICAgICAgY21k
ICs9IHBhc3NlZCA/ICIgOm5vcm1hbCwgIiA6ICIgOmZhaWwsICIKKyAgICAgICAgY21kICs9IEBm
YWlsc1dpdGhFeGNlcHRpb24gPyBAZmFpbHNXaXRoRXhjZXB0aW9uLmluc3BlY3QgOiAiXCJOb0V4
Y2VwdGlvblwiIgorICAgICAgICBjbWQgKz0gIiwgI3tAaW5jbHVkZUZpbGVzLmluc3BlY3R9Igor
ICAgICAgICBjbWQgKz0gIiwgI3tmb3JtYXRGbGFncyhzdHJpY3QpfSIKKyAgICBlbmQKKworICAg
IGRlZiBmaW5hbGl6ZUluY2x1ZGVzCisgICAgICAgIGlmIEBpc0FzeW5jCisgICAgICAgICAgICBA
aW5jbHVkZUZpbGVzIDw8ICJkb25lUHJpbnRIYW5kbGUuanMiCisgICAgICAgIGVuZAorCisgICAg
ICAgIGRpciA9IFBhdGhuYW1lLm5ldygiLiIpCisgICAgICAgIEBwYXRoLmRpcm5hbWUuZWFjaF9m
aWxlbmFtZSB7CisgICAgICAgICAgICB8IHBhcnQgfAorICAgICAgICAgICAgZGlyICs9ICIuLiIK
KyAgICAgICAgfQorICAgICAgICBkaXIgKz0gImhhcm5lc3MiCisKKyAgICAgICAgQGluY2x1ZGVG
aWxlcy5tYXAhIHsgfCBmaWxlIHwgKGRpciArIGZpbGUpLnRvX3MgfQorICAgIGVuZAorCitlbmQK
KworZGVmIHByb2Nlc3NUZXN0RmlsZShwYXRoKQorICAgIC9cL1wqLS0tKD88eWFtbD4uKj8pLS0t
XCpcLy9tID1+IEZpbGU6OnJlYWQocGF0aCkKKworICAgIHRlc3QgPSBUZXN0Lm5ldyhwYXRoKQor
ICAgICMgVGhlc2Ugc2hvdWxkIGJlIGluY2x1ZGVkIGJ5IGFsbCB0aGUgdGVzdHMKKyAgICB0ZXN0
LmluY2x1ZGVGaWxlcyA9IFsiYXNzZXJ0LmpzIiwgInN0YS5qcyJdCisKKyAgICBiZWdpbgorICAg
ICAgICB5YW1sRWxlbWVudHMgPSBZQU1MOjpsb2FkKHlhbWwpCisgICAgcmVzY3VlIEV4Y2VwdGlv
biA9PiBlCisgICAgICAgIHB1dHMgIkZhaWxlZCB0byBwYXJzZSBZQU1MIGZvciAje3BhdGh9LCB0
aHJldyBleGNlcHRpb246IgorICAgICAgICBwdXRzIGUuaW5zcGVjdAorICAgIGVuZAorICAgIHlh
bWxFbGVtZW50cy5lYWNoIHsKKyAgICAgICAgfCBvcHRpb24gfAorICAgICAgICBjYXNlIG9wdGlv
blswXQorICAgICAgICB3aGVuICJuZWdhdGl2ZSIKKyAgICAgICAgICAgIHRlc3QuZmFpbHNXaXRo
RXhjZXB0aW9uID0gb3B0aW9uWzFdLnRvX3MKKyAgICAgICAgd2hlbiAiaW5jbHVkZXMiCisgICAg
ICAgICAgICB0ZXN0LmluY2x1ZGVGaWxlcyArPSBvcHRpb25bMV0KKyAgICAgICAgd2hlbiAiZmxh
Z3MiCisgICAgICAgICAgICBvcHRpb25bMV0uZWFjaCB7CisgICAgICAgICAgICAgICAgfCBmbGFn
IHwKKyAgICAgICAgICAgICAgICBjYXNlIGZsYWcKKyAgICAgICAgICAgICAgICB3aGVuICJyYXci
LCAibm9TdHJpY3QiCisgICAgICAgICAgICAgICAgICAgIHRlc3QubmVlZHNTdHJpY3QgPSBmYWxz
ZQorICAgICAgICAgICAgICAgIHdoZW4gIm9ubHlTdHJpY3QiCisgICAgICAgICAgICAgICAgICAg
IHRlc3QubmVlZHNOb25TdHJpY3QgPSBmYWxzZQorICAgICAgICAgICAgICAgIHdoZW4gIm1vZHVs
ZSIKKyAgICAgICAgICAgICAgICAgICAgdGVzdC5pc01vZHVsZSA9IHRydWUKKyAgICAgICAgICAg
ICAgICAgICAgdGVzdC5uZWVkc1N0cmljdCA9IGZhbHNlCisgICAgICAgICAgICAgICAgd2hlbiAi
YXN5bmMiCisgICAgICAgICAgICAgICAgICAgIHRlc3QuaXNBc3luYyA9IHRydWUKKyAgICAgICAg
ICAgICAgICB3aGVuICJnZW5lcmF0ZWQiCisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgICAgICByYWlzZSAiSW52YWxpZCBNZXRhZGF0YSBmbGFnIG9wdGlvbiwgI3tmbGFnfSwg
d2hlbiBwYXJzaW5nICN7JGJlbmNobWFya0RpcmVjdG9yeSArICRiZW5jaG1hcmt9IgorICAgICAg
ICAgICAgICAgIGVuZAorICAgICAgICAgICAgfQorICAgICAgICBlbmQKKyAgICB9CisKKyAgICB0
ZXN0LmZpbmFsaXplSW5jbHVkZXMKKyAgICB0ZXN0LmNoZWNrCisKKyAgICByZXR1cm4gdGVzdAor
ZW5kCisKK2NsYXNzIEZpeHR1cmUKKyAgICBhdHRyX3JlYWRlciA6cGF0aCwgOm5lZWRzTm9uU3Ry
aWN0LCA6bmVlZHNTdHJpY3QKKworICAgIGRlZiBpbml0aWFsaXplKHBhdGgpCisgICAgICAgIEBw
YXRoID0gcGF0aAorICAgICAgICBAbmVlZHNOb25TdHJpY3QgPSB0cnVlCisgICAgICAgIEBuZWVk
c1N0cmljdCA9IGZhbHNlCisgICAgZW5kCisKKyAgICBkZWYgZm9ybWF0Q21kQXJndW1lbnRzKHN0
cmljdCkKKyAgICAgICAgcmV0dXJuICJwcmVwYXJlVGVzdDI2MkZpeHR1cmUiCisgICAgZW5kCisK
K2VuZAorCitkZWYgcHJvY2Vzc0ZpeHR1cmVGaWxlKHBhdGgpCisgICAgRml4dHVyZS5uZXcocGF0
aCkKK2VuZAorCitkZWYgcHJvY2Vzc0ZpbGVzUmVjdXJzaXZlbHkocGF0aCkKKyAgICAjIFdlIG9u
bHkgcnVuIHRoZSBydW4gdGhlIGJ1aWx0LWlucywgbGFuZ3VhZ2UsIGFuZCBhbm5leEIgdGVzdHMu
CisgICAgIyBBdCBzb21lIHBvaW50IHdlIHNob3VsZCBhZGQgaW50bDQwMgorICAgIHRlc3RzID0g
W10KKworICAgIERpci5jaGRpcihwYXRoKSB7CisgICAgICAgIHBhdGhzID0gW1BhdGhuYW1lLm5l
dygidGVzdC9hbm5leEIiKSwgUGF0aG5hbWUubmV3KCJ0ZXN0L2J1aWx0LWlucyIpLCBQYXRobmFt
ZS5uZXcoInRlc3QvbGFuZ3VhZ2UiKV0KKworICAgICAgICBwYXRocy5lYWNoIHsKKyAgICAgICAg
ICAgIHwgdGVzdFBhdGggfAorICAgICAgICAgICAgRmluZC5maW5kKHRlc3RQYXRoKSB7CisgICAg
ICAgICAgICAgICAgfCBmaWxlIHwKKyAgICAgICAgICAgICAgICBpZiBGaWxlLmZpbGU/KGZpbGUp
IGFuZCBKU19URVNUX1JFR0VYUCA9fiBmaWxlLnRvX3MKKyAgICAgICAgICAgICAgICAgICAgcGF0
aCA9IFBhdGhuYW1lLm5ldyhmaWxlKQorICAgICAgICAgICAgICAgICAgICBpZiBKU19GSVhUVVJF
X1JFR0VYUCA9fiBmaWxlLnRvX3MKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RzIDw8IHBy
b2Nlc3NGaXh0dXJlRmlsZShwYXRoKQorICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgICAgICAgICB0ZXN0cyA8PCBwcm9jZXNzVGVzdEZpbGUocGF0aCkKKyAgICAgICAg
ICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKworICAgIH0KKworICAgIHJldHVybiB0ZXN0cworZW5kCisKK2RlZiBwcmludFlBTUwo
dGVzdHMpCisgICAgRmlsZS5vcGVuKFRFU1QyNjJfWUFNTF9QQVRILCAidysiKSB7CisgICAgICAg
IHwgb3V0cCB8CisgICAgICAgIG91dHAucHV0cyAiLS0tIgorICAgICAgICB0ZXN0cy5lYWNoIHsK
KyAgICAgICAgICAgIHwgdGVzdCB8CisgICAgICAgICAgICBpZiB0ZXN0Lm5lZWRzTm9uU3RyaWN0
CisgICAgICAgICAgICAgICAgb3V0cC5wdXRzICItIHBhdGg6IHRlc3QyNjIvIiArIHRlc3QucGF0
aC50b19zCisgICAgICAgICAgICAgICAgb3V0cC5wdXRzICIgIGNtZDogIiArIHRlc3QuZm9ybWF0
Q21kQXJndW1lbnRzKDpub25TdHJpY3QpCisgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIGlm
IHRlc3QubmVlZHNTdHJpY3QKKyAgICAgICAgICAgICAgICBvdXRwLnB1dHMgIi0gcGF0aDogdGVz
dDI2Mi8iICsgdGVzdC5wYXRoLnRvX3MKKyAgICAgICAgICAgICAgICBvdXRwLnB1dHMgIiAgY21k
OiAiICsgdGVzdC5mb3JtYXRDbWRBcmd1bWVudHMoOnN0cmljdCkKKyAgICAgICAgICAgIGVuZAor
ICAgICAgICB9CisKKyAgICB9CitlbmQKKwordGVzdHMgPSBwcm9jZXNzRmlsZXNSZWN1cnNpdmVs
eShQYXRobmFtZS5uZXcoQVJHVlswXSkpCitwcmludFlBTUwodGVzdHMpCmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzIGIvVG9vbHMvU2NyaXB0cy9ydW4tanNj
LXN0cmVzcy10ZXN0cwppbmRleCA5NTY2M2VjYzY2YTg5YWUyMDg3ZjM0MTk5ODFhNTM2N2Q0YWU0
YWY4Li45MDVhMTFlYWJlNjMzZjYxMjdiY2JiM2Y3OGExMDM3OTY1YzU3MmVkIDEwMDc1NQotLS0g
YS9Ub29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzCisrKyBiL1Rvb2xzL1NjcmlwdHMv
cnVuLWpzYy1zdHJlc3MtdGVzdHMKQEAgLTEwMTEsNiArMTAxMSw2MSBAQCBkZWYgcnVuQ29udHJv
bEZsb3dQcm9maWxlcgogICAgIGVuZAogZW5kCiAKK2RlZiBydW5UZXN0MjYyKG1vZGUsIGV4Y2Vw
dGlvbiwgaW5jbHVkZUZpbGVzLCBmbGFncykKKyAgICBmYWlsc1dpdGhFeGNlcHRpb24gPSBleGNl
cHRpb24gIT0gIk5vRXhjZXB0aW9uIgorICAgIGlzU3RyaWN0ID0gZmFsc2UKKyAgICBpc01vZHVs
ZSA9IGZhbHNlCisgICAgaXNBc3luYyA9IGZhbHNlCisKKyAgICBmbGFncy5lYWNoIHsKKyAgICAg
ICAgfCBmbGFnIHwKKyAgICAgICAgY2FzZSBmbGFnCisgICAgICAgIHdoZW4gOnN0cmljdAorICAg
ICAgICAgICAgaXNTdHJpY3QgPSB0cnVlCisgICAgICAgIHdoZW4gOm1vZHVsZQorICAgICAgICAg
ICAgaXNNb2R1bGUgPSB0cnVlCisgICAgICAgIHdoZW4gOmFzeW5jCisgICAgICAgICAgICBpc0Fz
eW5jID0gdHJ1ZQorICAgICAgICBlbHNlCisgICAgICAgICAgICByYWlzZSAiSW52YWxpZCBmbGFn
IGZvciBydW5UZXN0MjYyLCAje2ZsYWd9IgorICAgICAgICBlbmQKKyAgICB9CisKKyAgICBwcmVw
YXJlRXh0cmFSZWxhdGl2ZUZpbGVzKGluY2x1ZGVGaWxlcy5tYXAgeyB8ZnwgIi4uLyIgKyBmIH0s
ICRjb2xsZWN0aW9uKQorCisgICAgYXJncyA9IFtwYXRoVG9WTS50b19zXSArIEJBU0VfT1BUSU9O
UworICAgIGFyZ3MgPDwgIi1tIiBpZiBpc01vZHVsZQorICAgIGFyZ3MgPDwgIi0tZXhjZXB0aW9u
PSIgKyBleGNlcHRpb24gaWYgZmFpbHNXaXRoRXhjZXB0aW9uCisgICAgYXJncyA8PCAiLS10ZXN0
MjYyLWFzeW5jIiBpZiBpc0FzeW5jCisgICAgYXJncyArPSBpbmNsdWRlRmlsZXMKKworICAgIGNh
c2UgbW9kZQorICAgIHdoZW4gOm5vcm1hbAorICAgICAgICBlcnJvckhhbmRsZXIgPSBzaW1wbGVF
cnJvckhhbmRsZXIKKyAgICAgICAgb3V0cHV0SGFuZGxlciA9IHNpbGVudE91dHB1dEhhbmRsZXIK
KyAgICB3aGVuIDpmYWlsCisgICAgICAgIGVycm9ySGFuZGxlciA9IGV4cGVjdGVkRmFpbEVycm9y
SGFuZGxlcgorICAgICAgICBvdXRwdXRIYW5kbGVyID0gbm9pc3lPdXRwdXRIYW5kbGVyCisgICAg
ZWxzZQorICAgICAgICByYWlzZSAiSW52YWxpZCBtb2RlOiAje21vZGV9IgorICAgIGVuZAorCisg
ICAgaWYgaXNTdHJpY3QKKyAgICAgICAga2luZCA9ICJkZWZhdWx0LXN0cmljdCIKKyAgICAgICAg
YXJncyA8PCAiLS1zdHJpY3QtZmlsZT0jeyRiZW5jaG1hcmt9IgorICAgIGVsc2UKKyAgICAgICAg
a2luZCA9ICJkZWZhdWx0IgorICAgICAgICBhcmdzIDw8ICRiZW5jaG1hcmsudG9fcworICAgIGVu
ZAorCisgICAgYWRkUnVuQ29tbWFuZChraW5kLCBhcmdzLCBvdXRwdXRIYW5kbGVyLCBlcnJvckhh
bmRsZXIpCitlbmQKKworZGVmIHByZXBhcmVUZXN0MjYyRml4dHVyZQorICAgICMgVGhpcyBmdW5j
dGlvbiBpcyB1c2VkIHRvIGFkZCB0aGUgZmlsZXMgdXNlZCBieSBUZXN0MjYyIG1vZHVsZXMgdGVz
dHMuCisgICAgcHJlcGFyZUV4dHJhUmVsYXRpdmVGaWxlcyhbIiJdLCAkY29sbGVjdGlvbikKK2Vu
ZAorCiBkZWYgcnVuRVM2KG1vZGUpCiAgICAgYXJncyA9IFtwYXRoVG9WTS50b19zXSArIEJBU0Vf
T1BUSU9OUyArIFskYmVuY2htYXJrLnRvX3NdCiAgICAgY2FzZSBtb2RlCkBAIC0xMTQ5LDcgKzEy
MDQsOSBAQCBkZWYgcHJlcGFyZUV4dHJhUmVsYXRpdmVGaWxlcyhleHRyYUZpbGVzLCBkZXN0aW5h
dGlvbikKICAgICBEaXIuY2hkaXIoJG91dHB1dERpcikgewogICAgICAgICBleHRyYUZpbGVzLmVh
Y2ggewogICAgICAgICAgICAgfCBmaWxlIHwKLSAgICAgICAgICAgIEZpbGVVdGlscy5jcCAkZXh0
cmFGaWxlc0Jhc2VEaXIgKyBmaWxlLCBkZXN0aW5hdGlvbiArIGZpbGUKKyAgICAgICAgICAgIGRl
c3QgPSBkZXN0aW5hdGlvbiArIGZpbGUKKyAgICAgICAgICAgIEZpbGVVdGlscy5ta2Rpcl9wKGRl
c3QuZGlybmFtZSkKKyAgICAgICAgICAgIEZpbGVVdGlscy5jcCAkZXh0cmFGaWxlc0Jhc2VEaXIg
KyBmaWxlLCBkZXN0CiAgICAgICAgIH0KICAgICB9CiBlbmQK
</data>

          </attachment>
      

    </bug>

</bugzilla>