<?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>164611</bug_id>
          
          <creation_ts>2016-11-10 13:16:12 -0800</creation_ts>
          <short_desc>Move Wasm tests to JS</short_desc>
          <delta_ts>2016-11-11 16:32:47 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1249937</commentid>
    <comment_count>0</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-11-10 13:16:12 -0800</bug_when>
    <thetext>Move Wasm tests to JS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249939</commentid>
    <comment_count>1</comment_count>
      <attachid>294402</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-11-10 13:16:42 -0800</bug_when>
    <thetext>Created attachment 294402
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249940</commentid>
    <comment_count>2</comment_count>
      <attachid>294402</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-11-10 13:17:10 -0800</bug_when>
    <thetext>Comment on attachment 294402
Patch

Shouldn&apos;t have been marked for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249945</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-10 13:19:18 -0800</bug_when>
    <thetext>Attachment 294402 did not pass style-queue:


ERROR: Source/JavaScriptCore/jsc.cpp:2448:  One line control clauses should not use braces.  [whitespace/braces] [4]
Total errors found: 1 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249960</commentid>
    <comment_count>4</comment_count>
      <attachid>294402</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-11-10 13:47:31 -0800</bug_when>
    <thetext>Comment on attachment 294402
Patch

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

This is pretty great!

&gt; Source/JavaScriptCore/jsc.cpp:1163
&gt; +        addFunction(vm, &quot;testWasmModule&quot;, functionTestWasmModule, 0);

What does it test about a wasm module? I think the name could be improved.

&gt; Source/JavaScriptCore/jsc.cpp:2377
&gt; +        sscanf(bitwise_cast&lt;const char*&gt;(jsCast&lt;JSString*&gt;(value)-&gt;value(exec).characters8()), &quot;%lld&quot;, &amp;result);

Check return isn&apos;t EOF.

&gt; Source/JavaScriptCore/jsc.cpp:2387
&gt; +    if (typeString == &quot;float&quot;)

Wouldn&apos;t &quot;f32&quot; be more consistent here?

&gt; Source/JavaScriptCore/jsc.cpp:2390
&gt; +    return value;

RELEASE_ASSERT(typeString == &quot;f64&quot;);

&gt; Source/JavaScriptCore/testWasm.cpp:464
&gt; +        //       )I

?

&gt; Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp:60
&gt; +const bool verbose = true;

:-)

&gt; JSTests/wasm/Builder.js:172
&gt; +                                            }

Weird indent.

&gt; JSTests/wasm/Builder.js:178
&gt; +    assert.eq(imms.length, imm.length, `&quot;${op}&quot; expects ${imm.length} immediates, got ${imms.length}`);

What&apos;s &quot;imm&quot; here?

&gt; JSTests/wasm/Builder.js:235
&gt; +            print(nextBuilder)

Semicolon.

&gt; JSTests/wasm/Builder.js:371
&gt; +                        Memory: (initial, max) =&gt; s.data.push({ initial, max })

I think it would be better to spell out initial and max when used, instead of relying on order here. Maybe have Memory().InitialMaxPages(x, y).End() ? We&apos;ll also allow more than 1 in the future, so the API has to support more than one memory.

&gt; JSTests/wasm/Builder_WebAssemblyBinary.js:76
&gt; +            put(bin, &quot;varuint32&quot;, memory.max ? 1 : 0);

Comment to explain what this is: // flags

&gt; JSTests/wasm/LowLevelBinary.js:231
&gt; +        print(this._buffered_bytes);

Nope!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1250412</commentid>
    <comment_count>5</comment_count>
      <attachid>294537</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-11-11 14:33:38 -0800</bug_when>
    <thetext>Created attachment 294537
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1250422</commentid>
    <comment_count>6</comment_count>
      <attachid>294541</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-11-11 14:40:34 -0800</bug_when>
    <thetext>Created attachment 294541
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1250423</commentid>
    <comment_count>7</comment_count>
      <attachid>294541</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-11-11 14:42:01 -0800</bug_when>
    <thetext>Comment on attachment 294541
Patch

We want one test per file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1250468</commentid>
    <comment_count>8</comment_count>
      <attachid>294555</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-11-11 15:53:51 -0800</bug_when>
    <thetext>Created attachment 294555
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1250469</commentid>
    <comment_count>9</comment_count>
      <attachid>294556</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-11-11 15:54:54 -0800</bug_when>
    <thetext>Created attachment 294556
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1250497</commentid>
    <comment_count>10</comment_count>
      <attachid>294556</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-11 16:32:43 -0800</bug_when>
    <thetext>Comment on attachment 294556
Patch for landing

Clearing flags on attachment: 294556

Committed r208627: &lt;http://trac.webkit.org/changeset/208627&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1250498</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-11 16:32:47 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294402</attachid>
            <date>2016-11-10 13:16:42 -0800</date>
            <delta_ts>2016-11-11 14:33:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164611-20161110131229.patch</filename>
            <type>text/plain</type>
            <size>68323</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4NTE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
MjRmNTliYjgzNWIzOGY2NmI2YjEwN2VjY2Q0NWM5NDM1OGJkMzVkLi42M2UxODhhYTZlY2VkYzEz
ODRiYTNhZGQ5NzBkOTczNGI4ZTliZWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNyBAQAorMjAxNi0xMS0xMCAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBNb3ZlIFdhc20gdGVzdHMgdG8gSlMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDYxMQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKEdsb2Jh
bE9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoYm94KToKKyAgICAgICAgKGNhbGxX
YXNtRnVuY3Rpb24pOgorICAgICAgICAoZnVuY3Rpb25UZXN0V2FzbU1vZHVsZSk6CisgICAgICAg
ICogdGVzdFdhc20uY3BwOgorICAgICAgICAoY2hlY2tQbGFuKToKKyAgICAgICAgKHJ1bldhc21U
ZXN0cyk6CisgICAgICAgICogd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChK
U0M6Oldhc206OnBhcnNlQW5kQ29tcGlsZSk6CisgICAgICAgICogd2FzbS9XYXNtRnVuY3Rpb25Q
YXJzZXIuaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6RnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBh
cnNlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6RnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNl
Qm9keSk6CisgICAgICAgIChKU0M6Oldhc206OkZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJz
ZUJsb2NrKTogRGVsZXRlZC4KKyAgICAgICAgKiB3YXNtL1dhc21Nb2R1bGVQYXJzZXIuY3BwOgor
ICAgICAgICAoSlNDOjpXYXNtOjpNb2R1bGVQYXJzZXI6OnBhcnNlSW1wb3J0KToKKyAgICAgICAg
KEpTQzo6V2FzbTo6TW9kdWxlUGFyc2VyOjpwYXJzZUV4cG9ydCk6CisgICAgICAgICogd2FzbS9X
YXNtTW9kdWxlUGFyc2VyLmg6CisgICAgICAgIChKU0M6Oldhc206Ok1vZHVsZVBhcnNlcjo6YmFz
aWNQYXJzaW5nT25seSk6CisgICAgICAgICogd2FzbS9XYXNtUGxhbi5jcHA6CisgICAgICAgIChK
U0M6Oldhc206OlBsYW46OlBsYW4pOgorICAgICAgICAoSlNDOjpXYXNtOjpQbGFuOjpydW4pOgor
ICAgICAgICAqIHdhc20vV2FzbVBsYW4uaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6UGxhbjo6YmFz
aWNUZXN0aW5nT25seSk6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZUNvbnN0
cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0SlNXZWJBc3NlbWJseU1vZHVsZSk6
CisKIDIwMTYtMTEtMDkgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAK
ICAgICAgICAganNjIENMSSBzaG91bGQgd29yayB3aXRoIHRoZSByZW1vdGUgaW5zcGVjdG9yCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qc2MuY3BwCmluZGV4IDIzYmY3NDcwZTcxZTgxNmI4ZmZiOWYxZjI1YmUxMjUyOGJi
MjBiODcuLmJiZmFhM2RmYzEyYjFlMDM0MjRiNTk2OTRhYmQ1YzZkOWMzOTVjNWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qc2MuY3BwCkBAIC01NCw5ICs1NCwxMSBAQAogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCiAj
aW5jbHVkZSAiSlNUeXBlZEFycmF5cy5oIgogI2luY2x1ZGUgIkxMSW50RGF0YS5oIgorI2luY2x1
ZGUgIkxMSW50VGh1bmtzLmgiCiAjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKICNpbmNs
dWRlICJQYXJzZXJFcnJvci5oIgogI2luY2x1ZGUgIlByb2ZpbGVyRGF0YWJhc2UuaCIKKyNpbmNs
dWRlICJQcm90b0NhbGxGcmFtZS5oIgogI2luY2x1ZGUgIlNhbXBsaW5nUHJvZmlsZXIuaCIKICNp
bmNsdWRlICJTaGFkb3dDaGlja2VuLmgiCiAjaW5jbHVkZSAiU3RhY2tWaXNpdG9yLmgiCkBAIC02
NSw2ICs2Nyw3IEBACiAjaW5jbHVkZSAiU3VwZXJTYW1wbGVyLmgiCiAjaW5jbHVkZSAiVGVzdFJ1
bm5lclV0aWxzLmgiCiAjaW5jbHVkZSAiVHlwZVByb2ZpbGVyTG9nLmgiCisjaW5jbHVkZSAiV2Fz
bVBsYW4uaCIKICNpbmNsdWRlIDxsb2NhbGUuaD4KICNpbmNsdWRlIDxtYXRoLmg+CiAjaW5jbHVk
ZSA8c3RkaW8uaD4KQEAgLTkwNSw2ICs5MDgsMTAgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25TdGFydFNhbXBsaW5nUHJvZmlsZXIoRXhlY1N0YXRlKik7CiBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblNhbXBsaW5nUHJvZmls
ZXJTdGFja1RyYWNlcyhFeGVjU3RhdGUqKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKFdFQkFTU0VN
QkxZKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25UZXN0V2Fz
bU1vZHVsZShFeGVjU3RhdGUqKTsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFNBTVBMSU5HX0ZMQUdT
KQogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TZXRTYW1wbGlu
Z0ZsYWdzKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25DbGVhclNhbXBsaW5nRmxhZ3MoRXhlY1N0YXRlKik7CkBAIC0xMTUyLDYgKzExNTks
MTAgQEAgcHJvdGVjdGVkOgogICAgICAgICBhZGRGdW5jdGlvbih2bSwgInNhbXBsaW5nUHJvZmls
ZXJTdGFja1RyYWNlcyIsIGZ1bmN0aW9uU2FtcGxpbmdQcm9maWxlclN0YWNrVHJhY2VzLCAwKTsK
ICNlbmRpZgogCisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorICAgICAgICBhZGRGdW5jdGlvbih2
bSwgInRlc3RXYXNtTW9kdWxlIiwgZnVuY3Rpb25UZXN0V2FzbU1vZHVsZSwgMCk7CisjZW5kaWYK
KwogICAgICAgICBpZiAoIWFyZ3VtZW50cy5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIEpTQXJy
YXkqIGFycmF5ID0gY29uc3RydWN0RW1wdHlBcnJheShnbG9iYWxFeGVjKCksIDApOwogICAgICAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcmd1bWVudHMuc2l6ZSgpOyArK2kpCkBAIC0y
MzUyLDYgKzIzNjMsMTA5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25T
YW1wbGluZ1Byb2ZpbGVyU3RhY2tUcmFjZXMoRXhlY1N0YXRlKiBleGVjCiB9CiAjZW5kaWYgLy8g
RU5BQkxFKFNBTVBMSU5HX1BST0ZJTEVSKQogCisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorCitz
dGF0aWMgSlNWYWx1ZSBib3goRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIEpTVmFsdWUgd2FzbVZh
bHVlKQoreworICAgIEpTU3RyaW5nKiB0eXBlID0ganNDYXN0PEpTU3RyaW5nKj4od2FzbVZhbHVl
LmdldChleGVjLCBtYWtlSWRlbnRpZmllcih2bSwgInR5cGUiKSkpOworICAgIEpTVmFsdWUgdmFs
dWUgPSB3YXNtVmFsdWUuZ2V0KGV4ZWMsIG1ha2VJZGVudGlmaWVyKHZtLCAidmFsdWUiKSk7CisK
KyAgICBjb25zdCBTdHJpbmcmIHR5cGVTdHJpbmcgPSB0eXBlLT52YWx1ZShleGVjKTsKKyAgICBp
ZiAodHlwZVN0cmluZyA9PSAiaTY0IikgeworICAgICAgICBSRUxFQVNFX0FTU0VSVCh2YWx1ZS5p
c1N0cmluZygpKTsKKyAgICAgICAgaW50NjRfdCByZXN1bHQ7CisgICAgICAgIHNzY2FuZihiaXR3
aXNlX2Nhc3Q8Y29uc3QgY2hhcio+KGpzQ2FzdDxKU1N0cmluZyo+KHZhbHVlKS0+dmFsdWUoZXhl
YykuY2hhcmFjdGVyczgoKSksICIlbGxkIiwgJnJlc3VsdCk7CisgICAgICAgIHJldHVybiBKU1Zh
bHVlOjpkZWNvZGUocmVzdWx0KTsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlQodmFsdWUuaXNO
dW1iZXIoKSk7CisKKyAgICBpZiAodHlwZVN0cmluZyA9PSAiaTMyIikgeworICAgICAgICBSRUxF
QVNFX0FTU0VSVCh2YWx1ZS5pc0ludDMyKCkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVj
b2RlKHZhbHVlLmFzSW50MzIoKSk7CisgICAgfQorCisgICAgaWYgKHR5cGVTdHJpbmcgPT0gImZs
b2F0IikKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZShiaXR3aXNlX2Nhc3Q8aW50MzJf
dD4odmFsdWUudG9GbG9hdChleGVjKSkpOworCisgICAgcmV0dXJuIHZhbHVlOworfQorCitzdGF0
aWMgSlNWYWx1ZSBjYWxsV2FzbUZ1bmN0aW9uKFZNKiB2bSwgY29uc3QgQjM6OkNvbXBpbGF0aW9u
JiBjb2RlLCBWZWN0b3I8SlNWYWx1ZT4mIGJveGVkQXJncykKK3sKKyAgICBKU1ZhbHVlIGZpcnN0
QXJndW1lbnQ7CisgICAgaW50IGFyZ0NvdW50ID0gMTsKKyAgICBKU1ZhbHVlKiByZW1haW5pbmdB
cmdzID0gbnVsbHB0cjsKKyAgICBpZiAoYm94ZWRBcmdzLnNpemUoKSkgeworICAgICAgICByZW1h
aW5pbmdBcmdzID0gYm94ZWRBcmdzLmRhdGEoKTsKKyAgICAgICAgZmlyc3RBcmd1bWVudCA9ICpy
ZW1haW5pbmdBcmdzOworICAgICAgICByZW1haW5pbmdBcmdzKys7CisgICAgICAgIGFyZ0NvdW50
ID0gYm94ZWRBcmdzLnNpemUoKTsKKyAgICB9CisKKyAgICBQcm90b0NhbGxGcmFtZSBwcm90b0Nh
bGxGcmFtZTsKKyAgICBwcm90b0NhbGxGcmFtZS5pbml0KG51bGxwdHIsIG51bGxwdHIsIGZpcnN0
QXJndW1lbnQsIGFyZ0NvdW50LCByZW1haW5pbmdBcmdzKTsKKworICAgIHJldHVybiBKU1ZhbHVl
OjpkZWNvZGUodm1FbnRyeVRvV2FzbShjb2RlLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpLCB2
bSwgJnByb3RvQ2FsbEZyYW1lKSk7Cit9CisKKyNkZWZpbmUgQ0hFQ0tfRVEoeCwgeSkgZG8geyBc
CisgICAgICAgIGF1dG8gX194ID0gKHgpOyBcCisgICAgICAgIGF1dG8gX195ID0gKHkpOyBcCisg
ICAgICAgIGlmIChfX3ggPT0gX195KSBcCisgICAgICAgICAgICBicmVhazsgXAorICAgICAgICBX
VEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKF9fRklMRV9fLCBfX0xJTkVfXywgV1RGX1BSRVRUWV9G
VU5DVElPTiwgdG9DU3RyaW5nKCN4ICIgPT0gIiAjeSwgIiAoIiAjeCAiID09ICIsIF9feCwgIiwg
IiAjeSAiID09ICIsIF9feSwgIikiKS5kYXRhKCkpOyBcCisgICAgICAgIENSQVNIKCk7IFwKKyAg
ICB9IHdoaWxlIChmYWxzZSkKKworLy8gdGVzdFdhc21Nb2R1bGUoSlNBcnJheUJ1ZmZlclZpZXcg
c291cmNlLCBudW1iZXIgZnVuY3Rpb25Db3VudCwgLi4uW1tXYXNtVmFsdWUsIFtXYXNtVmFsdWVd
XV0pIHdoZXJlIHRoZSBpdGggY29weSBvZiBbW3Jlc3VsdCwgW2FyZ3NdXV0gaXMgYSBsaXN0Cisv
LyBvZiBhcmd1bWVudHMgdG8gYmUgcGFzc2VkIHRvIHRoZSBpdGggd2FzbSBmdW5jdGlvbiBhcyB3
ZWxsIGFzIHRoZSBleHBlY3RlZCByZXN1bHQuIFdhc21WYWx1ZSBpcyBhbiBvYmplY3Qgd2l0aCAi
dHlwZSIgYW5kICJ2YWx1ZSIgcHJvcGVydGllcy4KK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uVGVzdFdhc21Nb2R1bGUoRXhlY1N0YXRlKiBleGVjKQoreworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCisgICAgaWYgKCFPcHRpb25zOjp1c2VXZWJBc3NlbWJseSgpKQorICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJ0ZXN0V2Fz
bU1vZHVsZSBzaG91bGQgb25seSBiZSBjYWxsZWQgaWYgdGhlIHVzZVdlYkFzc2VtYmx5IG9wdGlv
biBpcyBzZXQiKSk7CisKKyAgICBKU0FycmF5QnVmZmVyVmlldyogc291cmNlID0ganNDYXN0PEpT
QXJyYXlCdWZmZXJWaWV3Kj4oZXhlYy0+YXJndW1lbnQoMCkpOworICAgIHVpbnQzMl90IGZ1bmN0
aW9uQ291bnQgPSBleGVjLT5hcmd1bWVudCgxKS50b1VJbnQzMihleGVjKTsKKworICAgIGlmIChl
eGVjLT5hcmd1bWVudENvdW50KCkgIT0gZnVuY3Rpb25Db3VudCArIDIpCisgICAgICAgIENSQVNI
KCk7CisKKyAgICBXYXNtOjpQbGFuIHBsYW4oJnZtLCBzdGF0aWNfY2FzdDx1aW50OF90Kj4oc291
cmNlLT52ZWN0b3IoKSksIHNvdXJjZS0+bGVuZ3RoKCkpOworICAgIHBsYW4uYmFzaWNUZXN0aW5n
T25seSgpOworICAgIHBsYW4ucnVuKCk7CisgICAgaWYgKHBsYW4uZmFpbGVkKCkpCisgICAgICAg
IENSQVNIKCk7CisKKyAgICBpZiAocGxhbi5jb21waWxlZEZ1bmN0aW9uQ291bnQoKSAhPSBmdW5j
dGlvbkNvdW50KQorICAgICAgICBDUkFTSCgpOworCisgICAgZm9yICh1aW50MzJfdCBpID0gMDsg
aSA8IGZ1bmN0aW9uQ291bnQ7ICsraSkgeworICAgICAgICBpZiAoIXBsYW4uY29tcGlsZWRGdW5j
dGlvbihpKSkgeworICAgICAgICAgICAgZGF0YUxvZ0xuKCJmYWlsZWQgdG8gY29tcGlsZSBmdW5j
dGlvbiBhdCBpbmRleCIsIGkpOworICAgICAgICB9CisKKyAgICAgICAgSlNBcnJheSogdGVzdENh
c2VzID0ganNDYXN0PEpTQXJyYXkqPihleGVjLT5hcmd1bWVudChpICsgMikpOworICAgICAgICBm
b3IgKHVuc2lnbmVkIHRlc3RJbmRleCA9IDA7IHRlc3RJbmRleCA8IHRlc3RDYXNlcy0+bGVuZ3Ro
KCk7ICsrdGVzdEluZGV4KSB7CisgICAgICAgICAgICBKU0FycmF5KiB0ZXN0ID0ganNDYXN0PEpT
QXJyYXkqPih0ZXN0Q2FzZXMtPmdldEluZGV4UXVpY2tseSh0ZXN0SW5kZXgpKTsKKyAgICAgICAg
ICAgIEpTT2JqZWN0KiByZXN1bHQgPSBqc0Nhc3Q8SlNPYmplY3QqPih0ZXN0LT5nZXRJbmRleFF1
aWNrbHkoMCkpOworICAgICAgICAgICAgSlNBcnJheSogYXJndW1lbnRzID0ganNDYXN0PEpTQXJy
YXkqPih0ZXN0LT5nZXRJbmRleFF1aWNrbHkoMSkpOworCisgICAgICAgICAgICBWZWN0b3I8SlNW
YWx1ZT4gYm94ZWRBcmdzOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBhcmdJbmRleCA9IDA7
IGFyZ0luZGV4IDwgYXJndW1lbnRzLT5sZW5ndGgoKTsgKythcmdJbmRleCkKKyAgICAgICAgICAg
ICAgICBib3hlZEFyZ3MuYXBwZW5kKGJveChleGVjLCB2bSwgYXJndW1lbnRzLT5nZXRJbmRleFF1
aWNrbHkoYXJnSW5kZXgpKSk7CisKKyAgICAgICAgICAgIENIRUNLX0VRKGNhbGxXYXNtRnVuY3Rp
b24oJnZtLCAqcGxhbi5jb21waWxlZEZ1bmN0aW9uKGkpLT5qc0VudHJ5UG9pbnQsIGJveGVkQXJn
cyksIGJveChleGVjLCB2bSwgcmVzdWx0KSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1
cm4gZW5jb2RlZEpTVW5kZWZpbmVkKCk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRUJM
WSkKKwogLy8gVXNlIFNFSCBmb3IgUmVsZWFzZSBidWlsZHMgb25seSB0byBnZXQgcmlkIG9mIHRo
ZSBjcmFzaCByZXBvcnQgZGlhbG9nCiAvLyAobHVja2lseSB0aGUgc2FtZSB0ZXN0cyBmYWlsIGlu
IFJlbGVhc2UgYW5kIERlYnVnIGJ1aWxkcyBzbyBmYXIpLiBOZWVkIHRvCiAvLyBiZSBpbiBhIHNl
cGFyYXRlIG1haW4gZnVuY3Rpb24gYmVjYXVzZSB0aGUganNjbWFpbiBmdW5jdGlvbiByZXF1aXJl
cyBvYmplY3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0V2FzbS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdFdhc20uY3BwCmluZGV4IGI3NTk1NjI1N2U1OGMx
NDczNDkyNGI2OTRmZDk5NTI1YWU2Nzk0NzkuLjRmN2ZiNjk2MDI1YTVkOGRlNzQ4MDU3MTE2Y2M5
Mjg0YjEzYzU1MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0V2FzbS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RXYXNtLmNwcApAQCAtMjc5LDYgKzI3
OSw4IEBAIGlubGluZSBKU1ZhbHVlIGJveGQoZG91YmxlIHZhbHVlKQogCiBzdGF0aWMgdm9pZCBj
aGVja1BsYW4oUGxhbiYgcGxhbiwgdW5zaWduZWQgZXhwZWN0ZWROdW1iZXJPZkZ1bmN0aW9ucykK
IHsKKyAgICBwbGFuLmJhc2ljVGVzdGluZ09ubHkoKTsKKyAgICBwbGFuLnJ1bigpOwogICAgIGlm
IChwbGFuLmZhaWxlZCgpKSB7CiAgICAgICAgIGRhdGFMb2dMbigiTW9kdWxlIGZhaWxlZCB0byBj
b21waWxlIHdpdGggZXJyb3I6ICIsIHBsYW4uZXJyb3JNZXNzYWdlKCkpOwogICAgICAgICBDUkFT
SCgpOwpAQCAtMzI3LDcgKzMyOSw3IEBAIHN0YXRpYyB2b2lkIHJ1bldhc21UZXN0cygpCiAgICAg
ICAgICAgICAweDBmLCAweDE0LCAweDAxLCAweDBmCiAgICAgICAgIH07CiAKLSAgICAgICAgUGxh
biBwbGFuKCp2bSwgdmVjdG9yKTsKKyAgICAgICAgUGxhbiBwbGFuKHZtLCB2ZWN0b3IpOwogICAg
ICAgICBjaGVja1BsYW4ocGxhbiwgMSk7CiAKICAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3Qg
Y3Jhc2guCkBAIC0zNzMsNyArMzc1LDcgQEAgc3RhdGljIHZvaWQgcnVuV2FzbVRlc3RzKCkKICAg
ICAgICAgICAgIDB4MTAsIDB4MGQsIDB4NDAsIDB4MDksIDB4MGYsIDB4MTUsIDB4MDEsIDB4MTQs
IDB4MDEsIDB4MTAsIDB4MGUsIDB4NDAsIDB4MGYKICAgICAgICAgfTsKIAotICAgICAgICBQbGFu
IHBsYW4oKnZtLCB2ZWN0b3IpOworICAgICAgICBQbGFuIHBsYW4odm0sIHZlY3Rvcik7CiAgICAg
ICAgIGNoZWNrUGxhbihwbGFuLCAxKTsKIAogICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBj
cmFzaC4KQEAgLTQxMSw3ICs0MTMsNyBAQCBzdGF0aWMgdm9pZCBydW5XYXNtVGVzdHMoKQogICAg
ICAgICAgICAgMHgwZgogICAgICAgICB9OwogCi0gICAgICAgIFBsYW4gcGxhbigqdm0sIHZlY3Rv
cik7CisgICAgICAgIFBsYW4gcGxhbih2bSwgdmVjdG9yKTsKICAgICAgICAgY2hlY2tQbGFuKHBs
YW4sIDEpOwogCiAgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgpAQCAtNDQ0LDcg
KzQ0Niw3IEBAIHN0YXRpYyB2b2lkIHJ1bldhc21UZXN0cygpCiAgICAgICAgICAgICAweDEwLCAw
eDAwLCAweDRkLCAweDAzLCAweDAxLCAweDEwLCAweDAxLCAweDA0LCAweDEwLCAweDAyLCAweDA2
LCAweDAxLCAweDBmLCAweDBmLCAweDBmCiAgICAgICAgIH07CiAKLSAgICAgICAgUGxhbiBwbGFu
KCp2bSwgdmVjdG9yKTsKKyAgICAgICAgUGxhbiBwbGFuKHZtLCB2ZWN0b3IpOwogICAgICAgICBj
aGVja1BsYW4ocGxhbiwgMSk7CiAKICAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2gu
CkBAIC00NTksNyArNDYxLDcgQEAgc3RhdGljIHZvaWQgcnVuV2FzbVRlc3RzKCkKICAgICAgICAg
Ly8gICAgICAoaWYgaTMyIChpMzIuZXEgKGdldF9sb2NhbCAkeCkgKGkzMi5jb25zdCAwKSkKICAg
ICAgICAgLy8gICAgICAgKHRoZW4gKGkzMi5jb25zdCAxKSkKICAgICAgICAgLy8gICAgICAgKGVs
c2UgKGkzMi5jb25zdCAyKSkKLSAgICAgICAgLy8gICAgICAgKQorICAgICAgICAvLyAgICAgICAp
SQogICAgICAgICAvLyAgICAgICkKICAgICAgICAgLy8gICAgICkKICAgICAgICAgVmVjdG9yPHVp
bnQ4X3Q+IHZlY3RvciA9IHsKQEAgLTQ3MSw3ICs0NzMsNyBAQCBzdGF0aWMgdm9pZCBydW5XYXNt
VGVzdHMoKQogICAgICAgICAgICAgMHg0ZCwgMHgwMywgMHgwMSwgMHgxMCwgMHgwMSwgMHgwNCwg
MHgxMCwgMHgwMiwgMHgwZiwgMHgwZgogICAgICAgICB9OwogCi0gICAgICAgIFBsYW4gcGxhbigq
dm0sIHZlY3Rvcik7CisgICAgICAgIFBsYW4gcGxhbih2bSwgdmVjdG9yKTsKICAgICAgICAgY2hl
Y2tQbGFuKHBsYW4sIDEpOwogCiAgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgpA
QCAtNTA5LDcgKzUxMSw3IEBAIHN0YXRpYyB2b2lkIHJ1bldhc21UZXN0cygpCiAgICAgICAgICAg
ICAweDBmLCAweDBmCiAgICAgICAgIH07CiAKLSAgICAgICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9y
KTsKKyAgICAgICAgUGxhbiBwbGFuKHZtLCB2ZWN0b3IpOwogICAgICAgICBjaGVja1BsYW4ocGxh
biwgMSk7CiAKICAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCkBAIC01MzksNyAr
NTQxLDcgQEAgc3RhdGljIHZvaWQgcnVuV2FzbVRlc3RzKCkKICAgICAgICAgICAgIDB4MTYsIDB4
MDAsIDB4MDksIDB4MGYKICAgICAgICAgfTsKIAotICAgICAgICBQbGFuIHBsYW4oKnZtLCB2ZWN0
b3IpOworICAgICAgICBQbGFuIHBsYW4odm0sIHZlY3Rvcik7CiAgICAgICAgIGNoZWNrUGxhbihw
bGFuLCAyKTsKIAogICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KQEAgLTU2NSw3
ICs1NjcsNyBAQCBzdGF0aWMgdm9pZCBydW5XYXNtVGVzdHMoKQogICAgICAgICAgICAgMHgxNiwg
MHgwMCwgMHgwOSwgMHgwZgogICAgICAgICB9OwogCi0gICAgICAgIFBsYW4gcGxhbigqdm0sIHZl
Y3Rvcik7CisgICAgICAgIFBsYW4gcGxhbih2bSwgdmVjdG9yKTsKICAgICAgICAgY2hlY2tQbGFu
KHBsYW4sIDIpOwogCiAgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgpAQCAtNTk2
LDcgKzU5OCw3IEBAIHN0YXRpYyB2b2lkIHJ1bldhc21UZXN0cygpCiAgICAgICAgICAgICAweDE0
LCAweDAwLCAweDE0LCAweDAwLCAweDE0LCAweDAwLCAweDE2LCAweDAwLCAweDA5LCAweDBmCiAg
ICAgICAgIH07CiAKLSAgICAgICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9yKTsKKyAgICAgICAgUGxh
biBwbGFuKHZtLCB2ZWN0b3IpOwogICAgICAgICBjaGVja1BsYW4ocGxhbiwgMik7CiAKICAgICAg
ICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCkBAIC02MjcsNyArNjI5LDcgQEAgc3RhdGlj
IHZvaWQgcnVuV2FzbVRlc3RzKCkKICAgICAgICAgICAgIDB4NWMsIDB4MTYsIDB4MDAsIDB4NWQs
IDB4MDksIDB4MGYKICAgICAgICAgfTsKIAotICAgICAgICBQbGFuIHBsYW4oKnZtLCB2ZWN0b3Ip
OworICAgICAgICBQbGFuIHBsYW4odm0sIHZlY3Rvcik7CiAgICAgICAgIGNoZWNrUGxhbihwbGFu
LCAxKTsKIAogICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KQEAgLTY1MywxMSAr
NjU1LDggQEAgc3RhdGljIHZvaWQgcnVuV2FzbVRlc3RzKCkKICAgICAgICAgICAgIDB4MGYsIDB4
ODgsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MDAsIDB4MTQsIDB4MDEs
IDB4NWIsIDB4MDksIDB4MGYKICAgICAgICAgfTsKIAotICAgICAgICBQbGFuIHBsYW4oKnZtLCB2
ZWN0b3IpOwotICAgICAgICBpZiAocGxhbi5jb21waWxlZEZ1bmN0aW9uQ291bnQoKSAhPSAyIHx8
ICFwbGFuLmNvbXBpbGVkRnVuY3Rpb24oMCkgfHwgIXBsYW4uY29tcGlsZWRGdW5jdGlvbigxKSkg
ewotICAgICAgICAgICAgZGF0YUxvZ0xuKCJNb2R1bGUgZmFpbGVkIHRvIGNvbXBpbGUgY29ycmVj
dGx5LiIpOwotICAgICAgICAgICAgQ1JBU0goKTsKLSAgICAgICAgfQorICAgICAgICBQbGFuIHBs
YW4odm0sIHZlY3Rvcik7CisgICAgICAgIGNoZWNrUGxhbihwbGFuLCAyKTsKIAogICAgICAgICAv
LyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KICAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4o
KnBsYW4uY29tcGlsZWRGdW5jdGlvbigxKS0+anNFbnRyeVBvaW50LCB7IGJveCgwKSwgYm94KDAp
IH0pLCAwKTsKQEAgLTY4NCw3ICs2ODMsNyBAQCBzdGF0aWMgdm9pZCBydW5XYXNtVGVzdHMoKQog
ICAgICAgICAgICAgMHgxNiwgMHgwMCwgMHgwOSwgMHgwZgogICAgICAgICB9OwogCi0gICAgICAg
IFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7CisgICAgICAgIFBsYW4gcGxhbih2bSwgdmVjdG9yKTsK
ICAgICAgICAgY2hlY2tQbGFuKHBsYW4sIDIpOwogCiAgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vz
bid0IGNyYXNoLgpAQCAtNzEzLDcgKzcxMiw3IEBAIHN0YXRpYyB2b2lkIHJ1bldhc21UZXN0cygp
CiAgICAgICAgICAgICAweDE0LCAweDAxLCAweDE0LCAweDAwLCAweDM0LCAweDAzLCAweDAwLCAw
eDE0LCAweDAxLCAweDJiLCAweDAzLCAweDAwLCAweDA5LCAweDBmCiAgICAgICAgIH07CiAKLSAg
ICAgICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9yKTsKKyAgICAgICAgUGxhbiBwbGFuKHZtLCB2ZWN0
b3IpOwogICAgICAgICBjaGVja1BsYW4ocGxhbiwgMSk7CiAKICAgICAgICAgLy8gVGVzdCB0aGlz
IGRvZXNuJ3QgY3Jhc2guCkBAIC03NDAsNyArNzM5LDcgQEAgc3RhdGljIHZvaWQgcnVuV2FzbVRl
c3RzKCkKICAgICAgICAgICAgIDB4MDEsIDB4MmEsIDB4MDIsIDB4MDAsIDB4MDksIDB4MGYKICAg
ICAgICAgfTsKIAotICAgICAgICBQbGFuIHBsYW4oKnZtLCB2ZWN0b3IpOworICAgICAgICBQbGFu
IHBsYW4odm0sIHZlY3Rvcik7CiAgICAgICAgIGNoZWNrUGxhbihwbGFuLCAxKTsKIAogICAgICAg
ICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KQEAgLTc3Nyw3ICs3NzYsNyBAQCBzdGF0aWMg
dm9pZCBydW5XYXNtVGVzdHMoKQogICAgICAgICAgICAgMHgwZiwgMHgwOSwgMHgwZgogICAgICAg
ICB9OwogCi0gICAgICAgIFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7CisgICAgICAgIFBsYW4gcGxh
bih2bSwgdmVjdG9yKTsKICAgICAgICAgY2hlY2tQbGFuKHBsYW4sIDEpOwogICAgICAgICBBU1NF
UlQocGxhbi5tZW1vcnkoKS0+c2l6ZSgpKTsKIApAQCAtODI5LDcgKzgyOCw3IEBAIHN0YXRpYyB2
b2lkIHJ1bldhc21UZXN0cygpCiAgICAgICAgICAgICAweDJlLCAweDAwLCAweDAwLCAweDEwLCAw
eDAxLCAweDE0LCAweDAzLCAweDQwLCAweDE1LCAweDAzLCAweDA2LCAweDAwLCAweDBmLCAweDBm
LCAweDA5LCAweDBmCiAgICAgICAgIH07CiAKLSAgICAgICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9y
KTsKKyAgICAgICAgUGxhbiBwbGFuKHZtLCB2ZWN0b3IpOwogICAgICAgICBjaGVja1BsYW4ocGxh
biwgMSk7CiAgICAgICAgIEFTU0VSVChwbGFuLm1lbW9yeSgpLT5zaXplKCkpOwogCkBAIC04NzAs
NyArODY5LDcgQEAgc3RhdGljIHZvaWQgcnVuV2FzbVRlc3RzKCkKICAgICAgICAgICAgIDB4MDEs
IDB4MjAsIDB4MDAsIDB4MDAsIDB4MDksIDB4MGYKICAgICAgICAgfTsKIAotICAgICAgICBQbGFu
IHBsYW4oKnZtLCB2ZWN0b3IpOworICAgICAgICBQbGFuIHBsYW4odm0sIHZlY3Rvcik7CiAgICAg
ICAgIGNoZWNrUGxhbihwbGFuLCAxKTsKICAgICAgICAgQVNTRVJUKHBsYW4ubWVtb3J5KCktPnNp
emUoKSk7CiAKQEAgLTg5OCw3ICs4OTcsNyBAQCBzdGF0aWMgdm9pZCBydW5XYXNtVGVzdHMoKQog
ICAgICAgICAgICAgMHgyMCwgMHgwMCwgMHgwMCwgMHgwOSwgMHgwZgogICAgICAgICB9OwogCi0g
ICAgICAgIFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7CisgICAgICAgIFBsYW4gcGxhbih2bSwgdmVj
dG9yKTsKICAgICAgICAgY2hlY2tQbGFuKHBsYW4sIDEpOwogCiAgICAgICAgIC8vIFRlc3QgdGhp
cyBkb2Vzbid0IGNyYXNoLgpAQCAtOTI1LDcgKzkyNCw3IEBAIHN0YXRpYyB2b2lkIHJ1bldhc21U
ZXN0cygpCiAgICAgICAgICAgICAweDAxLCAweDJiLCAweDAzLCAweDAwLCAweDA5LCAweDBmCiAg
ICAgICAgIH07CiAKLSAgICAgICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9yKTsKKyAgICAgICAgUGxh
biBwbGFuKHZtLCB2ZWN0b3IpOwogICAgICAgICBjaGVja1BsYW4ocGxhbiwgMSk7CiAKICAgICAg
ICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCkBAIC05NTMsNyArOTUyLDcgQEAgc3RhdGlj
IHZvaWQgcnVuV2FzbVRlc3RzKCkKICAgICAgICAgICAgIDB4MDEsIDB4MmEsIDB4MDIsIDB4MDAs
IDB4MDksIDB4MGYKICAgICAgICAgfTsKIAotICAgICAgICBQbGFuIHBsYW4oKnZtLCB2ZWN0b3Ip
OworICAgICAgICBQbGFuIHBsYW4odm0sIHZlY3Rvcik7CiAgICAgICAgIGNoZWNrUGxhbihwbGFu
LCAxKTsKIAogICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KQEAgLTk5MCw3ICs5
ODksNyBAQCBzdGF0aWMgdm9pZCBydW5XYXNtVGVzdHMoKQogICAgICAgICAgICAgMHgwZiwgMHgw
OSwgMHgwZgogICAgICAgICB9OwogCi0gICAgICAgIFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7Cisg
ICAgICAgIFBsYW4gcGxhbih2bSwgdmVjdG9yKTsKICAgICAgICAgY2hlY2tQbGFuKHBsYW4sIDEp
OwogICAgICAgICBBU1NFUlQocGxhbi5tZW1vcnkoKS0+c2l6ZSgpKTsKIApAQCAtMTA0Miw3ICsx
MDQxLDcgQEAgc3RhdGljIHZvaWQgcnVuV2FzbVRlc3RzKCkKICAgICAgICAgICAgIDB4MmUsIDB4
MDAsIDB4MDAsIDB4MTAsIDB4MDEsIDB4MTQsIDB4MDMsIDB4NDAsIDB4MTUsIDB4MDMsIDB4MDYs
IDB4MDAsIDB4MGYsIDB4MGYsIDB4MDksIDB4MGYKICAgICAgICAgfTsKIAotICAgICAgICBQbGFu
IHBsYW4oKnZtLCB2ZWN0b3IpOworICAgICAgICBQbGFuIHBsYW4odm0sIHZlY3Rvcik7CiAgICAg
ICAgIGNoZWNrUGxhbihwbGFuLCAxKTsKICAgICAgICAgQVNTRVJUKHBsYW4ubWVtb3J5KCktPnNp
emUoKSk7CiAKQEAgLTEwODMsNyArMTA4Miw3IEBAIHN0YXRpYyB2b2lkIHJ1bldhc21UZXN0cygp
CiAgICAgICAgICAgICAweDAxLCAweDIwLCAweDAwLCAweDAwLCAweDA5LCAweDBmCiAgICAgICAg
IH07CiAKLSAgICAgICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9yKTsKKyAgICAgICAgUGxhbiBwbGFu
KHZtLCB2ZWN0b3IpOwogICAgICAgICBjaGVja1BsYW4ocGxhbiwgMSk7CiAgICAgICAgIEFTU0VS
VChwbGFuLm1lbW9yeSgpLT5zaXplKCkpOwogCkBAIC0xMTExLDcgKzExMTAsNyBAQCBzdGF0aWMg
dm9pZCBydW5XYXNtVGVzdHMoKQogICAgICAgICAgICAgMHgyMCwgMHgwMCwgMHgwMCwgMHgwOSwg
MHgwZgogICAgICAgICB9OwogCi0gICAgICAgIFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7CisgICAg
ICAgIFBsYW4gcGxhbih2bSwgdmVjdG9yKTsKICAgICAgICAgY2hlY2tQbGFuKHBsYW4sIDEpOwog
CiAgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgpAQCAtMTEzOCw3ICsxMTM3LDcg
QEAgc3RhdGljIHZvaWQgcnVuV2FzbVRlc3RzKCkKICAgICAgICAgICAgIDB4MDMsIDB4MDAsIDB4
MDYsIDB4MDAsIDB4MDQsIDB4MTAsIDB4MDEsIDB4MDksIDB4MGYsIDB4MTAsIDB4MDAsIDB4MDks
IDB4MGYKICAgICAgICAgfTsKIAotICAgICAgICBQbGFuIHBsYW4oKnZtLCB2ZWN0b3IpOworICAg
ICAgICBQbGFuIHBsYW4odm0sIHZlY3Rvcik7CiAgICAgICAgIGNoZWNrUGxhbihwbGFuLCAxKTsK
IAogICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KQEAgLTExNzYsNyArMTE3NSw3
IEBAIHN0YXRpYyB2b2lkIHJ1bldhc21UZXN0cygpCiAgICAgICAgICAgICAweDE1LCAweDAwLCAw
eDA2LCAweDAwLCAweDBmLCAweDAwLCAweDBmCiAgICAgICAgIH07CiAKLSAgICAgICAgUGxhbiBw
bGFuKCp2bSwgdmVjdG9yKTsKKyAgICAgICAgUGxhbiBwbGFuKHZtLCB2ZWN0b3IpOwogICAgICAg
ICBjaGVja1BsYW4ocGxhbiwgMSk7CiAKICAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jh
c2guCkBAIC0xMjAwLDcgKzExOTksNyBAQCBzdGF0aWMgdm9pZCBydW5XYXNtVGVzdHMoKQogICAg
ICAgICAgICAgMHg4YiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHg4NSwgMHg4MCwg
MHg4MCwgMHg4MCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwNSwgMHgwOSwgMHgwZgogICAgICAgICB9
OwogCi0gICAgICAgIFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7CisgICAgICAgIFBsYW4gcGxhbih2
bSwgdmVjdG9yKTsKICAgICAgICAgY2hlY2tQbGFuKHBsYW4sIDEpOwogCiAgICAgICAgIC8vIFRl
c3QgdGhpcyBkb2Vzbid0IGNyYXNoLgpAQCAtMTIxOCw3ICsxMjE3LDcgQEAgc3RhdGljIHZvaWQg
cnVuV2FzbVRlc3RzKCkKICAgICAgICAgICAgIDB4NDAsIDB4MDksIDB4MGYKICAgICAgICAgfTsK
IAotICAgICAgICBQbGFuIHBsYW4oKnZtLCB2ZWN0b3IpOworICAgICAgICBQbGFuIHBsYW4odm0s
IHZlY3Rvcik7CiAgICAgICAgIGNoZWNrUGxhbihwbGFuLCAxKTsKIAogICAgICAgICAvLyBUZXN0
IHRoaXMgZG9lc24ndCBjcmFzaC4KQEAgLTEyMzUsNyArMTIzNCw3IEBAIHN0YXRpYyB2b2lkIHJ1
bldhc21UZXN0cygpCiAgICAgICAgICAgICAweDQwLCAweDEwLCAweDAzLCAweDQwLCAweDA5LCAw
eDBmCiAgICAgICAgIH07CiAKLSAgICAgICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9yKTsKKyAgICAg
ICAgUGxhbiBwbGFuKHZtLCB2ZWN0b3IpOwogICAgICAgICBjaGVja1BsYW4ocGxhbiwgMSk7CiAK
ICAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCkBAIC0xMjUyLDcgKzEyNTEsNyBA
QCBzdGF0aWMgdm9pZCBydW5XYXNtVGVzdHMoKQogICAgICAgICAgICAgMHgxMCwgMHgwMywgMHg0
MCwgMHgxMCwgMHgwMywgMHg0MCwgMHgwOSwgMHgwZiwgMHgwMCwgMHgwZgogICAgICAgICB9Owog
Ci0gICAgICAgIFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7CisgICAgICAgIFBsYW4gcGxhbih2bSwg
dmVjdG9yKTsKICAgICAgICAgY2hlY2tQbGFuKHBsYW4sIDEpOwogCiAgICAgICAgIC8vIFRlc3Qg
dGhpcyBkb2Vzbid0IGNyYXNoLgpAQCAtMTI2OCw3ICsxMjY3LDcgQEAgc3RhdGljIHZvaWQgcnVu
V2FzbVRlc3RzKCkKICAgICAgICAgICAgIDB4MDEsIDB4ODgsIDB4ODAsIDB4ODAsIDB4ODAsIDB4
MDAsIDB4MDAsIDB4MTQsIDB4MDAsIDB4MTQsIDB4MDEsIDB4NDAsIDB4MDksIDB4MGYKICAgICAg
ICAgfTsKIAotICAgICAgICBQbGFuIHBsYW4oKnZtLCB2ZWN0b3IpOworICAgICAgICBQbGFuIHBs
YW4odm0sIHZlY3Rvcik7CiAgICAgICAgIGNoZWNrUGxhbihwbGFuLCAxKTsKIAogICAgICAgICAv
LyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KQEAgLTEyOTQsNyArMTI5Myw3IEBAIHN0YXRpYyB2
b2lkIHJ1bldhc21UZXN0cygpCiAgICAgICAgICAgICAweDAxLCAweDA5LCAweDBmCiAgICAgICAg
IH07CiAKLSAgICAgICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9yKTsKKyAgICAgICAgUGxhbiBwbGFu
KHZtLCB2ZWN0b3IpOwogICAgICAgICBjaGVja1BsYW4ocGxhbiwgMSk7CiAKICAgICAgICAgLy8g
VGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCkBAIC0xMzI3LDcgKzEzMjYsNyBAQCBzdGF0aWMgdm9p
ZCBydW5XYXNtVGVzdHMoKQogICAgICAgICAgICAgMHgxMCwgMHgwMSwgMHg0MSwgMHgxNSwgMHgw
MCwgMHgwNiwgMHgwMSwgMHgwZiwgMHgwZiwgMHgxNCwgMHgwMSwgMHgwOSwgMHgwZgogICAgICAg
ICB9OwogCi0gICAgICAgIFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7CisgICAgICAgIFBsYW4gcGxh
bih2bSwgdmVjdG9yKTsKICAgICAgICAgY2hlY2tQbGFuKHBsYW4sIDEpOwogCiAgICAgICAgIC8v
IFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgpAQCAtMTM2OCw3ICsxMzY3LDcgQEAgc3RhdGljIHZv
aWQgcnVuV2FzbVRlc3RzKCkKICAgICAgICAgICAgIDB4MDEsIDB4NDAsIDB4MTUsIDB4MDQsIDB4
MDYsIDB4MDAsIDB4MGYsIDB4MGYsIDB4MGYsIDB4MTQsIDB4MDIsIDB4MDksIDB4MGYKICAgICAg
ICAgfTsKIAotICAgICAgICBQbGFuIHBsYW4oKnZtLCB2ZWN0b3IpOworICAgICAgICBQbGFuIHBs
YW4odm0sIHZlY3Rvcik7CiAgICAgICAgIGNoZWNrUGxhbihwbGFuLCAxKTsKIAogICAgICAgICAv
LyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KQEAgLTE0MTgsNyArMTQxNyw3IEBAIHN0YXRpYyB2
b2lkIHJ1bldhc21UZXN0cygpCiAgICAgICAgICAgICAweDAwLCAweDBmLCAweDAwLCAweDBmCiAg
ICAgICAgIH07CiAKLSAgICAgICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9yKTsKKyAgICAgICAgUGxh
biBwbGFuKHZtLCB2ZWN0b3IpOwogICAgICAgICBjaGVja1BsYW4ocGxhbiwgMSk7CiAKICAgICAg
ICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKaW5kZXggNTgzZmI4MmQ1NzRhMTBiZGI0MGU4
YTNkMDg1YjgyODcyNmQzNmIxYy4uOTE4NDEyYzU2ZDE4Y2MwZmZjNzBlNDYxNjgxMTM4MDI5NmQz
Nzc0MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5l
cmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJh
dG9yLmNwcApAQCAtNTcsNyArNTcsNyBAQCBuYW1lc3BhY2UgewogCiB1c2luZyBuYW1lc3BhY2Ug
QjM7CiAKLWNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworY29uc3QgYm9vbCB2ZXJib3NlID0g
dHJ1ZTsKIAogaW5saW5lIEIzOjpPcGNvZGUgdG9CM09wKEJpbmFyeU9wVHlwZSBvcCkKIHsKQEAg
LTc2MCw2ICs3NjAsOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8RnVuY3Rpb25Db21waWxhdGlvbj4gcGFy
c2VBbmRDb21waWxlKFZNJiB2bSwgY29uc3QgdWludDhfdCogZnVuYwogICAgIHByb2NlZHVyZS5y
ZXNldFJlYWNoYWJpbGl0eSgpOwogICAgIHZhbGlkYXRlKHByb2NlZHVyZSwgIkFmdGVyIHBhcnNp
bmc6XG4iKTsKIAorICAgIGlmICh2ZXJib3NlKQorICAgICAgICBkYXRhTG9nKCJQcmUgU1NBOiAi
LCBwcm9jZWR1cmUpOwogICAgIGZpeFNTQShwcm9jZWR1cmUpOwogICAgIGlmICh2ZXJib3NlKQog
ICAgICAgICBkYXRhTG9nKCJQb3N0IFNTQTogIiwgcHJvY2VkdXJlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvblBhcnNlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgKaW5kZXggMTg1MjI0YjQ5NDVi
Mzc1ZGM5MWI3MzEzY2I5YTY2NjMyYmVjYTY5My4uMDgzN2QzZDJiNzU0ZmE1YjgyMzBjZDI2M2Ux
MTQ3Y2JiMzA3ZTU0MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUZ1bmN0aW9uUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1
bmN0aW9uUGFyc2VyLmgKQEAgLTU1LDkgKzU1LDkgQEAgcHVibGljOgogICAgIH07CiAKIHByaXZh
dGU6Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworICAgIHN0YXRpYyBj
b25zdCBib29sIHZlcmJvc2UgPSB0cnVlOwogCi0gICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4g
cGFyc2VCbG9jaygpOworICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlQm9keSgpOwog
ICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlRXhwcmVzc2lvbihPcFR5cGUpOwogICAg
IGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlVW5yZWFjaGFibGVFeHByZXNzaW9uKE9wVHlw
ZSk7CiAgICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkUmV0dXJuKCk7CkBAIC0xMDksMTEg
KzEwOSwxMSBAQCBib29sIEZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZSgpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgcmV0dXJuIHBhcnNlQmxvY2soKTsKKyAg
ICByZXR1cm4gcGFyc2VCb2R5KCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbnRleHQ+Ci1i
b29sIEZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZUJsb2NrKCkKK2Jvb2wgRnVuY3Rpb25Q
YXJzZXI8Q29udGV4dD46OnBhcnNlQm9keSgpCiB7CiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAg
ICAgdWludDhfdCBvcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21Nb2R1bGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVs
ZVBhcnNlci5jcHAKaW5kZXggYjAzNWI0NTMyOTdhZDRiZGE2MmMyOTQ4OWM4YzNjOGFmZWQxYjAy
NC4uOWFhYTE2Y2MzYzk4ODY5ZGI2Y2FhZGI1MWZiM2ViODVhZWZmNWQ0YiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZVBhcnNlci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZVBhcnNlci5jcHAKQEAgLTM3LDcgKzM3
LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKIAotc3RhdGljIGNvbnN0
IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IHRydWU7
CiAKIGJvb2wgTW9kdWxlUGFyc2VyOjpwYXJzZSgpCiB7CkBAIC0yMTQsNiArMjE0LDEwIEBAIGJv
b2wgTW9kdWxlUGFyc2VyOjpwYXJzZVR5cGUoKQogCiBib29sIE1vZHVsZVBhcnNlcjo6cGFyc2VJ
bXBvcnQoKQogeworICAgIC8vIEZJWE1FOiBUaGlzIGlzIG9ubHkgaGVyZSBmb3IgdGVzdFdhc20g
c2luY2UgdGhhdCBoYXMgc29tZSBzaWduaWZpY2FudGx5IG91dGRhdGVkIHBhcnRzLgorICAgIGlm
IChtX2Jhc2ljUGFyc2luZykKKyAgICAgICAgcmV0dXJuIHRydWU7CisKICAgICB1aW50MzJfdCBp
bXBvcnRDb3VudDsKICAgICBpZiAoIXBhcnNlVmFyVUludDMyKGltcG9ydENvdW50KSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtMzI1LDYgKzMyOSwxMCBAQCBib29sIE1vZHVsZVBhcnNlcjo6
cGFyc2VHbG9iYWwoKQogCiBib29sIE1vZHVsZVBhcnNlcjo6cGFyc2VFeHBvcnQoKQogeworICAg
IC8vIEZJWE1FOiBUaGlzIGlzIG9ubHkgaGVyZSBmb3IgdGVzdFdhc20gc2luY2UgdGhhdCBoYXMg
c29tZSBzaWduaWZpY2FudGx5IG91dGRhdGVkIHBhcnRzLgorICAgIGlmIChtX2Jhc2ljUGFyc2lu
ZykKKyAgICAgICAgcmV0dXJuIHRydWU7CisKICAgICB1aW50MzJfdCBleHBvcnRDb3VudDsKICAg
ICBpZiAoIXBhcnNlVmFyVUludDMyKGV4cG9ydENvdW50KSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtMzQ1LDcgKzM1Myw3IEBAIGJvb2wgTW9kdWxlUGFyc2VyOjpwYXJzZUV4cG9ydCgpCiAg
ICAgICAgICAgICB1aW50MzJfdCBmdW5jdGlvblNpZ25hdHVyZUluZGV4OwogICAgICAgICAgICAg
aWYgKCFwYXJzZVZhclVJbnQzMihmdW5jdGlvblNpZ25hdHVyZUluZGV4KSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBpZiAoZnVuY3Rpb25TaWduYXR1cmVJbmRl
eCA+IG1fbW9kdWxlLT5zaWduYXR1cmVzLnNpemUoKSkKKyAgICAgICAgICAgIGlmIChmdW5jdGlv
blNpZ25hdHVyZUluZGV4ID49IG1fbW9kdWxlLT5zaWduYXR1cmVzLnNpemUoKSkKICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBlLmZ1bmN0aW9uU2lnbmF0dXJlID0g
Jm1fbW9kdWxlLT5zaWduYXR1cmVzW2Z1bmN0aW9uU2lnbmF0dXJlSW5kZXhdOwogICAgICAgICB9
IGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVs
ZVBhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZVBhcnNlci5o
CmluZGV4IDg5OWJmMjEwODBhMjQwOTQ3OGYyYzM1ZDdiYmY5MGVmZjhlMjMxYWQuLjgyNjA0N2Ux
ZGZmNjE5ZWZhYWVjOGNmZTYyNDFkOGFmY2VhYzBhMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGVQYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtTW9kdWxlUGFyc2VyLmgKQEAgLTYyLDYgKzYyLDkgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gbV9tb2R1bGU7CiAgICAgfQogCisgICAgLy8gRklYTUU6IFRoaXMgaXMg
b25seSBoZXJlIGZvciB0ZXN0V2FzbSBzaW5jZSB0aGF0IGhhcyBzb21lIHNpZ25pZmljYW50bHkg
b3V0ZGF0ZWQgcGFydHMuCisgICAgdm9pZCBiYXNpY1BhcnNpbmdPbmx5KCkgeyBtX2Jhc2ljUGFy
c2luZyA9IHRydWU7IH0KKwogcHJpdmF0ZToKICNkZWZpbmUgV0FTTV9TRUNUSU9OX0RFQ0xBUkVf
UEFSU0VSKE5BTUUsIElELCBERVNDUklQVElPTikgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFy
c2UgIyMgTkFNRSgpOwogICAgIEZPUl9FQUNIX1dBU01fU0VDVElPTihXQVNNX1NFQ1RJT05fREVD
TEFSRV9QQVJTRVIpCkBAIC02OSw2ICs3Miw4IEBAIHByaXZhdGU6CiAKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8TW9kdWxlSW5mb3JtYXRpb24+IG1fbW9kdWxlOwogICAgIGJvb2wgbV9mYWlsZWQgeyB0
cnVlIH07CisgICAgLy8gRklYTUU6IFRoaXMgaXMgb25seSBoZXJlIGZvciB0ZXN0V2FzbSBzaW5j
ZSB0aGF0IGhhcyBzb21lIHNpZ25pZmljYW50bHkgb3V0ZGF0ZWQgcGFydHMuCisgICAgYm9vbCBt
X2Jhc2ljUGFyc2luZyB7IGZhbHNlIH07CiAgICAgU3RyaW5nIG1fZXJyb3JNZXNzYWdlOwogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBsYW4uY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBsYW4uY3BwCmluZGV4IDAzNGJjNjBjNjg2
NWFlMDliN2I0OGU3ZTcxMWJmMzNkNDk5OTNlZDYuLjYyZjA3MWRmMDk4OGQ2N2NkYmEzNTBmMTg1
Mzk5YTAzOWEwMmRjZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21QbGFuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGxhbi5jcHAK
QEAgLTM5LDE5ICszOSwyOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdhc20gewog
Ci1zdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CitzdGF0aWMgY29uc3QgYm9vbCB2
ZXJib3NlID0gdHJ1ZTsKICAgICAKLVBsYW46OlBsYW4oVk0mIHZtLCBWZWN0b3I8dWludDhfdD4g
c291cmNlKQorUGxhbjo6UGxhbihWTSogdm0sIFZlY3Rvcjx1aW50OF90PiBzb3VyY2UpCiAgICAg
OiBQbGFuKHZtLCBzb3VyY2UuZGF0YSgpLCBzb3VyY2Uuc2l6ZSgpKQogewogfQogCi1QbGFuOjpQ
bGFuKFZNJiB2bSwgY29uc3QgdWludDhfdCogc291cmNlLCBzaXplX3Qgc291cmNlTGVuZ3RoKQor
UGxhbjo6UGxhbihWTSogdm0sIGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgc2l6ZV90IHNvdXJjZUxl
bmd0aCkKKyAgICA6IG1fdm0odm0pCisgICAgLCBtX3NvdXJjZShzb3VyY2UpCisgICAgLCBtX3Nv
dXJjZUxlbmd0aChzb3VyY2VMZW5ndGgpCit7Cit9CisKK3ZvaWQgUGxhbjo6cnVuKCkKIHsKICAg
ICBpZiAodmVyYm9zZSkKICAgICAgICAgZGF0YUxvZ0xuKCJTdGFydGluZyBwbGFuLiIpOwogICAg
IHsKLSAgICAgICAgTW9kdWxlUGFyc2VyIG1vZHVsZVBhcnNlcihzb3VyY2UsIHNvdXJjZUxlbmd0
aCk7CisgICAgICAgIE1vZHVsZVBhcnNlciBtb2R1bGVQYXJzZXIobV9zb3VyY2UsIG1fc291cmNl
TGVuZ3RoKTsKKyAgICAgICAgaWYgKG1fYmFzaWNUZXN0aW5nT25seSkKKyAgICAgICAgICAgIG1v
ZHVsZVBhcnNlci5iYXNpY1BhcnNpbmdPbmx5KCk7CiAgICAgICAgIGlmICghbW9kdWxlUGFyc2Vy
LnBhcnNlKCkpIHsKICAgICAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRh
dGFMb2dMbigiUGFyc2luZyBtb2R1bGUgZmFpbGVkOiAiLCBtb2R1bGVQYXJzZXIuZXJyb3JNZXNz
YWdlKCkpOwpAQCAtNzUsMTcgKzg0LDIyIEBAIFBsYW46OlBsYW4oVk0mIHZtLCBjb25zdCB1aW50
OF90KiBzb3VyY2UsIHNpemVfdCBzb3VyY2VMZW5ndGgpCiAgICAgZm9yIChjb25zdCBGdW5jdGlv
bkluZm9ybWF0aW9uJiBpbmZvIDogbV9tb2R1bGVJbmZvcm1hdGlvbi0+ZnVuY3Rpb25zKSB7CiAg
ICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZ0xuKCJQcm9jZXNzaW5nIGZ1
bmN0aW9uIHN0YXJ0aW5nIGF0OiAiLCBpbmZvLnN0YXJ0LCAiIGFuZCBlbmRpbmcgYXQ6ICIsIGlu
Zm8uZW5kKTsKLSAgICAgICAgY29uc3QgdWludDhfdCogZnVuY3Rpb25TdGFydCA9IHNvdXJjZSAr
IGluZm8uc3RhcnQ7CisgICAgICAgIGNvbnN0IHVpbnQ4X3QqIGZ1bmN0aW9uU3RhcnQgPSBtX3Nv
dXJjZSArIGluZm8uc3RhcnQ7CiAgICAgICAgIHNpemVfdCBmdW5jdGlvbkxlbmd0aCA9IGluZm8u
ZW5kIC0gaW5mby5zdGFydDsKLSAgICAgICAgQVNTRVJUKGZ1bmN0aW9uTGVuZ3RoIDw9IHNvdXJj
ZUxlbmd0aCk7CisgICAgICAgIEFTU0VSVChmdW5jdGlvbkxlbmd0aCA8PSBtX3NvdXJjZUxlbmd0
aCk7CiAKICAgICAgICAgU3RyaW5nIGVycm9yID0gdmFsaWRhdGVGdW5jdGlvbihmdW5jdGlvblN0
YXJ0LCBmdW5jdGlvbkxlbmd0aCwgaW5mby5zaWduYXR1cmUsIG1fbW9kdWxlSW5mb3JtYXRpb24t
PmZ1bmN0aW9ucyk7CiAgICAgICAgIGlmICghZXJyb3IuaXNOdWxsKCkpIHsKKyAgICAgICAgICAg
IGlmICh2ZXJib3NlKSB7CisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGZ1bmN0aW9uTGVuZ3RoOyArK2kpCisgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coUmF3UG9p
bnRlcihyZWludGVycHJldF9jYXN0PHZvaWQqPihmdW5jdGlvblN0YXJ0W2ldKSksICIsICIpOwor
ICAgICAgICAgICAgICAgIGRhdGFMb2dMbigpOworICAgICAgICAgICAgfQogICAgICAgICAgICAg
bV9lcnJvck1lc3NhZ2UgPSBlcnJvcjsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
Ci0gICAgICAgIG1fY29tcGlsZWRGdW5jdGlvbnMudW5jaGVja2VkQXBwZW5kKHBhcnNlQW5kQ29t
cGlsZSh2bSwgZnVuY3Rpb25TdGFydCwgZnVuY3Rpb25MZW5ndGgsIG1fbW9kdWxlSW5mb3JtYXRp
b24tPm1lbW9yeS5nZXQoKSwgaW5mby5zaWduYXR1cmUsIG1fbW9kdWxlSW5mb3JtYXRpb24tPmZ1
bmN0aW9ucykpOworICAgICAgICBtX2NvbXBpbGVkRnVuY3Rpb25zLnVuY2hlY2tlZEFwcGVuZChw
YXJzZUFuZENvbXBpbGUoKm1fdm0sIGZ1bmN0aW9uU3RhcnQsIGZ1bmN0aW9uTGVuZ3RoLCBtX21v
ZHVsZUluZm9ybWF0aW9uLT5tZW1vcnkuZ2V0KCksIGluZm8uc2lnbmF0dXJlLCBtX21vZHVsZUlu
Zm9ybWF0aW9uLT5mdW5jdGlvbnMpKTsKICAgICB9CiAKICAgICAvLyBQYXRjaCB0aGUgY2FsbCBz
aXRlcyBmb3IgZWFjaCBmdW5jdGlvbi4KQEAgLTk0LDcgKzEwOCw3IEBAIFBsYW46OlBsYW4oVk0m
IHZtLCBjb25zdCB1aW50OF90KiBzb3VyY2UsIHNpemVfdCBzb3VyY2VMZW5ndGgpCiAgICAgICAg
IGZvciAoYXV0byYgY2FsbCA6IGZ1bmN0aW9uLT51bmxpbmtlZENhbGxzKQogICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxsKGNhbGwuY2FsbExvY2F0aW9uLCBDb2RlTG9jYXRp
b25MYWJlbChtX2NvbXBpbGVkRnVuY3Rpb25zW2NhbGwuZnVuY3Rpb25JbmRleF0tPmNvZGUtPmNv
ZGUoKSkpOwogICAgIH0KLQorICAgIAogICAgIG1fZmFpbGVkID0gZmFsc2U7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QbGFuLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtUGxhbi5oCmluZGV4IGQ3YzAzYWJiOTQ2MTI4NTAxMTNlYzMx
ZmM2YTAyZGZkOThkYzY5NTAuLjJkNzkzNjdmNDVkNTk1YjhkOWY0MGZkN2I5NjhmZDk3NTNmNmRi
YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QbGFuLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBsYW4uaApAQCAtMzgsMTAgKzM4LDEy
IEBAIGNsYXNzIE1lbW9yeTsKIAogY2xhc3MgUGxhbiB7CiBwdWJsaWM6Ci0gICAgSlNfRVhQT1JU
X1BSSVZBVEUgUGxhbihWTSYsIFZlY3Rvcjx1aW50OF90Pik7Ci0gICAgSlNfRVhQT1JUX1BSSVZB
VEUgUGxhbihWTSYsIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIEpTX0VYUE9SVF9QUklW
QVRFIFBsYW4oVk0qLCBWZWN0b3I8dWludDhfdD4pOworICAgIEpTX0VYUE9SVF9QUklWQVRFIFBs
YW4oVk0qLCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKICAgICBKU19FWFBPUlRfUFJJVkFURSB+
UGxhbigpOwogCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBydW4oKTsKKwogICAgIGJvb2wg
V0FSTl9VTlVTRURfUkVUVVJOIGZhaWxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZmFpbGVkOyB9CiAg
ICAgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UoKSBjb25zdAogICAgIHsKQEAgLTc1LDExICs3
NywxOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX2NvbXBpbGVkRnVuY3Rpb25zOwogICAg
IH0KIAorICAgIHZvaWQgYmFzaWNUZXN0aW5nT25seSgpIHsgbV9iYXNpY1Rlc3RpbmdPbmx5ID0g
dHJ1ZTsgfQorCiBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxNb2R1bGVJbmZvcm1hdGlv
bj4gbV9tb2R1bGVJbmZvcm1hdGlvbjsKICAgICBDb21waWxlZEZ1bmN0aW9ucyBtX2NvbXBpbGVk
RnVuY3Rpb25zOwogCisgICAgVk0qIG1fdm07CisgICAgY29uc3QgdWludDhfdCogbV9zb3VyY2U7
CisgICAgY29uc3Qgc2l6ZV90IG1fc291cmNlTGVuZ3RoOwogICAgIGJvb2wgbV9mYWlsZWQgeyB0
cnVlIH07CisgICAgLy8gRklYTUU6IGJhc2ljVGVzdGluZ09ubHkgaXMgb25seSBoZXJlIGZvciB0
ZXN0V2FzbSBzaW5jZSB0aGF0IGhhcyBzb21lIHNpZ25pZmljYW50bHkgb3V0ZGF0ZWQgcGFydHMu
CisgICAgYm9vbCBtX2Jhc2ljVGVzdGluZ09ubHkgeyBmYWxzZSB9OwogICAgIFN0cmluZyBtX2Vy
cm9yTWVzc2FnZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5jcHAKaW5kZXggYmI2ODRl
MWUyNDMyYzMwMmQxYWEzZTYzOWE4ZmMwMTYyMDk3Nzc5YS4uZjAzYTBhOGJiMTFiZGNiN2Q3MDdl
YmRlOWExYjYzZTJkYzM3ZjVlOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5jcHAKQEAgLTY4
LDggKzY4LDkgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0
SlNXZWJBc3NlbWJseU1vZHVsZShFeGVjU3RhdGUqIHN0YXQKICAgICBzaXplX3QgYnl0ZVNpemUg
PSBhcnJheUJ1ZmZlclZpZXcgPyBhcnJheUJ1ZmZlclZpZXctPmxlbmd0aCgpIDogYXJyYXlCdWZm
ZXItPmltcGwoKS0+Ynl0ZUxlbmd0aCgpOwogICAgIGNvbnN0IGF1dG8qIGJhc2UgPSBhcnJheUJ1
ZmZlclZpZXcgPyBzdGF0aWNfY2FzdDx1aW50OF90Kj4oYXJyYXlCdWZmZXJWaWV3LT52ZWN0b3Io
KSkgOiBzdGF0aWNfY2FzdDx1aW50OF90Kj4oYXJyYXlCdWZmZXItPmltcGwoKS0+ZGF0YSgpKTsK
IAotICAgIFdhc206OlBsYW4gcGxhbih2bSwgYmFzZSArIGJ5dGVPZmZzZXQsIGJ5dGVTaXplKTsK
KyAgICBXYXNtOjpQbGFuIHBsYW4oJnZtLCBiYXNlICsgYnl0ZU9mZnNldCwgYnl0ZVNpemUpOwog
ICAgIC8vIE9uIGZhaWx1cmUsIGEgbmV3IFdlYkFzc2VtYmx5LkNvbXBpbGVFcnJvciBpcyB0aHJv
d24uCisgICAgcGxhbi5ydW4oKTsKICAgICBpZiAocGxhbi5mYWlsZWQoKSkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihzdGF0ZSwgc2NvcGUsIGNyZWF0ZVdl
YkFzc2VtYmx5Q29tcGlsZUVycm9yKHN0YXRlLCBwbGFuLmVycm9yTWVzc2FnZSgpKSkpOwogCmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDc3
YTFjYzM3YTdjMmZiNjI3NTdlZjQwZTJmMmQ0ZjM5NzliMjFlOTAuLjQyYzQxZWQ2ZDdkMDhkZjUx
ZTg2YjljMGU5YTYwZTFjOWQzMzdkNTQgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDQgQEAKKzIwMTYtMTEtMTAgIEtlaXRo
IE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBXYXNtIHRl
c3RzIHRvIEpTCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjQ2MTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHdhc20vQnVpbGRlci5qczoKKyAgICAgICAgKGNvbnN0Ll9tYXliZVJlZ2lzdGVyVHlwZSk6
CisgICAgICAgIChjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChzd2l0Y2gudHlwZW9mKTogRGVs
ZXRlZC4KKyAgICAgICAgKiB3YXNtL0J1aWxkZXJfV2ViQXNzZW1ibHlCaW5hcnkuanM6CisgICAg
ICAgIChjb25zdC5lbWl0dGVycy5UeXBlKToKKyAgICAgICAgKGNvbnN0LmVtaXR0ZXJzLkltcG9y
dCk6CisgICAgICAgIChjb25zdC5lbWl0dGVycy5GdW5jdGlvbik6CisgICAgICAgIChjb25zdC5l
bWl0dGVycy5NZW1vcnkpOgorICAgICAgICAoY29uc3QuZW1pdHRlcnMuQ29kZSk6CisgICAgICAg
IChleHBvcnQuY29uc3QuQmluYXJ5KToKKyAgICAgICAgKiB3YXNtL0xvd0xldmVsQmluYXJ5Lmpz
OgorICAgICAgICAoZXhwb3J0LmRlZmF1bHQuTG93TGV2ZWxCaW5hcnkucHJvdG90eXBlLmdldCBy
ZXR1cm4pOgorICAgICAgICAoZXhwb3J0LmRlZmF1bHQuTG93TGV2ZWxCaW5hcnkucHJvdG90eXBl
LnZhcnVpbnQzMik6CisgICAgICAgIChleHBvcnQuZGVmYXVsdC5Mb3dMZXZlbEJpbmFyeS5wcm90
b3R5cGUudmFyaW50MzIpOgorICAgICAgICAoZXhwb3J0LmRlZmF1bHQuTG93TGV2ZWxCaW5hcnku
cHJvdG90eXBlLnZhcnVpbnQxKToKKyAgICAgICAgKGV4cG9ydC5kZWZhdWx0Lkxvd0xldmVsQmlu
YXJ5LnByb3RvdHlwZS52YXJpbnQ3KToKKyAgICAgICAgKGV4cG9ydC5kZWZhdWx0Lkxvd0xldmVs
QmluYXJ5LnByb3RvdHlwZS52YXJ1aW50Nyk6CisgICAgICAgIChleHBvcnQuZGVmYXVsdC5Mb3dM
ZXZlbEJpbmFyeS5wcm90b3R5cGUuaW5saW5lX3NpZ25hdHVyZV90eXBlKToKKyAgICAgICAgKGV4
cG9ydC5kZWZhdWx0Lkxvd0xldmVsQmluYXJ5LnByb3RvdHlwZS5zdHJpbmcpOgorICAgICAgICAo
ZXhwb3J0LmRlZmF1bHQuTG93TGV2ZWxCaW5hcnkucHJvdG90eXBlLmdldFZhcnVpbnQzMik6Cisg
ICAgICAgIChleHBvcnQuZGVmYXVsdC5Mb3dMZXZlbEJpbmFyeS5wcm90b3R5cGUuZ2V0VmFyaW50
MzIpOgorICAgICAgICAoZXhwb3J0LmRlZmF1bHQuTG93TGV2ZWxCaW5hcnkucHJvdG90eXBlLmdl
dFZhcnVpbnQ3KToKKyAgICAgICAgKGV4cG9ydC5kZWZhdWx0Lkxvd0xldmVsQmluYXJ5LnByb3Rv
dHlwZS5nZXRTdHJpbmcpOgorICAgICAgICAoZXhwb3J0LmRlZmF1bHQuTG93TGV2ZWxCaW5hcnkp
OgorICAgICAgICAoUGF0Y2hhYmxlTG93TGV2ZWxCaW5hcnkucHJvdG90eXBlLmFwcGx5KToKKyAg
ICAgICAgKFBhdGNoYWJsZUxvd0xldmVsQmluYXJ5KToKKyAgICAgICAgKGV4cG9ydC5kZWZhdWx0
Lkxvd0xldmVsQmluYXJ5LnByb3RvdHlwZS52YXJ1aW50KTogRGVsZXRlZC4KKyAgICAgICAgKGV4
cG9ydC5kZWZhdWx0Lkxvd0xldmVsQmluYXJ5LnByb3RvdHlwZS52YXJpbnQpOiBEZWxldGVkLgor
ICAgICAgICAoZXhwb3J0LmRlZmF1bHQuTG93TGV2ZWxCaW5hcnkucHJvdG90eXBlLmdldFZhcnVp
bnQpOiBEZWxldGVkLgorICAgICAgICAoZXhwb3J0LmRlZmF1bHQuTG93TGV2ZWxCaW5hcnkucHJv
dG90eXBlLmdldFZhcmludCk6IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9zZWxmLXRlc3QvdGVz
dF9Mb3dMZXZlbEJpbmFyeV92YXJpbnQzMi5qczogUmVuYW1lZCBmcm9tIEpTVGVzdHMvd2FzbS9z
ZWxmLXRlc3QvdGVzdF9Mb3dMZXZlbEJpbmFyeV92YXJpbnQuanMuCisgICAgICAgICogd2FzbS9z
ZWxmLXRlc3QvdGVzdF9Mb3dMZXZlbEJpbmFyeV92YXJ1aW50MzIuanM6IFJlbmFtZWQgZnJvbSBK
U1Rlc3RzL3dhc20vc2VsZi10ZXN0L3Rlc3RfTG93TGV2ZWxCaW5hcnlfdmFydWludC5qcy4KKwog
MjAxNi0xMS0wOSAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBN
YXRoLm1pbigpL01hdGgubWF4KCkgd2l0aCBubyBhcmd1bWVudHMgaXMgbG93ZXJlZCBpbmNvcnJl
Y3RseSBpbiB0aGUgQnl0ZWNvZGVQYXJzZXIKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9CdWls
ZGVyLmpzIGIvSlNUZXN0cy93YXNtL0J1aWxkZXIuanMKaW5kZXggZDFlNDc2ODQyMjM4YzIzNjhj
NzUzM2IzNmYyNzI4MWQ0MzY2YTJhOC4uMzNjMjgwZmM4NWJkZmJkOWYwZDQ1MzM2M2EzOTQ3N2Ri
ZDViZTk1YSAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNtL0J1aWxkZXIuanMKKysrIGIvSlNUZXN0
cy93YXNtL0J1aWxkZXIuanMKQEAgLTYwLDE0ICs2MCwxNCBAQCBjb25zdCBfbWF5YmVSZWdpc3Rl
clR5cGUgPSAoYnVpbGRlciwgdHlwZSkgPT4gewogICAgIGlmICh0eXBlb2YodHlwZSkgPT09ICJu
dW1iZXIiKSB7CiAgICAgICAgIC8vIFR5cGUgbnVtYmVycyBhbHJlYWR5IHJlZmVyIHRvIHRoZSB0
eXBlIHNlY3Rpb24sIG5vIG5lZWQgdG8gcmVnaXN0ZXIgdGhlbS4KICAgICAgICAgaWYgKGJ1aWxk
ZXIuX2NoZWNrZWQpIHsKLSAgICAgICAgICAgIGFzc2VydC5pc05vdFVuZGVmKHR5cGVTZWN0aW9u
LCBgQ2FuJ3QgdXNlIHR5cGUgJHt0eXBlfSBpZiBhIHR5cGUgc2VjdGlvbiBpc24ndCBwcmVzZW50
YCk7Ci0gICAgICAgICAgICBhc3NlcnQuaXNOb3RVbmRlZih0eXBlU2VjdGlvbi5kYXRhW3R5cGVd
LCBgVHlwZSAke3R5cGV9IGRvZXNuJ3QgZXhpc3QgaW4gdHlwZSBzZWN0aW9uYCk7CisgICAgICAg
ICAgICBhc3NlcnQuaXNOb3RVbmRlZih0eXBlU2VjdGlvbiwgYENhbiBub3QgdXNlIHR5cGUgJHt0
eXBlfSBpZiBhIHR5cGUgc2VjdGlvbiBpcyBub3QgcHJlc2VudGApOworICAgICAgICAgICAgYXNz
ZXJ0LmlzTm90VW5kZWYodHlwZVNlY3Rpb24uZGF0YVt0eXBlXSwgYFR5cGUgJHt0eXBlfSBkb2Vz
IG5vdCBleGlzdCBpbiB0eXBlIHNlY3Rpb25gKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4g
dHlwZTsKICAgICB9CiAgICAgYXNzZXJ0Lmhhc09iamVjdFByb3BlcnR5KHR5cGUsICJwYXJhbXMi
LCBgRXhwZWN0ZWQgdHlwZSB0byBiZSBhIG51bWJlciBvciBvYmplY3Qgd2l0aCAncGFyYW1zJyBh
bmQgb3B0aW9uYWxseSAncmV0JyBmaWVsZHNgKTsKICAgICBjb25zdCBbcGFyYW1zLCByZXRdID0g
X25vcm1hbGl6ZUZ1bmN0aW9uU2lnbmF0dXJlKHR5cGUucGFyYW1zLCB0eXBlLnJldCk7Ci0gICAg
YXNzZXJ0LmlzTm90VW5kZWYodHlwZVNlY3Rpb24sIGBDYW4ndCBhZGQgdHlwZSBpZiBhIHR5cGUg
c2VjdGlvbiBpc24ndCBwcmVzZW50YCk7CisgICAgYXNzZXJ0LmlzTm90VW5kZWYodHlwZVNlY3Rp
b24sIGBDYW4gbm90IGFkZCB0eXBlIGlmIGEgdHlwZSBzZWN0aW9uIGlzIG5vdCBwcmVzZW50YCk7
CiAgICAgLy8gVHJ5IHJldXNpbmcgYW4gZXF1aXZhbGVudCB0eXBlIGZyb20gdGhlIHR5cGUgc2Vj
dGlvbi4KICAgICB0eXBlczoKICAgICBmb3IgKGxldCBpID0gMDsgaSAhPT0gdHlwZVNlY3Rpb24u
ZGF0YS5sZW5ndGg7ICsraSkgewpAQCAtMTU0LDYgKzE1NCwxMzYgQEAgY29uc3QgX2V4cG9ydEZ1
bmN0aW9uQ29udGludWF0aW9uID0gKGJ1aWxkZXIsIHNlY3Rpb24sIG5leHRCdWlsZGVyKSA9PiB7
CiAgICAgfTsKIH07CiAKK2NvbnN0IF9jaGVja1N0YWNrUmV0dXJuID0gb3AgPT4geworICAgIGZv
ciAobGV0IGV4cGVjdCBvZiByZXQpIHsKKyAgICAgICAgaWYgKFdBU00uaXNWYWxpZFZhbHVlVHlw
ZShleHBlY3QpKSB7CisgICAgICAgICAgICAvLyBGSVhNRSBpbXBsZW1lbnQgc3RhY2sgY2hlY2tz
IGZvciByZXR1cm4uIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM0
MjEKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIEhhbmRsZSBvdXIgb3duIG1ldGEt
dHlwZXMuCisgICAgICAgICAgICBzd2l0Y2ggKGV4cGVjdCkgeworICAgICAgICAgICAgY2FzZSAi
Ym9vbCI6IGJyZWFrOyAvLyBGSVhNRSBpbXBsZW1lbnQgYm9vbC4gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzQyMQorICAgICAgICAgICAgY2FzZSAiY2FsbCI6IGJy
ZWFrOyAvLyBGSVhNRSBpbXBsZW1lbnQgY2FsbCBzdGFjayByZXR1cm4gY2hlY2sgYmFzZWQgb24g
ZnVuY3Rpb24gc2lnbmF0dXJlLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTYzNDIxCisgICAgICAgICAgICBjYXNlICJjb250cm9sIjogYnJlYWs7IC8vIEZJWE1FIGlt
cGxlbWVudCBjb250cm9sLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTYzNDIxCisgICAgICAgICAgICBjYXNlICJnbG9iYWwiOiBicmVhazsgLy8gRklYTUUgaW1wbGVt
ZW50IGdsb2JhbC4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzQy
MQorICAgICAgICAgICAgY2FzZSAibG9jYWwiOiBicmVhazsgLy8gRklYTUUgaW1wbGVtZW50IGxv
Y2FsLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDIxCisgICAg
ICAgICAgICBjYXNlICJwcmV2IjogYnJlYWs7IC8vIEZJWE1FIGltcGxlbWVudCBwcmV2LCBjaGVj
a2luZyBmb3Igd2hldGV2ZXIgdGhlIHBhcmFtZXRlciB0eXBlIHdhcy4gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzQyMQorICAgICAgICAgICAgY2FzZSAic2l6ZSI6
IGJyZWFrOyAvLyBGSVhNRSBpbXBsZW1lbnQgc2l6ZS4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2MzQyMQorICAgICAgICAgICAgZGVmYXVsdDogdGhyb3cgbmV3IEVy
cm9yKGBJbXBsZW1lbnRhdGlvbiBwcm9ibGVtOiB1bmhhbmRsZWQgbWV0YS10eXBlICIke2V4cGVj
dH0iIG9uICIke29wfSJgKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfQorfTsKKworY29uc3QgX2NoZWNrSW1tcyA9IChvcCwg
aW1tcykgPT4geworICAgIGFzc2VydC5lcShpbW1zLmxlbmd0aCwgaW1tLmxlbmd0aCwgYCIke29w
fSIgZXhwZWN0cyAke2ltbS5sZW5ndGh9IGltbWVkaWF0ZXMsIGdvdCAke2ltbXMubGVuZ3RofWAp
OworICAgIGZvciAobGV0IGlkeCA9IDA7IGlkeCAhPT0gaW1tLmxlbmd0aDsgKytpZHgpIHsKKyAg
ICAgICAgY29uc3QgZ290ID0gaW1tc1tpZHhdOworICAgICAgICBjb25zdCBleHBlY3QgPSBpbW1b
aWR4XTsKKyAgICAgICAgc3dpdGNoIChleHBlY3QubmFtZSkgeworICAgICAgICBjYXNlICJmdW5j
dGlvbl9pbmRleCI6CisgICAgICAgICAgICBhc3NlcnQudHJ1dGh5KF9pc1ZhbGlkVmFsdWUoZ290
LCAiaTMyIiksIGBJbnZhbGlkIHZhbHVlIG9uICR7b3B9OiBnb3QgIiR7Z290fSIsIGV4cGVjdGVk
IGkzMmApOworICAgICAgICAgICAgLy8gRklYTUUgY2hlY2sgZnVuY3Rpb24gaW5kaWNlcy4gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzQyMQorICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgImxvY2FsX2luZGV4IjogdGhyb3cgbmV3IEVycm9yKGBVbmlt
cGxlbWVudGVkOiAiJHtleHBlY3QubmFtZX0iIG9uICIke29wfSJgKTsKKyAgICAgICAgY2FzZSAi
Z2xvYmFsX2luZGV4IjogdGhyb3cgbmV3IEVycm9yKGBVbmltcGxlbWVudGVkOiAiJHtleHBlY3Qu
bmFtZX0iIG9uICIke29wfSJgKTsKKyAgICAgICAgY2FzZSAidHlwZV9pbmRleCI6IHRocm93IG5l
dyBFcnJvcihgVW5pbXBsZW1lbnRlZDogIiR7ZXhwZWN0Lm5hbWV9IiBvbiAiJHtvcH0iYCk7Cisg
ICAgICAgIGNhc2UgInZhbHVlIjoKKyAgICAgICAgICAgIGFzc2VydC50cnV0aHkoX2lzVmFsaWRW
YWx1ZShnb3QsIHJldFswXSksIGBJbnZhbGlkIHZhbHVlIG9uICR7b3B9OiBnb3QgIiR7Z290fSIs
IGV4cGVjdGVkICR7cmV0WzBdfWApOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
ImZsYWdzIjogdGhyb3cgbmV3IEVycm9yKGBVbmltcGxlbWVudGVkOiAiJHtleHBlY3QubmFtZX0i
IG9uICIke29wfSJgKTsKKyAgICAgICAgY2FzZSAib2Zmc2V0IjogdGhyb3cgbmV3IEVycm9yKGBV
bmltcGxlbWVudGVkOiAiJHtleHBlY3QubmFtZX0iIG9uICIke29wfSJgKTsKKyAgICAgICAgICAg
IC8vIENvbnRyb2w6CisgICAgICAgIGNhc2UgImRlZmF1bHRfdGFyZ2V0IjogdGhyb3cgbmV3IEVy
cm9yKGBVbmltcGxlbWVudGVkOiAiJHtleHBlY3QubmFtZX0iIG9uICIke29wfSJgKTsKKyAgICAg
ICAgY2FzZSAicmVsYXRpdmVfZGVwdGgiOiB0aHJvdyBuZXcgRXJyb3IoYFVuaW1wbGVtZW50ZWQ6
ICIke2V4cGVjdC5uYW1lfSIgb24gIiR7b3B9ImApOworICAgICAgICBjYXNlICJzaWciOiB0aHJv
dyBuZXcgRXJyb3IoYFVuaW1wbGVtZW50ZWQ6ICIke2V4cGVjdC5uYW1lfSIgb24gIiR7b3B9ImAp
OworICAgICAgICBjYXNlICJ0YXJnZXRfY291bnQiOiB0aHJvdyBuZXcgRXJyb3IoYFVuaW1wbGVt
ZW50ZWQ6ICIke2V4cGVjdC5uYW1lfSIgb24gIiR7b3B9ImApOworICAgICAgICBjYXNlICJ0YXJn
ZXRfdGFibGUiOiB0aHJvdyBuZXcgRXJyb3IoYFVuaW1wbGVtZW50ZWQ6ICIke2V4cGVjdC5uYW1l
fSIgb24gIiR7b3B9ImApOworICAgICAgICBkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoYEltcGxl
bWVudGF0aW9uIHByb2JsZW06IHVuaGFuZGxlZCBpbW1lZGlhdGUgIiR7ZXhwZWN0Lm5hbWV9IiBv
biAiJHtvcH0iYCk7CisgICAgICAgIH0KKyAgICB9Cit9OworCitjb25zdCBfY3JlYXRlRnVuY3Rp
b25CdWlsZGVyID0gKGZ1bmMsIGJ1aWxkZXIsIHByZXZpb3VzQnVpbGRlcikgPT4geworICAgIGxl
dCBmdW5jdGlvbkJ1aWxkZXIgPSB7fTsKKyAgICBmb3IgKGNvbnN0IG9wIGluIFdBU00uZGVzY3Jp
cHRpb24ub3Bjb2RlKSB7CisgICAgICAgIGNvbnN0IG5hbWUgPSBfdG9KYXZhU2NyaXB0TmFtZShv
cCk7CisgICAgICAgIGNvbnN0IHZhbHVlID0gV0FTTS5kZXNjcmlwdGlvbi5vcGNvZGVbb3BdLnZh
bHVlOworICAgICAgICBjb25zdCByZXQgPSBXQVNNLmRlc2NyaXB0aW9uLm9wY29kZVtvcF1bInJl
dHVybiJdOworICAgICAgICBjb25zdCBwYXJhbSA9IFdBU00uZGVzY3JpcHRpb24ub3Bjb2RlW29w
XS5wYXJhbWV0ZXI7CisgICAgICAgIGNvbnN0IGltbSA9IFdBU00uZGVzY3JpcHRpb24ub3Bjb2Rl
W29wXS5pbW1lZGlhdGU7CisKKyAgICAgICAgY29uc3QgY2hlY2tTdGFja1JldHVybiA9IGJ1aWxk
ZXIuX2NoZWNrZWQgPyBfY2hlY2tTdGFja1JldHVybiA6ICgpID0+IHt9OworICAgICAgICBjb25z
dCBjaGVja0ltbXMgPSBidWlsZGVyLl9jaGVja2VkID8gX2NoZWNrSW1tcyA6ICgpID0+IHt9Owor
CisgICAgICAgIGZ1bmN0aW9uQnVpbGRlcltuYW1lXSA9ICguLi5hcmdzKSA9PiB7CisgICAgICAg
ICAgICBsZXQgbmV4dEJ1aWxkZXI7CisgICAgICAgICAgICBzd2l0Y2ggKG5hbWUpIHsKKyAgICAg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgbmV4dEJ1aWxkZXIgPSBmdW5jdGlvbkJ1
aWxkZXI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAiRW5k
IjoKKyAgICAgICAgICAgICAgICBuZXh0QnVpbGRlciA9IHByZXZpb3VzQnVpbGRlcjsKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICJCbG9jayI6CisgICAgICAg
ICAgICAgICAgY2FzZSAiTG9vcCI6CisgICAgICAgICAgICBjYXNlICJJZiI6CisgICAgICAgICAg
ICAgICAgbmV4dEJ1aWxkZXIgPSBfY3JlYXRlRnVuY3Rpb25CdWlsZGVyKGZ1bmMsIGJ1aWxkZXIs
IGZ1bmN0aW9uQnVpbGRlcik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHByaW50KG5hbWUpOworICAgICAgICAgICAgcHJpbnQobmV4dEJ1aWxk
ZXIpCisgICAgICAgICAgICAvLyBQYXNzaW5nIGEgZnVuY3Rpb24gYXMgdGhlIGFyZ3VtZW50IGlz
IGEgd2F5IHRvIG5lc3QgYmxvY2tzIGxleGljYWxseS4KKyAgICAgICAgICAgIGNvbnN0IGNvbnRp
bnVhdGlvbiA9IGFyZ3NbYXJncy5sZW5ndGggLSAxXTsKKyAgICAgICAgICAgIGNvbnN0IGhhc0Nv
bnRpbnVhdGlvbiA9IHR5cGVvZihjb250aW51YXRpb24pID09PSAiZnVuY3Rpb24iOworICAgICAg
ICAgICAgY29uc3QgaW1tcyA9IGhhc0NvbnRpbnVhdGlvbiA/IGFyZ3Muc2xpY2UoMCwgLTEpIDog
YXJnczsgLy8gRklYTUU6IGFsbG93IHBhc3NpbmcgaW4gc3RhY2sgdmFsdWVzLCBhcy1pZiBjb2Rl
IHdlcmUgYSBzdGFjayBtYWNoaW5lLiBKdXN0IGNoZWNrIGZvciBhIGJ1aWxkZXIgdG8gdGhpcyBm
dW5jdGlvbiwgYW5kIGRyb3AuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjM0MjIKKyAgICAgICAgICAgIC8vIGNoZWNrSW1tcyhvcCwgaW1tcyk7CisgICAgICAgICAg
ICAvLyBjaGVja1N0YWNrQXJncyhvcCk7CisgICAgICAgICAgICAvLyBjaGVja1N0YWNrUmV0dXJu
KG9wKTsKKyAgICAgICAgICAgIGNvbnN0IHN0YWNrQXJncyA9IFtdOyAvLyBGSVhNRSBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyNzA2CisgICAgICAgICAgICBmdW5j
LmNvZGUucHVzaCh7IG5hbWU6IG9wLCB2YWx1ZTogdmFsdWUsIGFyZ3VtZW50czogc3RhY2tBcmdz
LCBpbW1lZGlhdGVzOiBpbW1zIH0pOworICAgICAgICAgICAgaWYgKGhhc0NvbnRpbnVhdGlvbikK
KyAgICAgICAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKG5leHRCdWlsZGVyKS5FbmQoKTsK
KyAgICAgICAgICAgIHJldHVybiBuZXh0QnVpbGRlcjsKKyAgICAgICAgfTsKKyAgICB9CisgICAg
cmV0dXJuIGZ1bmN0aW9uQnVpbGRlcjsKK30KKworY29uc3QgX2NyZWF0ZUZ1bmN0aW9uID0gKHNl
Y3Rpb24sIGJ1aWxkZXIsIHByZXZpb3VzQnVpbGRlcikgPT4geworICAgIHJldHVybiAoLi4uYXJn
cykgPT4geworICAgICAgICBjb25zdCBuYW1lT2Zmc2V0ID0gKHR5cGVvZihhcmdzWzBdKSA9PT0g
InN0cmluZyIpID4+PiAwOworICAgICAgICBjb25zdCBmdW5jdGlvbk5hbWUgPSBuYW1lT2Zmc2V0
ID8gYXJnc1swXSA6IHVuZGVmaW5lZDsKKyAgICAgICAgbGV0IHNpZ25hdHVyZSA9IGFyZ3NbMCAr
IG5hbWVPZmZzZXRdOworICAgICAgICBjb25zdCBsb2NhbHMgPSBhcmdzWzEgKyBuYW1lT2Zmc2V0
XSA9PT0gdW5kZWZpbmVkID8gW10gOiBhcmdzWzEgKyBuYW1lT2Zmc2V0XTsKKyAgICAgICAgZm9y
IChjb25zdCBsb2NhbCBvZiBsb2NhbHMpCisgICAgICAgICAgICBhc3NlcnQudHJ1dGh5KFdBU00u
aXNWYWxpZFZhbHVlVHlwZShsb2NhbCksIGBUeXBlIG9mIGxvY2FsOiAke2xvY2FsfSBuZWVkcyB0
byBiZSBhIHZhbGlkIHZhbHVlIHR5cGVgKTsKKworICAgICAgICBpZiAodHlwZW9mKHNpZ25hdHVy
ZSkgPT09ICJ1bmRlZmluZWQiKQorICAgICAgICAgICAgc2lnbmF0dXJlID0geyBwYXJhbXM6IFtd
IH07CisgICAgICAgIGFzc2VydC5oYXNPYmplY3RQcm9wZXJ0eShzaWduYXR1cmUsICJwYXJhbXMi
LCBgRXhwZWN0IGZ1bmN0aW9uIHNpZ25hdHVyZSB0byBiZSBhbiBvYmplY3Qgd2l0aCBhICJwYXJh
bXMiIGZpZWxkLCBnb3QgIiR7c2lnbmF0dXJlfSJgKTsKKyAgICAgICAgY29uc3QgW3BhcmFtcywg
cmV0XSA9IF9ub3JtYWxpemVGdW5jdGlvblNpZ25hdHVyZShzaWduYXR1cmUucGFyYW1zLCBzaWdu
YXR1cmUucmV0KTsKKyAgICAgICAgc2lnbmF0dXJlID0geyBwYXJhbXM6IHBhcmFtcywgcmV0OiBy
ZXQgfTsKKyAgICAgICAgY29uc3QgZnVuYyA9IHsKKyAgICAgICAgICAgIG5hbWU6IGZ1bmN0aW9u
TmFtZSwKKyAgICAgICAgICAgIHR5cGU6IF9tYXliZVJlZ2lzdGVyVHlwZShidWlsZGVyLCBzaWdu
YXR1cmUpLAorICAgICAgICAgICAgc2lnbmF0dXJlOiBzaWduYXR1cmUsCisgICAgICAgICAgICBs
b2NhbHM6IHBhcmFtcy5jb25jYXQobG9jYWxzKSwgLy8gUGFyYW1ldGVycyBhcmUgdGhlIGZpcnN0
IGxvY2Fscy4KKyAgICAgICAgICAgIHBhcmFtZXRlckNvdW50OiBwYXJhbXMubGVuZ3RoLAorICAg
ICAgICAgICAgY29kZTogW10KKyAgICAgICAgfTsKKworICAgICAgICBjb25zdCBmdW5jdGlvblNl
Y3Rpb24gPSBidWlsZGVyLl9nZXRTZWN0aW9uKCJGdW5jdGlvbiIpOworICAgICAgICBpZiAoZnVu
Y3Rpb25TZWN0aW9uKQorICAgICAgICAgICAgZnVuY3Rpb25TZWN0aW9uLmRhdGEucHVzaChmdW5j
LnR5cGUpOworCisgICAgICAgIHNlY3Rpb24uZGF0YS5wdXNoKGZ1bmMpOworICAgICAgICBidWls
ZGVyLl9yZWdpc3RlckZ1bmN0aW9uVG9JbmRleFNwYWNlKGZ1bmN0aW9uTmFtZSk7CisKKyAgICAg
ICAgcmV0dXJuIF9jcmVhdGVGdW5jdGlvbkJ1aWxkZXIoZnVuYywgYnVpbGRlciwgcHJldmlvdXNC
dWlsZGVyKTsKKyAgICB9Cit9OworCiBleHBvcnQgZGVmYXVsdCBjbGFzcyBCdWlsZGVyIHsKICAg
ICBjb25zdHJ1Y3RvcigpIHsKICAgICAgICAgdGhpcy5zZXRDaGVja2VkKHRydWUpOwpAQCAtMjE4
LDYgKzM0OCw3IEBAIGV4cG9ydCBkZWZhdWx0IGNsYXNzIEJ1aWxkZXIgewogICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gaW1wb3J0QnVpbGRlcjsKICAgICAgICAgICAgICAgICB9OwogICAgICAg
ICAgICAgICAgIGJyZWFrOworCiAgICAgICAgICAgICBjYXNlICJFeHBvcnQiOgogICAgICAgICAg
ICAgICAgIHRoaXNbc2VjdGlvbl0gPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgcyA9IHRoaXMuX2FkZFNlY3Rpb24oc2VjdGlvbik7CkBAIC0yMzEsNiArMzYyLDI5IEBA
IGV4cG9ydCBkZWZhdWx0IGNsYXNzIEJ1aWxkZXIgewogICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZXhwb3J0QnVpbGRlcjsKICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgIGJy
ZWFrOworCisgICAgICAgICAgICBjYXNlICJNZW1vcnkiOgorICAgICAgICAgICAgICAgIHRoaXNb
c2VjdGlvbl0gPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgcyA9IHRo
aXMuX2FkZFNlY3Rpb24oc2VjdGlvbik7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGV4cG9y
dEJ1aWxkZXIgPSB7CisgICAgICAgICAgICAgICAgICAgICAgICBFbmQ6ICgpID0+IHRoaXMsCisg
ICAgICAgICAgICAgICAgICAgICAgICBNZW1vcnk6IChpbml0aWFsLCBtYXgpID0+IHMuZGF0YS5w
dXNoKHsgaW5pdGlhbCwgbWF4IH0pCisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBleHBvcnRCdWlsZGVyOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSAiRnVuY3Rpb24iOgorICAgICAg
ICAgICAgICAgIHRoaXNbc2VjdGlvbl0gPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAg
ICAgY29uc3QgcyA9IHRoaXMuX2FkZFNlY3Rpb24oc2VjdGlvbik7CisgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGV4cG9ydEJ1aWxkZXIgPSB7CisgICAgICAgICAgICAgICAgICAgICAgICBFbmQ6
ICgpID0+IHRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBhZGQgYWJpbGl0
eSB0byBhZGQgdGhpcyB3aXRoIHdoYXRldmVyLgorICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBleHBvcnRCdWlsZGVyOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBicmVhazsKKwogICAgICAgICAgICAgY2FzZSAiQ29kZSI6CiAgICAg
ICAgICAgICAgICAgdGhpc1tzZWN0aW9uXSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAg
ICAgICBjb25zdCBzID0gdGhpcy5fYWRkU2VjdGlvbihzZWN0aW9uKTsKQEAgLTI1NCw3ICs0MDgs
NyBAQCBleHBvcnQgZGVmYXVsdCBjbGFzcyBCdWlsZGVyIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNhc2UgIm51bWJlciI6IHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBpbmRleCA9IGJ1aWxkZXIuX2dldEZ1bmN0aW9uRnJvbUlu
ZGV4U3BhY2UoZS5pbmRleCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKGJ1aWxkZXIuX2NoZWNrZWQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFzc2VydC5pc05vdFVuZGVmKGluZGV4LCBgRXhwb3J0ICIke2UuZmllbGR9
IiBkb2Vzbid0IGNvcnJlc3BvbmQgdG8gYSBkZWZpbmVkIHZhbHVlIGluIHRoZSBmdW5jdGlvbiBp
bmRleCBzcGFjZWApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhc3NlcnQuaXNOb3RVbmRlZihpbmRleCwgYEV4cG9ydCAiJHtlLmZpZWxkfSIgZG9lcyBub3Qg
Y29ycmVzcG9uZCB0byBhIGRlZmluZWQgdmFsdWUgaW4gdGhlIGZ1bmN0aW9uIGluZGV4IHNwYWNl
YCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGJyZWFrOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAidW5kZWZpbmVkIjoKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuaW1wbGVt
ZW50ZWQ6IEZ1bmN0aW9uKCkuRW5kKCkgd2l0aCB1bmRlZmluZWQgZXhwb3J0IGluZGV4YCk7IC8v
IEZJWE1FCkBAIC0yNjksMTE1ICs0MjMsMTMgQEAgZXhwb3J0IGRlZmF1bHQgY2xhc3MgQnVpbGRl
ciB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBidWlsZGVyOwogICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIEZ1bmN0aW9uOiAoYTAsIGExKSA9PiB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbGV0IHNpZ25hdHVyZSA9IHR5cGVvZihhMCkgPT09ICJzdHJpbmciID8g
YTEgOiBhMDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmdW5jdGlvbk5hbWUg
PSB0eXBlb2YoYTApID09PSAic3RyaW5nIiA/IGEwIDogdW5kZWZpbmVkOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICh0eXBlb2Yoc2lnbmF0dXJlKSA9PT0gInVuZGVmaW5lZCIpCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25hdHVyZSA9IHsgcGFyYW1zOiBbXSB9
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydC5oYXNPYmplY3RQcm9wZXJ0eShz
aWduYXR1cmUsICJwYXJhbXMiLCBgRXhwZWN0IGZ1bmN0aW9uIHNpZ25hdHVyZSB0byBiZSBhbiBv
YmplY3Qgd2l0aCBhICJwYXJhbXMiIGZpZWxkLCBnb3QgIiR7c2lnbmF0dXJlfSJgKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBbcGFyYW1zLCByZXRdID0gX25vcm1hbGl6ZUZ1
bmN0aW9uU2lnbmF0dXJlKHNpZ25hdHVyZS5wYXJhbXMsIHNpZ25hdHVyZS5yZXQpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpZ25hdHVyZSA9IHsgcGFyYW1zOiBwYXJhbXMsIHJldDog
cmV0IH07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZnVuYyA9IHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogZnVuY3Rpb25OYW1lLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBfbWF5YmVSZWdpc3RlclR5cGUoYnVpbGRlciwg
c2lnbmF0dXJlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmF0dXJlOiBz
aWduYXR1cmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsczogcGFyYW1z
LCAvLyBQYXJhbWV0ZXJzIGFyZSB0aGUgZmlyc3QgbG9jYWxzLgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwYXJhbWV0ZXJDb3VudDogcGFyYW1zLmxlbmd0aCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29kZTogW10KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuZGF0YS5wdXNoKGZ1bmMpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIuX3JlZ2lzdGVyRnVuY3Rpb25Ub0luZGV4
U3BhY2UoZnVuY3Rpb25OYW1lKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZnVu
Y3Rpb25CdWlsZGVyID0ge307Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25z
dCBvcCBpbiBXQVNNLmRlc2NyaXB0aW9uLm9wY29kZSkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBuYW1lID0gX3RvSmF2YVNjcmlwdE5hbWUob3ApOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IFdBU00uZGVzY3JpcHRpb24ub3Bj
b2RlW29wXS52YWx1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmV0
ID0gV0FTTS5kZXNjcmlwdGlvbi5vcGNvZGVbb3BdWyJyZXR1cm4iXTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgcGFyYW0gPSBXQVNNLmRlc2NyaXB0aW9uLm9wY29kZVtv
cF0ucGFyYW1ldGVyOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbW0g
PSBXQVNNLmRlc2NyaXB0aW9uLm9wY29kZVtvcF0uaW1tZWRpYXRlOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBjaGVja1N0YWNrQXJncyA9IGJ1aWxkZXIuX2NoZWNrZWQg
PyBvcCA9PiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBl
eHBlY3Qgb2YgcGFyYW0pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoV0FTTS5pc1ZhbGlkVmFsdWVUeXBlKGV4cGVjdCkpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRklYTUUgaW1wbGVtZW50IHN0YWNrIGNoZWNr
cyBmb3IgYXJndW1lbnRzLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTYzNDIxCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSGFuZGxlIG91
ciBvd24gbWV0YS10eXBlcy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3dpdGNoIChleHBlY3QpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY2FzZSAiYWRkciI6IGJyZWFrOyAvLyBGSVhNRSBpbXBsZW1lbnQgYWRkci4g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzQyMQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJhbnkiOiBicmVhazsgLy8g
RklYTUUgaW1wbGVtZW50IGFueS4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2MzQyMQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
YXNlICJib29sIjogYnJlYWs7IC8vIEZJWE1FIGltcGxlbWVudCBib29sLiBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDIxCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImNhbGwiOiBicmVhazsgLy8gRklYTUUgaW1wbGVt
ZW50IGNhbGwgc3RhY2sgYXJndW1lbnQgY2hlY2tzIGJhc2VkIG9uIGZ1bmN0aW9uIHNpZ25hdHVy
ZS4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzQyMQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJnbG9iYWwiOiBicmVh
azsgLy8gRklYTUUgaW1wbGVtZW50IGdsb2JhbC4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2MzQyMQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjYXNlICJsb2NhbCI6IGJyZWFrOyAvLyBGSVhNRSBpbXBsZW1lbnQgbG9jYWwuIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM0MjEKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAicHJldiI6IGJyZWFrOyAvLyBG
SVhNRSBpbXBsZW1lbnQgcHJldiwgY2hlY2tpbmcgZm9yIHdoZXRldmVyIHRoZSBwcmV2aW91cyB2
YWx1ZSB3YXMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM0MjEK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAic2l6ZSI6
IGJyZWFrOyAvLyBGSVhNRSBpbXBsZW1lbnQgc2l6ZS4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2MzQyMQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoYEltcGxlbWVudGF0aW9uIHByb2Js
ZW06IHVuaGFuZGxlZCBtZXRhLXR5cGUgIiR7ZXhwZWN0fSIgb24gIiR7b3B9ImApOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IDogKCkgPT4ge307Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoZWNrU3RhY2tSZXR1cm4gPSBi
dWlsZGVyLl9jaGVja2VkID8gb3AgPT4gewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZm9yIChsZXQgZXhwZWN0IG9mIHJldCkgewotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChXQVNNLmlzVmFsaWRWYWx1ZVR5cGUoZXhwZWN0KSkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRSBpbXBsZW1l
bnQgc3RhY2sgY2hlY2tzIGZvciByZXR1cm4uIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjM0MjEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBIYW5kbGUgb3VyIG93biBtZXRhLXR5cGVzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzd2l0Y2ggKGV4cGVjdCkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJib29sIjogYnJlYWs7IC8vIEZJWE1FIGltcGxl
bWVudCBib29sLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDIx
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImNhbGwi
OiBicmVhazsgLy8gRklYTUUgaW1wbGVtZW50IGNhbGwgc3RhY2sgcmV0dXJuIGNoZWNrIGJhc2Vk
IG9uIGZ1bmN0aW9uIHNpZ25hdHVyZS4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2MzQyMQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjYXNlICJjb250cm9sIjogYnJlYWs7IC8vIEZJWE1FIGltcGxlbWVudCBjb250cm9sLiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDIxCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImdsb2JhbCI6IGJyZWFrOyAvLyBG
SVhNRSBpbXBsZW1lbnQgZ2xvYmFsLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTYzNDIxCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNhc2UgImxvY2FsIjogYnJlYWs7IC8vIEZJWE1FIGltcGxlbWVudCBsb2NhbC4gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzQyMQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJwcmV2IjogYnJlYWs7IC8vIEZJWE1FIGlt
cGxlbWVudCBwcmV2LCBjaGVja2luZyBmb3Igd2hldGV2ZXIgdGhlIHBhcmFtZXRlciB0eXBlIHdh
cy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzQyMQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJzaXplIjogYnJlYWs7
IC8vIEZJWE1FIGltcGxlbWVudCBzaXplLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTYzNDIxCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcihgSW1wbGVtZW50YXRpb24gcHJvYmxlbTogdW5o
YW5kbGVkIG1ldGEtdHlwZSAiJHtleHBlY3R9IiBvbiAiJHtvcH0iYCk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gOiAoKSA9PiB7fTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hlY2tJbW1zID0gYnVpbGRlci5fY2hlY2tl
ZCA/IChvcCwgaW1tcykgPT4gewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YXNzZXJ0LmVxKGltbXMubGVuZ3RoLCBpbW0ubGVuZ3RoLCBgIiR7b3B9IiBleHBlY3RzICR7aW1t
Lmxlbmd0aH0gaW1tZWRpYXRlcywgZ290ICR7aW1tcy5sZW5ndGh9YCk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpZHggPSAwOyBpZHggIT09IGltbS5sZW5n
dGg7ICsraWR4KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZ290ID0gaW1tc1tpZHhdOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGV4cGVjdCA9IGltbVtpZHhdOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN3aXRjaCAoZXhwZWN0Lm5hbWUpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjYXNlICJmdW5jdGlvbl9pbmRleCI6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydC50cnV0aHkoX2lzVmFsaWRWYWx1
ZShnb3QsICJpMzIiKSwgYEludmFsaWQgdmFsdWUgb24gJHtvcH06IGdvdCAiJHtnb3R9IiwgZXhw
ZWN0ZWQgaTMyYCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIEZJWE1FIGNoZWNrIGZ1bmN0aW9uIGluZGljZXMuIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjM0MjEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2FzZSAibG9jYWxfaW5kZXgiOiB0aHJvdyBuZXcgRXJyb3IoYFVuaW1wbGVtZW50ZWQ6ICIk
e2V4cGVjdC5uYW1lfSIgb24gIiR7b3B9ImApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNhc2UgImdsb2JhbF9pbmRleCI6IHRocm93IG5ldyBFcnJvcihgVW5pbXBs
ZW1lbnRlZDogIiR7ZXhwZWN0Lm5hbWV9IiBvbiAiJHtvcH0iYCk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAidHlwZV9pbmRleCI6IHRocm93IG5ldyBFcnJv
cihgVW5pbXBsZW1lbnRlZDogIiR7ZXhwZWN0Lm5hbWV9IiBvbiAiJHtvcH0iYCk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAidmFsdWUiOgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQudHJ1dGh5KF9pc1ZhbGlk
VmFsdWUoZ290LCByZXRbMF0pLCBgSW52YWxpZCB2YWx1ZSBvbiAke29wfTogZ290ICIke2dvdH0i
LCBleHBlY3RlZCAke3JldFswXX1gKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2FzZSAiZmxhZ3MiOiB0aHJvdyBuZXcgRXJyb3IoYFVuaW1wbGVtZW50ZWQ6ICIke2V4cGVj
dC5uYW1lfSIgb24gIiR7b3B9ImApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNhc2UgIm9mZnNldCI6IHRocm93IG5ldyBFcnJvcihgVW5pbXBsZW1lbnRlZDogIiR7
ZXhwZWN0Lm5hbWV9IiBvbiAiJHtvcH0iYCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gQ29udHJvbDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjYXNlICJkZWZhdWx0X3RhcmdldCI6IHRocm93IG5ldyBFcnJvcihgVW5pbXBsZW1l
bnRlZDogIiR7ZXhwZWN0Lm5hbWV9IiBvbiAiJHtvcH0iYCk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2FzZSAicmVsYXRpdmVfZGVwdGgiOiB0aHJvdyBuZXcgRXJy
b3IoYFVuaW1wbGVtZW50ZWQ6ICIke2V4cGVjdC5uYW1lfSIgb24gIiR7b3B9ImApOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInNpZyI6IHRocm93IG5ldyBF
cnJvcihgVW5pbXBsZW1lbnRlZDogIiR7ZXhwZWN0Lm5hbWV9IiBvbiAiJHtvcH0iYCk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAidGFyZ2V0X2NvdW50Ijog
dGhyb3cgbmV3IEVycm9yKGBVbmltcGxlbWVudGVkOiAiJHtleHBlY3QubmFtZX0iIG9uICIke29w
fSJgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJ0YXJn
ZXRfdGFibGUiOiB0aHJvdyBuZXcgRXJyb3IoYFVuaW1wbGVtZW50ZWQ6ICIke2V4cGVjdC5uYW1l
fSIgb24gIiR7b3B9ImApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcihgSW1wbGVtZW50YXRpb24gcHJvYmxlbTogdW5oYW5k
bGVkIGltbWVkaWF0ZSAiJHtleHBlY3QubmFtZX0iIG9uICIke29wfSJgKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gOiAoKSA9PiB7
fTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV4dEJ1aWxkZXIgPSBu
YW1lID09PSAiRW5kIiA/IGNvZGVCdWlsZGVyIDogZnVuY3Rpb25CdWlsZGVyOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbkJ1aWxkZXJbbmFtZV0gPSAoLi4uYXJncykg
PT4gewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW1tcyA9IGFy
Z3M7IC8vIEZJWE1FOiBhbGxvdyBwYXNzaW5nIGluIHN0YWNrIHZhbHVlcywgYXMtaWYgY29kZSB3
ZXJlIGEgc3RhY2sgbWFjaGluZS4gSnVzdCBjaGVjayBmb3IgYSBidWlsZGVyIHRvIHRoaXMgZnVu
Y3Rpb24sIGFuZCBkcm9wLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTYzNDIyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja0ltbXMob3As
IGltbXMpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tTdGFja0Fy
Z3Mob3ApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tTdGFja1Jl
dHVybihvcCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGFj
a0FyZ3MgPSBbXTsgLy8gRklYTUUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2MjcwNgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuYy5jb2Rl
LnB1c2goeyBuYW1lOiBvcCwgdmFsdWU6IHZhbHVlLCBhcmd1bWVudHM6IHN0YWNrQXJncywgaW1t
ZWRpYXRlczogaW1tcyB9KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBuZXh0QnVpbGRlcjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZ1bmN0aW9uQnVpbGRlcjsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KKwogICAg
ICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICBjb2RlQnVpbGRlci5GdW5j
dGlvbiA9IF9jcmVhdGVGdW5jdGlvbihzLCBidWlsZGVyLCBjb2RlQnVpbGRlcik7CiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBjb2RlQnVpbGRlcjsKICAgICAgICAgICAgICAgICB9OwogICAg
ICAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAg
ICAgIHRoaXNbc2VjdGlvbl0gPSAoKSA9PiB7IHRocm93IG5ldyBFcnJvcihgVW5pbXBsZW1lbnRl
ZDogc2VjdGlvbiB0eXBlICIke3NlY3Rpb259ImApOyB9OwogICAgICAgICAgICAgICAgIGJyZWFr
OwpAQCAtNDIwLDcgKzQ3Miw3IEBAIGV4cG9ydCBkZWZhdWx0IGNsYXNzIEJ1aWxkZXIgewogICAg
IH0KICAgICBfZ2V0U2VjdGlvbihuYW1lT3JOdW1iZXIpIHsKICAgICAgICAgc3dpdGNoICh0eXBl
b2YobmFtZU9yTnVtYmVyKSkgewotICAgICAgICBkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoYElt
cGxlbWVudGF0aW9uIHByb2JsZW06IGNhbid0IGdldCBzZWN0aW9uICIke25hbWVPck51bWJlcn0i
YCk7CisgICAgICAgIGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcihgSW1wbGVtZW50YXRpb24gcHJv
YmxlbTogY2FuIG5vdCBnZXQgc2VjdGlvbiAiJHtuYW1lT3JOdW1iZXJ9ImApOwogICAgICAgICBj
YXNlICJzdHJpbmciOgogICAgICAgICAgICAgZm9yIChjb25zdCBzIG9mIHRoaXMuX3NlY3Rpb25z
KQogICAgICAgICAgICAgICAgIGlmIChzLm5hbWUgPT09IG5hbWVPck51bWJlcikKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvd2FzbS9CdWlsZGVyX1dlYkFzc2VtYmx5QmluYXJ5LmpzIGIvSlNUZXN0cy93
YXNtL0J1aWxkZXJfV2ViQXNzZW1ibHlCaW5hcnkuanMKaW5kZXggZjJiMGE1MjE4NzM5MTYwMzBj
NzM4NjM2YWNkYWNhM2U2NzJlYzIxZC4uMDBjMGVhMDJmMGI4NmIyNzg2MzMwZjFjMGEwNzQ1YTE4
MmVhZjYzOCAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNtL0J1aWxkZXJfV2ViQXNzZW1ibHlCaW5h
cnkuanMKKysrIGIvSlNUZXN0cy93YXNtL0J1aWxkZXJfV2ViQXNzZW1ibHlCaW5hcnkuanMKQEAg
LTIzLDYgKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAoraW1wb3J0ICogYXMgYXNzZXJ0
IGZyb20gJ2Fzc2VydC5qcyc7CiBpbXBvcnQgTG93TGV2ZWxCaW5hcnkgZnJvbSAnTG93TGV2ZWxC
aW5hcnkuanMnOwogaW1wb3J0ICogYXMgV0FTTSBmcm9tICdXQVNNLmpzJzsKIApAQCAtMzAsMTEg
KzMxLDExIEBAIGNvbnN0IHB1dCA9IChiaW4sIHR5cGUsIHZhbHVlKSA9PiBiaW5bdHlwZV0odmFs
dWUpOwogCiBjb25zdCBlbWl0dGVycyA9IHsKICAgICBUeXBlOiAoc2VjdGlvbiwgYmluKSA9PiB7
Ci0gICAgICAgIHB1dChiaW4sICJ2YXJ1aW50Iiwgc2VjdGlvbi5kYXRhLmxlbmd0aCk7CisgICAg
ICAgIHB1dChiaW4sICJ2YXJ1aW50MzIiLCBzZWN0aW9uLmRhdGEubGVuZ3RoKTsKICAgICAgICAg
Zm9yIChjb25zdCBlbnRyeSBvZiBzZWN0aW9uLmRhdGEpIHsKICAgICAgICAgICAgIGNvbnN0IGZ1
bmNUeXBlQ29uc3RydWN0b3IgPSAtMHgyMDsgLy8gRklYTUUgTW92ZSB0aGlzIHRvIHdhc20uanNv
bi4KICAgICAgICAgICAgIHB1dChiaW4sICJ2YXJpbnQ3IiwgZnVuY1R5cGVDb25zdHJ1Y3Rvcik7
Ci0gICAgICAgICAgICBwdXQoYmluLCAidmFydWludCIsIGVudHJ5LnBhcmFtcy5sZW5ndGgpOwor
ICAgICAgICAgICAgcHV0KGJpbiwgInZhcnVpbnQzMiIsIGVudHJ5LnBhcmFtcy5sZW5ndGgpOwog
ICAgICAgICAgICAgZm9yIChjb25zdCBwYXJhbSBvZiBlbnRyeS5wYXJhbXMpCiAgICAgICAgICAg
ICAgICAgcHV0KGJpbiwgInVpbnQ4IiwgV0FTTS52YWx1ZVR5cGVWYWx1ZVtwYXJhbV0pOwogICAg
ICAgICAgICAgaWYgKGVudHJ5LnJldCA9PT0gInZvaWQiKQpAQCAtNDYsNDIgKzQ3LDgwIEBAIGNv
bnN0IGVtaXR0ZXJzID0gewogICAgICAgICB9CiAgICAgfSwKICAgICBJbXBvcnQ6IChzZWN0aW9u
LCBiaW4pID0+IHsKLSAgICAgICAgcHV0KGJpbiwgInZhcnVpbnQiLCBzZWN0aW9uLmRhdGEubGVu
Z3RoKTsKKyAgICAgICAgcHV0KGJpbiwgInZhcnVpbnQzMiIsIHNlY3Rpb24uZGF0YS5sZW5ndGgp
OwogICAgICAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIHNlY3Rpb24uZGF0YSkgewogICAgICAgICAg
ICAgcHV0KGJpbiwgInN0cmluZyIsIGVudHJ5Lm1vZHVsZSk7CiAgICAgICAgICAgICBwdXQoYmlu
LCAic3RyaW5nIiwgZW50cnkuZmllbGQpOwogICAgICAgICAgICAgcHV0KGJpbiwgInVpbnQ4Iiwg
V0FTTS5leHRlcm5hbEtpbmRWYWx1ZVtlbnRyeS5raW5kXSk7CiAgICAgICAgICAgICBzd2l0Y2gg
KGVudHJ5LmtpbmQpIHsKICAgICAgICAgICAgIGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcihgSW1w
bGVtZW50YXRpb24gcHJvYmxlbTogdW5leHBlY3RlZCBraW5kICR7ZW50cnkua2luZH1gKTsKLSAg
ICAgICAgICAgIGNhc2UgIkZ1bmN0aW9uIjogcHV0KGJpbiwgInZhcnVpbnQiLCBlbnRyeS50eXBl
KTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlICJGdW5jdGlvbiI6IHB1dChiaW4sICJ2YXJ1aW50
MzIiLCBlbnRyeS50eXBlKTsgYnJlYWs7CiAgICAgICAgICAgICBjYXNlICJUYWJsZSI6IHRocm93
IG5ldyBFcnJvcihgTm90IHlldCBpbXBsZW1lbnRlZGApOwogICAgICAgICAgICAgY2FzZSAiTWVt
b3J5IjogdGhyb3cgbmV3IEVycm9yKGBOb3QgeWV0IGltcGxlbWVudGVkYCk7CiAgICAgICAgICAg
ICBjYXNlICJHbG9iYWwiOiB0aHJvdyBuZXcgRXJyb3IoYE5vdCB5ZXQgaW1wbGVtZW50ZWRgKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0sCi0gICAgRnVuY3Rpb246IChzZWN0aW9u
LCBiaW4pID0+IHsgdGhyb3cgbmV3IEVycm9yKGBOb3QgeWV0IGltcGxlbWVudGVkYCk7IH0sCisK
KyAgICBGdW5jdGlvbjogKHNlY3Rpb24sIGJpbikgPT4geworICAgICAgICBwdXQoYmluLCAidmFy
dWludDMyIiwgc2VjdGlvbi5kYXRhLmxlbmd0aCk7CisgICAgICAgIGZvciAoY29uc3Qgc2lnbmF0
dXJlIG9mIHNlY3Rpb24uZGF0YSkKKyAgICAgICAgICAgIHB1dChiaW4sICJ2YXJ1aW50MzIiLCBz
aWduYXR1cmUpOworICAgIH0sCisKICAgICBUYWJsZTogKHNlY3Rpb24sIGJpbikgPT4geyB0aHJv
dyBuZXcgRXJyb3IoYE5vdCB5ZXQgaW1wbGVtZW50ZWRgKTsgfSwKLSAgICBNZW1vcnk6IChzZWN0
aW9uLCBiaW4pID0+IHsgdGhyb3cgbmV3IEVycm9yKGBOb3QgeWV0IGltcGxlbWVudGVkYCk7IH0s
CisKKyAgICBNZW1vcnk6IChzZWN0aW9uLCBiaW4pID0+IHsKKyAgICAgICAgcHV0KGJpbiwgInZh
cnVpbnQzMiIsIHNlY3Rpb24uZGF0YS5sZW5ndGgpOworICAgICAgICBmb3IgKGNvbnN0IG1lbW9y
eSBvZiBzZWN0aW9uLmRhdGEpIHsKKyAgICAgICAgICAgIHB1dChiaW4sICJ2YXJ1aW50MzIiLCBt
ZW1vcnkubWF4ID8gMSA6IDApOworICAgICAgICAgICAgcHV0KGJpbiwgInZhcnVpbnQzMiIsIG1l
bW9yeS5pbml0aWFsKTsKKyAgICAgICAgICAgIGlmIChtZW1vcnkubWF4KQorICAgICAgICAgICAg
ICAgIHB1dChiaW4sICJ2YXJ1aW50MzIiLCBtZW1vcnkubWF4KTsKKyAgICAgICAgfQorICAgIH0s
CisKICAgICBHbG9iYWw6IChzZWN0aW9uLCBiaW4pID0+IHsgdGhyb3cgbmV3IEVycm9yKGBOb3Qg
eWV0IGltcGxlbWVudGVkYCk7IH0sCiAgICAgRXhwb3J0OiAoc2VjdGlvbiwgYmluKSA9PiB7IHRo
cm93IG5ldyBFcnJvcihgTm90IHlldCBpbXBsZW1lbnRlZGApOyB9LAogICAgIFN0YXJ0OiAoc2Vj
dGlvbiwgYmluKSA9PiB7IHRocm93IG5ldyBFcnJvcihgTm90IHlldCBpbXBsZW1lbnRlZGApOyB9
LAogICAgIEVsZW1lbnQ6IChzZWN0aW9uLCBiaW4pID0+IHsgdGhyb3cgbmV3IEVycm9yKGBOb3Qg
eWV0IGltcGxlbWVudGVkYCk7IH0sCisKICAgICBDb2RlOiAoc2VjdGlvbiwgYmluKSA9PiB7Ci0g
ICAgICAgIHB1dChiaW4sICJ2YXJ1aW50Iiwgc2VjdGlvbi5kYXRhLmxlbmd0aCk7CisgICAgICAg
IHB1dChiaW4sICJ2YXJ1aW50MzIiLCBzZWN0aW9uLmRhdGEubGVuZ3RoKTsKICAgICAgICAgZm9y
IChjb25zdCBmdW5jIG9mIHNlY3Rpb24uZGF0YSkgewotICAgICAgICAgICAgbGV0IGZ1bmNCaW4g
PSBiaW4ubmV3UGF0Y2hhYmxlKCJ2YXJ1aW50Iik7Ci0gICAgICAgICAgICBjb25zdCBsb2NhbENv
dW50ID0gZnVuYy5sb2NhbHMubGVuZ3RoOwotICAgICAgICAgICAgcHV0KGZ1bmNCaW4sICJ2YXJ1
aW50IiwgbG9jYWxDb3VudCk7Ci0gICAgICAgICAgICBpZiAobG9jYWxDb3VudCAhPT0gMCkgdGhy
b3cgbmV3IEVycm9yKGBVbmltcGxlbWVudGVkOiBsb2NhbHNgKTsgLy8gRklYTUUgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjcwNgorICAgICAgICAgICAgbGV0IGZ1
bmNCaW4gPSBiaW4ubmV3UGF0Y2hhYmxlKCJ2YXJ1aW50MzIiKTsKKyAgICAgICAgICAgIGNvbnN0
IGxvY2FsQ291bnQgPSBmdW5jLmxvY2Fscy5sZW5ndGggLSBmdW5jLnBhcmFtZXRlckNvdW50Owor
ICAgICAgICAgICAgcHV0KGZ1bmNCaW4sICJ2YXJ1aW50MzIiLCBsb2NhbENvdW50KTsKKyAgICAg
ICAgICAgIGZvciAobGV0IGkgPSBmdW5jLnBhcmFtZXRlckNvdW50OyBpIDwgZnVuYy5sb2NhbHMu
bGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICBwdXQoZnVuY0JpbiwgInZhcnVpbnQzMiIs
IDEpOworICAgICAgICAgICAgICAgIHB1dChmdW5jQmluLCAidWludDgiLCBXQVNNLnZhbHVlVHlw
ZVZhbHVlW2Z1bmMubG9jYWxzW2ldXSk7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIGZv
ciAoY29uc3Qgb3Agb2YgZnVuYy5jb2RlKSB7CiAgICAgICAgICAgICAgICAgcHV0KGZ1bmNCaW4s
ICJ1aW50OCIsIG9wLnZhbHVlKTsKLSAgICAgICAgICAgICAgICBpZiAob3AuYXJndW1lbnRzLmxl
bmd0aCAhPT0gMCkgdGhyb3cgbmV3IEVycm9yKGBVbmltcGxlbWVudGVkOiBhcmd1bWVudHNgKTsg
Ly8gRklYTUUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjcwNgot
ICAgICAgICAgICAgICAgIGlmIChvcC5pbW1lZGlhdGVzLmxlbmd0aCAhPT0gMCkgdGhyb3cgbmV3
IEVycm9yKGBVbmltcGxlbWVudGVkOiBpbW1lZGlhdGVzYCk7IC8vIEZJWE1FIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI3MDYKKyAgICAgICAgICAgICAgICBpZiAo
b3AuYXJndW1lbnRzLmxlbmd0aCAhPT0gMCkKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3
IEVycm9yKGBVbmltcGxlbWVudGVkOiBhcmd1bWVudHNgKTsgLy8gRklYTUUgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjcwNgorCisgICAgICAgICAgICAgICAgc3dp
dGNoIChvcC5uYW1lKSB7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAg
ICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvcC5pbW1lZGlhdGVzLmxlbmd0aDsgKytpKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0eXBlID0gV0FTTS5kZXNjcmlwdGlvbi5vcGNv
ZGVbb3AubmFtZV0uaW1tZWRpYXRlW2ldLnR5cGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICghZnVuY0Jpblt0eXBlXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcg
VHlwZUVycm9yKGBVbmtub3duIHR5cGU6ICR7dHlwZX0gaW4gb3A6ICR7b3AubmFtZX1gKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHB1dChmdW5jQmluLCB0eXBlLCBvcC5pbW1lZGlhdGVzW2ld
KTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICBjYXNlICJicl90YWJsZSI6CisgICAgICAgICAgICAgICAgICAgIHB1dChm
dW5jQmluLCAidmFydWludDMyIiwgb3AuaW1tZWRpYXRlcy5sZW5ndGggLSAxKTsKKyAgICAgICAg
ICAgICAgICAgICAgZm9yIChsZXQgaW1tIG9mIG9wLmltbWVkaWF0ZXMpCisgICAgICAgICAgICAg
ICAgICAgICAgICBwdXQoZnVuY0JpbiwgInZhcnVpbnQzMiIsIGltbSk7CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIGZ1bmNCaW4uYXBwbHkoKTsKICAgICAgICAgfQogICAgIH0sCisKICAgICBEYXRhOiAoc2Vj
dGlvbiwgYmluKSA9PiB7IHRocm93IG5ldyBFcnJvcihgTm90IHlldCBpbXBsZW1lbnRlZGApOyB9
LAogfTsKIApAQCAtOTEsNyArMTMwLDcgQEAgZXhwb3J0IGNvbnN0IEJpbmFyeSA9IChwcmVhbWJs
ZSwgc2VjdGlvbnMpID0+IHsKICAgICAgICAgcHV0KHdhc21CaW4sIHAudHlwZSwgcHJlYW1ibGVb
cC5uYW1lXSk7CiAgICAgZm9yIChjb25zdCBzZWN0aW9uIG9mIHNlY3Rpb25zKSB7CiAgICAgICAg
IHB1dCh3YXNtQmluLCBXQVNNLnNlY3Rpb25FbmNvZGluZ1R5cGUsIHNlY3Rpb24uaWQpOwotICAg
ICAgICBsZXQgc2VjdGlvbkJpbiA9IHdhc21CaW4ubmV3UGF0Y2hhYmxlKCJ2YXJ1aW50Iik7Cisg
ICAgICAgIGxldCBzZWN0aW9uQmluID0gd2FzbUJpbi5uZXdQYXRjaGFibGUoInZhcnVpbnQzMiIp
OwogICAgICAgICBjb25zdCBlbWl0dGVyID0gZW1pdHRlcnNbc2VjdGlvbi5uYW1lXTsKICAgICAg
ICAgaWYgKGVtaXR0ZXIpCiAgICAgICAgICAgICBlbWl0dGVyKHNlY3Rpb24sIHNlY3Rpb25CaW4p
OwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL0xvd0xldmVsQmluYXJ5LmpzIGIvSlNUZXN0cy93
YXNtL0xvd0xldmVsQmluYXJ5LmpzCmluZGV4IDcyMDA5NzYwOGM4NjY3NTFhNDU4NGZkM2E1MzRl
ZmM1MmNjYjdmYTQuLjdkZjM4YTM0MDYxMDQ1MDY5ODlhNmY1ZGM3OTY2ZTJhNTQyZmIyYTggMTAw
NjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9Mb3dMZXZlbEJpbmFyeS5qcworKysgYi9KU1Rlc3RzL3dh
c20vTG93TGV2ZWxCaW5hcnkuanMKQEAgLTIzLDE2ICsyMywxOCBAQAogICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICAqLwogCitpbXBvcnQgKiBhcyBXQVNNIGZyb20gJ1dBU00uanMnOworCiBjb25zdCBfaW5pdGlh
bEFsbG9jYXRpb25TaXplID0gMTAyNDsKIGNvbnN0IF9ncm93QWxsb2NhdGlvblNpemUgPSBhbGxv
Y2F0ZWQgPT4gYWxsb2NhdGVkICogMjsKIAotZXhwb3J0IGNvbnN0IHZhcnVpbnRNaW4gPSAwOwor
ZXhwb3J0IGNvbnN0IHZhcnVpbnQzMk1pbiA9IDA7CiBleHBvcnQgY29uc3QgdmFyaW50N01pbiA9
IC0wYjEwMDAwMDA7CiBleHBvcnQgY29uc3QgdmFyaW50N01heCA9IDBiMTExMTExOwogZXhwb3J0
IGNvbnN0IHZhcnVpbnQ3TWF4ID0gMGIxMTExMTExOwotZXhwb3J0IGNvbnN0IHZhcnVpbnRNYXgg
PSAoKCgoMSA8PCAzMSkgPj4+IDApIC0gMSkgKiAyKSArIDE7Ci1leHBvcnQgY29uc3QgdmFyaW50
TWluID0gLSgoMSA8PCAzMSkgPj4+IDApOwotZXhwb3J0IGNvbnN0IHZhcmludE1heCA9ICgoMSA8
PCAzMSkgLSAxKSA+Pj4gMDsKK2V4cG9ydCBjb25zdCB2YXJ1aW50MzJNYXggPSAoKCgoMSA8PCAz
MSkgPj4+IDApIC0gMSkgKiAyKSArIDE7CitleHBvcnQgY29uc3QgdmFyaW50MzJNaW4gPSAtKCgx
IDw8IDMxKSA+Pj4gMCk7CitleHBvcnQgY29uc3QgdmFyaW50MzJNYXggPSAoKDEgPDwgMzEpIC0g
MSkgPj4+IDA7CiBleHBvcnQgY29uc3QgdmFyQml0c01heCA9IDU7CiAKIGNvbnN0IF9nZXR0ZXJS
YW5nZUNoZWNrID0gKGxsYiwgYXQsIHNpemUpID0+IHsKQEAgLTc1LDYgKzc3LDggQEAgZXhwb3J0
IGRlZmF1bHQgY2xhc3MgTG93TGV2ZWxCaW5hcnkgewogCiAgICAgLy8gVXRpbGl0aWVzLgogICAg
IGdldCgpIHsgcmV0dXJuIHRoaXMuX2J1ZjsgfQorICAgIHRyaW0oKSB7IHRoaXMuX2J1ZiA9IHRo
aXMuX2J1Zi5zbGljZSgwLCB0aGlzLl91c2VkKTsgfQorCiAgICAgaGV4ZHVtcCgpIHsgcmV0dXJu
IF9oZXhkdW1wKHRoaXMuX2J1ZiwgdGhpcy5fdXNlZCk7IH0KICAgICBfbWF5YmVHcm93KGJ5dGVz
KSB7CiAgICAgICAgIGNvbnN0IGFsbG9jYXRlZCA9IHRoaXMuX2J1Zi5sZW5ndGg7CkBAIC0xMDks
MTggKzExMywxOCBAQCBleHBvcnQgZGVmYXVsdCBjbGFzcyBMb3dMZXZlbEJpbmFyeSB7CiAgICAg
ICAgIHRoaXMuX3B1c2g4KHYgPj4+IDE2KTsKICAgICAgICAgdGhpcy5fcHVzaDgodiA+Pj4gMjQp
OwogICAgIH0KLSAgICB2YXJ1aW50KHYpIHsKLSAgICAgICAgaWYgKHYgPCB2YXJ1aW50TWluIHx8
IHZhcnVpbnRNYXggPCB2KQotICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoYEludmFs
aWQgdmFydWludCAke3Z9IHJhbmdlIGlzIFske3ZhcnVpbnRNaW59LCAke3ZhcnVpbnRNYXh9XWAp
OworICAgIHZhcnVpbnQzMih2KSB7CisgICAgICAgIGlmICh2IDwgdmFydWludDMyTWluIHx8IHZh
cnVpbnQzMk1heCA8IHYpCisgICAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihgSW52YWxp
ZCB2YXJ1aW50MzIgJHt2fSByYW5nZSBpcyBbJHt2YXJ1aW50MzJNaW59LCAke3ZhcnVpbnQzMk1h
eH1dYCk7CiAgICAgICAgIHdoaWxlICh2ID49IDB4ODApIHsKICAgICAgICAgICAgIHRoaXMudWlu
dDgoMHg4MCB8ICh2ICYgMHg3RikpOwogICAgICAgICAgICAgdiA+Pj49IDc7CiAgICAgICAgIH0K
ICAgICAgICAgdGhpcy51aW50OCh2KTsKICAgICB9Ci0gICAgdmFyaW50KHYpIHsKLSAgICAgICAg
aWYgKHYgPCB2YXJpbnRNaW4gfHwgdmFyaW50TWF4IDwgdikKLSAgICAgICAgICAgIHRocm93IG5l
dyBSYW5nZUVycm9yKGBJbnZhbGlkIHZhcmludCAke3Z9IHJhbmdlIGlzIFske3ZhcmludE1pbn0s
ICR7dmFyaW50TWF4fV1gKTsKKyAgICB2YXJpbnQzMih2KSB7CisgICAgICAgIGlmICh2IDwgdmFy
aW50MzJNaW4gfHwgdmFyaW50MzJNYXggPCB2KQorICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdl
RXJyb3IoYEludmFsaWQgdmFyaW50MzIgJHt2fSByYW5nZSBpcyBbJHt2YXJpbnQzMk1pbn0sICR7
dmFyaW50MzJNYXh9XWApOwogICAgICAgICBkbyB7CiAgICAgICAgICAgICBjb25zdCBiID0gdiAm
IDB4N0Y7CiAgICAgICAgICAgICB2ID4+PSA3OwpAQCAtMTM0LDIwICsxMzgsMjMgQEAgZXhwb3J0
IGRlZmF1bHQgY2xhc3MgTG93TGV2ZWxCaW5hcnkgewogICAgIHZhcnVpbnQxKHYpIHsKICAgICAg
ICAgaWYgKHYgIT09IDAgJiYgdiAhPT0gMSkKICAgICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVy
cm9yKGBJbnZhbGlkIHZhcnVpbnQxICR7dn0gcmFuZ2UgaXMgWzAsIDFdYCk7Ci0gICAgICAgIHRo
aXMudmFydWludCh2KTsKKyAgICAgICAgdGhpcy52YXJ1aW50MzIodik7CiAgICAgfQogICAgIHZh
cmludDcodikgewogICAgICAgICBpZiAodiA8IHZhcmludDdNaW4gfHwgdmFyaW50N01heCA8IHYp
CiAgICAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihgSW52YWxpZCB2YXJpbnQ3ICR7dn0g
cmFuZ2UgaXMgWyR7dmFyaW50N01pbn0sICR7dmFyaW50N01heH1dYCk7Ci0gICAgICAgIHRoaXMu
dmFyaW50KHYpOworICAgICAgICB0aGlzLnZhcmludDMyKHYpOwogICAgIH0KICAgICB2YXJ1aW50
Nyh2KSB7Ci0gICAgICAgIGlmICh2IDwgdmFydWludE1pbiB8fCB2YXJ1aW50N01heCA8IHYpCi0g
ICAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihgSW52YWxpZCB2YXJ1aW50NyAke3Z9IHJh
bmdlIGlzIFske3ZhcnVpbnRNaW59LCAke3ZhcnVpbnQ3TWF4fV1gKTsKLSAgICAgICAgdGhpcy52
YXJ1aW50KHYpOworICAgICAgICBpZiAodiA8IHZhcnVpbnQzMk1pbiB8fCB2YXJ1aW50N01heCA8
IHYpCisgICAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihgSW52YWxpZCB2YXJ1aW50NyAk
e3Z9IHJhbmdlIGlzIFske3ZhcnVpbnQzMk1pbn0sICR7dmFydWludDdNYXh9XWApOworICAgICAg
ICB0aGlzLnZhcnVpbnQzMih2KTsKKyAgICB9CisgICAgaW5saW5lX3NpZ25hdHVyZV90eXBlKHYp
IHsKKyAgICAgICAgdGhpcy52YXJpbnQ3KFdBU00udmFsdWVUeXBlVmFsdWVbdl0pOwogICAgIH0K
ICAgICBzdHJpbmcoc3RyKSB7Ci0gICAgICAgIGxldCBwYXRjaCA9IHRoaXMubmV3UGF0Y2hhYmxl
KCJ2YXJ1aW50Iik7CisgICAgICAgIGxldCBwYXRjaCA9IHRoaXMubmV3UGF0Y2hhYmxlKCJ2YXJ1
aW50MzIiKTsKICAgICAgICAgZm9yIChjb25zdCBjaGFyIG9mIHN0cikKICAgICAgICAgICAgIHBh
dGNoLnVpbnQxNihjaGFyLmNoYXJDb2RlQXQoKSk7CiAgICAgICAgIHBhdGNoLmFwcGx5KCk7CkBA
IC0xNjcsNyArMTc0LDcgQEAgZXhwb3J0IGRlZmF1bHQgY2xhc3MgTG93TGV2ZWxCaW5hcnkgewog
ICAgICAgICBfZ2V0dGVyUmFuZ2VDaGVjayh0aGlzLCBhdCwgNCk7CiAgICAgICAgIHJldHVybiAo
dGhpcy5fYnVmW2F0XSB8ICh0aGlzLl9idWZbYXQgKyAxXSA8PCA4KSB8ICh0aGlzLl9idWZbYXQg
KyAyXSA8PCAxNikgfCAodGhpcy5fYnVmW2F0ICsgM10gPDwgMjQpKSA+Pj4gMDsKICAgICB9Ci0g
ICAgZ2V0VmFydWludChhdCkgeworICAgIGdldFZhcnVpbnQzMihhdCkgewogICAgICAgICBsZXQg
diA9IDA7CiAgICAgICAgIGxldCBzaGlmdCA9IDA7CiAgICAgICAgIGxldCBieXRlID0gMDsKQEAg
LTE3OCwxMCArMTg1LDEwIEBAIGV4cG9ydCBkZWZhdWx0IGNsYXNzIExvd0xldmVsQmluYXJ5IHsK
ICAgICAgICAgICAgIHNoaWZ0ICs9IDc7CiAgICAgICAgIH0gd2hpbGUgKChieXRlICYgMHg4MCkg
IT09IDApOwogICAgICAgICBpZiAoc2hpZnQgLSA3ID4gMzIpIHRocm93IG5ldyBSYW5nZUVycm9y
KGBTaGlmdGluZyB0b28gbXVjaCBhdCAke2F0fWApOwotICAgICAgICBpZiAoKHNoaWZ0ID09IDM1
KSAmJiAoKGJ5dGUgJiAweEYwKSAhPSAwKSkgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIG5v
bi1zaWduaWZpY2FudCB2YXJ1aW50IGJpdHMgaW4gbGFzdCBieXRlIDB4JHtieXRlLnRvU3RyaW5n
KDE2KX1gKTsKKyAgICAgICAgaWYgKChzaGlmdCA9PSAzNSkgJiYgKChieXRlICYgMHhGMCkgIT0g
MCkpIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCBub24tc2lnbmlmaWNhbnQgdmFydWludDMy
IGJpdHMgaW4gbGFzdCBieXRlIDB4JHtieXRlLnRvU3RyaW5nKDE2KX1gKTsKICAgICAgICAgcmV0
dXJuIHsgdmFsdWU6IHYsIG5leHQ6IGF0IH07CiAgICAgfQotICAgIGdldFZhcmludChhdCkgewor
ICAgIGdldFZhcmludDMyKGF0KSB7CiAgICAgICAgIGxldCB2ID0gMDsKICAgICAgICAgbGV0IHNo
aWZ0ID0gMDsKICAgICAgICAgbGV0IGJ5dGUgPSAwOwpAQCAtMTkxLDcgKzE5OCw3IEBAIGV4cG9y
dCBkZWZhdWx0IGNsYXNzIExvd0xldmVsQmluYXJ5IHsKICAgICAgICAgICAgIHNoaWZ0ICs9IDc7
CiAgICAgICAgIH0gd2hpbGUgKChieXRlICYgMHg4MCkgIT09IDApOwogICAgICAgICBpZiAoc2hp
ZnQgLSA3ID4gMzIpIHRocm93IG5ldyBSYW5nZUVycm9yKGBTaGlmdGluZyB0b28gbXVjaCBhdCAk
e2F0fWApOwotICAgICAgICBpZiAoKHNoaWZ0ID09IDM1KSAmJiAoKChieXRlIDw8IDI2KSA+PiAz
MCkgIT0gKChieXRlIDw8IDI1KSA+PiAzMSkpKSB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQg
bm9uLXNpZ25pZmljYW50IHZhcmludCBiaXRzIGluIGxhc3QgYnl0ZSAweCR7Ynl0ZS50b1N0cmlu
ZygxNil9YCk7CisgICAgICAgIGlmICgoc2hpZnQgPT0gMzUpICYmICgoKGJ5dGUgPDwgMjYpID4+
IDMwKSAhPSAoKGJ5dGUgPDwgMjUpID4+IDMxKSkpIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3Rl
ZCBub24tc2lnbmlmaWNhbnQgdmFyaW50MzIgYml0cyBpbiBsYXN0IGJ5dGUgMHgke2J5dGUudG9T
dHJpbmcoMTYpfWApOwogICAgICAgICBpZiAoKGJ5dGUgJiAweDQwKSA9PT0gMHg0MCkgewogICAg
ICAgICAgICAgY29uc3Qgc2V4dCA9IHNoaWZ0IDwgMzIgPyAzMiAtIHNoaWZ0IDogMDsKICAgICAg
ICAgICAgIHYgPSAodiA8PCBzZXh0KSA+PiBzZXh0OwpAQCAtMTk5LDEyICsyMDYsMTIgQEAgZXhw
b3J0IGRlZmF1bHQgY2xhc3MgTG93TGV2ZWxCaW5hcnkgewogICAgICAgICByZXR1cm4geyB2YWx1
ZTogdiwgbmV4dDogYXQgfTsKICAgICB9CiAgICAgZ2V0VmFydWludDcoYXQpIHsKLSAgICAgICAg
Y29uc3QgcmVzID0gdGhpcy5nZXRWYXJ1aW50KGF0KTsKKyAgICAgICAgY29uc3QgcmVzID0gdGhp
cy5nZXRWYXJ1aW50MzIoYXQpOwogICAgICAgICBpZiAocmVzLnZhbHVlID4gdmFydWludDdNYXgp
IHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgYSB2YXJ1aW50NywgZ290IHZhbHVlICR7cmVzLnZh
bHVlfWApOwogICAgICAgICByZXR1cm4gcmVzOwogICAgIH0KICAgICBnZXRTdHJpbmcoYXQpIHsK
LSAgICAgICAgY29uc3Qgc2l6ZSA9IHRoaXMuZ2V0VmFydWludChhdCk7CisgICAgICAgIGNvbnN0
IHNpemUgPSB0aGlzLmdldFZhcnVpbnQzMihhdCk7CiAgICAgICAgIGxldCBzdHIgPSAiIjsKICAg
ICAgICAgZm9yIChsZXQgaSA9IHNpemUubmV4dDsgaSAhPT0gc2l6ZS5uZXh0ICsgc2l6ZS52YWx1
ZTsgaSArPSAyKQogICAgICAgICAgICAgc3RyICs9IFN0cmluZy5mcm9tQ2hhckNvZGUodGhpcy5n
ZXRVaW50MTYoaSkpOwpAQCAtMjIxLDYgKzIyOCw3IEBAIGNsYXNzIFBhdGNoYWJsZUxvd0xldmVs
QmluYXJ5IGV4dGVuZHMgTG93TGV2ZWxCaW5hcnkgewogICAgIH0KICAgICBfcHVzaDgodikgeyAr
K3RoaXMuX2J1ZmZlcmVkX2J5dGVzOyBzdXBlci5fcHVzaDgodik7IH0KICAgICBhcHBseSgpIHsK
KyAgICAgICAgcHJpbnQodGhpcy5fYnVmZmVyZWRfYnl0ZXMpOwogICAgICAgICB0aGlzLnRhcmdl
dFt0aGlzLnR5cGVdKHRoaXMuX2J1ZmZlcmVkX2J5dGVzKTsKICAgICAgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCB0aGlzLl9idWZmZXJlZF9ieXRlczsgKytpKQogICAgICAgICAgICAgdGhpcy50YXJn
ZXQudWludDgodGhpcy5fYnVmW2ldKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9zZWxmLXRl
c3QvdGVzdF9Mb3dMZXZlbEJpbmFyeV92YXJpbnQuanMgYi9KU1Rlc3RzL3dhc20vc2VsZi10ZXN0
L3Rlc3RfTG93TGV2ZWxCaW5hcnlfdmFyaW50LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA3ZGRjOGNmM2JmMTAxMDllNzljZDkxMDI2MjA1ZjJkMjM0NDMwODJjLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0pTVGVzdHMvd2FzbS9zZWxmLXRl
c3QvdGVzdF9Mb3dMZXZlbEJpbmFyeV92YXJpbnQuanMKKysrIC9kZXYvbnVsbApAQCAtMSwzMCAr
MCwwIEBACi1pbXBvcnQgTG93TGV2ZWxCaW5hcnksICogYXMgTExCIGZyb20gJy4uL0xvd0xldmVs
QmluYXJ5LmpzJzsKLWltcG9ydCAqIGFzIGFzc2VydCBmcm9tICcuLi9hc3NlcnQuanMnOwotCi1s
ZXQgdmFsdWVzID0gW107Ci1mb3IgKGxldCBpID0gTExCLnZhcmludE1pbjsgaSAhPT0gTExCLnZh
cmludE1pbiArIDEwMjQ7ICsraSkgdmFsdWVzLnB1c2goaSk7Ci1mb3IgKGxldCBpID0gLTIwNDg7
IGkgIT09IDIwNDg7ICsraSkgdmFsdWVzLnB1c2goaSk7Ci1mb3IgKGxldCBpID0gTExCLnZhcmlu
dE1heDsgaSAhPT0gTExCLnZhcmludE1heCAtIDEwMjQ7IC0taSkgdmFsdWVzLnB1c2goaSk7Ci0K
LWZvciAoY29uc3QgaSBvZiB2YWx1ZXMpIHsKLSAgICBsZXQgYiA9IG5ldyBMb3dMZXZlbEJpbmFy
eSgpOwotICAgIGIudmFyaW50KGkpOwotICAgIGNvbnN0IHYgPSBiLmdldFZhcmludCgwKTsKLSAg
ICBpZiAodi52YWx1ZSAhPT0gaSkKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBXcm90ZSAiJHtp
fSIgYW5kIHJlYWQgYmFjayAiJHt2fSJgKTsKLSAgICBpZiAodi5uZXh0ICE9PSBiLmdldFNpemUo
KSkKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTaXplICR7di5uZXh0fSwgZXhwZWN0ZWQgJHti
LmdldFNpemUoKX1gKTsKLX0KLQotZm9yIChsZXQgaSA9IDA7IGkgPCBMTEIudmFyQml0c01heCAr
IDE7ICsraSkgewotICAgIGxldCBiID0gbmV3IExvd0xldmVsQmluYXJ5KCk7Ci0gICAgZm9yIChs
ZXQgaiA9IDA7IGogPCBpOyArK2opCi0gICAgICAgIGIudWludDgoMHg4MCk7Ci0gICAgYXNzZXJ0
LnRocm93cygoKSA9PiBiLmdldFZhcmludCgwKSwgUmFuZ2VFcnJvciwgYFske2l9LCAke2krMX0p
IGlzIG91dCBvZiBidWZmZXIgcmFuZ2UgWzAsICR7aX0pYCk7Ci19Ci0KLWxldCBiID0gbmV3IExv
d0xldmVsQmluYXJ5KCk7Ci1mb3IgKGxldCBpID0gMDsgaSA8IExMQi52YXJCaXRzTWF4OyArK2kp
Ci0gICAgYi51aW50OCgweDgwKTsKLWIudWludDgoMHgwMCk7Ci1hc3NlcnQudGhyb3dzKCgpID0+
IGIuZ2V0VmFyaW50KDApLCBSYW5nZUVycm9yLCBgU2hpZnRpbmcgdG9vIG11Y2ggYXQgNmApOwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL3NlbGYtdGVzdC90ZXN0X0xvd0xldmVsQmluYXJ5X3Zh
cmludDMyLmpzIGIvSlNUZXN0cy93YXNtL3NlbGYtdGVzdC90ZXN0X0xvd0xldmVsQmluYXJ5X3Zh
cmludDMyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjliOGU2YWJjODc1YjA0NmNlODAyMzNmOTI1OWQwMGI0NmIx
ODc5YzYKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dhc20vc2VsZi10ZXN0L3Rlc3RfTG93
TGV2ZWxCaW5hcnlfdmFyaW50MzIuanMKQEAgLTAsMCArMSwzMCBAQAoraW1wb3J0IExvd0xldmVs
QmluYXJ5LCAqIGFzIExMQiBmcm9tICcuLi9Mb3dMZXZlbEJpbmFyeS5qcyc7CitpbXBvcnQgKiBh
cyBhc3NlcnQgZnJvbSAnLi4vYXNzZXJ0LmpzJzsKKworbGV0IHZhbHVlcyA9IFtdOworZm9yIChs
ZXQgaSA9IExMQi52YXJpbnQzMk1pbjsgaSAhPT0gTExCLnZhcmludDMyTWluICsgMTAyNDsgKytp
KSB2YWx1ZXMucHVzaChpKTsKK2ZvciAobGV0IGkgPSAtMjA0ODsgaSAhPT0gMjA0ODsgKytpKSB2
YWx1ZXMucHVzaChpKTsKK2ZvciAobGV0IGkgPSBMTEIudmFyaW50MzJNYXg7IGkgIT09IExMQi52
YXJpbnQzMk1heCAtIDEwMjQ7IC0taSkgdmFsdWVzLnB1c2goaSk7CisKK2ZvciAoY29uc3QgaSBv
ZiB2YWx1ZXMpIHsKKyAgICBsZXQgYiA9IG5ldyBMb3dMZXZlbEJpbmFyeSgpOworICAgIGIudmFy
aW50MzIoaSk7CisgICAgY29uc3QgdiA9IGIuZ2V0VmFyaW50MzIoMCk7CisgICAgaWYgKHYudmFs
dWUgIT09IGkpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgV3JvdGUgIiR7aX0iIGFuZCByZWFk
IGJhY2sgIiR7dn0iYCk7CisgICAgaWYgKHYubmV4dCAhPT0gYi5nZXRTaXplKCkpCisgICAgICAg
IHRocm93IG5ldyBFcnJvcihgU2l6ZSAke3YubmV4dH0sIGV4cGVjdGVkICR7Yi5nZXRTaXplKCl9
YCk7Cit9CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgTExCLnZhckJpdHNNYXggKyAxOyArK2kpIHsK
KyAgICBsZXQgYiA9IG5ldyBMb3dMZXZlbEJpbmFyeSgpOworICAgIGZvciAobGV0IGogPSAwOyBq
IDwgaTsgKytqKQorICAgICAgICBiLnVpbnQ4KDB4ODApOworICAgIGFzc2VydC50aHJvd3MoKCkg
PT4gYi5nZXRWYXJpbnQzMigwKSwgUmFuZ2VFcnJvciwgYFske2l9LCAke2krMX0pIGlzIG91dCBv
ZiBidWZmZXIgcmFuZ2UgWzAsICR7aX0pYCk7Cit9CisKK2xldCBiID0gbmV3IExvd0xldmVsQmlu
YXJ5KCk7Citmb3IgKGxldCBpID0gMDsgaSA8IExMQi52YXJCaXRzTWF4OyArK2kpCisgICAgYi51
aW50OCgweDgwKTsKK2IudWludDgoMHgwMCk7Cithc3NlcnQudGhyb3dzKCgpID0+IGIuZ2V0VmFy
aW50MzIoMCksIFJhbmdlRXJyb3IsIGBTaGlmdGluZyB0b28gbXVjaCBhdCA2YCk7CmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3dhc20vc2VsZi10ZXN0L3Rlc3RfTG93TGV2ZWxCaW5hcnlfdmFydWludC5q
cyBiL0pTVGVzdHMvd2FzbS9zZWxmLXRlc3QvdGVzdF9Mb3dMZXZlbEJpbmFyeV92YXJ1aW50Lmpz
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZTgyZTEzNWU5ZDE3NTBjZDRlYTJkNWQ3
NTQxYWQ3YzU0NzliZTA4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0pTVGVzdHMvd2FzbS9zZWxmLXRlc3QvdGVzdF9Mb3dMZXZlbEJpbmFyeV92YXJ1aW50
LmpzCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotaW1wb3J0IExvd0xldmVsQmluYXJ5
LCAqIGFzIExMQiBmcm9tICcuLi9Mb3dMZXZlbEJpbmFyeS5qcyc7Ci1pbXBvcnQgKiBhcyBhc3Nl
cnQgZnJvbSAnLi4vYXNzZXJ0LmpzJzsKLQotbGV0IHZhbHVlcyA9IFtdOwotZm9yIChsZXQgaSA9
IExMQi52YXJ1aW50TWluOyBpICE9PSBMTEIudmFydWludE1pbiArIDEwMjQ7ICsraSkgdmFsdWVz
LnB1c2goaSk7Ci1mb3IgKGxldCBpID0gTExCLnZhcnVpbnRNYXg7IGkgIT09IExMQi52YXJ1aW50
TWF4IC0gMTAyNDsgLS1pKSB2YWx1ZXMucHVzaChpKTsKLQotZm9yIChjb25zdCBpIG9mIHZhbHVl
cykgewotICAgIGxldCBiID0gbmV3IExvd0xldmVsQmluYXJ5KCk7Ci0gICAgYi52YXJ1aW50KGkp
OwotICAgIGNvbnN0IHYgPSBiLmdldFZhcnVpbnQoMCk7Ci0gICAgaWYgKHYudmFsdWUgIT09IGkp
Ci0gICAgICAgIHRocm93IG5ldyBFcnJvcihgV3JvdGUgIiR7aX0iIGFuZCByZWFkIGJhY2sgIiR7
dn0iYCk7Ci0gICAgaWYgKHYubmV4dCAhPT0gYi5nZXRTaXplKCkpCi0gICAgICAgIHRocm93IG5l
dyBFcnJvcihgU2l6ZSAke3YubmV4dH0sIGV4cGVjdGVkICR7Yi5nZXRTaXplKCl9YCk7Ci19Ci0K
LWZvciAobGV0IGkgPSAwOyBpIDwgTExCLnZhckJpdHNNYXggKyAxOyArK2kpIHsKLSAgICBsZXQg
YiA9IG5ldyBMb3dMZXZlbEJpbmFyeSgpOwotICAgIGZvciAobGV0IGogPSAwOyBqIDwgaTsgKytq
KQotICAgICAgICBiLnVpbnQ4KDB4ODApOwotICAgIGFzc2VydC50aHJvd3MoKCkgPT4gYi5nZXRW
YXJpbnQoMCksIFJhbmdlRXJyb3IsIGBbJHtpfSwgJHtpKzF9KSBpcyBvdXQgb2YgYnVmZmVyIHJh
bmdlIFswLCAke2l9KWApOwotfQotCi1sZXQgYiA9IG5ldyBMb3dMZXZlbEJpbmFyeSgpOwotZm9y
IChsZXQgaSA9IDA7IGkgPCBMTEIudmFyQml0c01heDsgKytpKQotICAgIGIudWludDgoMHg4MCk7
Ci1iLnVpbnQ4KDB4MDApOwotYXNzZXJ0LnRocm93cygoKSA9PiBiLmdldFZhcmludCgwKSwgUmFu
Z2VFcnJvciwgYFNoaWZ0aW5nIHRvbyBtdWNoIGF0IDZgKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
d2FzbS9zZWxmLXRlc3QvdGVzdF9Mb3dMZXZlbEJpbmFyeV92YXJ1aW50MzIuanMgYi9KU1Rlc3Rz
L3dhc20vc2VsZi10ZXN0L3Rlc3RfTG93TGV2ZWxCaW5hcnlfdmFydWludDMyLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjMzMTMzZGYzMzQ5NTBjNDU0NGI3NzMwYzI2NWYyNzc4NjA3OGFmN2IKLS0tIC9kZXYvbnVs
bAorKysgYi9KU1Rlc3RzL3dhc20vc2VsZi10ZXN0L3Rlc3RfTG93TGV2ZWxCaW5hcnlfdmFydWlu
dDMyLmpzCkBAIC0wLDAgKzEsMjkgQEAKK2ltcG9ydCBMb3dMZXZlbEJpbmFyeSwgKiBhcyBMTEIg
ZnJvbSAnLi4vTG93TGV2ZWxCaW5hcnkuanMnOworaW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJy4u
L2Fzc2VydC5qcyc7CisKK2xldCB2YWx1ZXMgPSBbXTsKK2ZvciAobGV0IGkgPSBMTEIudmFydWlu
dDMyTWluOyBpICE9PSBMTEIudmFydWludDMyTWluICsgMTAyNDsgKytpKSB2YWx1ZXMucHVzaChp
KTsKK2ZvciAobGV0IGkgPSBMTEIudmFydWludDMyTWF4OyBpICE9PSBMTEIudmFydWludDMyTWF4
IC0gMTAyNDsgLS1pKSB2YWx1ZXMucHVzaChpKTsKKworZm9yIChjb25zdCBpIG9mIHZhbHVlcykg
eworICAgIGxldCBiID0gbmV3IExvd0xldmVsQmluYXJ5KCk7CisgICAgYi52YXJ1aW50MzIoaSk7
CisgICAgY29uc3QgdiA9IGIuZ2V0VmFydWludDMyKDApOworICAgIGlmICh2LnZhbHVlICE9PSBp
KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFdyb3RlICIke2l9IiBhbmQgcmVhZCBiYWNrICIk
e3Z9ImApOworICAgIGlmICh2Lm5leHQgIT09IGIuZ2V0U2l6ZSgpKQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoYFNpemUgJHt2Lm5leHR9LCBleHBlY3RlZCAke2IuZ2V0U2l6ZSgpfWApOworfQor
Citmb3IgKGxldCBpID0gMDsgaSA8IExMQi52YXJCaXRzTWF4ICsgMTsgKytpKSB7CisgICAgbGV0
IGIgPSBuZXcgTG93TGV2ZWxCaW5hcnkoKTsKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IGk7ICsr
aikKKyAgICAgICAgYi51aW50OCgweDgwKTsKKyAgICBhc3NlcnQudGhyb3dzKCgpID0+IGIuZ2V0
VmFyaW50KDApLCBSYW5nZUVycm9yLCBgWyR7aX0sICR7aSsxfSkgaXMgb3V0IG9mIGJ1ZmZlciBy
YW5nZSBbMCwgJHtpfSlgKTsKK30KKworbGV0IGIgPSBuZXcgTG93TGV2ZWxCaW5hcnkoKTsKK2Zv
ciAobGV0IGkgPSAwOyBpIDwgTExCLnZhckJpdHNNYXg7ICsraSkKKyAgICBiLnVpbnQ4KDB4ODAp
OworYi51aW50OCgweDAwKTsKK2Fzc2VydC50aHJvd3MoKCkgPT4gYi5nZXRWYXJpbnQoMCksIFJh
bmdlRXJyb3IsIGBTaGlmdGluZyB0b28gbXVjaCBhdCA2YCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294537</attachid>
            <date>2016-11-11 14:33:38 -0800</date>
            <delta_ts>2016-11-11 14:40:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164611-20161111142922.patch</filename>
            <type>text/plain</type>
            <size>70205</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4NTE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
MjRmNTliYjgzNWIzOGY2NmI2YjEwN2VjY2Q0NWM5NDM1OGJkMzVkLi42YWNmYzE1ZmU0YWFlODIy
NWZhYzlhODJlNjg0ZmI0ZjE5NmQ4NGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2OCBAQAorMjAxNi0xMS0xMSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBNb3ZlIFdhc20gdGVzdHMgdG8gSlMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDYxMQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggdHJhbnNsYXRlcyBtb3N0
IG9mIHRoZSB0ZXN0cyBmcm9tIHRlc3RXYXNtLmNwcCB0byB0aGUgSlMgdGVzdGluZyBhcGkuIE1v
c3Qgb2YgdGhlCisgICAgICAgIG9tbWl0ZWQgdGVzdHMgd2VyZSBlYXJsaWVzdCB0ZXN0cywgd2hp
Y2ggdGVzdGVkIHRyaXZpYWwgdGhpbmdzLCBsaWtlIGFkZGluZyB0d28KKyAgICAgICAgY29uc3Rh
bnRzLiBTb21lIHRlc3RzIGFyZSBvbW1pdGVkIGZvciBvdGhlciByZWFzb25zLCBob3dldmVyLiBU
aGVzZSBhcmU6CisKKyAgICAgICAgMSkgVGVzdHMgdXNpbmcgSTY0IHNpbmNlIHRoZSB0ZXN0aW5n
IGFwaSBkb2VzIG5vdCB5ZXQga25vdyBob3cgdG8gaGFuZGxlIDY0LWJpdCBudW1iZXJzLiAgMikK
KyAgICAgICAgVGVzdHMgdGhhdCB3b3VsZCB2YWxpZGF0ZSB0aGUgbWVtb3J5IG9mIHRoZSBtb2R1
bGUgb25jZSB3YXNtIHdhcyBkb25lIHdpdGggaXQgc2luY2UgdGhhdCdzCisgICAgICAgIG5vdCBy
ZWFsbHkgcG9zc2libGUgaW4gSlMuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gbWFrZSBzdWNoIGEg
dHJhbnNsYXRpb24gZWFzaWVyIHRoaXMgcGF0Y2ggYWxzbyBhZGRzIHNvbWUgZmVhdHVyZXMgdG8g
dGhlIEpTCisgICAgICAgIHRlc3RpbmcgYXBpOgorCisgICAgICAgIDEpIEJsb2NrcyBjYW4gbm93
IGJlIGRvbmUgbGV4aWNhbGx5IGJ5IGFkZGluZyBhIGxhbWJkYSBhcyB0aGUgbGFzdCBhcmd1bWVu
dCBvZiB0aGUgYmxvY2sKKyAgICAgICAgb3Bjb2RlLiBGb3IgZXhhbXBsZSBvbmUgY2FuIGRvOgor
ICAgICAgICAgICAgLi4uCisgICAgICAgICAgICAuQmxvY2soImkzMiIsIGIgPT4gYi5JMzJDb25z
dCgxKSApCisKKyAgICAgICAgYW5kIHRoZSBuZXN0ZWQgbGFtYmRhIHdpbGwgYXV0b21hdGljYWxs
eSBoYXZlIGFuIGVuZCBhdHRhY2hlZC4KKworICAgICAgICAyKSBUaGUgSlMgdGVzdGluZyBhcGkg
Y2FuIG5vdyBoYW5kbGUgaW5saW5lIHNpZ25hdHVyZSB0eXBlcy4KKworICAgICAgICAzKSBSZWxv
Y2F0ZSBzb21lIGNvZGUgdG8gbWFrZSBpdCBlYXNpZXIgdG8gZm9sbG93IGFuZCBwcmV2ZW50IDQ0
IHNwYWNlIGluZGVudGF0aW9uLgorCisgICAgICAgIDQpIFJlbmFtZSB2YXJ1aW50L3ZhcmludCB0
byB2YXJ1aW50MzIvdmFyaW50MzIsIHRoaXMgbGV0cyB0aGVtIGJlIGRpcmVjdGx5IGNhbGxlZCBm
cm9tIHRoZQorICAgICAgICB3YXNtLmpzb24gd2l0aG91dCBiZWluZyByZW1hcHBlZC4KKworICAg
ICAgICA1KSBBZGQgc3VwcG9ydCBmb3IgTWVtb3J5IGFuZCBGdW5jdGlvbiBzZWN0aW9ucyB0byB0
aGUgQnVpbGRlci4KKworICAgICAgICA2KSBBZGQgc3VwcG9ydCBmb3IgbG9jYWwgdmFyaWFibGVz
LgorCisgICAgICAgIE9uIHRoZSBKU0Mgc2lkZSwgd2UgbmVlZGVkIHRvIGV4cG9zZSBhIG5ldyBm
dW5jdGlvbiB0byB2YWxpZGF0ZSB0aGUgY29tcGlsZWQgd2FzbSBjb2RlCisgICAgICAgIGJlaGF2
ZXMgdGhlIHdheSB3ZSBleHBlY3QuIEF0IGxlYXN0IHVudGlsIHRoZSBKUyBXYXNtIEFQSSBpcyBm
aW5pc2hlZC4gVGhlIG5ldyB2YWxpZGF0aW9uCisgICAgICAgIGZ1bmN0aW9uLCB0ZXN0V2FzbU1v
ZHVsZUZ1bmN0aW9ucywgdGFrZXMgYW4gYXJyYXkgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIHdhc20g
YmluYXJ5LCB0aGUKKyAgICAgICAgbnVtYmVyIG9mIGZ1bmN0aW9ucyBpbiB0aGUgYmxvYiBhbmQg
dGVzdHMgZm9yIGVhY2ggb2YgdGhvc2UgZnVuY3Rpb25zLgorCisgICAgICAgICoganNjLmNwcDoK
KyAgICAgICAgKEdsb2JhbE9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoYm94KToK
KyAgICAgICAgKGNhbGxXYXNtRnVuY3Rpb24pOgorICAgICAgICAoZnVuY3Rpb25UZXN0V2FzbU1v
ZHVsZSk6CisgICAgICAgICogdGVzdFdhc20uY3BwOgorICAgICAgICAoY2hlY2tQbGFuKToKKyAg
ICAgICAgKHJ1bldhc21UZXN0cyk6CisgICAgICAgICogd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5j
cHA6CisgICAgICAgIChKU0M6Oldhc206OnBhcnNlQW5kQ29tcGlsZSk6CisgICAgICAgICogd2Fz
bS9XYXNtRnVuY3Rpb25QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6RnVuY3Rpb25QYXJz
ZXI8Q29udGV4dD46OnBhcnNlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6RnVuY3Rpb25QYXJzZXI8
Q29udGV4dD46OnBhcnNlQm9keSk6CisgICAgICAgIChKU0M6Oldhc206OkZ1bmN0aW9uUGFyc2Vy
PENvbnRleHQ+OjpwYXJzZUJsb2NrKTogRGVsZXRlZC4KKyAgICAgICAgKiB3YXNtL1dhc21Nb2R1
bGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpNb2R1bGVQYXJzZXI6OnBhcnNlTWVt
b3J5KToKKyAgICAgICAgKEpTQzo6V2FzbTo6TW9kdWxlUGFyc2VyOjpwYXJzZUV4cG9ydCk6Cisg
ICAgICAgICogd2FzbS9XYXNtUGxhbi5jcHA6CisgICAgICAgIChKU0M6Oldhc206OlBsYW46OlBs
YW4pOgorICAgICAgICAoSlNDOjpXYXNtOjpQbGFuOjpydW4pOgorICAgICAgICAqIHdhc20vV2Fz
bVBsYW4uaDoKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5TW9kdWxlKToKKwogMjAx
Ni0xMS0wOSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAg
ICBqc2MgQ0xJIHNob3VsZCB3b3JrIHdpdGggdGhlIHJlbW90ZSBpbnNwZWN0b3IKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2pzYy5jcHAKaW5kZXggMjNiZjc0NzBlNzFlODE2YjhmZmI5ZjFmMjViZTEyNTI4YmIyMGI4Ny4u
NTUxM2Y1ZjQ5YmNlNmI4Y2E1YmExNWI3NjM0ZTNkYTk2N2Y2MmRlMCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pz
Yy5jcHAKQEAgLTU0LDkgKzU0LDExIEBACiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRl
ICJKU1R5cGVkQXJyYXlzLmgiCiAjaW5jbHVkZSAiTExJbnREYXRhLmgiCisjaW5jbHVkZSAiTExJ
bnRUaHVua3MuaCIKICNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIlBh
cnNlckVycm9yLmgiCiAjaW5jbHVkZSAiUHJvZmlsZXJEYXRhYmFzZS5oIgorI2luY2x1ZGUgIlBy
b3RvQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiU2FtcGxpbmdQcm9maWxlci5oIgogI2luY2x1ZGUg
IlNoYWRvd0NoaWNrZW4uaCIKICNpbmNsdWRlICJTdGFja1Zpc2l0b3IuaCIKQEAgLTY1LDYgKzY3
LDcgQEAKICNpbmNsdWRlICJTdXBlclNhbXBsZXIuaCIKICNpbmNsdWRlICJUZXN0UnVubmVyVXRp
bHMuaCIKICNpbmNsdWRlICJUeXBlUHJvZmlsZXJMb2cuaCIKKyNpbmNsdWRlICJXYXNtUGxhbi5o
IgogI2luY2x1ZGUgPGxvY2FsZS5oPgogI2luY2x1ZGUgPG1hdGguaD4KICNpbmNsdWRlIDxzdGRp
by5oPgpAQCAtOTA1LDYgKzkwOCwxMCBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvblN0YXJ0U2FtcGxpbmdQcm9maWxlcihFeGVjU3RhdGUqKTsKIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uU2FtcGxpbmdQcm9maWxlclN0YWNr
VHJhY2VzKEV4ZWNTdGF0ZSopOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCitz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblRlc3RXYXNtTW9kdWxl
RnVuY3Rpb25zKEV4ZWNTdGF0ZSopOworI2VuZGlmCisKICNpZiBFTkFCTEUoU0FNUExJTkdfRkxB
R1MpCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblNldFNhbXBs
aW5nRmxhZ3MoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvbkNsZWFyU2FtcGxpbmdGbGFncyhFeGVjU3RhdGUqKTsKQEAgLTExNTIsNiArMTE1
OSwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAic2FtcGxpbmdQcm9m
aWxlclN0YWNrVHJhY2VzIiwgZnVuY3Rpb25TYW1wbGluZ1Byb2ZpbGVyU3RhY2tUcmFjZXMsIDAp
OwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisgICAgICAgIGFkZEZ1bmN0aW9u
KHZtLCAidGVzdFdhc21Nb2R1bGUiLCBmdW5jdGlvblRlc3RXYXNtTW9kdWxlRnVuY3Rpb25zLCAw
KTsKKyNlbmRpZgorCiAgICAgICAgIGlmICghYXJndW1lbnRzLmlzRW1wdHkoKSkgewogICAgICAg
ICAgICAgSlNBcnJheSogYXJyYXkgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGdsb2JhbEV4ZWMoKSwg
MCk7CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFyZ3VtZW50cy5zaXplKCk7
ICsraSkKQEAgLTIzNTIsNiArMjM2MywxMDQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvblNhbXBsaW5nUHJvZmlsZXJTdGFja1RyYWNlcyhFeGVjU3RhdGUqIGV4ZWMKIH0K
ICNlbmRpZiAvLyBFTkFCTEUoU0FNUExJTkdfUFJPRklMRVIpCiAKKyNpZiBFTkFCTEUoV0VCQVNT
RU1CTFkpCisKK3N0YXRpYyBKU1ZhbHVlIGJveChFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgSlNW
YWx1ZSB3YXNtVmFsdWUpCit7CisgICAgSlNTdHJpbmcqIHR5cGUgPSBqc0Nhc3Q8SlNTdHJpbmcq
Pih3YXNtVmFsdWUuZ2V0KGV4ZWMsIG1ha2VJZGVudGlmaWVyKHZtLCAidHlwZSIpKSk7CisgICAg
SlNWYWx1ZSB2YWx1ZSA9IHdhc21WYWx1ZS5nZXQoZXhlYywgbWFrZUlkZW50aWZpZXIodm0sICJ2
YWx1ZSIpKTsKKworICAgIGNvbnN0IFN0cmluZyYgdHlwZVN0cmluZyA9IHR5cGUtPnZhbHVlKGV4
ZWMpOworICAgIGlmICh0eXBlU3RyaW5nID09ICJpNjQiKSB7CisgICAgICAgIFJFTEVBU0VfQVNT
RVJUKHZhbHVlLmlzU3RyaW5nKCkpOworICAgICAgICBpbnQ2NF90IHJlc3VsdDsKKyAgICAgICAg
UkVMRUFTRV9BU1NFUlQoc3NjYW5mKGJpdHdpc2VfY2FzdDxjb25zdCBjaGFyKj4oanNDYXN0PEpT
U3RyaW5nKj4odmFsdWUpLT52YWx1ZShleGVjKS5jaGFyYWN0ZXJzOCgpKSwgIiVsbGQiLCAmcmVz
dWx0KSAhPSBFT0YpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHJlc3VsdCk7Cisg
ICAgfQorICAgIFJFTEVBU0VfQVNTRVJUKHZhbHVlLmlzTnVtYmVyKCkpOworCisgICAgaWYgKHR5
cGVTdHJpbmcgPT0gImkzMiIpIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQodmFsdWUuaXNJbnQz
MigpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh2YWx1ZS5hc0ludDMyKCkpOwor
ICAgIH0KKworICAgIGlmICh0eXBlU3RyaW5nID09ICJmMzIiKQorICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZGVjb2RlKGJpdHdpc2VfY2FzdDx1aW50MzJfdD4odmFsdWUudG9GbG9hdChleGVjKSkp
OworCisgICAgUkVMRUFTRV9BU1NFUlQodHlwZVN0cmluZyA9PSAiZjY0Iik7CisgICAgcmV0dXJu
IHZhbHVlOworfQorCitzdGF0aWMgSlNWYWx1ZSBjYWxsV2FzbUZ1bmN0aW9uKFZNKiB2bSwgY29u
c3QgQjM6OkNvbXBpbGF0aW9uJiBjb2RlLCBWZWN0b3I8SlNWYWx1ZT4mIGJveGVkQXJncykKK3sK
KyAgICBKU1ZhbHVlIGZpcnN0QXJndW1lbnQ7CisgICAgaW50IGFyZ0NvdW50ID0gMTsKKyAgICBK
U1ZhbHVlKiByZW1haW5pbmdBcmdzID0gbnVsbHB0cjsKKyAgICBpZiAoYm94ZWRBcmdzLnNpemUo
KSkgeworICAgICAgICByZW1haW5pbmdBcmdzID0gYm94ZWRBcmdzLmRhdGEoKTsKKyAgICAgICAg
Zmlyc3RBcmd1bWVudCA9ICpyZW1haW5pbmdBcmdzOworICAgICAgICByZW1haW5pbmdBcmdzKys7
CisgICAgICAgIGFyZ0NvdW50ID0gYm94ZWRBcmdzLnNpemUoKTsKKyAgICB9CisKKyAgICBQcm90
b0NhbGxGcmFtZSBwcm90b0NhbGxGcmFtZTsKKyAgICBwcm90b0NhbGxGcmFtZS5pbml0KG51bGxw
dHIsIG51bGxwdHIsIGZpcnN0QXJndW1lbnQsIGFyZ0NvdW50LCByZW1haW5pbmdBcmdzKTsKKwor
ICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodm1FbnRyeVRvV2FzbShjb2RlLmNvZGUoKS5leGVj
dXRhYmxlQWRkcmVzcygpLCB2bSwgJnByb3RvQ2FsbEZyYW1lKSk7Cit9CisKKy8vIHRlc3RXYXNt
TW9kdWxlKEpTQXJyYXlCdWZmZXJWaWV3IHNvdXJjZSwgbnVtYmVyIGZ1bmN0aW9uQ291bnQsIC4u
LltbV2FzbVZhbHVlLCBbV2FzbVZhbHVlXV1dKSB3aGVyZSB0aGUgaXRoIGNvcHkgb2YgW1tyZXN1
bHQsIFthcmdzXV1dIGlzIGEgbGlzdAorLy8gb2YgYXJndW1lbnRzIHRvIGJlIHBhc3NlZCB0byB0
aGUgaXRoIHdhc20gZnVuY3Rpb24gYXMgd2VsbCBhcyB0aGUgZXhwZWN0ZWQgcmVzdWx0LiBXYXNt
VmFsdWUgaXMgYW4gb2JqZWN0IHdpdGggInR5cGUiIGFuZCAidmFsdWUiIHByb3BlcnRpZXMuCitz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblRlc3RXYXNtTW9kdWxl
RnVuY3Rpb25zKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGlmICghT3B0
aW9uczo6dXNlV2ViQXNzZW1ibHkoKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgidGVzdFdhc21Nb2R1bGUgc2hvdWxkIG9ubHkgYmUg
Y2FsbGVkIGlmIHRoZSB1c2VXZWJBc3NlbWJseSBvcHRpb24gaXMgc2V0IikpOworCisgICAgSlNB
cnJheUJ1ZmZlclZpZXcqIHNvdXJjZSA9IGpzQ2FzdDxKU0FycmF5QnVmZmVyVmlldyo+KGV4ZWMt
PmFyZ3VtZW50KDApKTsKKyAgICB1aW50MzJfdCBmdW5jdGlvbkNvdW50ID0gZXhlYy0+YXJndW1l
bnQoMSkudG9VSW50MzIoZXhlYyk7CisKKyAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpICE9
IGZ1bmN0aW9uQ291bnQgKyAyKQorICAgICAgICBDUkFTSCgpOworCisgICAgV2FzbTo6UGxhbiBw
bGFuKCZ2bSwgc3RhdGljX2Nhc3Q8dWludDhfdCo+KHNvdXJjZS0+dmVjdG9yKCkpLCBzb3VyY2Ut
Pmxlbmd0aCgpKTsKKyAgICBwbGFuLnJ1bigpOworICAgIGlmIChwbGFuLmZhaWxlZCgpKQorICAg
ICAgICBDUkFTSCgpOworCisgICAgaWYgKHBsYW4uY29tcGlsZWRGdW5jdGlvbkNvdW50KCkgIT0g
ZnVuY3Rpb25Db3VudCkKKyAgICAgICAgQ1JBU0goKTsKKworICAgIGZvciAodWludDMyX3QgaSA9
IDA7IGkgPCBmdW5jdGlvbkNvdW50OyArK2kpIHsKKyAgICAgICAgaWYgKCFwbGFuLmNvbXBpbGVk
RnVuY3Rpb24oaSkpCisgICAgICAgICAgICBkYXRhTG9nTG4oImZhaWxlZCB0byBjb21waWxlIGZ1
bmN0aW9uIGF0IGluZGV4IiwgaSk7CisKKyAgICAgICAgSlNBcnJheSogdGVzdENhc2VzID0ganND
YXN0PEpTQXJyYXkqPihleGVjLT5hcmd1bWVudChpICsgMikpOworICAgICAgICBmb3IgKHVuc2ln
bmVkIHRlc3RJbmRleCA9IDA7IHRlc3RJbmRleCA8IHRlc3RDYXNlcy0+bGVuZ3RoKCk7ICsrdGVz
dEluZGV4KSB7CisgICAgICAgICAgICBKU0FycmF5KiB0ZXN0ID0ganNDYXN0PEpTQXJyYXkqPih0
ZXN0Q2FzZXMtPmdldEluZGV4UXVpY2tseSh0ZXN0SW5kZXgpKTsKKyAgICAgICAgICAgIEpTT2Jq
ZWN0KiByZXN1bHQgPSBqc0Nhc3Q8SlNPYmplY3QqPih0ZXN0LT5nZXRJbmRleFF1aWNrbHkoMCkp
OworICAgICAgICAgICAgSlNBcnJheSogYXJndW1lbnRzID0ganNDYXN0PEpTQXJyYXkqPih0ZXN0
LT5nZXRJbmRleFF1aWNrbHkoMSkpOworCisgICAgICAgICAgICBWZWN0b3I8SlNWYWx1ZT4gYm94
ZWRBcmdzOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBhcmdJbmRleCA9IDA7IGFyZ0luZGV4
IDwgYXJndW1lbnRzLT5sZW5ndGgoKTsgKythcmdJbmRleCkKKyAgICAgICAgICAgICAgICBib3hl
ZEFyZ3MuYXBwZW5kKGJveChleGVjLCB2bSwgYXJndW1lbnRzLT5nZXRJbmRleFF1aWNrbHkoYXJn
SW5kZXgpKSk7CisKKyAgICAgICAgICAgIEpTVmFsdWUgY2FsbFJlc3VsdCA9IGNhbGxXYXNtRnVu
Y3Rpb24oJnZtLCAqcGxhbi5jb21waWxlZEZ1bmN0aW9uKGkpLT5qc0VudHJ5UG9pbnQsIGJveGVk
QXJncyk7CisgICAgICAgICAgICBKU1ZhbHVlIGV4cGVjdGVkID0gYm94KGV4ZWMsIHZtLCByZXN1
bHQpOworICAgICAgICAgICAgaWYgKGNhbGxSZXN1bHQgIT0gZXhwZWN0ZWQpIHsKKyAgICAgICAg
ICAgICAgICBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKF9fRklMRV9fLCBfX0xJTkVfXywgV1RG
X1BSRVRUWV9GVU5DVElPTiwgdG9DU3RyaW5nKCIgKGNhbGxSZXN1bHQgPT0gIiwgUmF3UG9pbnRl
cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KGNhbGxSZXN1bHQpKSwgIiwgZXhwZWN0ZWQgPT0gIiwgUmF3
UG9pbnRlcihiaXR3aXNlX2Nhc3Q8dm9pZCo+KGV4cGVjdGVkKSksICIpIikuZGF0YSgpKTsKKyAg
ICAgICAgICAgICAgICBDUkFTSCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor
CisgICAgcmV0dXJuIGVuY29kZWRKU1VuZGVmaW5lZCgpOworfQorCisjZW5kaWYgLy8gRU5BQkxF
KFdFQkFTU0VCTFkpCisKIC8vIFVzZSBTRUggZm9yIFJlbGVhc2UgYnVpbGRzIG9ubHkgdG8gZ2V0
IHJpZCBvZiB0aGUgY3Jhc2ggcmVwb3J0IGRpYWxvZwogLy8gKGx1Y2tpbHkgdGhlIHNhbWUgdGVz
dHMgZmFpbCBpbiBSZWxlYXNlIGFuZCBEZWJ1ZyBidWlsZHMgc28gZmFyKS4gTmVlZCB0bwogLy8g
YmUgaW4gYSBzZXBhcmF0ZSBtYWluIGZ1bmN0aW9uIGJlY2F1c2UgdGhlIGpzY21haW4gZnVuY3Rp
b24gcmVxdWlyZXMgb2JqZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dFdhc20uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RXYXNtLmNwcAppbmRleCBiNzU5
NTYyNTdlNThjMTQ3MzQ5MjRiNjk0ZmQ5OTUyNWFlNjc5NDc5Li43ODZhMjA4YWMwZjg2YWU0NGZj
ZDM0MGNiZDlkOTI2YWU1NmRlYjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdFdhc20uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0V2FzbS5jcHAKQEAg
LTI3OSw2ICsyNzksNyBAQCBpbmxpbmUgSlNWYWx1ZSBib3hkKGRvdWJsZSB2YWx1ZSkKIAogc3Rh
dGljIHZvaWQgY2hlY2tQbGFuKFBsYW4mIHBsYW4sIHVuc2lnbmVkIGV4cGVjdGVkTnVtYmVyT2ZG
dW5jdGlvbnMpCiB7CisgICAgcGxhbi5ydW4oKTsKICAgICBpZiAocGxhbi5mYWlsZWQoKSkgewog
ICAgICAgICBkYXRhTG9nTG4oIk1vZHVsZSBmYWlsZWQgdG8gY29tcGlsZSB3aXRoIGVycm9yOiAi
LCBwbGFuLmVycm9yTWVzc2FnZSgpKTsKICAgICAgICAgQ1JBU0goKTsKQEAgLTMyNyw3ICszMjgs
NyBAQCBzdGF0aWMgdm9pZCBydW5XYXNtVGVzdHMoKQogICAgICAgICAgICAgMHgwZiwgMHgxNCwg
MHgwMSwgMHgwZgogICAgICAgICB9OwogCi0gICAgICAgIFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7
CisgICAgICAgIFBsYW4gcGxhbih2bSwgdmVjdG9yKTsKICAgICAgICAgY2hlY2tQbGFuKHBsYW4s
IDEpOwogCiAgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgpAQCAtMzczLDcgKzM3
NCw3IEBAIHN0YXRpYyB2b2lkIHJ1bldhc21UZXN0cygpCiAgICAgICAgICAgICAweDEwLCAweDBk
LCAweDQwLCAweDA5LCAweDBmLCAweDE1LCAweDAxLCAweDE0LCAweDAxLCAweDEwLCAweDBlLCAw
eDQwLCAweDBmCiAgICAgICAgIH07CiAKLSAgICAgICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9yKTsK
KyAgICAgICAgUGxhbiBwbGFuKHZtLCB2ZWN0b3IpOwogICAgICAgICBjaGVja1BsYW4ocGxhbiwg
MSk7CiAKICAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCkBAIC00MTEsNyArNDEy
LDcgQEAgc3RhdGljIHZvaWQgcnVuV2FzbVRlc3RzKCkKICAgICAgICAgICAgIDB4MGYKICAgICAg
ICAgfTsKIAotICAgICAgICBQbGFuIHBsYW4oKnZtLCB2ZWN0b3IpOworICAgICAgICBQbGFuIHBs
YW4odm0sIHZlY3Rvcik7CiAgICAgICAgIGNoZWNrUGxhbihwbGFuLCAxKTsKIAogICAgICAgICAv
LyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KQEAgLTQ0NCw3ICs0NDUsNyBAQCBzdGF0aWMgdm9p
ZCBydW5XYXNtVGVzdHMoKQogICAgICAgICAgICAgMHgxMCwgMHgwMCwgMHg0ZCwgMHgwMywgMHgw
MSwgMHgxMCwgMHgwMSwgMHgwNCwgMHgxMCwgMHgwMiwgMHgwNiwgMHgwMSwgMHgwZiwgMHgwZiwg
MHgwZgogICAgICAgICB9OwogCi0gICAgICAgIFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7CisgICAg
ICAgIFBsYW4gcGxhbih2bSwgdmVjdG9yKTsKICAgICAgICAgY2hlY2tQbGFuKHBsYW4sIDEpOwog
CiAgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgpAQCAtNDcxLDcgKzQ3Miw3IEBA
IHN0YXRpYyB2b2lkIHJ1bldhc21UZXN0cygpCiAgICAgICAgICAgICAweDRkLCAweDAzLCAweDAx
LCAweDEwLCAweDAxLCAweDA0LCAweDEwLCAweDAyLCAweDBmLCAweDBmCiAgICAgICAgIH07CiAK
LSAgICAgICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9yKTsKKyAgICAgICAgUGxhbiBwbGFuKHZtLCB2
ZWN0b3IpOwogICAgICAgICBjaGVja1BsYW4ocGxhbiwgMSk7CiAKICAgICAgICAgLy8gVGVzdCB0
aGlzIGRvZXNuJ3QgY3Jhc2guCkBAIC01MDksNyArNTEwLDcgQEAgc3RhdGljIHZvaWQgcnVuV2Fz
bVRlc3RzKCkKICAgICAgICAgICAgIDB4MGYsIDB4MGYKICAgICAgICAgfTsKIAotICAgICAgICBQ
bGFuIHBsYW4oKnZtLCB2ZWN0b3IpOworICAgICAgICBQbGFuIHBsYW4odm0sIHZlY3Rvcik7CiAg
ICAgICAgIGNoZWNrUGxhbihwbGFuLCAxKTsKIAogICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24n
dCBjcmFzaC4KQEAgLTUzOSw3ICs1NDAsNyBAQCBzdGF0aWMgdm9pZCBydW5XYXNtVGVzdHMoKQog
ICAgICAgICAgICAgMHgxNiwgMHgwMCwgMHgwOSwgMHgwZgogICAgICAgICB9OwogCi0gICAgICAg
IFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7CisgICAgICAgIFBsYW4gcGxhbih2bSwgdmVjdG9yKTsK
ICAgICAgICAgY2hlY2tQbGFuKHBsYW4sIDIpOwogCiAgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vz
bid0IGNyYXNoLgpAQCAtNTY1LDcgKzU2Niw3IEBAIHN0YXRpYyB2b2lkIHJ1bldhc21UZXN0cygp
CiAgICAgICAgICAgICAweDE2LCAweDAwLCAweDA5LCAweDBmCiAgICAgICAgIH07CiAKLSAgICAg
ICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9yKTsKKyAgICAgICAgUGxhbiBwbGFuKHZtLCB2ZWN0b3Ip
OwogICAgICAgICBjaGVja1BsYW4ocGxhbiwgMik7CiAKICAgICAgICAgLy8gVGVzdCB0aGlzIGRv
ZXNuJ3QgY3Jhc2guCkBAIC01OTYsNyArNTk3LDcgQEAgc3RhdGljIHZvaWQgcnVuV2FzbVRlc3Rz
KCkKICAgICAgICAgICAgIDB4MTQsIDB4MDAsIDB4MTQsIDB4MDAsIDB4MTQsIDB4MDAsIDB4MTYs
IDB4MDAsIDB4MDksIDB4MGYKICAgICAgICAgfTsKIAotICAgICAgICBQbGFuIHBsYW4oKnZtLCB2
ZWN0b3IpOworICAgICAgICBQbGFuIHBsYW4odm0sIHZlY3Rvcik7CiAgICAgICAgIGNoZWNrUGxh
bihwbGFuLCAyKTsKIAogICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KQEAgLTYy
Nyw3ICs2MjgsNyBAQCBzdGF0aWMgdm9pZCBydW5XYXNtVGVzdHMoKQogICAgICAgICAgICAgMHg1
YywgMHgxNiwgMHgwMCwgMHg1ZCwgMHgwOSwgMHgwZgogICAgICAgICB9OwogCi0gICAgICAgIFBs
YW4gcGxhbigqdm0sIHZlY3Rvcik7CisgICAgICAgIFBsYW4gcGxhbih2bSwgdmVjdG9yKTsKICAg
ICAgICAgY2hlY2tQbGFuKHBsYW4sIDEpOwogCiAgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0
IGNyYXNoLgpAQCAtNjUzLDExICs2NTQsOCBAQCBzdGF0aWMgdm9pZCBydW5XYXNtVGVzdHMoKQog
ICAgICAgICAgICAgMHgwZiwgMHg4OCwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMCwgMHgx
NCwgMHgwMCwgMHgxNCwgMHgwMSwgMHg1YiwgMHgwOSwgMHgwZgogICAgICAgICB9OwogCi0gICAg
ICAgIFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7Ci0gICAgICAgIGlmIChwbGFuLmNvbXBpbGVkRnVu
Y3Rpb25Db3VudCgpICE9IDIgfHwgIXBsYW4uY29tcGlsZWRGdW5jdGlvbigwKSB8fCAhcGxhbi5j
b21waWxlZEZ1bmN0aW9uKDEpKSB7Ci0gICAgICAgICAgICBkYXRhTG9nTG4oIk1vZHVsZSBmYWls
ZWQgdG8gY29tcGlsZSBjb3JyZWN0bHkuIik7Ci0gICAgICAgICAgICBDUkFTSCgpOwotICAgICAg
ICB9CisgICAgICAgIFBsYW4gcGxhbih2bSwgdmVjdG9yKTsKKyAgICAgICAgY2hlY2tQbGFuKHBs
YW4sIDIpOwogCiAgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgogICAgICAgICBD
SEVDS19FUShpbnZva2U8aW50PigqcGxhbi5jb21waWxlZEZ1bmN0aW9uKDEpLT5qc0VudHJ5UG9p
bnQsIHsgYm94KDApLCBib3goMCkgfSksIDApOwpAQCAtNjg0LDcgKzY4Miw3IEBAIHN0YXRpYyB2
b2lkIHJ1bldhc21UZXN0cygpCiAgICAgICAgICAgICAweDE2LCAweDAwLCAweDA5LCAweDBmCiAg
ICAgICAgIH07CiAKLSAgICAgICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9yKTsKKyAgICAgICAgUGxh
biBwbGFuKHZtLCB2ZWN0b3IpOwogICAgICAgICBjaGVja1BsYW4ocGxhbiwgMik7CiAKICAgICAg
ICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCkBAIC03MTMsNyArNzExLDcgQEAgc3RhdGlj
IHZvaWQgcnVuV2FzbVRlc3RzKCkKICAgICAgICAgICAgIDB4MTQsIDB4MDEsIDB4MTQsIDB4MDAs
IDB4MzQsIDB4MDMsIDB4MDAsIDB4MTQsIDB4MDEsIDB4MmIsIDB4MDMsIDB4MDAsIDB4MDksIDB4
MGYKICAgICAgICAgfTsKIAotICAgICAgICBQbGFuIHBsYW4oKnZtLCB2ZWN0b3IpOworICAgICAg
ICBQbGFuIHBsYW4odm0sIHZlY3Rvcik7CiAgICAgICAgIGNoZWNrUGxhbihwbGFuLCAxKTsKIAog
ICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KQEAgLTc0MCw3ICs3MzgsNyBAQCBz
dGF0aWMgdm9pZCBydW5XYXNtVGVzdHMoKQogICAgICAgICAgICAgMHgwMSwgMHgyYSwgMHgwMiwg
MHgwMCwgMHgwOSwgMHgwZgogICAgICAgICB9OwogCi0gICAgICAgIFBsYW4gcGxhbigqdm0sIHZl
Y3Rvcik7CisgICAgICAgIFBsYW4gcGxhbih2bSwgdmVjdG9yKTsKICAgICAgICAgY2hlY2tQbGFu
KHBsYW4sIDEpOwogCiAgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgpAQCAtNzc3
LDcgKzc3NSw3IEBAIHN0YXRpYyB2b2lkIHJ1bldhc21UZXN0cygpCiAgICAgICAgICAgICAweDBm
LCAweDA5LCAweDBmCiAgICAgICAgIH07CiAKLSAgICAgICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9y
KTsKKyAgICAgICAgUGxhbiBwbGFuKHZtLCB2ZWN0b3IpOwogICAgICAgICBjaGVja1BsYW4ocGxh
biwgMSk7CiAgICAgICAgIEFTU0VSVChwbGFuLm1lbW9yeSgpLT5zaXplKCkpOwogCkBAIC04Mjks
NyArODI3LDcgQEAgc3RhdGljIHZvaWQgcnVuV2FzbVRlc3RzKCkKICAgICAgICAgICAgIDB4MmUs
IDB4MDAsIDB4MDAsIDB4MTAsIDB4MDEsIDB4MTQsIDB4MDMsIDB4NDAsIDB4MTUsIDB4MDMsIDB4
MDYsIDB4MDAsIDB4MGYsIDB4MGYsIDB4MDksIDB4MGYKICAgICAgICAgfTsKIAotICAgICAgICBQ
bGFuIHBsYW4oKnZtLCB2ZWN0b3IpOworICAgICAgICBQbGFuIHBsYW4odm0sIHZlY3Rvcik7CiAg
ICAgICAgIGNoZWNrUGxhbihwbGFuLCAxKTsKICAgICAgICAgQVNTRVJUKHBsYW4ubWVtb3J5KCkt
PnNpemUoKSk7CiAKQEAgLTg3MCw3ICs4NjgsNyBAQCBzdGF0aWMgdm9pZCBydW5XYXNtVGVzdHMo
KQogICAgICAgICAgICAgMHgwMSwgMHgyMCwgMHgwMCwgMHgwMCwgMHgwOSwgMHgwZgogICAgICAg
ICB9OwogCi0gICAgICAgIFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7CisgICAgICAgIFBsYW4gcGxh
bih2bSwgdmVjdG9yKTsKICAgICAgICAgY2hlY2tQbGFuKHBsYW4sIDEpOwogICAgICAgICBBU1NF
UlQocGxhbi5tZW1vcnkoKS0+c2l6ZSgpKTsKIApAQCAtODk4LDcgKzg5Niw3IEBAIHN0YXRpYyB2
b2lkIHJ1bldhc21UZXN0cygpCiAgICAgICAgICAgICAweDIwLCAweDAwLCAweDAwLCAweDA5LCAw
eDBmCiAgICAgICAgIH07CiAKLSAgICAgICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9yKTsKKyAgICAg
ICAgUGxhbiBwbGFuKHZtLCB2ZWN0b3IpOwogICAgICAgICBjaGVja1BsYW4ocGxhbiwgMSk7CiAK
ICAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCkBAIC05MjUsNyArOTIzLDcgQEAg
c3RhdGljIHZvaWQgcnVuV2FzbVRlc3RzKCkKICAgICAgICAgICAgIDB4MDEsIDB4MmIsIDB4MDMs
IDB4MDAsIDB4MDksIDB4MGYKICAgICAgICAgfTsKIAotICAgICAgICBQbGFuIHBsYW4oKnZtLCB2
ZWN0b3IpOworICAgICAgICBQbGFuIHBsYW4odm0sIHZlY3Rvcik7CiAgICAgICAgIGNoZWNrUGxh
bihwbGFuLCAxKTsKIAogICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KQEAgLTk1
Myw3ICs5NTEsNyBAQCBzdGF0aWMgdm9pZCBydW5XYXNtVGVzdHMoKQogICAgICAgICAgICAgMHgw
MSwgMHgyYSwgMHgwMiwgMHgwMCwgMHgwOSwgMHgwZgogICAgICAgICB9OwogCi0gICAgICAgIFBs
YW4gcGxhbigqdm0sIHZlY3Rvcik7CisgICAgICAgIFBsYW4gcGxhbih2bSwgdmVjdG9yKTsKICAg
ICAgICAgY2hlY2tQbGFuKHBsYW4sIDEpOwogCiAgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0
IGNyYXNoLgpAQCAtOTkwLDcgKzk4OCw3IEBAIHN0YXRpYyB2b2lkIHJ1bldhc21UZXN0cygpCiAg
ICAgICAgICAgICAweDBmLCAweDA5LCAweDBmCiAgICAgICAgIH07CiAKLSAgICAgICAgUGxhbiBw
bGFuKCp2bSwgdmVjdG9yKTsKKyAgICAgICAgUGxhbiBwbGFuKHZtLCB2ZWN0b3IpOwogICAgICAg
ICBjaGVja1BsYW4ocGxhbiwgMSk7CiAgICAgICAgIEFTU0VSVChwbGFuLm1lbW9yeSgpLT5zaXpl
KCkpOwogCkBAIC0xMDQyLDcgKzEwNDAsNyBAQCBzdGF0aWMgdm9pZCBydW5XYXNtVGVzdHMoKQog
ICAgICAgICAgICAgMHgyZSwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMSwgMHgxNCwgMHgwMywgMHg0
MCwgMHgxNSwgMHgwMywgMHgwNiwgMHgwMCwgMHgwZiwgMHgwZiwgMHgwOSwgMHgwZgogICAgICAg
ICB9OwogCi0gICAgICAgIFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7CisgICAgICAgIFBsYW4gcGxh
bih2bSwgdmVjdG9yKTsKICAgICAgICAgY2hlY2tQbGFuKHBsYW4sIDEpOwogICAgICAgICBBU1NF
UlQocGxhbi5tZW1vcnkoKS0+c2l6ZSgpKTsKIApAQCAtMTA4Myw3ICsxMDgxLDcgQEAgc3RhdGlj
IHZvaWQgcnVuV2FzbVRlc3RzKCkKICAgICAgICAgICAgIDB4MDEsIDB4MjAsIDB4MDAsIDB4MDAs
IDB4MDksIDB4MGYKICAgICAgICAgfTsKIAotICAgICAgICBQbGFuIHBsYW4oKnZtLCB2ZWN0b3Ip
OworICAgICAgICBQbGFuIHBsYW4odm0sIHZlY3Rvcik7CiAgICAgICAgIGNoZWNrUGxhbihwbGFu
LCAxKTsKICAgICAgICAgQVNTRVJUKHBsYW4ubWVtb3J5KCktPnNpemUoKSk7CiAKQEAgLTExMTEs
NyArMTEwOSw3IEBAIHN0YXRpYyB2b2lkIHJ1bldhc21UZXN0cygpCiAgICAgICAgICAgICAweDIw
LCAweDAwLCAweDAwLCAweDA5LCAweDBmCiAgICAgICAgIH07CiAKLSAgICAgICAgUGxhbiBwbGFu
KCp2bSwgdmVjdG9yKTsKKyAgICAgICAgUGxhbiBwbGFuKHZtLCB2ZWN0b3IpOwogICAgICAgICBj
aGVja1BsYW4ocGxhbiwgMSk7CiAKICAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2gu
CkBAIC0xMTM4LDcgKzExMzYsNyBAQCBzdGF0aWMgdm9pZCBydW5XYXNtVGVzdHMoKQogICAgICAg
ICAgICAgMHgwMywgMHgwMCwgMHgwNiwgMHgwMCwgMHgwNCwgMHgxMCwgMHgwMSwgMHgwOSwgMHgw
ZiwgMHgxMCwgMHgwMCwgMHgwOSwgMHgwZgogICAgICAgICB9OwogCi0gICAgICAgIFBsYW4gcGxh
bigqdm0sIHZlY3Rvcik7CisgICAgICAgIFBsYW4gcGxhbih2bSwgdmVjdG9yKTsKICAgICAgICAg
Y2hlY2tQbGFuKHBsYW4sIDEpOwogCiAgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNo
LgpAQCAtMTE3Niw3ICsxMTc0LDcgQEAgc3RhdGljIHZvaWQgcnVuV2FzbVRlc3RzKCkKICAgICAg
ICAgICAgIDB4MTUsIDB4MDAsIDB4MDYsIDB4MDAsIDB4MGYsIDB4MDAsIDB4MGYKICAgICAgICAg
fTsKIAotICAgICAgICBQbGFuIHBsYW4oKnZtLCB2ZWN0b3IpOworICAgICAgICBQbGFuIHBsYW4o
dm0sIHZlY3Rvcik7CiAgICAgICAgIGNoZWNrUGxhbihwbGFuLCAxKTsKIAogICAgICAgICAvLyBU
ZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KQEAgLTEyMDAsNyArMTE5OCw3IEBAIHN0YXRpYyB2b2lk
IHJ1bldhc21UZXN0cygpCiAgICAgICAgICAgICAweDhiLCAweDgwLCAweDgwLCAweDgwLCAweDAw
LCAweDAxLCAweDg1LCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAwLCAweDEwLCAweDA1LCAw
eDA5LCAweDBmCiAgICAgICAgIH07CiAKLSAgICAgICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9yKTsK
KyAgICAgICAgUGxhbiBwbGFuKHZtLCB2ZWN0b3IpOwogICAgICAgICBjaGVja1BsYW4ocGxhbiwg
MSk7CiAKICAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCkBAIC0xMjE4LDcgKzEy
MTYsNyBAQCBzdGF0aWMgdm9pZCBydW5XYXNtVGVzdHMoKQogICAgICAgICAgICAgMHg0MCwgMHgw
OSwgMHgwZgogICAgICAgICB9OwogCi0gICAgICAgIFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7Cisg
ICAgICAgIFBsYW4gcGxhbih2bSwgdmVjdG9yKTsKICAgICAgICAgY2hlY2tQbGFuKHBsYW4sIDEp
OwogCiAgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgpAQCAtMTIzNSw3ICsxMjMz
LDcgQEAgc3RhdGljIHZvaWQgcnVuV2FzbVRlc3RzKCkKICAgICAgICAgICAgIDB4NDAsIDB4MTAs
IDB4MDMsIDB4NDAsIDB4MDksIDB4MGYKICAgICAgICAgfTsKIAotICAgICAgICBQbGFuIHBsYW4o
KnZtLCB2ZWN0b3IpOworICAgICAgICBQbGFuIHBsYW4odm0sIHZlY3Rvcik7CiAgICAgICAgIGNo
ZWNrUGxhbihwbGFuLCAxKTsKIAogICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4K
QEAgLTEyNTIsNyArMTI1MCw3IEBAIHN0YXRpYyB2b2lkIHJ1bldhc21UZXN0cygpCiAgICAgICAg
ICAgICAweDEwLCAweDAzLCAweDQwLCAweDEwLCAweDAzLCAweDQwLCAweDA5LCAweDBmLCAweDAw
LCAweDBmCiAgICAgICAgIH07CiAKLSAgICAgICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9yKTsKKyAg
ICAgICAgUGxhbiBwbGFuKHZtLCB2ZWN0b3IpOwogICAgICAgICBjaGVja1BsYW4ocGxhbiwgMSk7
CiAKICAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCkBAIC0xMjY4LDcgKzEyNjYs
NyBAQCBzdGF0aWMgdm9pZCBydW5XYXNtVGVzdHMoKQogICAgICAgICAgICAgMHgwMSwgMHg4OCwg
MHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgwMCwgMHgxNCwgMHgwMSwgMHg0
MCwgMHgwOSwgMHgwZgogICAgICAgICB9OwogCi0gICAgICAgIFBsYW4gcGxhbigqdm0sIHZlY3Rv
cik7CisgICAgICAgIFBsYW4gcGxhbih2bSwgdmVjdG9yKTsKICAgICAgICAgY2hlY2tQbGFuKHBs
YW4sIDEpOwogCiAgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgpAQCAtMTI5NCw3
ICsxMjkyLDcgQEAgc3RhdGljIHZvaWQgcnVuV2FzbVRlc3RzKCkKICAgICAgICAgICAgIDB4MDEs
IDB4MDksIDB4MGYKICAgICAgICAgfTsKIAotICAgICAgICBQbGFuIHBsYW4oKnZtLCB2ZWN0b3Ip
OworICAgICAgICBQbGFuIHBsYW4odm0sIHZlY3Rvcik7CiAgICAgICAgIGNoZWNrUGxhbihwbGFu
LCAxKTsKIAogICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KQEAgLTEzMjcsNyAr
MTMyNSw3IEBAIHN0YXRpYyB2b2lkIHJ1bldhc21UZXN0cygpCiAgICAgICAgICAgICAweDEwLCAw
eDAxLCAweDQxLCAweDE1LCAweDAwLCAweDA2LCAweDAxLCAweDBmLCAweDBmLCAweDE0LCAweDAx
LCAweDA5LCAweDBmCiAgICAgICAgIH07CiAKLSAgICAgICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9y
KTsKKyAgICAgICAgUGxhbiBwbGFuKHZtLCB2ZWN0b3IpOwogICAgICAgICBjaGVja1BsYW4ocGxh
biwgMSk7CiAKICAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCkBAIC0xMzY4LDcg
KzEzNjYsNyBAQCBzdGF0aWMgdm9pZCBydW5XYXNtVGVzdHMoKQogICAgICAgICAgICAgMHgwMSwg
MHg0MCwgMHgxNSwgMHgwNCwgMHgwNiwgMHgwMCwgMHgwZiwgMHgwZiwgMHgwZiwgMHgxNCwgMHgw
MiwgMHgwOSwgMHgwZgogICAgICAgICB9OwogCi0gICAgICAgIFBsYW4gcGxhbigqdm0sIHZlY3Rv
cik7CisgICAgICAgIFBsYW4gcGxhbih2bSwgdmVjdG9yKTsKICAgICAgICAgY2hlY2tQbGFuKHBs
YW4sIDEpOwogCiAgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgpAQCAtMTQxOCw3
ICsxNDE2LDcgQEAgc3RhdGljIHZvaWQgcnVuV2FzbVRlc3RzKCkKICAgICAgICAgICAgIDB4MDAs
IDB4MGYsIDB4MDAsIDB4MGYKICAgICAgICAgfTsKIAotICAgICAgICBQbGFuIHBsYW4oKnZtLCB2
ZWN0b3IpOworICAgICAgICBQbGFuIHBsYW4odm0sIHZlY3Rvcik7CiAgICAgICAgIGNoZWNrUGxh
bihwbGFuLCAxKTsKIAogICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAppbmRleCA1
ODNmYjgyZDU3NGExMGJkYjQwZThhM2QwODViODI4NzI2ZDM2YjFjLi45NDczYjM3OWVlODhmYjg4
ZTUzNGZiOGIyNmRkZmQ4Mzg5NzkwNGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCkBAIC03NjAsNiArNzYwLDggQEAgc3RkOjp1bmlx
dWVfcHRyPEZ1bmN0aW9uQ29tcGlsYXRpb24+IHBhcnNlQW5kQ29tcGlsZShWTSYgdm0sIGNvbnN0
IHVpbnQ4X3QqIGZ1bmMKICAgICBwcm9jZWR1cmUucmVzZXRSZWFjaGFiaWxpdHkoKTsKICAgICB2
YWxpZGF0ZShwcm9jZWR1cmUsICJBZnRlciBwYXJzaW5nOlxuIik7CiAKKyAgICBpZiAodmVyYm9z
ZSkKKyAgICAgICAgZGF0YUxvZygiUHJlIFNTQTogIiwgcHJvY2VkdXJlKTsKICAgICBmaXhTU0Eo
cHJvY2VkdXJlKTsKICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiUG9zdCBTU0E6
ICIsIHByb2NlZHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtRnVuY3Rpb25QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5j
dGlvblBhcnNlci5oCmluZGV4IDE4NTIyNGI0OTQ1YjM3NWRjOTFiNzMxM2NiOWE2NjYzMmJlY2E2
OTMuLmU3MTc2ZDg5ZDllMWVkOGQwZTY2NTk2YzU3ZjM0ODhkMGM5MzQ4ZGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvblBhcnNlci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvblBhcnNlci5oCkBAIC01Nyw3ICs1
Nyw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9
IGZhbHNlOwogCi0gICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VCbG9jaygpOworICAg
IGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlQm9keSgpOwogICAgIGJvb2wgV0FSTl9VTlVT
RURfUkVUVVJOIHBhcnNlRXhwcmVzc2lvbihPcFR5cGUpOwogICAgIGJvb2wgV0FSTl9VTlVTRURf
UkVUVVJOIHBhcnNlVW5yZWFjaGFibGVFeHByZXNzaW9uKE9wVHlwZSk7CiAgICAgYm9vbCBXQVJO
X1VOVVNFRF9SRVRVUk4gYWRkUmV0dXJuKCk7CkBAIC0xMDksMTEgKzEwOSwxMSBAQCBib29sIEZ1
bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZSgpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogCi0gICAgcmV0dXJuIHBhcnNlQmxvY2soKTsKKyAgICByZXR1cm4gcGFyc2VCb2R5
KCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbnRleHQ+Ci1ib29sIEZ1bmN0aW9uUGFyc2Vy
PENvbnRleHQ+OjpwYXJzZUJsb2NrKCkKK2Jvb2wgRnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBh
cnNlQm9keSgpCiB7CiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgdWludDhfdCBvcDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGVQYXJzZXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZVBhcnNlci5jcHAKaW5kZXgg
YjAzNWI0NTMyOTdhZDRiZGE2MmMyOTQ4OWM4YzNjOGFmZWQxYjAyNC4uY2U0NmUwZDZkYmU0Nzhl
N2UzZTYwZGMyMTU2NDY1NGQwOWZjMmRmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbU1vZHVsZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbU1vZHVsZVBhcnNlci5jcHAKQEAgLTI5MSw2ICsyOTEsMTMgQEAgYm9vbCBNb2R1
bGVQYXJzZXI6OnBhcnNlVGFibGUoKQogCiBib29sIE1vZHVsZVBhcnNlcjo6cGFyc2VNZW1vcnko
KQogeworICAgIHVpbnQ4X3QgY291bnQ7CisgICAgaWYgKCFwYXJzZVZhclVJbnQxKGNvdW50KSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFjb3VudCkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisKICAgICB1aW50OF90IGZsYWdzOwogICAgIGlmICghcGFyc2VWYXJVSW50MShmbGFn
cykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM0NSw3ICszNTIsNyBAQCBib29sIE1vZHVs
ZVBhcnNlcjo6cGFyc2VFeHBvcnQoKQogICAgICAgICAgICAgdWludDMyX3QgZnVuY3Rpb25TaWdu
YXR1cmVJbmRleDsKICAgICAgICAgICAgIGlmICghcGFyc2VWYXJVSW50MzIoZnVuY3Rpb25TaWdu
YXR1cmVJbmRleCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAg
aWYgKGZ1bmN0aW9uU2lnbmF0dXJlSW5kZXggPiBtX21vZHVsZS0+c2lnbmF0dXJlcy5zaXplKCkp
CisgICAgICAgICAgICBpZiAoZnVuY3Rpb25TaWduYXR1cmVJbmRleCA+PSBtX21vZHVsZS0+c2ln
bmF0dXJlcy5zaXplKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAg
ICAgZS5mdW5jdGlvblNpZ25hdHVyZSA9ICZtX21vZHVsZS0+c2lnbmF0dXJlc1tmdW5jdGlvblNp
Z25hdHVyZUluZGV4XTsKICAgICAgICAgfSBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21QbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21QbGFuLmNwcAppbmRleCAwMzRiYzYwYzY4NjVhZTA5YjdiNDhlN2U3MTFiZjMzZDQ5OTkz
ZWQ2Li45ZjhlMGZhNGE0NzA5MWUzOGJjYmU4YTBlZDM1NWUxNTE5NGZjMDRlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGxhbi5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbVBsYW4uY3BwCkBAIC00MSwxNyArNDEsMjQgQEAgbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKIAogc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9
IGZhbHNlOwogICAgIAotUGxhbjo6UGxhbihWTSYgdm0sIFZlY3Rvcjx1aW50OF90PiBzb3VyY2Up
CitQbGFuOjpQbGFuKFZNKiB2bSwgVmVjdG9yPHVpbnQ4X3Q+IHNvdXJjZSkKICAgICA6IFBsYW4o
dm0sIHNvdXJjZS5kYXRhKCksIHNvdXJjZS5zaXplKCkpCiB7CiB9CiAKLVBsYW46OlBsYW4oVk0m
IHZtLCBjb25zdCB1aW50OF90KiBzb3VyY2UsIHNpemVfdCBzb3VyY2VMZW5ndGgpCitQbGFuOjpQ
bGFuKFZNKiB2bSwgY29uc3QgdWludDhfdCogc291cmNlLCBzaXplX3Qgc291cmNlTGVuZ3RoKQor
ICAgIDogbV92bSh2bSkKKyAgICAsIG1fc291cmNlKHNvdXJjZSkKKyAgICAsIG1fc291cmNlTGVu
Z3RoKHNvdXJjZUxlbmd0aCkKK3sKK30KKwordm9pZCBQbGFuOjpydW4oKQogewogICAgIGlmICh2
ZXJib3NlKQogICAgICAgICBkYXRhTG9nTG4oIlN0YXJ0aW5nIHBsYW4uIik7CiAgICAgewotICAg
ICAgICBNb2R1bGVQYXJzZXIgbW9kdWxlUGFyc2VyKHNvdXJjZSwgc291cmNlTGVuZ3RoKTsKKyAg
ICAgICAgTW9kdWxlUGFyc2VyIG1vZHVsZVBhcnNlcihtX3NvdXJjZSwgbV9zb3VyY2VMZW5ndGgp
OwogICAgICAgICBpZiAoIW1vZHVsZVBhcnNlci5wYXJzZSgpKSB7CiAgICAgICAgICAgICBpZiAo
dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nTG4oIlBhcnNpbmcgbW9kdWxlIGZhaWxl
ZDogIiwgbW9kdWxlUGFyc2VyLmVycm9yTWVzc2FnZSgpKTsKQEAgLTc1LDE3ICs4MiwyMiBAQCBQ
bGFuOjpQbGFuKFZNJiB2bSwgY29uc3QgdWludDhfdCogc291cmNlLCBzaXplX3Qgc291cmNlTGVu
Z3RoKQogICAgIGZvciAoY29uc3QgRnVuY3Rpb25JbmZvcm1hdGlvbiYgaW5mbyA6IG1fbW9kdWxl
SW5mb3JtYXRpb24tPmZ1bmN0aW9ucykgewogICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAg
ICAgIGRhdGFMb2dMbigiUHJvY2Vzc2luZyBmdW5jdGlvbiBzdGFydGluZyBhdDogIiwgaW5mby5z
dGFydCwgIiBhbmQgZW5kaW5nIGF0OiAiLCBpbmZvLmVuZCk7Ci0gICAgICAgIGNvbnN0IHVpbnQ4
X3QqIGZ1bmN0aW9uU3RhcnQgPSBzb3VyY2UgKyBpbmZvLnN0YXJ0OworICAgICAgICBjb25zdCB1
aW50OF90KiBmdW5jdGlvblN0YXJ0ID0gbV9zb3VyY2UgKyBpbmZvLnN0YXJ0OwogICAgICAgICBz
aXplX3QgZnVuY3Rpb25MZW5ndGggPSBpbmZvLmVuZCAtIGluZm8uc3RhcnQ7Ci0gICAgICAgIEFT
U0VSVChmdW5jdGlvbkxlbmd0aCA8PSBzb3VyY2VMZW5ndGgpOworICAgICAgICBBU1NFUlQoZnVu
Y3Rpb25MZW5ndGggPD0gbV9zb3VyY2VMZW5ndGgpOwogCiAgICAgICAgIFN0cmluZyBlcnJvciA9
IHZhbGlkYXRlRnVuY3Rpb24oZnVuY3Rpb25TdGFydCwgZnVuY3Rpb25MZW5ndGgsIGluZm8uc2ln
bmF0dXJlLCBtX21vZHVsZUluZm9ybWF0aW9uLT5mdW5jdGlvbnMpOwogICAgICAgICBpZiAoIWVy
cm9yLmlzTnVsbCgpKSB7CisgICAgICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmdW5jdGlvbkxlbmd0aDsgKytpKQorICAgICAg
ICAgICAgICAgICAgICBkYXRhTG9nKFJhd1BvaW50ZXIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
ZnVuY3Rpb25TdGFydFtpXSkpLCAiLCAiKTsKKyAgICAgICAgICAgICAgICBkYXRhTG9nTG4oKTsK
KyAgICAgICAgICAgIH0KICAgICAgICAgICAgIG1fZXJyb3JNZXNzYWdlID0gZXJyb3I7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBtX2NvbXBpbGVkRnVuY3Rpb25z
LnVuY2hlY2tlZEFwcGVuZChwYXJzZUFuZENvbXBpbGUodm0sIGZ1bmN0aW9uU3RhcnQsIGZ1bmN0
aW9uTGVuZ3RoLCBtX21vZHVsZUluZm9ybWF0aW9uLT5tZW1vcnkuZ2V0KCksIGluZm8uc2lnbmF0
dXJlLCBtX21vZHVsZUluZm9ybWF0aW9uLT5mdW5jdGlvbnMpKTsKKyAgICAgICAgbV9jb21waWxl
ZEZ1bmN0aW9ucy51bmNoZWNrZWRBcHBlbmQocGFyc2VBbmRDb21waWxlKCptX3ZtLCBmdW5jdGlv
blN0YXJ0LCBmdW5jdGlvbkxlbmd0aCwgbV9tb2R1bGVJbmZvcm1hdGlvbi0+bWVtb3J5LmdldCgp
LCBpbmZvLnNpZ25hdHVyZSwgbV9tb2R1bGVJbmZvcm1hdGlvbi0+ZnVuY3Rpb25zKSk7CiAgICAg
fQogCiAgICAgLy8gUGF0Y2ggdGhlIGNhbGwgc2l0ZXMgZm9yIGVhY2ggZnVuY3Rpb24uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGxhbi5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbVBsYW4uaAppbmRleCBkN2MwM2FiYjk0NjEyODUwMTEzZWMz
MWZjNmEwMmRmZDk4ZGM2OTUwLi5jNWRlMTk5MjFlMGUzY2Y2ZDJlYTA0YjdmMmZlYmY2ODZhMjBm
ZWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGxhbi5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QbGFuLmgKQEAgLTM4LDEwICszOCwx
MiBAQCBjbGFzcyBNZW1vcnk7CiAKIGNsYXNzIFBsYW4gewogcHVibGljOgotICAgIEpTX0VYUE9S
VF9QUklWQVRFIFBsYW4oVk0mLCBWZWN0b3I8dWludDhfdD4pOwotICAgIEpTX0VYUE9SVF9QUklW
QVRFIFBsYW4oVk0mLCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAgICBKU19FWFBPUlRfUFJJ
VkFURSBQbGFuKFZNKiwgVmVjdG9yPHVpbnQ4X3Q+KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBQ
bGFuKFZNKiwgY29uc3QgdWludDhfdCosIHNpemVfdCk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
flBsYW4oKTsKIAorICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcnVuKCk7CisKICAgICBib29s
IFdBUk5fVU5VU0VEX1JFVFVSTiBmYWlsZWQoKSBjb25zdCB7IHJldHVybiBtX2ZhaWxlZDsgfQog
ICAgIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKCkgY29uc3QKICAgICB7CkBAIC03OSw2ICs4
MSw5IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPE1vZHVsZUluZm9ybWF0aW9uPiBt
X21vZHVsZUluZm9ybWF0aW9uOwogICAgIENvbXBpbGVkRnVuY3Rpb25zIG1fY29tcGlsZWRGdW5j
dGlvbnM7CiAKKyAgICBWTSogbV92bTsKKyAgICBjb25zdCB1aW50OF90KiBtX3NvdXJjZTsKKyAg
ICBjb25zdCBzaXplX3QgbV9zb3VyY2VMZW5ndGg7CiAgICAgYm9vbCBtX2ZhaWxlZCB7IHRydWUg
fTsKICAgICBTdHJpbmcgbV9lcnJvck1lc3NhZ2U7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9y
LmNwcAppbmRleCBiYjY4NGUxZTI0MzJjMzAyZDFhYTNlNjM5YThmYzAxNjIwOTc3NzlhLi5mMDNh
MGE4YmIxMWJkY2I3ZDcwN2ViZGU5YTFiNjNlMmRjMzdmNWU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZUNvbnN0
cnVjdG9yLmNwcApAQCAtNjgsOCArNjgsOSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5TW9kdWxlKEV4ZWNTdGF0ZSogc3RhdAogICAg
IHNpemVfdCBieXRlU2l6ZSA9IGFycmF5QnVmZmVyVmlldyA/IGFycmF5QnVmZmVyVmlldy0+bGVu
Z3RoKCkgOiBhcnJheUJ1ZmZlci0+aW1wbCgpLT5ieXRlTGVuZ3RoKCk7CiAgICAgY29uc3QgYXV0
byogYmFzZSA9IGFycmF5QnVmZmVyVmlldyA/IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihhcnJheUJ1
ZmZlclZpZXctPnZlY3RvcigpKSA6IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihhcnJheUJ1ZmZlci0+
aW1wbCgpLT5kYXRhKCkpOwogCi0gICAgV2FzbTo6UGxhbiBwbGFuKHZtLCBiYXNlICsgYnl0ZU9m
ZnNldCwgYnl0ZVNpemUpOworICAgIFdhc206OlBsYW4gcGxhbigmdm0sIGJhc2UgKyBieXRlT2Zm
c2V0LCBieXRlU2l6ZSk7CiAgICAgLy8gT24gZmFpbHVyZSwgYSBuZXcgV2ViQXNzZW1ibHkuQ29t
cGlsZUVycm9yIGlzIHRocm93bi4KKyAgICBwbGFuLnJ1bigpOwogICAgIGlmIChwbGFuLmZhaWxl
ZCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKHN0YXRl
LCBzY29wZSwgY3JlYXRlV2ViQXNzZW1ibHlDb21waWxlRXJyb3Ioc3RhdGUsIHBsYW4uZXJyb3JN
ZXNzYWdlKCkpKSk7CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggNzdhMWNjMzdhN2MyZmI2Mjc1N2VmNDBlMmYyZDRmMzk3OWIyMWU5MC4u
NjAxM2I2YzY3NWZiN2I4NTg1MGY5MTMzZTRlYTkyMzYxOTY5MDQzOCAxMDA2NDQKLS0tIGEvSlNU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3NiBAQAor
MjAxNi0xMS0xMSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KKworICAg
ICAgICBNb3ZlIFdhc20gdGVzdHMgdG8gSlMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2NDYxMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggdHJhbnNsYXRlcyBtb3N0IG9mIHRoZSB0ZXN0
cyBmcm9tIHRlc3RXYXNtLmNwcCB0byB0aGUgSlMgdGVzdGluZyBhcGkuIE1vc3Qgb2YgdGhlCisg
ICAgICAgIG9tbWl0ZWQgdGVzdHMgd2VyZSBlYXJsaWVzdCB0ZXN0cywgd2hpY2ggdGVzdGVkIHRy
aXZpYWwgdGhpbmdzLCBsaWtlIGFkZGluZyB0d28KKyAgICAgICAgY29uc3RhbnRzLiBTb21lIHRl
c3RzIGFyZSBvbW1pdGVkIGZvciBvdGhlciByZWFzb25zLCBob3dldmVyLiBUaGVzZSBhcmU6CisK
KyAgICAgICAgMSkgVGVzdHMgdXNpbmcgSTY0IHNpbmNlIHRoZSB0ZXN0aW5nIGFwaSBkb2VzIG5v
dCB5ZXQga25vdyBob3cgdG8gaGFuZGxlIDY0LWJpdCBudW1iZXJzLiAgMikKKyAgICAgICAgVGVz
dHMgdGhhdCB3b3VsZCB2YWxpZGF0ZSB0aGUgbWVtb3J5IG9mIHRoZSBtb2R1bGUgb25jZSB3YXNt
IHdhcyBkb25lIHdpdGggaXQgc2luY2UgdGhhdCdzCisgICAgICAgIG5vdCByZWFsbHkgcG9zc2li
bGUgaW4gSlMuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gbWFrZSBzdWNoIGEgdHJhbnNsYXRpb24g
ZWFzaWVyIHRoaXMgcGF0Y2ggYWxzbyBhZGRzIHNvbWUgZmVhdHVyZXMgdG8gdGhlIEpTCisgICAg
ICAgIHRlc3RpbmcgYXBpOgorCisgICAgICAgIDEpIEJsb2NrcyBjYW4gbm93IGJlIGRvbmUgbGV4
aWNhbGx5IGJ5IGFkZGluZyBhIGxhbWJkYSBhcyB0aGUgbGFzdCBhcmd1bWVudCBvZiB0aGUgYmxv
Y2sKKyAgICAgICAgb3Bjb2RlLiBGb3IgZXhhbXBsZSBvbmUgY2FuIGRvOgorICAgICAgICAgICAg
Li4uCisgICAgICAgICAgICAuQmxvY2soImkzMiIsIGIgPT4gYi5JMzJDb25zdCgxKSApCisKKyAg
ICAgICAgYW5kIHRoZSBuZXN0ZWQgbGFtYmRhIHdpbGwgYXV0b21hdGljYWxseSBoYXZlIGFuIGVu
ZCBhdHRhY2hlZC4KKworICAgICAgICAyKSBUaGUgSlMgdGVzdGluZyBhcGkgY2FuIG5vdyBoYW5k
bGUgaW5saW5lIHNpZ25hdHVyZSB0eXBlcy4KKworICAgICAgICAzKSBSZWxvY2F0ZSBzb21lIGNv
ZGUgdG8gbWFrZSBpdCBlYXNpZXIgdG8gZm9sbG93IGFuZCBwcmV2ZW50IDQ0IHNwYWNlIGluZGVu
dGF0aW9uLgorCisgICAgICAgIDQpIFJlbmFtZSB2YXJ1aW50L3ZhcmludCB0byB2YXJ1aW50MzIv
dmFyaW50MzIsIHRoaXMgbGV0cyB0aGVtIGJlIGRpcmVjdGx5IGNhbGxlZCBmcm9tIHRoZQorICAg
ICAgICB3YXNtLmpzb24gd2l0aG91dCBiZWluZyByZW1hcHBlZC4KKworICAgICAgICA1KSBBZGQg
c3VwcG9ydCBmb3IgTWVtb3J5IGFuZCBGdW5jdGlvbiBzZWN0aW9ucyB0byB0aGUgQnVpbGRlci4K
KworICAgICAgICA2KSBBZGQgc3VwcG9ydCBmb3IgbG9jYWwgdmFyaWFibGVzLgorCisgICAgICAg
IE9uIHRoZSBKU0Mgc2lkZSwgd2UgbmVlZGVkIHRvIGV4cG9zZSBhIG5ldyBmdW5jdGlvbiB0byB2
YWxpZGF0ZSB0aGUgY29tcGlsZWQgd2FzbSBjb2RlCisgICAgICAgIGJlaGF2ZXMgdGhlIHdheSB3
ZSBleHBlY3QuIEF0IGxlYXN0IHVudGlsIHRoZSBKUyBXYXNtIEFQSSBpcyBmaW5pc2hlZC4gVGhl
IG5ldyB2YWxpZGF0aW9uCisgICAgICAgIGZ1bmN0aW9uLCB0ZXN0V2FzbU1vZHVsZUZ1bmN0aW9u
cywgdGFrZXMgYW4gYXJyYXkgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIHdhc20gYmluYXJ5LCB0aGUK
KyAgICAgICAgbnVtYmVyIG9mIGZ1bmN0aW9ucyBpbiB0aGUgYmxvYiBhbmQgdGVzdHMgZm9yIGVh
Y2ggb2YgdGhvc2UgZnVuY3Rpb25zLgorCisgICAgICAgICogd2FzbS9CdWlsZGVyLmpzOgorICAg
ICAgICAoY29uc3QuX21heWJlUmVnaXN0ZXJUeXBlKToKKyAgICAgICAgKGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKHN3aXRjaC50eXBlb2YpOiBEZWxldGVkLgorICAgICAgICAqIHdhc20vQnVp
bGRlcl9XZWJBc3NlbWJseUJpbmFyeS5qczoKKyAgICAgICAgKGNvbnN0LmVtaXR0ZXJzLlR5cGUp
OgorICAgICAgICAoY29uc3QuZW1pdHRlcnMuSW1wb3J0KToKKyAgICAgICAgKGNvbnN0LmVtaXR0
ZXJzLkZ1bmN0aW9uKToKKyAgICAgICAgKGNvbnN0LmVtaXR0ZXJzLk1lbW9yeSk6CisgICAgICAg
IChjb25zdC5lbWl0dGVycy5Db2RlKToKKyAgICAgICAgKGV4cG9ydC5jb25zdC5CaW5hcnkpOgor
ICAgICAgICAqIHdhc20vTG93TGV2ZWxCaW5hcnkuanM6CisgICAgICAgIChleHBvcnQuZGVmYXVs
dC5Mb3dMZXZlbEJpbmFyeS5wcm90b3R5cGUuZ2V0IHJldHVybik6CisgICAgICAgIChleHBvcnQu
ZGVmYXVsdC5Mb3dMZXZlbEJpbmFyeS5wcm90b3R5cGUudmFydWludDMyKToKKyAgICAgICAgKGV4
cG9ydC5kZWZhdWx0Lkxvd0xldmVsQmluYXJ5LnByb3RvdHlwZS52YXJpbnQzMik6CisgICAgICAg
IChleHBvcnQuZGVmYXVsdC5Mb3dMZXZlbEJpbmFyeS5wcm90b3R5cGUudmFydWludDEpOgorICAg
ICAgICAoZXhwb3J0LmRlZmF1bHQuTG93TGV2ZWxCaW5hcnkucHJvdG90eXBlLnZhcmludDcpOgor
ICAgICAgICAoZXhwb3J0LmRlZmF1bHQuTG93TGV2ZWxCaW5hcnkucHJvdG90eXBlLnZhcnVpbnQ3
KToKKyAgICAgICAgKGV4cG9ydC5kZWZhdWx0Lkxvd0xldmVsQmluYXJ5LnByb3RvdHlwZS5pbmxp
bmVfc2lnbmF0dXJlX3R5cGUpOgorICAgICAgICAoZXhwb3J0LmRlZmF1bHQuTG93TGV2ZWxCaW5h
cnkucHJvdG90eXBlLnN0cmluZyk6CisgICAgICAgIChleHBvcnQuZGVmYXVsdC5Mb3dMZXZlbEJp
bmFyeS5wcm90b3R5cGUuZ2V0VmFydWludDMyKToKKyAgICAgICAgKGV4cG9ydC5kZWZhdWx0Lkxv
d0xldmVsQmluYXJ5LnByb3RvdHlwZS5nZXRWYXJpbnQzMik6CisgICAgICAgIChleHBvcnQuZGVm
YXVsdC5Mb3dMZXZlbEJpbmFyeS5wcm90b3R5cGUuZ2V0VmFydWludDcpOgorICAgICAgICAoZXhw
b3J0LmRlZmF1bHQuTG93TGV2ZWxCaW5hcnkucHJvdG90eXBlLmdldFN0cmluZyk6CisgICAgICAg
IChleHBvcnQuZGVmYXVsdC5Mb3dMZXZlbEJpbmFyeSk6CisgICAgICAgIChleHBvcnQuZGVmYXVs
dC5Mb3dMZXZlbEJpbmFyeS5wcm90b3R5cGUudmFydWludCk6IERlbGV0ZWQuCisgICAgICAgIChl
eHBvcnQuZGVmYXVsdC5Mb3dMZXZlbEJpbmFyeS5wcm90b3R5cGUudmFyaW50KTogRGVsZXRlZC4K
KyAgICAgICAgKGV4cG9ydC5kZWZhdWx0Lkxvd0xldmVsQmluYXJ5LnByb3RvdHlwZS5nZXRWYXJ1
aW50KTogRGVsZXRlZC4KKyAgICAgICAgKGV4cG9ydC5kZWZhdWx0Lkxvd0xldmVsQmluYXJ5LnBy
b3RvdHlwZS5nZXRWYXJpbnQpOiBEZWxldGVkLgorICAgICAgICAqIHdhc20vc2VsZi10ZXN0L3Rl
c3RfTG93TGV2ZWxCaW5hcnlfdmFyaW50MzIuanM6IFJlbmFtZWQgZnJvbSBKU1Rlc3RzL3dhc20v
c2VsZi10ZXN0L3Rlc3RfTG93TGV2ZWxCaW5hcnlfdmFyaW50LmpzLgorICAgICAgICAqIHdhc20v
c2VsZi10ZXN0L3Rlc3RfTG93TGV2ZWxCaW5hcnlfdmFydWludDMyLmpzOiBSZW5hbWVkIGZyb20g
SlNUZXN0cy93YXNtL3NlbGYtdGVzdC90ZXN0X0xvd0xldmVsQmluYXJ5X3ZhcnVpbnQuanMuCisK
IDIwMTYtMTEtMDkgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAg
TWF0aC5taW4oKS9NYXRoLm1heCgpIHdpdGggbm8gYXJndW1lbnRzIGlzIGxvd2VyZWQgaW5jb3Jy
ZWN0bHkgaW4gdGhlIEJ5dGVjb2RlUGFyc2VyCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vQnVp
bGRlci5qcyBiL0pTVGVzdHMvd2FzbS9CdWlsZGVyLmpzCmluZGV4IGQxZTQ3Njg0MjIzOGMyMzY4
Yzc1MzNiMzZmMjcyODFkNDM2NmEyYTguLjc2Zjk3YjQ3ZjQ1ODg0M2NiNzg4YTUwMTRiYzYzMTk0
OGFiMDg1NmQgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9CdWlsZGVyLmpzCisrKyBiL0pTVGVz
dHMvd2FzbS9CdWlsZGVyLmpzCkBAIC02MCwxNCArNjAsMTQgQEAgY29uc3QgX21heWJlUmVnaXN0
ZXJUeXBlID0gKGJ1aWxkZXIsIHR5cGUpID0+IHsKICAgICBpZiAodHlwZW9mKHR5cGUpID09PSAi
bnVtYmVyIikgewogICAgICAgICAvLyBUeXBlIG51bWJlcnMgYWxyZWFkeSByZWZlciB0byB0aGUg
dHlwZSBzZWN0aW9uLCBubyBuZWVkIHRvIHJlZ2lzdGVyIHRoZW0uCiAgICAgICAgIGlmIChidWls
ZGVyLl9jaGVja2VkKSB7Ci0gICAgICAgICAgICBhc3NlcnQuaXNOb3RVbmRlZih0eXBlU2VjdGlv
biwgYENhbid0IHVzZSB0eXBlICR7dHlwZX0gaWYgYSB0eXBlIHNlY3Rpb24gaXNuJ3QgcHJlc2Vu
dGApOwotICAgICAgICAgICAgYXNzZXJ0LmlzTm90VW5kZWYodHlwZVNlY3Rpb24uZGF0YVt0eXBl
XSwgYFR5cGUgJHt0eXBlfSBkb2Vzbid0IGV4aXN0IGluIHR5cGUgc2VjdGlvbmApOworICAgICAg
ICAgICAgYXNzZXJ0LmlzTm90VW5kZWYodHlwZVNlY3Rpb24sIGBDYW4gbm90IHVzZSB0eXBlICR7
dHlwZX0gaWYgYSB0eXBlIHNlY3Rpb24gaXMgbm90IHByZXNlbnRgKTsKKyAgICAgICAgICAgIGFz
c2VydC5pc05vdFVuZGVmKHR5cGVTZWN0aW9uLmRhdGFbdHlwZV0sIGBUeXBlICR7dHlwZX0gZG9l
cyBub3QgZXhpc3QgaW4gdHlwZSBzZWN0aW9uYCk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJu
IHR5cGU7CiAgICAgfQogICAgIGFzc2VydC5oYXNPYmplY3RQcm9wZXJ0eSh0eXBlLCAicGFyYW1z
IiwgYEV4cGVjdGVkIHR5cGUgdG8gYmUgYSBudW1iZXIgb3Igb2JqZWN0IHdpdGggJ3BhcmFtcycg
YW5kIG9wdGlvbmFsbHkgJ3JldCcgZmllbGRzYCk7CiAgICAgY29uc3QgW3BhcmFtcywgcmV0XSA9
IF9ub3JtYWxpemVGdW5jdGlvblNpZ25hdHVyZSh0eXBlLnBhcmFtcywgdHlwZS5yZXQpOwotICAg
IGFzc2VydC5pc05vdFVuZGVmKHR5cGVTZWN0aW9uLCBgQ2FuJ3QgYWRkIHR5cGUgaWYgYSB0eXBl
IHNlY3Rpb24gaXNuJ3QgcHJlc2VudGApOworICAgIGFzc2VydC5pc05vdFVuZGVmKHR5cGVTZWN0
aW9uLCBgQ2FuIG5vdCBhZGQgdHlwZSBpZiBhIHR5cGUgc2VjdGlvbiBpcyBub3QgcHJlc2VudGAp
OwogICAgIC8vIFRyeSByZXVzaW5nIGFuIGVxdWl2YWxlbnQgdHlwZSBmcm9tIHRoZSB0eXBlIHNl
Y3Rpb24uCiAgICAgdHlwZXM6CiAgICAgZm9yIChsZXQgaSA9IDA7IGkgIT09IHR5cGVTZWN0aW9u
LmRhdGEubGVuZ3RoOyArK2kpIHsKQEAgLTE1NCw2ICsxNTQsMTU2IEBAIGNvbnN0IF9leHBvcnRG
dW5jdGlvbkNvbnRpbnVhdGlvbiA9IChidWlsZGVyLCBzZWN0aW9uLCBuZXh0QnVpbGRlcikgPT4g
ewogICAgIH07CiB9OwogCitjb25zdCBfY2hlY2tTdGFja0FyZ3MgPSAob3AsIHBhcmFtKSA9PiB7
CisgICAgZm9yIChsZXQgZXhwZWN0IG9mIHBhcmFtbikgeworICAgICAgICBpZiAoV0FTTS5pc1Zh
bGlkVmFsdWVUeXBlKGV4cGVjdCkpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FIGltcGxlbWVudCBz
dGFjayBjaGVja3MgZm9yIGFyZ3VtZW50cy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2MzQyMQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gSGFuZGxl
IG91ciBvd24gbWV0YS10eXBlcy4KKyAgICAgICAgICAgIHN3aXRjaCAoZXhwZWN0KSB7CisgICAg
ICAgICAgICBjYXNlICJhZGRyIjogYnJlYWs7IC8vIEZJWE1FIGltcGxlbWVudCBhZGRyLiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDIxCisgICAgICAgICAgICBj
YXNlICJhbnkiOiBicmVhazsgLy8gRklYTUUgaW1wbGVtZW50IGFueS4gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzQyMQorICAgICAgICAgICAgY2FzZSAiYm9vbCI6
IGJyZWFrOyAvLyBGSVhNRSBpbXBsZW1lbnQgYm9vbC4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2MzQyMQorICAgICAgICAgICAgY2FzZSAiY2FsbCI6IGJyZWFrOyAv
LyBGSVhNRSBpbXBsZW1lbnQgY2FsbCBzdGFjayBhcmd1bWVudCBjaGVja3MgYmFzZWQgb24gZnVu
Y3Rpb24gc2lnbmF0dXJlLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTYzNDIxCisgICAgICAgICAgICBjYXNlICJnbG9iYWwiOiBicmVhazsgLy8gRklYTUUgaW1wbGVt
ZW50IGdsb2JhbC4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzQy
MQorICAgICAgICAgICAgY2FzZSAibG9jYWwiOiBicmVhazsgLy8gRklYTUUgaW1wbGVtZW50IGxv
Y2FsLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDIxCisgICAg
ICAgICAgICBjYXNlICJwcmV2IjogYnJlYWs7IC8vIEZJWE1FIGltcGxlbWVudCBwcmV2LCBjaGVj
a2luZyBmb3Igd2hldGV2ZXIgdGhlIHByZXZpb3VzIHZhbHVlIHdhcy4gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzQyMQorICAgICAgICAgICAgY2FzZSAic2l6ZSI6
IGJyZWFrOyAvLyBGSVhNRSBpbXBsZW1lbnQgc2l6ZS4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2MzQyMQorICAgICAgICAgICAgZGVmYXVsdDogdGhyb3cgbmV3IEVy
cm9yKGBJbXBsZW1lbnRhdGlvbiBwcm9ibGVtOiB1bmhhbmRsZWQgbWV0YS10eXBlICIke2V4cGVj
dH0iIG9uICIke29wfSJgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwor
Y29uc3QgX2NoZWNrU3RhY2tSZXR1cm4gPSAob3AsIHJldCkgPT4geworICAgIGZvciAobGV0IGV4
cGVjdCBvZiByZXQpIHsKKyAgICAgICAgaWYgKFdBU00uaXNWYWxpZFZhbHVlVHlwZShleHBlY3Qp
KSB7CisgICAgICAgICAgICAvLyBGSVhNRSBpbXBsZW1lbnQgc3RhY2sgY2hlY2tzIGZvciByZXR1
cm4uIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM0MjEKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIEhhbmRsZSBvdXIgb3duIG1ldGEtdHlwZXMuCisg
ICAgICAgICAgICBzd2l0Y2ggKGV4cGVjdCkgeworICAgICAgICAgICAgY2FzZSAiYm9vbCI6IGJy
ZWFrOyAvLyBGSVhNRSBpbXBsZW1lbnQgYm9vbC4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2MzQyMQorICAgICAgICAgICAgY2FzZSAiY2FsbCI6IGJyZWFrOyAvLyBG
SVhNRSBpbXBsZW1lbnQgY2FsbCBzdGFjayByZXR1cm4gY2hlY2sgYmFzZWQgb24gZnVuY3Rpb24g
c2lnbmF0dXJlLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDIx
CisgICAgICAgICAgICBjYXNlICJjb250cm9sIjogYnJlYWs7IC8vIEZJWE1FIGltcGxlbWVudCBj
b250cm9sLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDIxCisg
ICAgICAgICAgICBjYXNlICJnbG9iYWwiOiBicmVhazsgLy8gRklYTUUgaW1wbGVtZW50IGdsb2Jh
bC4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzQyMQorICAgICAg
ICAgICAgY2FzZSAibG9jYWwiOiBicmVhazsgLy8gRklYTUUgaW1wbGVtZW50IGxvY2FsLiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDIxCisgICAgICAgICAgICBj
YXNlICJwcmV2IjogYnJlYWs7IC8vIEZJWE1FIGltcGxlbWVudCBwcmV2LCBjaGVja2luZyBmb3Ig
d2hldGV2ZXIgdGhlIHBhcmFtZXRlciB0eXBlIHdhcy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2MzQyMQorICAgICAgICAgICAgY2FzZSAic2l6ZSI6IGJyZWFrOyAv
LyBGSVhNRSBpbXBsZW1lbnQgc2l6ZS4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2MzQyMQorICAgICAgICAgICAgZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKGBJbXBs
ZW1lbnRhdGlvbiBwcm9ibGVtOiB1bmhhbmRsZWQgbWV0YS10eXBlICIke2V4cGVjdH0iIG9uICIk
e29wfSJgKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfQorfTsKKworY29uc3QgX2NoZWNrSW1tcyA9IChvcCwgaW1tcywgZXhw
ZWN0ZWRJbW1zKSA9PiB7CisgICAgYXNzZXJ0LmVxKGltbXMubGVuZ3RoLCBleHBlY3RlZEltbXMu
bGVuZ3RoLCBgIiR7b3B9IiBleHBlY3RzICR7ZXhwZWN0ZWRJbW1zLmxlbmd0aH0gaW1tZWRpYXRl
cywgZ290ICR7aW1tcy5sZW5ndGh9YCk7CisgICAgZm9yIChsZXQgaWR4ID0gMDsgaWR4ICE9PSBl
eHBlY3RlZEltbXMubGVuZ3RoOyArK2lkeCkgeworICAgICAgICBjb25zdCBnb3QgPSBpbW1zW2lk
eF07CisgICAgICAgIGNvbnN0IGV4cGVjdCA9IGV4cGVjdGVkSW1tc1tpZHhdOworICAgICAgICBz
d2l0Y2ggKGV4cGVjdC5uYW1lKSB7CisgICAgICAgIGNhc2UgImZ1bmN0aW9uX2luZGV4IjoKKyAg
ICAgICAgICAgIGFzc2VydC50cnV0aHkoX2lzVmFsaWRWYWx1ZShnb3QsICJpMzIiKSwgYEludmFs
aWQgdmFsdWUgb24gJHtvcH06IGdvdCAiJHtnb3R9IiwgZXhwZWN0ZWQgaTMyYCk7CisgICAgICAg
ICAgICAvLyBGSVhNRSBjaGVjayBmdW5jdGlvbiBpbmRpY2VzLiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDIxCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSAibG9jYWxfaW5kZXgiOiB0aHJvdyBuZXcgRXJyb3IoYFVuaW1wbGVtZW50ZWQ6ICIke2V4
cGVjdC5uYW1lfSIgb24gIiR7b3B9ImApOworICAgICAgICBjYXNlICJnbG9iYWxfaW5kZXgiOiB0
aHJvdyBuZXcgRXJyb3IoYFVuaW1wbGVtZW50ZWQ6ICIke2V4cGVjdC5uYW1lfSIgb24gIiR7b3B9
ImApOworICAgICAgICBjYXNlICJ0eXBlX2luZGV4IjogdGhyb3cgbmV3IEVycm9yKGBVbmltcGxl
bWVudGVkOiAiJHtleHBlY3QubmFtZX0iIG9uICIke29wfSJgKTsKKyAgICAgICAgY2FzZSAidmFs
dWUiOgorICAgICAgICAgICAgYXNzZXJ0LnRydXRoeShfaXNWYWxpZFZhbHVlKGdvdCwgcmV0WzBd
KSwgYEludmFsaWQgdmFsdWUgb24gJHtvcH06IGdvdCAiJHtnb3R9IiwgZXhwZWN0ZWQgJHtyZXRb
MF19YCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAiZmxhZ3MiOiB0aHJvdyBu
ZXcgRXJyb3IoYFVuaW1wbGVtZW50ZWQ6ICIke2V4cGVjdC5uYW1lfSIgb24gIiR7b3B9ImApOwor
ICAgICAgICBjYXNlICJvZmZzZXQiOiB0aHJvdyBuZXcgRXJyb3IoYFVuaW1wbGVtZW50ZWQ6ICIk
e2V4cGVjdC5uYW1lfSIgb24gIiR7b3B9ImApOworICAgICAgICAgICAgLy8gQ29udHJvbDoKKyAg
ICAgICAgY2FzZSAiZGVmYXVsdF90YXJnZXQiOiB0aHJvdyBuZXcgRXJyb3IoYFVuaW1wbGVtZW50
ZWQ6ICIke2V4cGVjdC5uYW1lfSIgb24gIiR7b3B9ImApOworICAgICAgICBjYXNlICJyZWxhdGl2
ZV9kZXB0aCI6IHRocm93IG5ldyBFcnJvcihgVW5pbXBsZW1lbnRlZDogIiR7ZXhwZWN0Lm5hbWV9
IiBvbiAiJHtvcH0iYCk7CisgICAgICAgIGNhc2UgInNpZyI6IHRocm93IG5ldyBFcnJvcihgVW5p
bXBsZW1lbnRlZDogIiR7ZXhwZWN0Lm5hbWV9IiBvbiAiJHtvcH0iYCk7CisgICAgICAgIGNhc2Ug
InRhcmdldF9jb3VudCI6IHRocm93IG5ldyBFcnJvcihgVW5pbXBsZW1lbnRlZDogIiR7ZXhwZWN0
Lm5hbWV9IiBvbiAiJHtvcH0iYCk7CisgICAgICAgIGNhc2UgInRhcmdldF90YWJsZSI6IHRocm93
IG5ldyBFcnJvcihgVW5pbXBsZW1lbnRlZDogIiR7ZXhwZWN0Lm5hbWV9IiBvbiAiJHtvcH0iYCk7
CisgICAgICAgIGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcihgSW1wbGVtZW50YXRpb24gcHJvYmxl
bTogdW5oYW5kbGVkIGltbWVkaWF0ZSAiJHtleHBlY3QubmFtZX0iIG9uICIke29wfSJgKTsKKyAg
ICAgICAgfQorICAgIH0KK307CisKK2NvbnN0IF9jcmVhdGVGdW5jdGlvbkJ1aWxkZXIgPSAoZnVu
YywgYnVpbGRlciwgcHJldmlvdXNCdWlsZGVyKSA9PiB7CisgICAgbGV0IGZ1bmN0aW9uQnVpbGRl
ciA9IHt9OworICAgIGZvciAoY29uc3Qgb3AgaW4gV0FTTS5kZXNjcmlwdGlvbi5vcGNvZGUpIHsK
KyAgICAgICAgY29uc3QgbmFtZSA9IF90b0phdmFTY3JpcHROYW1lKG9wKTsKKyAgICAgICAgY29u
c3QgdmFsdWUgPSBXQVNNLmRlc2NyaXB0aW9uLm9wY29kZVtvcF0udmFsdWU7CisgICAgICAgIGNv
bnN0IHJldCA9IFdBU00uZGVzY3JpcHRpb24ub3Bjb2RlW29wXVsicmV0dXJuIl07CisgICAgICAg
IGNvbnN0IHBhcmFtID0gV0FTTS5kZXNjcmlwdGlvbi5vcGNvZGVbb3BdLnBhcmFtZXRlcjsKKyAg
ICAgICAgY29uc3QgaW1tID0gV0FTTS5kZXNjcmlwdGlvbi5vcGNvZGVbb3BdLmltbWVkaWF0ZTsK
KworICAgICAgICBjb25zdCBjaGVja1N0YWNrQXJncyA9IGJ1aWxkZXIuX2NoZWNrZWQgPyBfY2hl
Y2tTdGFja0FyZ3MgOiAoKSA9PiB7fTsKKyAgICAgICAgY29uc3QgY2hlY2tTdGFja1JldHVybiA9
IGJ1aWxkZXIuX2NoZWNrZWQgPyBfY2hlY2tTdGFja1JldHVybiA6ICgpID0+IHt9OworICAgICAg
ICBjb25zdCBjaGVja0ltbXMgPSBidWlsZGVyLl9jaGVja2VkID8gX2NoZWNrSW1tcyA6ICgpID0+
IHt9OworCisgICAgICAgIGZ1bmN0aW9uQnVpbGRlcltuYW1lXSA9ICguLi5hcmdzKSA9PiB7Cisg
ICAgICAgICAgICBsZXQgbmV4dEJ1aWxkZXI7CisgICAgICAgICAgICBzd2l0Y2ggKG5hbWUpIHsK
KyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgbmV4dEJ1aWxkZXIgPSBmdW5j
dGlvbkJ1aWxkZXI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2Fz
ZSAiRW5kIjoKKyAgICAgICAgICAgICAgICBuZXh0QnVpbGRlciA9IHByZXZpb3VzQnVpbGRlcjsK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICJCbG9jayI6Cisg
ICAgICAgICAgICAgICAgY2FzZSAiTG9vcCI6CisgICAgICAgICAgICBjYXNlICJJZiI6CisgICAg
ICAgICAgICAgICAgbmV4dEJ1aWxkZXIgPSBfY3JlYXRlRnVuY3Rpb25CdWlsZGVyKGZ1bmMsIGJ1
aWxkZXIsIGZ1bmN0aW9uQnVpbGRlcik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIC8vIFBhc3NpbmcgYSBmdW5jdGlvbiBhcyB0aGUgYXJndW1l
bnQgaXMgYSB3YXkgdG8gbmVzdCBibG9ja3MgbGV4aWNhbGx5LgorICAgICAgICAgICAgY29uc3Qg
Y29udGludWF0aW9uID0gYXJnc1thcmdzLmxlbmd0aCAtIDFdOworICAgICAgICAgICAgY29uc3Qg
aGFzQ29udGludWF0aW9uID0gdHlwZW9mKGNvbnRpbnVhdGlvbikgPT09ICJmdW5jdGlvbiI7Cisg
ICAgICAgICAgICBjb25zdCBpbW1zID0gaGFzQ29udGludWF0aW9uID8gYXJncy5zbGljZSgwLCAt
MSkgOiBhcmdzOyAvLyBGSVhNRTogYWxsb3cgcGFzc2luZyBpbiBzdGFjayB2YWx1ZXMsIGFzLWlm
IGNvZGUgd2VyZSBhIHN0YWNrIG1hY2hpbmUuIEp1c3QgY2hlY2sgZm9yIGEgYnVpbGRlciB0byB0
aGlzIGZ1bmN0aW9uLCBhbmQgZHJvcC4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2MzQyMgorICAgICAgICAgICAgY2hlY2tJbW1zKG9wLCBpbW1zLCBpbW0pOworICAg
ICAgICAgICAgY2hlY2tTdGFja0FyZ3Mob3AsIHBhcmFtKTsKKyAgICAgICAgICAgIGNoZWNrU3Rh
Y2tSZXR1cm4ob3AsIHJldCk7CisgICAgICAgICAgICBjb25zdCBzdGFja0FyZ3MgPSBbXTsgLy8g
RklYTUUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjcwNgorICAg
ICAgICAgICAgZnVuYy5jb2RlLnB1c2goeyBuYW1lOiBvcCwgdmFsdWU6IHZhbHVlLCBhcmd1bWVu
dHM6IHN0YWNrQXJncywgaW1tZWRpYXRlczogaW1tcyB9KTsKKyAgICAgICAgICAgIGlmIChoYXND
b250aW51YXRpb24pCisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihuZXh0QnVp
bGRlcikuRW5kKCk7CisgICAgICAgICAgICByZXR1cm4gbmV4dEJ1aWxkZXI7CisgICAgICAgIH07
CisgICAgfQorICAgIHJldHVybiBmdW5jdGlvbkJ1aWxkZXI7Cit9CisKK2NvbnN0IF9jcmVhdGVG
dW5jdGlvbiA9IChzZWN0aW9uLCBidWlsZGVyLCBwcmV2aW91c0J1aWxkZXIpID0+IHsKKyAgICBy
ZXR1cm4gKC4uLmFyZ3MpID0+IHsKKyAgICAgICAgY29uc3QgbmFtZU9mZnNldCA9ICh0eXBlb2Yo
YXJnc1swXSkgPT09ICJzdHJpbmciKSA+Pj4gMDsKKyAgICAgICAgY29uc3QgZnVuY3Rpb25OYW1l
ID0gbmFtZU9mZnNldCA/IGFyZ3NbMF0gOiB1bmRlZmluZWQ7CisgICAgICAgIGxldCBzaWduYXR1
cmUgPSBhcmdzWzAgKyBuYW1lT2Zmc2V0XTsKKyAgICAgICAgY29uc3QgbG9jYWxzID0gYXJnc1sx
ICsgbmFtZU9mZnNldF0gPT09IHVuZGVmaW5lZCA/IFtdIDogYXJnc1sxICsgbmFtZU9mZnNldF07
CisgICAgICAgIGZvciAoY29uc3QgbG9jYWwgb2YgbG9jYWxzKQorICAgICAgICAgICAgYXNzZXJ0
LnRydXRoeShXQVNNLmlzVmFsaWRWYWx1ZVR5cGUobG9jYWwpLCBgVHlwZSBvZiBsb2NhbDogJHts
b2NhbH0gbmVlZHMgdG8gYmUgYSB2YWxpZCB2YWx1ZSB0eXBlYCk7CisKKyAgICAgICAgaWYgKHR5
cGVvZihzaWduYXR1cmUpID09PSAidW5kZWZpbmVkIikKKyAgICAgICAgICAgIHNpZ25hdHVyZSA9
IHsgcGFyYW1zOiBbXSB9OworICAgICAgICBhc3NlcnQuaGFzT2JqZWN0UHJvcGVydHkoc2lnbmF0
dXJlLCAicGFyYW1zIiwgYEV4cGVjdCBmdW5jdGlvbiBzaWduYXR1cmUgdG8gYmUgYW4gb2JqZWN0
IHdpdGggYSAicGFyYW1zIiBmaWVsZCwgZ290ICIke3NpZ25hdHVyZX0iYCk7CisgICAgICAgIGNv
bnN0IFtwYXJhbXMsIHJldF0gPSBfbm9ybWFsaXplRnVuY3Rpb25TaWduYXR1cmUoc2lnbmF0dXJl
LnBhcmFtcywgc2lnbmF0dXJlLnJldCk7CisgICAgICAgIHNpZ25hdHVyZSA9IHsgcGFyYW1zOiBw
YXJhbXMsIHJldDogcmV0IH07CisgICAgICAgIGNvbnN0IGZ1bmMgPSB7CisgICAgICAgICAgICBu
YW1lOiBmdW5jdGlvbk5hbWUsCisgICAgICAgICAgICB0eXBlOiBfbWF5YmVSZWdpc3RlclR5cGUo
YnVpbGRlciwgc2lnbmF0dXJlKSwKKyAgICAgICAgICAgIHNpZ25hdHVyZTogc2lnbmF0dXJlLAor
ICAgICAgICAgICAgbG9jYWxzOiBwYXJhbXMuY29uY2F0KGxvY2FscyksIC8vIFBhcmFtZXRlcnMg
YXJlIHRoZSBmaXJzdCBsb2NhbHMuCisgICAgICAgICAgICBwYXJhbWV0ZXJDb3VudDogcGFyYW1z
Lmxlbmd0aCwKKyAgICAgICAgICAgIGNvZGU6IFtdCisgICAgICAgIH07CisKKyAgICAgICAgY29u
c3QgZnVuY3Rpb25TZWN0aW9uID0gYnVpbGRlci5fZ2V0U2VjdGlvbigiRnVuY3Rpb24iKTsKKyAg
ICAgICAgaWYgKGZ1bmN0aW9uU2VjdGlvbikKKyAgICAgICAgICAgIGZ1bmN0aW9uU2VjdGlvbi5k
YXRhLnB1c2goZnVuYy50eXBlKTsKKworICAgICAgICBzZWN0aW9uLmRhdGEucHVzaChmdW5jKTsK
KyAgICAgICAgYnVpbGRlci5fcmVnaXN0ZXJGdW5jdGlvblRvSW5kZXhTcGFjZShmdW5jdGlvbk5h
bWUpOworCisgICAgICAgIHJldHVybiBfY3JlYXRlRnVuY3Rpb25CdWlsZGVyKGZ1bmMsIGJ1aWxk
ZXIsIHByZXZpb3VzQnVpbGRlcik7CisgICAgfQorfTsKKwogZXhwb3J0IGRlZmF1bHQgY2xhc3Mg
QnVpbGRlciB7CiAgICAgY29uc3RydWN0b3IoKSB7CiAgICAgICAgIHRoaXMuc2V0Q2hlY2tlZCh0
cnVlKTsKQEAgLTIxOCw2ICszNjgsNyBAQCBleHBvcnQgZGVmYXVsdCBjbGFzcyBCdWlsZGVyIHsK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGltcG9ydEJ1aWxkZXI7CiAgICAgICAgICAgICAg
ICAgfTsKICAgICAgICAgICAgICAgICBicmVhazsKKwogICAgICAgICAgICAgY2FzZSAiRXhwb3J0
IjoKICAgICAgICAgICAgICAgICB0aGlzW3NlY3Rpb25dID0gZnVuY3Rpb24oKSB7CiAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHMgPSB0aGlzLl9hZGRTZWN0aW9uKHNlY3Rpb24pOwpAQCAtMjMx
LDYgKzM4MiwzMiBAQCBleHBvcnQgZGVmYXVsdCBjbGFzcyBCdWlsZGVyIHsKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGV4cG9ydEJ1aWxkZXI7CiAgICAgICAgICAgICAgICAgfTsKICAgICAg
ICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSAiTWVtb3J5IjoKKyAgICAgICAg
ICAgICAgICB0aGlzW3NlY3Rpb25dID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHMgPSB0aGlzLl9hZGRTZWN0aW9uKHNlY3Rpb24pOworICAgICAgICAgICAgICAgICAg
ICBjb25zdCBleHBvcnRCdWlsZGVyID0geworICAgICAgICAgICAgICAgICAgICAgICAgRW5kOiAo
KSA9PiB0aGlzLAorICAgICAgICAgICAgICAgICAgICAgICAgSW5pdGlhbE1heFBhZ2VzOiAoaW5p
dGlhbCwgbWF4KSA9PiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5kYXRhLnB1c2go
eyBpbml0aWFsLCBtYXggfSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV4
cG9ydEJ1aWxkZXI7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgIH07CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBleHBvcnRCdWlsZGVyOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSAi
RnVuY3Rpb24iOgorICAgICAgICAgICAgICAgIHRoaXNbc2VjdGlvbl0gPSBmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgICAgICAgICAgY29uc3QgcyA9IHRoaXMuX2FkZFNlY3Rpb24oc2VjdGlvbik7
CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGV4cG9ydEJ1aWxkZXIgPSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBFbmQ6ICgpID0+IHRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgIC8v
IEZJWE1FOiBhZGQgYWJpbGl0eSB0byBhZGQgdGhpcyB3aXRoIHdoYXRldmVyLgorICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBleHBvcnRCdWlsZGVyOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKwogICAgICAgICAgICAg
Y2FzZSAiQ29kZSI6CiAgICAgICAgICAgICAgICAgdGhpc1tzZWN0aW9uXSA9IGZ1bmN0aW9uKCkg
ewogICAgICAgICAgICAgICAgICAgICBjb25zdCBzID0gdGhpcy5fYWRkU2VjdGlvbihzZWN0aW9u
KTsKQEAgLTI1NCw3ICs0MzEsNyBAQCBleHBvcnQgZGVmYXVsdCBjbGFzcyBCdWlsZGVyIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIm51bWJlciI6IHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbmRleCA9IGJ1aWxkZXIu
X2dldEZ1bmN0aW9uRnJvbUluZGV4U3BhY2UoZS5pbmRleCk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGJ1aWxkZXIuX2NoZWNrZWQpCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydC5pc05vdFVuZGVmKGluZGV4LCBg
RXhwb3J0ICIke2UuZmllbGR9IiBkb2Vzbid0IGNvcnJlc3BvbmQgdG8gYSBkZWZpbmVkIHZhbHVl
IGluIHRoZSBmdW5jdGlvbiBpbmRleCBzcGFjZWApOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhc3NlcnQuaXNOb3RVbmRlZihpbmRleCwgYEV4cG9ydCAiJHtl
LmZpZWxkfSIgZG9lcyBub3QgY29ycmVzcG9uZCB0byBhIGRlZmluZWQgdmFsdWUgaW4gdGhlIGZ1
bmN0aW9uIGluZGV4IHNwYWNlYCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9IGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAidW5k
ZWZpbmVkIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoYFVuaW1wbGVtZW50ZWQ6IEZ1bmN0aW9uKCkuRW5kKCkgd2l0aCB1bmRlZmluZWQg
ZXhwb3J0IGluZGV4YCk7IC8vIEZJWE1FCkBAIC0yNjksMTE1ICs0NDYsMTMgQEAgZXhwb3J0IGRl
ZmF1bHQgY2xhc3MgQnVpbGRlciB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBidWlsZGVyOwogICAgICAgICAgICAgICAg
ICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgIEZ1bmN0aW9uOiAoYTAsIGExKSA9
PiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHNpZ25hdHVyZSA9IHR5cGVvZihh
MCkgPT09ICJzdHJpbmciID8gYTEgOiBhMDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBmdW5jdGlvbk5hbWUgPSB0eXBlb2YoYTApID09PSAic3RyaW5nIiA/IGEwIDogdW5kZWZp
bmVkOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2Yoc2lnbmF0dXJlKSA9
PT0gInVuZGVmaW5lZCIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25hdHVy
ZSA9IHsgcGFyYW1zOiBbXSB9OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydC5o
YXNPYmplY3RQcm9wZXJ0eShzaWduYXR1cmUsICJwYXJhbXMiLCBgRXhwZWN0IGZ1bmN0aW9uIHNp
Z25hdHVyZSB0byBiZSBhbiBvYmplY3Qgd2l0aCBhICJwYXJhbXMiIGZpZWxkLCBnb3QgIiR7c2ln
bmF0dXJlfSJgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBbcGFyYW1zLCBy
ZXRdID0gX25vcm1hbGl6ZUZ1bmN0aW9uU2lnbmF0dXJlKHNpZ25hdHVyZS5wYXJhbXMsIHNpZ25h
dHVyZS5yZXQpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25hdHVyZSA9IHsgcGFy
YW1zOiBwYXJhbXMsIHJldDogcmV0IH07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZnVuYyA9IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogZnVuY3Rp
b25OYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBfbWF5YmVSZWdp
c3RlclR5cGUoYnVpbGRlciwgc2lnbmF0dXJlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2lnbmF0dXJlOiBzaWduYXR1cmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGxvY2FsczogcGFyYW1zLCAvLyBQYXJhbWV0ZXJzIGFyZSB0aGUgZmlyc3QgbG9jYWxzLgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJDb3VudDogcGFyYW1zLmxl
bmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogW10KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuZGF0
YS5wdXNoKGZ1bmMpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIuX3JlZ2lz
dGVyRnVuY3Rpb25Ub0luZGV4U3BhY2UoZnVuY3Rpb25OYW1lKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBsZXQgZnVuY3Rpb25CdWlsZGVyID0ge307Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZm9yIChjb25zdCBvcCBpbiBXQVNNLmRlc2NyaXB0aW9uLm9wY29kZSkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuYW1lID0gX3RvSmF2YVNjcmlwdE5h
bWUob3ApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IFdB
U00uZGVzY3JpcHRpb24ub3Bjb2RlW29wXS52YWx1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgcmV0ID0gV0FTTS5kZXNjcmlwdGlvbi5vcGNvZGVbb3BdWyJyZXR1cm4i
XTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyYW0gPSBXQVNNLmRl
c2NyaXB0aW9uLm9wY29kZVtvcF0ucGFyYW1ldGVyOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBpbW0gPSBXQVNNLmRlc2NyaXB0aW9uLm9wY29kZVtvcF0uaW1tZWRpYXRl
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGVja1N0YWNrQXJncyA9
IGJ1aWxkZXIuX2NoZWNrZWQgPyBvcCA9PiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmb3IgKGxldCBleHBlY3Qgb2YgcGFyYW0pIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoV0FTTS5pc1ZhbGlkVmFsdWVUeXBlKGV4cGVjdCkpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRklYTUUgaW1w
bGVtZW50IHN0YWNrIGNoZWNrcyBmb3IgYXJndW1lbnRzLiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDIxCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gSGFuZGxlIG91ciBvd24gbWV0YS10eXBlcy4KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChleHBlY3QpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiYWRkciI6IGJyZWFrOyAvLyBGSVhN
RSBpbXBsZW1lbnQgYWRkci4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2MzQyMQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNl
ICJhbnkiOiBicmVhazsgLy8gRklYTUUgaW1wbGVtZW50IGFueS4gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzQyMQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjYXNlICJib29sIjogYnJlYWs7IC8vIEZJWE1FIGltcGxlbWVudCBi
b29sLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDIxCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImNhbGwiOiBicmVh
azsgLy8gRklYTUUgaW1wbGVtZW50IGNhbGwgc3RhY2sgYXJndW1lbnQgY2hlY2tzIGJhc2VkIG9u
IGZ1bmN0aW9uIHNpZ25hdHVyZS4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2MzQyMQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
YXNlICJnbG9iYWwiOiBicmVhazsgLy8gRklYTUUgaW1wbGVtZW50IGdsb2JhbC4gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzQyMQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJsb2NhbCI6IGJyZWFrOyAvLyBGSVhNRSBp
bXBsZW1lbnQgbG9jYWwuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjM0MjEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAi
cHJldiI6IGJyZWFrOyAvLyBGSVhNRSBpbXBsZW1lbnQgcHJldiwgY2hlY2tpbmcgZm9yIHdoZXRl
dmVyIHRoZSBwcmV2aW91cyB2YWx1ZSB3YXMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjM0MjEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2FzZSAic2l6ZSI6IGJyZWFrOyAvLyBGSVhNRSBpbXBsZW1lbnQgc2l6ZS4gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzQyMQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoYElt
cGxlbWVudGF0aW9uIHByb2JsZW06IHVuaGFuZGxlZCBtZXRhLXR5cGUgIiR7ZXhwZWN0fSIgb24g
IiR7b3B9ImApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9IDogKCkgPT4ge307Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo
ZWNrU3RhY2tSZXR1cm4gPSBidWlsZGVyLl9jaGVja2VkID8gb3AgPT4gewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgZXhwZWN0IG9mIHJldCkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChXQVNNLmlzVmFsaWRWYWx1ZVR5
cGUoZXhwZWN0KSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBGSVhNRSBpbXBsZW1lbnQgc3RhY2sgY2hlY2tzIGZvciByZXR1cm4uIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM0MjEKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBIYW5kbGUgb3VyIG93biBtZXRhLXR5cGVzLgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGV4cGVjdCkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJib29sIjogYnJl
YWs7IC8vIEZJWE1FIGltcGxlbWVudCBib29sLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTYzNDIxCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNhc2UgImNhbGwiOiBicmVhazsgLy8gRklYTUUgaW1wbGVtZW50IGNhbGwgc3RhY2sg
cmV0dXJuIGNoZWNrIGJhc2VkIG9uIGZ1bmN0aW9uIHNpZ25hdHVyZS4gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzQyMQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjYXNlICJjb250cm9sIjogYnJlYWs7IC8vIEZJWE1FIGltcGxl
bWVudCBjb250cm9sLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYz
NDIxCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImds
b2JhbCI6IGJyZWFrOyAvLyBGSVhNRSBpbXBsZW1lbnQgZ2xvYmFsLiBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDIxCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNhc2UgImxvY2FsIjogYnJlYWs7IC8vIEZJWE1FIGltcGxlbWVu
dCBsb2NhbC4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzQyMQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJwcmV2Ijog
YnJlYWs7IC8vIEZJWE1FIGltcGxlbWVudCBwcmV2LCBjaGVja2luZyBmb3Igd2hldGV2ZXIgdGhl
IHBhcmFtZXRlciB0eXBlIHdhcy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2MzQyMQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
YXNlICJzaXplIjogYnJlYWs7IC8vIEZJWE1FIGltcGxlbWVudCBzaXplLiBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDIxCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcihgSW1wbGVtZW50
YXRpb24gcHJvYmxlbTogdW5oYW5kbGVkIG1ldGEtdHlwZSAiJHtleHBlY3R9IiBvbiAiJHtvcH0i
YCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gOiAo
KSA9PiB7fTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hlY2tJbW1z
ID0gYnVpbGRlci5fY2hlY2tlZCA/IChvcCwgaW1tcykgPT4gewotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxKGltbXMubGVuZ3RoLCBpbW0ubGVuZ3RoLCBgIiR7
b3B9IiBleHBlY3RzICR7aW1tLmxlbmd0aH0gaW1tZWRpYXRlcywgZ290ICR7aW1tcy5sZW5ndGh9
YCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpZHggPSAw
OyBpZHggIT09IGltbS5sZW5ndGg7ICsraWR4KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgZ290ID0gaW1tc1tpZHhdOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGV4cGVjdCA9IGltbVtpZHhdOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZXhwZWN0Lm5hbWUpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJmdW5jdGlvbl9pbmRl
eCI6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydC50
cnV0aHkoX2lzVmFsaWRWYWx1ZShnb3QsICJpMzIiKSwgYEludmFsaWQgdmFsdWUgb24gJHtvcH06
IGdvdCAiJHtnb3R9IiwgZXhwZWN0ZWQgaTMyYCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FIGNoZWNrIGZ1bmN0aW9uIGluZGljZXMuIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM0MjEKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2FzZSAibG9jYWxfaW5kZXgiOiB0aHJvdyBuZXcgRXJyb3Io
YFVuaW1wbGVtZW50ZWQ6ICIke2V4cGVjdC5uYW1lfSIgb24gIiR7b3B9ImApOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImdsb2JhbF9pbmRleCI6IHRocm93
IG5ldyBFcnJvcihgVW5pbXBsZW1lbnRlZDogIiR7ZXhwZWN0Lm5hbWV9IiBvbiAiJHtvcH0iYCk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAidHlwZV9pbmRl
eCI6IHRocm93IG5ldyBFcnJvcihgVW5pbXBsZW1lbnRlZDogIiR7ZXhwZWN0Lm5hbWV9IiBvbiAi
JHtvcH0iYCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAi
dmFsdWUiOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3Nl
cnQudHJ1dGh5KF9pc1ZhbGlkVmFsdWUoZ290LCByZXRbMF0pLCBgSW52YWxpZCB2YWx1ZSBvbiAk
e29wfTogZ290ICIke2dvdH0iLCBleHBlY3RlZCAke3JldFswXX1gKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2FzZSAiZmxhZ3MiOiB0aHJvdyBuZXcgRXJyb3IoYFVuaW1w
bGVtZW50ZWQ6ICIke2V4cGVjdC5uYW1lfSIgb24gIiR7b3B9ImApOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIm9mZnNldCI6IHRocm93IG5ldyBFcnJvcihg
VW5pbXBsZW1lbnRlZDogIiR7ZXhwZWN0Lm5hbWV9IiBvbiAiJHtvcH0iYCk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ29udHJvbDoKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJkZWZhdWx0X3RhcmdldCI6IHRocm93IG5l
dyBFcnJvcihgVW5pbXBsZW1lbnRlZDogIiR7ZXhwZWN0Lm5hbWV9IiBvbiAiJHtvcH0iYCk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAicmVsYXRpdmVfZGVw
dGgiOiB0aHJvdyBuZXcgRXJyb3IoYFVuaW1wbGVtZW50ZWQ6ICIke2V4cGVjdC5uYW1lfSIgb24g
IiR7b3B9ImApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2Ug
InNpZyI6IHRocm93IG5ldyBFcnJvcihgVW5pbXBsZW1lbnRlZDogIiR7ZXhwZWN0Lm5hbWV9IiBv
biAiJHtvcH0iYCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2Fz
ZSAidGFyZ2V0X2NvdW50IjogdGhyb3cgbmV3IEVycm9yKGBVbmltcGxlbWVudGVkOiAiJHtleHBl
Y3QubmFtZX0iIG9uICIke29wfSJgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjYXNlICJ0YXJnZXRfdGFibGUiOiB0aHJvdyBuZXcgRXJyb3IoYFVuaW1wbGVtZW50
ZWQ6ICIke2V4cGVjdC5uYW1lfSIgb24gIiR7b3B9ImApOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcihgSW1wbGVtZW50YXRp
b24gcHJvYmxlbTogdW5oYW5kbGVkIGltbWVkaWF0ZSAiJHtleHBlY3QubmFtZX0iIG9uICIke29w
fSJgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0gOiAoKSA9PiB7fTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgbmV4dEJ1aWxkZXIgPSBuYW1lID09PSAiRW5kIiA/IGNvZGVCdWlsZGVyIDogZnVuY3Rpb25C
dWlsZGVyOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbkJ1aWxkZXJb
bmFtZV0gPSAoLi4uYXJncykgPT4gewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgaW1tcyA9IGFyZ3M7IC8vIEZJWE1FOiBhbGxvdyBwYXNzaW5nIGluIHN0YWNrIHZh
bHVlcywgYXMtaWYgY29kZSB3ZXJlIGEgc3RhY2sgbWFjaGluZS4gSnVzdCBjaGVjayBmb3IgYSBi
dWlsZGVyIHRvIHRoaXMgZnVuY3Rpb24sIGFuZCBkcm9wLiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDIyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjaGVja0ltbXMob3AsIGltbXMpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2hlY2tTdGFja0FyZ3Mob3ApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2hlY2tTdGFja1JldHVybihvcCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBzdGFja0FyZ3MgPSBbXTsgLy8gRklYTUUgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjcwNgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZnVuYy5jb2RlLnB1c2goeyBuYW1lOiBvcCwgdmFsdWU6IHZhbHVlLCBhcmd1bWVu
dHM6IHN0YWNrQXJncywgaW1tZWRpYXRlczogaW1tcyB9KTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBuZXh0QnVpbGRlcjsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uQnVpbGRlcjsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAg
ICBjb2RlQnVpbGRlci5GdW5jdGlvbiA9IF9jcmVhdGVGdW5jdGlvbihzLCBidWlsZGVyLCBjb2Rl
QnVpbGRlcik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb2RlQnVpbGRlcjsKICAgICAg
ICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgICAgICBkZWZh
dWx0OgogICAgICAgICAgICAgICAgIHRoaXNbc2VjdGlvbl0gPSAoKSA9PiB7IHRocm93IG5ldyBF
cnJvcihgVW5pbXBsZW1lbnRlZDogc2VjdGlvbiB0eXBlICIke3NlY3Rpb259ImApOyB9OwogICAg
ICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDIwLDcgKzQ5NSw3IEBAIGV4cG9ydCBkZWZhdWx0IGNs
YXNzIEJ1aWxkZXIgewogICAgIH0KICAgICBfZ2V0U2VjdGlvbihuYW1lT3JOdW1iZXIpIHsKICAg
ICAgICAgc3dpdGNoICh0eXBlb2YobmFtZU9yTnVtYmVyKSkgewotICAgICAgICBkZWZhdWx0OiB0
aHJvdyBuZXcgRXJyb3IoYEltcGxlbWVudGF0aW9uIHByb2JsZW06IGNhbid0IGdldCBzZWN0aW9u
ICIke25hbWVPck51bWJlcn0iYCk7CisgICAgICAgIGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcihg
SW1wbGVtZW50YXRpb24gcHJvYmxlbTogY2FuIG5vdCBnZXQgc2VjdGlvbiAiJHtuYW1lT3JOdW1i
ZXJ9ImApOwogICAgICAgICBjYXNlICJzdHJpbmciOgogICAgICAgICAgICAgZm9yIChjb25zdCBz
IG9mIHRoaXMuX3NlY3Rpb25zKQogICAgICAgICAgICAgICAgIGlmIChzLm5hbWUgPT09IG5hbWVP
ck51bWJlcikKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9CdWlsZGVyX1dlYkFzc2VtYmx5Qmlu
YXJ5LmpzIGIvSlNUZXN0cy93YXNtL0J1aWxkZXJfV2ViQXNzZW1ibHlCaW5hcnkuanMKaW5kZXgg
ZjJiMGE1MjE4NzM5MTYwMzBjNzM4NjM2YWNkYWNhM2U2NzJlYzIxZC4uMTU0MDMyOTNhMmE5NGFl
MDgwMGM4YzM5MmJjNTJmNWNmNTFmMmU0YSAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNtL0J1aWxk
ZXJfV2ViQXNzZW1ibHlCaW5hcnkuanMKKysrIGIvSlNUZXN0cy93YXNtL0J1aWxkZXJfV2ViQXNz
ZW1ibHlCaW5hcnkuanMKQEAgLTIzLDYgKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAor
aW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJ2Fzc2VydC5qcyc7CiBpbXBvcnQgTG93TGV2ZWxCaW5h
cnkgZnJvbSAnTG93TGV2ZWxCaW5hcnkuanMnOwogaW1wb3J0ICogYXMgV0FTTSBmcm9tICdXQVNN
LmpzJzsKIApAQCAtMzAsMTEgKzMxLDExIEBAIGNvbnN0IHB1dCA9IChiaW4sIHR5cGUsIHZhbHVl
KSA9PiBiaW5bdHlwZV0odmFsdWUpOwogCiBjb25zdCBlbWl0dGVycyA9IHsKICAgICBUeXBlOiAo
c2VjdGlvbiwgYmluKSA9PiB7Ci0gICAgICAgIHB1dChiaW4sICJ2YXJ1aW50Iiwgc2VjdGlvbi5k
YXRhLmxlbmd0aCk7CisgICAgICAgIHB1dChiaW4sICJ2YXJ1aW50MzIiLCBzZWN0aW9uLmRhdGEu
bGVuZ3RoKTsKICAgICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiBzZWN0aW9uLmRhdGEpIHsKICAg
ICAgICAgICAgIGNvbnN0IGZ1bmNUeXBlQ29uc3RydWN0b3IgPSAtMHgyMDsgLy8gRklYTUUgTW92
ZSB0aGlzIHRvIHdhc20uanNvbi4KICAgICAgICAgICAgIHB1dChiaW4sICJ2YXJpbnQ3IiwgZnVu
Y1R5cGVDb25zdHJ1Y3Rvcik7Ci0gICAgICAgICAgICBwdXQoYmluLCAidmFydWludCIsIGVudHJ5
LnBhcmFtcy5sZW5ndGgpOworICAgICAgICAgICAgcHV0KGJpbiwgInZhcnVpbnQzMiIsIGVudHJ5
LnBhcmFtcy5sZW5ndGgpOwogICAgICAgICAgICAgZm9yIChjb25zdCBwYXJhbSBvZiBlbnRyeS5w
YXJhbXMpCiAgICAgICAgICAgICAgICAgcHV0KGJpbiwgInVpbnQ4IiwgV0FTTS52YWx1ZVR5cGVW
YWx1ZVtwYXJhbV0pOwogICAgICAgICAgICAgaWYgKGVudHJ5LnJldCA9PT0gInZvaWQiKQpAQCAt
NDYsNDIgKzQ3LDgxIEBAIGNvbnN0IGVtaXR0ZXJzID0gewogICAgICAgICB9CiAgICAgfSwKICAg
ICBJbXBvcnQ6IChzZWN0aW9uLCBiaW4pID0+IHsKLSAgICAgICAgcHV0KGJpbiwgInZhcnVpbnQi
LCBzZWN0aW9uLmRhdGEubGVuZ3RoKTsKKyAgICAgICAgcHV0KGJpbiwgInZhcnVpbnQzMiIsIHNl
Y3Rpb24uZGF0YS5sZW5ndGgpOwogICAgICAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIHNlY3Rpb24u
ZGF0YSkgewogICAgICAgICAgICAgcHV0KGJpbiwgInN0cmluZyIsIGVudHJ5Lm1vZHVsZSk7CiAg
ICAgICAgICAgICBwdXQoYmluLCAic3RyaW5nIiwgZW50cnkuZmllbGQpOwogICAgICAgICAgICAg
cHV0KGJpbiwgInVpbnQ4IiwgV0FTTS5leHRlcm5hbEtpbmRWYWx1ZVtlbnRyeS5raW5kXSk7CiAg
ICAgICAgICAgICBzd2l0Y2ggKGVudHJ5LmtpbmQpIHsKICAgICAgICAgICAgIGRlZmF1bHQ6IHRo
cm93IG5ldyBFcnJvcihgSW1wbGVtZW50YXRpb24gcHJvYmxlbTogdW5leHBlY3RlZCBraW5kICR7
ZW50cnkua2luZH1gKTsKLSAgICAgICAgICAgIGNhc2UgIkZ1bmN0aW9uIjogcHV0KGJpbiwgInZh
cnVpbnQiLCBlbnRyeS50eXBlKTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlICJGdW5jdGlvbiI6
IHB1dChiaW4sICJ2YXJ1aW50MzIiLCBlbnRyeS50eXBlKTsgYnJlYWs7CiAgICAgICAgICAgICBj
YXNlICJUYWJsZSI6IHRocm93IG5ldyBFcnJvcihgTm90IHlldCBpbXBsZW1lbnRlZGApOwogICAg
ICAgICAgICAgY2FzZSAiTWVtb3J5IjogdGhyb3cgbmV3IEVycm9yKGBOb3QgeWV0IGltcGxlbWVu
dGVkYCk7CiAgICAgICAgICAgICBjYXNlICJHbG9iYWwiOiB0aHJvdyBuZXcgRXJyb3IoYE5vdCB5
ZXQgaW1wbGVtZW50ZWRgKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0sCi0gICAg
RnVuY3Rpb246IChzZWN0aW9uLCBiaW4pID0+IHsgdGhyb3cgbmV3IEVycm9yKGBOb3QgeWV0IGlt
cGxlbWVudGVkYCk7IH0sCisKKyAgICBGdW5jdGlvbjogKHNlY3Rpb24sIGJpbikgPT4geworICAg
ICAgICBwdXQoYmluLCAidmFydWludDMyIiwgc2VjdGlvbi5kYXRhLmxlbmd0aCk7CisgICAgICAg
IGZvciAoY29uc3Qgc2lnbmF0dXJlIG9mIHNlY3Rpb24uZGF0YSkKKyAgICAgICAgICAgIHB1dChi
aW4sICJ2YXJ1aW50MzIiLCBzaWduYXR1cmUpOworICAgIH0sCisKICAgICBUYWJsZTogKHNlY3Rp
b24sIGJpbikgPT4geyB0aHJvdyBuZXcgRXJyb3IoYE5vdCB5ZXQgaW1wbGVtZW50ZWRgKTsgfSwK
LSAgICBNZW1vcnk6IChzZWN0aW9uLCBiaW4pID0+IHsgdGhyb3cgbmV3IEVycm9yKGBOb3QgeWV0
IGltcGxlbWVudGVkYCk7IH0sCisKKyAgICBNZW1vcnk6IChzZWN0aW9uLCBiaW4pID0+IHsKKyAg
ICAgICAgLy8gRmxhZ3MsIGN1cnJlbnRseSBjYW4gb25seSBiZSBbMCwxXQorICAgICAgICBwdXQo
YmluLCAidmFydWludDEiLCBzZWN0aW9uLmRhdGEubGVuZ3RoKTsKKyAgICAgICAgZm9yIChjb25z
dCBtZW1vcnkgb2Ygc2VjdGlvbi5kYXRhKSB7CisgICAgICAgICAgICBwdXQoYmluLCAidmFydWlu
dDMyIiwgbWVtb3J5Lm1heCA/IDEgOiAwKTsKKyAgICAgICAgICAgIHB1dChiaW4sICJ2YXJ1aW50
MzIiLCBtZW1vcnkuaW5pdGlhbCk7CisgICAgICAgICAgICBpZiAobWVtb3J5Lm1heCkKKyAgICAg
ICAgICAgICAgICBwdXQoYmluLCAidmFydWludDMyIiwgbWVtb3J5Lm1heCk7CisgICAgICAgIH0K
KyAgICB9LAorCiAgICAgR2xvYmFsOiAoc2VjdGlvbiwgYmluKSA9PiB7IHRocm93IG5ldyBFcnJv
cihgTm90IHlldCBpbXBsZW1lbnRlZGApOyB9LAogICAgIEV4cG9ydDogKHNlY3Rpb24sIGJpbikg
PT4geyB0aHJvdyBuZXcgRXJyb3IoYE5vdCB5ZXQgaW1wbGVtZW50ZWRgKTsgfSwKICAgICBTdGFy
dDogKHNlY3Rpb24sIGJpbikgPT4geyB0aHJvdyBuZXcgRXJyb3IoYE5vdCB5ZXQgaW1wbGVtZW50
ZWRgKTsgfSwKICAgICBFbGVtZW50OiAoc2VjdGlvbiwgYmluKSA9PiB7IHRocm93IG5ldyBFcnJv
cihgTm90IHlldCBpbXBsZW1lbnRlZGApOyB9LAorCiAgICAgQ29kZTogKHNlY3Rpb24sIGJpbikg
PT4gewotICAgICAgICBwdXQoYmluLCAidmFydWludCIsIHNlY3Rpb24uZGF0YS5sZW5ndGgpOwor
ICAgICAgICBwdXQoYmluLCAidmFydWludDMyIiwgc2VjdGlvbi5kYXRhLmxlbmd0aCk7CiAgICAg
ICAgIGZvciAoY29uc3QgZnVuYyBvZiBzZWN0aW9uLmRhdGEpIHsKLSAgICAgICAgICAgIGxldCBm
dW5jQmluID0gYmluLm5ld1BhdGNoYWJsZSgidmFydWludCIpOwotICAgICAgICAgICAgY29uc3Qg
bG9jYWxDb3VudCA9IGZ1bmMubG9jYWxzLmxlbmd0aDsKLSAgICAgICAgICAgIHB1dChmdW5jQmlu
LCAidmFydWludCIsIGxvY2FsQ291bnQpOwotICAgICAgICAgICAgaWYgKGxvY2FsQ291bnQgIT09
IDApIHRocm93IG5ldyBFcnJvcihgVW5pbXBsZW1lbnRlZDogbG9jYWxzYCk7IC8vIEZJWE1FIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI3MDYKKyAgICAgICAgICAg
IGxldCBmdW5jQmluID0gYmluLm5ld1BhdGNoYWJsZSgidmFydWludDMyIik7CisgICAgICAgICAg
ICBjb25zdCBsb2NhbENvdW50ID0gZnVuYy5sb2NhbHMubGVuZ3RoIC0gZnVuYy5wYXJhbWV0ZXJD
b3VudDsKKyAgICAgICAgICAgIHB1dChmdW5jQmluLCAidmFydWludDMyIiwgbG9jYWxDb3VudCk7
CisgICAgICAgICAgICBmb3IgKGxldCBpID0gZnVuYy5wYXJhbWV0ZXJDb3VudDsgaSA8IGZ1bmMu
bG9jYWxzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgcHV0KGZ1bmNCaW4sICJ2YXJ1
aW50MzIiLCAxKTsKKyAgICAgICAgICAgICAgICBwdXQoZnVuY0JpbiwgInVpbnQ4IiwgV0FTTS52
YWx1ZVR5cGVWYWx1ZVtmdW5jLmxvY2Fsc1tpXV0pOworICAgICAgICAgICAgfQorCiAgICAgICAg
ICAgICBmb3IgKGNvbnN0IG9wIG9mIGZ1bmMuY29kZSkgewogICAgICAgICAgICAgICAgIHB1dChm
dW5jQmluLCAidWludDgiLCBvcC52YWx1ZSk7Ci0gICAgICAgICAgICAgICAgaWYgKG9wLmFyZ3Vt
ZW50cy5sZW5ndGggIT09IDApIHRocm93IG5ldyBFcnJvcihgVW5pbXBsZW1lbnRlZDogYXJndW1l
bnRzYCk7IC8vIEZJWE1FIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjI3MDYKLSAgICAgICAgICAgICAgICBpZiAob3AuaW1tZWRpYXRlcy5sZW5ndGggIT09IDApIHRo
cm93IG5ldyBFcnJvcihgVW5pbXBsZW1lbnRlZDogaW1tZWRpYXRlc2ApOyAvLyBGSVhNRSBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyNzA2CisgICAgICAgICAgICAg
ICAgaWYgKG9wLmFyZ3VtZW50cy5sZW5ndGggIT09IDApCisgICAgICAgICAgICAgICAgICAgIHRo
cm93IG5ldyBFcnJvcihgVW5pbXBsZW1lbnRlZDogYXJndW1lbnRzYCk7IC8vIEZJWE1FIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI3MDYKKworICAgICAgICAgICAg
ICAgIHN3aXRjaCAob3AubmFtZSkgeworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb3AuaW1tZWRpYXRlcy5sZW5ndGg7ICsr
aSkgeworICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdHlwZSA9IFdBU00uZGVzY3JpcHRp
b24ub3Bjb2RlW29wLm5hbWVdLmltbWVkaWF0ZVtpXS50eXBlCisgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoIWZ1bmNCaW5bdHlwZV0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhy
b3cgbmV3IFR5cGVFcnJvcihgVW5rbm93biB0eXBlOiAke3R5cGV9IGluIG9wOiAke29wLm5hbWV9
YCk7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXQoZnVuY0JpbiwgdHlwZSwgb3AuaW1tZWRp
YXRlc1tpXSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgY2FzZSAiYnJfdGFibGUiOgorICAgICAgICAgICAgICAgICAg
ICBwdXQoZnVuY0JpbiwgInZhcnVpbnQzMiIsIG9wLmltbWVkaWF0ZXMubGVuZ3RoIC0gMSk7Cisg
ICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGltbSBvZiBvcC5pbW1lZGlhdGVzKQorICAgICAg
ICAgICAgICAgICAgICAgICAgcHV0KGZ1bmNCaW4sICJ2YXJ1aW50MzIiLCBpbW0pOworICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBmdW5jQmluLmFwcGx5KCk7CiAgICAgICAgIH0KICAgICB9LAorCiAgICAgRGF0
YTogKHNlY3Rpb24sIGJpbikgPT4geyB0aHJvdyBuZXcgRXJyb3IoYE5vdCB5ZXQgaW1wbGVtZW50
ZWRgKTsgfSwKIH07CiAKQEAgLTkxLDcgKzEzMSw3IEBAIGV4cG9ydCBjb25zdCBCaW5hcnkgPSAo
cHJlYW1ibGUsIHNlY3Rpb25zKSA9PiB7CiAgICAgICAgIHB1dCh3YXNtQmluLCBwLnR5cGUsIHBy
ZWFtYmxlW3AubmFtZV0pOwogICAgIGZvciAoY29uc3Qgc2VjdGlvbiBvZiBzZWN0aW9ucykgewog
ICAgICAgICBwdXQod2FzbUJpbiwgV0FTTS5zZWN0aW9uRW5jb2RpbmdUeXBlLCBzZWN0aW9uLmlk
KTsKLSAgICAgICAgbGV0IHNlY3Rpb25CaW4gPSB3YXNtQmluLm5ld1BhdGNoYWJsZSgidmFydWlu
dCIpOworICAgICAgICBsZXQgc2VjdGlvbkJpbiA9IHdhc21CaW4ubmV3UGF0Y2hhYmxlKCJ2YXJ1
aW50MzIiKTsKICAgICAgICAgY29uc3QgZW1pdHRlciA9IGVtaXR0ZXJzW3NlY3Rpb24ubmFtZV07
CiAgICAgICAgIGlmIChlbWl0dGVyKQogICAgICAgICAgICAgZW1pdHRlcihzZWN0aW9uLCBzZWN0
aW9uQmluKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9Mb3dMZXZlbEJpbmFyeS5qcyBiL0pT
VGVzdHMvd2FzbS9Mb3dMZXZlbEJpbmFyeS5qcwppbmRleCA3MjAwOTc2MDhjODY2NzUxYTQ1ODRm
ZDNhNTM0ZWZjNTJjY2I3ZmE0Li5lNDNiMzQ2YmQyMDc5MjkwMmZmMWQ1NmFhNGJiZDc4NDkwYTA0
MTUyIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vTG93TGV2ZWxCaW5hcnkuanMKKysrIGIvSlNU
ZXN0cy93YXNtL0xvd0xldmVsQmluYXJ5LmpzCkBAIC0yMywxNiArMjMsMTggQEAKICAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgKi8KIAoraW1wb3J0ICogYXMgV0FTTSBmcm9tICdXQVNNLmpzJzsKKwogY29uc3Qg
X2luaXRpYWxBbGxvY2F0aW9uU2l6ZSA9IDEwMjQ7CiBjb25zdCBfZ3Jvd0FsbG9jYXRpb25TaXpl
ID0gYWxsb2NhdGVkID0+IGFsbG9jYXRlZCAqIDI7CiAKLWV4cG9ydCBjb25zdCB2YXJ1aW50TWlu
ID0gMDsKK2V4cG9ydCBjb25zdCB2YXJ1aW50MzJNaW4gPSAwOwogZXhwb3J0IGNvbnN0IHZhcmlu
dDdNaW4gPSAtMGIxMDAwMDAwOwogZXhwb3J0IGNvbnN0IHZhcmludDdNYXggPSAwYjExMTExMTsK
IGV4cG9ydCBjb25zdCB2YXJ1aW50N01heCA9IDBiMTExMTExMTsKLWV4cG9ydCBjb25zdCB2YXJ1
aW50TWF4ID0gKCgoKDEgPDwgMzEpID4+PiAwKSAtIDEpICogMikgKyAxOwotZXhwb3J0IGNvbnN0
IHZhcmludE1pbiA9IC0oKDEgPDwgMzEpID4+PiAwKTsKLWV4cG9ydCBjb25zdCB2YXJpbnRNYXgg
PSAoKDEgPDwgMzEpIC0gMSkgPj4+IDA7CitleHBvcnQgY29uc3QgdmFydWludDMyTWF4ID0gKCgo
KDEgPDwgMzEpID4+PiAwKSAtIDEpICogMikgKyAxOworZXhwb3J0IGNvbnN0IHZhcmludDMyTWlu
ID0gLSgoMSA8PCAzMSkgPj4+IDApOworZXhwb3J0IGNvbnN0IHZhcmludDMyTWF4ID0gKCgxIDw8
IDMxKSAtIDEpID4+PiAwOwogZXhwb3J0IGNvbnN0IHZhckJpdHNNYXggPSA1OwogCiBjb25zdCBf
Z2V0dGVyUmFuZ2VDaGVjayA9IChsbGIsIGF0LCBzaXplKSA9PiB7CkBAIC03NSw2ICs3Nyw4IEBA
IGV4cG9ydCBkZWZhdWx0IGNsYXNzIExvd0xldmVsQmluYXJ5IHsKIAogICAgIC8vIFV0aWxpdGll
cy4KICAgICBnZXQoKSB7IHJldHVybiB0aGlzLl9idWY7IH0KKyAgICB0cmltKCkgeyB0aGlzLl9i
dWYgPSB0aGlzLl9idWYuc2xpY2UoMCwgdGhpcy5fdXNlZCk7IH0KKwogICAgIGhleGR1bXAoKSB7
IHJldHVybiBfaGV4ZHVtcCh0aGlzLl9idWYsIHRoaXMuX3VzZWQpOyB9CiAgICAgX21heWJlR3Jv
dyhieXRlcykgewogICAgICAgICBjb25zdCBhbGxvY2F0ZWQgPSB0aGlzLl9idWYubGVuZ3RoOwpA
QCAtMTA5LDE4ICsxMTMsMTggQEAgZXhwb3J0IGRlZmF1bHQgY2xhc3MgTG93TGV2ZWxCaW5hcnkg
ewogICAgICAgICB0aGlzLl9wdXNoOCh2ID4+PiAxNik7CiAgICAgICAgIHRoaXMuX3B1c2g4KHYg
Pj4+IDI0KTsKICAgICB9Ci0gICAgdmFydWludCh2KSB7Ci0gICAgICAgIGlmICh2IDwgdmFydWlu
dE1pbiB8fCB2YXJ1aW50TWF4IDwgdikKLSAgICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9y
KGBJbnZhbGlkIHZhcnVpbnQgJHt2fSByYW5nZSBpcyBbJHt2YXJ1aW50TWlufSwgJHt2YXJ1aW50
TWF4fV1gKTsKKyAgICB2YXJ1aW50MzIodikgeworICAgICAgICBpZiAodiA8IHZhcnVpbnQzMk1p
biB8fCB2YXJ1aW50MzJNYXggPCB2KQorICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3Io
YEludmFsaWQgdmFydWludDMyICR7dn0gcmFuZ2UgaXMgWyR7dmFydWludDMyTWlufSwgJHt2YXJ1
aW50MzJNYXh9XWApOwogICAgICAgICB3aGlsZSAodiA+PSAweDgwKSB7CiAgICAgICAgICAgICB0
aGlzLnVpbnQ4KDB4ODAgfCAodiAmIDB4N0YpKTsKICAgICAgICAgICAgIHYgPj4+PSA3OwogICAg
ICAgICB9CiAgICAgICAgIHRoaXMudWludDgodik7CiAgICAgfQotICAgIHZhcmludCh2KSB7Ci0g
ICAgICAgIGlmICh2IDwgdmFyaW50TWluIHx8IHZhcmludE1heCA8IHYpCi0gICAgICAgICAgICB0
aHJvdyBuZXcgUmFuZ2VFcnJvcihgSW52YWxpZCB2YXJpbnQgJHt2fSByYW5nZSBpcyBbJHt2YXJp
bnRNaW59LCAke3ZhcmludE1heH1dYCk7CisgICAgdmFyaW50MzIodikgeworICAgICAgICBpZiAo
diA8IHZhcmludDMyTWluIHx8IHZhcmludDMyTWF4IDwgdikKKyAgICAgICAgICAgIHRocm93IG5l
dyBSYW5nZUVycm9yKGBJbnZhbGlkIHZhcmludDMyICR7dn0gcmFuZ2UgaXMgWyR7dmFyaW50MzJN
aW59LCAke3ZhcmludDMyTWF4fV1gKTsKICAgICAgICAgZG8gewogICAgICAgICAgICAgY29uc3Qg
YiA9IHYgJiAweDdGOwogICAgICAgICAgICAgdiA+Pj0gNzsKQEAgLTEzNCwyMCArMTM4LDIzIEBA
IGV4cG9ydCBkZWZhdWx0IGNsYXNzIExvd0xldmVsQmluYXJ5IHsKICAgICB2YXJ1aW50MSh2KSB7
CiAgICAgICAgIGlmICh2ICE9PSAwICYmIHYgIT09IDEpCiAgICAgICAgICAgICB0aHJvdyBuZXcg
UmFuZ2VFcnJvcihgSW52YWxpZCB2YXJ1aW50MSAke3Z9IHJhbmdlIGlzIFswLCAxXWApOwotICAg
ICAgICB0aGlzLnZhcnVpbnQodik7CisgICAgICAgIHRoaXMudmFydWludDMyKHYpOwogICAgIH0K
ICAgICB2YXJpbnQ3KHYpIHsKICAgICAgICAgaWYgKHYgPCB2YXJpbnQ3TWluIHx8IHZhcmludDdN
YXggPCB2KQogICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoYEludmFsaWQgdmFyaW50
NyAke3Z9IHJhbmdlIGlzIFske3ZhcmludDdNaW59LCAke3ZhcmludDdNYXh9XWApOwotICAgICAg
ICB0aGlzLnZhcmludCh2KTsKKyAgICAgICAgdGhpcy52YXJpbnQzMih2KTsKICAgICB9CiAgICAg
dmFydWludDcodikgewotICAgICAgICBpZiAodiA8IHZhcnVpbnRNaW4gfHwgdmFydWludDdNYXgg
PCB2KQotICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoYEludmFsaWQgdmFydWludDcg
JHt2fSByYW5nZSBpcyBbJHt2YXJ1aW50TWlufSwgJHt2YXJ1aW50N01heH1dYCk7Ci0gICAgICAg
IHRoaXMudmFydWludCh2KTsKKyAgICAgICAgaWYgKHYgPCB2YXJ1aW50MzJNaW4gfHwgdmFydWlu
dDdNYXggPCB2KQorICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoYEludmFsaWQgdmFy
dWludDcgJHt2fSByYW5nZSBpcyBbJHt2YXJ1aW50MzJNaW59LCAke3ZhcnVpbnQ3TWF4fV1gKTsK
KyAgICAgICAgdGhpcy52YXJ1aW50MzIodik7CisgICAgfQorICAgIGlubGluZV9zaWduYXR1cmVf
dHlwZSh2KSB7CisgICAgICAgIHRoaXMudmFyaW50NyhXQVNNLnZhbHVlVHlwZVZhbHVlW3ZdKTsK
ICAgICB9CiAgICAgc3RyaW5nKHN0cikgewotICAgICAgICBsZXQgcGF0Y2ggPSB0aGlzLm5ld1Bh
dGNoYWJsZSgidmFydWludCIpOworICAgICAgICBsZXQgcGF0Y2ggPSB0aGlzLm5ld1BhdGNoYWJs
ZSgidmFydWludDMyIik7CiAgICAgICAgIGZvciAoY29uc3QgY2hhciBvZiBzdHIpCiAgICAgICAg
ICAgICBwYXRjaC51aW50MTYoY2hhci5jaGFyQ29kZUF0KCkpOwogICAgICAgICBwYXRjaC5hcHBs
eSgpOwpAQCAtMTY3LDcgKzE3NCw3IEBAIGV4cG9ydCBkZWZhdWx0IGNsYXNzIExvd0xldmVsQmlu
YXJ5IHsKICAgICAgICAgX2dldHRlclJhbmdlQ2hlY2sodGhpcywgYXQsIDQpOwogICAgICAgICBy
ZXR1cm4gKHRoaXMuX2J1ZlthdF0gfCAodGhpcy5fYnVmW2F0ICsgMV0gPDwgOCkgfCAodGhpcy5f
YnVmW2F0ICsgMl0gPDwgMTYpIHwgKHRoaXMuX2J1ZlthdCArIDNdIDw8IDI0KSkgPj4+IDA7CiAg
ICAgfQotICAgIGdldFZhcnVpbnQoYXQpIHsKKyAgICBnZXRWYXJ1aW50MzIoYXQpIHsKICAgICAg
ICAgbGV0IHYgPSAwOwogICAgICAgICBsZXQgc2hpZnQgPSAwOwogICAgICAgICBsZXQgYnl0ZSA9
IDA7CkBAIC0xNzgsMTAgKzE4NSwxMCBAQCBleHBvcnQgZGVmYXVsdCBjbGFzcyBMb3dMZXZlbEJp
bmFyeSB7CiAgICAgICAgICAgICBzaGlmdCArPSA3OwogICAgICAgICB9IHdoaWxlICgoYnl0ZSAm
IDB4ODApICE9PSAwKTsKICAgICAgICAgaWYgKHNoaWZ0IC0gNyA+IDMyKSB0aHJvdyBuZXcgUmFu
Z2VFcnJvcihgU2hpZnRpbmcgdG9vIG11Y2ggYXQgJHthdH1gKTsKLSAgICAgICAgaWYgKChzaGlm
dCA9PSAzNSkgJiYgKChieXRlICYgMHhGMCkgIT0gMCkpIHRocm93IG5ldyBFcnJvcihgVW5leHBl
Y3RlZCBub24tc2lnbmlmaWNhbnQgdmFydWludCBiaXRzIGluIGxhc3QgYnl0ZSAweCR7Ynl0ZS50
b1N0cmluZygxNil9YCk7CisgICAgICAgIGlmICgoc2hpZnQgPT0gMzUpICYmICgoYnl0ZSAmIDB4
RjApICE9IDApKSB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgbm9uLXNpZ25pZmljYW50IHZh
cnVpbnQzMiBiaXRzIGluIGxhc3QgYnl0ZSAweCR7Ynl0ZS50b1N0cmluZygxNil9YCk7CiAgICAg
ICAgIHJldHVybiB7IHZhbHVlOiB2LCBuZXh0OiBhdCB9OwogICAgIH0KLSAgICBnZXRWYXJpbnQo
YXQpIHsKKyAgICBnZXRWYXJpbnQzMihhdCkgewogICAgICAgICBsZXQgdiA9IDA7CiAgICAgICAg
IGxldCBzaGlmdCA9IDA7CiAgICAgICAgIGxldCBieXRlID0gMDsKQEAgLTE5MSw3ICsxOTgsNyBA
QCBleHBvcnQgZGVmYXVsdCBjbGFzcyBMb3dMZXZlbEJpbmFyeSB7CiAgICAgICAgICAgICBzaGlm
dCArPSA3OwogICAgICAgICB9IHdoaWxlICgoYnl0ZSAmIDB4ODApICE9PSAwKTsKICAgICAgICAg
aWYgKHNoaWZ0IC0gNyA+IDMyKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcihgU2hpZnRpbmcgdG9vIG11
Y2ggYXQgJHthdH1gKTsKLSAgICAgICAgaWYgKChzaGlmdCA9PSAzNSkgJiYgKCgoYnl0ZSA8PCAy
NikgPj4gMzApICE9ICgoYnl0ZSA8PCAyNSkgPj4gMzEpKSkgdGhyb3cgbmV3IEVycm9yKGBVbmV4
cGVjdGVkIG5vbi1zaWduaWZpY2FudCB2YXJpbnQgYml0cyBpbiBsYXN0IGJ5dGUgMHgke2J5dGUu
dG9TdHJpbmcoMTYpfWApOworICAgICAgICBpZiAoKHNoaWZ0ID09IDM1KSAmJiAoKChieXRlIDw8
IDI2KSA+PiAzMCkgIT0gKChieXRlIDw8IDI1KSA+PiAzMSkpKSB0aHJvdyBuZXcgRXJyb3IoYFVu
ZXhwZWN0ZWQgbm9uLXNpZ25pZmljYW50IHZhcmludDMyIGJpdHMgaW4gbGFzdCBieXRlIDB4JHti
eXRlLnRvU3RyaW5nKDE2KX1gKTsKICAgICAgICAgaWYgKChieXRlICYgMHg0MCkgPT09IDB4NDAp
IHsKICAgICAgICAgICAgIGNvbnN0IHNleHQgPSBzaGlmdCA8IDMyID8gMzIgLSBzaGlmdCA6IDA7
CiAgICAgICAgICAgICB2ID0gKHYgPDwgc2V4dCkgPj4gc2V4dDsKQEAgLTE5OSwxMiArMjA2LDEy
IEBAIGV4cG9ydCBkZWZhdWx0IGNsYXNzIExvd0xldmVsQmluYXJ5IHsKICAgICAgICAgcmV0dXJu
IHsgdmFsdWU6IHYsIG5leHQ6IGF0IH07CiAgICAgfQogICAgIGdldFZhcnVpbnQ3KGF0KSB7Ci0g
ICAgICAgIGNvbnN0IHJlcyA9IHRoaXMuZ2V0VmFydWludChhdCk7CisgICAgICAgIGNvbnN0IHJl
cyA9IHRoaXMuZ2V0VmFydWludDMyKGF0KTsKICAgICAgICAgaWYgKHJlcy52YWx1ZSA+IHZhcnVp
bnQ3TWF4KSB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIGEgdmFydWludDcsIGdvdCB2YWx1ZSAk
e3Jlcy52YWx1ZX1gKTsKICAgICAgICAgcmV0dXJuIHJlczsKICAgICB9CiAgICAgZ2V0U3RyaW5n
KGF0KSB7Ci0gICAgICAgIGNvbnN0IHNpemUgPSB0aGlzLmdldFZhcnVpbnQoYXQpOworICAgICAg
ICBjb25zdCBzaXplID0gdGhpcy5nZXRWYXJ1aW50MzIoYXQpOwogICAgICAgICBsZXQgc3RyID0g
IiI7CiAgICAgICAgIGZvciAobGV0IGkgPSBzaXplLm5leHQ7IGkgIT09IHNpemUubmV4dCArIHNp
emUudmFsdWU7IGkgKz0gMikKICAgICAgICAgICAgIHN0ciArPSBTdHJpbmcuZnJvbUNoYXJDb2Rl
KHRoaXMuZ2V0VWludDE2KGkpKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9zZWxmLXRlc3Qv
dGVzdF9Mb3dMZXZlbEJpbmFyeV92YXJpbnQuanMgYi9KU1Rlc3RzL3dhc20vc2VsZi10ZXN0L3Rl
c3RfTG93TGV2ZWxCaW5hcnlfdmFyaW50LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA3ZGRjOGNmM2JmMTAxMDllNzljZDkxMDI2MjA1ZjJkMjM0NDMwODJjLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0pTVGVzdHMvd2FzbS9zZWxmLXRlc3Qv
dGVzdF9Mb3dMZXZlbEJpbmFyeV92YXJpbnQuanMKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCww
IEBACi1pbXBvcnQgTG93TGV2ZWxCaW5hcnksICogYXMgTExCIGZyb20gJy4uL0xvd0xldmVsQmlu
YXJ5LmpzJzsKLWltcG9ydCAqIGFzIGFzc2VydCBmcm9tICcuLi9hc3NlcnQuanMnOwotCi1sZXQg
dmFsdWVzID0gW107Ci1mb3IgKGxldCBpID0gTExCLnZhcmludE1pbjsgaSAhPT0gTExCLnZhcmlu
dE1pbiArIDEwMjQ7ICsraSkgdmFsdWVzLnB1c2goaSk7Ci1mb3IgKGxldCBpID0gLTIwNDg7IGkg
IT09IDIwNDg7ICsraSkgdmFsdWVzLnB1c2goaSk7Ci1mb3IgKGxldCBpID0gTExCLnZhcmludE1h
eDsgaSAhPT0gTExCLnZhcmludE1heCAtIDEwMjQ7IC0taSkgdmFsdWVzLnB1c2goaSk7Ci0KLWZv
ciAoY29uc3QgaSBvZiB2YWx1ZXMpIHsKLSAgICBsZXQgYiA9IG5ldyBMb3dMZXZlbEJpbmFyeSgp
OwotICAgIGIudmFyaW50KGkpOwotICAgIGNvbnN0IHYgPSBiLmdldFZhcmludCgwKTsKLSAgICBp
ZiAodi52YWx1ZSAhPT0gaSkKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBXcm90ZSAiJHtpfSIg
YW5kIHJlYWQgYmFjayAiJHt2fSJgKTsKLSAgICBpZiAodi5uZXh0ICE9PSBiLmdldFNpemUoKSkK
LSAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTaXplICR7di5uZXh0fSwgZXhwZWN0ZWQgJHtiLmdl
dFNpemUoKX1gKTsKLX0KLQotZm9yIChsZXQgaSA9IDA7IGkgPCBMTEIudmFyQml0c01heCArIDE7
ICsraSkgewotICAgIGxldCBiID0gbmV3IExvd0xldmVsQmluYXJ5KCk7Ci0gICAgZm9yIChsZXQg
aiA9IDA7IGogPCBpOyArK2opCi0gICAgICAgIGIudWludDgoMHg4MCk7Ci0gICAgYXNzZXJ0LnRo
cm93cygoKSA9PiBiLmdldFZhcmludCgwKSwgUmFuZ2VFcnJvciwgYFske2l9LCAke2krMX0pIGlz
IG91dCBvZiBidWZmZXIgcmFuZ2UgWzAsICR7aX0pYCk7Ci19Ci0KLWxldCBiID0gbmV3IExvd0xl
dmVsQmluYXJ5KCk7Ci1mb3IgKGxldCBpID0gMDsgaSA8IExMQi52YXJCaXRzTWF4OyArK2kpCi0g
ICAgYi51aW50OCgweDgwKTsKLWIudWludDgoMHgwMCk7Ci1hc3NlcnQudGhyb3dzKCgpID0+IGIu
Z2V0VmFyaW50KDApLCBSYW5nZUVycm9yLCBgU2hpZnRpbmcgdG9vIG11Y2ggYXQgNmApOwpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy93YXNtL3NlbGYtdGVzdC90ZXN0X0xvd0xldmVsQmluYXJ5X3Zhcmlu
dDMyLmpzIGIvSlNUZXN0cy93YXNtL3NlbGYtdGVzdC90ZXN0X0xvd0xldmVsQmluYXJ5X3Zhcmlu
dDMyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjliOGU2YWJjODc1YjA0NmNlODAyMzNmOTI1OWQwMGI0NmIxODc5
YzYKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dhc20vc2VsZi10ZXN0L3Rlc3RfTG93TGV2
ZWxCaW5hcnlfdmFyaW50MzIuanMKQEAgLTAsMCArMSwzMCBAQAoraW1wb3J0IExvd0xldmVsQmlu
YXJ5LCAqIGFzIExMQiBmcm9tICcuLi9Mb3dMZXZlbEJpbmFyeS5qcyc7CitpbXBvcnQgKiBhcyBh
c3NlcnQgZnJvbSAnLi4vYXNzZXJ0LmpzJzsKKworbGV0IHZhbHVlcyA9IFtdOworZm9yIChsZXQg
aSA9IExMQi52YXJpbnQzMk1pbjsgaSAhPT0gTExCLnZhcmludDMyTWluICsgMTAyNDsgKytpKSB2
YWx1ZXMucHVzaChpKTsKK2ZvciAobGV0IGkgPSAtMjA0ODsgaSAhPT0gMjA0ODsgKytpKSB2YWx1
ZXMucHVzaChpKTsKK2ZvciAobGV0IGkgPSBMTEIudmFyaW50MzJNYXg7IGkgIT09IExMQi52YXJp
bnQzMk1heCAtIDEwMjQ7IC0taSkgdmFsdWVzLnB1c2goaSk7CisKK2ZvciAoY29uc3QgaSBvZiB2
YWx1ZXMpIHsKKyAgICBsZXQgYiA9IG5ldyBMb3dMZXZlbEJpbmFyeSgpOworICAgIGIudmFyaW50
MzIoaSk7CisgICAgY29uc3QgdiA9IGIuZ2V0VmFyaW50MzIoMCk7CisgICAgaWYgKHYudmFsdWUg
IT09IGkpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgV3JvdGUgIiR7aX0iIGFuZCByZWFkIGJh
Y2sgIiR7dn0iYCk7CisgICAgaWYgKHYubmV4dCAhPT0gYi5nZXRTaXplKCkpCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcihgU2l6ZSAke3YubmV4dH0sIGV4cGVjdGVkICR7Yi5nZXRTaXplKCl9YCk7
Cit9CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgTExCLnZhckJpdHNNYXggKyAxOyArK2kpIHsKKyAg
ICBsZXQgYiA9IG5ldyBMb3dMZXZlbEJpbmFyeSgpOworICAgIGZvciAobGV0IGogPSAwOyBqIDwg
aTsgKytqKQorICAgICAgICBiLnVpbnQ4KDB4ODApOworICAgIGFzc2VydC50aHJvd3MoKCkgPT4g
Yi5nZXRWYXJpbnQzMigwKSwgUmFuZ2VFcnJvciwgYFske2l9LCAke2krMX0pIGlzIG91dCBvZiBi
dWZmZXIgcmFuZ2UgWzAsICR7aX0pYCk7Cit9CisKK2xldCBiID0gbmV3IExvd0xldmVsQmluYXJ5
KCk7Citmb3IgKGxldCBpID0gMDsgaSA8IExMQi52YXJCaXRzTWF4OyArK2kpCisgICAgYi51aW50
OCgweDgwKTsKK2IudWludDgoMHgwMCk7Cithc3NlcnQudGhyb3dzKCgpID0+IGIuZ2V0VmFyaW50
MzIoMCksIFJhbmdlRXJyb3IsIGBTaGlmdGluZyB0b28gbXVjaCBhdCA2YCk7CmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3dhc20vc2VsZi10ZXN0L3Rlc3RfTG93TGV2ZWxCaW5hcnlfdmFydWludC5qcyBi
L0pTVGVzdHMvd2FzbS9zZWxmLXRlc3QvdGVzdF9Mb3dMZXZlbEJpbmFyeV92YXJ1aW50LmpzCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZTgyZTEzNWU5ZDE3NTBjZDRlYTJkNWQ3NTQx
YWQ3YzU0NzliZTA4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0pTVGVzdHMvd2FzbS9zZWxmLXRlc3QvdGVzdF9Mb3dMZXZlbEJpbmFyeV92YXJ1aW50Lmpz
CisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotaW1wb3J0IExvd0xldmVsQmluYXJ5LCAq
IGFzIExMQiBmcm9tICcuLi9Mb3dMZXZlbEJpbmFyeS5qcyc7Ci1pbXBvcnQgKiBhcyBhc3NlcnQg
ZnJvbSAnLi4vYXNzZXJ0LmpzJzsKLQotbGV0IHZhbHVlcyA9IFtdOwotZm9yIChsZXQgaSA9IExM
Qi52YXJ1aW50TWluOyBpICE9PSBMTEIudmFydWludE1pbiArIDEwMjQ7ICsraSkgdmFsdWVzLnB1
c2goaSk7Ci1mb3IgKGxldCBpID0gTExCLnZhcnVpbnRNYXg7IGkgIT09IExMQi52YXJ1aW50TWF4
IC0gMTAyNDsgLS1pKSB2YWx1ZXMucHVzaChpKTsKLQotZm9yIChjb25zdCBpIG9mIHZhbHVlcykg
ewotICAgIGxldCBiID0gbmV3IExvd0xldmVsQmluYXJ5KCk7Ci0gICAgYi52YXJ1aW50KGkpOwot
ICAgIGNvbnN0IHYgPSBiLmdldFZhcnVpbnQoMCk7Ci0gICAgaWYgKHYudmFsdWUgIT09IGkpCi0g
ICAgICAgIHRocm93IG5ldyBFcnJvcihgV3JvdGUgIiR7aX0iIGFuZCByZWFkIGJhY2sgIiR7dn0i
YCk7Ci0gICAgaWYgKHYubmV4dCAhPT0gYi5nZXRTaXplKCkpCi0gICAgICAgIHRocm93IG5ldyBF
cnJvcihgU2l6ZSAke3YubmV4dH0sIGV4cGVjdGVkICR7Yi5nZXRTaXplKCl9YCk7Ci19Ci0KLWZv
ciAobGV0IGkgPSAwOyBpIDwgTExCLnZhckJpdHNNYXggKyAxOyArK2kpIHsKLSAgICBsZXQgYiA9
IG5ldyBMb3dMZXZlbEJpbmFyeSgpOwotICAgIGZvciAobGV0IGogPSAwOyBqIDwgaTsgKytqKQot
ICAgICAgICBiLnVpbnQ4KDB4ODApOwotICAgIGFzc2VydC50aHJvd3MoKCkgPT4gYi5nZXRWYXJp
bnQoMCksIFJhbmdlRXJyb3IsIGBbJHtpfSwgJHtpKzF9KSBpcyBvdXQgb2YgYnVmZmVyIHJhbmdl
IFswLCAke2l9KWApOwotfQotCi1sZXQgYiA9IG5ldyBMb3dMZXZlbEJpbmFyeSgpOwotZm9yIChs
ZXQgaSA9IDA7IGkgPCBMTEIudmFyQml0c01heDsgKytpKQotICAgIGIudWludDgoMHg4MCk7Ci1i
LnVpbnQ4KDB4MDApOwotYXNzZXJ0LnRocm93cygoKSA9PiBiLmdldFZhcmludCgwKSwgUmFuZ2VF
cnJvciwgYFNoaWZ0aW5nIHRvbyBtdWNoIGF0IDZgKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2Fz
bS9zZWxmLXRlc3QvdGVzdF9Mb3dMZXZlbEJpbmFyeV92YXJ1aW50MzIuanMgYi9KU1Rlc3RzL3dh
c20vc2VsZi10ZXN0L3Rlc3RfTG93TGV2ZWxCaW5hcnlfdmFydWludDMyLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmU5YzY0OTYzN2I0NTA1ZjhjM2E2ZmQzODUyMzA4NWYzYjZlNzUxYmMKLS0tIC9kZXYvbnVsbAor
KysgYi9KU1Rlc3RzL3dhc20vc2VsZi10ZXN0L3Rlc3RfTG93TGV2ZWxCaW5hcnlfdmFydWludDMy
LmpzCkBAIC0wLDAgKzEsMjkgQEAKK2ltcG9ydCBMb3dMZXZlbEJpbmFyeSwgKiBhcyBMTEIgZnJv
bSAnLi4vTG93TGV2ZWxCaW5hcnkuanMnOworaW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJy4uL2Fz
c2VydC5qcyc7CisKK2xldCB2YWx1ZXMgPSBbXTsKK2ZvciAobGV0IGkgPSBMTEIudmFydWludDMy
TWluOyBpICE9PSBMTEIudmFydWludDMyTWluICsgMTAyNDsgKytpKSB2YWx1ZXMucHVzaChpKTsK
K2ZvciAobGV0IGkgPSBMTEIudmFydWludDMyTWF4OyBpICE9PSBMTEIudmFydWludDMyTWF4IC0g
MTAyNDsgLS1pKSB2YWx1ZXMucHVzaChpKTsKKworZm9yIChjb25zdCBpIG9mIHZhbHVlcykgewor
ICAgIGxldCBiID0gbmV3IExvd0xldmVsQmluYXJ5KCk7CisgICAgYi52YXJ1aW50MzIoaSk7Cisg
ICAgY29uc3QgdiA9IGIuZ2V0VmFydWludDMyKDApOworICAgIGlmICh2LnZhbHVlICE9PSBpKQor
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFdyb3RlICIke2l9IiBhbmQgcmVhZCBiYWNrICIke3Z9
ImApOworICAgIGlmICh2Lm5leHQgIT09IGIuZ2V0U2l6ZSgpKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoYFNpemUgJHt2Lm5leHR9LCBleHBlY3RlZCAke2IuZ2V0U2l6ZSgpfWApOworfQorCitm
b3IgKGxldCBpID0gMDsgaSA8IExMQi52YXJCaXRzTWF4ICsgMTsgKytpKSB7CisgICAgbGV0IGIg
PSBuZXcgTG93TGV2ZWxCaW5hcnkoKTsKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IGk7ICsraikK
KyAgICAgICAgYi51aW50OCgweDgwKTsKKyAgICBhc3NlcnQudGhyb3dzKCgpID0+IGIuZ2V0VmFy
aW50MzIoMCksIFJhbmdlRXJyb3IsIGBbJHtpfSwgJHtpKzF9KSBpcyBvdXQgb2YgYnVmZmVyIHJh
bmdlIFswLCAke2l9KWApOworfQorCitsZXQgYiA9IG5ldyBMb3dMZXZlbEJpbmFyeSgpOworZm9y
IChsZXQgaSA9IDA7IGkgPCBMTEIudmFyQml0c01heDsgKytpKQorICAgIGIudWludDgoMHg4MCk7
CitiLnVpbnQ4KDB4MDApOworYXNzZXJ0LnRocm93cygoKSA9PiBiLmdldFZhcmludDMyKDApLCBS
YW5nZUVycm9yLCBgU2hpZnRpbmcgdG9vIG11Y2ggYXQgNmApOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294541</attachid>
            <date>2016-11-11 14:40:34 -0800</date>
            <delta_ts>2016-11-11 15:53:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164611-20161111143619.patch</filename>
            <type>text/plain</type>
            <size>97795</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4NTE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
MjRmNTliYjgzNWIzOGY2NmI2YjEwN2VjY2Q0NWM5NDM1OGJkMzVkLi5iMTc0ZmM0NzZjNjI4ODE4
MjcwNWNkZmZmOTM0ODdjMTQ4ZmNlNTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MiBAQAorMjAxNi0xMS0xMSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBNb3ZlIFdhc20gdGVzdHMgdG8gSlMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDYxMQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggdHJhbnNsYXRlcyBtb3N0
IG9mIHRoZSB0ZXN0cyBmcm9tIHRlc3RXYXNtLmNwcCB0byB0aGUgSlMgdGVzdGluZyBhcGkuIE1v
c3Qgb2YgdGhlCisgICAgICAgIG9tbWl0ZWQgdGVzdHMgd2VyZSBlYXJsaWVzdCB0ZXN0cywgd2hp
Y2ggdGVzdGVkIHRyaXZpYWwgdGhpbmdzLCBsaWtlIGFkZGluZyB0d28KKyAgICAgICAgY29uc3Rh
bnRzLiBTb21lIHRlc3RzIGFyZSBvbW1pdGVkIGZvciBvdGhlciByZWFzb25zLCBob3dldmVyLiBU
aGVzZSBhcmU6CisKKyAgICAgICAgMSkgVGVzdHMgdXNpbmcgSTY0IHNpbmNlIHRoZSB0ZXN0aW5n
IGFwaSBkb2VzIG5vdCB5ZXQga25vdyBob3cgdG8gaGFuZGxlIDY0LWJpdCBudW1iZXJzLiAgMikK
KyAgICAgICAgVGVzdHMgdGhhdCB3b3VsZCB2YWxpZGF0ZSB0aGUgbWVtb3J5IG9mIHRoZSBtb2R1
bGUgb25jZSB3YXNtIHdhcyBkb25lIHdpdGggaXQgc2luY2UgdGhhdCdzCisgICAgICAgIG5vdCBy
ZWFsbHkgcG9zc2libGUgaW4gSlMuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gbWFrZSBzdWNoIGEg
dHJhbnNsYXRpb24gZWFzaWVyIHRoaXMgcGF0Y2ggYWxzbyBhZGRzIHNvbWUgZmVhdHVyZXMgdG8g
dGhlIEpTCisgICAgICAgIHRlc3RpbmcgYXBpOgorCisgICAgICAgIDEpIEJsb2NrcyBjYW4gbm93
IGJlIGRvbmUgbGV4aWNhbGx5IGJ5IGFkZGluZyBhIGxhbWJkYSBhcyB0aGUgbGFzdCBhcmd1bWVu
dCBvZiB0aGUgYmxvY2sKKyAgICAgICAgb3Bjb2RlLiBGb3IgZXhhbXBsZSBvbmUgY2FuIGRvOgor
ICAgICAgICAgICAgLi4uCisgICAgICAgICAgICAuQmxvY2soImkzMiIsIGIgPT4gYi5JMzJDb25z
dCgxKSApCisKKyAgICAgICAgYW5kIHRoZSBuZXN0ZWQgbGFtYmRhIHdpbGwgYXV0b21hdGljYWxs
eSBoYXZlIGFuIGVuZCBhdHRhY2hlZC4KKworICAgICAgICAyKSBUaGUgSlMgdGVzdGluZyBhcGkg
Y2FuIG5vdyBoYW5kbGUgaW5saW5lIHNpZ25hdHVyZSB0eXBlcy4KKworICAgICAgICAzKSBSZWxv
Y2F0ZSBzb21lIGNvZGUgdG8gbWFrZSBpdCBlYXNpZXIgdG8gZm9sbG93IGFuZCBwcmV2ZW50IDQ0
IHNwYWNlIGluZGVudGF0aW9uLgorCisgICAgICAgIDQpIFJlbmFtZSB2YXJ1aW50L3ZhcmludCB0
byB2YXJ1aW50MzIvdmFyaW50MzIsIHRoaXMgbGV0cyB0aGVtIGJlIGRpcmVjdGx5IGNhbGxlZCBm
cm9tIHRoZQorICAgICAgICB3YXNtLmpzb24gd2l0aG91dCBiZWluZyByZW1hcHBlZC4KKworICAg
ICAgICA1KSBBZGQgc3VwcG9ydCBmb3IgTWVtb3J5IGFuZCBGdW5jdGlvbiBzZWN0aW9ucyB0byB0
aGUgQnVpbGRlci4KKworICAgICAgICA2KSBBZGQgc3VwcG9ydCBmb3IgbG9jYWwgdmFyaWFibGVz
LgorCisgICAgICAgIE9uIHRoZSBKU0Mgc2lkZSwgd2UgbmVlZGVkIHRvIGV4cG9zZSBhIG5ldyBm
dW5jdGlvbiB0byB2YWxpZGF0ZSB0aGUgY29tcGlsZWQgd2FzbSBjb2RlCisgICAgICAgIGJlaGF2
ZXMgdGhlIHdheSB3ZSBleHBlY3QuIEF0IGxlYXN0IHVudGlsIHRoZSBKUyBXYXNtIEFQSSBpcyBm
aW5pc2hlZC4gVGhlIG5ldyB2YWxpZGF0aW9uCisgICAgICAgIGZ1bmN0aW9uLCB0ZXN0V2FzbU1v
ZHVsZUZ1bmN0aW9ucywgdGFrZXMgYW4gYXJyYXkgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIHdhc20g
YmluYXJ5LCB0aGUKKyAgICAgICAgbnVtYmVyIG9mIGZ1bmN0aW9ucyBpbiB0aGUgYmxvYiBhbmQg
dGVzdHMgZm9yIGVhY2ggb2YgdGhvc2UgZnVuY3Rpb25zLgorCisgICAgICAgICoganNjLmNwcDoK
KyAgICAgICAgKEdsb2JhbE9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoYm94KToK
KyAgICAgICAgKGNhbGxXYXNtRnVuY3Rpb24pOgorICAgICAgICAoZnVuY3Rpb25UZXN0V2FzbU1v
ZHVsZSk6CisgICAgICAgICogdGVzdFdhc20uY3BwOgorICAgICAgICAoY2hlY2tQbGFuKToKKyAg
ICAgICAgKHJ1bldhc21UZXN0cyk6CisgICAgICAgICogd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5j
cHA6CisgICAgICAgIChKU0M6Oldhc206OnBhcnNlQW5kQ29tcGlsZSk6CisgICAgICAgICogd2Fz
bS9XYXNtRnVuY3Rpb25QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6RnVuY3Rpb25QYXJz
ZXI8Q29udGV4dD46OnBhcnNlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6RnVuY3Rpb25QYXJzZXI8
Q29udGV4dD46OnBhcnNlQm9keSk6CisgICAgICAgIChKU0M6Oldhc206OkZ1bmN0aW9uUGFyc2Vy
PENvbnRleHQ+OjpwYXJzZUJsb2NrKTogRGVsZXRlZC4KKyAgICAgICAgKiB3YXNtL1dhc21Nb2R1
bGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpNb2R1bGVQYXJzZXI6OnBhcnNlTWVt
b3J5KToKKyAgICAgICAgKEpTQzo6V2FzbTo6TW9kdWxlUGFyc2VyOjpwYXJzZUV4cG9ydCk6Cisg
ICAgICAgICogd2FzbS9XYXNtUGxhbi5jcHA6CisgICAgICAgIChKU0M6Oldhc206OlBsYW46OlBs
YW4pOgorICAgICAgICAoSlNDOjpXYXNtOjpQbGFuOjpydW4pOgorICAgICAgICAqIHdhc20vV2Fz
bVBsYW4uaDoKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5TW9kdWxlKToKKworICAg
ICAgICAqIGpzYy5jcHA6CisgICAgICAgIChHbG9iYWxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKToK
KyAgICAgICAgKGJveCk6CisgICAgICAgIChjYWxsV2FzbUZ1bmN0aW9uKToKKyAgICAgICAgKGZ1
bmN0aW9uVGVzdFdhc21Nb2R1bGVGdW5jdGlvbnMpOgorICAgICAgICAqIHRlc3RXYXNtLmNwcDoK
KyAgICAgICAgKGNoZWNrUGxhbik6CisgICAgICAgIChydW5XYXNtVGVzdHMpOgorICAgICAgICAq
IHdhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpwYXJzZUFu
ZENvbXBpbGUpOgorICAgICAgICAqIHdhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmg6CisgICAgICAg
IChKU0M6Oldhc206OkZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZSk6CisgICAgICAgIChK
U0M6Oldhc206OkZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZUJvZHkpOgorICAgICAgICAo
SlNDOjpXYXNtOjpGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VCbG9jayk6IERlbGV0ZWQu
CisgICAgICAgICogd2FzbS9XYXNtTW9kdWxlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6V2Fz
bTo6TW9kdWxlUGFyc2VyOjpwYXJzZU1lbW9yeSk6CisgICAgICAgIChKU0M6Oldhc206Ok1vZHVs
ZVBhcnNlcjo6cGFyc2VFeHBvcnQpOgorICAgICAgICAqIHdhc20vV2FzbVBsYW4uY3BwOgorICAg
ICAgICAoSlNDOjpXYXNtOjpQbGFuOjpQbGFuKToKKyAgICAgICAgKEpTQzo6V2FzbTo6UGxhbjo6
cnVuKToKKyAgICAgICAgKiB3YXNtL1dhc21QbGFuLmg6CisgICAgICAgICogd2FzbS9qcy9XZWJB
c3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0SlNX
ZWJBc3NlbWJseU1vZHVsZSk6CisKIDIwMTYtMTEtMDkgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21p
bGxlckBhcHBsZS5jb20+CiAKICAgICAgICAganNjIENMSSBzaG91bGQgd29yayB3aXRoIHRoZSBy
ZW1vdGUgaW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4IDIzYmY3NDcwZTcxZTgxNmI4
ZmZiOWYxZjI1YmUxMjUyOGJiMjBiODcuLjU1MTNmNWY0OWJjZTZiOGNhNWJhMTViNzYzNGUzZGE5
NjdmNjJkZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC01NCw5ICs1NCwxMSBAQAogI2luY2x1
ZGUgIkpTU3RyaW5nLmgiCiAjaW5jbHVkZSAiSlNUeXBlZEFycmF5cy5oIgogI2luY2x1ZGUgIkxM
SW50RGF0YS5oIgorI2luY2x1ZGUgIkxMSW50VGh1bmtzLmgiCiAjaW5jbHVkZSAiT2JqZWN0Q29u
c3RydWN0b3IuaCIKICNpbmNsdWRlICJQYXJzZXJFcnJvci5oIgogI2luY2x1ZGUgIlByb2ZpbGVy
RGF0YWJhc2UuaCIKKyNpbmNsdWRlICJQcm90b0NhbGxGcmFtZS5oIgogI2luY2x1ZGUgIlNhbXBs
aW5nUHJvZmlsZXIuaCIKICNpbmNsdWRlICJTaGFkb3dDaGlja2VuLmgiCiAjaW5jbHVkZSAiU3Rh
Y2tWaXNpdG9yLmgiCkBAIC02NSw2ICs2Nyw3IEBACiAjaW5jbHVkZSAiU3VwZXJTYW1wbGVyLmgi
CiAjaW5jbHVkZSAiVGVzdFJ1bm5lclV0aWxzLmgiCiAjaW5jbHVkZSAiVHlwZVByb2ZpbGVyTG9n
LmgiCisjaW5jbHVkZSAiV2FzbVBsYW4uaCIKICNpbmNsdWRlIDxsb2NhbGUuaD4KICNpbmNsdWRl
IDxtYXRoLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KQEAgLTkwNSw2ICs5MDgsMTAgQEAgc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TdGFydFNhbXBsaW5nUHJvZmls
ZXIoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvblNhbXBsaW5nUHJvZmlsZXJTdGFja1RyYWNlcyhFeGVjU3RhdGUqKTsKICNlbmRpZgogCisj
aWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25UZXN0V2FzbU1vZHVsZUZ1bmN0aW9ucyhFeGVjU3RhdGUqKTsKKyNlbmRpZgor
CiAjaWYgRU5BQkxFKFNBTVBMSU5HX0ZMQUdTKQogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25TZXRTYW1wbGluZ0ZsYWdzKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DbGVhclNhbXBsaW5nRmxhZ3MoRXhl
Y1N0YXRlKik7CkBAIC0xMTUyLDYgKzExNTksMTAgQEAgcHJvdGVjdGVkOgogICAgICAgICBhZGRG
dW5jdGlvbih2bSwgInNhbXBsaW5nUHJvZmlsZXJTdGFja1RyYWNlcyIsIGZ1bmN0aW9uU2FtcGxp
bmdQcm9maWxlclN0YWNrVHJhY2VzLCAwKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKFdFQkFTU0VN
QkxZKQorICAgICAgICBhZGRGdW5jdGlvbih2bSwgInRlc3RXYXNtTW9kdWxlIiwgZnVuY3Rpb25U
ZXN0V2FzbU1vZHVsZUZ1bmN0aW9ucywgMCk7CisjZW5kaWYKKwogICAgICAgICBpZiAoIWFyZ3Vt
ZW50cy5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIEpTQXJyYXkqIGFycmF5ID0gY29uc3RydWN0
RW1wdHlBcnJheShnbG9iYWxFeGVjKCksIDApOwogICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBhcmd1bWVudHMuc2l6ZSgpOyArK2kpCkBAIC0yMzUyLDYgKzIzNjMsMTA0IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TYW1wbGluZ1Byb2ZpbGVyU3RhY2tU
cmFjZXMoRXhlY1N0YXRlKiBleGVjCiB9CiAjZW5kaWYgLy8gRU5BQkxFKFNBTVBMSU5HX1BST0ZJ
TEVSKQogCisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorCitzdGF0aWMgSlNWYWx1ZSBib3goRXhl
Y1N0YXRlKiBleGVjLCBWTSYgdm0sIEpTVmFsdWUgd2FzbVZhbHVlKQoreworICAgIEpTU3RyaW5n
KiB0eXBlID0ganNDYXN0PEpTU3RyaW5nKj4od2FzbVZhbHVlLmdldChleGVjLCBtYWtlSWRlbnRp
Zmllcih2bSwgInR5cGUiKSkpOworICAgIEpTVmFsdWUgdmFsdWUgPSB3YXNtVmFsdWUuZ2V0KGV4
ZWMsIG1ha2VJZGVudGlmaWVyKHZtLCAidmFsdWUiKSk7CisKKyAgICBjb25zdCBTdHJpbmcmIHR5
cGVTdHJpbmcgPSB0eXBlLT52YWx1ZShleGVjKTsKKyAgICBpZiAodHlwZVN0cmluZyA9PSAiaTY0
IikgeworICAgICAgICBSRUxFQVNFX0FTU0VSVCh2YWx1ZS5pc1N0cmluZygpKTsKKyAgICAgICAg
aW50NjRfdCByZXN1bHQ7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKHNzY2FuZihiaXR3aXNlX2Nh
c3Q8Y29uc3QgY2hhcio+KGpzQ2FzdDxKU1N0cmluZyo+KHZhbHVlKS0+dmFsdWUoZXhlYykuY2hh
cmFjdGVyczgoKSksICIlbGxkIiwgJnJlc3VsdCkgIT0gRU9GKTsKKyAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmRlY29kZShyZXN1bHQpOworICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVCh2YWx1ZS5p
c051bWJlcigpKTsKKworICAgIGlmICh0eXBlU3RyaW5nID09ICJpMzIiKSB7CisgICAgICAgIFJF
TEVBU0VfQVNTRVJUKHZhbHVlLmlzSW50MzIoKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpk
ZWNvZGUodmFsdWUuYXNJbnQzMigpKTsKKyAgICB9CisKKyAgICBpZiAodHlwZVN0cmluZyA9PSAi
ZjMyIikKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZShiaXR3aXNlX2Nhc3Q8dWludDMy
X3Q+KHZhbHVlLnRvRmxvYXQoZXhlYykpKTsKKworICAgIFJFTEVBU0VfQVNTRVJUKHR5cGVTdHJp
bmcgPT0gImY2NCIpOworICAgIHJldHVybiB2YWx1ZTsKK30KKworc3RhdGljIEpTVmFsdWUgY2Fs
bFdhc21GdW5jdGlvbihWTSogdm0sIGNvbnN0IEIzOjpDb21waWxhdGlvbiYgY29kZSwgVmVjdG9y
PEpTVmFsdWU+JiBib3hlZEFyZ3MpCit7CisgICAgSlNWYWx1ZSBmaXJzdEFyZ3VtZW50OworICAg
IGludCBhcmdDb3VudCA9IDE7CisgICAgSlNWYWx1ZSogcmVtYWluaW5nQXJncyA9IG51bGxwdHI7
CisgICAgaWYgKGJveGVkQXJncy5zaXplKCkpIHsKKyAgICAgICAgcmVtYWluaW5nQXJncyA9IGJv
eGVkQXJncy5kYXRhKCk7CisgICAgICAgIGZpcnN0QXJndW1lbnQgPSAqcmVtYWluaW5nQXJnczsK
KyAgICAgICAgcmVtYWluaW5nQXJncysrOworICAgICAgICBhcmdDb3VudCA9IGJveGVkQXJncy5z
aXplKCk7CisgICAgfQorCisgICAgUHJvdG9DYWxsRnJhbWUgcHJvdG9DYWxsRnJhbWU7CisgICAg
cHJvdG9DYWxsRnJhbWUuaW5pdChudWxscHRyLCBudWxscHRyLCBmaXJzdEFyZ3VtZW50LCBhcmdD
b3VudCwgcmVtYWluaW5nQXJncyk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHZtRW50
cnlUb1dhc20oY29kZS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSwgdm0sICZwcm90b0NhbGxG
cmFtZSkpOworfQorCisvLyB0ZXN0V2FzbU1vZHVsZShKU0FycmF5QnVmZmVyVmlldyBzb3VyY2Us
IG51bWJlciBmdW5jdGlvbkNvdW50LCAuLi5bW1dhc21WYWx1ZSwgW1dhc21WYWx1ZV1dXSkgd2hl
cmUgdGhlIGl0aCBjb3B5IG9mIFtbcmVzdWx0LCBbYXJnc11dXSBpcyBhIGxpc3QKKy8vIG9mIGFy
Z3VtZW50cyB0byBiZSBwYXNzZWQgdG8gdGhlIGl0aCB3YXNtIGZ1bmN0aW9uIGFzIHdlbGwgYXMg
dGhlIGV4cGVjdGVkIHJlc3VsdC4gV2FzbVZhbHVlIGlzIGFuIG9iamVjdCB3aXRoICJ0eXBlIiBh
bmQgInZhbHVlIiBwcm9wZXJ0aWVzLgorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25UZXN0V2FzbU1vZHVsZUZ1bmN0aW9ucyhFeGVjU3RhdGUqIGV4ZWMpCit7Cisg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKKyAgICBpZiAoIU9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5KCkpCisgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoInRlc3RX
YXNtTW9kdWxlIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBpZiB0aGUgdXNlV2ViQXNzZW1ibHkgb3B0
aW9uIGlzIHNldCIpKTsKKworICAgIEpTQXJyYXlCdWZmZXJWaWV3KiBzb3VyY2UgPSBqc0Nhc3Q8
SlNBcnJheUJ1ZmZlclZpZXcqPihleGVjLT5hcmd1bWVudCgwKSk7CisgICAgdWludDMyX3QgZnVu
Y3Rpb25Db3VudCA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRvVUludDMyKGV4ZWMpOworCisgICAgaWYg
KGV4ZWMtPmFyZ3VtZW50Q291bnQoKSAhPSBmdW5jdGlvbkNvdW50ICsgMikKKyAgICAgICAgQ1JB
U0goKTsKKworICAgIFdhc206OlBsYW4gcGxhbigmdm0sIHN0YXRpY19jYXN0PHVpbnQ4X3QqPihz
b3VyY2UtPnZlY3RvcigpKSwgc291cmNlLT5sZW5ndGgoKSk7CisgICAgcGxhbi5ydW4oKTsKKyAg
ICBpZiAocGxhbi5mYWlsZWQoKSkKKyAgICAgICAgQ1JBU0goKTsKKworICAgIGlmIChwbGFuLmNv
bXBpbGVkRnVuY3Rpb25Db3VudCgpICE9IGZ1bmN0aW9uQ291bnQpCisgICAgICAgIENSQVNIKCk7
CisKKyAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgZnVuY3Rpb25Db3VudDsgKytpKSB7Cisg
ICAgICAgIGlmICghcGxhbi5jb21waWxlZEZ1bmN0aW9uKGkpKQorICAgICAgICAgICAgZGF0YUxv
Z0xuKCJmYWlsZWQgdG8gY29tcGlsZSBmdW5jdGlvbiBhdCBpbmRleCIsIGkpOworCisgICAgICAg
IEpTQXJyYXkqIHRlc3RDYXNlcyA9IGpzQ2FzdDxKU0FycmF5Kj4oZXhlYy0+YXJndW1lbnQoaSAr
IDIpKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCB0ZXN0SW5kZXggPSAwOyB0ZXN0SW5kZXggPCB0
ZXN0Q2FzZXMtPmxlbmd0aCgpOyArK3Rlc3RJbmRleCkgeworICAgICAgICAgICAgSlNBcnJheSog
dGVzdCA9IGpzQ2FzdDxKU0FycmF5Kj4odGVzdENhc2VzLT5nZXRJbmRleFF1aWNrbHkodGVzdElu
ZGV4KSk7CisgICAgICAgICAgICBKU09iamVjdCogcmVzdWx0ID0ganNDYXN0PEpTT2JqZWN0Kj4o
dGVzdC0+Z2V0SW5kZXhRdWlja2x5KDApKTsKKyAgICAgICAgICAgIEpTQXJyYXkqIGFyZ3VtZW50
cyA9IGpzQ2FzdDxKU0FycmF5Kj4odGVzdC0+Z2V0SW5kZXhRdWlja2x5KDEpKTsKKworICAgICAg
ICAgICAgVmVjdG9yPEpTVmFsdWU+IGJveGVkQXJnczsKKyAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgYXJnSW5kZXggPSAwOyBhcmdJbmRleCA8IGFyZ3VtZW50cy0+bGVuZ3RoKCk7ICsrYXJnSW5k
ZXgpCisgICAgICAgICAgICAgICAgYm94ZWRBcmdzLmFwcGVuZChib3goZXhlYywgdm0sIGFyZ3Vt
ZW50cy0+Z2V0SW5kZXhRdWlja2x5KGFyZ0luZGV4KSkpOworCisgICAgICAgICAgICBKU1ZhbHVl
IGNhbGxSZXN1bHQgPSBjYWxsV2FzbUZ1bmN0aW9uKCZ2bSwgKnBsYW4uY29tcGlsZWRGdW5jdGlv
bihpKS0+anNFbnRyeVBvaW50LCBib3hlZEFyZ3MpOworICAgICAgICAgICAgSlNWYWx1ZSBleHBl
Y3RlZCA9IGJveChleGVjLCB2bSwgcmVzdWx0KTsKKyAgICAgICAgICAgIGlmIChjYWxsUmVzdWx0
ICE9IGV4cGVjdGVkKSB7CisgICAgICAgICAgICAgICAgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVy
ZShfX0ZJTEVfXywgX19MSU5FX18sIFdURl9QUkVUVFlfRlVOQ1RJT04sIHRvQ1N0cmluZygiIChj
YWxsUmVzdWx0ID09ICIsIFJhd1BvaW50ZXIoYml0d2lzZV9jYXN0PHZvaWQqPihjYWxsUmVzdWx0
KSksICIsIGV4cGVjdGVkID09ICIsIFJhd1BvaW50ZXIoYml0d2lzZV9jYXN0PHZvaWQqPihleHBl
Y3RlZCkpLCAiKSIpLmRhdGEoKSk7CisgICAgICAgICAgICAgICAgQ1JBU0goKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBlbmNvZGVkSlNVbmRlZmluZWQo
KTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFQkxZKQorCiAvLyBVc2UgU0VIIGZvciBS
ZWxlYXNlIGJ1aWxkcyBvbmx5IHRvIGdldCByaWQgb2YgdGhlIGNyYXNoIHJlcG9ydCBkaWFsb2cK
IC8vIChsdWNraWx5IHRoZSBzYW1lIHRlc3RzIGZhaWwgaW4gUmVsZWFzZSBhbmQgRGVidWcgYnVp
bGRzIHNvIGZhcikuIE5lZWQgdG8KIC8vIGJlIGluIGEgc2VwYXJhdGUgbWFpbiBmdW5jdGlvbiBi
ZWNhdXNlIHRoZSBqc2NtYWluIGZ1bmN0aW9uIHJlcXVpcmVzIG9iamVjdApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RXYXNtLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0V2FzbS5jcHAKaW5kZXggYjc1OTU2MjU3ZTU4YzE0NzM0OTI0YjY5NGZkOTk1MjVhZTY3
OTQ3OS4uNzg2YTIwOGFjMGY4NmFlNDRmY2QzNDBjYmQ5ZDkyNmFlNTZkZWI1YSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RXYXNtLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdFdhc20uY3BwCkBAIC0yNzksNiArMjc5LDcgQEAgaW5saW5lIEpTVmFsdWUg
Ym94ZChkb3VibGUgdmFsdWUpCiAKIHN0YXRpYyB2b2lkIGNoZWNrUGxhbihQbGFuJiBwbGFuLCB1
bnNpZ25lZCBleHBlY3RlZE51bWJlck9mRnVuY3Rpb25zKQogeworICAgIHBsYW4ucnVuKCk7CiAg
ICAgaWYgKHBsYW4uZmFpbGVkKCkpIHsKICAgICAgICAgZGF0YUxvZ0xuKCJNb2R1bGUgZmFpbGVk
IHRvIGNvbXBpbGUgd2l0aCBlcnJvcjogIiwgcGxhbi5lcnJvck1lc3NhZ2UoKSk7CiAgICAgICAg
IENSQVNIKCk7CkBAIC0zMjcsNyArMzI4LDcgQEAgc3RhdGljIHZvaWQgcnVuV2FzbVRlc3RzKCkK
ICAgICAgICAgICAgIDB4MGYsIDB4MTQsIDB4MDEsIDB4MGYKICAgICAgICAgfTsKIAotICAgICAg
ICBQbGFuIHBsYW4oKnZtLCB2ZWN0b3IpOworICAgICAgICBQbGFuIHBsYW4odm0sIHZlY3Rvcik7
CiAgICAgICAgIGNoZWNrUGxhbihwbGFuLCAxKTsKIAogICAgICAgICAvLyBUZXN0IHRoaXMgZG9l
c24ndCBjcmFzaC4KQEAgLTM3Myw3ICszNzQsNyBAQCBzdGF0aWMgdm9pZCBydW5XYXNtVGVzdHMo
KQogICAgICAgICAgICAgMHgxMCwgMHgwZCwgMHg0MCwgMHgwOSwgMHgwZiwgMHgxNSwgMHgwMSwg
MHgxNCwgMHgwMSwgMHgxMCwgMHgwZSwgMHg0MCwgMHgwZgogICAgICAgICB9OwogCi0gICAgICAg
IFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7CisgICAgICAgIFBsYW4gcGxhbih2bSwgdmVjdG9yKTsK
ICAgICAgICAgY2hlY2tQbGFuKHBsYW4sIDEpOwogCiAgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vz
bid0IGNyYXNoLgpAQCAtNDExLDcgKzQxMiw3IEBAIHN0YXRpYyB2b2lkIHJ1bldhc21UZXN0cygp
CiAgICAgICAgICAgICAweDBmCiAgICAgICAgIH07CiAKLSAgICAgICAgUGxhbiBwbGFuKCp2bSwg
dmVjdG9yKTsKKyAgICAgICAgUGxhbiBwbGFuKHZtLCB2ZWN0b3IpOwogICAgICAgICBjaGVja1Bs
YW4ocGxhbiwgMSk7CiAKICAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCkBAIC00
NDQsNyArNDQ1LDcgQEAgc3RhdGljIHZvaWQgcnVuV2FzbVRlc3RzKCkKICAgICAgICAgICAgIDB4
MTAsIDB4MDAsIDB4NGQsIDB4MDMsIDB4MDEsIDB4MTAsIDB4MDEsIDB4MDQsIDB4MTAsIDB4MDIs
IDB4MDYsIDB4MDEsIDB4MGYsIDB4MGYsIDB4MGYKICAgICAgICAgfTsKIAotICAgICAgICBQbGFu
IHBsYW4oKnZtLCB2ZWN0b3IpOworICAgICAgICBQbGFuIHBsYW4odm0sIHZlY3Rvcik7CiAgICAg
ICAgIGNoZWNrUGxhbihwbGFuLCAxKTsKIAogICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBj
cmFzaC4KQEAgLTQ3MSw3ICs0NzIsNyBAQCBzdGF0aWMgdm9pZCBydW5XYXNtVGVzdHMoKQogICAg
ICAgICAgICAgMHg0ZCwgMHgwMywgMHgwMSwgMHgxMCwgMHgwMSwgMHgwNCwgMHgxMCwgMHgwMiwg
MHgwZiwgMHgwZgogICAgICAgICB9OwogCi0gICAgICAgIFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7
CisgICAgICAgIFBsYW4gcGxhbih2bSwgdmVjdG9yKTsKICAgICAgICAgY2hlY2tQbGFuKHBsYW4s
IDEpOwogCiAgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgpAQCAtNTA5LDcgKzUx
MCw3IEBAIHN0YXRpYyB2b2lkIHJ1bldhc21UZXN0cygpCiAgICAgICAgICAgICAweDBmLCAweDBm
CiAgICAgICAgIH07CiAKLSAgICAgICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9yKTsKKyAgICAgICAg
UGxhbiBwbGFuKHZtLCB2ZWN0b3IpOwogICAgICAgICBjaGVja1BsYW4ocGxhbiwgMSk7CiAKICAg
ICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCkBAIC01MzksNyArNTQwLDcgQEAgc3Rh
dGljIHZvaWQgcnVuV2FzbVRlc3RzKCkKICAgICAgICAgICAgIDB4MTYsIDB4MDAsIDB4MDksIDB4
MGYKICAgICAgICAgfTsKIAotICAgICAgICBQbGFuIHBsYW4oKnZtLCB2ZWN0b3IpOworICAgICAg
ICBQbGFuIHBsYW4odm0sIHZlY3Rvcik7CiAgICAgICAgIGNoZWNrUGxhbihwbGFuLCAyKTsKIAog
ICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KQEAgLTU2NSw3ICs1NjYsNyBAQCBz
dGF0aWMgdm9pZCBydW5XYXNtVGVzdHMoKQogICAgICAgICAgICAgMHgxNiwgMHgwMCwgMHgwOSwg
MHgwZgogICAgICAgICB9OwogCi0gICAgICAgIFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7CisgICAg
ICAgIFBsYW4gcGxhbih2bSwgdmVjdG9yKTsKICAgICAgICAgY2hlY2tQbGFuKHBsYW4sIDIpOwog
CiAgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgpAQCAtNTk2LDcgKzU5Nyw3IEBA
IHN0YXRpYyB2b2lkIHJ1bldhc21UZXN0cygpCiAgICAgICAgICAgICAweDE0LCAweDAwLCAweDE0
LCAweDAwLCAweDE0LCAweDAwLCAweDE2LCAweDAwLCAweDA5LCAweDBmCiAgICAgICAgIH07CiAK
LSAgICAgICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9yKTsKKyAgICAgICAgUGxhbiBwbGFuKHZtLCB2
ZWN0b3IpOwogICAgICAgICBjaGVja1BsYW4ocGxhbiwgMik7CiAKICAgICAgICAgLy8gVGVzdCB0
aGlzIGRvZXNuJ3QgY3Jhc2guCkBAIC02MjcsNyArNjI4LDcgQEAgc3RhdGljIHZvaWQgcnVuV2Fz
bVRlc3RzKCkKICAgICAgICAgICAgIDB4NWMsIDB4MTYsIDB4MDAsIDB4NWQsIDB4MDksIDB4MGYK
ICAgICAgICAgfTsKIAotICAgICAgICBQbGFuIHBsYW4oKnZtLCB2ZWN0b3IpOworICAgICAgICBQ
bGFuIHBsYW4odm0sIHZlY3Rvcik7CiAgICAgICAgIGNoZWNrUGxhbihwbGFuLCAxKTsKIAogICAg
ICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KQEAgLTY1MywxMSArNjU0LDggQEAgc3Rh
dGljIHZvaWQgcnVuV2FzbVRlc3RzKCkKICAgICAgICAgICAgIDB4MGYsIDB4ODgsIDB4ODAsIDB4
ODAsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MDAsIDB4MTQsIDB4MDEsIDB4NWIsIDB4MDks
IDB4MGYKICAgICAgICAgfTsKIAotICAgICAgICBQbGFuIHBsYW4oKnZtLCB2ZWN0b3IpOwotICAg
ICAgICBpZiAocGxhbi5jb21waWxlZEZ1bmN0aW9uQ291bnQoKSAhPSAyIHx8ICFwbGFuLmNvbXBp
bGVkRnVuY3Rpb24oMCkgfHwgIXBsYW4uY29tcGlsZWRGdW5jdGlvbigxKSkgewotICAgICAgICAg
ICAgZGF0YUxvZ0xuKCJNb2R1bGUgZmFpbGVkIHRvIGNvbXBpbGUgY29ycmVjdGx5LiIpOwotICAg
ICAgICAgICAgQ1JBU0goKTsKLSAgICAgICAgfQorICAgICAgICBQbGFuIHBsYW4odm0sIHZlY3Rv
cik7CisgICAgICAgIGNoZWNrUGxhbihwbGFuLCAyKTsKIAogICAgICAgICAvLyBUZXN0IHRoaXMg
ZG9lc24ndCBjcmFzaC4KICAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4uY29tcGls
ZWRGdW5jdGlvbigxKS0+anNFbnRyeVBvaW50LCB7IGJveCgwKSwgYm94KDApIH0pLCAwKTsKQEAg
LTY4NCw3ICs2ODIsNyBAQCBzdGF0aWMgdm9pZCBydW5XYXNtVGVzdHMoKQogICAgICAgICAgICAg
MHgxNiwgMHgwMCwgMHgwOSwgMHgwZgogICAgICAgICB9OwogCi0gICAgICAgIFBsYW4gcGxhbigq
dm0sIHZlY3Rvcik7CisgICAgICAgIFBsYW4gcGxhbih2bSwgdmVjdG9yKTsKICAgICAgICAgY2hl
Y2tQbGFuKHBsYW4sIDIpOwogCiAgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgpA
QCAtNzEzLDcgKzcxMSw3IEBAIHN0YXRpYyB2b2lkIHJ1bldhc21UZXN0cygpCiAgICAgICAgICAg
ICAweDE0LCAweDAxLCAweDE0LCAweDAwLCAweDM0LCAweDAzLCAweDAwLCAweDE0LCAweDAxLCAw
eDJiLCAweDAzLCAweDAwLCAweDA5LCAweDBmCiAgICAgICAgIH07CiAKLSAgICAgICAgUGxhbiBw
bGFuKCp2bSwgdmVjdG9yKTsKKyAgICAgICAgUGxhbiBwbGFuKHZtLCB2ZWN0b3IpOwogICAgICAg
ICBjaGVja1BsYW4ocGxhbiwgMSk7CiAKICAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jh
c2guCkBAIC03NDAsNyArNzM4LDcgQEAgc3RhdGljIHZvaWQgcnVuV2FzbVRlc3RzKCkKICAgICAg
ICAgICAgIDB4MDEsIDB4MmEsIDB4MDIsIDB4MDAsIDB4MDksIDB4MGYKICAgICAgICAgfTsKIAot
ICAgICAgICBQbGFuIHBsYW4oKnZtLCB2ZWN0b3IpOworICAgICAgICBQbGFuIHBsYW4odm0sIHZl
Y3Rvcik7CiAgICAgICAgIGNoZWNrUGxhbihwbGFuLCAxKTsKIAogICAgICAgICAvLyBUZXN0IHRo
aXMgZG9lc24ndCBjcmFzaC4KQEAgLTc3Nyw3ICs3NzUsNyBAQCBzdGF0aWMgdm9pZCBydW5XYXNt
VGVzdHMoKQogICAgICAgICAgICAgMHgwZiwgMHgwOSwgMHgwZgogICAgICAgICB9OwogCi0gICAg
ICAgIFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7CisgICAgICAgIFBsYW4gcGxhbih2bSwgdmVjdG9y
KTsKICAgICAgICAgY2hlY2tQbGFuKHBsYW4sIDEpOwogICAgICAgICBBU1NFUlQocGxhbi5tZW1v
cnkoKS0+c2l6ZSgpKTsKIApAQCAtODI5LDcgKzgyNyw3IEBAIHN0YXRpYyB2b2lkIHJ1bldhc21U
ZXN0cygpCiAgICAgICAgICAgICAweDJlLCAweDAwLCAweDAwLCAweDEwLCAweDAxLCAweDE0LCAw
eDAzLCAweDQwLCAweDE1LCAweDAzLCAweDA2LCAweDAwLCAweDBmLCAweDBmLCAweDA5LCAweDBm
CiAgICAgICAgIH07CiAKLSAgICAgICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9yKTsKKyAgICAgICAg
UGxhbiBwbGFuKHZtLCB2ZWN0b3IpOwogICAgICAgICBjaGVja1BsYW4ocGxhbiwgMSk7CiAgICAg
ICAgIEFTU0VSVChwbGFuLm1lbW9yeSgpLT5zaXplKCkpOwogCkBAIC04NzAsNyArODY4LDcgQEAg
c3RhdGljIHZvaWQgcnVuV2FzbVRlc3RzKCkKICAgICAgICAgICAgIDB4MDEsIDB4MjAsIDB4MDAs
IDB4MDAsIDB4MDksIDB4MGYKICAgICAgICAgfTsKIAotICAgICAgICBQbGFuIHBsYW4oKnZtLCB2
ZWN0b3IpOworICAgICAgICBQbGFuIHBsYW4odm0sIHZlY3Rvcik7CiAgICAgICAgIGNoZWNrUGxh
bihwbGFuLCAxKTsKICAgICAgICAgQVNTRVJUKHBsYW4ubWVtb3J5KCktPnNpemUoKSk7CiAKQEAg
LTg5OCw3ICs4OTYsNyBAQCBzdGF0aWMgdm9pZCBydW5XYXNtVGVzdHMoKQogICAgICAgICAgICAg
MHgyMCwgMHgwMCwgMHgwMCwgMHgwOSwgMHgwZgogICAgICAgICB9OwogCi0gICAgICAgIFBsYW4g
cGxhbigqdm0sIHZlY3Rvcik7CisgICAgICAgIFBsYW4gcGxhbih2bSwgdmVjdG9yKTsKICAgICAg
ICAgY2hlY2tQbGFuKHBsYW4sIDEpOwogCiAgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNy
YXNoLgpAQCAtOTI1LDcgKzkyMyw3IEBAIHN0YXRpYyB2b2lkIHJ1bldhc21UZXN0cygpCiAgICAg
ICAgICAgICAweDAxLCAweDJiLCAweDAzLCAweDAwLCAweDA5LCAweDBmCiAgICAgICAgIH07CiAK
LSAgICAgICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9yKTsKKyAgICAgICAgUGxhbiBwbGFuKHZtLCB2
ZWN0b3IpOwogICAgICAgICBjaGVja1BsYW4ocGxhbiwgMSk7CiAKICAgICAgICAgLy8gVGVzdCB0
aGlzIGRvZXNuJ3QgY3Jhc2guCkBAIC05NTMsNyArOTUxLDcgQEAgc3RhdGljIHZvaWQgcnVuV2Fz
bVRlc3RzKCkKICAgICAgICAgICAgIDB4MDEsIDB4MmEsIDB4MDIsIDB4MDAsIDB4MDksIDB4MGYK
ICAgICAgICAgfTsKIAotICAgICAgICBQbGFuIHBsYW4oKnZtLCB2ZWN0b3IpOworICAgICAgICBQ
bGFuIHBsYW4odm0sIHZlY3Rvcik7CiAgICAgICAgIGNoZWNrUGxhbihwbGFuLCAxKTsKIAogICAg
ICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KQEAgLTk5MCw3ICs5ODgsNyBAQCBzdGF0
aWMgdm9pZCBydW5XYXNtVGVzdHMoKQogICAgICAgICAgICAgMHgwZiwgMHgwOSwgMHgwZgogICAg
ICAgICB9OwogCi0gICAgICAgIFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7CisgICAgICAgIFBsYW4g
cGxhbih2bSwgdmVjdG9yKTsKICAgICAgICAgY2hlY2tQbGFuKHBsYW4sIDEpOwogICAgICAgICBB
U1NFUlQocGxhbi5tZW1vcnkoKS0+c2l6ZSgpKTsKIApAQCAtMTA0Miw3ICsxMDQwLDcgQEAgc3Rh
dGljIHZvaWQgcnVuV2FzbVRlc3RzKCkKICAgICAgICAgICAgIDB4MmUsIDB4MDAsIDB4MDAsIDB4
MTAsIDB4MDEsIDB4MTQsIDB4MDMsIDB4NDAsIDB4MTUsIDB4MDMsIDB4MDYsIDB4MDAsIDB4MGYs
IDB4MGYsIDB4MDksIDB4MGYKICAgICAgICAgfTsKIAotICAgICAgICBQbGFuIHBsYW4oKnZtLCB2
ZWN0b3IpOworICAgICAgICBQbGFuIHBsYW4odm0sIHZlY3Rvcik7CiAgICAgICAgIGNoZWNrUGxh
bihwbGFuLCAxKTsKICAgICAgICAgQVNTRVJUKHBsYW4ubWVtb3J5KCktPnNpemUoKSk7CiAKQEAg
LTEwODMsNyArMTA4MSw3IEBAIHN0YXRpYyB2b2lkIHJ1bldhc21UZXN0cygpCiAgICAgICAgICAg
ICAweDAxLCAweDIwLCAweDAwLCAweDAwLCAweDA5LCAweDBmCiAgICAgICAgIH07CiAKLSAgICAg
ICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9yKTsKKyAgICAgICAgUGxhbiBwbGFuKHZtLCB2ZWN0b3Ip
OwogICAgICAgICBjaGVja1BsYW4ocGxhbiwgMSk7CiAgICAgICAgIEFTU0VSVChwbGFuLm1lbW9y
eSgpLT5zaXplKCkpOwogCkBAIC0xMTExLDcgKzExMDksNyBAQCBzdGF0aWMgdm9pZCBydW5XYXNt
VGVzdHMoKQogICAgICAgICAgICAgMHgyMCwgMHgwMCwgMHgwMCwgMHgwOSwgMHgwZgogICAgICAg
ICB9OwogCi0gICAgICAgIFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7CisgICAgICAgIFBsYW4gcGxh
bih2bSwgdmVjdG9yKTsKICAgICAgICAgY2hlY2tQbGFuKHBsYW4sIDEpOwogCiAgICAgICAgIC8v
IFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgpAQCAtMTEzOCw3ICsxMTM2LDcgQEAgc3RhdGljIHZv
aWQgcnVuV2FzbVRlc3RzKCkKICAgICAgICAgICAgIDB4MDMsIDB4MDAsIDB4MDYsIDB4MDAsIDB4
MDQsIDB4MTAsIDB4MDEsIDB4MDksIDB4MGYsIDB4MTAsIDB4MDAsIDB4MDksIDB4MGYKICAgICAg
ICAgfTsKIAotICAgICAgICBQbGFuIHBsYW4oKnZtLCB2ZWN0b3IpOworICAgICAgICBQbGFuIHBs
YW4odm0sIHZlY3Rvcik7CiAgICAgICAgIGNoZWNrUGxhbihwbGFuLCAxKTsKIAogICAgICAgICAv
LyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KQEAgLTExNzYsNyArMTE3NCw3IEBAIHN0YXRpYyB2
b2lkIHJ1bldhc21UZXN0cygpCiAgICAgICAgICAgICAweDE1LCAweDAwLCAweDA2LCAweDAwLCAw
eDBmLCAweDAwLCAweDBmCiAgICAgICAgIH07CiAKLSAgICAgICAgUGxhbiBwbGFuKCp2bSwgdmVj
dG9yKTsKKyAgICAgICAgUGxhbiBwbGFuKHZtLCB2ZWN0b3IpOwogICAgICAgICBjaGVja1BsYW4o
cGxhbiwgMSk7CiAKICAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCkBAIC0xMjAw
LDcgKzExOTgsNyBAQCBzdGF0aWMgdm9pZCBydW5XYXNtVGVzdHMoKQogICAgICAgICAgICAgMHg4
YiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHg4NSwgMHg4MCwgMHg4MCwgMHg4MCwg
MHgwMCwgMHgwMCwgMHgxMCwgMHgwNSwgMHgwOSwgMHgwZgogICAgICAgICB9OwogCi0gICAgICAg
IFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7CisgICAgICAgIFBsYW4gcGxhbih2bSwgdmVjdG9yKTsK
ICAgICAgICAgY2hlY2tQbGFuKHBsYW4sIDEpOwogCiAgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vz
bid0IGNyYXNoLgpAQCAtMTIxOCw3ICsxMjE2LDcgQEAgc3RhdGljIHZvaWQgcnVuV2FzbVRlc3Rz
KCkKICAgICAgICAgICAgIDB4NDAsIDB4MDksIDB4MGYKICAgICAgICAgfTsKIAotICAgICAgICBQ
bGFuIHBsYW4oKnZtLCB2ZWN0b3IpOworICAgICAgICBQbGFuIHBsYW4odm0sIHZlY3Rvcik7CiAg
ICAgICAgIGNoZWNrUGxhbihwbGFuLCAxKTsKIAogICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24n
dCBjcmFzaC4KQEAgLTEyMzUsNyArMTIzMyw3IEBAIHN0YXRpYyB2b2lkIHJ1bldhc21UZXN0cygp
CiAgICAgICAgICAgICAweDQwLCAweDEwLCAweDAzLCAweDQwLCAweDA5LCAweDBmCiAgICAgICAg
IH07CiAKLSAgICAgICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9yKTsKKyAgICAgICAgUGxhbiBwbGFu
KHZtLCB2ZWN0b3IpOwogICAgICAgICBjaGVja1BsYW4ocGxhbiwgMSk7CiAKICAgICAgICAgLy8g
VGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCkBAIC0xMjUyLDcgKzEyNTAsNyBAQCBzdGF0aWMgdm9p
ZCBydW5XYXNtVGVzdHMoKQogICAgICAgICAgICAgMHgxMCwgMHgwMywgMHg0MCwgMHgxMCwgMHgw
MywgMHg0MCwgMHgwOSwgMHgwZiwgMHgwMCwgMHgwZgogICAgICAgICB9OwogCi0gICAgICAgIFBs
YW4gcGxhbigqdm0sIHZlY3Rvcik7CisgICAgICAgIFBsYW4gcGxhbih2bSwgdmVjdG9yKTsKICAg
ICAgICAgY2hlY2tQbGFuKHBsYW4sIDEpOwogCiAgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0
IGNyYXNoLgpAQCAtMTI2OCw3ICsxMjY2LDcgQEAgc3RhdGljIHZvaWQgcnVuV2FzbVRlc3RzKCkK
ICAgICAgICAgICAgIDB4MDEsIDB4ODgsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDAsIDB4
MTQsIDB4MDAsIDB4MTQsIDB4MDEsIDB4NDAsIDB4MDksIDB4MGYKICAgICAgICAgfTsKIAotICAg
ICAgICBQbGFuIHBsYW4oKnZtLCB2ZWN0b3IpOworICAgICAgICBQbGFuIHBsYW4odm0sIHZlY3Rv
cik7CiAgICAgICAgIGNoZWNrUGxhbihwbGFuLCAxKTsKIAogICAgICAgICAvLyBUZXN0IHRoaXMg
ZG9lc24ndCBjcmFzaC4KQEAgLTEyOTQsNyArMTI5Miw3IEBAIHN0YXRpYyB2b2lkIHJ1bldhc21U
ZXN0cygpCiAgICAgICAgICAgICAweDAxLCAweDA5LCAweDBmCiAgICAgICAgIH07CiAKLSAgICAg
ICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9yKTsKKyAgICAgICAgUGxhbiBwbGFuKHZtLCB2ZWN0b3Ip
OwogICAgICAgICBjaGVja1BsYW4ocGxhbiwgMSk7CiAKICAgICAgICAgLy8gVGVzdCB0aGlzIGRv
ZXNuJ3QgY3Jhc2guCkBAIC0xMzI3LDcgKzEzMjUsNyBAQCBzdGF0aWMgdm9pZCBydW5XYXNtVGVz
dHMoKQogICAgICAgICAgICAgMHgxMCwgMHgwMSwgMHg0MSwgMHgxNSwgMHgwMCwgMHgwNiwgMHgw
MSwgMHgwZiwgMHgwZiwgMHgxNCwgMHgwMSwgMHgwOSwgMHgwZgogICAgICAgICB9OwogCi0gICAg
ICAgIFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7CisgICAgICAgIFBsYW4gcGxhbih2bSwgdmVjdG9y
KTsKICAgICAgICAgY2hlY2tQbGFuKHBsYW4sIDEpOwogCiAgICAgICAgIC8vIFRlc3QgdGhpcyBk
b2Vzbid0IGNyYXNoLgpAQCAtMTM2OCw3ICsxMzY2LDcgQEAgc3RhdGljIHZvaWQgcnVuV2FzbVRl
c3RzKCkKICAgICAgICAgICAgIDB4MDEsIDB4NDAsIDB4MTUsIDB4MDQsIDB4MDYsIDB4MDAsIDB4
MGYsIDB4MGYsIDB4MGYsIDB4MTQsIDB4MDIsIDB4MDksIDB4MGYKICAgICAgICAgfTsKIAotICAg
ICAgICBQbGFuIHBsYW4oKnZtLCB2ZWN0b3IpOworICAgICAgICBQbGFuIHBsYW4odm0sIHZlY3Rv
cik7CiAgICAgICAgIGNoZWNrUGxhbihwbGFuLCAxKTsKIAogICAgICAgICAvLyBUZXN0IHRoaXMg
ZG9lc24ndCBjcmFzaC4KQEAgLTE0MTgsNyArMTQxNiw3IEBAIHN0YXRpYyB2b2lkIHJ1bldhc21U
ZXN0cygpCiAgICAgICAgICAgICAweDAwLCAweDBmLCAweDAwLCAweDBmCiAgICAgICAgIH07CiAK
LSAgICAgICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9yKTsKKyAgICAgICAgUGxhbiBwbGFuKHZtLCB2
ZWN0b3IpOwogICAgICAgICBjaGVja1BsYW4ocGxhbiwgMSk7CiAKICAgICAgICAgLy8gVGVzdCB0
aGlzIGRvZXNuJ3QgY3Jhc2guCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtQjNJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
QjNJUkdlbmVyYXRvci5jcHAKaW5kZXggNTgzZmI4MmQ1NzRhMTBiZGI0MGU4YTNkMDg1YjgyODcy
NmQzNmIxYy4uOTQ3M2IzNzllZTg4ZmI4OGU1MzRmYjhiMjZkZGZkODM4OTc5MDRmYyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcApAQCAt
NzYwLDYgKzc2MCw4IEBAIHN0ZDo6dW5pcXVlX3B0cjxGdW5jdGlvbkNvbXBpbGF0aW9uPiBwYXJz
ZUFuZENvbXBpbGUoVk0mIHZtLCBjb25zdCB1aW50OF90KiBmdW5jCiAgICAgcHJvY2VkdXJlLnJl
c2V0UmVhY2hhYmlsaXR5KCk7CiAgICAgdmFsaWRhdGUocHJvY2VkdXJlLCAiQWZ0ZXIgcGFyc2lu
ZzpcbiIpOwogCisgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGRhdGFMb2coIlByZSBTU0E6ICIs
IHByb2NlZHVyZSk7CiAgICAgZml4U1NBKHByb2NlZHVyZSk7CiAgICAgaWYgKHZlcmJvc2UpCiAg
ICAgICAgIGRhdGFMb2coIlBvc3QgU1NBOiAiLCBwcm9jZWR1cmUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaAppbmRleCAxODUyMjRiNDk0NWIz
NzVkYzkxYjczMTNjYjlhNjY2MzJiZWNhNjkzLi5lNzE3NmQ4OWQ5ZTFlZDhkMGU2NjU5NmM1N2Yz
NDg4ZDBjOTM0OGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
RnVuY3Rpb25QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVu
Y3Rpb25QYXJzZXIuaApAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHN0
YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKIAotICAgIGJvb2wgV0FSTl9VTlVTRURf
UkVUVVJOIHBhcnNlQmxvY2soKTsKKyAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZUJv
ZHkoKTsKICAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZUV4cHJlc3Npb24oT3BUeXBl
KTsKICAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZVVucmVhY2hhYmxlRXhwcmVzc2lv
bihPcFR5cGUpOwogICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFJldHVybigpOwpAQCAt
MTA5LDExICsxMDksMTEgQEAgYm9vbCBGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2UoKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHJldHVybiBwYXJzZUJsb2Nr
KCk7CisgICAgcmV0dXJuIHBhcnNlQm9keSgpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb250
ZXh0PgotYm9vbCBGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VCbG9jaygpCitib29sIEZ1
bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZUJvZHkoKQogewogICAgIHdoaWxlICh0cnVlKSB7
CiAgICAgICAgIHVpbnQ4X3Qgb3A7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtTW9kdWxlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21Nb2R1bGVQYXJzZXIuY3BwCmluZGV4IGIwMzViNDUzMjk3YWQ0YmRhNjJjMjk0ODljOGMzYzhh
ZmVkMWIwMjQuLmNlNDZlMGQ2ZGJlNDc4ZTdlM2U2MGRjMjE1NjQ2NTRkMDlmYzJkZjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGVQYXJzZXIuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGVQYXJzZXIuY3BwCkBAIC0y
OTEsNiArMjkxLDEzIEBAIGJvb2wgTW9kdWxlUGFyc2VyOjpwYXJzZVRhYmxlKCkKIAogYm9vbCBN
b2R1bGVQYXJzZXI6OnBhcnNlTWVtb3J5KCkKIHsKKyAgICB1aW50OF90IGNvdW50OworICAgIGlm
ICghcGFyc2VWYXJVSW50MShjb3VudCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlm
ICghY291bnQpCisgICAgICAgIHJldHVybiB0cnVlOworCiAgICAgdWludDhfdCBmbGFnczsKICAg
ICBpZiAoIXBhcnNlVmFyVUludDEoZmxhZ3MpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0z
NDUsNyArMzUyLDcgQEAgYm9vbCBNb2R1bGVQYXJzZXI6OnBhcnNlRXhwb3J0KCkKICAgICAgICAg
ICAgIHVpbnQzMl90IGZ1bmN0aW9uU2lnbmF0dXJlSW5kZXg7CiAgICAgICAgICAgICBpZiAoIXBh
cnNlVmFyVUludDMyKGZ1bmN0aW9uU2lnbmF0dXJlSW5kZXgpKQogICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgICAgIGlmIChmdW5jdGlvblNpZ25hdHVyZUluZGV4ID4gbV9t
b2R1bGUtPnNpZ25hdHVyZXMuc2l6ZSgpKQorICAgICAgICAgICAgaWYgKGZ1bmN0aW9uU2lnbmF0
dXJlSW5kZXggPj0gbV9tb2R1bGUtPnNpZ25hdHVyZXMuc2l6ZSgpKQogICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGUuZnVuY3Rpb25TaWduYXR1cmUgPSAmbV9tb2R1
bGUtPnNpZ25hdHVyZXNbZnVuY3Rpb25TaWduYXR1cmVJbmRleF07CiAgICAgICAgIH0gYnJlYWs7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGxhbi5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGxhbi5jcHAKaW5kZXggMDM0YmM2MGM2ODY1
YWUwOWI3YjQ4ZTdlNzExYmYzM2Q0OTk5M2VkNi4uOWY4ZTBmYTRhNDcwOTFlMzhiY2JlOGEwZWQz
NTVlMTUxOTRmYzA0ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bVBsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QbGFuLmNwcApA
QCAtNDEsMTcgKzQxLDI0IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7CiAKIHN0
YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKICAgICAKLVBsYW46OlBsYW4oVk0mIHZt
LCBWZWN0b3I8dWludDhfdD4gc291cmNlKQorUGxhbjo6UGxhbihWTSogdm0sIFZlY3Rvcjx1aW50
OF90PiBzb3VyY2UpCiAgICAgOiBQbGFuKHZtLCBzb3VyY2UuZGF0YSgpLCBzb3VyY2Uuc2l6ZSgp
KQogewogfQogCi1QbGFuOjpQbGFuKFZNJiB2bSwgY29uc3QgdWludDhfdCogc291cmNlLCBzaXpl
X3Qgc291cmNlTGVuZ3RoKQorUGxhbjo6UGxhbihWTSogdm0sIGNvbnN0IHVpbnQ4X3QqIHNvdXJj
ZSwgc2l6ZV90IHNvdXJjZUxlbmd0aCkKKyAgICA6IG1fdm0odm0pCisgICAgLCBtX3NvdXJjZShz
b3VyY2UpCisgICAgLCBtX3NvdXJjZUxlbmd0aChzb3VyY2VMZW5ndGgpCit7Cit9CisKK3ZvaWQg
UGxhbjo6cnVuKCkKIHsKICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgZGF0YUxvZ0xuKCJTdGFy
dGluZyBwbGFuLiIpOwogICAgIHsKLSAgICAgICAgTW9kdWxlUGFyc2VyIG1vZHVsZVBhcnNlcihz
b3VyY2UsIHNvdXJjZUxlbmd0aCk7CisgICAgICAgIE1vZHVsZVBhcnNlciBtb2R1bGVQYXJzZXIo
bV9zb3VyY2UsIG1fc291cmNlTGVuZ3RoKTsKICAgICAgICAgaWYgKCFtb2R1bGVQYXJzZXIucGFy
c2UoKSkgewogICAgICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxv
Z0xuKCJQYXJzaW5nIG1vZHVsZSBmYWlsZWQ6ICIsIG1vZHVsZVBhcnNlci5lcnJvck1lc3NhZ2Uo
KSk7CkBAIC03NSwxNyArODIsMjIgQEAgUGxhbjo6UGxhbihWTSYgdm0sIGNvbnN0IHVpbnQ4X3Qq
IHNvdXJjZSwgc2l6ZV90IHNvdXJjZUxlbmd0aCkKICAgICBmb3IgKGNvbnN0IEZ1bmN0aW9uSW5m
b3JtYXRpb24mIGluZm8gOiBtX21vZHVsZUluZm9ybWF0aW9uLT5mdW5jdGlvbnMpIHsKICAgICAg
ICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nTG4oIlByb2Nlc3NpbmcgZnVuY3Rp
b24gc3RhcnRpbmcgYXQ6ICIsIGluZm8uc3RhcnQsICIgYW5kIGVuZGluZyBhdDogIiwgaW5mby5l
bmQpOwotICAgICAgICBjb25zdCB1aW50OF90KiBmdW5jdGlvblN0YXJ0ID0gc291cmNlICsgaW5m
by5zdGFydDsKKyAgICAgICAgY29uc3QgdWludDhfdCogZnVuY3Rpb25TdGFydCA9IG1fc291cmNl
ICsgaW5mby5zdGFydDsKICAgICAgICAgc2l6ZV90IGZ1bmN0aW9uTGVuZ3RoID0gaW5mby5lbmQg
LSBpbmZvLnN0YXJ0OwotICAgICAgICBBU1NFUlQoZnVuY3Rpb25MZW5ndGggPD0gc291cmNlTGVu
Z3RoKTsKKyAgICAgICAgQVNTRVJUKGZ1bmN0aW9uTGVuZ3RoIDw9IG1fc291cmNlTGVuZ3RoKTsK
IAogICAgICAgICBTdHJpbmcgZXJyb3IgPSB2YWxpZGF0ZUZ1bmN0aW9uKGZ1bmN0aW9uU3RhcnQs
IGZ1bmN0aW9uTGVuZ3RoLCBpbmZvLnNpZ25hdHVyZSwgbV9tb2R1bGVJbmZvcm1hdGlvbi0+ZnVu
Y3Rpb25zKTsKICAgICAgICAgaWYgKCFlcnJvci5pc051bGwoKSkgeworICAgICAgICAgICAgaWYg
KHZlcmJvc2UpIHsKKyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZnVu
Y3Rpb25MZW5ndGg7ICsraSkKKyAgICAgICAgICAgICAgICAgICAgZGF0YUxvZyhSYXdQb2ludGVy
KHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGZ1bmN0aW9uU3RhcnRbaV0pKSwgIiwgIik7CisgICAg
ICAgICAgICAgICAgZGF0YUxvZ0xuKCk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBtX2Vy
cm9yTWVzc2FnZSA9IGVycm9yOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAg
ICAgICAgbV9jb21waWxlZEZ1bmN0aW9ucy51bmNoZWNrZWRBcHBlbmQocGFyc2VBbmRDb21waWxl
KHZtLCBmdW5jdGlvblN0YXJ0LCBmdW5jdGlvbkxlbmd0aCwgbV9tb2R1bGVJbmZvcm1hdGlvbi0+
bWVtb3J5LmdldCgpLCBpbmZvLnNpZ25hdHVyZSwgbV9tb2R1bGVJbmZvcm1hdGlvbi0+ZnVuY3Rp
b25zKSk7CisgICAgICAgIG1fY29tcGlsZWRGdW5jdGlvbnMudW5jaGVja2VkQXBwZW5kKHBhcnNl
QW5kQ29tcGlsZSgqbV92bSwgZnVuY3Rpb25TdGFydCwgZnVuY3Rpb25MZW5ndGgsIG1fbW9kdWxl
SW5mb3JtYXRpb24tPm1lbW9yeS5nZXQoKSwgaW5mby5zaWduYXR1cmUsIG1fbW9kdWxlSW5mb3Jt
YXRpb24tPmZ1bmN0aW9ucykpOwogICAgIH0KIAogICAgIC8vIFBhdGNoIHRoZSBjYWxsIHNpdGVz
IGZvciBlYWNoIGZ1bmN0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbVBsYW4uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QbGFuLmgKaW5k
ZXggZDdjMDNhYmI5NDYxMjg1MDExM2VjMzFmYzZhMDJkZmQ5OGRjNjk1MC4uYzVkZTE5OTIxZTBl
M2NmNmQyZWEwNGI3ZjJmZWJmNjg2YTIwZmViNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbVBsYW4uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtUGxhbi5oCkBAIC0zOCwxMCArMzgsMTIgQEAgY2xhc3MgTWVtb3J5OwogCiBjbGFzcyBQbGFu
IHsKIHB1YmxpYzoKLSAgICBKU19FWFBPUlRfUFJJVkFURSBQbGFuKFZNJiwgVmVjdG9yPHVpbnQ4
X3Q+KTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBQbGFuKFZNJiwgY29uc3QgdWludDhfdCosIHNp
emVfdCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgUGxhbihWTSosIFZlY3Rvcjx1aW50OF90Pik7
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgUGxhbihWTSosIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3Qp
OwogICAgIEpTX0VYUE9SVF9QUklWQVRFIH5QbGFuKCk7CiAKKyAgICBKU19FWFBPUlRfUFJJVkFU
RSB2b2lkIHJ1bigpOworCiAgICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gZmFpbGVkKCkgY29u
c3QgeyByZXR1cm4gbV9mYWlsZWQ7IH0KICAgICBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSgp
IGNvbnN0CiAgICAgewpAQCAtNzksNiArODEsOSBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVl
X3B0cjxNb2R1bGVJbmZvcm1hdGlvbj4gbV9tb2R1bGVJbmZvcm1hdGlvbjsKICAgICBDb21waWxl
ZEZ1bmN0aW9ucyBtX2NvbXBpbGVkRnVuY3Rpb25zOwogCisgICAgVk0qIG1fdm07CisgICAgY29u
c3QgdWludDhfdCogbV9zb3VyY2U7CisgICAgY29uc3Qgc2l6ZV90IG1fc291cmNlTGVuZ3RoOwog
ICAgIGJvb2wgbV9mYWlsZWQgeyB0cnVlIH07CiAgICAgU3RyaW5nIG1fZXJyb3JNZXNzYWdlOwog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5
TW9kdWxlQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5jcHAKaW5kZXggYmI2ODRlMWUyNDMyYzMwMmQxYWEz
ZTYzOWE4ZmMwMTYyMDk3Nzc5YS4uZjAzYTBhOGJiMTFiZGNiN2Q3MDdlYmRlOWExYjYzZTJkYzM3
ZjVlOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1i
bHlNb2R1bGVDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5jcHAKQEAgLTY4LDggKzY4LDkgQEAgc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNXZWJBc3NlbWJseU1v
ZHVsZShFeGVjU3RhdGUqIHN0YXQKICAgICBzaXplX3QgYnl0ZVNpemUgPSBhcnJheUJ1ZmZlclZp
ZXcgPyBhcnJheUJ1ZmZlclZpZXctPmxlbmd0aCgpIDogYXJyYXlCdWZmZXItPmltcGwoKS0+Ynl0
ZUxlbmd0aCgpOwogICAgIGNvbnN0IGF1dG8qIGJhc2UgPSBhcnJheUJ1ZmZlclZpZXcgPyBzdGF0
aWNfY2FzdDx1aW50OF90Kj4oYXJyYXlCdWZmZXJWaWV3LT52ZWN0b3IoKSkgOiBzdGF0aWNfY2Fz
dDx1aW50OF90Kj4oYXJyYXlCdWZmZXItPmltcGwoKS0+ZGF0YSgpKTsKIAotICAgIFdhc206OlBs
YW4gcGxhbih2bSwgYmFzZSArIGJ5dGVPZmZzZXQsIGJ5dGVTaXplKTsKKyAgICBXYXNtOjpQbGFu
IHBsYW4oJnZtLCBiYXNlICsgYnl0ZU9mZnNldCwgYnl0ZVNpemUpOwogICAgIC8vIE9uIGZhaWx1
cmUsIGEgbmV3IFdlYkFzc2VtYmx5LkNvbXBpbGVFcnJvciBpcyB0aHJvd24uCisgICAgcGxhbi5y
dW4oKTsKICAgICBpZiAocGxhbi5mYWlsZWQoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aHJvd0V4Y2VwdGlvbihzdGF0ZSwgc2NvcGUsIGNyZWF0ZVdlYkFzc2VtYmx5Q29tcGls
ZUVycm9yKHN0YXRlLCBwbGFuLmVycm9yTWVzc2FnZSgpKSkpOwogCmRpZmYgLS1naXQgYS9KU1Rl
c3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDc3YTFjYzM3YTdjMmZiNjI3
NTdlZjQwZTJmMmQ0ZjM5NzliMjFlOTAuLjhkYjVlMWE0ZDVjMzljMjY3N2VlZGUxMTk2MGMzNDll
OWUxZmE5NzYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTI4IEBACisyMDE2LTExLTExICBLZWl0aCBNaWxsZXIgIDxrZWl0
aF9taWxsZXJAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgV2FzbSB0ZXN0cyB0byBKUworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0NjExCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCB0
cmFuc2xhdGVzIG1vc3Qgb2YgdGhlIHRlc3RzIGZyb20gdGVzdFdhc20uY3BwIHRvIHRoZSBKUyB0
ZXN0aW5nIGFwaS4gTW9zdCBvZiB0aGUKKyAgICAgICAgb21taXRlZCB0ZXN0cyB3ZXJlIGVhcmxp
ZXN0IHRlc3RzLCB3aGljaCB0ZXN0ZWQgdHJpdmlhbCB0aGluZ3MsIGxpa2UgYWRkaW5nIHR3bwor
ICAgICAgICBjb25zdGFudHMuIFNvbWUgdGVzdHMgYXJlIG9tbWl0ZWQgZm9yIG90aGVyIHJlYXNv
bnMsIGhvd2V2ZXIuIFRoZXNlIGFyZToKKworICAgICAgICAxKSBUZXN0cyB1c2luZyBJNjQgc2lu
Y2UgdGhlIHRlc3RpbmcgYXBpIGRvZXMgbm90IHlldCBrbm93IGhvdyB0byBoYW5kbGUgNjQtYml0
IG51bWJlcnMuICAyKQorICAgICAgICBUZXN0cyB0aGF0IHdvdWxkIHZhbGlkYXRlIHRoZSBtZW1v
cnkgb2YgdGhlIG1vZHVsZSBvbmNlIHdhc20gd2FzIGRvbmUgd2l0aCBpdCBzaW5jZSB0aGF0J3MK
KyAgICAgICAgbm90IHJlYWxseSBwb3NzaWJsZSBpbiBKUy4KKworICAgICAgICBJbiBvcmRlciB0
byBtYWtlIHN1Y2ggYSB0cmFuc2xhdGlvbiBlYXNpZXIgdGhpcyBwYXRjaCBhbHNvIGFkZHMgc29t
ZSBmZWF0dXJlcyB0byB0aGUgSlMKKyAgICAgICAgdGVzdGluZyBhcGk6CisKKyAgICAgICAgMSkg
QmxvY2tzIGNhbiBub3cgYmUgZG9uZSBsZXhpY2FsbHkgYnkgYWRkaW5nIGEgbGFtYmRhIGFzIHRo
ZSBsYXN0IGFyZ3VtZW50IG9mIHRoZSBibG9jaworICAgICAgICBvcGNvZGUuIEZvciBleGFtcGxl
IG9uZSBjYW4gZG86CisgICAgICAgICAgICAuLi4KKyAgICAgICAgICAgIC5CbG9jaygiaTMyIiwg
YiA9PiBiLkkzMkNvbnN0KDEpICkKKworICAgICAgICBhbmQgdGhlIG5lc3RlZCBsYW1iZGEgd2ls
bCBhdXRvbWF0aWNhbGx5IGhhdmUgYW4gZW5kIGF0dGFjaGVkLgorCisgICAgICAgIDIpIFRoZSBK
UyB0ZXN0aW5nIGFwaSBjYW4gbm93IGhhbmRsZSBpbmxpbmUgc2lnbmF0dXJlIHR5cGVzLgorCisg
ICAgICAgIDMpIFJlbG9jYXRlIHNvbWUgY29kZSB0byBtYWtlIGl0IGVhc2llciB0byBmb2xsb3cg
YW5kIHByZXZlbnQgNDQgc3BhY2UgaW5kZW50YXRpb24uCisKKyAgICAgICAgNCkgUmVuYW1lIHZh
cnVpbnQvdmFyaW50IHRvIHZhcnVpbnQzMi92YXJpbnQzMiwgdGhpcyBsZXRzIHRoZW0gYmUgZGly
ZWN0bHkgY2FsbGVkIGZyb20gdGhlCisgICAgICAgIHdhc20uanNvbiB3aXRob3V0IGJlaW5nIHJl
bWFwcGVkLgorCisgICAgICAgIDUpIEFkZCBzdXBwb3J0IGZvciBNZW1vcnkgYW5kIEZ1bmN0aW9u
IHNlY3Rpb25zIHRvIHRoZSBCdWlsZGVyLgorCisgICAgICAgIDYpIEFkZCBzdXBwb3J0IGZvciBs
b2NhbCB2YXJpYWJsZXMuCisKKyAgICAgICAgT24gdGhlIEpTQyBzaWRlLCB3ZSBuZWVkZWQgdG8g
ZXhwb3NlIGEgbmV3IGZ1bmN0aW9uIHRvIHZhbGlkYXRlIHRoZSBjb21waWxlZCB3YXNtIGNvZGUK
KyAgICAgICAgYmVoYXZlcyB0aGUgd2F5IHdlIGV4cGVjdC4gQXQgbGVhc3QgdW50aWwgdGhlIEpT
IFdhc20gQVBJIGlzIGZpbmlzaGVkLiBUaGUgbmV3IHZhbGlkYXRpb24KKyAgICAgICAgZnVuY3Rp
b24sIHRlc3RXYXNtTW9kdWxlRnVuY3Rpb25zLCB0YWtlcyBhbiBhcnJheSBidWZmZXIgY29udGFp
bmluZyB0aGUgd2FzbSBiaW5hcnksIHRoZQorICAgICAgICBudW1iZXIgb2YgZnVuY3Rpb25zIGlu
IHRoZSBibG9iIGFuZCB0ZXN0cyBmb3IgZWFjaCBvZiB0aG9zZSBmdW5jdGlvbnMuCisKKyAgICAg
ICAgKiB3YXNtL0J1aWxkZXIuanM6CisgICAgICAgIChjb25zdC5fbWF5YmVSZWdpc3RlclR5cGUp
OgorICAgICAgICAoY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoc3dpdGNoLnR5cGVvZik6IERl
bGV0ZWQuCisgICAgICAgICogd2FzbS9CdWlsZGVyX1dlYkFzc2VtYmx5QmluYXJ5LmpzOgorICAg
ICAgICAoY29uc3QuZW1pdHRlcnMuVHlwZSk6CisgICAgICAgIChjb25zdC5lbWl0dGVycy5JbXBv
cnQpOgorICAgICAgICAoY29uc3QuZW1pdHRlcnMuRnVuY3Rpb24pOgorICAgICAgICAoY29uc3Qu
ZW1pdHRlcnMuTWVtb3J5KToKKyAgICAgICAgKGNvbnN0LmVtaXR0ZXJzLkNvZGUpOgorICAgICAg
ICAoZXhwb3J0LmNvbnN0LkJpbmFyeSk6CisgICAgICAgICogd2FzbS9Mb3dMZXZlbEJpbmFyeS5q
czoKKyAgICAgICAgKGV4cG9ydC5kZWZhdWx0Lkxvd0xldmVsQmluYXJ5LnByb3RvdHlwZS5nZXQg
cmV0dXJuKToKKyAgICAgICAgKGV4cG9ydC5kZWZhdWx0Lkxvd0xldmVsQmluYXJ5LnByb3RvdHlw
ZS52YXJ1aW50MzIpOgorICAgICAgICAoZXhwb3J0LmRlZmF1bHQuTG93TGV2ZWxCaW5hcnkucHJv
dG90eXBlLnZhcmludDMyKToKKyAgICAgICAgKGV4cG9ydC5kZWZhdWx0Lkxvd0xldmVsQmluYXJ5
LnByb3RvdHlwZS52YXJ1aW50MSk6CisgICAgICAgIChleHBvcnQuZGVmYXVsdC5Mb3dMZXZlbEJp
bmFyeS5wcm90b3R5cGUudmFyaW50Nyk6CisgICAgICAgIChleHBvcnQuZGVmYXVsdC5Mb3dMZXZl
bEJpbmFyeS5wcm90b3R5cGUudmFydWludDcpOgorICAgICAgICAoZXhwb3J0LmRlZmF1bHQuTG93
TGV2ZWxCaW5hcnkucHJvdG90eXBlLmlubGluZV9zaWduYXR1cmVfdHlwZSk6CisgICAgICAgIChl
eHBvcnQuZGVmYXVsdC5Mb3dMZXZlbEJpbmFyeS5wcm90b3R5cGUuc3RyaW5nKToKKyAgICAgICAg
KGV4cG9ydC5kZWZhdWx0Lkxvd0xldmVsQmluYXJ5LnByb3RvdHlwZS5nZXRWYXJ1aW50MzIpOgor
ICAgICAgICAoZXhwb3J0LmRlZmF1bHQuTG93TGV2ZWxCaW5hcnkucHJvdG90eXBlLmdldFZhcmlu
dDMyKToKKyAgICAgICAgKGV4cG9ydC5kZWZhdWx0Lkxvd0xldmVsQmluYXJ5LnByb3RvdHlwZS5n
ZXRWYXJ1aW50Nyk6CisgICAgICAgIChleHBvcnQuZGVmYXVsdC5Mb3dMZXZlbEJpbmFyeS5wcm90
b3R5cGUuZ2V0U3RyaW5nKToKKyAgICAgICAgKGV4cG9ydC5kZWZhdWx0Lkxvd0xldmVsQmluYXJ5
KToKKyAgICAgICAgKGV4cG9ydC5kZWZhdWx0Lkxvd0xldmVsQmluYXJ5LnByb3RvdHlwZS52YXJ1
aW50KTogRGVsZXRlZC4KKyAgICAgICAgKGV4cG9ydC5kZWZhdWx0Lkxvd0xldmVsQmluYXJ5LnBy
b3RvdHlwZS52YXJpbnQpOiBEZWxldGVkLgorICAgICAgICAoZXhwb3J0LmRlZmF1bHQuTG93TGV2
ZWxCaW5hcnkucHJvdG90eXBlLmdldFZhcnVpbnQpOiBEZWxldGVkLgorICAgICAgICAoZXhwb3J0
LmRlZmF1bHQuTG93TGV2ZWxCaW5hcnkucHJvdG90eXBlLmdldFZhcmludCk6IERlbGV0ZWQuCisg
ICAgICAgICogd2FzbS9zZWxmLXRlc3QvdGVzdF9Mb3dMZXZlbEJpbmFyeV92YXJpbnQzMi5qczog
UmVuYW1lZCBmcm9tIEpTVGVzdHMvd2FzbS9zZWxmLXRlc3QvdGVzdF9Mb3dMZXZlbEJpbmFyeV92
YXJpbnQuanMuCisgICAgICAgICogd2FzbS9zZWxmLXRlc3QvdGVzdF9Mb3dMZXZlbEJpbmFyeV92
YXJ1aW50MzIuanM6IFJlbmFtZWQgZnJvbSBKU1Rlc3RzL3dhc20vc2VsZi10ZXN0L3Rlc3RfTG93
TGV2ZWxCaW5hcnlfdmFydWludC5qcy4KKworICAgICAgICAqIHdhc20vQnVpbGRlci5qczoKKyAg
ICAgICAgKGNvbnN0Ll9tYXliZVJlZ2lzdGVyVHlwZSk6CisgICAgICAgIChjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChzd2l0Y2gudHlwZW9mKTogRGVsZXRlZC4KKyAgICAgICAgKiB3YXNtL0J1
aWxkZXJfV2ViQXNzZW1ibHlCaW5hcnkuanM6CisgICAgICAgIChjb25zdC5lbWl0dGVycy5UeXBl
KToKKyAgICAgICAgKGNvbnN0LmVtaXR0ZXJzLkltcG9ydCk6CisgICAgICAgIChjb25zdC5lbWl0
dGVycy5GdW5jdGlvbik6CisgICAgICAgIChjb25zdC5lbWl0dGVycy5NZW1vcnkpOgorICAgICAg
ICAoY29uc3QuZW1pdHRlcnMuQ29kZSk6CisgICAgICAgIChleHBvcnQuY29uc3QuQmluYXJ5KToK
KyAgICAgICAgKiB3YXNtL0xvd0xldmVsQmluYXJ5LmpzOgorICAgICAgICAoZXhwb3J0LmRlZmF1
bHQuTG93TGV2ZWxCaW5hcnkucHJvdG90eXBlLmdldCByZXR1cm4pOgorICAgICAgICAoZXhwb3J0
LmRlZmF1bHQuTG93TGV2ZWxCaW5hcnkucHJvdG90eXBlLnZhcnVpbnQzMik6CisgICAgICAgIChl
eHBvcnQuZGVmYXVsdC5Mb3dMZXZlbEJpbmFyeS5wcm90b3R5cGUudmFyaW50MzIpOgorICAgICAg
ICAoZXhwb3J0LmRlZmF1bHQuTG93TGV2ZWxCaW5hcnkucHJvdG90eXBlLnZhcnVpbnQxKToKKyAg
ICAgICAgKGV4cG9ydC5kZWZhdWx0Lkxvd0xldmVsQmluYXJ5LnByb3RvdHlwZS52YXJpbnQ3KToK
KyAgICAgICAgKGV4cG9ydC5kZWZhdWx0Lkxvd0xldmVsQmluYXJ5LnByb3RvdHlwZS52YXJ1aW50
Nyk6CisgICAgICAgIChleHBvcnQuZGVmYXVsdC5Mb3dMZXZlbEJpbmFyeS5wcm90b3R5cGUuaW5s
aW5lX3NpZ25hdHVyZV90eXBlKToKKyAgICAgICAgKGV4cG9ydC5kZWZhdWx0Lkxvd0xldmVsQmlu
YXJ5LnByb3RvdHlwZS5zdHJpbmcpOgorICAgICAgICAoZXhwb3J0LmRlZmF1bHQuTG93TGV2ZWxC
aW5hcnkucHJvdG90eXBlLmdldFZhcnVpbnQzMik6CisgICAgICAgIChleHBvcnQuZGVmYXVsdC5M
b3dMZXZlbEJpbmFyeS5wcm90b3R5cGUuZ2V0VmFyaW50MzIpOgorICAgICAgICAoZXhwb3J0LmRl
ZmF1bHQuTG93TGV2ZWxCaW5hcnkucHJvdG90eXBlLmdldFZhcnVpbnQ3KToKKyAgICAgICAgKGV4
cG9ydC5kZWZhdWx0Lkxvd0xldmVsQmluYXJ5LnByb3RvdHlwZS5nZXRTdHJpbmcpOgorICAgICAg
ICAoZXhwb3J0LmRlZmF1bHQuTG93TGV2ZWxCaW5hcnkpOgorICAgICAgICAoZXhwb3J0LmRlZmF1
bHQuTG93TGV2ZWxCaW5hcnkucHJvdG90eXBlLnZhcnVpbnQpOiBEZWxldGVkLgorICAgICAgICAo
ZXhwb3J0LmRlZmF1bHQuTG93TGV2ZWxCaW5hcnkucHJvdG90eXBlLnZhcmludCk6IERlbGV0ZWQu
CisgICAgICAgIChleHBvcnQuZGVmYXVsdC5Mb3dMZXZlbEJpbmFyeS5wcm90b3R5cGUuZ2V0VmFy
dWludCk6IERlbGV0ZWQuCisgICAgICAgIChleHBvcnQuZGVmYXVsdC5Mb3dMZXZlbEJpbmFyeS5w
cm90b3R5cGUuZ2V0VmFyaW50KTogRGVsZXRlZC4KKyAgICAgICAgKiB3YXNtL2pzLWFwaS90ZXN0
X29sZF90ZXN0cy5qczogQWRkZWQuCisgICAgICAgIChyZXQ1KToKKyAgICAgICAgKGJyVGFibGVX
aXRoTG9vcCk6CisgICAgICAgIChiclRhYmxlTWFueVZhbHVlcyk6CisgICAgICAgIChydW4uYnJU
YWJsZU1hbnlWYWx1ZXMuYnJUYWJsZUFzSWYpOgorICAgICAgICAoaWZUaGVuRmFsbHRocm91Z2gp
OgorICAgICAgICAoaWZUaGVuRWxzZUZhbGx0aHJvdWdoKToKKyAgICAgICAgKGR1bWJMZXNzVGhh
bkZhbGx0aHJvdWdoKToKKyAgICAgICAgKHJ1bi5kdW1iTGVzc1RoYW5GYWxsdGhyb3VnaC5mbG9h
dFN1Yik6CisgICAgICAgIChydW4uZmxvYXRTdWIuYWRkMTIpOgorICAgICAgICAocnVuLmFkZDEy
LmZhY3RvcmlhbCk6CisgICAgICAgIChpMzJsb2FkKToKKyAgICAgICAgKHJ1bi5pMzJsb2FkLmkz
MmxvYWQ4cyk6CisgICAgICAgIChydW4uaTMybG9hZDhzLmR1bWJFcUlmVGhlbkVsc2UpOgorICAg
ICAgICAocnVuLmR1bWJFcUlmVGhlbkVsc2UuZHVtYkVxSWZUaGVuRWxzZSk6CisgICAgICAgIChy
dW4uZHVtYkVxSWZUaGVuRWxzZS5kdW1iTGVzc1RoYW5JZlRoZW5FbHNlKToKKyAgICAgICAgKHJ1
bi5kdW1iTGVzc1RoYW5JZlRoZW5FbHNlLmxvb3BTdW0pOgorICAgICAgICAocnVuLmxvb3BTdW0u
bG9vcE11bHQpOgorICAgICAgICAoYnJJZkxvb3BMZXNzVGhhbik6CisgICAgICAgIChydW4uYnJJ
Zkxvb3BMZXNzVGhhbi5ydW4pOgorICAgICAgICAqIHdhc20vc2VsZi10ZXN0L3Rlc3RfTG93TGV2
ZWxCaW5hcnlfdmFyaW50MzIuanM6IFJlbmFtZWQgZnJvbSBKU1Rlc3RzL3dhc20vc2VsZi10ZXN0
L3Rlc3RfTG93TGV2ZWxCaW5hcnlfdmFyaW50LmpzLgorICAgICAgICAqIHdhc20vc2VsZi10ZXN0
L3Rlc3RfTG93TGV2ZWxCaW5hcnlfdmFydWludDMyLmpzOiBSZW5hbWVkIGZyb20gSlNUZXN0cy93
YXNtL3NlbGYtdGVzdC90ZXN0X0xvd0xldmVsQmluYXJ5X3ZhcnVpbnQuanMuCisKIDIwMTYtMTEt
MDkgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgTWF0aC5taW4o
KS9NYXRoLm1heCgpIHdpdGggbm8gYXJndW1lbnRzIGlzIGxvd2VyZWQgaW5jb3JyZWN0bHkgaW4g
dGhlIEJ5dGVjb2RlUGFyc2VyCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vQnVpbGRlci5qcyBi
L0pTVGVzdHMvd2FzbS9CdWlsZGVyLmpzCmluZGV4IGQxZTQ3Njg0MjIzOGMyMzY4Yzc1MzNiMzZm
MjcyODFkNDM2NmEyYTguLjc2Zjk3YjQ3ZjQ1ODg0M2NiNzg4YTUwMTRiYzYzMTk0OGFiMDg1NmQg
MTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9CdWlsZGVyLmpzCisrKyBiL0pTVGVzdHMvd2FzbS9C
dWlsZGVyLmpzCkBAIC02MCwxNCArNjAsMTQgQEAgY29uc3QgX21heWJlUmVnaXN0ZXJUeXBlID0g
KGJ1aWxkZXIsIHR5cGUpID0+IHsKICAgICBpZiAodHlwZW9mKHR5cGUpID09PSAibnVtYmVyIikg
ewogICAgICAgICAvLyBUeXBlIG51bWJlcnMgYWxyZWFkeSByZWZlciB0byB0aGUgdHlwZSBzZWN0
aW9uLCBubyBuZWVkIHRvIHJlZ2lzdGVyIHRoZW0uCiAgICAgICAgIGlmIChidWlsZGVyLl9jaGVj
a2VkKSB7Ci0gICAgICAgICAgICBhc3NlcnQuaXNOb3RVbmRlZih0eXBlU2VjdGlvbiwgYENhbid0
IHVzZSB0eXBlICR7dHlwZX0gaWYgYSB0eXBlIHNlY3Rpb24gaXNuJ3QgcHJlc2VudGApOwotICAg
ICAgICAgICAgYXNzZXJ0LmlzTm90VW5kZWYodHlwZVNlY3Rpb24uZGF0YVt0eXBlXSwgYFR5cGUg
JHt0eXBlfSBkb2Vzbid0IGV4aXN0IGluIHR5cGUgc2VjdGlvbmApOworICAgICAgICAgICAgYXNz
ZXJ0LmlzTm90VW5kZWYodHlwZVNlY3Rpb24sIGBDYW4gbm90IHVzZSB0eXBlICR7dHlwZX0gaWYg
YSB0eXBlIHNlY3Rpb24gaXMgbm90IHByZXNlbnRgKTsKKyAgICAgICAgICAgIGFzc2VydC5pc05v
dFVuZGVmKHR5cGVTZWN0aW9uLmRhdGFbdHlwZV0sIGBUeXBlICR7dHlwZX0gZG9lcyBub3QgZXhp
c3QgaW4gdHlwZSBzZWN0aW9uYCk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHR5cGU7CiAg
ICAgfQogICAgIGFzc2VydC5oYXNPYmplY3RQcm9wZXJ0eSh0eXBlLCAicGFyYW1zIiwgYEV4cGVj
dGVkIHR5cGUgdG8gYmUgYSBudW1iZXIgb3Igb2JqZWN0IHdpdGggJ3BhcmFtcycgYW5kIG9wdGlv
bmFsbHkgJ3JldCcgZmllbGRzYCk7CiAgICAgY29uc3QgW3BhcmFtcywgcmV0XSA9IF9ub3JtYWxp
emVGdW5jdGlvblNpZ25hdHVyZSh0eXBlLnBhcmFtcywgdHlwZS5yZXQpOwotICAgIGFzc2VydC5p
c05vdFVuZGVmKHR5cGVTZWN0aW9uLCBgQ2FuJ3QgYWRkIHR5cGUgaWYgYSB0eXBlIHNlY3Rpb24g
aXNuJ3QgcHJlc2VudGApOworICAgIGFzc2VydC5pc05vdFVuZGVmKHR5cGVTZWN0aW9uLCBgQ2Fu
IG5vdCBhZGQgdHlwZSBpZiBhIHR5cGUgc2VjdGlvbiBpcyBub3QgcHJlc2VudGApOwogICAgIC8v
IFRyeSByZXVzaW5nIGFuIGVxdWl2YWxlbnQgdHlwZSBmcm9tIHRoZSB0eXBlIHNlY3Rpb24uCiAg
ICAgdHlwZXM6CiAgICAgZm9yIChsZXQgaSA9IDA7IGkgIT09IHR5cGVTZWN0aW9uLmRhdGEubGVu
Z3RoOyArK2kpIHsKQEAgLTE1NCw2ICsxNTQsMTU2IEBAIGNvbnN0IF9leHBvcnRGdW5jdGlvbkNv
bnRpbnVhdGlvbiA9IChidWlsZGVyLCBzZWN0aW9uLCBuZXh0QnVpbGRlcikgPT4gewogICAgIH07
CiB9OwogCitjb25zdCBfY2hlY2tTdGFja0FyZ3MgPSAob3AsIHBhcmFtKSA9PiB7CisgICAgZm9y
IChsZXQgZXhwZWN0IG9mIHBhcmFtbikgeworICAgICAgICBpZiAoV0FTTS5pc1ZhbGlkVmFsdWVU
eXBlKGV4cGVjdCkpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FIGltcGxlbWVudCBzdGFjayBjaGVj
a3MgZm9yIGFyZ3VtZW50cy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2MzQyMQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gSGFuZGxlIG91ciBvd24g
bWV0YS10eXBlcy4KKyAgICAgICAgICAgIHN3aXRjaCAoZXhwZWN0KSB7CisgICAgICAgICAgICBj
YXNlICJhZGRyIjogYnJlYWs7IC8vIEZJWE1FIGltcGxlbWVudCBhZGRyLiBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDIxCisgICAgICAgICAgICBjYXNlICJhbnki
OiBicmVhazsgLy8gRklYTUUgaW1wbGVtZW50IGFueS4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2MzQyMQorICAgICAgICAgICAgY2FzZSAiYm9vbCI6IGJyZWFrOyAv
LyBGSVhNRSBpbXBsZW1lbnQgYm9vbC4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2MzQyMQorICAgICAgICAgICAgY2FzZSAiY2FsbCI6IGJyZWFrOyAvLyBGSVhNRSBp
bXBsZW1lbnQgY2FsbCBzdGFjayBhcmd1bWVudCBjaGVja3MgYmFzZWQgb24gZnVuY3Rpb24gc2ln
bmF0dXJlLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDIxCisg
ICAgICAgICAgICBjYXNlICJnbG9iYWwiOiBicmVhazsgLy8gRklYTUUgaW1wbGVtZW50IGdsb2Jh
bC4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzQyMQorICAgICAg
ICAgICAgY2FzZSAibG9jYWwiOiBicmVhazsgLy8gRklYTUUgaW1wbGVtZW50IGxvY2FsLiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDIxCisgICAgICAgICAgICBj
YXNlICJwcmV2IjogYnJlYWs7IC8vIEZJWE1FIGltcGxlbWVudCBwcmV2LCBjaGVja2luZyBmb3Ig
d2hldGV2ZXIgdGhlIHByZXZpb3VzIHZhbHVlIHdhcy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2MzQyMQorICAgICAgICAgICAgY2FzZSAic2l6ZSI6IGJyZWFrOyAv
LyBGSVhNRSBpbXBsZW1lbnQgc2l6ZS4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2MzQyMQorICAgICAgICAgICAgZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKGBJbXBs
ZW1lbnRhdGlvbiBwcm9ibGVtOiB1bmhhbmRsZWQgbWV0YS10eXBlICIke2V4cGVjdH0iIG9uICIk
e29wfSJgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKworY29uc3QgX2No
ZWNrU3RhY2tSZXR1cm4gPSAob3AsIHJldCkgPT4geworICAgIGZvciAobGV0IGV4cGVjdCBvZiBy
ZXQpIHsKKyAgICAgICAgaWYgKFdBU00uaXNWYWxpZFZhbHVlVHlwZShleHBlY3QpKSB7CisgICAg
ICAgICAgICAvLyBGSVhNRSBpbXBsZW1lbnQgc3RhY2sgY2hlY2tzIGZvciByZXR1cm4uIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM0MjEKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIC8vIEhhbmRsZSBvdXIgb3duIG1ldGEtdHlwZXMuCisgICAgICAgICAg
ICBzd2l0Y2ggKGV4cGVjdCkgeworICAgICAgICAgICAgY2FzZSAiYm9vbCI6IGJyZWFrOyAvLyBG
SVhNRSBpbXBsZW1lbnQgYm9vbC4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2MzQyMQorICAgICAgICAgICAgY2FzZSAiY2FsbCI6IGJyZWFrOyAvLyBGSVhNRSBpbXBs
ZW1lbnQgY2FsbCBzdGFjayByZXR1cm4gY2hlY2sgYmFzZWQgb24gZnVuY3Rpb24gc2lnbmF0dXJl
LiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDIxCisgICAgICAg
ICAgICBjYXNlICJjb250cm9sIjogYnJlYWs7IC8vIEZJWE1FIGltcGxlbWVudCBjb250cm9sLiBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDIxCisgICAgICAgICAg
ICBjYXNlICJnbG9iYWwiOiBicmVhazsgLy8gRklYTUUgaW1wbGVtZW50IGdsb2JhbC4gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzQyMQorICAgICAgICAgICAgY2Fz
ZSAibG9jYWwiOiBicmVhazsgLy8gRklYTUUgaW1wbGVtZW50IGxvY2FsLiBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDIxCisgICAgICAgICAgICBjYXNlICJwcmV2
IjogYnJlYWs7IC8vIEZJWE1FIGltcGxlbWVudCBwcmV2LCBjaGVja2luZyBmb3Igd2hldGV2ZXIg
dGhlIHBhcmFtZXRlciB0eXBlIHdhcy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2MzQyMQorICAgICAgICAgICAgY2FzZSAic2l6ZSI6IGJyZWFrOyAvLyBGSVhNRSBp
bXBsZW1lbnQgc2l6ZS4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
MzQyMQorICAgICAgICAgICAgZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKGBJbXBsZW1lbnRhdGlv
biBwcm9ibGVtOiB1bmhhbmRsZWQgbWV0YS10eXBlICIke2V4cGVjdH0iIG9uICIke29wfSJgKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgfQorfTsKKworY29uc3QgX2NoZWNrSW1tcyA9IChvcCwgaW1tcywgZXhwZWN0ZWRJbW1z
KSA9PiB7CisgICAgYXNzZXJ0LmVxKGltbXMubGVuZ3RoLCBleHBlY3RlZEltbXMubGVuZ3RoLCBg
IiR7b3B9IiBleHBlY3RzICR7ZXhwZWN0ZWRJbW1zLmxlbmd0aH0gaW1tZWRpYXRlcywgZ290ICR7
aW1tcy5sZW5ndGh9YCk7CisgICAgZm9yIChsZXQgaWR4ID0gMDsgaWR4ICE9PSBleHBlY3RlZElt
bXMubGVuZ3RoOyArK2lkeCkgeworICAgICAgICBjb25zdCBnb3QgPSBpbW1zW2lkeF07CisgICAg
ICAgIGNvbnN0IGV4cGVjdCA9IGV4cGVjdGVkSW1tc1tpZHhdOworICAgICAgICBzd2l0Y2ggKGV4
cGVjdC5uYW1lKSB7CisgICAgICAgIGNhc2UgImZ1bmN0aW9uX2luZGV4IjoKKyAgICAgICAgICAg
IGFzc2VydC50cnV0aHkoX2lzVmFsaWRWYWx1ZShnb3QsICJpMzIiKSwgYEludmFsaWQgdmFsdWUg
b24gJHtvcH06IGdvdCAiJHtnb3R9IiwgZXhwZWN0ZWQgaTMyYCk7CisgICAgICAgICAgICAvLyBG
SVhNRSBjaGVjayBmdW5jdGlvbiBpbmRpY2VzLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTYzNDIxCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAibG9j
YWxfaW5kZXgiOiB0aHJvdyBuZXcgRXJyb3IoYFVuaW1wbGVtZW50ZWQ6ICIke2V4cGVjdC5uYW1l
fSIgb24gIiR7b3B9ImApOworICAgICAgICBjYXNlICJnbG9iYWxfaW5kZXgiOiB0aHJvdyBuZXcg
RXJyb3IoYFVuaW1wbGVtZW50ZWQ6ICIke2V4cGVjdC5uYW1lfSIgb24gIiR7b3B9ImApOworICAg
ICAgICBjYXNlICJ0eXBlX2luZGV4IjogdGhyb3cgbmV3IEVycm9yKGBVbmltcGxlbWVudGVkOiAi
JHtleHBlY3QubmFtZX0iIG9uICIke29wfSJgKTsKKyAgICAgICAgY2FzZSAidmFsdWUiOgorICAg
ICAgICAgICAgYXNzZXJ0LnRydXRoeShfaXNWYWxpZFZhbHVlKGdvdCwgcmV0WzBdKSwgYEludmFs
aWQgdmFsdWUgb24gJHtvcH06IGdvdCAiJHtnb3R9IiwgZXhwZWN0ZWQgJHtyZXRbMF19YCk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAiZmxhZ3MiOiB0aHJvdyBuZXcgRXJyb3Io
YFVuaW1wbGVtZW50ZWQ6ICIke2V4cGVjdC5uYW1lfSIgb24gIiR7b3B9ImApOworICAgICAgICBj
YXNlICJvZmZzZXQiOiB0aHJvdyBuZXcgRXJyb3IoYFVuaW1wbGVtZW50ZWQ6ICIke2V4cGVjdC5u
YW1lfSIgb24gIiR7b3B9ImApOworICAgICAgICAgICAgLy8gQ29udHJvbDoKKyAgICAgICAgY2Fz
ZSAiZGVmYXVsdF90YXJnZXQiOiB0aHJvdyBuZXcgRXJyb3IoYFVuaW1wbGVtZW50ZWQ6ICIke2V4
cGVjdC5uYW1lfSIgb24gIiR7b3B9ImApOworICAgICAgICBjYXNlICJyZWxhdGl2ZV9kZXB0aCI6
IHRocm93IG5ldyBFcnJvcihgVW5pbXBsZW1lbnRlZDogIiR7ZXhwZWN0Lm5hbWV9IiBvbiAiJHtv
cH0iYCk7CisgICAgICAgIGNhc2UgInNpZyI6IHRocm93IG5ldyBFcnJvcihgVW5pbXBsZW1lbnRl
ZDogIiR7ZXhwZWN0Lm5hbWV9IiBvbiAiJHtvcH0iYCk7CisgICAgICAgIGNhc2UgInRhcmdldF9j
b3VudCI6IHRocm93IG5ldyBFcnJvcihgVW5pbXBsZW1lbnRlZDogIiR7ZXhwZWN0Lm5hbWV9IiBv
biAiJHtvcH0iYCk7CisgICAgICAgIGNhc2UgInRhcmdldF90YWJsZSI6IHRocm93IG5ldyBFcnJv
cihgVW5pbXBsZW1lbnRlZDogIiR7ZXhwZWN0Lm5hbWV9IiBvbiAiJHtvcH0iYCk7CisgICAgICAg
IGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcihgSW1wbGVtZW50YXRpb24gcHJvYmxlbTogdW5oYW5k
bGVkIGltbWVkaWF0ZSAiJHtleHBlY3QubmFtZX0iIG9uICIke29wfSJgKTsKKyAgICAgICAgfQor
ICAgIH0KK307CisKK2NvbnN0IF9jcmVhdGVGdW5jdGlvbkJ1aWxkZXIgPSAoZnVuYywgYnVpbGRl
ciwgcHJldmlvdXNCdWlsZGVyKSA9PiB7CisgICAgbGV0IGZ1bmN0aW9uQnVpbGRlciA9IHt9Owor
ICAgIGZvciAoY29uc3Qgb3AgaW4gV0FTTS5kZXNjcmlwdGlvbi5vcGNvZGUpIHsKKyAgICAgICAg
Y29uc3QgbmFtZSA9IF90b0phdmFTY3JpcHROYW1lKG9wKTsKKyAgICAgICAgY29uc3QgdmFsdWUg
PSBXQVNNLmRlc2NyaXB0aW9uLm9wY29kZVtvcF0udmFsdWU7CisgICAgICAgIGNvbnN0IHJldCA9
IFdBU00uZGVzY3JpcHRpb24ub3Bjb2RlW29wXVsicmV0dXJuIl07CisgICAgICAgIGNvbnN0IHBh
cmFtID0gV0FTTS5kZXNjcmlwdGlvbi5vcGNvZGVbb3BdLnBhcmFtZXRlcjsKKyAgICAgICAgY29u
c3QgaW1tID0gV0FTTS5kZXNjcmlwdGlvbi5vcGNvZGVbb3BdLmltbWVkaWF0ZTsKKworICAgICAg
ICBjb25zdCBjaGVja1N0YWNrQXJncyA9IGJ1aWxkZXIuX2NoZWNrZWQgPyBfY2hlY2tTdGFja0Fy
Z3MgOiAoKSA9PiB7fTsKKyAgICAgICAgY29uc3QgY2hlY2tTdGFja1JldHVybiA9IGJ1aWxkZXIu
X2NoZWNrZWQgPyBfY2hlY2tTdGFja1JldHVybiA6ICgpID0+IHt9OworICAgICAgICBjb25zdCBj
aGVja0ltbXMgPSBidWlsZGVyLl9jaGVja2VkID8gX2NoZWNrSW1tcyA6ICgpID0+IHt9OworCisg
ICAgICAgIGZ1bmN0aW9uQnVpbGRlcltuYW1lXSA9ICguLi5hcmdzKSA9PiB7CisgICAgICAgICAg
ICBsZXQgbmV4dEJ1aWxkZXI7CisgICAgICAgICAgICBzd2l0Y2ggKG5hbWUpIHsKKyAgICAgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgbmV4dEJ1aWxkZXIgPSBmdW5jdGlvbkJ1aWxk
ZXI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAiRW5kIjoK
KyAgICAgICAgICAgICAgICBuZXh0QnVpbGRlciA9IHByZXZpb3VzQnVpbGRlcjsKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICJCbG9jayI6CisgICAgICAgICAg
ICAgICAgY2FzZSAiTG9vcCI6CisgICAgICAgICAgICBjYXNlICJJZiI6CisgICAgICAgICAgICAg
ICAgbmV4dEJ1aWxkZXIgPSBfY3JlYXRlRnVuY3Rpb25CdWlsZGVyKGZ1bmMsIGJ1aWxkZXIsIGZ1
bmN0aW9uQnVpbGRlcik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIC8vIFBhc3NpbmcgYSBmdW5jdGlvbiBhcyB0aGUgYXJndW1lbnQgaXMgYSB3
YXkgdG8gbmVzdCBibG9ja3MgbGV4aWNhbGx5LgorICAgICAgICAgICAgY29uc3QgY29udGludWF0
aW9uID0gYXJnc1thcmdzLmxlbmd0aCAtIDFdOworICAgICAgICAgICAgY29uc3QgaGFzQ29udGlu
dWF0aW9uID0gdHlwZW9mKGNvbnRpbnVhdGlvbikgPT09ICJmdW5jdGlvbiI7CisgICAgICAgICAg
ICBjb25zdCBpbW1zID0gaGFzQ29udGludWF0aW9uID8gYXJncy5zbGljZSgwLCAtMSkgOiBhcmdz
OyAvLyBGSVhNRTogYWxsb3cgcGFzc2luZyBpbiBzdGFjayB2YWx1ZXMsIGFzLWlmIGNvZGUgd2Vy
ZSBhIHN0YWNrIG1hY2hpbmUuIEp1c3QgY2hlY2sgZm9yIGEgYnVpbGRlciB0byB0aGlzIGZ1bmN0
aW9uLCBhbmQgZHJvcC4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
MzQyMgorICAgICAgICAgICAgY2hlY2tJbW1zKG9wLCBpbW1zLCBpbW0pOworICAgICAgICAgICAg
Y2hlY2tTdGFja0FyZ3Mob3AsIHBhcmFtKTsKKyAgICAgICAgICAgIGNoZWNrU3RhY2tSZXR1cm4o
b3AsIHJldCk7CisgICAgICAgICAgICBjb25zdCBzdGFja0FyZ3MgPSBbXTsgLy8gRklYTUUgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjcwNgorICAgICAgICAgICAg
ZnVuYy5jb2RlLnB1c2goeyBuYW1lOiBvcCwgdmFsdWU6IHZhbHVlLCBhcmd1bWVudHM6IHN0YWNr
QXJncywgaW1tZWRpYXRlczogaW1tcyB9KTsKKyAgICAgICAgICAgIGlmIChoYXNDb250aW51YXRp
b24pCisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihuZXh0QnVpbGRlcikuRW5k
KCk7CisgICAgICAgICAgICByZXR1cm4gbmV4dEJ1aWxkZXI7CisgICAgICAgIH07CisgICAgfQor
ICAgIHJldHVybiBmdW5jdGlvbkJ1aWxkZXI7Cit9CisKK2NvbnN0IF9jcmVhdGVGdW5jdGlvbiA9
IChzZWN0aW9uLCBidWlsZGVyLCBwcmV2aW91c0J1aWxkZXIpID0+IHsKKyAgICByZXR1cm4gKC4u
LmFyZ3MpID0+IHsKKyAgICAgICAgY29uc3QgbmFtZU9mZnNldCA9ICh0eXBlb2YoYXJnc1swXSkg
PT09ICJzdHJpbmciKSA+Pj4gMDsKKyAgICAgICAgY29uc3QgZnVuY3Rpb25OYW1lID0gbmFtZU9m
ZnNldCA/IGFyZ3NbMF0gOiB1bmRlZmluZWQ7CisgICAgICAgIGxldCBzaWduYXR1cmUgPSBhcmdz
WzAgKyBuYW1lT2Zmc2V0XTsKKyAgICAgICAgY29uc3QgbG9jYWxzID0gYXJnc1sxICsgbmFtZU9m
ZnNldF0gPT09IHVuZGVmaW5lZCA/IFtdIDogYXJnc1sxICsgbmFtZU9mZnNldF07CisgICAgICAg
IGZvciAoY29uc3QgbG9jYWwgb2YgbG9jYWxzKQorICAgICAgICAgICAgYXNzZXJ0LnRydXRoeShX
QVNNLmlzVmFsaWRWYWx1ZVR5cGUobG9jYWwpLCBgVHlwZSBvZiBsb2NhbDogJHtsb2NhbH0gbmVl
ZHMgdG8gYmUgYSB2YWxpZCB2YWx1ZSB0eXBlYCk7CisKKyAgICAgICAgaWYgKHR5cGVvZihzaWdu
YXR1cmUpID09PSAidW5kZWZpbmVkIikKKyAgICAgICAgICAgIHNpZ25hdHVyZSA9IHsgcGFyYW1z
OiBbXSB9OworICAgICAgICBhc3NlcnQuaGFzT2JqZWN0UHJvcGVydHkoc2lnbmF0dXJlLCAicGFy
YW1zIiwgYEV4cGVjdCBmdW5jdGlvbiBzaWduYXR1cmUgdG8gYmUgYW4gb2JqZWN0IHdpdGggYSAi
cGFyYW1zIiBmaWVsZCwgZ290ICIke3NpZ25hdHVyZX0iYCk7CisgICAgICAgIGNvbnN0IFtwYXJh
bXMsIHJldF0gPSBfbm9ybWFsaXplRnVuY3Rpb25TaWduYXR1cmUoc2lnbmF0dXJlLnBhcmFtcywg
c2lnbmF0dXJlLnJldCk7CisgICAgICAgIHNpZ25hdHVyZSA9IHsgcGFyYW1zOiBwYXJhbXMsIHJl
dDogcmV0IH07CisgICAgICAgIGNvbnN0IGZ1bmMgPSB7CisgICAgICAgICAgICBuYW1lOiBmdW5j
dGlvbk5hbWUsCisgICAgICAgICAgICB0eXBlOiBfbWF5YmVSZWdpc3RlclR5cGUoYnVpbGRlciwg
c2lnbmF0dXJlKSwKKyAgICAgICAgICAgIHNpZ25hdHVyZTogc2lnbmF0dXJlLAorICAgICAgICAg
ICAgbG9jYWxzOiBwYXJhbXMuY29uY2F0KGxvY2FscyksIC8vIFBhcmFtZXRlcnMgYXJlIHRoZSBm
aXJzdCBsb2NhbHMuCisgICAgICAgICAgICBwYXJhbWV0ZXJDb3VudDogcGFyYW1zLmxlbmd0aCwK
KyAgICAgICAgICAgIGNvZGU6IFtdCisgICAgICAgIH07CisKKyAgICAgICAgY29uc3QgZnVuY3Rp
b25TZWN0aW9uID0gYnVpbGRlci5fZ2V0U2VjdGlvbigiRnVuY3Rpb24iKTsKKyAgICAgICAgaWYg
KGZ1bmN0aW9uU2VjdGlvbikKKyAgICAgICAgICAgIGZ1bmN0aW9uU2VjdGlvbi5kYXRhLnB1c2go
ZnVuYy50eXBlKTsKKworICAgICAgICBzZWN0aW9uLmRhdGEucHVzaChmdW5jKTsKKyAgICAgICAg
YnVpbGRlci5fcmVnaXN0ZXJGdW5jdGlvblRvSW5kZXhTcGFjZShmdW5jdGlvbk5hbWUpOworCisg
ICAgICAgIHJldHVybiBfY3JlYXRlRnVuY3Rpb25CdWlsZGVyKGZ1bmMsIGJ1aWxkZXIsIHByZXZp
b3VzQnVpbGRlcik7CisgICAgfQorfTsKKwogZXhwb3J0IGRlZmF1bHQgY2xhc3MgQnVpbGRlciB7
CiAgICAgY29uc3RydWN0b3IoKSB7CiAgICAgICAgIHRoaXMuc2V0Q2hlY2tlZCh0cnVlKTsKQEAg
LTIxOCw2ICszNjgsNyBAQCBleHBvcnQgZGVmYXVsdCBjbGFzcyBCdWlsZGVyIHsKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGltcG9ydEJ1aWxkZXI7CiAgICAgICAgICAgICAgICAgfTsKICAg
ICAgICAgICAgICAgICBicmVhazsKKwogICAgICAgICAgICAgY2FzZSAiRXhwb3J0IjoKICAgICAg
ICAgICAgICAgICB0aGlzW3NlY3Rpb25dID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHMgPSB0aGlzLl9hZGRTZWN0aW9uKHNlY3Rpb24pOwpAQCAtMjMxLDYgKzM4Miwz
MiBAQCBleHBvcnQgZGVmYXVsdCBjbGFzcyBCdWlsZGVyIHsKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGV4cG9ydEJ1aWxkZXI7CiAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICAgICAgY2FzZSAiTWVtb3J5IjoKKyAgICAgICAgICAgICAgICB0
aGlzW3NlY3Rpb25dID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IHMg
PSB0aGlzLl9hZGRTZWN0aW9uKHNlY3Rpb24pOworICAgICAgICAgICAgICAgICAgICBjb25zdCBl
eHBvcnRCdWlsZGVyID0geworICAgICAgICAgICAgICAgICAgICAgICAgRW5kOiAoKSA9PiB0aGlz
LAorICAgICAgICAgICAgICAgICAgICAgICAgSW5pdGlhbE1heFBhZ2VzOiAoaW5pdGlhbCwgbWF4
KSA9PiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5kYXRhLnB1c2goeyBpbml0aWFs
LCBtYXggfSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV4cG9ydEJ1aWxk
ZXI7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH07Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBleHBvcnRCdWlsZGVyOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSAiRnVuY3Rpb24i
OgorICAgICAgICAgICAgICAgIHRoaXNbc2VjdGlvbl0gPSBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgICAgICAgICAgY29uc3QgcyA9IHRoaXMuX2FkZFNlY3Rpb24oc2VjdGlvbik7CisgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGV4cG9ydEJ1aWxkZXIgPSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBFbmQ6ICgpID0+IHRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBh
ZGQgYWJpbGl0eSB0byBhZGQgdGhpcyB3aXRoIHdoYXRldmVyLgorICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBleHBvcnRCdWlsZGVyOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKwogICAgICAgICAgICAgY2FzZSAiQ29k
ZSI6CiAgICAgICAgICAgICAgICAgdGhpc1tzZWN0aW9uXSA9IGZ1bmN0aW9uKCkgewogICAgICAg
ICAgICAgICAgICAgICBjb25zdCBzID0gdGhpcy5fYWRkU2VjdGlvbihzZWN0aW9uKTsKQEAgLTI1
NCw3ICs0MzEsNyBAQCBleHBvcnQgZGVmYXVsdCBjbGFzcyBCdWlsZGVyIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIm51bWJlciI6IHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbmRleCA9IGJ1aWxkZXIuX2dldEZ1bmN0
aW9uRnJvbUluZGV4U3BhY2UoZS5pbmRleCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKGJ1aWxkZXIuX2NoZWNrZWQpCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFzc2VydC5pc05vdFVuZGVmKGluZGV4LCBgRXhwb3J0ICIk
e2UuZmllbGR9IiBkb2Vzbid0IGNvcnJlc3BvbmQgdG8gYSBkZWZpbmVkIHZhbHVlIGluIHRoZSBm
dW5jdGlvbiBpbmRleCBzcGFjZWApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhc3NlcnQuaXNOb3RVbmRlZihpbmRleCwgYEV4cG9ydCAiJHtlLmZpZWxkfSIg
ZG9lcyBub3QgY29ycmVzcG9uZCB0byBhIGRlZmluZWQgdmFsdWUgaW4gdGhlIGZ1bmN0aW9uIGlu
ZGV4IHNwYWNlYCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGJyZWFr
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAidW5kZWZpbmVkIjoK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
YFVuaW1wbGVtZW50ZWQ6IEZ1bmN0aW9uKCkuRW5kKCkgd2l0aCB1bmRlZmluZWQgZXhwb3J0IGlu
ZGV4YCk7IC8vIEZJWE1FCkBAIC0yNjksMTE1ICs0NDYsMTMgQEAgZXhwb3J0IGRlZmF1bHQgY2xh
c3MgQnVpbGRlciB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBidWlsZGVyOwogICAgICAgICAgICAgICAgICAgICAgICAg
fSwKLSAgICAgICAgICAgICAgICAgICAgICAgIEZ1bmN0aW9uOiAoYTAsIGExKSA9PiB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHNpZ25hdHVyZSA9IHR5cGVvZihhMCkgPT09ICJz
dHJpbmciID8gYTEgOiBhMDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmdW5j
dGlvbk5hbWUgPSB0eXBlb2YoYTApID09PSAic3RyaW5nIiA/IGEwIDogdW5kZWZpbmVkOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2Yoc2lnbmF0dXJlKSA9PT0gInVuZGVm
aW5lZCIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25hdHVyZSA9IHsgcGFy
YW1zOiBbXSB9OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydC5oYXNPYmplY3RQ
cm9wZXJ0eShzaWduYXR1cmUsICJwYXJhbXMiLCBgRXhwZWN0IGZ1bmN0aW9uIHNpZ25hdHVyZSB0
byBiZSBhbiBvYmplY3Qgd2l0aCBhICJwYXJhbXMiIGZpZWxkLCBnb3QgIiR7c2lnbmF0dXJlfSJg
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBbcGFyYW1zLCByZXRdID0gX25v
cm1hbGl6ZUZ1bmN0aW9uU2lnbmF0dXJlKHNpZ25hdHVyZS5wYXJhbXMsIHNpZ25hdHVyZS5yZXQp
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25hdHVyZSA9IHsgcGFyYW1zOiBwYXJh
bXMsIHJldDogcmV0IH07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZnVuYyA9
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogZnVuY3Rpb25OYW1lLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBfbWF5YmVSZWdpc3RlclR5cGUo
YnVpbGRlciwgc2lnbmF0dXJlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2ln
bmF0dXJlOiBzaWduYXR1cmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2Fs
czogcGFyYW1zLCAvLyBQYXJhbWV0ZXJzIGFyZSB0aGUgZmlyc3QgbG9jYWxzLgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJDb3VudDogcGFyYW1zLmxlbmd0aCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogW10KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuZGF0YS5wdXNoKGZ1
bmMpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIuX3JlZ2lzdGVyRnVuY3Rp
b25Ub0luZGV4U3BhY2UoZnVuY3Rpb25OYW1lKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBsZXQgZnVuY3Rpb25CdWlsZGVyID0ge307Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
Zm9yIChjb25zdCBvcCBpbiBXQVNNLmRlc2NyaXB0aW9uLm9wY29kZSkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBuYW1lID0gX3RvSmF2YVNjcmlwdE5hbWUob3ApOwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IFdBU00uZGVzY3Jp
cHRpb24ub3Bjb2RlW29wXS52YWx1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgcmV0ID0gV0FTTS5kZXNjcmlwdGlvbi5vcGNvZGVbb3BdWyJyZXR1cm4iXTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyYW0gPSBXQVNNLmRlc2NyaXB0aW9u
Lm9wY29kZVtvcF0ucGFyYW1ldGVyOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBpbW0gPSBXQVNNLmRlc2NyaXB0aW9uLm9wY29kZVtvcF0uaW1tZWRpYXRlOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGVja1N0YWNrQXJncyA9IGJ1aWxkZXIu
X2NoZWNrZWQgPyBvcCA9PiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
b3IgKGxldCBleHBlY3Qgb2YgcGFyYW0pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoV0FTTS5pc1ZhbGlkVmFsdWVUeXBlKGV4cGVjdCkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRklYTUUgaW1wbGVtZW50IHN0
YWNrIGNoZWNrcyBmb3IgYXJndW1lbnRzLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTYzNDIxCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
SGFuZGxlIG91ciBvd24gbWV0YS10eXBlcy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3dpdGNoIChleHBlY3QpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2FzZSAiYWRkciI6IGJyZWFrOyAvLyBGSVhNRSBpbXBsZW1l
bnQgYWRkci4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzQyMQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJhbnkiOiBi
cmVhazsgLy8gRklYTUUgaW1wbGVtZW50IGFueS4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2MzQyMQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjYXNlICJib29sIjogYnJlYWs7IC8vIEZJWE1FIGltcGxlbWVudCBib29sLiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDIxCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImNhbGwiOiBicmVhazsgLy8gRklY
TUUgaW1wbGVtZW50IGNhbGwgc3RhY2sgYXJndW1lbnQgY2hlY2tzIGJhc2VkIG9uIGZ1bmN0aW9u
IHNpZ25hdHVyZS4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzQy
MQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJnbG9i
YWwiOiBicmVhazsgLy8gRklYTUUgaW1wbGVtZW50IGdsb2JhbC4gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzQyMQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjYXNlICJsb2NhbCI6IGJyZWFrOyAvLyBGSVhNRSBpbXBsZW1lbnQg
bG9jYWwuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM0MjEKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAicHJldiI6IGJy
ZWFrOyAvLyBGSVhNRSBpbXBsZW1lbnQgcHJldiwgY2hlY2tpbmcgZm9yIHdoZXRldmVyIHRoZSBw
cmV2aW91cyB2YWx1ZSB3YXMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjM0MjEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2Fz
ZSAic2l6ZSI6IGJyZWFrOyAvLyBGSVhNRSBpbXBsZW1lbnQgc2l6ZS4gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzQyMQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoYEltcGxlbWVudGF0
aW9uIHByb2JsZW06IHVuaGFuZGxlZCBtZXRhLXR5cGUgIiR7ZXhwZWN0fSIgb24gIiR7b3B9ImAp
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IDogKCkg
PT4ge307Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoZWNrU3RhY2tS
ZXR1cm4gPSBidWlsZGVyLl9jaGVja2VkID8gb3AgPT4gewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZm9yIChsZXQgZXhwZWN0IG9mIHJldCkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChXQVNNLmlzVmFsaWRWYWx1ZVR5cGUoZXhwZWN0
KSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGSVhN
RSBpbXBsZW1lbnQgc3RhY2sgY2hlY2tzIGZvciByZXR1cm4uIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM0MjEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBIYW5kbGUgb3VyIG93biBtZXRhLXR5cGVzLgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGV4cGVjdCkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJib29sIjogYnJlYWs7IC8vIEZJ
WE1FIGltcGxlbWVudCBib29sLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTYzNDIxCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNh
c2UgImNhbGwiOiBicmVhazsgLy8gRklYTUUgaW1wbGVtZW50IGNhbGwgc3RhY2sgcmV0dXJuIGNo
ZWNrIGJhc2VkIG9uIGZ1bmN0aW9uIHNpZ25hdHVyZS4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2MzQyMQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjYXNlICJjb250cm9sIjogYnJlYWs7IC8vIEZJWE1FIGltcGxlbWVudCBjb250
cm9sLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDIxCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImdsb2JhbCI6IGJy
ZWFrOyAvLyBGSVhNRSBpbXBsZW1lbnQgZ2xvYmFsLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTYzNDIxCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNhc2UgImxvY2FsIjogYnJlYWs7IC8vIEZJWE1FIGltcGxlbWVudCBsb2NhbC4g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzQyMQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJwcmV2IjogYnJlYWs7IC8v
IEZJWE1FIGltcGxlbWVudCBwcmV2LCBjaGVja2luZyBmb3Igd2hldGV2ZXIgdGhlIHBhcmFtZXRl
ciB0eXBlIHdhcy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzQy
MQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJzaXpl
IjogYnJlYWs7IC8vIEZJWE1FIGltcGxlbWVudCBzaXplLiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDIxCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcihgSW1wbGVtZW50YXRpb24gcHJv
YmxlbTogdW5oYW5kbGVkIG1ldGEtdHlwZSAiJHtleHBlY3R9IiBvbiAiJHtvcH0iYCk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gOiAoKSA9PiB7fTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hlY2tJbW1zID0gYnVpbGRl
ci5fY2hlY2tlZCA/IChvcCwgaW1tcykgPT4gewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYXNzZXJ0LmVxKGltbXMubGVuZ3RoLCBpbW0ubGVuZ3RoLCBgIiR7b3B9IiBleHBl
Y3RzICR7aW1tLmxlbmd0aH0gaW1tZWRpYXRlcywgZ290ICR7aW1tcy5sZW5ndGh9YCk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpZHggPSAwOyBpZHggIT09
IGltbS5sZW5ndGg7ICsraWR4KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ290ID0gaW1tc1tpZHhdOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGV4cGVjdCA9IGltbVtpZHhdOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZXhwZWN0Lm5hbWUpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJmdW5jdGlvbl9pbmRleCI6Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydC50cnV0aHkoX2lz
VmFsaWRWYWx1ZShnb3QsICJpMzIiKSwgYEludmFsaWQgdmFsdWUgb24gJHtvcH06IGdvdCAiJHtn
b3R9IiwgZXhwZWN0ZWQgaTMyYCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIEZJWE1FIGNoZWNrIGZ1bmN0aW9uIGluZGljZXMuIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM0MjEKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY2FzZSAibG9jYWxfaW5kZXgiOiB0aHJvdyBuZXcgRXJyb3IoYFVuaW1wbGVt
ZW50ZWQ6ICIke2V4cGVjdC5uYW1lfSIgb24gIiR7b3B9ImApOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImdsb2JhbF9pbmRleCI6IHRocm93IG5ldyBFcnJv
cihgVW5pbXBsZW1lbnRlZDogIiR7ZXhwZWN0Lm5hbWV9IiBvbiAiJHtvcH0iYCk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAidHlwZV9pbmRleCI6IHRocm93
IG5ldyBFcnJvcihgVW5pbXBsZW1lbnRlZDogIiR7ZXhwZWN0Lm5hbWV9IiBvbiAiJHtvcH0iYCk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAidmFsdWUiOgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQudHJ1dGh5
KF9pc1ZhbGlkVmFsdWUoZ290LCByZXRbMF0pLCBgSW52YWxpZCB2YWx1ZSBvbiAke29wfTogZ290
ICIke2dvdH0iLCBleHBlY3RlZCAke3JldFswXX1gKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY2FzZSAiZmxhZ3MiOiB0aHJvdyBuZXcgRXJyb3IoYFVuaW1wbGVtZW50ZWQ6
ICIke2V4cGVjdC5uYW1lfSIgb24gIiR7b3B9ImApOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNhc2UgIm9mZnNldCI6IHRocm93IG5ldyBFcnJvcihgVW5pbXBsZW1l
bnRlZDogIiR7ZXhwZWN0Lm5hbWV9IiBvbiAiJHtvcH0iYCk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gQ29udHJvbDoKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjYXNlICJkZWZhdWx0X3RhcmdldCI6IHRocm93IG5ldyBFcnJvcihg
VW5pbXBsZW1lbnRlZDogIiR7ZXhwZWN0Lm5hbWV9IiBvbiAiJHtvcH0iYCk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAicmVsYXRpdmVfZGVwdGgiOiB0aHJv
dyBuZXcgRXJyb3IoYFVuaW1wbGVtZW50ZWQ6ICIke2V4cGVjdC5uYW1lfSIgb24gIiR7b3B9ImAp
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInNpZyI6IHRo
cm93IG5ldyBFcnJvcihgVW5pbXBsZW1lbnRlZDogIiR7ZXhwZWN0Lm5hbWV9IiBvbiAiJHtvcH0i
YCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAidGFyZ2V0
X2NvdW50IjogdGhyb3cgbmV3IEVycm9yKGBVbmltcGxlbWVudGVkOiAiJHtleHBlY3QubmFtZX0i
IG9uICIke29wfSJgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
YXNlICJ0YXJnZXRfdGFibGUiOiB0aHJvdyBuZXcgRXJyb3IoYFVuaW1wbGVtZW50ZWQ6ICIke2V4
cGVjdC5uYW1lfSIgb24gIiR7b3B9ImApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcihgSW1wbGVtZW50YXRpb24gcHJvYmxl
bTogdW5oYW5kbGVkIGltbWVkaWF0ZSAiJHtleHBlY3QubmFtZX0iIG9uICIke29wfSJgKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0g
OiAoKSA9PiB7fTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV4dEJ1
aWxkZXIgPSBuYW1lID09PSAiRW5kIiA/IGNvZGVCdWlsZGVyIDogZnVuY3Rpb25CdWlsZGVyOwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbkJ1aWxkZXJbbmFtZV0gPSAo
Li4uYXJncykgPT4gewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
aW1tcyA9IGFyZ3M7IC8vIEZJWE1FOiBhbGxvdyBwYXNzaW5nIGluIHN0YWNrIHZhbHVlcywgYXMt
aWYgY29kZSB3ZXJlIGEgc3RhY2sgbWFjaGluZS4gSnVzdCBjaGVjayBmb3IgYSBidWlsZGVyIHRv
IHRoaXMgZnVuY3Rpb24sIGFuZCBkcm9wLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTYzNDIyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVj
a0ltbXMob3AsIGltbXMpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hl
Y2tTdGFja0FyZ3Mob3ApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hl
Y2tTdGFja1JldHVybihvcCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBzdGFja0FyZ3MgPSBbXTsgLy8gRklYTUUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2MjcwNgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZnVuYy5jb2RlLnB1c2goeyBuYW1lOiBvcCwgdmFsdWU6IHZhbHVlLCBhcmd1bWVudHM6IHN0YWNr
QXJncywgaW1tZWRpYXRlczogaW1tcyB9KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBuZXh0QnVpbGRlcjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uQnVpbGRlcjsKLSAgICAgICAgICAgICAgICAgICAgICAg
IH0KKwogICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICBjb2RlQnVp
bGRlci5GdW5jdGlvbiA9IF9jcmVhdGVGdW5jdGlvbihzLCBidWlsZGVyLCBjb2RlQnVpbGRlcik7
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb2RlQnVpbGRlcjsKICAgICAgICAgICAgICAg
ICB9OwogICAgICAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgICAgICBkZWZhdWx0OgogICAg
ICAgICAgICAgICAgIHRoaXNbc2VjdGlvbl0gPSAoKSA9PiB7IHRocm93IG5ldyBFcnJvcihgVW5p
bXBsZW1lbnRlZDogc2VjdGlvbiB0eXBlICIke3NlY3Rpb259ImApOyB9OwogICAgICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtNDIwLDcgKzQ5NSw3IEBAIGV4cG9ydCBkZWZhdWx0IGNsYXNzIEJ1aWxk
ZXIgewogICAgIH0KICAgICBfZ2V0U2VjdGlvbihuYW1lT3JOdW1iZXIpIHsKICAgICAgICAgc3dp
dGNoICh0eXBlb2YobmFtZU9yTnVtYmVyKSkgewotICAgICAgICBkZWZhdWx0OiB0aHJvdyBuZXcg
RXJyb3IoYEltcGxlbWVudGF0aW9uIHByb2JsZW06IGNhbid0IGdldCBzZWN0aW9uICIke25hbWVP
ck51bWJlcn0iYCk7CisgICAgICAgIGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcihgSW1wbGVtZW50
YXRpb24gcHJvYmxlbTogY2FuIG5vdCBnZXQgc2VjdGlvbiAiJHtuYW1lT3JOdW1iZXJ9ImApOwog
ICAgICAgICBjYXNlICJzdHJpbmciOgogICAgICAgICAgICAgZm9yIChjb25zdCBzIG9mIHRoaXMu
X3NlY3Rpb25zKQogICAgICAgICAgICAgICAgIGlmIChzLm5hbWUgPT09IG5hbWVPck51bWJlcikK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9CdWlsZGVyX1dlYkFzc2VtYmx5QmluYXJ5LmpzIGIv
SlNUZXN0cy93YXNtL0J1aWxkZXJfV2ViQXNzZW1ibHlCaW5hcnkuanMKaW5kZXggZjJiMGE1MjE4
NzM5MTYwMzBjNzM4NjM2YWNkYWNhM2U2NzJlYzIxZC4uMTU0MDMyOTNhMmE5NGFlMDgwMGM4YzM5
MmJjNTJmNWNmNTFmMmU0YSAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNtL0J1aWxkZXJfV2ViQXNz
ZW1ibHlCaW5hcnkuanMKKysrIGIvSlNUZXN0cy93YXNtL0J1aWxkZXJfV2ViQXNzZW1ibHlCaW5h
cnkuanMKQEAgLTIzLDYgKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAoraW1wb3J0ICog
YXMgYXNzZXJ0IGZyb20gJ2Fzc2VydC5qcyc7CiBpbXBvcnQgTG93TGV2ZWxCaW5hcnkgZnJvbSAn
TG93TGV2ZWxCaW5hcnkuanMnOwogaW1wb3J0ICogYXMgV0FTTSBmcm9tICdXQVNNLmpzJzsKIApA
QCAtMzAsMTEgKzMxLDExIEBAIGNvbnN0IHB1dCA9IChiaW4sIHR5cGUsIHZhbHVlKSA9PiBiaW5b
dHlwZV0odmFsdWUpOwogCiBjb25zdCBlbWl0dGVycyA9IHsKICAgICBUeXBlOiAoc2VjdGlvbiwg
YmluKSA9PiB7Ci0gICAgICAgIHB1dChiaW4sICJ2YXJ1aW50Iiwgc2VjdGlvbi5kYXRhLmxlbmd0
aCk7CisgICAgICAgIHB1dChiaW4sICJ2YXJ1aW50MzIiLCBzZWN0aW9uLmRhdGEubGVuZ3RoKTsK
ICAgICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiBzZWN0aW9uLmRhdGEpIHsKICAgICAgICAgICAg
IGNvbnN0IGZ1bmNUeXBlQ29uc3RydWN0b3IgPSAtMHgyMDsgLy8gRklYTUUgTW92ZSB0aGlzIHRv
IHdhc20uanNvbi4KICAgICAgICAgICAgIHB1dChiaW4sICJ2YXJpbnQ3IiwgZnVuY1R5cGVDb25z
dHJ1Y3Rvcik7Ci0gICAgICAgICAgICBwdXQoYmluLCAidmFydWludCIsIGVudHJ5LnBhcmFtcy5s
ZW5ndGgpOworICAgICAgICAgICAgcHV0KGJpbiwgInZhcnVpbnQzMiIsIGVudHJ5LnBhcmFtcy5s
ZW5ndGgpOwogICAgICAgICAgICAgZm9yIChjb25zdCBwYXJhbSBvZiBlbnRyeS5wYXJhbXMpCiAg
ICAgICAgICAgICAgICAgcHV0KGJpbiwgInVpbnQ4IiwgV0FTTS52YWx1ZVR5cGVWYWx1ZVtwYXJh
bV0pOwogICAgICAgICAgICAgaWYgKGVudHJ5LnJldCA9PT0gInZvaWQiKQpAQCAtNDYsNDIgKzQ3
LDgxIEBAIGNvbnN0IGVtaXR0ZXJzID0gewogICAgICAgICB9CiAgICAgfSwKICAgICBJbXBvcnQ6
IChzZWN0aW9uLCBiaW4pID0+IHsKLSAgICAgICAgcHV0KGJpbiwgInZhcnVpbnQiLCBzZWN0aW9u
LmRhdGEubGVuZ3RoKTsKKyAgICAgICAgcHV0KGJpbiwgInZhcnVpbnQzMiIsIHNlY3Rpb24uZGF0
YS5sZW5ndGgpOwogICAgICAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIHNlY3Rpb24uZGF0YSkgewog
ICAgICAgICAgICAgcHV0KGJpbiwgInN0cmluZyIsIGVudHJ5Lm1vZHVsZSk7CiAgICAgICAgICAg
ICBwdXQoYmluLCAic3RyaW5nIiwgZW50cnkuZmllbGQpOwogICAgICAgICAgICAgcHV0KGJpbiwg
InVpbnQ4IiwgV0FTTS5leHRlcm5hbEtpbmRWYWx1ZVtlbnRyeS5raW5kXSk7CiAgICAgICAgICAg
ICBzd2l0Y2ggKGVudHJ5LmtpbmQpIHsKICAgICAgICAgICAgIGRlZmF1bHQ6IHRocm93IG5ldyBF
cnJvcihgSW1wbGVtZW50YXRpb24gcHJvYmxlbTogdW5leHBlY3RlZCBraW5kICR7ZW50cnkua2lu
ZH1gKTsKLSAgICAgICAgICAgIGNhc2UgIkZ1bmN0aW9uIjogcHV0KGJpbiwgInZhcnVpbnQiLCBl
bnRyeS50eXBlKTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlICJGdW5jdGlvbiI6IHB1dChiaW4s
ICJ2YXJ1aW50MzIiLCBlbnRyeS50eXBlKTsgYnJlYWs7CiAgICAgICAgICAgICBjYXNlICJUYWJs
ZSI6IHRocm93IG5ldyBFcnJvcihgTm90IHlldCBpbXBsZW1lbnRlZGApOwogICAgICAgICAgICAg
Y2FzZSAiTWVtb3J5IjogdGhyb3cgbmV3IEVycm9yKGBOb3QgeWV0IGltcGxlbWVudGVkYCk7CiAg
ICAgICAgICAgICBjYXNlICJHbG9iYWwiOiB0aHJvdyBuZXcgRXJyb3IoYE5vdCB5ZXQgaW1wbGVt
ZW50ZWRgKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0sCi0gICAgRnVuY3Rpb246
IChzZWN0aW9uLCBiaW4pID0+IHsgdGhyb3cgbmV3IEVycm9yKGBOb3QgeWV0IGltcGxlbWVudGVk
YCk7IH0sCisKKyAgICBGdW5jdGlvbjogKHNlY3Rpb24sIGJpbikgPT4geworICAgICAgICBwdXQo
YmluLCAidmFydWludDMyIiwgc2VjdGlvbi5kYXRhLmxlbmd0aCk7CisgICAgICAgIGZvciAoY29u
c3Qgc2lnbmF0dXJlIG9mIHNlY3Rpb24uZGF0YSkKKyAgICAgICAgICAgIHB1dChiaW4sICJ2YXJ1
aW50MzIiLCBzaWduYXR1cmUpOworICAgIH0sCisKICAgICBUYWJsZTogKHNlY3Rpb24sIGJpbikg
PT4geyB0aHJvdyBuZXcgRXJyb3IoYE5vdCB5ZXQgaW1wbGVtZW50ZWRgKTsgfSwKLSAgICBNZW1v
cnk6IChzZWN0aW9uLCBiaW4pID0+IHsgdGhyb3cgbmV3IEVycm9yKGBOb3QgeWV0IGltcGxlbWVu
dGVkYCk7IH0sCisKKyAgICBNZW1vcnk6IChzZWN0aW9uLCBiaW4pID0+IHsKKyAgICAgICAgLy8g
RmxhZ3MsIGN1cnJlbnRseSBjYW4gb25seSBiZSBbMCwxXQorICAgICAgICBwdXQoYmluLCAidmFy
dWludDEiLCBzZWN0aW9uLmRhdGEubGVuZ3RoKTsKKyAgICAgICAgZm9yIChjb25zdCBtZW1vcnkg
b2Ygc2VjdGlvbi5kYXRhKSB7CisgICAgICAgICAgICBwdXQoYmluLCAidmFydWludDMyIiwgbWVt
b3J5Lm1heCA/IDEgOiAwKTsKKyAgICAgICAgICAgIHB1dChiaW4sICJ2YXJ1aW50MzIiLCBtZW1v
cnkuaW5pdGlhbCk7CisgICAgICAgICAgICBpZiAobWVtb3J5Lm1heCkKKyAgICAgICAgICAgICAg
ICBwdXQoYmluLCAidmFydWludDMyIiwgbWVtb3J5Lm1heCk7CisgICAgICAgIH0KKyAgICB9LAor
CiAgICAgR2xvYmFsOiAoc2VjdGlvbiwgYmluKSA9PiB7IHRocm93IG5ldyBFcnJvcihgTm90IHll
dCBpbXBsZW1lbnRlZGApOyB9LAogICAgIEV4cG9ydDogKHNlY3Rpb24sIGJpbikgPT4geyB0aHJv
dyBuZXcgRXJyb3IoYE5vdCB5ZXQgaW1wbGVtZW50ZWRgKTsgfSwKICAgICBTdGFydDogKHNlY3Rp
b24sIGJpbikgPT4geyB0aHJvdyBuZXcgRXJyb3IoYE5vdCB5ZXQgaW1wbGVtZW50ZWRgKTsgfSwK
ICAgICBFbGVtZW50OiAoc2VjdGlvbiwgYmluKSA9PiB7IHRocm93IG5ldyBFcnJvcihgTm90IHll
dCBpbXBsZW1lbnRlZGApOyB9LAorCiAgICAgQ29kZTogKHNlY3Rpb24sIGJpbikgPT4gewotICAg
ICAgICBwdXQoYmluLCAidmFydWludCIsIHNlY3Rpb24uZGF0YS5sZW5ndGgpOworICAgICAgICBw
dXQoYmluLCAidmFydWludDMyIiwgc2VjdGlvbi5kYXRhLmxlbmd0aCk7CiAgICAgICAgIGZvciAo
Y29uc3QgZnVuYyBvZiBzZWN0aW9uLmRhdGEpIHsKLSAgICAgICAgICAgIGxldCBmdW5jQmluID0g
YmluLm5ld1BhdGNoYWJsZSgidmFydWludCIpOwotICAgICAgICAgICAgY29uc3QgbG9jYWxDb3Vu
dCA9IGZ1bmMubG9jYWxzLmxlbmd0aDsKLSAgICAgICAgICAgIHB1dChmdW5jQmluLCAidmFydWlu
dCIsIGxvY2FsQ291bnQpOwotICAgICAgICAgICAgaWYgKGxvY2FsQ291bnQgIT09IDApIHRocm93
IG5ldyBFcnJvcihgVW5pbXBsZW1lbnRlZDogbG9jYWxzYCk7IC8vIEZJWE1FIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI3MDYKKyAgICAgICAgICAgIGxldCBmdW5j
QmluID0gYmluLm5ld1BhdGNoYWJsZSgidmFydWludDMyIik7CisgICAgICAgICAgICBjb25zdCBs
b2NhbENvdW50ID0gZnVuYy5sb2NhbHMubGVuZ3RoIC0gZnVuYy5wYXJhbWV0ZXJDb3VudDsKKyAg
ICAgICAgICAgIHB1dChmdW5jQmluLCAidmFydWludDMyIiwgbG9jYWxDb3VudCk7CisgICAgICAg
ICAgICBmb3IgKGxldCBpID0gZnVuYy5wYXJhbWV0ZXJDb3VudDsgaSA8IGZ1bmMubG9jYWxzLmxl
bmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgcHV0KGZ1bmNCaW4sICJ2YXJ1aW50MzIiLCAx
KTsKKyAgICAgICAgICAgICAgICBwdXQoZnVuY0JpbiwgInVpbnQ4IiwgV0FTTS52YWx1ZVR5cGVW
YWx1ZVtmdW5jLmxvY2Fsc1tpXV0pOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBmb3Ig
KGNvbnN0IG9wIG9mIGZ1bmMuY29kZSkgewogICAgICAgICAgICAgICAgIHB1dChmdW5jQmluLCAi
dWludDgiLCBvcC52YWx1ZSk7Ci0gICAgICAgICAgICAgICAgaWYgKG9wLmFyZ3VtZW50cy5sZW5n
dGggIT09IDApIHRocm93IG5ldyBFcnJvcihgVW5pbXBsZW1lbnRlZDogYXJndW1lbnRzYCk7IC8v
IEZJWE1FIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI3MDYKLSAg
ICAgICAgICAgICAgICBpZiAob3AuaW1tZWRpYXRlcy5sZW5ndGggIT09IDApIHRocm93IG5ldyBF
cnJvcihgVW5pbXBsZW1lbnRlZDogaW1tZWRpYXRlc2ApOyAvLyBGSVhNRSBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyNzA2CisgICAgICAgICAgICAgICAgaWYgKG9w
LmFyZ3VtZW50cy5sZW5ndGggIT09IDApCisgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBF
cnJvcihgVW5pbXBsZW1lbnRlZDogYXJndW1lbnRzYCk7IC8vIEZJWE1FIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI3MDYKKworICAgICAgICAgICAgICAgIHN3aXRj
aCAob3AubmFtZSkgeworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAg
ICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb3AuaW1tZWRpYXRlcy5sZW5ndGg7ICsraSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgdHlwZSA9IFdBU00uZGVzY3JpcHRpb24ub3Bjb2Rl
W29wLm5hbWVdLmltbWVkaWF0ZVtpXS50eXBlCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
IWZ1bmNCaW5bdHlwZV0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5
cGVFcnJvcihgVW5rbm93biB0eXBlOiAke3R5cGV9IGluIG9wOiAke29wLm5hbWV9YCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBwdXQoZnVuY0JpbiwgdHlwZSwgb3AuaW1tZWRpYXRlc1tpXSk7
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgY2FzZSAiYnJfdGFibGUiOgorICAgICAgICAgICAgICAgICAgICBwdXQoZnVu
Y0JpbiwgInZhcnVpbnQzMiIsIG9wLmltbWVkaWF0ZXMubGVuZ3RoIC0gMSk7CisgICAgICAgICAg
ICAgICAgICAgIGZvciAobGV0IGltbSBvZiBvcC5pbW1lZGlhdGVzKQorICAgICAgICAgICAgICAg
ICAgICAgICAgcHV0KGZ1bmNCaW4sICJ2YXJ1aW50MzIiLCBpbW0pOworICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBmdW5jQmluLmFwcGx5KCk7CiAgICAgICAgIH0KICAgICB9LAorCiAgICAgRGF0YTogKHNlY3Rp
b24sIGJpbikgPT4geyB0aHJvdyBuZXcgRXJyb3IoYE5vdCB5ZXQgaW1wbGVtZW50ZWRgKTsgfSwK
IH07CiAKQEAgLTkxLDcgKzEzMSw3IEBAIGV4cG9ydCBjb25zdCBCaW5hcnkgPSAocHJlYW1ibGUs
IHNlY3Rpb25zKSA9PiB7CiAgICAgICAgIHB1dCh3YXNtQmluLCBwLnR5cGUsIHByZWFtYmxlW3Au
bmFtZV0pOwogICAgIGZvciAoY29uc3Qgc2VjdGlvbiBvZiBzZWN0aW9ucykgewogICAgICAgICBw
dXQod2FzbUJpbiwgV0FTTS5zZWN0aW9uRW5jb2RpbmdUeXBlLCBzZWN0aW9uLmlkKTsKLSAgICAg
ICAgbGV0IHNlY3Rpb25CaW4gPSB3YXNtQmluLm5ld1BhdGNoYWJsZSgidmFydWludCIpOworICAg
ICAgICBsZXQgc2VjdGlvbkJpbiA9IHdhc21CaW4ubmV3UGF0Y2hhYmxlKCJ2YXJ1aW50MzIiKTsK
ICAgICAgICAgY29uc3QgZW1pdHRlciA9IGVtaXR0ZXJzW3NlY3Rpb24ubmFtZV07CiAgICAgICAg
IGlmIChlbWl0dGVyKQogICAgICAgICAgICAgZW1pdHRlcihzZWN0aW9uLCBzZWN0aW9uQmluKTsK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9Mb3dMZXZlbEJpbmFyeS5qcyBiL0pTVGVzdHMvd2Fz
bS9Mb3dMZXZlbEJpbmFyeS5qcwppbmRleCA3MjAwOTc2MDhjODY2NzUxYTQ1ODRmZDNhNTM0ZWZj
NTJjY2I3ZmE0Li5lNDNiMzQ2YmQyMDc5MjkwMmZmMWQ1NmFhNGJiZDc4NDkwYTA0MTUyIDEwMDY0
NAotLS0gYS9KU1Rlc3RzL3dhc20vTG93TGV2ZWxCaW5hcnkuanMKKysrIGIvSlNUZXN0cy93YXNt
L0xvd0xldmVsQmluYXJ5LmpzCkBAIC0yMywxNiArMjMsMTggQEAKICAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KIAoraW1wb3J0ICogYXMgV0FTTSBmcm9tICdXQVNNLmpzJzsKKwogY29uc3QgX2luaXRpYWxB
bGxvY2F0aW9uU2l6ZSA9IDEwMjQ7CiBjb25zdCBfZ3Jvd0FsbG9jYXRpb25TaXplID0gYWxsb2Nh
dGVkID0+IGFsbG9jYXRlZCAqIDI7CiAKLWV4cG9ydCBjb25zdCB2YXJ1aW50TWluID0gMDsKK2V4
cG9ydCBjb25zdCB2YXJ1aW50MzJNaW4gPSAwOwogZXhwb3J0IGNvbnN0IHZhcmludDdNaW4gPSAt
MGIxMDAwMDAwOwogZXhwb3J0IGNvbnN0IHZhcmludDdNYXggPSAwYjExMTExMTsKIGV4cG9ydCBj
b25zdCB2YXJ1aW50N01heCA9IDBiMTExMTExMTsKLWV4cG9ydCBjb25zdCB2YXJ1aW50TWF4ID0g
KCgoKDEgPDwgMzEpID4+PiAwKSAtIDEpICogMikgKyAxOwotZXhwb3J0IGNvbnN0IHZhcmludE1p
biA9IC0oKDEgPDwgMzEpID4+PiAwKTsKLWV4cG9ydCBjb25zdCB2YXJpbnRNYXggPSAoKDEgPDwg
MzEpIC0gMSkgPj4+IDA7CitleHBvcnQgY29uc3QgdmFydWludDMyTWF4ID0gKCgoKDEgPDwgMzEp
ID4+PiAwKSAtIDEpICogMikgKyAxOworZXhwb3J0IGNvbnN0IHZhcmludDMyTWluID0gLSgoMSA8
PCAzMSkgPj4+IDApOworZXhwb3J0IGNvbnN0IHZhcmludDMyTWF4ID0gKCgxIDw8IDMxKSAtIDEp
ID4+PiAwOwogZXhwb3J0IGNvbnN0IHZhckJpdHNNYXggPSA1OwogCiBjb25zdCBfZ2V0dGVyUmFu
Z2VDaGVjayA9IChsbGIsIGF0LCBzaXplKSA9PiB7CkBAIC03NSw2ICs3Nyw4IEBAIGV4cG9ydCBk
ZWZhdWx0IGNsYXNzIExvd0xldmVsQmluYXJ5IHsKIAogICAgIC8vIFV0aWxpdGllcy4KICAgICBn
ZXQoKSB7IHJldHVybiB0aGlzLl9idWY7IH0KKyAgICB0cmltKCkgeyB0aGlzLl9idWYgPSB0aGlz
Ll9idWYuc2xpY2UoMCwgdGhpcy5fdXNlZCk7IH0KKwogICAgIGhleGR1bXAoKSB7IHJldHVybiBf
aGV4ZHVtcCh0aGlzLl9idWYsIHRoaXMuX3VzZWQpOyB9CiAgICAgX21heWJlR3JvdyhieXRlcykg
ewogICAgICAgICBjb25zdCBhbGxvY2F0ZWQgPSB0aGlzLl9idWYubGVuZ3RoOwpAQCAtMTA5LDE4
ICsxMTMsMTggQEAgZXhwb3J0IGRlZmF1bHQgY2xhc3MgTG93TGV2ZWxCaW5hcnkgewogICAgICAg
ICB0aGlzLl9wdXNoOCh2ID4+PiAxNik7CiAgICAgICAgIHRoaXMuX3B1c2g4KHYgPj4+IDI0KTsK
ICAgICB9Ci0gICAgdmFydWludCh2KSB7Ci0gICAgICAgIGlmICh2IDwgdmFydWludE1pbiB8fCB2
YXJ1aW50TWF4IDwgdikKLSAgICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKGBJbnZhbGlk
IHZhcnVpbnQgJHt2fSByYW5nZSBpcyBbJHt2YXJ1aW50TWlufSwgJHt2YXJ1aW50TWF4fV1gKTsK
KyAgICB2YXJ1aW50MzIodikgeworICAgICAgICBpZiAodiA8IHZhcnVpbnQzMk1pbiB8fCB2YXJ1
aW50MzJNYXggPCB2KQorICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoYEludmFsaWQg
dmFydWludDMyICR7dn0gcmFuZ2UgaXMgWyR7dmFydWludDMyTWlufSwgJHt2YXJ1aW50MzJNYXh9
XWApOwogICAgICAgICB3aGlsZSAodiA+PSAweDgwKSB7CiAgICAgICAgICAgICB0aGlzLnVpbnQ4
KDB4ODAgfCAodiAmIDB4N0YpKTsKICAgICAgICAgICAgIHYgPj4+PSA3OwogICAgICAgICB9CiAg
ICAgICAgIHRoaXMudWludDgodik7CiAgICAgfQotICAgIHZhcmludCh2KSB7Ci0gICAgICAgIGlm
ICh2IDwgdmFyaW50TWluIHx8IHZhcmludE1heCA8IHYpCi0gICAgICAgICAgICB0aHJvdyBuZXcg
UmFuZ2VFcnJvcihgSW52YWxpZCB2YXJpbnQgJHt2fSByYW5nZSBpcyBbJHt2YXJpbnRNaW59LCAk
e3ZhcmludE1heH1dYCk7CisgICAgdmFyaW50MzIodikgeworICAgICAgICBpZiAodiA8IHZhcmlu
dDMyTWluIHx8IHZhcmludDMyTWF4IDwgdikKKyAgICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVy
cm9yKGBJbnZhbGlkIHZhcmludDMyICR7dn0gcmFuZ2UgaXMgWyR7dmFyaW50MzJNaW59LCAke3Zh
cmludDMyTWF4fV1gKTsKICAgICAgICAgZG8gewogICAgICAgICAgICAgY29uc3QgYiA9IHYgJiAw
eDdGOwogICAgICAgICAgICAgdiA+Pj0gNzsKQEAgLTEzNCwyMCArMTM4LDIzIEBAIGV4cG9ydCBk
ZWZhdWx0IGNsYXNzIExvd0xldmVsQmluYXJ5IHsKICAgICB2YXJ1aW50MSh2KSB7CiAgICAgICAg
IGlmICh2ICE9PSAwICYmIHYgIT09IDEpCiAgICAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJv
cihgSW52YWxpZCB2YXJ1aW50MSAke3Z9IHJhbmdlIGlzIFswLCAxXWApOwotICAgICAgICB0aGlz
LnZhcnVpbnQodik7CisgICAgICAgIHRoaXMudmFydWludDMyKHYpOwogICAgIH0KICAgICB2YXJp
bnQ3KHYpIHsKICAgICAgICAgaWYgKHYgPCB2YXJpbnQ3TWluIHx8IHZhcmludDdNYXggPCB2KQog
ICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoYEludmFsaWQgdmFyaW50NyAke3Z9IHJh
bmdlIGlzIFske3ZhcmludDdNaW59LCAke3ZhcmludDdNYXh9XWApOwotICAgICAgICB0aGlzLnZh
cmludCh2KTsKKyAgICAgICAgdGhpcy52YXJpbnQzMih2KTsKICAgICB9CiAgICAgdmFydWludDco
dikgewotICAgICAgICBpZiAodiA8IHZhcnVpbnRNaW4gfHwgdmFydWludDdNYXggPCB2KQotICAg
ICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoYEludmFsaWQgdmFydWludDcgJHt2fSByYW5n
ZSBpcyBbJHt2YXJ1aW50TWlufSwgJHt2YXJ1aW50N01heH1dYCk7Ci0gICAgICAgIHRoaXMudmFy
dWludCh2KTsKKyAgICAgICAgaWYgKHYgPCB2YXJ1aW50MzJNaW4gfHwgdmFydWludDdNYXggPCB2
KQorICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoYEludmFsaWQgdmFydWludDcgJHt2
fSByYW5nZSBpcyBbJHt2YXJ1aW50MzJNaW59LCAke3ZhcnVpbnQ3TWF4fV1gKTsKKyAgICAgICAg
dGhpcy52YXJ1aW50MzIodik7CisgICAgfQorICAgIGlubGluZV9zaWduYXR1cmVfdHlwZSh2KSB7
CisgICAgICAgIHRoaXMudmFyaW50NyhXQVNNLnZhbHVlVHlwZVZhbHVlW3ZdKTsKICAgICB9CiAg
ICAgc3RyaW5nKHN0cikgewotICAgICAgICBsZXQgcGF0Y2ggPSB0aGlzLm5ld1BhdGNoYWJsZSgi
dmFydWludCIpOworICAgICAgICBsZXQgcGF0Y2ggPSB0aGlzLm5ld1BhdGNoYWJsZSgidmFydWlu
dDMyIik7CiAgICAgICAgIGZvciAoY29uc3QgY2hhciBvZiBzdHIpCiAgICAgICAgICAgICBwYXRj
aC51aW50MTYoY2hhci5jaGFyQ29kZUF0KCkpOwogICAgICAgICBwYXRjaC5hcHBseSgpOwpAQCAt
MTY3LDcgKzE3NCw3IEBAIGV4cG9ydCBkZWZhdWx0IGNsYXNzIExvd0xldmVsQmluYXJ5IHsKICAg
ICAgICAgX2dldHRlclJhbmdlQ2hlY2sodGhpcywgYXQsIDQpOwogICAgICAgICByZXR1cm4gKHRo
aXMuX2J1ZlthdF0gfCAodGhpcy5fYnVmW2F0ICsgMV0gPDwgOCkgfCAodGhpcy5fYnVmW2F0ICsg
Ml0gPDwgMTYpIHwgKHRoaXMuX2J1ZlthdCArIDNdIDw8IDI0KSkgPj4+IDA7CiAgICAgfQotICAg
IGdldFZhcnVpbnQoYXQpIHsKKyAgICBnZXRWYXJ1aW50MzIoYXQpIHsKICAgICAgICAgbGV0IHYg
PSAwOwogICAgICAgICBsZXQgc2hpZnQgPSAwOwogICAgICAgICBsZXQgYnl0ZSA9IDA7CkBAIC0x
NzgsMTAgKzE4NSwxMCBAQCBleHBvcnQgZGVmYXVsdCBjbGFzcyBMb3dMZXZlbEJpbmFyeSB7CiAg
ICAgICAgICAgICBzaGlmdCArPSA3OwogICAgICAgICB9IHdoaWxlICgoYnl0ZSAmIDB4ODApICE9
PSAwKTsKICAgICAgICAgaWYgKHNoaWZ0IC0gNyA+IDMyKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcihg
U2hpZnRpbmcgdG9vIG11Y2ggYXQgJHthdH1gKTsKLSAgICAgICAgaWYgKChzaGlmdCA9PSAzNSkg
JiYgKChieXRlICYgMHhGMCkgIT0gMCkpIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCBub24t
c2lnbmlmaWNhbnQgdmFydWludCBiaXRzIGluIGxhc3QgYnl0ZSAweCR7Ynl0ZS50b1N0cmluZygx
Nil9YCk7CisgICAgICAgIGlmICgoc2hpZnQgPT0gMzUpICYmICgoYnl0ZSAmIDB4RjApICE9IDAp
KSB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgbm9uLXNpZ25pZmljYW50IHZhcnVpbnQzMiBi
aXRzIGluIGxhc3QgYnl0ZSAweCR7Ynl0ZS50b1N0cmluZygxNil9YCk7CiAgICAgICAgIHJldHVy
biB7IHZhbHVlOiB2LCBuZXh0OiBhdCB9OwogICAgIH0KLSAgICBnZXRWYXJpbnQoYXQpIHsKKyAg
ICBnZXRWYXJpbnQzMihhdCkgewogICAgICAgICBsZXQgdiA9IDA7CiAgICAgICAgIGxldCBzaGlm
dCA9IDA7CiAgICAgICAgIGxldCBieXRlID0gMDsKQEAgLTE5MSw3ICsxOTgsNyBAQCBleHBvcnQg
ZGVmYXVsdCBjbGFzcyBMb3dMZXZlbEJpbmFyeSB7CiAgICAgICAgICAgICBzaGlmdCArPSA3Owog
ICAgICAgICB9IHdoaWxlICgoYnl0ZSAmIDB4ODApICE9PSAwKTsKICAgICAgICAgaWYgKHNoaWZ0
IC0gNyA+IDMyKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcihgU2hpZnRpbmcgdG9vIG11Y2ggYXQgJHth
dH1gKTsKLSAgICAgICAgaWYgKChzaGlmdCA9PSAzNSkgJiYgKCgoYnl0ZSA8PCAyNikgPj4gMzAp
ICE9ICgoYnl0ZSA8PCAyNSkgPj4gMzEpKSkgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIG5v
bi1zaWduaWZpY2FudCB2YXJpbnQgYml0cyBpbiBsYXN0IGJ5dGUgMHgke2J5dGUudG9TdHJpbmco
MTYpfWApOworICAgICAgICBpZiAoKHNoaWZ0ID09IDM1KSAmJiAoKChieXRlIDw8IDI2KSA+PiAz
MCkgIT0gKChieXRlIDw8IDI1KSA+PiAzMSkpKSB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQg
bm9uLXNpZ25pZmljYW50IHZhcmludDMyIGJpdHMgaW4gbGFzdCBieXRlIDB4JHtieXRlLnRvU3Ry
aW5nKDE2KX1gKTsKICAgICAgICAgaWYgKChieXRlICYgMHg0MCkgPT09IDB4NDApIHsKICAgICAg
ICAgICAgIGNvbnN0IHNleHQgPSBzaGlmdCA8IDMyID8gMzIgLSBzaGlmdCA6IDA7CiAgICAgICAg
ICAgICB2ID0gKHYgPDwgc2V4dCkgPj4gc2V4dDsKQEAgLTE5OSwxMiArMjA2LDEyIEBAIGV4cG9y
dCBkZWZhdWx0IGNsYXNzIExvd0xldmVsQmluYXJ5IHsKICAgICAgICAgcmV0dXJuIHsgdmFsdWU6
IHYsIG5leHQ6IGF0IH07CiAgICAgfQogICAgIGdldFZhcnVpbnQ3KGF0KSB7Ci0gICAgICAgIGNv
bnN0IHJlcyA9IHRoaXMuZ2V0VmFydWludChhdCk7CisgICAgICAgIGNvbnN0IHJlcyA9IHRoaXMu
Z2V0VmFydWludDMyKGF0KTsKICAgICAgICAgaWYgKHJlcy52YWx1ZSA+IHZhcnVpbnQ3TWF4KSB0
aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIGEgdmFydWludDcsIGdvdCB2YWx1ZSAke3Jlcy52YWx1
ZX1gKTsKICAgICAgICAgcmV0dXJuIHJlczsKICAgICB9CiAgICAgZ2V0U3RyaW5nKGF0KSB7Ci0g
ICAgICAgIGNvbnN0IHNpemUgPSB0aGlzLmdldFZhcnVpbnQoYXQpOworICAgICAgICBjb25zdCBz
aXplID0gdGhpcy5nZXRWYXJ1aW50MzIoYXQpOwogICAgICAgICBsZXQgc3RyID0gIiI7CiAgICAg
ICAgIGZvciAobGV0IGkgPSBzaXplLm5leHQ7IGkgIT09IHNpemUubmV4dCArIHNpemUudmFsdWU7
IGkgKz0gMikKICAgICAgICAgICAgIHN0ciArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKHRoaXMuZ2V0
VWludDE2KGkpKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9qcy1hcGkvdGVzdF9vbGRfdGVz
dHMuanMgYi9KU1Rlc3RzL3dhc20vanMtYXBpL3Rlc3Rfb2xkX3Rlc3RzLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjUxZGYzNWU3ZTBlZjk2MGM1ZGMzYTBkYWU0ZDc2ZWYyODFkMWI1ZTgKLS0tIC9kZXYvbnVsbAor
KysgYi9KU1Rlc3RzL3dhc20vanMtYXBpL3Rlc3Rfb2xkX3Rlc3RzLmpzCkBAIC0wLDAgKzEsNjYy
IEBACitpbXBvcnQgQnVpbGRlciBmcm9tICcuLi9CdWlsZGVyLmpzJzsKKworZnVuY3Rpb24gcmV0
NSgpIHsKKyAgICBjb25zdCBiID0gbmV3IEJ1aWxkZXIoKTsKKyAgICBiLnNldENoZWNrZWQoZmFs
c2UpOworICAgIGxldCBjb2RlID0gYi5UeXBlKCkuRW5kKCkKKyAgICAgICAgLkZ1bmN0aW9uKCku
RW5kKCkKKyAgICAgICAgLkNvZGUoKTsKKworICAgIGNvZGUuRnVuY3Rpb24oeyBwYXJhbXM6IFtd
LCByZXQ6ICJpMzIiIH0pCisgICAgICAgICAgICAuSTMyQ29uc3QoNSkKKyAgICAgICAgICAgIC5S
ZXR1cm4oKQorICAgICAgICAgICAgLkVuZCgpCisgICAgICAgIC5FbmQoKTsKKyAgICBjb25zdCBi
aW4gPSBiLldlYkFzc2VtYmx5KCk7CisgICAgYmluLnRyaW0oKTsKKyAgICB0ZXN0V2FzbU1vZHVs
ZShiaW4uZ2V0KCksIDEsIFtbe3R5cGU6ICJpMzIiLCB2YWx1ZTogNSB9LCBbXV1dKTsKK30KK3J1
bihyZXQ1KTsKKworZnVuY3Rpb24gYnJUYWJsZVdpdGhMb29wKCkgeworICAgIGNvbnN0IGIgPSBu
ZXcgQnVpbGRlcigpOworICAgIGIuc2V0Q2hlY2tlZChmYWxzZSk7CisgICAgYi5UeXBlKCkuRW5k
KCkKKyAgICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgICAgLkNvZGUoKQorICAgICAgICAu
RnVuY3Rpb24oeyBwYXJhbXM6IFsiaTMyIl0sIHJldDogImkzMiIgfSwgWyJpMzIiXSkKKyAgICAg
ICAgLkxvb3AoInZvaWQiKQorICAgICAgICAuQmxvY2soInZvaWQiLCAoYikgPT4KKworICAgICAg
ICAgICAgYi5HZXRMb2NhbCgwKQorICAgICAgICAgICAgICAgLkdldExvY2FsKDEpCisgICAgICAg
ICAgICAgICAuSTMyQ29uc3QoMSkKKyAgICAgICAgICAgICAgIC5JMzJBZGQoKQorICAgICAgICAg
ICAgICAgLlNldExvY2FsKDEpCisgICAgICAgICAgICAgICAuR2V0TG9jYWwoMCkKKyAgICAgICAg
ICAgICAgIC5JMzJDb25zdCgxKQorICAgICAgICAgICAgICAgLkkzMlN1YigpCisgICAgICAgICAg
ICAgICAuU2V0TG9jYWwoMCkKKyAgICAgICAgICAgICAgIC5CclRhYmxlKDAsIDEpKQorCisgICAg
ICAgIC5FbmQoKQorICAgICAgICAuR2V0TG9jYWwoMSkKKyAgICAgICAgLkVuZCgpCisgICAgY29u
c3QgYmluID0gYi5XZWJBc3NlbWJseSgpCisgICAgYmluLnRyaW0oKTsKKyAgICB0ZXN0V2FzbU1v
ZHVsZShiaW4uZ2V0KCksIDEsIFtbe3R5cGU6ICJpMzIiLCB2YWx1ZTogMSB9LCBbeyB0eXBlOiAi
aTMyIiwgdmFsdWU6IDAgfV1dLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt7
dHlwZTogImkzMiIsIHZhbHVlOiAyIH0sIFt7IHR5cGU6ICJpMzIiLCB2YWx1ZTogMSB9XV0KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pOworfQorcnVuKGJyVGFibGVXaXRoTG9v
cCk7CisKK2Z1bmN0aW9uIGJyVGFibGVNYW55VmFsdWVzKCkgeworICAgIGNvbnN0IGIgPSBuZXcg
QnVpbGRlcigpOworICAgIGIuc2V0Q2hlY2tlZChmYWxzZSk7CisgICAgYi5UeXBlKCkuRW5kKCkK
KyAgICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgICAgLkNvZGUoKQorICAgICAgICAuRnVu
Y3Rpb24oeyBwYXJhbXM6IFsiaTMyIl0sIHJldDogImkzMiIgfSwgWyJpMzIiXSkKKyAgICAgICAg
LkJsb2NrKCJpMzIiLCAoYikgPT4KKyAgICAgICAgICAgICAgIGIuQmxvY2soImkzMiIsIChiKSA9
PgorICAgICAgICAgICAgICAgICAgIGIuQmxvY2soImkzMiIsIChiKSA9PgorICAgICAgICAgICAg
ICAgICAgICAgICBiLkJsb2NrKCJpMzIiLCAoYikgPT4KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGIuQmxvY2soImkzMiIsIChiKSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGIuSTMyQ29uc3QoMjAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuR2V0
TG9jYWwoMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLkJyVGFibGUoMywg
MiwgMSwgMCwgNCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICkuSTMyQ29uc3QoMTApCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5JMzJBZGQoKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAuUmV0dXJuKCkKKyAgICAgICAgICAgICAgICAgICAgICAgKS5JMzJDb25zdCgx
MSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAuSTMyQWRkKCkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAuUmV0dXJuKCkKKyAgICAgICAgICAgICAgICAgICApLkkzMkNvbnN0KDEyKQorICAg
ICAgICAgICAgICAgICAgICAgLkkzMkFkZCgpCisgICAgICAgICAgICAgICAgICAgICAuUmV0dXJu
KCkKKyAgICAgICAgICAgICAgICkuSTMyQ29uc3QoMTMpCisgICAgICAgICAgICAgICAgIC5JMzJB
ZGQoKQorICAgICAgICAgICAgICAgICAuUmV0dXJuKCkKKyAgICAgICAgKS5JMzJDb25zdCgxNCkK
KyAgICAgICAgICAuSTMyQWRkKCkKKyAgICAgICAgICAuUmV0dXJuKCkKKyAgICAgICAgICAuRW5k
KCkKKyAgICBjb25zdCBiaW4gPSBiLldlYkFzc2VtYmx5KCkKKyAgICBiaW4udHJpbSgpOworICAg
IHRlc3RXYXNtTW9kdWxlKGJpbi5nZXQoKSwgMSwgW1t7dHlwZTogImkzMiIsIHZhbHVlOiAyMTMg
fSwgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAwIH1dXSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBbe3R5cGU6ICJpMzIiLCB2YWx1ZTogMjEyIH0sIFt7IHR5cGU6ICJpMzIiLCB2
YWx1ZTogMSB9XV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3t0eXBlOiAi
aTMyIiwgdmFsdWU6IDIxMSB9LCBbeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDIgfV1dLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt7dHlwZTogImkzMiIsIHZhbHVlOiAyMTAgfSwg
W3sgdHlwZTogImkzMiIsIHZhbHVlOiAzIH1dXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBbe3R5cGU6ICJpMzIiLCB2YWx1ZTogMjE0IH0sIFt7IHR5cGU6ICJpMzIiLCB2YWx1
ZTogNCB9XV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3t0eXBlOiAiaTMy
IiwgdmFsdWU6IDIxNCB9LCBbeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDUgfV1dLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFt7dHlwZTogImkzMiIsIHZhbHVlOiAyMTQgfSwgW3sg
dHlwZTogImkzMiIsIHZhbHVlOiAtMSB9XV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgW3t0eXBlOiAiaTMyIiwgdmFsdWU6IDIxNCB9LCBbeyB0eXBlOiAiaTMyIiwgdmFsdWU6
IC0xMDAwIH1dXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSk7CisKK30KK3J1
bihiclRhYmxlTWFueVZhbHVlcykKKworZnVuY3Rpb24gYnJUYWJsZUFzSWYoKSB7CisgICAgY29u
c3QgYiA9IG5ldyBCdWlsZGVyKCk7CisgICAgYi5zZXRDaGVja2VkKGZhbHNlKTsKKyAgICBiLlR5
cGUoKS5FbmQoKQorICAgICAgICAuRnVuY3Rpb24oKS5FbmQoKQorICAgICAgICAuQ29kZSgpCisg
ICAgICAgIC5GdW5jdGlvbih7IHBhcmFtczogWyJpMzIiXSwgcmV0OiAiaTMyIiB9LCBbImkzMiJd
KQorICAgICAgICAuQmxvY2soInZvaWQiLCAoYikgPT4KKyAgICAgICAgICAgICAgIGIuQmxvY2so
InZvaWQiLCAoYikgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgYi5HZXRMb2NhbCgwKQorICAg
ICAgICAgICAgICAgICAgICAgICAuQnJUYWJsZSgxLCAwKQorICAgICAgICAgICAgICAgICAgICAg
ICAuSTMyQ29uc3QoMjEpCisgICAgICAgICAgICAgICAgICAgICAgIC5SZXR1cm4oKQorICAgICAg
ICAgICAgICAgKS5JMzJDb25zdCgyMCkKKyAgICAgICAgICAgICAgICAuUmV0dXJuKCkKKyAgICAg
ICApLkkzMkNvbnN0KDIyKQorICAgICAgICAuRW5kKCkKKworICAgIGNvbnN0IGJpbiA9IGIuV2Vi
QXNzZW1ibHkoKQorICAgIGJpbi50cmltKCk7CisgICAgdGVzdFdhc21Nb2R1bGUoYmluLmdldCgp
LCAxLCBbW3t0eXBlOiAiaTMyIiwgdmFsdWU6IDIyIH0sIFt7IHR5cGU6ICJpMzIiLCB2YWx1ZTog
MCB9XV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3t0eXBlOiAiaTMyIiwg
dmFsdWU6IDIwIH0sIFt7IHR5cGU6ICJpMzIiLCB2YWx1ZTogMSB9XV0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgW3t0eXBlOiAiaTMyIiwgdmFsdWU6IDIwIH0sIFt7IHR5cGU6
ICJpMzIiLCB2YWx1ZTogMTEgfV1dLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFt7dHlwZTogImkzMiIsIHZhbHVlOiAyMCB9LCBbeyB0eXBlOiAiaTMyIiwgdmFsdWU6IC0xMDAg
fV1dCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKTsKK30KK3J1bihiclRhYmxl
QXNJZik7CisKK2Z1bmN0aW9uIGlmVGhlbkZhbGx0aHJvdWdoKCkgeworICAgIGNvbnN0IGIgPSBu
ZXcgQnVpbGRlcigpOworICAgIGIuc2V0Q2hlY2tlZChmYWxzZSk7CisgICAgYi5UeXBlKCkuRW5k
KCkKKyAgICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgICAgLkNvZGUoKQorICAgICAgICAu
RnVuY3Rpb24oeyBwYXJhbXM6IFsiaTMyIl0sIHJldDogImkzMiIgfSwgW10pCisgICAgICAgIC5C
bG9jaygiaTMyIiwgKGIpID0+CisgICAgICAgICAgICAgICBiLkdldExvY2FsKDApCisgICAgICAg
ICAgICAgICAgLkkzMkNvbnN0KDApCisgICAgICAgICAgICAgICAgLkkzMkVxKCkKKyAgICAgICAg
ICAgICAgICAuSWYoImkzMiIpCisgICAgICAgICAgICAgICAgLkkzMkNvbnN0KDEpCisgICAgICAg
ICAgICAgICAuRWxzZSgpCisgICAgICAgICAgICAgICAgLkkzMkNvbnN0KDIpCisgICAgICAgICAg
ICAgICAgLkJyKDEpCisgICAgICAgICAgICAgICAgLkVuZCgpCisgICAgICAgICkuRW5kKCkKKwor
ICAgIGNvbnN0IGJpbiA9IGIuV2ViQXNzZW1ibHkoKQorICAgIGJpbi50cmltKCk7CisgICAgdGVz
dFdhc21Nb2R1bGUoYmluLmdldCgpLCAxLCBbW3t0eXBlOiAiaTMyIiwgdmFsdWU6IDEgfSwgW3sg
dHlwZTogImkzMiIsIHZhbHVlOiAwIH1dXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBbe3R5cGU6ICJpMzIiLCB2YWx1ZTogMiB9LCBbeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDEg
fV1dCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKTsKK30KK3J1bihpZlRoZW5G
YWxsdGhyb3VnaCk7CisKK2Z1bmN0aW9uIGlmVGhlbkVsc2VGYWxsdGhyb3VnaCgpIHsKKyAgICBj
b25zdCBiID0gbmV3IEJ1aWxkZXIoKTsKKyAgICBiLnNldENoZWNrZWQoZmFsc2UpOworICAgIGIu
VHlwZSgpLkVuZCgpCisgICAgICAgIC5GdW5jdGlvbigpLkVuZCgpCisgICAgICAgIC5Db2RlKCkK
KyAgICAgICAgLkZ1bmN0aW9uKHsgcGFyYW1zOiBbImkzMiJdLCByZXQ6ICJpMzIiIH0sIFtdKQor
ICAgICAgICAuQmxvY2soImkzMiIsIChiKSA9PgorICAgICAgICAgICAgICAgYi5HZXRMb2NhbCgw
KQorICAgICAgICAgICAgICAgIC5JMzJDb25zdCgwKQorICAgICAgICAgICAgICAgIC5JMzJFcSgp
CisgICAgICAgICAgICAgICAgLklmKCJpMzIiKQorICAgICAgICAgICAgICAgIC5JMzJDb25zdCgx
KQorICAgICAgICAgICAgICAgLkVsc2UoKQorICAgICAgICAgICAgICAgIC5JMzJDb25zdCgyKQor
ICAgICAgICAgICAgICAgIC5CcigxKQorICAgICAgICAgICAgICAgIC5FbmQoKQorICAgICAgICAp
LkVuZCgpCisKKyAgICBjb25zdCBiaW4gPSBiLldlYkFzc2VtYmx5KCkKKyAgICBiaW4udHJpbSgp
OworICAgIHRlc3RXYXNtTW9kdWxlKGJpbi5nZXQoKSwgMSwgW1t7dHlwZTogImkzMiIsIHZhbHVl
OiAxIH0sIFt7IHR5cGU6ICJpMzIiLCB2YWx1ZTogMCB9XV0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgW3t0eXBlOiAiaTMyIiwgdmFsdWU6IDIgfSwgW3sgdHlwZTogImkzMiIs
IHZhbHVlOiAxIH1dXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSk7Cit9City
dW4oaWZUaGVuRWxzZUZhbGx0aHJvdWdoKTsKKworZnVuY3Rpb24gZHVtYkxlc3NUaGFuRmFsbHRo
cm91Z2goKSB7CisgICAgY29uc3QgYiA9IG5ldyBCdWlsZGVyKCk7CisgICAgYi5zZXRDaGVja2Vk
KGZhbHNlKTsKKyAgICBiLlR5cGUoKS5FbmQoKQorICAgICAgICAuRnVuY3Rpb24oKS5FbmQoKQor
ICAgICAgICAuQ29kZSgpCisgICAgICAgIC5GdW5jdGlvbih7IHBhcmFtczogWyJpMzIiLCAiaTMy
Il0sIHJldDogImkzMiIgfSwgW10pCisgICAgICAgIC5Mb29wKCJpMzIiLCBiID0+CisgICAgICAg
ICAgICAgYi5HZXRMb2NhbCgwKQorICAgICAgICAgICAgICAuR2V0TG9jYWwoMSkKKyAgICAgICAg
ICAgICAgLkkzMkVxKCkKKyAgICAgICAgICAgICAgLklmKCJpMzIiLCBiID0+CisgICAgICAgICAg
ICAgICAgICBiLkkzMkNvbnN0KDApCisgICAgICAgICAgICAgICAgICAuUmV0dXJuKCkKKyAgICAg
ICAgICAgICAgICAgIC5FbHNlKCkKKyAgICAgICAgICAgICAgICAgIC5HZXRMb2NhbCgwKQorICAg
ICAgICAgICAgICAgICAgLkdldExvY2FsKDApCisgICAgICAgICAgICAgICAgICAuSTMyQ29uc3Qo
MSkKKyAgICAgICAgICAgICAgICAgIC5JMzJTdWIoKQorICAgICAgICAgICAgICAgICAgLlNldExv
Y2FsKDApCisgICAgICAgICAgICAgICAgICAuSTMyQ29uc3QoMCkKKyAgICAgICAgICAgICAgICAg
IC5JMzJOZSgpCisgICAgICAgICAgICAgICAgICAuQnJJZigxKQorICAgICAgICAgICAgICAgICAg
LkkzMkNvbnN0KDEpCisgICAgICAgICAgICAgKQorICAgICAgICApLkVuZCgpCisKKyAgICBjb25z
dCBiaW4gPSBiLldlYkFzc2VtYmx5KCkKKyAgICBiaW4udHJpbSgpOworICAgIHRlc3RXYXNtTW9k
dWxlKGJpbi5nZXQoKSwgMSwgW1t7dHlwZTogImkzMiIsIHZhbHVlOiAxIH0sIFt7IHR5cGU6ICJp
MzIiLCB2YWx1ZTogMCB9LCB7IHR5cGU6ICJpMzIiLCB2YWx1ZTogMSB9XV0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgW3t0eXBlOiAiaTMyIiwgdmFsdWU6IDAgfSwgW3sgdHlw
ZTogImkzMiIsIHZhbHVlOiAxIH0sIHsgdHlwZTogImkzMiIsIHZhbHVlOiAwIH1dXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbe3R5cGU6ICJpMzIiLCB2YWx1ZTogMCB9LCBb
eyB0eXBlOiAiaTMyIiwgdmFsdWU6IDIgfSwgeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDEgfV1dLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt7dHlwZTogImkzMiIsIHZhbHVlOiAx
IH0sIFt7IHR5cGU6ICJpMzIiLCB2YWx1ZTogMSB9LCB7IHR5cGU6ICJpMzIiLCB2YWx1ZTogMiB9
XV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3t0eXBlOiAiaTMyIiwgdmFs
dWU6IDAgfSwgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAyIH0sIHsgdHlwZTogImkzMiIsIHZhbHVl
OiAyIH1dXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbe3R5cGU6ICJpMzIi
LCB2YWx1ZTogMCB9LCBbeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDEgfSwgeyB0eXBlOiAiaTMyIiwg
dmFsdWU6IDEgfV1dLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt7dHlwZTog
ImkzMiIsIHZhbHVlOiAxIH0sIFt7IHR5cGU6ICJpMzIiLCB2YWx1ZTogMiB9LCB7IHR5cGU6ICJp
MzIiLCB2YWx1ZTogNiB9XV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3t0
eXBlOiAiaTMyIiwgdmFsdWU6IDAgfSwgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAxMDAgfSwgeyB0
eXBlOiAiaTMyIiwgdmFsdWU6IDYgfV1dCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBdKTsKKworfQorcnVuKGR1bWJMZXNzVGhhbkZhbGx0aHJvdWdoKQorCitmdW5jdGlvbiBmbG9h
dFN1YigpIHsKKyAgICBjb25zdCBiID0gbmV3IEJ1aWxkZXIoKTsKKyAgICBiLnNldENoZWNrZWQo
ZmFsc2UpOworICAgIGIuVHlwZSgpLkVuZCgpCisgICAgICAgIC5GdW5jdGlvbigpLkVuZCgpCisg
ICAgICAgIC5Db2RlKCkKKyAgICAgICAgLkZ1bmN0aW9uKHsgcGFyYW1zOiBbImYzMiIsICJmMzIi
XSwgcmV0OiAiZjMyIiB9LCBbXSkKKyAgICAgICAgLkdldExvY2FsKDApCisgICAgICAgIC5HZXRM
b2NhbCgxKQorICAgICAgICAuRjMyU3ViKCkKKyAgICAgICAgLlJldHVybigpCisgICAgICAgIC5F
bmQoKQorCisgICAgICAgIC5GdW5jdGlvbih7IHBhcmFtczogWyJmMzIiLCAiZjMyIl0sIHJldDog
ImYzMiIgfSwgW10pCisgICAgICAgIC5HZXRMb2NhbCgwKQorICAgICAgICAuR2V0TG9jYWwoMSkK
KyAgICAgICAgLkNhbGwoMCkKKyAgICAgICAgLlJldHVybigpCisgICAgICAgIC5FbmQoKQorCisg
ICAgY29uc3QgYmluID0gYi5XZWJBc3NlbWJseSgpCisgICAgYmluLnRyaW0oKTsKKyAgICB0ZXN0
V2FzbU1vZHVsZShiaW4uZ2V0KCksIDIsCisgICAgICAgICAgICAgICAgICAgW1t7dHlwZTogImYz
MiIsIHZhbHVlOiAtMS41IH0sIFt7IHR5cGU6ICJmMzIiLCB2YWx1ZTogMCB9LCB7IHR5cGU6ICJm
MzIiLCB2YWx1ZTogMS41IH1dXSwKKyAgICAgICAgICAgICAgICAgICAgW3t0eXBlOiAiZjMyIiwg
dmFsdWU6IDg3LjYyMzQgfSwgW3sgdHlwZTogImYzMiIsIHZhbHVlOiAxMDAuMTIzNCB9LCB7IHR5
cGU6ICJmMzIiLCB2YWx1ZTogMTIuNSB9XV0KKyAgICAgICAgICAgICAgICAgICBdLAorICAgICAg
ICAgICAgICAgICAgIFtbe3R5cGU6ICJmMzIiLCB2YWx1ZTogLTEuNSB9LCBbeyB0eXBlOiAiZjMy
IiwgdmFsdWU6IDAgfSwgeyB0eXBlOiAiZjMyIiwgdmFsdWU6IDEuNSB9XV0sCisgICAgICAgICAg
ICAgICAgICAgIFt7dHlwZTogImYzMiIsIHZhbHVlOiA4Ny42MjM0IH0sIFt7IHR5cGU6ICJmMzIi
LCB2YWx1ZTogMTAwLjEyMzQgfSwgeyB0eXBlOiAiZjMyIiwgdmFsdWU6IDEyLjUgfV1dCisgICAg
ICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgKTsKKworfQorcnVuKGZsb2F0U3Vi
KQorCitmdW5jdGlvbiBhZGQxMigpIHsKKyAgICBjb25zdCBiID0gbmV3IEJ1aWxkZXIoKTsKKyAg
ICBiLnNldENoZWNrZWQoZmFsc2UpOworICAgIGIuVHlwZSgpLkVuZCgpCisgICAgICAgIC5GdW5j
dGlvbigpLkVuZCgpCisgICAgICAgIC5Db2RlKCkKKyAgICAgICAgLkZ1bmN0aW9uKHsgcGFyYW1z
OiBbImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIi
LCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIl0sIHJldDogImkzMiIgfSwgW10pCisgICAgICAg
IC5HZXRMb2NhbCgwKQorICAgICAgICAuR2V0TG9jYWwoMSkKKyAgICAgICAgLkkzMkFkZCgpCisg
ICAgICAgIC5HZXRMb2NhbCgyKQorICAgICAgICAuSTMyQWRkKCkKKyAgICAgICAgLkdldExvY2Fs
KDMpCisgICAgICAgIC5JMzJBZGQoKQorICAgICAgICAuR2V0TG9jYWwoNCkKKyAgICAgICAgLkkz
MkFkZCgpCisgICAgICAgIC5HZXRMb2NhbCg1KQorICAgICAgICAuSTMyQWRkKCkKKyAgICAgICAg
LkdldExvY2FsKDYpCisgICAgICAgIC5JMzJBZGQoKQorICAgICAgICAuR2V0TG9jYWwoNykKKyAg
ICAgICAgLkkzMkFkZCgpCisgICAgICAgIC5HZXRMb2NhbCg4KQorICAgICAgICAuSTMyQWRkKCkK
KyAgICAgICAgLkdldExvY2FsKDkpCisgICAgICAgIC5JMzJBZGQoKQorICAgICAgICAuR2V0TG9j
YWwoMTApCisgICAgICAgIC5JMzJBZGQoKQorICAgICAgICAuR2V0TG9jYWwoMTEpCisgICAgICAg
IC5JMzJBZGQoKQorICAgICAgICAuUmV0dXJuKCkKKyAgICAgICAgLkVuZCgpCisKKyAgICAgICAg
LkZ1bmN0aW9uKHsgcGFyYW1zOiBbImkzMiJdLCByZXQ6ICJpMzIiIH0pCisgICAgICAgIC5HZXRM
b2NhbCgwKQorICAgICAgICAuR2V0TG9jYWwoMCkKKyAgICAgICAgLkdldExvY2FsKDApCisgICAg
ICAgIC5HZXRMb2NhbCgwKQorICAgICAgICAuR2V0TG9jYWwoMCkKKyAgICAgICAgLkdldExvY2Fs
KDApCisgICAgICAgIC5HZXRMb2NhbCgwKQorICAgICAgICAuR2V0TG9jYWwoMCkKKyAgICAgICAg
LkdldExvY2FsKDApCisgICAgICAgIC5HZXRMb2NhbCgwKQorICAgICAgICAuR2V0TG9jYWwoMCkK
KyAgICAgICAgLkdldExvY2FsKDApCisgICAgICAgIC5DYWxsKDApCisgICAgICAgIC5FbmQoKQor
CisgICAgY29uc3QgYmluID0gYi5XZWJBc3NlbWJseSgpCisgICAgYmluLnRyaW0oKTsKKyAgICB0
ZXN0V2FzbU1vZHVsZShiaW4uZ2V0KCksIDIsCisgICAgICAgICAgICAgICAgICAgW1t7IHR5cGU6
ICJpMzIiLCB2YWx1ZTogNzggfSwgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAxIH0sIHsgdHlwZTog
ImkzMiIsIHZhbHVlOiAyIH0sIHsgdHlwZTogImkzMiIsIHZhbHVlOiAzIH0sIHsgdHlwZTogImkz
MiIsIHZhbHVlOiA0IH0sIHsgdHlwZTogImkzMiIsIHZhbHVlOiA1IH0sIHsgdHlwZTogImkzMiIs
IHZhbHVlOiA2IH0sIHsgdHlwZTogImkzMiIsIHZhbHVlOiA3IH0sIHsgdHlwZTogImkzMiIsIHZh
bHVlOiA4IH0sIHsgdHlwZTogImkzMiIsIHZhbHVlOiA5IH0sIHsgdHlwZTogImkzMiIsIHZhbHVl
OiAxMCB9LCB7IHR5cGU6ICJpMzIiLCB2YWx1ZTogMTEgfSwgeyB0eXBlOiAiaTMyIiwgdmFsdWU6
IDEyIH1dXSwKKyAgICAgICAgICAgICAgICAgICAgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAxNjYg
fSwgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAxIH0sIHsgdHlwZTogImkzMiIsIHZhbHVlOiAyIH0s
IHsgdHlwZTogImkzMiIsIHZhbHVlOiAzIH0sIHsgdHlwZTogImkzMiIsIHZhbHVlOiA0IH0sIHsg
dHlwZTogImkzMiIsIHZhbHVlOiA1IH0sIHsgdHlwZTogImkzMiIsIHZhbHVlOiA2IH0sIHsgdHlw
ZTogImkzMiIsIHZhbHVlOiA3IH0sIHsgdHlwZTogImkzMiIsIHZhbHVlOiA4IH0sIHsgdHlwZTog
ImkzMiIsIHZhbHVlOiA5IH0sIHsgdHlwZTogImkzMiIsIHZhbHVlOiAxMCB9LCB7IHR5cGU6ICJp
MzIiLCB2YWx1ZTogMTEgfSwgeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDEwMCB9XV0KKyAgICAgICAg
ICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgIFtbeyB0eXBlOiAiaTMyIiwgdmFsdWU6
IDEyIH0sIFt7IHR5cGU6ICJpMzIiLCB2YWx1ZTogMSB9XV0sCisgICAgICAgICAgICAgICAgICAg
IFt7IHR5cGU6ICJpMzIiLCB2YWx1ZTogMTIwMCB9LCBbeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDEw
MCB9XV0sCisgICAgICAgICAgICAgICAgICAgIFt7IHR5cGU6ICJpMzIiLCB2YWx1ZTogMCB9LCBb
eyB0eXBlOiAiaTMyIiwgdmFsdWU6IDAgfV1dLAorICAgICAgICAgICAgICAgICAgIF0KKyAgICAg
ICAgICAgICAgICAgICk7CisKK30KK3J1bihhZGQxMikKKworCisKK2Z1bmN0aW9uIGZhY3Rvcmlh
bCgpIHsKKyAgICBjb25zdCBiID0gbmV3IEJ1aWxkZXIoKTsKKyAgICBiLnNldENoZWNrZWQoZmFs
c2UpOworICAgIGIuVHlwZSgpLkVuZCgpCisgICAgICAgIC5GdW5jdGlvbigpLkVuZCgpCisgICAg
ICAgIC5Db2RlKCkKKyAgICAgICAgLkZ1bmN0aW9uKHsgcGFyYW1zOiBbImkzMiJdLCByZXQ6ICJp
MzIiIH0sIFtdKQorICAgICAgICAuR2V0TG9jYWwoMCkKKyAgICAgICAgLkkzMkNvbnN0KDApCisg
ICAgICAgIC5JMzJFcSgpCisgICAgICAgIC5JZigidm9pZCIsIGIgPT4KKyAgICAgICAgICAgIGIu
STMyQ29uc3QoMSkKKyAgICAgICAgICAgIC5SZXR1cm4oKQorICAgICAgICAgICApCisgICAgICAg
IC5HZXRMb2NhbCgwKQorICAgICAgICAuR2V0TG9jYWwoMCkKKyAgICAgICAgLkkzMkNvbnN0KDEp
CisgICAgICAgIC5JMzJTdWIoKQorICAgICAgICAuQ2FsbCgwKQorICAgICAgICAuSTMyTXVsKCkK
KyAgICAgICAgLlJldHVybigpCisgICAgICAgIC5FbmQoKQorCisgICAgY29uc3QgYmluID0gYi5X
ZWJBc3NlbWJseSgpCisgICAgYmluLnRyaW0oKTsKKyAgICB0ZXN0V2FzbU1vZHVsZShiaW4uZ2V0
KCksIDEsIFtbe3R5cGU6ICJpMzIiLCB2YWx1ZTogMSB9LCBbeyB0eXBlOiAiaTMyIiwgdmFsdWU6
IDAgfV1dLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt7dHlwZTogImkzMiIs
IHZhbHVlOiAxIH0sIFt7IHR5cGU6ICJpMzIiLCB2YWx1ZTogMSB9XV0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgW3t0eXBlOiAiaTMyIiwgdmFsdWU6IDIgfSwgW3sgdHlwZTog
ImkzMiIsIHZhbHVlOiAyIH1dXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBb
e3R5cGU6ICJpMzIiLCB2YWx1ZTogMjQgfSwgW3sgdHlwZTogImkzMiIsIHZhbHVlOiA0IH1dXSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pOworCit9CitydW4oZmFjdG9yaWFs
KTsKKworCitmdW5jdGlvbiBpMzJsb2FkKCkgeworICAgIGNvbnN0IGIgPSBuZXcgQnVpbGRlcigp
OworICAgIGIuc2V0Q2hlY2tlZChmYWxzZSk7CisgICAgYi5UeXBlKCkuRW5kKCkKKyAgICAgICAg
LkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgICAgLk1lbW9yeSgpLkluaXRpYWxNYXhQYWdlcygxLCAx
KS5FbmQoKQorICAgICAgICAuQ29kZSgpCisgICAgICAgIC5GdW5jdGlvbih7IHBhcmFtczogWyJp
MzIiLCAiaTMyIl0sIHJldDogImkzMiIgfSwgW10pCisgICAgICAgIC5HZXRMb2NhbCgxKQorICAg
ICAgICAuR2V0TG9jYWwoMCkKKyAgICAgICAgLkkzMlN0b3JlKDIsIDApCisgICAgICAgIC5HZXRM
b2NhbCgxKQorICAgICAgICAuSTMyTG9hZCgyLCAwKQorICAgICAgICAuUmV0dXJuKCkKKyAgICAg
ICAgLkVuZCgpCisKKyAgICBjb25zdCBiaW4gPSBiLldlYkFzc2VtYmx5KCkKKyAgICBiaW4udHJp
bSgpOworICAgIHRlc3RXYXNtTW9kdWxlKGJpbi5nZXQoKSwgMSwgW1t7dHlwZTogImkzMiIsIHZh
bHVlOiAwIH0sIFt7IHR5cGU6ICJpMzIiLCB2YWx1ZTogMCB9LCB7IHR5cGU6ICJpMzIiLCB2YWx1
ZTogMTAgfV1dLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt7dHlwZTogImkz
MiIsIHZhbHVlOiAxMDAgfSwgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAxMDAgfSwgeyB0eXBlOiAi
aTMyIiwgdmFsdWU6IDExMiB9XV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
W3t0eXBlOiAiaTMyIiwgdmFsdWU6IDEwMDAwMDAgfSwgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAx
MDAwMDAwIH0sIHsgdHlwZTogImkzMiIsIHZhbHVlOiAxMCB9XV0KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF0pOworfQorcnVuKGkzMmxvYWQpCisKK2Z1bmN0aW9uIGkzMmxvYWQ4
cygpIHsKKyAgICBjb25zdCBiID0gbmV3IEJ1aWxkZXIoKTsKKyAgICBiLnNldENoZWNrZWQoZmFs
c2UpOworICAgIGIuVHlwZSgpLkVuZCgpCisgICAgICAgIC5GdW5jdGlvbigpLkVuZCgpCisgICAg
ICAgIC5NZW1vcnkoKS5Jbml0aWFsTWF4UGFnZXMoMSwgMSkuRW5kKCkKKyAgICAgICAgLkNvZGUo
KQorICAgICAgICAuRnVuY3Rpb24oeyBwYXJhbXM6IFsiaTMyIiwgImkzMiJdLCByZXQ6ICJpMzIi
IH0sIFtdKQorICAgICAgICAuR2V0TG9jYWwoMSkKKyAgICAgICAgLkdldExvY2FsKDApCisgICAg
ICAgIC5JMzJTdG9yZSgyLCAwKQorICAgICAgICAuR2V0TG9jYWwoMSkKKyAgICAgICAgLkkzMkxv
YWQ4UygyLCAwKQorICAgICAgICAuUmV0dXJuKCkKKyAgICAgICAgLkVuZCgpCisKKyAgICBjb25z
dCBiaW4gPSBiLldlYkFzc2VtYmx5KCkKKyAgICBiaW4udHJpbSgpOworICAgIHRlc3RXYXNtTW9k
dWxlKGJpbi5nZXQoKSwgMSwgW1t7dHlwZTogImkzMiIsIHZhbHVlOiAwIH0sIFt7IHR5cGU6ICJp
MzIiLCB2YWx1ZTogMCB9LCB7IHR5cGU6ICJpMzIiLCB2YWx1ZTogMTAgfV1dLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFt7dHlwZTogImkzMiIsIHZhbHVlOiAxMDAgfSwgW3sg
dHlwZTogImkzMiIsIHZhbHVlOiAxMDAgfSwgeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDExMiB9XV0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3t0eXBlOiAiaTMyIiwgdmFsdWU6
IDB4NDAgfSwgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAxMDAwMDAwIH0sIHsgdHlwZTogImkzMiIs
IHZhbHVlOiAxMCB9XV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pOworfQor
cnVuKGkzMmxvYWQ4cykKKworZnVuY3Rpb24gZHVtYkVxSWZUaGVuRWxzZSgpIHsKKyAgICBjb25z
dCBiID0gbmV3IEJ1aWxkZXIoKTsKKyAgICBiLnNldENoZWNrZWQoZmFsc2UpOworICAgIGIuVHlw
ZSgpLkVuZCgpCisgICAgICAgIC5GdW5jdGlvbigpLkVuZCgpCisgICAgICAgIC5NZW1vcnkoKS5J
bml0aWFsTWF4UGFnZXMoMSwgMSkuRW5kKCkKKyAgICAgICAgLkNvZGUoKQorICAgICAgICAuRnVu
Y3Rpb24oeyBwYXJhbXM6IFsiaTMyIiwgImkzMiJdLCByZXQ6ICJpMzIiIH0sIFtdKQorICAgICAg
ICAuR2V0TG9jYWwoMCkKKyAgICAgICAgLkdldExvY2FsKDEpCisgICAgICAgIC5JMzJFcSgpCisg
ICAgICAgIC5JZigidm9pZCIsIGIgPT4KKyAgICAgICAgICAgIGIuQnIoMCkKKyAgICAgICAgICAg
IC5FbHNlKCkKKyAgICAgICAgICAgIC5JMzJDb25zdCgxKQorICAgICAgICAgICAgLlJldHVybigp
CisgICAgICAgICAgICkKKyAgICAgICAgLkkzMkNvbnN0KDApCisgICAgICAgIC5SZXR1cm4oKQor
ICAgICAgICAuRW5kKCkKKworICAgIGNvbnN0IGJpbiA9IGIuV2ViQXNzZW1ibHkoKQorICAgIGJp
bi50cmltKCk7CisgICAgdGVzdFdhc21Nb2R1bGUoYmluLmdldCgpLCAxLCBbW3t0eXBlOiAiaTMy
IiwgdmFsdWU6IDEgfSwgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAwIH0sIHsgdHlwZTogImkzMiIs
IHZhbHVlOiAxIH1dXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbe3R5cGU6
ICJpMzIiLCB2YWx1ZTogMSB9LCBbeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDEgfSwgeyB0eXBlOiAi
aTMyIiwgdmFsdWU6IDAgfV1dLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt7
dHlwZTogImkzMiIsIHZhbHVlOiAxIH0sIFt7IHR5cGU6ICJpMzIiLCB2YWx1ZTogMiB9LCB7IHR5
cGU6ICJpMzIiLCB2YWx1ZTogMSB9XV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgW3t0eXBlOiAiaTMyIiwgdmFsdWU6IDEgfSwgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAxIH0s
IHsgdHlwZTogImkzMiIsIHZhbHVlOiAyIH1dXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBbe3R5cGU6ICJpMzIiLCB2YWx1ZTogMCB9LCBbeyB0eXBlOiAiaTMyIiwgdmFsdWU6
IDIgfSwgeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDIgfV1dLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFt7dHlwZTogImkzMiIsIHZhbHVlOiAwIH0sIFt7IHR5cGU6ICJpMzIiLCB2
YWx1ZTogMSB9LCB7IHR5cGU6ICJpMzIiLCB2YWx1ZTogMSB9XV0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgW3t0eXBlOiAiaTMyIiwgdmFsdWU6IDAgfSwgW3sgdHlwZTogImkz
MiIsIHZhbHVlOiAwIH0sIHsgdHlwZTogImkzMiIsIHZhbHVlOiAwIH1dXSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBbe3R5cGU6ICJpMzIiLCB2YWx1ZTogMSB9LCBbeyB0eXBl
OiAiaTMyIiwgdmFsdWU6IDIgfSwgeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDYgfV1dLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt7dHlwZTogImkzMiIsIHZhbHVlOiAxIH0sIFt7
IHR5cGU6ICJpMzIiLCB2YWx1ZTogMTAwIH0sIHsgdHlwZTogImkzMiIsIHZhbHVlOiA2IH1dXQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSk7Cit9CitydW4oZHVtYkVxSWZUaGVu
RWxzZSkKKworZnVuY3Rpb24gZHVtYkVxSWZUaGVuRWxzZSgpIHsKKyAgICBjb25zdCBiID0gbmV3
IEJ1aWxkZXIoKTsKKyAgICBiLnNldENoZWNrZWQoZmFsc2UpOworICAgIGIuVHlwZSgpLkVuZCgp
CisgICAgICAgIC5GdW5jdGlvbigpLkVuZCgpCisgICAgICAgIC5NZW1vcnkoKS5Jbml0aWFsTWF4
UGFnZXMoMSwgMSkuRW5kKCkKKyAgICAgICAgLkNvZGUoKQorICAgICAgICAuRnVuY3Rpb24oeyBw
YXJhbXM6IFsiaTMyIiwgImkzMiJdLCByZXQ6ICJpMzIiIH0sIFtdKQorICAgICAgICAuR2V0TG9j
YWwoMCkKKyAgICAgICAgLkdldExvY2FsKDEpCisgICAgICAgIC5JMzJFcSgpCisgICAgICAgIC5J
Zigidm9pZCIsIGIgPT4KKyAgICAgICAgICAgIGIuQnIoMCkKKyAgICAgICAgICAgIC5FbHNlKCkK
KyAgICAgICAgICAgIC5JMzJDb25zdCgxKQorICAgICAgICAgICAgLlJldHVybigpCisgICAgICAg
ICAgICkKKyAgICAgICAgLkkzMkNvbnN0KDApCisgICAgICAgIC5SZXR1cm4oKQorICAgICAgICAu
RW5kKCkKKworICAgIGNvbnN0IGJpbiA9IGIuV2ViQXNzZW1ibHkoKQorICAgIGJpbi50cmltKCk7
CisgICAgdGVzdFdhc21Nb2R1bGUoYmluLmdldCgpLCAxLCBbW3t0eXBlOiAiaTMyIiwgdmFsdWU6
IDEgfSwgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAwIH0sIHsgdHlwZTogImkzMiIsIHZhbHVlOiAx
IH1dXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbe3R5cGU6ICJpMzIiLCB2
YWx1ZTogMSB9LCBbeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDEgfSwgeyB0eXBlOiAiaTMyIiwgdmFs
dWU6IDAgfV1dLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt7dHlwZTogImkz
MiIsIHZhbHVlOiAxIH0sIFt7IHR5cGU6ICJpMzIiLCB2YWx1ZTogMiB9LCB7IHR5cGU6ICJpMzIi
LCB2YWx1ZTogMSB9XV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3t0eXBl
OiAiaTMyIiwgdmFsdWU6IDEgfSwgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAxIH0sIHsgdHlwZTog
ImkzMiIsIHZhbHVlOiAyIH1dXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBb
e3R5cGU6ICJpMzIiLCB2YWx1ZTogMCB9LCBbeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDIgfSwgeyB0
eXBlOiAiaTMyIiwgdmFsdWU6IDIgfV1dLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFt7dHlwZTogImkzMiIsIHZhbHVlOiAwIH0sIFt7IHR5cGU6ICJpMzIiLCB2YWx1ZTogMSB9
LCB7IHR5cGU6ICJpMzIiLCB2YWx1ZTogMSB9XV0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgW3t0eXBlOiAiaTMyIiwgdmFsdWU6IDAgfSwgW3sgdHlwZTogImkzMiIsIHZhbHVl
OiAwIH0sIHsgdHlwZTogImkzMiIsIHZhbHVlOiAwIH1dXSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBbe3R5cGU6ICJpMzIiLCB2YWx1ZTogMSB9LCBbeyB0eXBlOiAiaTMyIiwg
dmFsdWU6IDIgfSwgeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDYgfV1dLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFt7dHlwZTogImkzMiIsIHZhbHVlOiAxIH0sIFt7IHR5cGU6ICJp
MzIiLCB2YWx1ZTogMTAwIH0sIHsgdHlwZTogImkzMiIsIHZhbHVlOiA2IH1dXQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXSk7Cit9CitydW4oZHVtYkVxSWZUaGVuRWxzZSkKKwor
ZnVuY3Rpb24gZHVtYkxlc3NUaGFuSWZUaGVuRWxzZSgpIHsKKyAgICBjb25zdCBiID0gbmV3IEJ1
aWxkZXIoKTsKKyAgICBiLnNldENoZWNrZWQoZmFsc2UpOworICAgIGIuVHlwZSgpLkVuZCgpCisg
ICAgICAgIC5GdW5jdGlvbigpLkVuZCgpCisgICAgICAgIC5Db2RlKCkKKyAgICAgICAgLkZ1bmN0
aW9uKHsgcGFyYW1zOiBbImkzMiIsICJpMzIiXSwgcmV0OiAiaTMyIiB9LCBbXSkKKyAgICAgICAg
Lkxvb3AoInZvaWQiKQorICAgICAgICAuR2V0TG9jYWwoMCkKKyAgICAgICAgLkdldExvY2FsKDEp
CisgICAgICAgIC5JMzJFcSgpCisgICAgICAgIC5JZigidm9pZCIsIGIgPT4KKyAgICAgICAgICAg
IGIuSTMyQ29uc3QoMCkKKyAgICAgICAgICAgIC5SZXR1cm4oKQorICAgICAgICAgICAgLkVsc2Uo
KQorICAgICAgICAgICAgICAgIC5HZXRMb2NhbCgwKQorICAgICAgICAgICAgLkkzMkNvbnN0KDAp
CisgICAgICAgICAgICAuSTMyRXEoKQorICAgICAgICAgICAgLklmKCJ2b2lkIiwgYiA9PgorICAg
ICAgICAgICAgICAgIGIuSTMyQ29uc3QoMSkKKyAgICAgICAgICAgICAgICAuUmV0dXJuKCkKKyAg
ICAgICAgICAgICAgICkKKyAgICAgICAgICAgKQorICAgICAgICAuR2V0TG9jYWwoMCkKKyAgICAg
ICAgLkkzMkNvbnN0KDEpCisgICAgICAgIC5JMzJTdWIoKQorICAgICAgICAuU2V0TG9jYWwoMCkK
KyAgICAgICAgLkJyKDApCisgICAgICAgIC5FbmQoKQorICAgICAgICAuVW5yZWFjaGFibGUoKQor
ICAgICAgICAuRW5kKCkKKworICAgIGNvbnN0IGJpbiA9IGIuV2ViQXNzZW1ibHkoKQorICAgIGJp
bi50cmltKCk7CisgICAgdGVzdFdhc21Nb2R1bGUoYmluLmdldCgpLCAxLCBbW3t0eXBlOiAiaTMy
IiwgdmFsdWU6IDEgfSwgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAwIH0sIHsgdHlwZTogImkzMiIs
IHZhbHVlOiAxIH1dXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbe3R5cGU6
ICJpMzIiLCB2YWx1ZTogMCB9LCBbeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDEgfSwgeyB0eXBlOiAi
aTMyIiwgdmFsdWU6IDAgfV1dLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt7
dHlwZTogImkzMiIsIHZhbHVlOiAwIH0sIFt7IHR5cGU6ICJpMzIiLCB2YWx1ZTogMiB9LCB7IHR5
cGU6ICJpMzIiLCB2YWx1ZTogMSB9XV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgW3t0eXBlOiAiaTMyIiwgdmFsdWU6IDEgfSwgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAxIH0s
IHsgdHlwZTogImkzMiIsIHZhbHVlOiAyIH1dXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBbe3R5cGU6ICJpMzIiLCB2YWx1ZTogMCB9LCBbeyB0eXBlOiAiaTMyIiwgdmFsdWU6
IDIgfSwgeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDIgfV1dLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFt7dHlwZTogImkzMiIsIHZhbHVlOiAwIH0sIFt7IHR5cGU6ICJpMzIiLCB2
YWx1ZTogMSB9LCB7IHR5cGU6ICJpMzIiLCB2YWx1ZTogMSB9XV0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgW3t0eXBlOiAiaTMyIiwgdmFsdWU6IDAgfSwgW3sgdHlwZTogImkz
MiIsIHZhbHVlOiAwIH0sIHsgdHlwZTogImkzMiIsIHZhbHVlOiAwIH1dXSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBbe3R5cGU6ICJpMzIiLCB2YWx1ZTogMSB9LCBbeyB0eXBl
OiAiaTMyIiwgdmFsdWU6IDIgfSwgeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDYgfV1dLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt7dHlwZTogImkzMiIsIHZhbHVlOiAwIH0sIFt7
IHR5cGU6ICJpMzIiLCB2YWx1ZTogMTAwIH0sIHsgdHlwZTogImkzMiIsIHZhbHVlOiA2IH1dXQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSk7Cit9CitydW4oZHVtYkxlc3NUaGFu
SWZUaGVuRWxzZSkKKworZnVuY3Rpb24gbG9vcFN1bSgpIHsKKyAgICBjb25zdCBiID0gbmV3IEJ1
aWxkZXIoKTsKKyAgICBiLnNldENoZWNrZWQoZmFsc2UpOworICAgIGIuVHlwZSgpLkVuZCgpCisg
ICAgICAgIC5GdW5jdGlvbigpLkVuZCgpCisgICAgICAgIC5Db2RlKCkKKyAgICAgICAgLkZ1bmN0
aW9uKHsgcGFyYW1zOiBbImkzMiJdLCByZXQ6ICJpMzIiIH0sIFsiaTMyIl0pCisgICAgICAgIC5J
MzJDb25zdCgwKQorICAgICAgICAuU2V0TG9jYWwoMSkKKyAgICAgICAgLkxvb3AoInZvaWQiKQor
ICAgICAgICAuQmxvY2soInZvaWQiLCBiID0+CisgICAgICAgICAgICAgICBiLkdldExvY2FsKDAp
CisgICAgICAgICAgICAgICAuSTMyQ29uc3QoMCkKKyAgICAgICAgICAgICAgIC5JMzJFcSgpCisg
ICAgICAgICAgICAgICAuQnJJZigwKQorICAgICAgICAgICAgICAgLkdldExvY2FsKDApCisgICAg
ICAgICAgICAgICAuR2V0TG9jYWwoMSkKKyAgICAgICAgICAgICAgIC5JMzJBZGQoKQorICAgICAg
ICAgICAgICAgLlNldExvY2FsKDEpCisgICAgICAgICAgICAgICAuR2V0TG9jYWwoMCkKKyAgICAg
ICAgICAgICAgIC5JMzJDb25zdCgxKQorICAgICAgICAgICAgICAgLkkzMlN1YigpCisgICAgICAg
ICAgICAgICAuU2V0TG9jYWwoMCkKKyAgICAgICAgICAgICAgIC5CcigxKQorICAgICAgICAgICAg
ICApCisgICAgICAgIC5FbmQoKQorICAgICAgICAuR2V0TG9jYWwoMSkKKyAgICAgICAgLlJldHVy
bigpCisgICAgICAgIC5FbmQoKQorCisgICAgY29uc3QgYmluID0gYi5XZWJBc3NlbWJseSgpCisg
ICAgYmluLnRyaW0oKTsKKyAgICB0ZXN0V2FzbU1vZHVsZShiaW4uZ2V0KCksIDEsIFtbe3R5cGU6
ICJpMzIiLCB2YWx1ZTogMCB9LCBbeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDAgfV1dLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt7dHlwZTogImkzMiIsIHZhbHVlOiAxIH0sIFt7
IHR5cGU6ICJpMzIiLCB2YWx1ZTogMSB9XV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgW3t0eXBlOiAiaTMyIiwgdmFsdWU6IDMgfSwgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAy
IH1dXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbe3R5cGU6ICJpMzIiLCB2
YWx1ZTogNTA1MCB9LCBbeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDEwMCB9XV0KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF0pOworfQorcnVuKGxvb3BTdW0pCisKK2Z1bmN0aW9uIGxv
b3BNdWx0KCkgeworICAgIGNvbnN0IGIgPSBuZXcgQnVpbGRlcigpOworICAgIGIuc2V0Q2hlY2tl
ZChmYWxzZSk7CisgICAgYi5UeXBlKCkuRW5kKCkKKyAgICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkK
KyAgICAgICAgLkNvZGUoKQorICAgICAgICAuRnVuY3Rpb24oeyBwYXJhbXM6IFsiaTMyIl0sIHJl
dDogImkzMiIgfSwgWyJpMzIiXSkKKyAgICAgICAgLkkzMkNvbnN0KDApCisgICAgICAgIC5TZXRM
b2NhbCgxKQorICAgICAgICAuTG9vcCgidm9pZCIpCisgICAgICAgIC5CbG9jaygidm9pZCIsIGIg
PT4KKyAgICAgICAgICAgICAgIGIuR2V0TG9jYWwoMCkKKyAgICAgICAgICAgICAgIC5JMzJDb25z
dCgwKQorICAgICAgICAgICAgICAgLkkzMkVxKCkKKyAgICAgICAgICAgICAgIC5CcklmKDApCisg
ICAgICAgICAgICAgICAuR2V0TG9jYWwoMCkKKyAgICAgICAgICAgICAgIC5HZXRMb2NhbCgxKQor
ICAgICAgICAgICAgICAgLkkzMkFkZCgpCisgICAgICAgICAgICAgICAuU2V0TG9jYWwoMSkKKyAg
ICAgICAgICAgICAgIC5HZXRMb2NhbCgwKQorICAgICAgICAgICAgICAgLkkzMkNvbnN0KDEpCisg
ICAgICAgICAgICAgICAuSTMyU3ViKCkKKyAgICAgICAgICAgICAgIC5TZXRMb2NhbCgwKQorICAg
ICAgICAgICAgICAgLkJyKDEpCisgICAgICAgICAgICAgICkKKyAgICAgICAgLkVuZCgpCisgICAg
ICAgIC5HZXRMb2NhbCgxKQorICAgICAgICAuUmV0dXJuKCkKKyAgICAgICAgLkVuZCgpCisKKyAg
ICBjb25zdCBiaW4gPSBiLldlYkFzc2VtYmx5KCkKKyAgICBiaW4udHJpbSgpOworICAgIHRlc3RX
YXNtTW9kdWxlKGJpbi5nZXQoKSwgMSwgW1t7dHlwZTogImkzMiIsIHZhbHVlOiAwIH0sIFt7IHR5
cGU6ICJpMzIiLCB2YWx1ZTogMCB9XV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgW3t0eXBlOiAiaTMyIiwgdmFsdWU6IDEgfSwgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAxIH1d
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbe3R5cGU6ICJpMzIiLCB2YWx1
ZTogMyB9LCBbeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDIgfV1dLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFt7dHlwZTogImkzMiIsIHZhbHVlOiA1MDUwIH0sIFt7IHR5cGU6ICJp
MzIiLCB2YWx1ZTogMTAwIH1dXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSk7
Cit9CitydW4obG9vcE11bHQpOworCitmdW5jdGlvbiBicklmTG9vcExlc3NUaGFuKCkgeworICAg
IGNvbnN0IGIgPSBuZXcgQnVpbGRlcigpOworICAgIGIuc2V0Q2hlY2tlZChmYWxzZSk7CisgICAg
Yi5UeXBlKCkuRW5kKCkKKyAgICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgICAgLkNvZGUo
KQorICAgICAgICAuRnVuY3Rpb24oeyBwYXJhbXM6IFsiaTMyIiwgImkzMiJdLCByZXQ6ICJpMzIi
IH0sIFtdKQorICAgICAgICAuTG9vcCgidm9pZCIpCisgICAgICAgIC5CbG9jaygidm9pZCIsIGIg
PT4KKyAgICAgICAgICAgICAgIGIuQmxvY2soInZvaWQiLCBiID0+CisgICAgICAgICAgICAgICAg
ICAgICAgIGIuR2V0TG9jYWwoMCkKKyAgICAgICAgICAgICAgICAgICAgICAgLkdldExvY2FsKDEp
CisgICAgICAgICAgICAgICAgICAgICAgIC5JMzJFcSgpCisgICAgICAgICAgICAgICAgICAgICAg
IC5CcklmKDApCisgICAgICAgICAgICAgICAgICAgICAgIC5CcigxKQorICAgICAgICAgICAgICAg
ICAgICAgICkKKyAgICAgICAgICAgICAgIC5JMzJDb25zdCgwKQorICAgICAgICAgICAgICAgLlJl
dHVybigpCisgICAgICAgICAgICAgICkKKyAgICAgICAgLkJsb2NrKCJ2b2lkIiwgYiA9PgorICAg
ICAgICAgICAgICAgYi5CbG9jaygidm9pZCIsIGIgPT4KKyAgICAgICAgICAgICAgICAgICAgICBi
LkdldExvY2FsKDApCisgICAgICAgICAgICAgICAgICAgICAgLkkzMkNvbnN0KDApCisgICAgICAg
ICAgICAgICAgICAgICAgLkkzMkVxKCkKKyAgICAgICAgICAgICAgICAgICAgICAuQnJJZigwKQor
ICAgICAgICAgICAgICAgICAgICAgIC5CcigxKQorICAgICAgICAgICAgICAgICAgICAgKQorICAg
ICAgICAgICAgICAgLkkzMkNvbnN0KDEpCisgICAgICAgICAgICAgICAuUmV0dXJuKCkKKyAgICAg
ICAgICAgICAgKQorICAgICAgICAuR2V0TG9jYWwoMCkKKyAgICAgICAgLkkzMkNvbnN0KDEpCisg
ICAgICAgIC5JMzJTdWIoKQorICAgICAgICAuU2V0TG9jYWwoMCkKKyAgICAgICAgLkJyKDApCisg
ICAgICAgIC5FbmQoKQorICAgICAgICAuVW5yZWFjaGFibGUoKQorICAgICAgICAuRW5kKCkKKwor
ICAgIGNvbnN0IGJpbiA9IGIuV2ViQXNzZW1ibHkoKQorICAgIGJpbi50cmltKCk7CisgICAgdGVz
dFdhc21Nb2R1bGUoYmluLmdldCgpLCAxLCBbW3t0eXBlOiAiaTMyIiwgdmFsdWU6IDEgfSwgW3sg
dHlwZTogImkzMiIsIHZhbHVlOiAwIH0sIHsgdHlwZTogImkzMiIsIHZhbHVlOiAxIH1dXSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbe3R5cGU6ICJpMzIiLCB2YWx1ZTogMCB9
LCBbeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDEgfSwgeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDAgfV1d
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt7dHlwZTogImkzMiIsIHZhbHVl
OiAwIH0sIFt7IHR5cGU6ICJpMzIiLCB2YWx1ZTogMiB9LCB7IHR5cGU6ICJpMzIiLCB2YWx1ZTog
MSB9XV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3t0eXBlOiAiaTMyIiwg
dmFsdWU6IDEgfSwgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAxIH0sIHsgdHlwZTogImkzMiIsIHZh
bHVlOiAyIH1dXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbe3R5cGU6ICJp
MzIiLCB2YWx1ZTogMCB9LCBbeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDIgfSwgeyB0eXBlOiAiaTMy
IiwgdmFsdWU6IDIgfV1dLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt7dHlw
ZTogImkzMiIsIHZhbHVlOiAwIH0sIFt7IHR5cGU6ICJpMzIiLCB2YWx1ZTogMSB9LCB7IHR5cGU6
ICJpMzIiLCB2YWx1ZTogMSB9XV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
W3t0eXBlOiAiaTMyIiwgdmFsdWU6IDEgfSwgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAyIH0sIHsg
dHlwZTogImkzMiIsIHZhbHVlOiA2IH1dXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBbe3R5cGU6ICJpMzIiLCB2YWx1ZTogMCB9LCBbeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDEw
MCB9LCB7IHR5cGU6ICJpMzIiLCB2YWx1ZTogNiB9XV0KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF0pOworfQorcnVuKGJySWZMb29wTGVzc1RoYW4pCisKK2Z1bmN0aW9uIHJ1bih0
ZXN0KSB7CisgICAgdGVzdCgpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL3NlbGYtdGVz
dC90ZXN0X0xvd0xldmVsQmluYXJ5X3ZhcmludC5qcyBiL0pTVGVzdHMvd2FzbS9zZWxmLXRlc3Qv
dGVzdF9Mb3dMZXZlbEJpbmFyeV92YXJpbnQuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDdkZGM4Y2YzYmYxMDEwOWU3OWNkOTEwMjYyMDVmMmQyMzQ0MzA4MmMuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvSlNUZXN0cy93YXNtL3NlbGYtdGVz
dC90ZXN0X0xvd0xldmVsQmluYXJ5X3ZhcmludC5qcworKysgL2Rldi9udWxsCkBAIC0xLDMwICsw
LDAgQEAKLWltcG9ydCBMb3dMZXZlbEJpbmFyeSwgKiBhcyBMTEIgZnJvbSAnLi4vTG93TGV2ZWxC
aW5hcnkuanMnOwotaW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJy4uL2Fzc2VydC5qcyc7Ci0KLWxl
dCB2YWx1ZXMgPSBbXTsKLWZvciAobGV0IGkgPSBMTEIudmFyaW50TWluOyBpICE9PSBMTEIudmFy
aW50TWluICsgMTAyNDsgKytpKSB2YWx1ZXMucHVzaChpKTsKLWZvciAobGV0IGkgPSAtMjA0ODsg
aSAhPT0gMjA0ODsgKytpKSB2YWx1ZXMucHVzaChpKTsKLWZvciAobGV0IGkgPSBMTEIudmFyaW50
TWF4OyBpICE9PSBMTEIudmFyaW50TWF4IC0gMTAyNDsgLS1pKSB2YWx1ZXMucHVzaChpKTsKLQot
Zm9yIChjb25zdCBpIG9mIHZhbHVlcykgewotICAgIGxldCBiID0gbmV3IExvd0xldmVsQmluYXJ5
KCk7Ci0gICAgYi52YXJpbnQoaSk7Ci0gICAgY29uc3QgdiA9IGIuZ2V0VmFyaW50KDApOwotICAg
IGlmICh2LnZhbHVlICE9PSBpKQotICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFdyb3RlICIke2l9
IiBhbmQgcmVhZCBiYWNrICIke3Z9ImApOwotICAgIGlmICh2Lm5leHQgIT09IGIuZ2V0U2l6ZSgp
KQotICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFNpemUgJHt2Lm5leHR9LCBleHBlY3RlZCAke2Iu
Z2V0U2l6ZSgpfWApOwotfQotCi1mb3IgKGxldCBpID0gMDsgaSA8IExMQi52YXJCaXRzTWF4ICsg
MTsgKytpKSB7Ci0gICAgbGV0IGIgPSBuZXcgTG93TGV2ZWxCaW5hcnkoKTsKLSAgICBmb3IgKGxl
dCBqID0gMDsgaiA8IGk7ICsraikKLSAgICAgICAgYi51aW50OCgweDgwKTsKLSAgICBhc3NlcnQu
dGhyb3dzKCgpID0+IGIuZ2V0VmFyaW50KDApLCBSYW5nZUVycm9yLCBgWyR7aX0sICR7aSsxfSkg
aXMgb3V0IG9mIGJ1ZmZlciByYW5nZSBbMCwgJHtpfSlgKTsKLX0KLQotbGV0IGIgPSBuZXcgTG93
TGV2ZWxCaW5hcnkoKTsKLWZvciAobGV0IGkgPSAwOyBpIDwgTExCLnZhckJpdHNNYXg7ICsraSkK
LSAgICBiLnVpbnQ4KDB4ODApOwotYi51aW50OCgweDAwKTsKLWFzc2VydC50aHJvd3MoKCkgPT4g
Yi5nZXRWYXJpbnQoMCksIFJhbmdlRXJyb3IsIGBTaGlmdGluZyB0b28gbXVjaCBhdCA2YCk7CmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vc2VsZi10ZXN0L3Rlc3RfTG93TGV2ZWxCaW5hcnlfdmFy
aW50MzIuanMgYi9KU1Rlc3RzL3dhc20vc2VsZi10ZXN0L3Rlc3RfTG93TGV2ZWxCaW5hcnlfdmFy
aW50MzIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOWI4ZTZhYmM4NzViMDQ2Y2U4MDIzM2Y5MjU5ZDAwYjQ2YjE4
NzljNgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9zZWxmLXRlc3QvdGVzdF9Mb3dM
ZXZlbEJpbmFyeV92YXJpbnQzMi5qcwpAQCAtMCwwICsxLDMwIEBACitpbXBvcnQgTG93TGV2ZWxC
aW5hcnksICogYXMgTExCIGZyb20gJy4uL0xvd0xldmVsQmluYXJ5LmpzJzsKK2ltcG9ydCAqIGFz
IGFzc2VydCBmcm9tICcuLi9hc3NlcnQuanMnOworCitsZXQgdmFsdWVzID0gW107Citmb3IgKGxl
dCBpID0gTExCLnZhcmludDMyTWluOyBpICE9PSBMTEIudmFyaW50MzJNaW4gKyAxMDI0OyArK2kp
IHZhbHVlcy5wdXNoKGkpOworZm9yIChsZXQgaSA9IC0yMDQ4OyBpICE9PSAyMDQ4OyArK2kpIHZh
bHVlcy5wdXNoKGkpOworZm9yIChsZXQgaSA9IExMQi52YXJpbnQzMk1heDsgaSAhPT0gTExCLnZh
cmludDMyTWF4IC0gMTAyNDsgLS1pKSB2YWx1ZXMucHVzaChpKTsKKworZm9yIChjb25zdCBpIG9m
IHZhbHVlcykgeworICAgIGxldCBiID0gbmV3IExvd0xldmVsQmluYXJ5KCk7CisgICAgYi52YXJp
bnQzMihpKTsKKyAgICBjb25zdCB2ID0gYi5nZXRWYXJpbnQzMigwKTsKKyAgICBpZiAodi52YWx1
ZSAhPT0gaSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBXcm90ZSAiJHtpfSIgYW5kIHJlYWQg
YmFjayAiJHt2fSJgKTsKKyAgICBpZiAodi5uZXh0ICE9PSBiLmdldFNpemUoKSkKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKGBTaXplICR7di5uZXh0fSwgZXhwZWN0ZWQgJHtiLmdldFNpemUoKX1g
KTsKK30KKworZm9yIChsZXQgaSA9IDA7IGkgPCBMTEIudmFyQml0c01heCArIDE7ICsraSkgewor
ICAgIGxldCBiID0gbmV3IExvd0xldmVsQmluYXJ5KCk7CisgICAgZm9yIChsZXQgaiA9IDA7IGog
PCBpOyArK2opCisgICAgICAgIGIudWludDgoMHg4MCk7CisgICAgYXNzZXJ0LnRocm93cygoKSA9
PiBiLmdldFZhcmludDMyKDApLCBSYW5nZUVycm9yLCBgWyR7aX0sICR7aSsxfSkgaXMgb3V0IG9m
IGJ1ZmZlciByYW5nZSBbMCwgJHtpfSlgKTsKK30KKworbGV0IGIgPSBuZXcgTG93TGV2ZWxCaW5h
cnkoKTsKK2ZvciAobGV0IGkgPSAwOyBpIDwgTExCLnZhckJpdHNNYXg7ICsraSkKKyAgICBiLnVp
bnQ4KDB4ODApOworYi51aW50OCgweDAwKTsKK2Fzc2VydC50aHJvd3MoKCkgPT4gYi5nZXRWYXJp
bnQzMigwKSwgUmFuZ2VFcnJvciwgYFNoaWZ0aW5nIHRvbyBtdWNoIGF0IDZgKTsKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvd2FzbS9zZWxmLXRlc3QvdGVzdF9Mb3dMZXZlbEJpbmFyeV92YXJ1aW50Lmpz
IGIvSlNUZXN0cy93YXNtL3NlbGYtdGVzdC90ZXN0X0xvd0xldmVsQmluYXJ5X3ZhcnVpbnQuanMK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJlODJlMTM1ZTlkMTc1MGNkNGVhMmQ1ZDc1
NDFhZDdjNTQ3OWJlMDguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvSlNUZXN0cy93YXNtL3NlbGYtdGVzdC90ZXN0X0xvd0xldmVsQmluYXJ5X3ZhcnVpbnQu
anMKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1pbXBvcnQgTG93TGV2ZWxCaW5hcnks
ICogYXMgTExCIGZyb20gJy4uL0xvd0xldmVsQmluYXJ5LmpzJzsKLWltcG9ydCAqIGFzIGFzc2Vy
dCBmcm9tICcuLi9hc3NlcnQuanMnOwotCi1sZXQgdmFsdWVzID0gW107Ci1mb3IgKGxldCBpID0g
TExCLnZhcnVpbnRNaW47IGkgIT09IExMQi52YXJ1aW50TWluICsgMTAyNDsgKytpKSB2YWx1ZXMu
cHVzaChpKTsKLWZvciAobGV0IGkgPSBMTEIudmFydWludE1heDsgaSAhPT0gTExCLnZhcnVpbnRN
YXggLSAxMDI0OyAtLWkpIHZhbHVlcy5wdXNoKGkpOwotCi1mb3IgKGNvbnN0IGkgb2YgdmFsdWVz
KSB7Ci0gICAgbGV0IGIgPSBuZXcgTG93TGV2ZWxCaW5hcnkoKTsKLSAgICBiLnZhcnVpbnQoaSk7
Ci0gICAgY29uc3QgdiA9IGIuZ2V0VmFydWludCgwKTsKLSAgICBpZiAodi52YWx1ZSAhPT0gaSkK
LSAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBXcm90ZSAiJHtpfSIgYW5kIHJlYWQgYmFjayAiJHt2
fSJgKTsKLSAgICBpZiAodi5uZXh0ICE9PSBiLmdldFNpemUoKSkKLSAgICAgICAgdGhyb3cgbmV3
IEVycm9yKGBTaXplICR7di5uZXh0fSwgZXhwZWN0ZWQgJHtiLmdldFNpemUoKX1gKTsKLX0KLQot
Zm9yIChsZXQgaSA9IDA7IGkgPCBMTEIudmFyQml0c01heCArIDE7ICsraSkgewotICAgIGxldCBi
ID0gbmV3IExvd0xldmVsQmluYXJ5KCk7Ci0gICAgZm9yIChsZXQgaiA9IDA7IGogPCBpOyArK2op
Ci0gICAgICAgIGIudWludDgoMHg4MCk7Ci0gICAgYXNzZXJ0LnRocm93cygoKSA9PiBiLmdldFZh
cmludCgwKSwgUmFuZ2VFcnJvciwgYFske2l9LCAke2krMX0pIGlzIG91dCBvZiBidWZmZXIgcmFu
Z2UgWzAsICR7aX0pYCk7Ci19Ci0KLWxldCBiID0gbmV3IExvd0xldmVsQmluYXJ5KCk7Ci1mb3Ig
KGxldCBpID0gMDsgaSA8IExMQi52YXJCaXRzTWF4OyArK2kpCi0gICAgYi51aW50OCgweDgwKTsK
LWIudWludDgoMHgwMCk7Ci1hc3NlcnQudGhyb3dzKCgpID0+IGIuZ2V0VmFyaW50KDApLCBSYW5n
ZUVycm9yLCBgU2hpZnRpbmcgdG9vIG11Y2ggYXQgNmApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93
YXNtL3NlbGYtdGVzdC90ZXN0X0xvd0xldmVsQmluYXJ5X3ZhcnVpbnQzMi5qcyBiL0pTVGVzdHMv
d2FzbS9zZWxmLXRlc3QvdGVzdF9Mb3dMZXZlbEJpbmFyeV92YXJ1aW50MzIuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZTljNjQ5NjM3YjQ1MDVmOGMzYTZmZDM4NTIzMDg1ZjNiNmU3NTFiYwotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvd2FzbS9zZWxmLXRlc3QvdGVzdF9Mb3dMZXZlbEJpbmFyeV92YXJ1aW50
MzIuanMKQEAgLTAsMCArMSwyOSBAQAoraW1wb3J0IExvd0xldmVsQmluYXJ5LCAqIGFzIExMQiBm
cm9tICcuLi9Mb3dMZXZlbEJpbmFyeS5qcyc7CitpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnLi4v
YXNzZXJ0LmpzJzsKKworbGV0IHZhbHVlcyA9IFtdOworZm9yIChsZXQgaSA9IExMQi52YXJ1aW50
MzJNaW47IGkgIT09IExMQi52YXJ1aW50MzJNaW4gKyAxMDI0OyArK2kpIHZhbHVlcy5wdXNoKGkp
OworZm9yIChsZXQgaSA9IExMQi52YXJ1aW50MzJNYXg7IGkgIT09IExMQi52YXJ1aW50MzJNYXgg
LSAxMDI0OyAtLWkpIHZhbHVlcy5wdXNoKGkpOworCitmb3IgKGNvbnN0IGkgb2YgdmFsdWVzKSB7
CisgICAgbGV0IGIgPSBuZXcgTG93TGV2ZWxCaW5hcnkoKTsKKyAgICBiLnZhcnVpbnQzMihpKTsK
KyAgICBjb25zdCB2ID0gYi5nZXRWYXJ1aW50MzIoMCk7CisgICAgaWYgKHYudmFsdWUgIT09IGkp
CisgICAgICAgIHRocm93IG5ldyBFcnJvcihgV3JvdGUgIiR7aX0iIGFuZCByZWFkIGJhY2sgIiR7
dn0iYCk7CisgICAgaWYgKHYubmV4dCAhPT0gYi5nZXRTaXplKCkpCisgICAgICAgIHRocm93IG5l
dyBFcnJvcihgU2l6ZSAke3YubmV4dH0sIGV4cGVjdGVkICR7Yi5nZXRTaXplKCl9YCk7Cit9CisK
K2ZvciAobGV0IGkgPSAwOyBpIDwgTExCLnZhckJpdHNNYXggKyAxOyArK2kpIHsKKyAgICBsZXQg
YiA9IG5ldyBMb3dMZXZlbEJpbmFyeSgpOworICAgIGZvciAobGV0IGogPSAwOyBqIDwgaTsgKytq
KQorICAgICAgICBiLnVpbnQ4KDB4ODApOworICAgIGFzc2VydC50aHJvd3MoKCkgPT4gYi5nZXRW
YXJpbnQzMigwKSwgUmFuZ2VFcnJvciwgYFske2l9LCAke2krMX0pIGlzIG91dCBvZiBidWZmZXIg
cmFuZ2UgWzAsICR7aX0pYCk7Cit9CisKK2xldCBiID0gbmV3IExvd0xldmVsQmluYXJ5KCk7Citm
b3IgKGxldCBpID0gMDsgaSA8IExMQi52YXJCaXRzTWF4OyArK2kpCisgICAgYi51aW50OCgweDgw
KTsKK2IudWludDgoMHgwMCk7Cithc3NlcnQudGhyb3dzKCgpID0+IGIuZ2V0VmFyaW50MzIoMCks
IFJhbmdlRXJyb3IsIGBTaGlmdGluZyB0b28gbXVjaCBhdCA2YCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294555</attachid>
            <date>2016-11-11 15:53:51 -0800</date>
            <delta_ts>2016-11-11 15:54:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164611-20161111154936.patch</filename>
            <type>text/plain</type>
            <size>100669</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4NTE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
MjRmNTliYjgzNWIzOGY2NmI2YjEwN2VjY2Q0NWM5NDM1OGJkMzVkLi45MGMxZjllOTNhMWYwZWIz
YzkxMWM2NzMxNzU0Y2E1NTNiYTBjMGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2OCBAQAorMjAxNi0xMS0xMSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBNb3ZlIFdhc20gdGVzdHMgdG8gSlMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDYxMQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggdHJhbnNsYXRlcyBtb3N0
IG9mIHRoZSB0ZXN0cyBmcm9tIHRlc3RXYXNtLmNwcCB0byB0aGUgSlMgdGVzdGluZyBhcGkuIE1v
c3Qgb2YgdGhlCisgICAgICAgIG9tbWl0ZWQgdGVzdHMgd2VyZSBlYXJsaWVzdCB0ZXN0cywgd2hp
Y2ggdGVzdGVkIHRyaXZpYWwgdGhpbmdzLCBsaWtlIGFkZGluZyB0d28KKyAgICAgICAgY29uc3Rh
bnRzLiBTb21lIHRlc3RzIGFyZSBvbW1pdGVkIGZvciBvdGhlciByZWFzb25zLCBob3dldmVyLiBU
aGVzZSBhcmU6CisKKyAgICAgICAgMSkgVGVzdHMgdXNpbmcgSTY0IHNpbmNlIHRoZSB0ZXN0aW5n
IGFwaSBkb2VzIG5vdCB5ZXQga25vdyBob3cgdG8gaGFuZGxlIDY0LWJpdCBudW1iZXJzLiAgMikK
KyAgICAgICAgVGVzdHMgdGhhdCB3b3VsZCB2YWxpZGF0ZSB0aGUgbWVtb3J5IG9mIHRoZSBtb2R1
bGUgb25jZSB3YXNtIHdhcyBkb25lIHdpdGggaXQgc2luY2UgdGhhdCdzCisgICAgICAgIG5vdCBy
ZWFsbHkgcG9zc2libGUgaW4gSlMuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gbWFrZSBzdWNoIGEg
dHJhbnNsYXRpb24gZWFzaWVyIHRoaXMgcGF0Y2ggYWxzbyBhZGRzIHNvbWUgZmVhdHVyZXMgdG8g
dGhlIEpTCisgICAgICAgIHRlc3RpbmcgYXBpOgorCisgICAgICAgIDEpIEJsb2NrcyBjYW4gbm93
IGJlIGRvbmUgbGV4aWNhbGx5IGJ5IGFkZGluZyBhIGxhbWJkYSBhcyB0aGUgbGFzdCBhcmd1bWVu
dCBvZiB0aGUgYmxvY2sKKyAgICAgICAgb3Bjb2RlLiBGb3IgZXhhbXBsZSBvbmUgY2FuIGRvOgor
ICAgICAgICAgICAgLi4uCisgICAgICAgICAgICAuQmxvY2soImkzMiIsIGIgPT4gYi5JMzJDb25z
dCgxKSApCisKKyAgICAgICAgYW5kIHRoZSBuZXN0ZWQgbGFtYmRhIHdpbGwgYXV0b21hdGljYWxs
eSBoYXZlIGFuIGVuZCBhdHRhY2hlZC4KKworICAgICAgICAyKSBUaGUgSlMgdGVzdGluZyBhcGkg
Y2FuIG5vdyBoYW5kbGUgaW5saW5lIHNpZ25hdHVyZSB0eXBlcy4KKworICAgICAgICAzKSBSZWxv
Y2F0ZSBzb21lIGNvZGUgdG8gbWFrZSBpdCBlYXNpZXIgdG8gZm9sbG93IGFuZCBwcmV2ZW50IDQ0
IHNwYWNlIGluZGVudGF0aW9uLgorCisgICAgICAgIDQpIFJlbmFtZSB2YXJ1aW50L3ZhcmludCB0
byB2YXJ1aW50MzIvdmFyaW50MzIsIHRoaXMgbGV0cyB0aGVtIGJlIGRpcmVjdGx5IGNhbGxlZCBm
cm9tIHRoZQorICAgICAgICB3YXNtLmpzb24gd2l0aG91dCBiZWluZyByZW1hcHBlZC4KKworICAg
ICAgICA1KSBBZGQgc3VwcG9ydCBmb3IgTWVtb3J5IGFuZCBGdW5jdGlvbiBzZWN0aW9ucyB0byB0
aGUgQnVpbGRlci4KKworICAgICAgICA2KSBBZGQgc3VwcG9ydCBmb3IgbG9jYWwgdmFyaWFibGVz
LgorCisgICAgICAgIE9uIHRoZSBKU0Mgc2lkZSwgd2UgbmVlZGVkIHRvIGV4cG9zZSBhIG5ldyBm
dW5jdGlvbiB0byB2YWxpZGF0ZSB0aGUgY29tcGlsZWQgd2FzbSBjb2RlCisgICAgICAgIGJlaGF2
ZXMgdGhlIHdheSB3ZSBleHBlY3QuIEF0IGxlYXN0IHVudGlsIHRoZSBKUyBXYXNtIEFQSSBpcyBm
aW5pc2hlZC4gVGhlIG5ldyB2YWxpZGF0aW9uCisgICAgICAgIGZ1bmN0aW9uLCB0ZXN0V2FzbU1v
ZHVsZUZ1bmN0aW9ucywgdGFrZXMgYW4gYXJyYXkgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIHdhc20g
YmluYXJ5LCB0aGUKKyAgICAgICAgbnVtYmVyIG9mIGZ1bmN0aW9ucyBpbiB0aGUgYmxvYiBhbmQg
dGVzdHMgZm9yIGVhY2ggb2YgdGhvc2UgZnVuY3Rpb25zLgorCisgICAgICAgICoganNjLmNwcDoK
KyAgICAgICAgKEdsb2JhbE9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoYm94KToK
KyAgICAgICAgKGNhbGxXYXNtRnVuY3Rpb24pOgorICAgICAgICAoZnVuY3Rpb25UZXN0V2FzbU1v
ZHVsZUZ1bmN0aW9ucyk6CisgICAgICAgICogdGVzdFdhc20uY3BwOgorICAgICAgICAoY2hlY2tQ
bGFuKToKKyAgICAgICAgKHJ1bldhc21UZXN0cyk6CisgICAgICAgICogd2FzbS9XYXNtQjNJUkdl
bmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OnBhcnNlQW5kQ29tcGlsZSk6CisgICAg
ICAgICogd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6RnVu
Y3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6RnVuY3Rp
b25QYXJzZXI8Q29udGV4dD46OnBhcnNlQm9keSk6CisgICAgICAgIChKU0M6Oldhc206OkZ1bmN0
aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZUJsb2NrKTogRGVsZXRlZC4KKyAgICAgICAgKiB3YXNt
L1dhc21Nb2R1bGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpNb2R1bGVQYXJzZXI6
OnBhcnNlTWVtb3J5KToKKyAgICAgICAgKEpTQzo6V2FzbTo6TW9kdWxlUGFyc2VyOjpwYXJzZUV4
cG9ydCk6CisgICAgICAgICogd2FzbS9XYXNtUGxhbi5jcHA6CisgICAgICAgIChKU0M6Oldhc206
OlBsYW46OlBsYW4pOgorICAgICAgICAoSlNDOjpXYXNtOjpQbGFuOjpydW4pOgorICAgICAgICAq
IHdhc20vV2FzbVBsYW4uaDoKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlQ29u
c3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5TW9kdWxl
KToKKwogMjAxNi0xMS0wOSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4K
IAogICAgICAgICBqc2MgQ0xJIHNob3VsZCB3b3JrIHdpdGggdGhlIHJlbW90ZSBpbnNwZWN0b3IK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggMjNiZjc0NzBlNzFlODE2YjhmZmI5ZjFmMjViZTEyNTI4
YmIyMGI4Ny4uMjRhMDE5ZDQxMjI3NzM5MTFjOWU0NDAzNDEyNDVhMzBlOGFkODk0MiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2pzYy5jcHAKQEAgLTU0LDkgKzU0LDExIEBACiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIK
ICNpbmNsdWRlICJKU1R5cGVkQXJyYXlzLmgiCiAjaW5jbHVkZSAiTExJbnREYXRhLmgiCisjaW5j
bHVkZSAiTExJbnRUaHVua3MuaCIKICNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgogI2lu
Y2x1ZGUgIlBhcnNlckVycm9yLmgiCiAjaW5jbHVkZSAiUHJvZmlsZXJEYXRhYmFzZS5oIgorI2lu
Y2x1ZGUgIlByb3RvQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiU2FtcGxpbmdQcm9maWxlci5oIgog
I2luY2x1ZGUgIlNoYWRvd0NoaWNrZW4uaCIKICNpbmNsdWRlICJTdGFja1Zpc2l0b3IuaCIKQEAg
LTY1LDYgKzY3LDcgQEAKICNpbmNsdWRlICJTdXBlclNhbXBsZXIuaCIKICNpbmNsdWRlICJUZXN0
UnVubmVyVXRpbHMuaCIKICNpbmNsdWRlICJUeXBlUHJvZmlsZXJMb2cuaCIKKyNpbmNsdWRlICJX
YXNtUGxhbi5oIgogI2luY2x1ZGUgPGxvY2FsZS5oPgogI2luY2x1ZGUgPG1hdGguaD4KICNpbmNs
dWRlIDxzdGRpby5oPgpAQCAtOTA1LDYgKzkwOCwxMCBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvblN0YXJ0U2FtcGxpbmdQcm9maWxlcihFeGVjU3RhdGUqKTsK
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uU2FtcGxpbmdQcm9m
aWxlclN0YWNrVHJhY2VzKEV4ZWNTdGF0ZSopOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCQVNT
RU1CTFkpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblRlc3RX
YXNtTW9kdWxlRnVuY3Rpb25zKEV4ZWNTdGF0ZSopOworI2VuZGlmCisKICNpZiBFTkFCTEUoU0FN
UExJTkdfRkxBR1MpCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
blNldFNhbXBsaW5nRmxhZ3MoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvbkNsZWFyU2FtcGxpbmdGbGFncyhFeGVjU3RhdGUqKTsKQEAgLTEx
NTIsNiArMTE1OSwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAic2Ft
cGxpbmdQcm9maWxlclN0YWNrVHJhY2VzIiwgZnVuY3Rpb25TYW1wbGluZ1Byb2ZpbGVyU3RhY2tU
cmFjZXMsIDApOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisgICAgICAgIGFk
ZEZ1bmN0aW9uKHZtLCAidGVzdFdhc21Nb2R1bGVGdW5jdGlvbnMiLCBmdW5jdGlvblRlc3RXYXNt
TW9kdWxlRnVuY3Rpb25zLCAwKTsKKyNlbmRpZgorCiAgICAgICAgIGlmICghYXJndW1lbnRzLmlz
RW1wdHkoKSkgewogICAgICAgICAgICAgSlNBcnJheSogYXJyYXkgPSBjb25zdHJ1Y3RFbXB0eUFy
cmF5KGdsb2JhbEV4ZWMoKSwgMCk7CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGFyZ3VtZW50cy5zaXplKCk7ICsraSkKQEAgLTIzNTIsNiArMjM2MywxMDQgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblNhbXBsaW5nUHJvZmlsZXJTdGFja1RyYWNlcyhF
eGVjU3RhdGUqIGV4ZWMKIH0KICNlbmRpZiAvLyBFTkFCTEUoU0FNUExJTkdfUFJPRklMRVIpCiAK
KyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisKK3N0YXRpYyBKU1ZhbHVlIGJveChFeGVjU3RhdGUq
IGV4ZWMsIFZNJiB2bSwgSlNWYWx1ZSB3YXNtVmFsdWUpCit7CisgICAgSlNTdHJpbmcqIHR5cGUg
PSBqc0Nhc3Q8SlNTdHJpbmcqPih3YXNtVmFsdWUuZ2V0KGV4ZWMsIG1ha2VJZGVudGlmaWVyKHZt
LCAidHlwZSIpKSk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IHdhc21WYWx1ZS5nZXQoZXhlYywgbWFr
ZUlkZW50aWZpZXIodm0sICJ2YWx1ZSIpKTsKKworICAgIGNvbnN0IFN0cmluZyYgdHlwZVN0cmlu
ZyA9IHR5cGUtPnZhbHVlKGV4ZWMpOworICAgIGlmICh0eXBlU3RyaW5nID09ICJpNjQiKSB7Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKHZhbHVlLmlzU3RyaW5nKCkpOworICAgICAgICBpbnQ2NF90
IHJlc3VsdDsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoc3NjYW5mKGJpdHdpc2VfY2FzdDxjb25z
dCBjaGFyKj4oanNDYXN0PEpTU3RyaW5nKj4odmFsdWUpLT52YWx1ZShleGVjKS5jaGFyYWN0ZXJz
OCgpKSwgIiVsbGQiLCAmcmVzdWx0KSAhPSBFT0YpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZGVjb2RlKHJlc3VsdCk7CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUKHZhbHVlLmlzTnVtYmVy
KCkpOworCisgICAgaWYgKHR5cGVTdHJpbmcgPT0gImkzMiIpIHsKKyAgICAgICAgUkVMRUFTRV9B
U1NFUlQodmFsdWUuaXNJbnQzMigpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh2
YWx1ZS5hc0ludDMyKCkpOworICAgIH0KKworICAgIGlmICh0eXBlU3RyaW5nID09ICJmMzIiKQor
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKGJpdHdpc2VfY2FzdDx1aW50MzJfdD4odmFs
dWUudG9GbG9hdChleGVjKSkpOworCisgICAgUkVMRUFTRV9BU1NFUlQodHlwZVN0cmluZyA9PSAi
ZjY0Iik7CisgICAgcmV0dXJuIHZhbHVlOworfQorCitzdGF0aWMgSlNWYWx1ZSBjYWxsV2FzbUZ1
bmN0aW9uKFZNKiB2bSwgY29uc3QgQjM6OkNvbXBpbGF0aW9uJiBjb2RlLCBWZWN0b3I8SlNWYWx1
ZT4mIGJveGVkQXJncykKK3sKKyAgICBKU1ZhbHVlIGZpcnN0QXJndW1lbnQ7CisgICAgaW50IGFy
Z0NvdW50ID0gMTsKKyAgICBKU1ZhbHVlKiByZW1haW5pbmdBcmdzID0gbnVsbHB0cjsKKyAgICBp
ZiAoYm94ZWRBcmdzLnNpemUoKSkgeworICAgICAgICByZW1haW5pbmdBcmdzID0gYm94ZWRBcmdz
LmRhdGEoKTsKKyAgICAgICAgZmlyc3RBcmd1bWVudCA9ICpyZW1haW5pbmdBcmdzOworICAgICAg
ICByZW1haW5pbmdBcmdzKys7CisgICAgICAgIGFyZ0NvdW50ID0gYm94ZWRBcmdzLnNpemUoKTsK
KyAgICB9CisKKyAgICBQcm90b0NhbGxGcmFtZSBwcm90b0NhbGxGcmFtZTsKKyAgICBwcm90b0Nh
bGxGcmFtZS5pbml0KG51bGxwdHIsIG51bGxwdHIsIGZpcnN0QXJndW1lbnQsIGFyZ0NvdW50LCBy
ZW1haW5pbmdBcmdzKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodm1FbnRyeVRvV2Fz
bShjb2RlLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpLCB2bSwgJnByb3RvQ2FsbEZyYW1lKSk7
Cit9CisKKy8vIHRlc3RXYXNtTW9kdWxlKEpTQXJyYXlCdWZmZXJWaWV3IHNvdXJjZSwgbnVtYmVy
IGZ1bmN0aW9uQ291bnQsIC4uLltbV2FzbVZhbHVlLCBbV2FzbVZhbHVlXV1dKSB3aGVyZSB0aGUg
aXRoIGNvcHkgb2YgW1tyZXN1bHQsIFthcmdzXV1dIGlzIGEgbGlzdAorLy8gb2YgYXJndW1lbnRz
IHRvIGJlIHBhc3NlZCB0byB0aGUgaXRoIHdhc20gZnVuY3Rpb24gYXMgd2VsbCBhcyB0aGUgZXhw
ZWN0ZWQgcmVzdWx0LiBXYXNtVmFsdWUgaXMgYW4gb2JqZWN0IHdpdGggInR5cGUiIGFuZCAidmFs
dWUiIHByb3BlcnRpZXMuCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvblRlc3RXYXNtTW9kdWxlRnVuY3Rpb25zKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKworICAgIGlmICghT3B0aW9uczo6dXNlV2ViQXNzZW1ibHkoKSkKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgidGVzdFdhc21Nb2R1
bGUgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGlmIHRoZSB1c2VXZWJBc3NlbWJseSBvcHRpb24gaXMg
c2V0IikpOworCisgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHNvdXJjZSA9IGpzQ2FzdDxKU0FycmF5
QnVmZmVyVmlldyo+KGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAgICB1aW50MzJfdCBmdW5jdGlvbkNv
dW50ID0gZXhlYy0+YXJndW1lbnQoMSkudG9VSW50MzIoZXhlYyk7CisKKyAgICBpZiAoZXhlYy0+
YXJndW1lbnRDb3VudCgpICE9IGZ1bmN0aW9uQ291bnQgKyAyKQorICAgICAgICBDUkFTSCgpOwor
CisgICAgV2FzbTo6UGxhbiBwbGFuKCZ2bSwgc3RhdGljX2Nhc3Q8dWludDhfdCo+KHNvdXJjZS0+
dmVjdG9yKCkpLCBzb3VyY2UtPmxlbmd0aCgpKTsKKyAgICBwbGFuLnJ1bigpOworICAgIGlmIChw
bGFuLmZhaWxlZCgpKQorICAgICAgICBDUkFTSCgpOworCisgICAgaWYgKHBsYW4uY29tcGlsZWRG
dW5jdGlvbkNvdW50KCkgIT0gZnVuY3Rpb25Db3VudCkKKyAgICAgICAgQ1JBU0goKTsKKworICAg
IGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBmdW5jdGlvbkNvdW50OyArK2kpIHsKKyAgICAgICAg
aWYgKCFwbGFuLmNvbXBpbGVkRnVuY3Rpb24oaSkpCisgICAgICAgICAgICBkYXRhTG9nTG4oImZh
aWxlZCB0byBjb21waWxlIGZ1bmN0aW9uIGF0IGluZGV4IiwgaSk7CisKKyAgICAgICAgSlNBcnJh
eSogdGVzdENhc2VzID0ganNDYXN0PEpTQXJyYXkqPihleGVjLT5hcmd1bWVudChpICsgMikpOwor
ICAgICAgICBmb3IgKHVuc2lnbmVkIHRlc3RJbmRleCA9IDA7IHRlc3RJbmRleCA8IHRlc3RDYXNl
cy0+bGVuZ3RoKCk7ICsrdGVzdEluZGV4KSB7CisgICAgICAgICAgICBKU0FycmF5KiB0ZXN0ID0g
anNDYXN0PEpTQXJyYXkqPih0ZXN0Q2FzZXMtPmdldEluZGV4UXVpY2tseSh0ZXN0SW5kZXgpKTsK
KyAgICAgICAgICAgIEpTT2JqZWN0KiByZXN1bHQgPSBqc0Nhc3Q8SlNPYmplY3QqPih0ZXN0LT5n
ZXRJbmRleFF1aWNrbHkoMCkpOworICAgICAgICAgICAgSlNBcnJheSogYXJndW1lbnRzID0ganND
YXN0PEpTQXJyYXkqPih0ZXN0LT5nZXRJbmRleFF1aWNrbHkoMSkpOworCisgICAgICAgICAgICBW
ZWN0b3I8SlNWYWx1ZT4gYm94ZWRBcmdzOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBhcmdJ
bmRleCA9IDA7IGFyZ0luZGV4IDwgYXJndW1lbnRzLT5sZW5ndGgoKTsgKythcmdJbmRleCkKKyAg
ICAgICAgICAgICAgICBib3hlZEFyZ3MuYXBwZW5kKGJveChleGVjLCB2bSwgYXJndW1lbnRzLT5n
ZXRJbmRleFF1aWNrbHkoYXJnSW5kZXgpKSk7CisKKyAgICAgICAgICAgIEpTVmFsdWUgY2FsbFJl
c3VsdCA9IGNhbGxXYXNtRnVuY3Rpb24oJnZtLCAqcGxhbi5jb21waWxlZEZ1bmN0aW9uKGkpLT5q
c0VudHJ5UG9pbnQsIGJveGVkQXJncyk7CisgICAgICAgICAgICBKU1ZhbHVlIGV4cGVjdGVkID0g
Ym94KGV4ZWMsIHZtLCByZXN1bHQpOworICAgICAgICAgICAgaWYgKGNhbGxSZXN1bHQgIT0gZXhw
ZWN0ZWQpIHsKKyAgICAgICAgICAgICAgICBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKF9fRklM
RV9fLCBfX0xJTkVfXywgV1RGX1BSRVRUWV9GVU5DVElPTiwgdG9DU3RyaW5nKCIgKGNhbGxSZXN1
bHQgPT0gIiwgUmF3UG9pbnRlcihiaXR3aXNlX2Nhc3Q8dm9pZCo+KGNhbGxSZXN1bHQpKSwgIiwg
ZXhwZWN0ZWQgPT0gIiwgUmF3UG9pbnRlcihiaXR3aXNlX2Nhc3Q8dm9pZCo+KGV4cGVjdGVkKSks
ICIpIikuZGF0YSgpKTsKKyAgICAgICAgICAgICAgICBDUkFTSCgpOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGVuY29kZWRKU1VuZGVmaW5lZCgpOworfQor
CisjZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VCTFkpCisKIC8vIFVzZSBTRUggZm9yIFJlbGVhc2Ug
YnVpbGRzIG9ubHkgdG8gZ2V0IHJpZCBvZiB0aGUgY3Jhc2ggcmVwb3J0IGRpYWxvZwogLy8gKGx1
Y2tpbHkgdGhlIHNhbWUgdGVzdHMgZmFpbCBpbiBSZWxlYXNlIGFuZCBEZWJ1ZyBidWlsZHMgc28g
ZmFyKS4gTmVlZCB0bwogLy8gYmUgaW4gYSBzZXBhcmF0ZSBtYWluIGZ1bmN0aW9uIGJlY2F1c2Ug
dGhlIGpzY21haW4gZnVuY3Rpb24gcmVxdWlyZXMgb2JqZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdFdhc20uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RX
YXNtLmNwcAppbmRleCBiNzU5NTYyNTdlNThjMTQ3MzQ5MjRiNjk0ZmQ5OTUyNWFlNjc5NDc5Li43
ODZhMjA4YWMwZjg2YWU0NGZjZDM0MGNiZDlkOTI2YWU1NmRlYjVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdFdhc20uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0V2FzbS5jcHAKQEAgLTI3OSw2ICsyNzksNyBAQCBpbmxpbmUgSlNWYWx1ZSBib3hkKGRv
dWJsZSB2YWx1ZSkKIAogc3RhdGljIHZvaWQgY2hlY2tQbGFuKFBsYW4mIHBsYW4sIHVuc2lnbmVk
IGV4cGVjdGVkTnVtYmVyT2ZGdW5jdGlvbnMpCiB7CisgICAgcGxhbi5ydW4oKTsKICAgICBpZiAo
cGxhbi5mYWlsZWQoKSkgewogICAgICAgICBkYXRhTG9nTG4oIk1vZHVsZSBmYWlsZWQgdG8gY29t
cGlsZSB3aXRoIGVycm9yOiAiLCBwbGFuLmVycm9yTWVzc2FnZSgpKTsKICAgICAgICAgQ1JBU0go
KTsKQEAgLTMyNyw3ICszMjgsNyBAQCBzdGF0aWMgdm9pZCBydW5XYXNtVGVzdHMoKQogICAgICAg
ICAgICAgMHgwZiwgMHgxNCwgMHgwMSwgMHgwZgogICAgICAgICB9OwogCi0gICAgICAgIFBsYW4g
cGxhbigqdm0sIHZlY3Rvcik7CisgICAgICAgIFBsYW4gcGxhbih2bSwgdmVjdG9yKTsKICAgICAg
ICAgY2hlY2tQbGFuKHBsYW4sIDEpOwogCiAgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNy
YXNoLgpAQCAtMzczLDcgKzM3NCw3IEBAIHN0YXRpYyB2b2lkIHJ1bldhc21UZXN0cygpCiAgICAg
ICAgICAgICAweDEwLCAweDBkLCAweDQwLCAweDA5LCAweDBmLCAweDE1LCAweDAxLCAweDE0LCAw
eDAxLCAweDEwLCAweDBlLCAweDQwLCAweDBmCiAgICAgICAgIH07CiAKLSAgICAgICAgUGxhbiBw
bGFuKCp2bSwgdmVjdG9yKTsKKyAgICAgICAgUGxhbiBwbGFuKHZtLCB2ZWN0b3IpOwogICAgICAg
ICBjaGVja1BsYW4ocGxhbiwgMSk7CiAKICAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jh
c2guCkBAIC00MTEsNyArNDEyLDcgQEAgc3RhdGljIHZvaWQgcnVuV2FzbVRlc3RzKCkKICAgICAg
ICAgICAgIDB4MGYKICAgICAgICAgfTsKIAotICAgICAgICBQbGFuIHBsYW4oKnZtLCB2ZWN0b3Ip
OworICAgICAgICBQbGFuIHBsYW4odm0sIHZlY3Rvcik7CiAgICAgICAgIGNoZWNrUGxhbihwbGFu
LCAxKTsKIAogICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KQEAgLTQ0NCw3ICs0
NDUsNyBAQCBzdGF0aWMgdm9pZCBydW5XYXNtVGVzdHMoKQogICAgICAgICAgICAgMHgxMCwgMHgw
MCwgMHg0ZCwgMHgwMywgMHgwMSwgMHgxMCwgMHgwMSwgMHgwNCwgMHgxMCwgMHgwMiwgMHgwNiwg
MHgwMSwgMHgwZiwgMHgwZiwgMHgwZgogICAgICAgICB9OwogCi0gICAgICAgIFBsYW4gcGxhbigq
dm0sIHZlY3Rvcik7CisgICAgICAgIFBsYW4gcGxhbih2bSwgdmVjdG9yKTsKICAgICAgICAgY2hl
Y2tQbGFuKHBsYW4sIDEpOwogCiAgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgpA
QCAtNDcxLDcgKzQ3Miw3IEBAIHN0YXRpYyB2b2lkIHJ1bldhc21UZXN0cygpCiAgICAgICAgICAg
ICAweDRkLCAweDAzLCAweDAxLCAweDEwLCAweDAxLCAweDA0LCAweDEwLCAweDAyLCAweDBmLCAw
eDBmCiAgICAgICAgIH07CiAKLSAgICAgICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9yKTsKKyAgICAg
ICAgUGxhbiBwbGFuKHZtLCB2ZWN0b3IpOwogICAgICAgICBjaGVja1BsYW4ocGxhbiwgMSk7CiAK
ICAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCkBAIC01MDksNyArNTEwLDcgQEAg
c3RhdGljIHZvaWQgcnVuV2FzbVRlc3RzKCkKICAgICAgICAgICAgIDB4MGYsIDB4MGYKICAgICAg
ICAgfTsKIAotICAgICAgICBQbGFuIHBsYW4oKnZtLCB2ZWN0b3IpOworICAgICAgICBQbGFuIHBs
YW4odm0sIHZlY3Rvcik7CiAgICAgICAgIGNoZWNrUGxhbihwbGFuLCAxKTsKIAogICAgICAgICAv
LyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KQEAgLTUzOSw3ICs1NDAsNyBAQCBzdGF0aWMgdm9p
ZCBydW5XYXNtVGVzdHMoKQogICAgICAgICAgICAgMHgxNiwgMHgwMCwgMHgwOSwgMHgwZgogICAg
ICAgICB9OwogCi0gICAgICAgIFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7CisgICAgICAgIFBsYW4g
cGxhbih2bSwgdmVjdG9yKTsKICAgICAgICAgY2hlY2tQbGFuKHBsYW4sIDIpOwogCiAgICAgICAg
IC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgpAQCAtNTY1LDcgKzU2Niw3IEBAIHN0YXRpYyB2
b2lkIHJ1bldhc21UZXN0cygpCiAgICAgICAgICAgICAweDE2LCAweDAwLCAweDA5LCAweDBmCiAg
ICAgICAgIH07CiAKLSAgICAgICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9yKTsKKyAgICAgICAgUGxh
biBwbGFuKHZtLCB2ZWN0b3IpOwogICAgICAgICBjaGVja1BsYW4ocGxhbiwgMik7CiAKICAgICAg
ICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCkBAIC01OTYsNyArNTk3LDcgQEAgc3RhdGlj
IHZvaWQgcnVuV2FzbVRlc3RzKCkKICAgICAgICAgICAgIDB4MTQsIDB4MDAsIDB4MTQsIDB4MDAs
IDB4MTQsIDB4MDAsIDB4MTYsIDB4MDAsIDB4MDksIDB4MGYKICAgICAgICAgfTsKIAotICAgICAg
ICBQbGFuIHBsYW4oKnZtLCB2ZWN0b3IpOworICAgICAgICBQbGFuIHBsYW4odm0sIHZlY3Rvcik7
CiAgICAgICAgIGNoZWNrUGxhbihwbGFuLCAyKTsKIAogICAgICAgICAvLyBUZXN0IHRoaXMgZG9l
c24ndCBjcmFzaC4KQEAgLTYyNyw3ICs2MjgsNyBAQCBzdGF0aWMgdm9pZCBydW5XYXNtVGVzdHMo
KQogICAgICAgICAgICAgMHg1YywgMHgxNiwgMHgwMCwgMHg1ZCwgMHgwOSwgMHgwZgogICAgICAg
ICB9OwogCi0gICAgICAgIFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7CisgICAgICAgIFBsYW4gcGxh
bih2bSwgdmVjdG9yKTsKICAgICAgICAgY2hlY2tQbGFuKHBsYW4sIDEpOwogCiAgICAgICAgIC8v
IFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgpAQCAtNjUzLDExICs2NTQsOCBAQCBzdGF0aWMgdm9p
ZCBydW5XYXNtVGVzdHMoKQogICAgICAgICAgICAgMHgwZiwgMHg4OCwgMHg4MCwgMHg4MCwgMHg4
MCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgwMCwgMHgxNCwgMHgwMSwgMHg1YiwgMHgwOSwgMHgwZgog
ICAgICAgICB9OwogCi0gICAgICAgIFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7Ci0gICAgICAgIGlm
IChwbGFuLmNvbXBpbGVkRnVuY3Rpb25Db3VudCgpICE9IDIgfHwgIXBsYW4uY29tcGlsZWRGdW5j
dGlvbigwKSB8fCAhcGxhbi5jb21waWxlZEZ1bmN0aW9uKDEpKSB7Ci0gICAgICAgICAgICBkYXRh
TG9nTG4oIk1vZHVsZSBmYWlsZWQgdG8gY29tcGlsZSBjb3JyZWN0bHkuIik7Ci0gICAgICAgICAg
ICBDUkFTSCgpOwotICAgICAgICB9CisgICAgICAgIFBsYW4gcGxhbih2bSwgdmVjdG9yKTsKKyAg
ICAgICAgY2hlY2tQbGFuKHBsYW4sIDIpOwogCiAgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0
IGNyYXNoLgogICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5jb21waWxlZEZ1bmN0
aW9uKDEpLT5qc0VudHJ5UG9pbnQsIHsgYm94KDApLCBib3goMCkgfSksIDApOwpAQCAtNjg0LDcg
KzY4Miw3IEBAIHN0YXRpYyB2b2lkIHJ1bldhc21UZXN0cygpCiAgICAgICAgICAgICAweDE2LCAw
eDAwLCAweDA5LCAweDBmCiAgICAgICAgIH07CiAKLSAgICAgICAgUGxhbiBwbGFuKCp2bSwgdmVj
dG9yKTsKKyAgICAgICAgUGxhbiBwbGFuKHZtLCB2ZWN0b3IpOwogICAgICAgICBjaGVja1BsYW4o
cGxhbiwgMik7CiAKICAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCkBAIC03MTMs
NyArNzExLDcgQEAgc3RhdGljIHZvaWQgcnVuV2FzbVRlc3RzKCkKICAgICAgICAgICAgIDB4MTQs
IDB4MDEsIDB4MTQsIDB4MDAsIDB4MzQsIDB4MDMsIDB4MDAsIDB4MTQsIDB4MDEsIDB4MmIsIDB4
MDMsIDB4MDAsIDB4MDksIDB4MGYKICAgICAgICAgfTsKIAotICAgICAgICBQbGFuIHBsYW4oKnZt
LCB2ZWN0b3IpOworICAgICAgICBQbGFuIHBsYW4odm0sIHZlY3Rvcik7CiAgICAgICAgIGNoZWNr
UGxhbihwbGFuLCAxKTsKIAogICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KQEAg
LTc0MCw3ICs3MzgsNyBAQCBzdGF0aWMgdm9pZCBydW5XYXNtVGVzdHMoKQogICAgICAgICAgICAg
MHgwMSwgMHgyYSwgMHgwMiwgMHgwMCwgMHgwOSwgMHgwZgogICAgICAgICB9OwogCi0gICAgICAg
IFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7CisgICAgICAgIFBsYW4gcGxhbih2bSwgdmVjdG9yKTsK
ICAgICAgICAgY2hlY2tQbGFuKHBsYW4sIDEpOwogCiAgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vz
bid0IGNyYXNoLgpAQCAtNzc3LDcgKzc3NSw3IEBAIHN0YXRpYyB2b2lkIHJ1bldhc21UZXN0cygp
CiAgICAgICAgICAgICAweDBmLCAweDA5LCAweDBmCiAgICAgICAgIH07CiAKLSAgICAgICAgUGxh
biBwbGFuKCp2bSwgdmVjdG9yKTsKKyAgICAgICAgUGxhbiBwbGFuKHZtLCB2ZWN0b3IpOwogICAg
ICAgICBjaGVja1BsYW4ocGxhbiwgMSk7CiAgICAgICAgIEFTU0VSVChwbGFuLm1lbW9yeSgpLT5z
aXplKCkpOwogCkBAIC04MjksNyArODI3LDcgQEAgc3RhdGljIHZvaWQgcnVuV2FzbVRlc3RzKCkK
ICAgICAgICAgICAgIDB4MmUsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDEsIDB4MTQsIDB4MDMsIDB4
NDAsIDB4MTUsIDB4MDMsIDB4MDYsIDB4MDAsIDB4MGYsIDB4MGYsIDB4MDksIDB4MGYKICAgICAg
ICAgfTsKIAotICAgICAgICBQbGFuIHBsYW4oKnZtLCB2ZWN0b3IpOworICAgICAgICBQbGFuIHBs
YW4odm0sIHZlY3Rvcik7CiAgICAgICAgIGNoZWNrUGxhbihwbGFuLCAxKTsKICAgICAgICAgQVNT
RVJUKHBsYW4ubWVtb3J5KCktPnNpemUoKSk7CiAKQEAgLTg3MCw3ICs4NjgsNyBAQCBzdGF0aWMg
dm9pZCBydW5XYXNtVGVzdHMoKQogICAgICAgICAgICAgMHgwMSwgMHgyMCwgMHgwMCwgMHgwMCwg
MHgwOSwgMHgwZgogICAgICAgICB9OwogCi0gICAgICAgIFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7
CisgICAgICAgIFBsYW4gcGxhbih2bSwgdmVjdG9yKTsKICAgICAgICAgY2hlY2tQbGFuKHBsYW4s
IDEpOwogICAgICAgICBBU1NFUlQocGxhbi5tZW1vcnkoKS0+c2l6ZSgpKTsKIApAQCAtODk4LDcg
Kzg5Niw3IEBAIHN0YXRpYyB2b2lkIHJ1bldhc21UZXN0cygpCiAgICAgICAgICAgICAweDIwLCAw
eDAwLCAweDAwLCAweDA5LCAweDBmCiAgICAgICAgIH07CiAKLSAgICAgICAgUGxhbiBwbGFuKCp2
bSwgdmVjdG9yKTsKKyAgICAgICAgUGxhbiBwbGFuKHZtLCB2ZWN0b3IpOwogICAgICAgICBjaGVj
a1BsYW4ocGxhbiwgMSk7CiAKICAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCkBA
IC05MjUsNyArOTIzLDcgQEAgc3RhdGljIHZvaWQgcnVuV2FzbVRlc3RzKCkKICAgICAgICAgICAg
IDB4MDEsIDB4MmIsIDB4MDMsIDB4MDAsIDB4MDksIDB4MGYKICAgICAgICAgfTsKIAotICAgICAg
ICBQbGFuIHBsYW4oKnZtLCB2ZWN0b3IpOworICAgICAgICBQbGFuIHBsYW4odm0sIHZlY3Rvcik7
CiAgICAgICAgIGNoZWNrUGxhbihwbGFuLCAxKTsKIAogICAgICAgICAvLyBUZXN0IHRoaXMgZG9l
c24ndCBjcmFzaC4KQEAgLTk1Myw3ICs5NTEsNyBAQCBzdGF0aWMgdm9pZCBydW5XYXNtVGVzdHMo
KQogICAgICAgICAgICAgMHgwMSwgMHgyYSwgMHgwMiwgMHgwMCwgMHgwOSwgMHgwZgogICAgICAg
ICB9OwogCi0gICAgICAgIFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7CisgICAgICAgIFBsYW4gcGxh
bih2bSwgdmVjdG9yKTsKICAgICAgICAgY2hlY2tQbGFuKHBsYW4sIDEpOwogCiAgICAgICAgIC8v
IFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgpAQCAtOTkwLDcgKzk4OCw3IEBAIHN0YXRpYyB2b2lk
IHJ1bldhc21UZXN0cygpCiAgICAgICAgICAgICAweDBmLCAweDA5LCAweDBmCiAgICAgICAgIH07
CiAKLSAgICAgICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9yKTsKKyAgICAgICAgUGxhbiBwbGFuKHZt
LCB2ZWN0b3IpOwogICAgICAgICBjaGVja1BsYW4ocGxhbiwgMSk7CiAgICAgICAgIEFTU0VSVChw
bGFuLm1lbW9yeSgpLT5zaXplKCkpOwogCkBAIC0xMDQyLDcgKzEwNDAsNyBAQCBzdGF0aWMgdm9p
ZCBydW5XYXNtVGVzdHMoKQogICAgICAgICAgICAgMHgyZSwgMHgwMCwgMHgwMCwgMHgxMCwgMHgw
MSwgMHgxNCwgMHgwMywgMHg0MCwgMHgxNSwgMHgwMywgMHgwNiwgMHgwMCwgMHgwZiwgMHgwZiwg
MHgwOSwgMHgwZgogICAgICAgICB9OwogCi0gICAgICAgIFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7
CisgICAgICAgIFBsYW4gcGxhbih2bSwgdmVjdG9yKTsKICAgICAgICAgY2hlY2tQbGFuKHBsYW4s
IDEpOwogICAgICAgICBBU1NFUlQocGxhbi5tZW1vcnkoKS0+c2l6ZSgpKTsKIApAQCAtMTA4Myw3
ICsxMDgxLDcgQEAgc3RhdGljIHZvaWQgcnVuV2FzbVRlc3RzKCkKICAgICAgICAgICAgIDB4MDEs
IDB4MjAsIDB4MDAsIDB4MDAsIDB4MDksIDB4MGYKICAgICAgICAgfTsKIAotICAgICAgICBQbGFu
IHBsYW4oKnZtLCB2ZWN0b3IpOworICAgICAgICBQbGFuIHBsYW4odm0sIHZlY3Rvcik7CiAgICAg
ICAgIGNoZWNrUGxhbihwbGFuLCAxKTsKICAgICAgICAgQVNTRVJUKHBsYW4ubWVtb3J5KCktPnNp
emUoKSk7CiAKQEAgLTExMTEsNyArMTEwOSw3IEBAIHN0YXRpYyB2b2lkIHJ1bldhc21UZXN0cygp
CiAgICAgICAgICAgICAweDIwLCAweDAwLCAweDAwLCAweDA5LCAweDBmCiAgICAgICAgIH07CiAK
LSAgICAgICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9yKTsKKyAgICAgICAgUGxhbiBwbGFuKHZtLCB2
ZWN0b3IpOwogICAgICAgICBjaGVja1BsYW4ocGxhbiwgMSk7CiAKICAgICAgICAgLy8gVGVzdCB0
aGlzIGRvZXNuJ3QgY3Jhc2guCkBAIC0xMTM4LDcgKzExMzYsNyBAQCBzdGF0aWMgdm9pZCBydW5X
YXNtVGVzdHMoKQogICAgICAgICAgICAgMHgwMywgMHgwMCwgMHgwNiwgMHgwMCwgMHgwNCwgMHgx
MCwgMHgwMSwgMHgwOSwgMHgwZiwgMHgxMCwgMHgwMCwgMHgwOSwgMHgwZgogICAgICAgICB9Owog
Ci0gICAgICAgIFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7CisgICAgICAgIFBsYW4gcGxhbih2bSwg
dmVjdG9yKTsKICAgICAgICAgY2hlY2tQbGFuKHBsYW4sIDEpOwogCiAgICAgICAgIC8vIFRlc3Qg
dGhpcyBkb2Vzbid0IGNyYXNoLgpAQCAtMTE3Niw3ICsxMTc0LDcgQEAgc3RhdGljIHZvaWQgcnVu
V2FzbVRlc3RzKCkKICAgICAgICAgICAgIDB4MTUsIDB4MDAsIDB4MDYsIDB4MDAsIDB4MGYsIDB4
MDAsIDB4MGYKICAgICAgICAgfTsKIAotICAgICAgICBQbGFuIHBsYW4oKnZtLCB2ZWN0b3IpOwor
ICAgICAgICBQbGFuIHBsYW4odm0sIHZlY3Rvcik7CiAgICAgICAgIGNoZWNrUGxhbihwbGFuLCAx
KTsKIAogICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KQEAgLTEyMDAsNyArMTE5
OCw3IEBAIHN0YXRpYyB2b2lkIHJ1bldhc21UZXN0cygpCiAgICAgICAgICAgICAweDhiLCAweDgw
LCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDg1LCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAw
eDAwLCAweDEwLCAweDA1LCAweDA5LCAweDBmCiAgICAgICAgIH07CiAKLSAgICAgICAgUGxhbiBw
bGFuKCp2bSwgdmVjdG9yKTsKKyAgICAgICAgUGxhbiBwbGFuKHZtLCB2ZWN0b3IpOwogICAgICAg
ICBjaGVja1BsYW4ocGxhbiwgMSk7CiAKICAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jh
c2guCkBAIC0xMjE4LDcgKzEyMTYsNyBAQCBzdGF0aWMgdm9pZCBydW5XYXNtVGVzdHMoKQogICAg
ICAgICAgICAgMHg0MCwgMHgwOSwgMHgwZgogICAgICAgICB9OwogCi0gICAgICAgIFBsYW4gcGxh
bigqdm0sIHZlY3Rvcik7CisgICAgICAgIFBsYW4gcGxhbih2bSwgdmVjdG9yKTsKICAgICAgICAg
Y2hlY2tQbGFuKHBsYW4sIDEpOwogCiAgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNo
LgpAQCAtMTIzNSw3ICsxMjMzLDcgQEAgc3RhdGljIHZvaWQgcnVuV2FzbVRlc3RzKCkKICAgICAg
ICAgICAgIDB4NDAsIDB4MTAsIDB4MDMsIDB4NDAsIDB4MDksIDB4MGYKICAgICAgICAgfTsKIAot
ICAgICAgICBQbGFuIHBsYW4oKnZtLCB2ZWN0b3IpOworICAgICAgICBQbGFuIHBsYW4odm0sIHZl
Y3Rvcik7CiAgICAgICAgIGNoZWNrUGxhbihwbGFuLCAxKTsKIAogICAgICAgICAvLyBUZXN0IHRo
aXMgZG9lc24ndCBjcmFzaC4KQEAgLTEyNTIsNyArMTI1MCw3IEBAIHN0YXRpYyB2b2lkIHJ1bldh
c21UZXN0cygpCiAgICAgICAgICAgICAweDEwLCAweDAzLCAweDQwLCAweDEwLCAweDAzLCAweDQw
LCAweDA5LCAweDBmLCAweDAwLCAweDBmCiAgICAgICAgIH07CiAKLSAgICAgICAgUGxhbiBwbGFu
KCp2bSwgdmVjdG9yKTsKKyAgICAgICAgUGxhbiBwbGFuKHZtLCB2ZWN0b3IpOwogICAgICAgICBj
aGVja1BsYW4ocGxhbiwgMSk7CiAKICAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2gu
CkBAIC0xMjY4LDcgKzEyNjYsNyBAQCBzdGF0aWMgdm9pZCBydW5XYXNtVGVzdHMoKQogICAgICAg
ICAgICAgMHgwMSwgMHg4OCwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgw
MCwgMHgxNCwgMHgwMSwgMHg0MCwgMHgwOSwgMHgwZgogICAgICAgICB9OwogCi0gICAgICAgIFBs
YW4gcGxhbigqdm0sIHZlY3Rvcik7CisgICAgICAgIFBsYW4gcGxhbih2bSwgdmVjdG9yKTsKICAg
ICAgICAgY2hlY2tQbGFuKHBsYW4sIDEpOwogCiAgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0
IGNyYXNoLgpAQCAtMTI5NCw3ICsxMjkyLDcgQEAgc3RhdGljIHZvaWQgcnVuV2FzbVRlc3RzKCkK
ICAgICAgICAgICAgIDB4MDEsIDB4MDksIDB4MGYKICAgICAgICAgfTsKIAotICAgICAgICBQbGFu
IHBsYW4oKnZtLCB2ZWN0b3IpOworICAgICAgICBQbGFuIHBsYW4odm0sIHZlY3Rvcik7CiAgICAg
ICAgIGNoZWNrUGxhbihwbGFuLCAxKTsKIAogICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBj
cmFzaC4KQEAgLTEzMjcsNyArMTMyNSw3IEBAIHN0YXRpYyB2b2lkIHJ1bldhc21UZXN0cygpCiAg
ICAgICAgICAgICAweDEwLCAweDAxLCAweDQxLCAweDE1LCAweDAwLCAweDA2LCAweDAxLCAweDBm
LCAweDBmLCAweDE0LCAweDAxLCAweDA5LCAweDBmCiAgICAgICAgIH07CiAKLSAgICAgICAgUGxh
biBwbGFuKCp2bSwgdmVjdG9yKTsKKyAgICAgICAgUGxhbiBwbGFuKHZtLCB2ZWN0b3IpOwogICAg
ICAgICBjaGVja1BsYW4ocGxhbiwgMSk7CiAKICAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3Qg
Y3Jhc2guCkBAIC0xMzY4LDcgKzEzNjYsNyBAQCBzdGF0aWMgdm9pZCBydW5XYXNtVGVzdHMoKQog
ICAgICAgICAgICAgMHgwMSwgMHg0MCwgMHgxNSwgMHgwNCwgMHgwNiwgMHgwMCwgMHgwZiwgMHgw
ZiwgMHgwZiwgMHgxNCwgMHgwMiwgMHgwOSwgMHgwZgogICAgICAgICB9OwogCi0gICAgICAgIFBs
YW4gcGxhbigqdm0sIHZlY3Rvcik7CisgICAgICAgIFBsYW4gcGxhbih2bSwgdmVjdG9yKTsKICAg
ICAgICAgY2hlY2tQbGFuKHBsYW4sIDEpOwogCiAgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0
IGNyYXNoLgpAQCAtMTQxOCw3ICsxNDE2LDcgQEAgc3RhdGljIHZvaWQgcnVuV2FzbVRlc3RzKCkK
ICAgICAgICAgICAgIDB4MDAsIDB4MGYsIDB4MDAsIDB4MGYKICAgICAgICAgfTsKIAotICAgICAg
ICBQbGFuIHBsYW4oKnZtLCB2ZWN0b3IpOworICAgICAgICBQbGFuIHBsYW4odm0sIHZlY3Rvcik7
CiAgICAgICAgIGNoZWNrUGxhbihwbGFuLCAxKTsKIAogICAgICAgICAvLyBUZXN0IHRoaXMgZG9l
c24ndCBjcmFzaC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21C
M0lSR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2Vu
ZXJhdG9yLmNwcAppbmRleCA1ODNmYjgyZDU3NGExMGJkYjQwZThhM2QwODViODI4NzI2ZDM2YjFj
Li45NDczYjM3OWVlODhmYjg4ZTUzNGZiOGIyNmRkZmQ4Mzg5NzkwNGZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCkBAIC03NjAsNiAr
NzYwLDggQEAgc3RkOjp1bmlxdWVfcHRyPEZ1bmN0aW9uQ29tcGlsYXRpb24+IHBhcnNlQW5kQ29t
cGlsZShWTSYgdm0sIGNvbnN0IHVpbnQ4X3QqIGZ1bmMKICAgICBwcm9jZWR1cmUucmVzZXRSZWFj
aGFiaWxpdHkoKTsKICAgICB2YWxpZGF0ZShwcm9jZWR1cmUsICJBZnRlciBwYXJzaW5nOlxuIik7
CiAKKyAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgZGF0YUxvZygiUHJlIFNTQTogIiwgcHJvY2Vk
dXJlKTsKICAgICBmaXhTU0EocHJvY2VkdXJlKTsKICAgICBpZiAodmVyYm9zZSkKICAgICAgICAg
ZGF0YUxvZygiUG9zdCBTU0E6ICIsIHByb2NlZHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21GdW5jdGlvblBhcnNlci5oCmluZGV4IDE4NTIyNGI0OTQ1YjM3NWRjOTFi
NzMxM2NiOWE2NjYzMmJlY2E2OTMuLmU3MTc2ZDg5ZDllMWVkOGQwZTY2NTk2YzU3ZjM0ODhkMGM5
MzQ4ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlv
blBhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvblBh
cnNlci5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgc3RhdGljIGNv
bnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogCi0gICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4g
cGFyc2VCbG9jaygpOworICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlQm9keSgpOwog
ICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlRXhwcmVzc2lvbihPcFR5cGUpOwogICAg
IGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlVW5yZWFjaGFibGVFeHByZXNzaW9uKE9wVHlw
ZSk7CiAgICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkUmV0dXJuKCk7CkBAIC0xMDksMTEg
KzEwOSwxMSBAQCBib29sIEZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZSgpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgcmV0dXJuIHBhcnNlQmxvY2soKTsKKyAg
ICByZXR1cm4gcGFyc2VCb2R5KCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbnRleHQ+Ci1i
b29sIEZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZUJsb2NrKCkKK2Jvb2wgRnVuY3Rpb25Q
YXJzZXI8Q29udGV4dD46OnBhcnNlQm9keSgpCiB7CiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAg
ICAgdWludDhfdCBvcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21Nb2R1bGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVs
ZVBhcnNlci5jcHAKaW5kZXggYjAzNWI0NTMyOTdhZDRiZGE2MmMyOTQ4OWM4YzNjOGFmZWQxYjAy
NC4uY2U0NmUwZDZkYmU0NzhlN2UzZTYwZGMyMTU2NDY1NGQwOWZjMmRmMyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZVBhcnNlci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZVBhcnNlci5jcHAKQEAgLTI5MSw2ICsy
OTEsMTMgQEAgYm9vbCBNb2R1bGVQYXJzZXI6OnBhcnNlVGFibGUoKQogCiBib29sIE1vZHVsZVBh
cnNlcjo6cGFyc2VNZW1vcnkoKQogeworICAgIHVpbnQ4X3QgY291bnQ7CisgICAgaWYgKCFwYXJz
ZVZhclVJbnQxKGNvdW50KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFjb3Vu
dCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKICAgICB1aW50OF90IGZsYWdzOwogICAgIGlmICgh
cGFyc2VWYXJVSW50MShmbGFncykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM0NSw3ICsz
NTIsNyBAQCBib29sIE1vZHVsZVBhcnNlcjo6cGFyc2VFeHBvcnQoKQogICAgICAgICAgICAgdWlu
dDMyX3QgZnVuY3Rpb25TaWduYXR1cmVJbmRleDsKICAgICAgICAgICAgIGlmICghcGFyc2VWYXJV
SW50MzIoZnVuY3Rpb25TaWduYXR1cmVJbmRleCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICAgICAgaWYgKGZ1bmN0aW9uU2lnbmF0dXJlSW5kZXggPiBtX21vZHVsZS0+
c2lnbmF0dXJlcy5zaXplKCkpCisgICAgICAgICAgICBpZiAoZnVuY3Rpb25TaWduYXR1cmVJbmRl
eCA+PSBtX21vZHVsZS0+c2lnbmF0dXJlcy5zaXplKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICAgICAgZS5mdW5jdGlvblNpZ25hdHVyZSA9ICZtX21vZHVsZS0+c2ln
bmF0dXJlc1tmdW5jdGlvblNpZ25hdHVyZUluZGV4XTsKICAgICAgICAgfSBicmVhazsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QbGFuLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21QbGFuLmNwcAppbmRleCAwMzRiYzYwYzY4NjVhZTA5Yjdi
NDhlN2U3MTFiZjMzZDQ5OTkzZWQ2Li45ZjhlMGZhNGE0NzA5MWUzOGJjYmU4YTBlZDM1NWUxNTE5
NGZjMDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGxhbi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBsYW4uY3BwCkBAIC00MSwx
NyArNDEsMjQgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKIAogc3RhdGljIGNv
bnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogICAgIAotUGxhbjo6UGxhbihWTSYgdm0sIFZlY3Rv
cjx1aW50OF90PiBzb3VyY2UpCitQbGFuOjpQbGFuKFZNKiB2bSwgVmVjdG9yPHVpbnQ4X3Q+IHNv
dXJjZSkKICAgICA6IFBsYW4odm0sIHNvdXJjZS5kYXRhKCksIHNvdXJjZS5zaXplKCkpCiB7CiB9
CiAKLVBsYW46OlBsYW4oVk0mIHZtLCBjb25zdCB1aW50OF90KiBzb3VyY2UsIHNpemVfdCBzb3Vy
Y2VMZW5ndGgpCitQbGFuOjpQbGFuKFZNKiB2bSwgY29uc3QgdWludDhfdCogc291cmNlLCBzaXpl
X3Qgc291cmNlTGVuZ3RoKQorICAgIDogbV92bSh2bSkKKyAgICAsIG1fc291cmNlKHNvdXJjZSkK
KyAgICAsIG1fc291cmNlTGVuZ3RoKHNvdXJjZUxlbmd0aCkKK3sKK30KKwordm9pZCBQbGFuOjpy
dW4oKQogewogICAgIGlmICh2ZXJib3NlKQogICAgICAgICBkYXRhTG9nTG4oIlN0YXJ0aW5nIHBs
YW4uIik7CiAgICAgewotICAgICAgICBNb2R1bGVQYXJzZXIgbW9kdWxlUGFyc2VyKHNvdXJjZSwg
c291cmNlTGVuZ3RoKTsKKyAgICAgICAgTW9kdWxlUGFyc2VyIG1vZHVsZVBhcnNlcihtX3NvdXJj
ZSwgbV9zb3VyY2VMZW5ndGgpOwogICAgICAgICBpZiAoIW1vZHVsZVBhcnNlci5wYXJzZSgpKSB7
CiAgICAgICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nTG4oIlBh
cnNpbmcgbW9kdWxlIGZhaWxlZDogIiwgbW9kdWxlUGFyc2VyLmVycm9yTWVzc2FnZSgpKTsKQEAg
LTc1LDE3ICs4MiwyMiBAQCBQbGFuOjpQbGFuKFZNJiB2bSwgY29uc3QgdWludDhfdCogc291cmNl
LCBzaXplX3Qgc291cmNlTGVuZ3RoKQogICAgIGZvciAoY29uc3QgRnVuY3Rpb25JbmZvcm1hdGlv
biYgaW5mbyA6IG1fbW9kdWxlSW5mb3JtYXRpb24tPmZ1bmN0aW9ucykgewogICAgICAgICBpZiAo
dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2dMbigiUHJvY2Vzc2luZyBmdW5jdGlvbiBzdGFy
dGluZyBhdDogIiwgaW5mby5zdGFydCwgIiBhbmQgZW5kaW5nIGF0OiAiLCBpbmZvLmVuZCk7Ci0g
ICAgICAgIGNvbnN0IHVpbnQ4X3QqIGZ1bmN0aW9uU3RhcnQgPSBzb3VyY2UgKyBpbmZvLnN0YXJ0
OworICAgICAgICBjb25zdCB1aW50OF90KiBmdW5jdGlvblN0YXJ0ID0gbV9zb3VyY2UgKyBpbmZv
LnN0YXJ0OwogICAgICAgICBzaXplX3QgZnVuY3Rpb25MZW5ndGggPSBpbmZvLmVuZCAtIGluZm8u
c3RhcnQ7Ci0gICAgICAgIEFTU0VSVChmdW5jdGlvbkxlbmd0aCA8PSBzb3VyY2VMZW5ndGgpOwor
ICAgICAgICBBU1NFUlQoZnVuY3Rpb25MZW5ndGggPD0gbV9zb3VyY2VMZW5ndGgpOwogCiAgICAg
ICAgIFN0cmluZyBlcnJvciA9IHZhbGlkYXRlRnVuY3Rpb24oZnVuY3Rpb25TdGFydCwgZnVuY3Rp
b25MZW5ndGgsIGluZm8uc2lnbmF0dXJlLCBtX21vZHVsZUluZm9ybWF0aW9uLT5mdW5jdGlvbnMp
OwogICAgICAgICBpZiAoIWVycm9yLmlzTnVsbCgpKSB7CisgICAgICAgICAgICBpZiAodmVyYm9z
ZSkgeworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmdW5jdGlvbkxl
bmd0aDsgKytpKQorICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKFJhd1BvaW50ZXIocmVpbnRl
cnByZXRfY2FzdDx2b2lkKj4oZnVuY3Rpb25TdGFydFtpXSkpLCAiLCAiKTsKKyAgICAgICAgICAg
ICAgICBkYXRhTG9nTG4oKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIG1fZXJyb3JNZXNz
YWdlID0gZXJyb3I7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBt
X2NvbXBpbGVkRnVuY3Rpb25zLnVuY2hlY2tlZEFwcGVuZChwYXJzZUFuZENvbXBpbGUodm0sIGZ1
bmN0aW9uU3RhcnQsIGZ1bmN0aW9uTGVuZ3RoLCBtX21vZHVsZUluZm9ybWF0aW9uLT5tZW1vcnku
Z2V0KCksIGluZm8uc2lnbmF0dXJlLCBtX21vZHVsZUluZm9ybWF0aW9uLT5mdW5jdGlvbnMpKTsK
KyAgICAgICAgbV9jb21waWxlZEZ1bmN0aW9ucy51bmNoZWNrZWRBcHBlbmQocGFyc2VBbmRDb21w
aWxlKCptX3ZtLCBmdW5jdGlvblN0YXJ0LCBmdW5jdGlvbkxlbmd0aCwgbV9tb2R1bGVJbmZvcm1h
dGlvbi0+bWVtb3J5LmdldCgpLCBpbmZvLnNpZ25hdHVyZSwgbV9tb2R1bGVJbmZvcm1hdGlvbi0+
ZnVuY3Rpb25zKSk7CiAgICAgfQogCiAgICAgLy8gUGF0Y2ggdGhlIGNhbGwgc2l0ZXMgZm9yIGVh
Y2ggZnVuY3Rpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
UGxhbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBsYW4uaAppbmRleCBkN2Mw
M2FiYjk0NjEyODUwMTEzZWMzMWZjNmEwMmRmZDk4ZGM2OTUwLi5jNWRlMTk5MjFlMGUzY2Y2ZDJl
YTA0YjdmMmZlYmY2ODZhMjBmZWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtUGxhbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QbGFu
LmgKQEAgLTM4LDEwICszOCwxMiBAQCBjbGFzcyBNZW1vcnk7CiAKIGNsYXNzIFBsYW4gewogcHVi
bGljOgotICAgIEpTX0VYUE9SVF9QUklWQVRFIFBsYW4oVk0mLCBWZWN0b3I8dWludDhfdD4pOwot
ICAgIEpTX0VYUE9SVF9QUklWQVRFIFBsYW4oVk0mLCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsK
KyAgICBKU19FWFBPUlRfUFJJVkFURSBQbGFuKFZNKiwgVmVjdG9yPHVpbnQ4X3Q+KTsKKyAgICBK
U19FWFBPUlRfUFJJVkFURSBQbGFuKFZNKiwgY29uc3QgdWludDhfdCosIHNpemVfdCk7CiAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgflBsYW4oKTsKIAorICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQg
cnVuKCk7CisKICAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBmYWlsZWQoKSBjb25zdCB7IHJl
dHVybiBtX2ZhaWxlZDsgfQogICAgIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKCkgY29uc3QK
ICAgICB7CkBAIC03OSw2ICs4MSw5IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPE1v
ZHVsZUluZm9ybWF0aW9uPiBtX21vZHVsZUluZm9ybWF0aW9uOwogICAgIENvbXBpbGVkRnVuY3Rp
b25zIG1fY29tcGlsZWRGdW5jdGlvbnM7CiAKKyAgICBWTSogbV92bTsKKyAgICBjb25zdCB1aW50
OF90KiBtX3NvdXJjZTsKKyAgICBjb25zdCBzaXplX3QgbV9zb3VyY2VMZW5ndGg7CiAgICAgYm9v
bCBtX2ZhaWxlZCB7IHRydWUgfTsKICAgICBTdHJpbmcgbV9lcnJvck1lc3NhZ2U7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVD
b25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJs
eU1vZHVsZUNvbnN0cnVjdG9yLmNwcAppbmRleCBiYjY4NGUxZTI0MzJjMzAyZDFhYTNlNjM5YThm
YzAxNjIwOTc3NzlhLi5mMDNhMGE4YmIxMWJkY2I3ZDcwN2ViZGU5YTFiNjNlMmRjMzdmNWU4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVs
ZUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJB
c3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yLmNwcApAQCAtNjgsOCArNjgsOSBAQCBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5TW9kdWxlKEV4
ZWNTdGF0ZSogc3RhdAogICAgIHNpemVfdCBieXRlU2l6ZSA9IGFycmF5QnVmZmVyVmlldyA/IGFy
cmF5QnVmZmVyVmlldy0+bGVuZ3RoKCkgOiBhcnJheUJ1ZmZlci0+aW1wbCgpLT5ieXRlTGVuZ3Ro
KCk7CiAgICAgY29uc3QgYXV0byogYmFzZSA9IGFycmF5QnVmZmVyVmlldyA/IHN0YXRpY19jYXN0
PHVpbnQ4X3QqPihhcnJheUJ1ZmZlclZpZXctPnZlY3RvcigpKSA6IHN0YXRpY19jYXN0PHVpbnQ4
X3QqPihhcnJheUJ1ZmZlci0+aW1wbCgpLT5kYXRhKCkpOwogCi0gICAgV2FzbTo6UGxhbiBwbGFu
KHZtLCBiYXNlICsgYnl0ZU9mZnNldCwgYnl0ZVNpemUpOworICAgIFdhc206OlBsYW4gcGxhbigm
dm0sIGJhc2UgKyBieXRlT2Zmc2V0LCBieXRlU2l6ZSk7CiAgICAgLy8gT24gZmFpbHVyZSwgYSBu
ZXcgV2ViQXNzZW1ibHkuQ29tcGlsZUVycm9yIGlzIHRocm93bi4KKyAgICBwbGFuLnJ1bigpOwog
ICAgIGlmIChwbGFuLmZhaWxlZCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
cm93RXhjZXB0aW9uKHN0YXRlLCBzY29wZSwgY3JlYXRlV2ViQXNzZW1ibHlDb21waWxlRXJyb3Io
c3RhdGUsIHBsYW4uZXJyb3JNZXNzYWdlKCkpKSk7CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hh
bmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNzdhMWNjMzdhN2MyZmI2Mjc1N2VmNDBl
MmYyZDRmMzk3OWIyMWU5MC4uYzZkZTVhZjBlODQxOWEyNTUxNzMzNDhhNTkwYzkwMzc5OTEwMjYx
ZCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNDUgQEAKKzIwMTYtMTEtMTEgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxl
ckBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBXYXNtIHRlc3RzIHRvIEpTCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ2MTEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIHRyYW5zbGF0
ZXMgbW9zdCBvZiB0aGUgdGVzdHMgZnJvbSB0ZXN0V2FzbS5jcHAgdG8gdGhlIEpTIHRlc3Rpbmcg
YXBpLiBNb3N0IG9mIHRoZQorICAgICAgICBvbW1pdGVkIHRlc3RzIHdlcmUgZWFybGllc3QgdGVz
dHMsIHdoaWNoIHRlc3RlZCB0cml2aWFsIHRoaW5ncywgbGlrZSBhZGRpbmcgdHdvCisgICAgICAg
IGNvbnN0YW50cy4gU29tZSB0ZXN0cyBhcmUgb21taXRlZCBmb3Igb3RoZXIgcmVhc29ucywgaG93
ZXZlci4gVGhlc2UgYXJlOgorCisgICAgICAgIDEpIFRlc3RzIHVzaW5nIEk2NCBzaW5jZSB0aGUg
dGVzdGluZyBhcGkgZG9lcyBub3QgeWV0IGtub3cgaG93IHRvIGhhbmRsZSA2NC1iaXQgbnVtYmVy
cy4gIDIpCisgICAgICAgIFRlc3RzIHRoYXQgd291bGQgdmFsaWRhdGUgdGhlIG1lbW9yeSBvZiB0
aGUgbW9kdWxlIG9uY2Ugd2FzbSB3YXMgZG9uZSB3aXRoIGl0IHNpbmNlIHRoYXQncworICAgICAg
ICBub3QgcmVhbGx5IHBvc3NpYmxlIGluIEpTLgorCisgICAgICAgIEluIG9yZGVyIHRvIG1ha2Ug
c3VjaCBhIHRyYW5zbGF0aW9uIGVhc2llciB0aGlzIHBhdGNoIGFsc28gYWRkcyBzb21lIGZlYXR1
cmVzIHRvIHRoZSBKUworICAgICAgICB0ZXN0aW5nIGFwaToKKworICAgICAgICAxKSBCbG9ja3Mg
Y2FuIG5vdyBiZSBkb25lIGxleGljYWxseSBieSBhZGRpbmcgYSBsYW1iZGEgYXMgdGhlIGxhc3Qg
YXJndW1lbnQgb2YgdGhlIGJsb2NrCisgICAgICAgIG9wY29kZS4gRm9yIGV4YW1wbGUgb25lIGNh
biBkbzoKKyAgICAgICAgICAgIC4uLgorICAgICAgICAgICAgLkJsb2NrKCJpMzIiLCBiID0+IGIu
STMyQ29uc3QoMSkgKQorCisgICAgICAgIGFuZCB0aGUgbmVzdGVkIGxhbWJkYSB3aWxsIGF1dG9t
YXRpY2FsbHkgaGF2ZSBhbiBlbmQgYXR0YWNoZWQuCisKKyAgICAgICAgMikgVGhlIEpTIHRlc3Rp
bmcgYXBpIGNhbiBub3cgaGFuZGxlIGlubGluZSBzaWduYXR1cmUgdHlwZXMuCisKKyAgICAgICAg
MykgUmVsb2NhdGUgc29tZSBjb2RlIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGZvbGxvdyBhbmQgcHJl
dmVudCA0NCBzcGFjZSBpbmRlbnRhdGlvbi4KKworICAgICAgICA0KSBSZW5hbWUgdmFydWludC92
YXJpbnQgdG8gdmFydWludDMyL3ZhcmludDMyLCB0aGlzIGxldHMgdGhlbSBiZSBkaXJlY3RseSBj
YWxsZWQgZnJvbSB0aGUKKyAgICAgICAgd2FzbS5qc29uIHdpdGhvdXQgYmVpbmcgcmVtYXBwZWQu
CisKKyAgICAgICAgNSkgQWRkIHN1cHBvcnQgZm9yIE1lbW9yeSBhbmQgRnVuY3Rpb24gc2VjdGlv
bnMgdG8gdGhlIEJ1aWxkZXIuCisKKyAgICAgICAgNikgQWRkIHN1cHBvcnQgZm9yIGxvY2FsIHZh
cmlhYmxlcy4KKworICAgICAgICBPbiB0aGUgSlNDIHNpZGUsIHdlIG5lZWRlZCB0byBleHBvc2Ug
YSBuZXcgZnVuY3Rpb24gdG8gdmFsaWRhdGUgdGhlIGNvbXBpbGVkIHdhc20gY29kZQorICAgICAg
ICBiZWhhdmVzIHRoZSB3YXkgd2UgZXhwZWN0LiBBdCBsZWFzdCB1bnRpbCB0aGUgSlMgV2FzbSBB
UEkgaXMgZmluaXNoZWQuIFRoZSBuZXcgdmFsaWRhdGlvbgorICAgICAgICBmdW5jdGlvbiwgdGVz
dFdhc21Nb2R1bGVGdW5jdGlvbnMsIHRha2VzIGFuIGFycmF5IGJ1ZmZlciBjb250YWluaW5nIHRo
ZSB3YXNtIGJpbmFyeSwgdGhlCisgICAgICAgIG51bWJlciBvZiBmdW5jdGlvbnMgaW4gdGhlIGJs
b2IgYW5kIHRlc3RzIGZvciBlYWNoIG9mIHRob3NlIGZ1bmN0aW9ucy4KKworICAgICAgICAqIHdh
c20vQnVpbGRlci5qczoKKyAgICAgICAgKGNvbnN0Ll9tYXliZVJlZ2lzdGVyVHlwZSk6CisgICAg
ICAgIChjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChzd2l0Y2gudHlwZW9mKTogRGVsZXRlZC4K
KyAgICAgICAgKiB3YXNtL0J1aWxkZXJfV2ViQXNzZW1ibHlCaW5hcnkuanM6CisgICAgICAgIChj
b25zdC5lbWl0dGVycy5UeXBlKToKKyAgICAgICAgKGNvbnN0LmVtaXR0ZXJzLkltcG9ydCk6Cisg
ICAgICAgIChjb25zdC5lbWl0dGVycy5GdW5jdGlvbik6CisgICAgICAgIChjb25zdC5lbWl0dGVy
cy5NZW1vcnkpOgorICAgICAgICAoY29uc3QuZW1pdHRlcnMuQ29kZSk6CisgICAgICAgIChleHBv
cnQuY29uc3QuQmluYXJ5KToKKyAgICAgICAgKiB3YXNtL0xvd0xldmVsQmluYXJ5LmpzOgorICAg
ICAgICAoZXhwb3J0LmRlZmF1bHQuTG93TGV2ZWxCaW5hcnkucHJvdG90eXBlLmdldCByZXR1cm4p
OgorICAgICAgICAoZXhwb3J0LmRlZmF1bHQuTG93TGV2ZWxCaW5hcnkucHJvdG90eXBlLnZhcnVp
bnQzMik6CisgICAgICAgIChleHBvcnQuZGVmYXVsdC5Mb3dMZXZlbEJpbmFyeS5wcm90b3R5cGUu
dmFyaW50MzIpOgorICAgICAgICAoZXhwb3J0LmRlZmF1bHQuTG93TGV2ZWxCaW5hcnkucHJvdG90
eXBlLnZhcnVpbnQxKToKKyAgICAgICAgKGV4cG9ydC5kZWZhdWx0Lkxvd0xldmVsQmluYXJ5LnBy
b3RvdHlwZS52YXJpbnQ3KToKKyAgICAgICAgKGV4cG9ydC5kZWZhdWx0Lkxvd0xldmVsQmluYXJ5
LnByb3RvdHlwZS52YXJ1aW50Nyk6CisgICAgICAgIChleHBvcnQuZGVmYXVsdC5Mb3dMZXZlbEJp
bmFyeS5wcm90b3R5cGUuaW5saW5lX3NpZ25hdHVyZV90eXBlKToKKyAgICAgICAgKGV4cG9ydC5k
ZWZhdWx0Lkxvd0xldmVsQmluYXJ5LnByb3RvdHlwZS5zdHJpbmcpOgorICAgICAgICAoZXhwb3J0
LmRlZmF1bHQuTG93TGV2ZWxCaW5hcnkucHJvdG90eXBlLmdldFZhcnVpbnQzMik6CisgICAgICAg
IChleHBvcnQuZGVmYXVsdC5Mb3dMZXZlbEJpbmFyeS5wcm90b3R5cGUuZ2V0VmFyaW50MzIpOgor
ICAgICAgICAoZXhwb3J0LmRlZmF1bHQuTG93TGV2ZWxCaW5hcnkucHJvdG90eXBlLmdldFZhcnVp
bnQ3KToKKyAgICAgICAgKGV4cG9ydC5kZWZhdWx0Lkxvd0xldmVsQmluYXJ5LnByb3RvdHlwZS5n
ZXRTdHJpbmcpOgorICAgICAgICAoZXhwb3J0LmRlZmF1bHQuTG93TGV2ZWxCaW5hcnkpOgorICAg
ICAgICAoZXhwb3J0LmRlZmF1bHQuTG93TGV2ZWxCaW5hcnkucHJvdG90eXBlLnZhcnVpbnQpOiBE
ZWxldGVkLgorICAgICAgICAoZXhwb3J0LmRlZmF1bHQuTG93TGV2ZWxCaW5hcnkucHJvdG90eXBl
LnZhcmludCk6IERlbGV0ZWQuCisgICAgICAgIChleHBvcnQuZGVmYXVsdC5Mb3dMZXZlbEJpbmFy
eS5wcm90b3R5cGUuZ2V0VmFydWludCk6IERlbGV0ZWQuCisgICAgICAgIChleHBvcnQuZGVmYXVs
dC5Mb3dMZXZlbEJpbmFyeS5wcm90b3R5cGUuZ2V0VmFyaW50KTogRGVsZXRlZC4KKyAgICAgICAg
KiB3YXNtL2pzLWFwaS90ZXN0X29sZF90ZXN0cy5qczogQWRkZWQuCisgICAgICAgIChyZXQ1KToK
KyAgICAgICAgKGJyVGFibGVXaXRoTG9vcCk6CisgICAgICAgIChiclRhYmxlTWFueVZhbHVlcyk6
CisgICAgICAgIChydW4uYnJUYWJsZU1hbnlWYWx1ZXMuYnJUYWJsZUFzSWYpOgorICAgICAgICAo
aWZUaGVuRmFsbHRocm91Z2gpOgorICAgICAgICAoaWZUaGVuRWxzZUZhbGx0aHJvdWdoKToKKyAg
ICAgICAgKGR1bWJMZXNzVGhhbkZhbGx0aHJvdWdoKToKKyAgICAgICAgKHJ1bi5kdW1iTGVzc1Ro
YW5GYWxsdGhyb3VnaC5mbG9hdFN1Yik6CisgICAgICAgIChydW4uZmxvYXRTdWIuYWRkMTIpOgor
ICAgICAgICAocnVuLmFkZDEyLmZhY3RvcmlhbCk6CisgICAgICAgIChpMzJsb2FkKToKKyAgICAg
ICAgKHJ1bi5pMzJsb2FkLmkzMmxvYWQ4cyk6CisgICAgICAgIChydW4uaTMybG9hZDhzLmR1bWJF
cUlmVGhlbkVsc2UpOgorICAgICAgICAocnVuLmR1bWJFcUlmVGhlbkVsc2UuZHVtYkVxSWZUaGVu
RWxzZSk6CisgICAgICAgIChydW4uZHVtYkVxSWZUaGVuRWxzZS5kdW1iTGVzc1RoYW5JZlRoZW5F
bHNlKToKKyAgICAgICAgKHJ1bi5kdW1iTGVzc1RoYW5JZlRoZW5FbHNlLmxvb3BTdW0pOgorICAg
ICAgICAocnVuLmxvb3BTdW0ubG9vcE11bHQpOgorICAgICAgICAoYnJJZkxvb3BMZXNzVGhhbik6
CisgICAgICAgIChydW4uYnJJZkxvb3BMZXNzVGhhbi5ydW4pOgorICAgICAgICAqIHdhc20vc2Vs
Zi10ZXN0L3Rlc3RfTG93TGV2ZWxCaW5hcnlfdmFyaW50MzIuanM6IFJlbmFtZWQgZnJvbSBKU1Rl
c3RzL3dhc20vc2VsZi10ZXN0L3Rlc3RfTG93TGV2ZWxCaW5hcnlfdmFyaW50LmpzLgorICAgICAg
ICAqIHdhc20vc2VsZi10ZXN0L3Rlc3RfTG93TGV2ZWxCaW5hcnlfdmFydWludDMyLmpzOiBSZW5h
bWVkIGZyb20gSlNUZXN0cy93YXNtL3NlbGYtdGVzdC90ZXN0X0xvd0xldmVsQmluYXJ5X3ZhcnVp
bnQuanMuCisKKyAgICAgICAgKiB3YXNtL0J1aWxkZXIuanM6CisgICAgICAgIChjb25zdC5fbWF5
YmVSZWdpc3RlclR5cGUpOgorICAgICAgICAoY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoc3dp
dGNoLnR5cGVvZik6IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9CdWlsZGVyX1dlYkFzc2VtYmx5
QmluYXJ5LmpzOgorICAgICAgICAoY29uc3QuZW1pdHRlcnMuVHlwZSk6CisgICAgICAgIChjb25z
dC5lbWl0dGVycy5JbXBvcnQpOgorICAgICAgICAoY29uc3QuZW1pdHRlcnMuRnVuY3Rpb24pOgor
ICAgICAgICAoY29uc3QuZW1pdHRlcnMuTWVtb3J5KToKKyAgICAgICAgKGNvbnN0LmVtaXR0ZXJz
LkNvZGUpOgorICAgICAgICAoZXhwb3J0LmNvbnN0LkJpbmFyeSk6CisgICAgICAgICogd2FzbS9M
b3dMZXZlbEJpbmFyeS5qczoKKyAgICAgICAgKGV4cG9ydC5kZWZhdWx0Lkxvd0xldmVsQmluYXJ5
LnByb3RvdHlwZS5nZXQgcmV0dXJuKToKKyAgICAgICAgKGV4cG9ydC5kZWZhdWx0Lkxvd0xldmVs
QmluYXJ5LnByb3RvdHlwZS52YXJ1aW50MzIpOgorICAgICAgICAoZXhwb3J0LmRlZmF1bHQuTG93
TGV2ZWxCaW5hcnkucHJvdG90eXBlLnZhcmludDMyKToKKyAgICAgICAgKGV4cG9ydC5kZWZhdWx0
Lkxvd0xldmVsQmluYXJ5LnByb3RvdHlwZS52YXJ1aW50MSk6CisgICAgICAgIChleHBvcnQuZGVm
YXVsdC5Mb3dMZXZlbEJpbmFyeS5wcm90b3R5cGUudmFyaW50Nyk6CisgICAgICAgIChleHBvcnQu
ZGVmYXVsdC5Mb3dMZXZlbEJpbmFyeS5wcm90b3R5cGUudmFydWludDcpOgorICAgICAgICAoZXhw
b3J0LmRlZmF1bHQuTG93TGV2ZWxCaW5hcnkucHJvdG90eXBlLmlubGluZV9zaWduYXR1cmVfdHlw
ZSk6CisgICAgICAgIChleHBvcnQuZGVmYXVsdC5Mb3dMZXZlbEJpbmFyeS5wcm90b3R5cGUuc3Ry
aW5nKToKKyAgICAgICAgKGV4cG9ydC5kZWZhdWx0Lkxvd0xldmVsQmluYXJ5LnByb3RvdHlwZS5n
ZXRWYXJ1aW50MzIpOgorICAgICAgICAoZXhwb3J0LmRlZmF1bHQuTG93TGV2ZWxCaW5hcnkucHJv
dG90eXBlLmdldFZhcmludDMyKToKKyAgICAgICAgKGV4cG9ydC5kZWZhdWx0Lkxvd0xldmVsQmlu
YXJ5LnByb3RvdHlwZS5nZXRWYXJ1aW50Nyk6CisgICAgICAgIChleHBvcnQuZGVmYXVsdC5Mb3dM
ZXZlbEJpbmFyeS5wcm90b3R5cGUuZ2V0U3RyaW5nKToKKyAgICAgICAgKGV4cG9ydC5kZWZhdWx0
Lkxvd0xldmVsQmluYXJ5KToKKyAgICAgICAgKGV4cG9ydC5kZWZhdWx0Lkxvd0xldmVsQmluYXJ5
LnByb3RvdHlwZS52YXJ1aW50KTogRGVsZXRlZC4KKyAgICAgICAgKGV4cG9ydC5kZWZhdWx0Lkxv
d0xldmVsQmluYXJ5LnByb3RvdHlwZS52YXJpbnQpOiBEZWxldGVkLgorICAgICAgICAoZXhwb3J0
LmRlZmF1bHQuTG93TGV2ZWxCaW5hcnkucHJvdG90eXBlLmdldFZhcnVpbnQpOiBEZWxldGVkLgor
ICAgICAgICAoZXhwb3J0LmRlZmF1bHQuTG93TGV2ZWxCaW5hcnkucHJvdG90eXBlLmdldFZhcmlu
dCk6IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9qcy1hcGkvZnVuY3Rpb24tdGVzdHMvYWRkLTEy
LmpzOiBBZGRlZC4KKyAgICAgICAgKiB3YXNtL2pzLWFwaS9mdW5jdGlvbi10ZXN0cy9ici1pZi1s
b29wLWxlc3MtdGhhbi5qczogQWRkZWQuCisgICAgICAgICogd2FzbS9qcy1hcGkvZnVuY3Rpb24t
dGVzdHMvYnJUYWJsZUFzSWYuanM6IEFkZGVkLgorICAgICAgICAqIHdhc20vanMtYXBpL2Z1bmN0
aW9uLXRlc3RzL2JyVGFibGVNYW55VmFsdWVzLmpzOiBBZGRlZC4KKyAgICAgICAgKiB3YXNtL2pz
LWFwaS9mdW5jdGlvbi10ZXN0cy9iclRhYmxlV2l0aExvb3AuanM6IEFkZGVkLgorICAgICAgICAq
IHdhc20vanMtYXBpL2Z1bmN0aW9uLXRlc3RzL2R1bWItZXEtaWYtdGhlbi1lbHNlLmpzOiBBZGRl
ZC4KKyAgICAgICAgKiB3YXNtL2pzLWFwaS9mdW5jdGlvbi10ZXN0cy9kdW1iLWxlc3MtdGhhbi1m
YWxsdGhyb3VnaC5qczogQWRkZWQuCisgICAgICAgICogd2FzbS9qcy1hcGkvZnVuY3Rpb24tdGVz
dHMvZHVtYi1sZXNzLXRoYW4taXRlLmpzOiBBZGRlZC4KKyAgICAgICAgKiB3YXNtL2pzLWFwaS9m
dW5jdGlvbi10ZXN0cy9mYWN0b3JpYWwuanM6IEFkZGVkLgorICAgICAgICAqIHdhc20vanMtYXBp
L2Z1bmN0aW9uLXRlc3RzL2Zsb2F0LXN1Yi5qczogQWRkZWQuCisgICAgICAgICogd2FzbS9qcy1h
cGkvZnVuY3Rpb24tdGVzdHMvaTMyLWxvYWQuanM6IEFkZGVkLgorICAgICAgICAqIHdhc20vanMt
YXBpL2Z1bmN0aW9uLXRlc3RzL2kzMi1sb2FkOC1zLmpzOiBBZGRlZC4KKyAgICAgICAgKiB3YXNt
L2pzLWFwaS9mdW5jdGlvbi10ZXN0cy9pZi10aGVuLWVsc2UtZmFsbHRocm91Z2guanM6IEFkZGVk
LgorICAgICAgICAqIHdhc20vanMtYXBpL2Z1bmN0aW9uLXRlc3RzL2lmLXRoZW4tZmFsbHRocm91
Z2guanM6IEFkZGVkLgorICAgICAgICAqIHdhc20vanMtYXBpL2Z1bmN0aW9uLXRlc3RzL2xvb3At
bXVsdC5qczogQWRkZWQuCisgICAgICAgICogd2FzbS9qcy1hcGkvZnVuY3Rpb24tdGVzdHMvbG9v
cC1zdW0uanM6IEFkZGVkLgorICAgICAgICAqIHdhc20vanMtYXBpL2Z1bmN0aW9uLXRlc3RzL3Jl
dDUuanM6IEFkZGVkLgorICAgICAgICAqIHdhc20vc2VsZi10ZXN0L3Rlc3RfTG93TGV2ZWxCaW5h
cnlfdmFyaW50MzIuanM6IFJlbmFtZWQgZnJvbSBKU1Rlc3RzL3dhc20vc2VsZi10ZXN0L3Rlc3Rf
TG93TGV2ZWxCaW5hcnlfdmFyaW50LmpzLgorICAgICAgICAqIHdhc20vc2VsZi10ZXN0L3Rlc3Rf
TG93TGV2ZWxCaW5hcnlfdmFydWludDMyLmpzOiBSZW5hbWVkIGZyb20gSlNUZXN0cy93YXNtL3Nl
bGYtdGVzdC90ZXN0X0xvd0xldmVsQmluYXJ5X3ZhcnVpbnQuanMuCisKIDIwMTYtMTEtMDkgIFNh
YW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgTWF0aC5taW4oKS9NYXRo
Lm1heCgpIHdpdGggbm8gYXJndW1lbnRzIGlzIGxvd2VyZWQgaW5jb3JyZWN0bHkgaW4gdGhlIEJ5
dGVjb2RlUGFyc2VyCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vQnVpbGRlci5qcyBiL0pTVGVz
dHMvd2FzbS9CdWlsZGVyLmpzCmluZGV4IGQxZTQ3Njg0MjIzOGMyMzY4Yzc1MzNiMzZmMjcyODFk
NDM2NmEyYTguLjc2Zjk3YjQ3ZjQ1ODg0M2NiNzg4YTUwMTRiYzYzMTk0OGFiMDg1NmQgMTAwNjQ0
Ci0tLSBhL0pTVGVzdHMvd2FzbS9CdWlsZGVyLmpzCisrKyBiL0pTVGVzdHMvd2FzbS9CdWlsZGVy
LmpzCkBAIC02MCwxNCArNjAsMTQgQEAgY29uc3QgX21heWJlUmVnaXN0ZXJUeXBlID0gKGJ1aWxk
ZXIsIHR5cGUpID0+IHsKICAgICBpZiAodHlwZW9mKHR5cGUpID09PSAibnVtYmVyIikgewogICAg
ICAgICAvLyBUeXBlIG51bWJlcnMgYWxyZWFkeSByZWZlciB0byB0aGUgdHlwZSBzZWN0aW9uLCBu
byBuZWVkIHRvIHJlZ2lzdGVyIHRoZW0uCiAgICAgICAgIGlmIChidWlsZGVyLl9jaGVja2VkKSB7
Ci0gICAgICAgICAgICBhc3NlcnQuaXNOb3RVbmRlZih0eXBlU2VjdGlvbiwgYENhbid0IHVzZSB0
eXBlICR7dHlwZX0gaWYgYSB0eXBlIHNlY3Rpb24gaXNuJ3QgcHJlc2VudGApOwotICAgICAgICAg
ICAgYXNzZXJ0LmlzTm90VW5kZWYodHlwZVNlY3Rpb24uZGF0YVt0eXBlXSwgYFR5cGUgJHt0eXBl
fSBkb2Vzbid0IGV4aXN0IGluIHR5cGUgc2VjdGlvbmApOworICAgICAgICAgICAgYXNzZXJ0Lmlz
Tm90VW5kZWYodHlwZVNlY3Rpb24sIGBDYW4gbm90IHVzZSB0eXBlICR7dHlwZX0gaWYgYSB0eXBl
IHNlY3Rpb24gaXMgbm90IHByZXNlbnRgKTsKKyAgICAgICAgICAgIGFzc2VydC5pc05vdFVuZGVm
KHR5cGVTZWN0aW9uLmRhdGFbdHlwZV0sIGBUeXBlICR7dHlwZX0gZG9lcyBub3QgZXhpc3QgaW4g
dHlwZSBzZWN0aW9uYCk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHR5cGU7CiAgICAgfQog
ICAgIGFzc2VydC5oYXNPYmplY3RQcm9wZXJ0eSh0eXBlLCAicGFyYW1zIiwgYEV4cGVjdGVkIHR5
cGUgdG8gYmUgYSBudW1iZXIgb3Igb2JqZWN0IHdpdGggJ3BhcmFtcycgYW5kIG9wdGlvbmFsbHkg
J3JldCcgZmllbGRzYCk7CiAgICAgY29uc3QgW3BhcmFtcywgcmV0XSA9IF9ub3JtYWxpemVGdW5j
dGlvblNpZ25hdHVyZSh0eXBlLnBhcmFtcywgdHlwZS5yZXQpOwotICAgIGFzc2VydC5pc05vdFVu
ZGVmKHR5cGVTZWN0aW9uLCBgQ2FuJ3QgYWRkIHR5cGUgaWYgYSB0eXBlIHNlY3Rpb24gaXNuJ3Qg
cHJlc2VudGApOworICAgIGFzc2VydC5pc05vdFVuZGVmKHR5cGVTZWN0aW9uLCBgQ2FuIG5vdCBh
ZGQgdHlwZSBpZiBhIHR5cGUgc2VjdGlvbiBpcyBub3QgcHJlc2VudGApOwogICAgIC8vIFRyeSBy
ZXVzaW5nIGFuIGVxdWl2YWxlbnQgdHlwZSBmcm9tIHRoZSB0eXBlIHNlY3Rpb24uCiAgICAgdHlw
ZXM6CiAgICAgZm9yIChsZXQgaSA9IDA7IGkgIT09IHR5cGVTZWN0aW9uLmRhdGEubGVuZ3RoOyAr
K2kpIHsKQEAgLTE1NCw2ICsxNTQsMTU2IEBAIGNvbnN0IF9leHBvcnRGdW5jdGlvbkNvbnRpbnVh
dGlvbiA9IChidWlsZGVyLCBzZWN0aW9uLCBuZXh0QnVpbGRlcikgPT4gewogICAgIH07CiB9Owog
Citjb25zdCBfY2hlY2tTdGFja0FyZ3MgPSAob3AsIHBhcmFtKSA9PiB7CisgICAgZm9yIChsZXQg
ZXhwZWN0IG9mIHBhcmFtbikgeworICAgICAgICBpZiAoV0FTTS5pc1ZhbGlkVmFsdWVUeXBlKGV4
cGVjdCkpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FIGltcGxlbWVudCBzdGFjayBjaGVja3MgZm9y
IGFyZ3VtZW50cy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzQy
MQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gSGFuZGxlIG91ciBvd24gbWV0YS10
eXBlcy4KKyAgICAgICAgICAgIHN3aXRjaCAoZXhwZWN0KSB7CisgICAgICAgICAgICBjYXNlICJh
ZGRyIjogYnJlYWs7IC8vIEZJWE1FIGltcGxlbWVudCBhZGRyLiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDIxCisgICAgICAgICAgICBjYXNlICJhbnkiOiBicmVh
azsgLy8gRklYTUUgaW1wbGVtZW50IGFueS4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2MzQyMQorICAgICAgICAgICAgY2FzZSAiYm9vbCI6IGJyZWFrOyAvLyBGSVhN
RSBpbXBsZW1lbnQgYm9vbC4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2MzQyMQorICAgICAgICAgICAgY2FzZSAiY2FsbCI6IGJyZWFrOyAvLyBGSVhNRSBpbXBsZW1l
bnQgY2FsbCBzdGFjayBhcmd1bWVudCBjaGVja3MgYmFzZWQgb24gZnVuY3Rpb24gc2lnbmF0dXJl
LiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDIxCisgICAgICAg
ICAgICBjYXNlICJnbG9iYWwiOiBicmVhazsgLy8gRklYTUUgaW1wbGVtZW50IGdsb2JhbC4gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzQyMQorICAgICAgICAgICAg
Y2FzZSAibG9jYWwiOiBicmVhazsgLy8gRklYTUUgaW1wbGVtZW50IGxvY2FsLiBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDIxCisgICAgICAgICAgICBjYXNlICJw
cmV2IjogYnJlYWs7IC8vIEZJWE1FIGltcGxlbWVudCBwcmV2LCBjaGVja2luZyBmb3Igd2hldGV2
ZXIgdGhlIHByZXZpb3VzIHZhbHVlIHdhcy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2MzQyMQorICAgICAgICAgICAgY2FzZSAic2l6ZSI6IGJyZWFrOyAvLyBGSVhN
RSBpbXBsZW1lbnQgc2l6ZS4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2MzQyMQorICAgICAgICAgICAgZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKGBJbXBsZW1lbnRh
dGlvbiBwcm9ibGVtOiB1bmhhbmRsZWQgbWV0YS10eXBlICIke2V4cGVjdH0iIG9uICIke29wfSJg
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKworY29uc3QgX2NoZWNrU3Rh
Y2tSZXR1cm4gPSAob3AsIHJldCkgPT4geworICAgIGZvciAobGV0IGV4cGVjdCBvZiByZXQpIHsK
KyAgICAgICAgaWYgKFdBU00uaXNWYWxpZFZhbHVlVHlwZShleHBlY3QpKSB7CisgICAgICAgICAg
ICAvLyBGSVhNRSBpbXBsZW1lbnQgc3RhY2sgY2hlY2tzIGZvciByZXR1cm4uIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM0MjEKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIC8vIEhhbmRsZSBvdXIgb3duIG1ldGEtdHlwZXMuCisgICAgICAgICAgICBzd2l0
Y2ggKGV4cGVjdCkgeworICAgICAgICAgICAgY2FzZSAiYm9vbCI6IGJyZWFrOyAvLyBGSVhNRSBp
bXBsZW1lbnQgYm9vbC4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
MzQyMQorICAgICAgICAgICAgY2FzZSAiY2FsbCI6IGJyZWFrOyAvLyBGSVhNRSBpbXBsZW1lbnQg
Y2FsbCBzdGFjayByZXR1cm4gY2hlY2sgYmFzZWQgb24gZnVuY3Rpb24gc2lnbmF0dXJlLiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDIxCisgICAgICAgICAgICBj
YXNlICJjb250cm9sIjogYnJlYWs7IC8vIEZJWE1FIGltcGxlbWVudCBjb250cm9sLiBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDIxCisgICAgICAgICAgICBjYXNl
ICJnbG9iYWwiOiBicmVhazsgLy8gRklYTUUgaW1wbGVtZW50IGdsb2JhbC4gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzQyMQorICAgICAgICAgICAgY2FzZSAibG9j
YWwiOiBicmVhazsgLy8gRklYTUUgaW1wbGVtZW50IGxvY2FsLiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDIxCisgICAgICAgICAgICBjYXNlICJwcmV2IjogYnJl
YWs7IC8vIEZJWE1FIGltcGxlbWVudCBwcmV2LCBjaGVja2luZyBmb3Igd2hldGV2ZXIgdGhlIHBh
cmFtZXRlciB0eXBlIHdhcy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2MzQyMQorICAgICAgICAgICAgY2FzZSAic2l6ZSI6IGJyZWFrOyAvLyBGSVhNRSBpbXBsZW1l
bnQgc2l6ZS4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzQyMQor
ICAgICAgICAgICAgZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKGBJbXBsZW1lbnRhdGlvbiBwcm9i
bGVtOiB1bmhhbmRsZWQgbWV0YS10eXBlICIke2V4cGVjdH0iIG9uICIke29wfSJgKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fQorfTsKKworY29uc3QgX2NoZWNrSW1tcyA9IChvcCwgaW1tcywgZXhwZWN0ZWRJbW1zKSA9PiB7
CisgICAgYXNzZXJ0LmVxKGltbXMubGVuZ3RoLCBleHBlY3RlZEltbXMubGVuZ3RoLCBgIiR7b3B9
IiBleHBlY3RzICR7ZXhwZWN0ZWRJbW1zLmxlbmd0aH0gaW1tZWRpYXRlcywgZ290ICR7aW1tcy5s
ZW5ndGh9YCk7CisgICAgZm9yIChsZXQgaWR4ID0gMDsgaWR4ICE9PSBleHBlY3RlZEltbXMubGVu
Z3RoOyArK2lkeCkgeworICAgICAgICBjb25zdCBnb3QgPSBpbW1zW2lkeF07CisgICAgICAgIGNv
bnN0IGV4cGVjdCA9IGV4cGVjdGVkSW1tc1tpZHhdOworICAgICAgICBzd2l0Y2ggKGV4cGVjdC5u
YW1lKSB7CisgICAgICAgIGNhc2UgImZ1bmN0aW9uX2luZGV4IjoKKyAgICAgICAgICAgIGFzc2Vy
dC50cnV0aHkoX2lzVmFsaWRWYWx1ZShnb3QsICJpMzIiKSwgYEludmFsaWQgdmFsdWUgb24gJHtv
cH06IGdvdCAiJHtnb3R9IiwgZXhwZWN0ZWQgaTMyYCk7CisgICAgICAgICAgICAvLyBGSVhNRSBj
aGVjayBmdW5jdGlvbiBpbmRpY2VzLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTYzNDIxCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAibG9jYWxfaW5k
ZXgiOiB0aHJvdyBuZXcgRXJyb3IoYFVuaW1wbGVtZW50ZWQ6ICIke2V4cGVjdC5uYW1lfSIgb24g
IiR7b3B9ImApOworICAgICAgICBjYXNlICJnbG9iYWxfaW5kZXgiOiB0aHJvdyBuZXcgRXJyb3Io
YFVuaW1wbGVtZW50ZWQ6ICIke2V4cGVjdC5uYW1lfSIgb24gIiR7b3B9ImApOworICAgICAgICBj
YXNlICJ0eXBlX2luZGV4IjogdGhyb3cgbmV3IEVycm9yKGBVbmltcGxlbWVudGVkOiAiJHtleHBl
Y3QubmFtZX0iIG9uICIke29wfSJgKTsKKyAgICAgICAgY2FzZSAidmFsdWUiOgorICAgICAgICAg
ICAgYXNzZXJ0LnRydXRoeShfaXNWYWxpZFZhbHVlKGdvdCwgcmV0WzBdKSwgYEludmFsaWQgdmFs
dWUgb24gJHtvcH06IGdvdCAiJHtnb3R9IiwgZXhwZWN0ZWQgJHtyZXRbMF19YCk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSAiZmxhZ3MiOiB0aHJvdyBuZXcgRXJyb3IoYFVuaW1w
bGVtZW50ZWQ6ICIke2V4cGVjdC5uYW1lfSIgb24gIiR7b3B9ImApOworICAgICAgICBjYXNlICJv
ZmZzZXQiOiB0aHJvdyBuZXcgRXJyb3IoYFVuaW1wbGVtZW50ZWQ6ICIke2V4cGVjdC5uYW1lfSIg
b24gIiR7b3B9ImApOworICAgICAgICAgICAgLy8gQ29udHJvbDoKKyAgICAgICAgY2FzZSAiZGVm
YXVsdF90YXJnZXQiOiB0aHJvdyBuZXcgRXJyb3IoYFVuaW1wbGVtZW50ZWQ6ICIke2V4cGVjdC5u
YW1lfSIgb24gIiR7b3B9ImApOworICAgICAgICBjYXNlICJyZWxhdGl2ZV9kZXB0aCI6IHRocm93
IG5ldyBFcnJvcihgVW5pbXBsZW1lbnRlZDogIiR7ZXhwZWN0Lm5hbWV9IiBvbiAiJHtvcH0iYCk7
CisgICAgICAgIGNhc2UgInNpZyI6IHRocm93IG5ldyBFcnJvcihgVW5pbXBsZW1lbnRlZDogIiR7
ZXhwZWN0Lm5hbWV9IiBvbiAiJHtvcH0iYCk7CisgICAgICAgIGNhc2UgInRhcmdldF9jb3VudCI6
IHRocm93IG5ldyBFcnJvcihgVW5pbXBsZW1lbnRlZDogIiR7ZXhwZWN0Lm5hbWV9IiBvbiAiJHtv
cH0iYCk7CisgICAgICAgIGNhc2UgInRhcmdldF90YWJsZSI6IHRocm93IG5ldyBFcnJvcihgVW5p
bXBsZW1lbnRlZDogIiR7ZXhwZWN0Lm5hbWV9IiBvbiAiJHtvcH0iYCk7CisgICAgICAgIGRlZmF1
bHQ6IHRocm93IG5ldyBFcnJvcihgSW1wbGVtZW50YXRpb24gcHJvYmxlbTogdW5oYW5kbGVkIGlt
bWVkaWF0ZSAiJHtleHBlY3QubmFtZX0iIG9uICIke29wfSJgKTsKKyAgICAgICAgfQorICAgIH0K
K307CisKK2NvbnN0IF9jcmVhdGVGdW5jdGlvbkJ1aWxkZXIgPSAoZnVuYywgYnVpbGRlciwgcHJl
dmlvdXNCdWlsZGVyKSA9PiB7CisgICAgbGV0IGZ1bmN0aW9uQnVpbGRlciA9IHt9OworICAgIGZv
ciAoY29uc3Qgb3AgaW4gV0FTTS5kZXNjcmlwdGlvbi5vcGNvZGUpIHsKKyAgICAgICAgY29uc3Qg
bmFtZSA9IF90b0phdmFTY3JpcHROYW1lKG9wKTsKKyAgICAgICAgY29uc3QgdmFsdWUgPSBXQVNN
LmRlc2NyaXB0aW9uLm9wY29kZVtvcF0udmFsdWU7CisgICAgICAgIGNvbnN0IHJldCA9IFdBU00u
ZGVzY3JpcHRpb24ub3Bjb2RlW29wXVsicmV0dXJuIl07CisgICAgICAgIGNvbnN0IHBhcmFtID0g
V0FTTS5kZXNjcmlwdGlvbi5vcGNvZGVbb3BdLnBhcmFtZXRlcjsKKyAgICAgICAgY29uc3QgaW1t
ID0gV0FTTS5kZXNjcmlwdGlvbi5vcGNvZGVbb3BdLmltbWVkaWF0ZTsKKworICAgICAgICBjb25z
dCBjaGVja1N0YWNrQXJncyA9IGJ1aWxkZXIuX2NoZWNrZWQgPyBfY2hlY2tTdGFja0FyZ3MgOiAo
KSA9PiB7fTsKKyAgICAgICAgY29uc3QgY2hlY2tTdGFja1JldHVybiA9IGJ1aWxkZXIuX2NoZWNr
ZWQgPyBfY2hlY2tTdGFja1JldHVybiA6ICgpID0+IHt9OworICAgICAgICBjb25zdCBjaGVja0lt
bXMgPSBidWlsZGVyLl9jaGVja2VkID8gX2NoZWNrSW1tcyA6ICgpID0+IHt9OworCisgICAgICAg
IGZ1bmN0aW9uQnVpbGRlcltuYW1lXSA9ICguLi5hcmdzKSA9PiB7CisgICAgICAgICAgICBsZXQg
bmV4dEJ1aWxkZXI7CisgICAgICAgICAgICBzd2l0Y2ggKG5hbWUpIHsKKyAgICAgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICAgICAgbmV4dEJ1aWxkZXIgPSBmdW5jdGlvbkJ1aWxkZXI7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAiRW5kIjoKKyAgICAg
ICAgICAgICAgICBuZXh0QnVpbGRlciA9IHByZXZpb3VzQnVpbGRlcjsKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICJCbG9jayI6CisgICAgICAgICAgICAgICAg
Y2FzZSAiTG9vcCI6CisgICAgICAgICAgICBjYXNlICJJZiI6CisgICAgICAgICAgICAgICAgbmV4
dEJ1aWxkZXIgPSBfY3JlYXRlRnVuY3Rpb25CdWlsZGVyKGZ1bmMsIGJ1aWxkZXIsIGZ1bmN0aW9u
QnVpbGRlcik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIC8vIFBhc3NpbmcgYSBmdW5jdGlvbiBhcyB0aGUgYXJndW1lbnQgaXMgYSB3YXkgdG8g
bmVzdCBibG9ja3MgbGV4aWNhbGx5LgorICAgICAgICAgICAgY29uc3QgY29udGludWF0aW9uID0g
YXJnc1thcmdzLmxlbmd0aCAtIDFdOworICAgICAgICAgICAgY29uc3QgaGFzQ29udGludWF0aW9u
ID0gdHlwZW9mKGNvbnRpbnVhdGlvbikgPT09ICJmdW5jdGlvbiI7CisgICAgICAgICAgICBjb25z
dCBpbW1zID0gaGFzQ29udGludWF0aW9uID8gYXJncy5zbGljZSgwLCAtMSkgOiBhcmdzOyAvLyBG
SVhNRTogYWxsb3cgcGFzc2luZyBpbiBzdGFjayB2YWx1ZXMsIGFzLWlmIGNvZGUgd2VyZSBhIHN0
YWNrIG1hY2hpbmUuIEp1c3QgY2hlY2sgZm9yIGEgYnVpbGRlciB0byB0aGlzIGZ1bmN0aW9uLCBh
bmQgZHJvcC4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzQyMgor
ICAgICAgICAgICAgY2hlY2tJbW1zKG9wLCBpbW1zLCBpbW0pOworICAgICAgICAgICAgY2hlY2tT
dGFja0FyZ3Mob3AsIHBhcmFtKTsKKyAgICAgICAgICAgIGNoZWNrU3RhY2tSZXR1cm4ob3AsIHJl
dCk7CisgICAgICAgICAgICBjb25zdCBzdGFja0FyZ3MgPSBbXTsgLy8gRklYTUUgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjcwNgorICAgICAgICAgICAgZnVuYy5j
b2RlLnB1c2goeyBuYW1lOiBvcCwgdmFsdWU6IHZhbHVlLCBhcmd1bWVudHM6IHN0YWNrQXJncywg
aW1tZWRpYXRlczogaW1tcyB9KTsKKyAgICAgICAgICAgIGlmIChoYXNDb250aW51YXRpb24pCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihuZXh0QnVpbGRlcikuRW5kKCk7Cisg
ICAgICAgICAgICByZXR1cm4gbmV4dEJ1aWxkZXI7CisgICAgICAgIH07CisgICAgfQorICAgIHJl
dHVybiBmdW5jdGlvbkJ1aWxkZXI7Cit9CisKK2NvbnN0IF9jcmVhdGVGdW5jdGlvbiA9IChzZWN0
aW9uLCBidWlsZGVyLCBwcmV2aW91c0J1aWxkZXIpID0+IHsKKyAgICByZXR1cm4gKC4uLmFyZ3Mp
ID0+IHsKKyAgICAgICAgY29uc3QgbmFtZU9mZnNldCA9ICh0eXBlb2YoYXJnc1swXSkgPT09ICJz
dHJpbmciKSA+Pj4gMDsKKyAgICAgICAgY29uc3QgZnVuY3Rpb25OYW1lID0gbmFtZU9mZnNldCA/
IGFyZ3NbMF0gOiB1bmRlZmluZWQ7CisgICAgICAgIGxldCBzaWduYXR1cmUgPSBhcmdzWzAgKyBu
YW1lT2Zmc2V0XTsKKyAgICAgICAgY29uc3QgbG9jYWxzID0gYXJnc1sxICsgbmFtZU9mZnNldF0g
PT09IHVuZGVmaW5lZCA/IFtdIDogYXJnc1sxICsgbmFtZU9mZnNldF07CisgICAgICAgIGZvciAo
Y29uc3QgbG9jYWwgb2YgbG9jYWxzKQorICAgICAgICAgICAgYXNzZXJ0LnRydXRoeShXQVNNLmlz
VmFsaWRWYWx1ZVR5cGUobG9jYWwpLCBgVHlwZSBvZiBsb2NhbDogJHtsb2NhbH0gbmVlZHMgdG8g
YmUgYSB2YWxpZCB2YWx1ZSB0eXBlYCk7CisKKyAgICAgICAgaWYgKHR5cGVvZihzaWduYXR1cmUp
ID09PSAidW5kZWZpbmVkIikKKyAgICAgICAgICAgIHNpZ25hdHVyZSA9IHsgcGFyYW1zOiBbXSB9
OworICAgICAgICBhc3NlcnQuaGFzT2JqZWN0UHJvcGVydHkoc2lnbmF0dXJlLCAicGFyYW1zIiwg
YEV4cGVjdCBmdW5jdGlvbiBzaWduYXR1cmUgdG8gYmUgYW4gb2JqZWN0IHdpdGggYSAicGFyYW1z
IiBmaWVsZCwgZ290ICIke3NpZ25hdHVyZX0iYCk7CisgICAgICAgIGNvbnN0IFtwYXJhbXMsIHJl
dF0gPSBfbm9ybWFsaXplRnVuY3Rpb25TaWduYXR1cmUoc2lnbmF0dXJlLnBhcmFtcywgc2lnbmF0
dXJlLnJldCk7CisgICAgICAgIHNpZ25hdHVyZSA9IHsgcGFyYW1zOiBwYXJhbXMsIHJldDogcmV0
IH07CisgICAgICAgIGNvbnN0IGZ1bmMgPSB7CisgICAgICAgICAgICBuYW1lOiBmdW5jdGlvbk5h
bWUsCisgICAgICAgICAgICB0eXBlOiBfbWF5YmVSZWdpc3RlclR5cGUoYnVpbGRlciwgc2lnbmF0
dXJlKSwKKyAgICAgICAgICAgIHNpZ25hdHVyZTogc2lnbmF0dXJlLAorICAgICAgICAgICAgbG9j
YWxzOiBwYXJhbXMuY29uY2F0KGxvY2FscyksIC8vIFBhcmFtZXRlcnMgYXJlIHRoZSBmaXJzdCBs
b2NhbHMuCisgICAgICAgICAgICBwYXJhbWV0ZXJDb3VudDogcGFyYW1zLmxlbmd0aCwKKyAgICAg
ICAgICAgIGNvZGU6IFtdCisgICAgICAgIH07CisKKyAgICAgICAgY29uc3QgZnVuY3Rpb25TZWN0
aW9uID0gYnVpbGRlci5fZ2V0U2VjdGlvbigiRnVuY3Rpb24iKTsKKyAgICAgICAgaWYgKGZ1bmN0
aW9uU2VjdGlvbikKKyAgICAgICAgICAgIGZ1bmN0aW9uU2VjdGlvbi5kYXRhLnB1c2goZnVuYy50
eXBlKTsKKworICAgICAgICBzZWN0aW9uLmRhdGEucHVzaChmdW5jKTsKKyAgICAgICAgYnVpbGRl
ci5fcmVnaXN0ZXJGdW5jdGlvblRvSW5kZXhTcGFjZShmdW5jdGlvbk5hbWUpOworCisgICAgICAg
IHJldHVybiBfY3JlYXRlRnVuY3Rpb25CdWlsZGVyKGZ1bmMsIGJ1aWxkZXIsIHByZXZpb3VzQnVp
bGRlcik7CisgICAgfQorfTsKKwogZXhwb3J0IGRlZmF1bHQgY2xhc3MgQnVpbGRlciB7CiAgICAg
Y29uc3RydWN0b3IoKSB7CiAgICAgICAgIHRoaXMuc2V0Q2hlY2tlZCh0cnVlKTsKQEAgLTIxOCw2
ICszNjgsNyBAQCBleHBvcnQgZGVmYXVsdCBjbGFzcyBCdWlsZGVyIHsKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGltcG9ydEJ1aWxkZXI7CiAgICAgICAgICAgICAgICAgfTsKICAgICAgICAg
ICAgICAgICBicmVhazsKKwogICAgICAgICAgICAgY2FzZSAiRXhwb3J0IjoKICAgICAgICAgICAg
ICAgICB0aGlzW3NlY3Rpb25dID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHMgPSB0aGlzLl9hZGRTZWN0aW9uKHNlY3Rpb24pOwpAQCAtMjMxLDYgKzM4MiwzMiBAQCBl
eHBvcnQgZGVmYXVsdCBjbGFzcyBCdWlsZGVyIHsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGV4cG9ydEJ1aWxkZXI7CiAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICBicmVh
azsKKworICAgICAgICAgICAgY2FzZSAiTWVtb3J5IjoKKyAgICAgICAgICAgICAgICB0aGlzW3Nl
Y3Rpb25dID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IHMgPSB0aGlz
Ll9hZGRTZWN0aW9uKHNlY3Rpb24pOworICAgICAgICAgICAgICAgICAgICBjb25zdCBleHBvcnRC
dWlsZGVyID0geworICAgICAgICAgICAgICAgICAgICAgICAgRW5kOiAoKSA9PiB0aGlzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgSW5pdGlhbE1heFBhZ2VzOiAoaW5pdGlhbCwgbWF4KSA9PiB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5kYXRhLnB1c2goeyBpbml0aWFsLCBtYXgg
fSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV4cG9ydEJ1aWxkZXI7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBleHBvcnRCdWlsZGVyOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSAiRnVuY3Rpb24iOgorICAg
ICAgICAgICAgICAgIHRoaXNbc2VjdGlvbl0gPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAg
ICAgICAgY29uc3QgcyA9IHRoaXMuX2FkZFNlY3Rpb24oc2VjdGlvbik7CisgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGV4cG9ydEJ1aWxkZXIgPSB7CisgICAgICAgICAgICAgICAgICAgICAgICBF
bmQ6ICgpID0+IHRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBhZGQgYWJp
bGl0eSB0byBhZGQgdGhpcyB3aXRoIHdoYXRldmVyLgorICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBleHBvcnRCdWlsZGVyOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBicmVhazsKKwogICAgICAgICAgICAgY2FzZSAiQ29kZSI6CiAg
ICAgICAgICAgICAgICAgdGhpc1tzZWN0aW9uXSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAg
ICAgICAgICBjb25zdCBzID0gdGhpcy5fYWRkU2VjdGlvbihzZWN0aW9uKTsKQEAgLTI1NCw3ICs0
MzEsNyBAQCBleHBvcnQgZGVmYXVsdCBjbGFzcyBCdWlsZGVyIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNhc2UgIm51bWJlciI6IHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBpbmRleCA9IGJ1aWxkZXIuX2dldEZ1bmN0aW9uRnJv
bUluZGV4U3BhY2UoZS5pbmRleCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKGJ1aWxkZXIuX2NoZWNrZWQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFzc2VydC5pc05vdFVuZGVmKGluZGV4LCBgRXhwb3J0ICIke2UuZmll
bGR9IiBkb2Vzbid0IGNvcnJlc3BvbmQgdG8gYSBkZWZpbmVkIHZhbHVlIGluIHRoZSBmdW5jdGlv
biBpbmRleCBzcGFjZWApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhc3NlcnQuaXNOb3RVbmRlZihpbmRleCwgYEV4cG9ydCAiJHtlLmZpZWxkfSIgZG9lcyBu
b3QgY29ycmVzcG9uZCB0byBhIGRlZmluZWQgdmFsdWUgaW4gdGhlIGZ1bmN0aW9uIGluZGV4IHNw
YWNlYCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGJyZWFrOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAidW5kZWZpbmVkIjoKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuaW1w
bGVtZW50ZWQ6IEZ1bmN0aW9uKCkuRW5kKCkgd2l0aCB1bmRlZmluZWQgZXhwb3J0IGluZGV4YCk7
IC8vIEZJWE1FCkBAIC0yNjksMTE1ICs0NDYsMTMgQEAgZXhwb3J0IGRlZmF1bHQgY2xhc3MgQnVp
bGRlciB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBidWlsZGVyOwogICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIEZ1bmN0aW9uOiAoYTAsIGExKSA9PiB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbGV0IHNpZ25hdHVyZSA9IHR5cGVvZihhMCkgPT09ICJzdHJpbmci
ID8gYTEgOiBhMDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmdW5jdGlvbk5h
bWUgPSB0eXBlb2YoYTApID09PSAic3RyaW5nIiA/IGEwIDogdW5kZWZpbmVkOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2Yoc2lnbmF0dXJlKSA9PT0gInVuZGVmaW5lZCIp
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25hdHVyZSA9IHsgcGFyYW1zOiBb
XSB9OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydC5oYXNPYmplY3RQcm9wZXJ0
eShzaWduYXR1cmUsICJwYXJhbXMiLCBgRXhwZWN0IGZ1bmN0aW9uIHNpZ25hdHVyZSB0byBiZSBh
biBvYmplY3Qgd2l0aCBhICJwYXJhbXMiIGZpZWxkLCBnb3QgIiR7c2lnbmF0dXJlfSJgKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBbcGFyYW1zLCByZXRdID0gX25vcm1hbGl6
ZUZ1bmN0aW9uU2lnbmF0dXJlKHNpZ25hdHVyZS5wYXJhbXMsIHNpZ25hdHVyZS5yZXQpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25hdHVyZSA9IHsgcGFyYW1zOiBwYXJhbXMsIHJl
dDogcmV0IH07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZnVuYyA9IHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogZnVuY3Rpb25OYW1lLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBfbWF5YmVSZWdpc3RlclR5cGUoYnVpbGRl
ciwgc2lnbmF0dXJlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmF0dXJl
OiBzaWduYXR1cmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsczogcGFy
YW1zLCAvLyBQYXJhbWV0ZXJzIGFyZSB0aGUgZmlyc3QgbG9jYWxzLgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJDb3VudDogcGFyYW1zLmxlbmd0aCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogW10KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuZGF0YS5wdXNoKGZ1bmMpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIuX3JlZ2lzdGVyRnVuY3Rpb25Ub0lu
ZGV4U3BhY2UoZnVuY3Rpb25OYW1lKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQg
ZnVuY3Rpb25CdWlsZGVyID0ge307Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChj
b25zdCBvcCBpbiBXQVNNLmRlc2NyaXB0aW9uLm9wY29kZSkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBuYW1lID0gX3RvSmF2YVNjcmlwdE5hbWUob3ApOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IFdBU00uZGVzY3JpcHRpb24u
b3Bjb2RlW29wXS52YWx1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
cmV0ID0gV0FTTS5kZXNjcmlwdGlvbi5vcGNvZGVbb3BdWyJyZXR1cm4iXTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyYW0gPSBXQVNNLmRlc2NyaXB0aW9uLm9wY29k
ZVtvcF0ucGFyYW1ldGVyOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBp
bW0gPSBXQVNNLmRlc2NyaXB0aW9uLm9wY29kZVtvcF0uaW1tZWRpYXRlOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGVja1N0YWNrQXJncyA9IGJ1aWxkZXIuX2NoZWNr
ZWQgPyBvcCA9PiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxl
dCBleHBlY3Qgb2YgcGFyYW0pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoV0FTTS5pc1ZhbGlkVmFsdWVUeXBlKGV4cGVjdCkpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRklYTUUgaW1wbGVtZW50IHN0YWNrIGNo
ZWNrcyBmb3IgYXJndW1lbnRzLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTYzNDIxCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSGFuZGxl
IG91ciBvd24gbWV0YS10eXBlcy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3dpdGNoIChleHBlY3QpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2FzZSAiYWRkciI6IGJyZWFrOyAvLyBGSVhNRSBpbXBsZW1lbnQgYWRk
ci4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzQyMQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJhbnkiOiBicmVhazsg
Ly8gRklYTUUgaW1wbGVtZW50IGFueS4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2MzQyMQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjYXNlICJib29sIjogYnJlYWs7IC8vIEZJWE1FIGltcGxlbWVudCBib29sLiBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDIxCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImNhbGwiOiBicmVhazsgLy8gRklYTUUgaW1w
bGVtZW50IGNhbGwgc3RhY2sgYXJndW1lbnQgY2hlY2tzIGJhc2VkIG9uIGZ1bmN0aW9uIHNpZ25h
dHVyZS4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzQyMQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJnbG9iYWwiOiBi
cmVhazsgLy8gRklYTUUgaW1wbGVtZW50IGdsb2JhbC4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2MzQyMQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjYXNlICJsb2NhbCI6IGJyZWFrOyAvLyBGSVhNRSBpbXBsZW1lbnQgbG9jYWwu
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM0MjEKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAicHJldiI6IGJyZWFrOyAv
LyBGSVhNRSBpbXBsZW1lbnQgcHJldiwgY2hlY2tpbmcgZm9yIHdoZXRldmVyIHRoZSBwcmV2aW91
cyB2YWx1ZSB3YXMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM0
MjEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAic2l6
ZSI6IGJyZWFrOyAvLyBGSVhNRSBpbXBsZW1lbnQgc2l6ZS4gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2MzQyMQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoYEltcGxlbWVudGF0aW9uIHBy
b2JsZW06IHVuaGFuZGxlZCBtZXRhLXR5cGUgIiR7ZXhwZWN0fSIgb24gIiR7b3B9ImApOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IDogKCkgPT4ge307
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoZWNrU3RhY2tSZXR1cm4g
PSBidWlsZGVyLl9jaGVja2VkID8gb3AgPT4gewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZm9yIChsZXQgZXhwZWN0IG9mIHJldCkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChXQVNNLmlzVmFsaWRWYWx1ZVR5cGUoZXhwZWN0KSkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRSBpbXBs
ZW1lbnQgc3RhY2sgY2hlY2tzIGZvciByZXR1cm4uIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjM0MjEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBIYW5kbGUgb3VyIG93biBtZXRhLXR5cGVzLgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGV4cGVjdCkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJib29sIjogYnJlYWs7IC8vIEZJWE1FIGlt
cGxlbWVudCBib29sLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYz
NDIxCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImNh
bGwiOiBicmVhazsgLy8gRklYTUUgaW1wbGVtZW50IGNhbGwgc3RhY2sgcmV0dXJuIGNoZWNrIGJh
c2VkIG9uIGZ1bmN0aW9uIHNpZ25hdHVyZS4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2MzQyMQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjYXNlICJjb250cm9sIjogYnJlYWs7IC8vIEZJWE1FIGltcGxlbWVudCBjb250cm9sLiBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDIxCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImdsb2JhbCI6IGJyZWFrOyAv
LyBGSVhNRSBpbXBsZW1lbnQgZ2xvYmFsLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTYzNDIxCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNhc2UgImxvY2FsIjogYnJlYWs7IC8vIEZJWE1FIGltcGxlbWVudCBsb2NhbC4gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzQyMQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJwcmV2IjogYnJlYWs7IC8vIEZJWE1F
IGltcGxlbWVudCBwcmV2LCBjaGVja2luZyBmb3Igd2hldGV2ZXIgdGhlIHBhcmFtZXRlciB0eXBl
IHdhcy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzQyMQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJzaXplIjogYnJl
YWs7IC8vIEZJWE1FIGltcGxlbWVudCBzaXplLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTYzNDIxCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcihgSW1wbGVtZW50YXRpb24gcHJvYmxlbTog
dW5oYW5kbGVkIG1ldGEtdHlwZSAiJHtleHBlY3R9IiBvbiAiJHtvcH0iYCk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gOiAoKSA9PiB7fTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hlY2tJbW1zID0gYnVpbGRlci5fY2hl
Y2tlZCA/IChvcCwgaW1tcykgPT4gewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYXNzZXJ0LmVxKGltbXMubGVuZ3RoLCBpbW0ubGVuZ3RoLCBgIiR7b3B9IiBleHBlY3RzICR7
aW1tLmxlbmd0aH0gaW1tZWRpYXRlcywgZ290ICR7aW1tcy5sZW5ndGh9YCk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpZHggPSAwOyBpZHggIT09IGltbS5s
ZW5ndGg7ICsraWR4KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZ290ID0gaW1tc1tpZHhdOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGV4cGVjdCA9IGltbVtpZHhdOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN3aXRjaCAoZXhwZWN0Lm5hbWUpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJmdW5jdGlvbl9pbmRleCI6Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydC50cnV0aHkoX2lzVmFsaWRW
YWx1ZShnb3QsICJpMzIiKSwgYEludmFsaWQgdmFsdWUgb24gJHtvcH06IGdvdCAiJHtnb3R9Iiwg
ZXhwZWN0ZWQgaTMyYCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIEZJWE1FIGNoZWNrIGZ1bmN0aW9uIGluZGljZXMuIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM0MjEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2FzZSAibG9jYWxfaW5kZXgiOiB0aHJvdyBuZXcgRXJyb3IoYFVuaW1wbGVtZW50ZWQ6
ICIke2V4cGVjdC5uYW1lfSIgb24gIiR7b3B9ImApOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNhc2UgImdsb2JhbF9pbmRleCI6IHRocm93IG5ldyBFcnJvcihgVW5p
bXBsZW1lbnRlZDogIiR7ZXhwZWN0Lm5hbWV9IiBvbiAiJHtvcH0iYCk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAidHlwZV9pbmRleCI6IHRocm93IG5ldyBF
cnJvcihgVW5pbXBsZW1lbnRlZDogIiR7ZXhwZWN0Lm5hbWV9IiBvbiAiJHtvcH0iYCk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAidmFsdWUiOgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQudHJ1dGh5KF9pc1Zh
bGlkVmFsdWUoZ290LCByZXRbMF0pLCBgSW52YWxpZCB2YWx1ZSBvbiAke29wfTogZ290ICIke2dv
dH0iLCBleHBlY3RlZCAke3JldFswXX1gKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2FzZSAiZmxhZ3MiOiB0aHJvdyBuZXcgRXJyb3IoYFVuaW1wbGVtZW50ZWQ6ICIke2V4
cGVjdC5uYW1lfSIgb24gIiR7b3B9ImApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNhc2UgIm9mZnNldCI6IHRocm93IG5ldyBFcnJvcihgVW5pbXBsZW1lbnRlZDog
IiR7ZXhwZWN0Lm5hbWV9IiBvbiAiJHtvcH0iYCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gQ29udHJvbDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjYXNlICJkZWZhdWx0X3RhcmdldCI6IHRocm93IG5ldyBFcnJvcihgVW5pbXBs
ZW1lbnRlZDogIiR7ZXhwZWN0Lm5hbWV9IiBvbiAiJHtvcH0iYCk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAicmVsYXRpdmVfZGVwdGgiOiB0aHJvdyBuZXcg
RXJyb3IoYFVuaW1wbGVtZW50ZWQ6ICIke2V4cGVjdC5uYW1lfSIgb24gIiR7b3B9ImApOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInNpZyI6IHRocm93IG5l
dyBFcnJvcihgVW5pbXBsZW1lbnRlZDogIiR7ZXhwZWN0Lm5hbWV9IiBvbiAiJHtvcH0iYCk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAidGFyZ2V0X2NvdW50
IjogdGhyb3cgbmV3IEVycm9yKGBVbmltcGxlbWVudGVkOiAiJHtleHBlY3QubmFtZX0iIG9uICIk
e29wfSJgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJ0
YXJnZXRfdGFibGUiOiB0aHJvdyBuZXcgRXJyb3IoYFVuaW1wbGVtZW50ZWQ6ICIke2V4cGVjdC5u
YW1lfSIgb24gIiR7b3B9ImApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcihgSW1wbGVtZW50YXRpb24gcHJvYmxlbTogdW5o
YW5kbGVkIGltbWVkaWF0ZSAiJHtleHBlY3QubmFtZX0iIG9uICIke29wfSJgKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gOiAoKSA9
PiB7fTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV4dEJ1aWxkZXIg
PSBuYW1lID09PSAiRW5kIiA/IGNvZGVCdWlsZGVyIDogZnVuY3Rpb25CdWlsZGVyOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbkJ1aWxkZXJbbmFtZV0gPSAoLi4uYXJn
cykgPT4gewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW1tcyA9
IGFyZ3M7IC8vIEZJWE1FOiBhbGxvdyBwYXNzaW5nIGluIHN0YWNrIHZhbHVlcywgYXMtaWYgY29k
ZSB3ZXJlIGEgc3RhY2sgbWFjaGluZS4gSnVzdCBjaGVjayBmb3IgYSBidWlsZGVyIHRvIHRoaXMg
ZnVuY3Rpb24sIGFuZCBkcm9wLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTYzNDIyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja0ltbXMo
b3AsIGltbXMpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tTdGFj
a0FyZ3Mob3ApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tTdGFj
a1JldHVybihvcCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBz
dGFja0FyZ3MgPSBbXTsgLy8gRklYTUUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2MjcwNgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuYy5j
b2RlLnB1c2goeyBuYW1lOiBvcCwgdmFsdWU6IHZhbHVlLCBhcmd1bWVudHM6IHN0YWNrQXJncywg
aW1tZWRpYXRlczogaW1tcyB9KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBuZXh0QnVpbGRlcjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZ1bmN0aW9uQnVpbGRlcjsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KKwog
ICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICBjb2RlQnVpbGRlci5G
dW5jdGlvbiA9IF9jcmVhdGVGdW5jdGlvbihzLCBidWlsZGVyLCBjb2RlQnVpbGRlcik7CiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBjb2RlQnVpbGRlcjsKICAgICAgICAgICAgICAgICB9Owog
ICAgICAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAg
ICAgICAgIHRoaXNbc2VjdGlvbl0gPSAoKSA9PiB7IHRocm93IG5ldyBFcnJvcihgVW5pbXBsZW1l
bnRlZDogc2VjdGlvbiB0eXBlICIke3NlY3Rpb259ImApOyB9OwogICAgICAgICAgICAgICAgIGJy
ZWFrOwpAQCAtNDIwLDcgKzQ5NSw3IEBAIGV4cG9ydCBkZWZhdWx0IGNsYXNzIEJ1aWxkZXIgewog
ICAgIH0KICAgICBfZ2V0U2VjdGlvbihuYW1lT3JOdW1iZXIpIHsKICAgICAgICAgc3dpdGNoICh0
eXBlb2YobmFtZU9yTnVtYmVyKSkgewotICAgICAgICBkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3Io
YEltcGxlbWVudGF0aW9uIHByb2JsZW06IGNhbid0IGdldCBzZWN0aW9uICIke25hbWVPck51bWJl
cn0iYCk7CisgICAgICAgIGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcihgSW1wbGVtZW50YXRpb24g
cHJvYmxlbTogY2FuIG5vdCBnZXQgc2VjdGlvbiAiJHtuYW1lT3JOdW1iZXJ9ImApOwogICAgICAg
ICBjYXNlICJzdHJpbmciOgogICAgICAgICAgICAgZm9yIChjb25zdCBzIG9mIHRoaXMuX3NlY3Rp
b25zKQogICAgICAgICAgICAgICAgIGlmIChzLm5hbWUgPT09IG5hbWVPck51bWJlcikKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvd2FzbS9CdWlsZGVyX1dlYkFzc2VtYmx5QmluYXJ5LmpzIGIvSlNUZXN0
cy93YXNtL0J1aWxkZXJfV2ViQXNzZW1ibHlCaW5hcnkuanMKaW5kZXggZjJiMGE1MjE4NzM5MTYw
MzBjNzM4NjM2YWNkYWNhM2U2NzJlYzIxZC4uMTU0MDMyOTNhMmE5NGFlMDgwMGM4YzM5MmJjNTJm
NWNmNTFmMmU0YSAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNtL0J1aWxkZXJfV2ViQXNzZW1ibHlC
aW5hcnkuanMKKysrIGIvSlNUZXN0cy93YXNtL0J1aWxkZXJfV2ViQXNzZW1ibHlCaW5hcnkuanMK
QEAgLTIzLDYgKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAoraW1wb3J0ICogYXMgYXNz
ZXJ0IGZyb20gJ2Fzc2VydC5qcyc7CiBpbXBvcnQgTG93TGV2ZWxCaW5hcnkgZnJvbSAnTG93TGV2
ZWxCaW5hcnkuanMnOwogaW1wb3J0ICogYXMgV0FTTSBmcm9tICdXQVNNLmpzJzsKIApAQCAtMzAs
MTEgKzMxLDExIEBAIGNvbnN0IHB1dCA9IChiaW4sIHR5cGUsIHZhbHVlKSA9PiBiaW5bdHlwZV0o
dmFsdWUpOwogCiBjb25zdCBlbWl0dGVycyA9IHsKICAgICBUeXBlOiAoc2VjdGlvbiwgYmluKSA9
PiB7Ci0gICAgICAgIHB1dChiaW4sICJ2YXJ1aW50Iiwgc2VjdGlvbi5kYXRhLmxlbmd0aCk7Cisg
ICAgICAgIHB1dChiaW4sICJ2YXJ1aW50MzIiLCBzZWN0aW9uLmRhdGEubGVuZ3RoKTsKICAgICAg
ICAgZm9yIChjb25zdCBlbnRyeSBvZiBzZWN0aW9uLmRhdGEpIHsKICAgICAgICAgICAgIGNvbnN0
IGZ1bmNUeXBlQ29uc3RydWN0b3IgPSAtMHgyMDsgLy8gRklYTUUgTW92ZSB0aGlzIHRvIHdhc20u
anNvbi4KICAgICAgICAgICAgIHB1dChiaW4sICJ2YXJpbnQ3IiwgZnVuY1R5cGVDb25zdHJ1Y3Rv
cik7Ci0gICAgICAgICAgICBwdXQoYmluLCAidmFydWludCIsIGVudHJ5LnBhcmFtcy5sZW5ndGgp
OworICAgICAgICAgICAgcHV0KGJpbiwgInZhcnVpbnQzMiIsIGVudHJ5LnBhcmFtcy5sZW5ndGgp
OwogICAgICAgICAgICAgZm9yIChjb25zdCBwYXJhbSBvZiBlbnRyeS5wYXJhbXMpCiAgICAgICAg
ICAgICAgICAgcHV0KGJpbiwgInVpbnQ4IiwgV0FTTS52YWx1ZVR5cGVWYWx1ZVtwYXJhbV0pOwog
ICAgICAgICAgICAgaWYgKGVudHJ5LnJldCA9PT0gInZvaWQiKQpAQCAtNDYsNDIgKzQ3LDgxIEBA
IGNvbnN0IGVtaXR0ZXJzID0gewogICAgICAgICB9CiAgICAgfSwKICAgICBJbXBvcnQ6IChzZWN0
aW9uLCBiaW4pID0+IHsKLSAgICAgICAgcHV0KGJpbiwgInZhcnVpbnQiLCBzZWN0aW9uLmRhdGEu
bGVuZ3RoKTsKKyAgICAgICAgcHV0KGJpbiwgInZhcnVpbnQzMiIsIHNlY3Rpb24uZGF0YS5sZW5n
dGgpOwogICAgICAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIHNlY3Rpb24uZGF0YSkgewogICAgICAg
ICAgICAgcHV0KGJpbiwgInN0cmluZyIsIGVudHJ5Lm1vZHVsZSk7CiAgICAgICAgICAgICBwdXQo
YmluLCAic3RyaW5nIiwgZW50cnkuZmllbGQpOwogICAgICAgICAgICAgcHV0KGJpbiwgInVpbnQ4
IiwgV0FTTS5leHRlcm5hbEtpbmRWYWx1ZVtlbnRyeS5raW5kXSk7CiAgICAgICAgICAgICBzd2l0
Y2ggKGVudHJ5LmtpbmQpIHsKICAgICAgICAgICAgIGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcihg
SW1wbGVtZW50YXRpb24gcHJvYmxlbTogdW5leHBlY3RlZCBraW5kICR7ZW50cnkua2luZH1gKTsK
LSAgICAgICAgICAgIGNhc2UgIkZ1bmN0aW9uIjogcHV0KGJpbiwgInZhcnVpbnQiLCBlbnRyeS50
eXBlKTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlICJGdW5jdGlvbiI6IHB1dChiaW4sICJ2YXJ1
aW50MzIiLCBlbnRyeS50eXBlKTsgYnJlYWs7CiAgICAgICAgICAgICBjYXNlICJUYWJsZSI6IHRo
cm93IG5ldyBFcnJvcihgTm90IHlldCBpbXBsZW1lbnRlZGApOwogICAgICAgICAgICAgY2FzZSAi
TWVtb3J5IjogdGhyb3cgbmV3IEVycm9yKGBOb3QgeWV0IGltcGxlbWVudGVkYCk7CiAgICAgICAg
ICAgICBjYXNlICJHbG9iYWwiOiB0aHJvdyBuZXcgRXJyb3IoYE5vdCB5ZXQgaW1wbGVtZW50ZWRg
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0sCi0gICAgRnVuY3Rpb246IChzZWN0
aW9uLCBiaW4pID0+IHsgdGhyb3cgbmV3IEVycm9yKGBOb3QgeWV0IGltcGxlbWVudGVkYCk7IH0s
CisKKyAgICBGdW5jdGlvbjogKHNlY3Rpb24sIGJpbikgPT4geworICAgICAgICBwdXQoYmluLCAi
dmFydWludDMyIiwgc2VjdGlvbi5kYXRhLmxlbmd0aCk7CisgICAgICAgIGZvciAoY29uc3Qgc2ln
bmF0dXJlIG9mIHNlY3Rpb24uZGF0YSkKKyAgICAgICAgICAgIHB1dChiaW4sICJ2YXJ1aW50MzIi
LCBzaWduYXR1cmUpOworICAgIH0sCisKICAgICBUYWJsZTogKHNlY3Rpb24sIGJpbikgPT4geyB0
aHJvdyBuZXcgRXJyb3IoYE5vdCB5ZXQgaW1wbGVtZW50ZWRgKTsgfSwKLSAgICBNZW1vcnk6IChz
ZWN0aW9uLCBiaW4pID0+IHsgdGhyb3cgbmV3IEVycm9yKGBOb3QgeWV0IGltcGxlbWVudGVkYCk7
IH0sCisKKyAgICBNZW1vcnk6IChzZWN0aW9uLCBiaW4pID0+IHsKKyAgICAgICAgLy8gRmxhZ3Ms
IGN1cnJlbnRseSBjYW4gb25seSBiZSBbMCwxXQorICAgICAgICBwdXQoYmluLCAidmFydWludDEi
LCBzZWN0aW9uLmRhdGEubGVuZ3RoKTsKKyAgICAgICAgZm9yIChjb25zdCBtZW1vcnkgb2Ygc2Vj
dGlvbi5kYXRhKSB7CisgICAgICAgICAgICBwdXQoYmluLCAidmFydWludDMyIiwgbWVtb3J5Lm1h
eCA/IDEgOiAwKTsKKyAgICAgICAgICAgIHB1dChiaW4sICJ2YXJ1aW50MzIiLCBtZW1vcnkuaW5p
dGlhbCk7CisgICAgICAgICAgICBpZiAobWVtb3J5Lm1heCkKKyAgICAgICAgICAgICAgICBwdXQo
YmluLCAidmFydWludDMyIiwgbWVtb3J5Lm1heCk7CisgICAgICAgIH0KKyAgICB9LAorCiAgICAg
R2xvYmFsOiAoc2VjdGlvbiwgYmluKSA9PiB7IHRocm93IG5ldyBFcnJvcihgTm90IHlldCBpbXBs
ZW1lbnRlZGApOyB9LAogICAgIEV4cG9ydDogKHNlY3Rpb24sIGJpbikgPT4geyB0aHJvdyBuZXcg
RXJyb3IoYE5vdCB5ZXQgaW1wbGVtZW50ZWRgKTsgfSwKICAgICBTdGFydDogKHNlY3Rpb24sIGJp
bikgPT4geyB0aHJvdyBuZXcgRXJyb3IoYE5vdCB5ZXQgaW1wbGVtZW50ZWRgKTsgfSwKICAgICBF
bGVtZW50OiAoc2VjdGlvbiwgYmluKSA9PiB7IHRocm93IG5ldyBFcnJvcihgTm90IHlldCBpbXBs
ZW1lbnRlZGApOyB9LAorCiAgICAgQ29kZTogKHNlY3Rpb24sIGJpbikgPT4gewotICAgICAgICBw
dXQoYmluLCAidmFydWludCIsIHNlY3Rpb24uZGF0YS5sZW5ndGgpOworICAgICAgICBwdXQoYmlu
LCAidmFydWludDMyIiwgc2VjdGlvbi5kYXRhLmxlbmd0aCk7CiAgICAgICAgIGZvciAoY29uc3Qg
ZnVuYyBvZiBzZWN0aW9uLmRhdGEpIHsKLSAgICAgICAgICAgIGxldCBmdW5jQmluID0gYmluLm5l
d1BhdGNoYWJsZSgidmFydWludCIpOwotICAgICAgICAgICAgY29uc3QgbG9jYWxDb3VudCA9IGZ1
bmMubG9jYWxzLmxlbmd0aDsKLSAgICAgICAgICAgIHB1dChmdW5jQmluLCAidmFydWludCIsIGxv
Y2FsQ291bnQpOwotICAgICAgICAgICAgaWYgKGxvY2FsQ291bnQgIT09IDApIHRocm93IG5ldyBF
cnJvcihgVW5pbXBsZW1lbnRlZDogbG9jYWxzYCk7IC8vIEZJWE1FIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI3MDYKKyAgICAgICAgICAgIGxldCBmdW5jQmluID0g
YmluLm5ld1BhdGNoYWJsZSgidmFydWludDMyIik7CisgICAgICAgICAgICBjb25zdCBsb2NhbENv
dW50ID0gZnVuYy5sb2NhbHMubGVuZ3RoIC0gZnVuYy5wYXJhbWV0ZXJDb3VudDsKKyAgICAgICAg
ICAgIHB1dChmdW5jQmluLCAidmFydWludDMyIiwgbG9jYWxDb3VudCk7CisgICAgICAgICAgICBm
b3IgKGxldCBpID0gZnVuYy5wYXJhbWV0ZXJDb3VudDsgaSA8IGZ1bmMubG9jYWxzLmxlbmd0aDsg
KytpKSB7CisgICAgICAgICAgICAgICAgcHV0KGZ1bmNCaW4sICJ2YXJ1aW50MzIiLCAxKTsKKyAg
ICAgICAgICAgICAgICBwdXQoZnVuY0JpbiwgInVpbnQ4IiwgV0FTTS52YWx1ZVR5cGVWYWx1ZVtm
dW5jLmxvY2Fsc1tpXV0pOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBmb3IgKGNvbnN0
IG9wIG9mIGZ1bmMuY29kZSkgewogICAgICAgICAgICAgICAgIHB1dChmdW5jQmluLCAidWludDgi
LCBvcC52YWx1ZSk7Ci0gICAgICAgICAgICAgICAgaWYgKG9wLmFyZ3VtZW50cy5sZW5ndGggIT09
IDApIHRocm93IG5ldyBFcnJvcihgVW5pbXBsZW1lbnRlZDogYXJndW1lbnRzYCk7IC8vIEZJWE1F
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI3MDYKLSAgICAgICAg
ICAgICAgICBpZiAob3AuaW1tZWRpYXRlcy5sZW5ndGggIT09IDApIHRocm93IG5ldyBFcnJvcihg
VW5pbXBsZW1lbnRlZDogaW1tZWRpYXRlc2ApOyAvLyBGSVhNRSBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyNzA2CisgICAgICAgICAgICAgICAgaWYgKG9wLmFyZ3Vt
ZW50cy5sZW5ndGggIT09IDApCisgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihg
VW5pbXBsZW1lbnRlZDogYXJndW1lbnRzYCk7IC8vIEZJWE1FIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI3MDYKKworICAgICAgICAgICAgICAgIHN3aXRjaCAob3Au
bmFtZSkgeworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGZv
ciAobGV0IGkgPSAwOyBpIDwgb3AuaW1tZWRpYXRlcy5sZW5ndGg7ICsraSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgdHlwZSA9IFdBU00uZGVzY3JpcHRpb24ub3Bjb2RlW29wLm5h
bWVdLmltbWVkaWF0ZVtpXS50eXBlCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWZ1bmNC
aW5bdHlwZV0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJv
cihgVW5rbm93biB0eXBlOiAke3R5cGV9IGluIG9wOiAke29wLm5hbWV9YCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBwdXQoZnVuY0JpbiwgdHlwZSwgb3AuaW1tZWRpYXRlc1tpXSk7CisgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgY2FzZSAiYnJfdGFibGUiOgorICAgICAgICAgICAgICAgICAgICBwdXQoZnVuY0Jpbiwg
InZhcnVpbnQzMiIsIG9wLmltbWVkaWF0ZXMubGVuZ3RoIC0gMSk7CisgICAgICAgICAgICAgICAg
ICAgIGZvciAobGV0IGltbSBvZiBvcC5pbW1lZGlhdGVzKQorICAgICAgICAgICAgICAgICAgICAg
ICAgcHV0KGZ1bmNCaW4sICJ2YXJ1aW50MzIiLCBpbW0pOworICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBmdW5j
QmluLmFwcGx5KCk7CiAgICAgICAgIH0KICAgICB9LAorCiAgICAgRGF0YTogKHNlY3Rpb24sIGJp
bikgPT4geyB0aHJvdyBuZXcgRXJyb3IoYE5vdCB5ZXQgaW1wbGVtZW50ZWRgKTsgfSwKIH07CiAK
QEAgLTkxLDcgKzEzMSw3IEBAIGV4cG9ydCBjb25zdCBCaW5hcnkgPSAocHJlYW1ibGUsIHNlY3Rp
b25zKSA9PiB7CiAgICAgICAgIHB1dCh3YXNtQmluLCBwLnR5cGUsIHByZWFtYmxlW3AubmFtZV0p
OwogICAgIGZvciAoY29uc3Qgc2VjdGlvbiBvZiBzZWN0aW9ucykgewogICAgICAgICBwdXQod2Fz
bUJpbiwgV0FTTS5zZWN0aW9uRW5jb2RpbmdUeXBlLCBzZWN0aW9uLmlkKTsKLSAgICAgICAgbGV0
IHNlY3Rpb25CaW4gPSB3YXNtQmluLm5ld1BhdGNoYWJsZSgidmFydWludCIpOworICAgICAgICBs
ZXQgc2VjdGlvbkJpbiA9IHdhc21CaW4ubmV3UGF0Y2hhYmxlKCJ2YXJ1aW50MzIiKTsKICAgICAg
ICAgY29uc3QgZW1pdHRlciA9IGVtaXR0ZXJzW3NlY3Rpb24ubmFtZV07CiAgICAgICAgIGlmIChl
bWl0dGVyKQogICAgICAgICAgICAgZW1pdHRlcihzZWN0aW9uLCBzZWN0aW9uQmluKTsKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvd2FzbS9Mb3dMZXZlbEJpbmFyeS5qcyBiL0pTVGVzdHMvd2FzbS9Mb3dM
ZXZlbEJpbmFyeS5qcwppbmRleCA3MjAwOTc2MDhjODY2NzUxYTQ1ODRmZDNhNTM0ZWZjNTJjY2I3
ZmE0Li5lNDNiMzQ2YmQyMDc5MjkwMmZmMWQ1NmFhNGJiZDc4NDkwYTA0MTUyIDEwMDY0NAotLS0g
YS9KU1Rlc3RzL3dhc20vTG93TGV2ZWxCaW5hcnkuanMKKysrIGIvSlNUZXN0cy93YXNtL0xvd0xl
dmVsQmluYXJ5LmpzCkBAIC0yMywxNiArMjMsMTggQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAor
aW1wb3J0ICogYXMgV0FTTSBmcm9tICdXQVNNLmpzJzsKKwogY29uc3QgX2luaXRpYWxBbGxvY2F0
aW9uU2l6ZSA9IDEwMjQ7CiBjb25zdCBfZ3Jvd0FsbG9jYXRpb25TaXplID0gYWxsb2NhdGVkID0+
IGFsbG9jYXRlZCAqIDI7CiAKLWV4cG9ydCBjb25zdCB2YXJ1aW50TWluID0gMDsKK2V4cG9ydCBj
b25zdCB2YXJ1aW50MzJNaW4gPSAwOwogZXhwb3J0IGNvbnN0IHZhcmludDdNaW4gPSAtMGIxMDAw
MDAwOwogZXhwb3J0IGNvbnN0IHZhcmludDdNYXggPSAwYjExMTExMTsKIGV4cG9ydCBjb25zdCB2
YXJ1aW50N01heCA9IDBiMTExMTExMTsKLWV4cG9ydCBjb25zdCB2YXJ1aW50TWF4ID0gKCgoKDEg
PDwgMzEpID4+PiAwKSAtIDEpICogMikgKyAxOwotZXhwb3J0IGNvbnN0IHZhcmludE1pbiA9IC0o
KDEgPDwgMzEpID4+PiAwKTsKLWV4cG9ydCBjb25zdCB2YXJpbnRNYXggPSAoKDEgPDwgMzEpIC0g
MSkgPj4+IDA7CitleHBvcnQgY29uc3QgdmFydWludDMyTWF4ID0gKCgoKDEgPDwgMzEpID4+PiAw
KSAtIDEpICogMikgKyAxOworZXhwb3J0IGNvbnN0IHZhcmludDMyTWluID0gLSgoMSA8PCAzMSkg
Pj4+IDApOworZXhwb3J0IGNvbnN0IHZhcmludDMyTWF4ID0gKCgxIDw8IDMxKSAtIDEpID4+PiAw
OwogZXhwb3J0IGNvbnN0IHZhckJpdHNNYXggPSA1OwogCiBjb25zdCBfZ2V0dGVyUmFuZ2VDaGVj
ayA9IChsbGIsIGF0LCBzaXplKSA9PiB7CkBAIC03NSw2ICs3Nyw4IEBAIGV4cG9ydCBkZWZhdWx0
IGNsYXNzIExvd0xldmVsQmluYXJ5IHsKIAogICAgIC8vIFV0aWxpdGllcy4KICAgICBnZXQoKSB7
IHJldHVybiB0aGlzLl9idWY7IH0KKyAgICB0cmltKCkgeyB0aGlzLl9idWYgPSB0aGlzLl9idWYu
c2xpY2UoMCwgdGhpcy5fdXNlZCk7IH0KKwogICAgIGhleGR1bXAoKSB7IHJldHVybiBfaGV4ZHVt
cCh0aGlzLl9idWYsIHRoaXMuX3VzZWQpOyB9CiAgICAgX21heWJlR3JvdyhieXRlcykgewogICAg
ICAgICBjb25zdCBhbGxvY2F0ZWQgPSB0aGlzLl9idWYubGVuZ3RoOwpAQCAtMTA5LDE4ICsxMTMs
MTggQEAgZXhwb3J0IGRlZmF1bHQgY2xhc3MgTG93TGV2ZWxCaW5hcnkgewogICAgICAgICB0aGlz
Ll9wdXNoOCh2ID4+PiAxNik7CiAgICAgICAgIHRoaXMuX3B1c2g4KHYgPj4+IDI0KTsKICAgICB9
Ci0gICAgdmFydWludCh2KSB7Ci0gICAgICAgIGlmICh2IDwgdmFydWludE1pbiB8fCB2YXJ1aW50
TWF4IDwgdikKLSAgICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKGBJbnZhbGlkIHZhcnVp
bnQgJHt2fSByYW5nZSBpcyBbJHt2YXJ1aW50TWlufSwgJHt2YXJ1aW50TWF4fV1gKTsKKyAgICB2
YXJ1aW50MzIodikgeworICAgICAgICBpZiAodiA8IHZhcnVpbnQzMk1pbiB8fCB2YXJ1aW50MzJN
YXggPCB2KQorICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoYEludmFsaWQgdmFydWlu
dDMyICR7dn0gcmFuZ2UgaXMgWyR7dmFydWludDMyTWlufSwgJHt2YXJ1aW50MzJNYXh9XWApOwog
ICAgICAgICB3aGlsZSAodiA+PSAweDgwKSB7CiAgICAgICAgICAgICB0aGlzLnVpbnQ4KDB4ODAg
fCAodiAmIDB4N0YpKTsKICAgICAgICAgICAgIHYgPj4+PSA3OwogICAgICAgICB9CiAgICAgICAg
IHRoaXMudWludDgodik7CiAgICAgfQotICAgIHZhcmludCh2KSB7Ci0gICAgICAgIGlmICh2IDwg
dmFyaW50TWluIHx8IHZhcmludE1heCA8IHYpCi0gICAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VF
cnJvcihgSW52YWxpZCB2YXJpbnQgJHt2fSByYW5nZSBpcyBbJHt2YXJpbnRNaW59LCAke3Zhcmlu
dE1heH1dYCk7CisgICAgdmFyaW50MzIodikgeworICAgICAgICBpZiAodiA8IHZhcmludDMyTWlu
IHx8IHZhcmludDMyTWF4IDwgdikKKyAgICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKGBJ
bnZhbGlkIHZhcmludDMyICR7dn0gcmFuZ2UgaXMgWyR7dmFyaW50MzJNaW59LCAke3ZhcmludDMy
TWF4fV1gKTsKICAgICAgICAgZG8gewogICAgICAgICAgICAgY29uc3QgYiA9IHYgJiAweDdGOwog
ICAgICAgICAgICAgdiA+Pj0gNzsKQEAgLTEzNCwyMCArMTM4LDIzIEBAIGV4cG9ydCBkZWZhdWx0
IGNsYXNzIExvd0xldmVsQmluYXJ5IHsKICAgICB2YXJ1aW50MSh2KSB7CiAgICAgICAgIGlmICh2
ICE9PSAwICYmIHYgIT09IDEpCiAgICAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihgSW52
YWxpZCB2YXJ1aW50MSAke3Z9IHJhbmdlIGlzIFswLCAxXWApOwotICAgICAgICB0aGlzLnZhcnVp
bnQodik7CisgICAgICAgIHRoaXMudmFydWludDMyKHYpOwogICAgIH0KICAgICB2YXJpbnQ3KHYp
IHsKICAgICAgICAgaWYgKHYgPCB2YXJpbnQ3TWluIHx8IHZhcmludDdNYXggPCB2KQogICAgICAg
ICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoYEludmFsaWQgdmFyaW50NyAke3Z9IHJhbmdlIGlz
IFske3ZhcmludDdNaW59LCAke3ZhcmludDdNYXh9XWApOwotICAgICAgICB0aGlzLnZhcmludCh2
KTsKKyAgICAgICAgdGhpcy52YXJpbnQzMih2KTsKICAgICB9CiAgICAgdmFydWludDcodikgewot
ICAgICAgICBpZiAodiA8IHZhcnVpbnRNaW4gfHwgdmFydWludDdNYXggPCB2KQotICAgICAgICAg
ICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoYEludmFsaWQgdmFydWludDcgJHt2fSByYW5nZSBpcyBb
JHt2YXJ1aW50TWlufSwgJHt2YXJ1aW50N01heH1dYCk7Ci0gICAgICAgIHRoaXMudmFydWludCh2
KTsKKyAgICAgICAgaWYgKHYgPCB2YXJ1aW50MzJNaW4gfHwgdmFydWludDdNYXggPCB2KQorICAg
ICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoYEludmFsaWQgdmFydWludDcgJHt2fSByYW5n
ZSBpcyBbJHt2YXJ1aW50MzJNaW59LCAke3ZhcnVpbnQ3TWF4fV1gKTsKKyAgICAgICAgdGhpcy52
YXJ1aW50MzIodik7CisgICAgfQorICAgIGlubGluZV9zaWduYXR1cmVfdHlwZSh2KSB7CisgICAg
ICAgIHRoaXMudmFyaW50NyhXQVNNLnZhbHVlVHlwZVZhbHVlW3ZdKTsKICAgICB9CiAgICAgc3Ry
aW5nKHN0cikgewotICAgICAgICBsZXQgcGF0Y2ggPSB0aGlzLm5ld1BhdGNoYWJsZSgidmFydWlu
dCIpOworICAgICAgICBsZXQgcGF0Y2ggPSB0aGlzLm5ld1BhdGNoYWJsZSgidmFydWludDMyIik7
CiAgICAgICAgIGZvciAoY29uc3QgY2hhciBvZiBzdHIpCiAgICAgICAgICAgICBwYXRjaC51aW50
MTYoY2hhci5jaGFyQ29kZUF0KCkpOwogICAgICAgICBwYXRjaC5hcHBseSgpOwpAQCAtMTY3LDcg
KzE3NCw3IEBAIGV4cG9ydCBkZWZhdWx0IGNsYXNzIExvd0xldmVsQmluYXJ5IHsKICAgICAgICAg
X2dldHRlclJhbmdlQ2hlY2sodGhpcywgYXQsIDQpOwogICAgICAgICByZXR1cm4gKHRoaXMuX2J1
ZlthdF0gfCAodGhpcy5fYnVmW2F0ICsgMV0gPDwgOCkgfCAodGhpcy5fYnVmW2F0ICsgMl0gPDwg
MTYpIHwgKHRoaXMuX2J1ZlthdCArIDNdIDw8IDI0KSkgPj4+IDA7CiAgICAgfQotICAgIGdldFZh
cnVpbnQoYXQpIHsKKyAgICBnZXRWYXJ1aW50MzIoYXQpIHsKICAgICAgICAgbGV0IHYgPSAwOwog
ICAgICAgICBsZXQgc2hpZnQgPSAwOwogICAgICAgICBsZXQgYnl0ZSA9IDA7CkBAIC0xNzgsMTAg
KzE4NSwxMCBAQCBleHBvcnQgZGVmYXVsdCBjbGFzcyBMb3dMZXZlbEJpbmFyeSB7CiAgICAgICAg
ICAgICBzaGlmdCArPSA3OwogICAgICAgICB9IHdoaWxlICgoYnl0ZSAmIDB4ODApICE9PSAwKTsK
ICAgICAgICAgaWYgKHNoaWZ0IC0gNyA+IDMyKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcihgU2hpZnRp
bmcgdG9vIG11Y2ggYXQgJHthdH1gKTsKLSAgICAgICAgaWYgKChzaGlmdCA9PSAzNSkgJiYgKChi
eXRlICYgMHhGMCkgIT0gMCkpIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCBub24tc2lnbmlm
aWNhbnQgdmFydWludCBiaXRzIGluIGxhc3QgYnl0ZSAweCR7Ynl0ZS50b1N0cmluZygxNil9YCk7
CisgICAgICAgIGlmICgoc2hpZnQgPT0gMzUpICYmICgoYnl0ZSAmIDB4RjApICE9IDApKSB0aHJv
dyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgbm9uLXNpZ25pZmljYW50IHZhcnVpbnQzMiBiaXRzIGlu
IGxhc3QgYnl0ZSAweCR7Ynl0ZS50b1N0cmluZygxNil9YCk7CiAgICAgICAgIHJldHVybiB7IHZh
bHVlOiB2LCBuZXh0OiBhdCB9OwogICAgIH0KLSAgICBnZXRWYXJpbnQoYXQpIHsKKyAgICBnZXRW
YXJpbnQzMihhdCkgewogICAgICAgICBsZXQgdiA9IDA7CiAgICAgICAgIGxldCBzaGlmdCA9IDA7
CiAgICAgICAgIGxldCBieXRlID0gMDsKQEAgLTE5MSw3ICsxOTgsNyBAQCBleHBvcnQgZGVmYXVs
dCBjbGFzcyBMb3dMZXZlbEJpbmFyeSB7CiAgICAgICAgICAgICBzaGlmdCArPSA3OwogICAgICAg
ICB9IHdoaWxlICgoYnl0ZSAmIDB4ODApICE9PSAwKTsKICAgICAgICAgaWYgKHNoaWZ0IC0gNyA+
IDMyKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcihgU2hpZnRpbmcgdG9vIG11Y2ggYXQgJHthdH1gKTsK
LSAgICAgICAgaWYgKChzaGlmdCA9PSAzNSkgJiYgKCgoYnl0ZSA8PCAyNikgPj4gMzApICE9ICgo
Ynl0ZSA8PCAyNSkgPj4gMzEpKSkgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIG5vbi1zaWdu
aWZpY2FudCB2YXJpbnQgYml0cyBpbiBsYXN0IGJ5dGUgMHgke2J5dGUudG9TdHJpbmcoMTYpfWAp
OworICAgICAgICBpZiAoKHNoaWZ0ID09IDM1KSAmJiAoKChieXRlIDw8IDI2KSA+PiAzMCkgIT0g
KChieXRlIDw8IDI1KSA+PiAzMSkpKSB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgbm9uLXNp
Z25pZmljYW50IHZhcmludDMyIGJpdHMgaW4gbGFzdCBieXRlIDB4JHtieXRlLnRvU3RyaW5nKDE2
KX1gKTsKICAgICAgICAgaWYgKChieXRlICYgMHg0MCkgPT09IDB4NDApIHsKICAgICAgICAgICAg
IGNvbnN0IHNleHQgPSBzaGlmdCA8IDMyID8gMzIgLSBzaGlmdCA6IDA7CiAgICAgICAgICAgICB2
ID0gKHYgPDwgc2V4dCkgPj4gc2V4dDsKQEAgLTE5OSwxMiArMjA2LDEyIEBAIGV4cG9ydCBkZWZh
dWx0IGNsYXNzIExvd0xldmVsQmluYXJ5IHsKICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IHYsIG5l
eHQ6IGF0IH07CiAgICAgfQogICAgIGdldFZhcnVpbnQ3KGF0KSB7Ci0gICAgICAgIGNvbnN0IHJl
cyA9IHRoaXMuZ2V0VmFydWludChhdCk7CisgICAgICAgIGNvbnN0IHJlcyA9IHRoaXMuZ2V0VmFy
dWludDMyKGF0KTsKICAgICAgICAgaWYgKHJlcy52YWx1ZSA+IHZhcnVpbnQ3TWF4KSB0aHJvdyBu
ZXcgRXJyb3IoYEV4cGVjdGVkIGEgdmFydWludDcsIGdvdCB2YWx1ZSAke3Jlcy52YWx1ZX1gKTsK
ICAgICAgICAgcmV0dXJuIHJlczsKICAgICB9CiAgICAgZ2V0U3RyaW5nKGF0KSB7Ci0gICAgICAg
IGNvbnN0IHNpemUgPSB0aGlzLmdldFZhcnVpbnQoYXQpOworICAgICAgICBjb25zdCBzaXplID0g
dGhpcy5nZXRWYXJ1aW50MzIoYXQpOwogICAgICAgICBsZXQgc3RyID0gIiI7CiAgICAgICAgIGZv
ciAobGV0IGkgPSBzaXplLm5leHQ7IGkgIT09IHNpemUubmV4dCArIHNpemUudmFsdWU7IGkgKz0g
MikKICAgICAgICAgICAgIHN0ciArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKHRoaXMuZ2V0VWludDE2
KGkpKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9qcy1hcGkvZnVuY3Rpb24tdGVzdHMvYWRk
LTEyLmpzIGIvSlNUZXN0cy93YXNtL2pzLWFwaS9mdW5jdGlvbi10ZXN0cy9hZGQtMTIuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYTczY2Y0YmZmOTY5Y2I4YjA1NzkzNGQ2NWRmMDQ4NzNiYzU0MjY2YQotLS0gL2Rl
di9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkvZnVuY3Rpb24tdGVzdHMvYWRkLTEyLmpz
CkBAIC0wLDAgKzEsNjEgQEAKK2ltcG9ydCBCdWlsZGVyIGZyb20gJy4uLy4uL0J1aWxkZXIuanMn
CisKK2NvbnN0IGIgPSBuZXcgQnVpbGRlcigpOworYi5zZXRDaGVja2VkKGZhbHNlKTsKK2IuVHlw
ZSgpLkVuZCgpCisgICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAuQ29kZSgpCisgICAgLkZ1bmN0
aW9uKHsgcGFyYW1zOiBbImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwg
ImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIl0sIHJldDogImkzMiIgfSwg
W10pCisgICAgLkdldExvY2FsKDApCisgICAgLkdldExvY2FsKDEpCisgICAgLkkzMkFkZCgpCisg
ICAgLkdldExvY2FsKDIpCisgICAgLkkzMkFkZCgpCisgICAgLkdldExvY2FsKDMpCisgICAgLkkz
MkFkZCgpCisgICAgLkdldExvY2FsKDQpCisgICAgLkkzMkFkZCgpCisgICAgLkdldExvY2FsKDUp
CisgICAgLkkzMkFkZCgpCisgICAgLkdldExvY2FsKDYpCisgICAgLkkzMkFkZCgpCisgICAgLkdl
dExvY2FsKDcpCisgICAgLkkzMkFkZCgpCisgICAgLkdldExvY2FsKDgpCisgICAgLkkzMkFkZCgp
CisgICAgLkdldExvY2FsKDkpCisgICAgLkkzMkFkZCgpCisgICAgLkdldExvY2FsKDEwKQorICAg
IC5JMzJBZGQoKQorICAgIC5HZXRMb2NhbCgxMSkKKyAgICAuSTMyQWRkKCkKKyAgICAuUmV0dXJu
KCkKKyAgICAuRW5kKCkKKworICAgIC5GdW5jdGlvbih7IHBhcmFtczogWyJpMzIiXSwgcmV0OiAi
aTMyIiB9KQorICAgIC5HZXRMb2NhbCgwKQorICAgIC5HZXRMb2NhbCgwKQorICAgIC5HZXRMb2Nh
bCgwKQorICAgIC5HZXRMb2NhbCgwKQorICAgIC5HZXRMb2NhbCgwKQorICAgIC5HZXRMb2NhbCgw
KQorICAgIC5HZXRMb2NhbCgwKQorICAgIC5HZXRMb2NhbCgwKQorICAgIC5HZXRMb2NhbCgwKQor
ICAgIC5HZXRMb2NhbCgwKQorICAgIC5HZXRMb2NhbCgwKQorICAgIC5HZXRMb2NhbCgwKQorICAg
IC5DYWxsKDApCisgICAgLkVuZCgpCisKK2NvbnN0IGJpbiA9IGIuV2ViQXNzZW1ibHkoKQorYmlu
LnRyaW0oKTsKK3Rlc3RXYXNtTW9kdWxlRnVuY3Rpb25zKGJpbi5nZXQoKSwgMiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIFtbeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDc4IH0sIFt7IHR5cGU6ICJp
MzIiLCB2YWx1ZTogMSB9LCB7IHR5cGU6ICJpMzIiLCB2YWx1ZTogMiB9LCB7IHR5cGU6ICJpMzIi
LCB2YWx1ZTogMyB9LCB7IHR5cGU6ICJpMzIiLCB2YWx1ZTogNCB9LCB7IHR5cGU6ICJpMzIiLCB2
YWx1ZTogNSB9LCB7IHR5cGU6ICJpMzIiLCB2YWx1ZTogNiB9LCB7IHR5cGU6ICJpMzIiLCB2YWx1
ZTogNyB9LCB7IHR5cGU6ICJpMzIiLCB2YWx1ZTogOCB9LCB7IHR5cGU6ICJpMzIiLCB2YWx1ZTog
OSB9LCB7IHR5cGU6ICJpMzIiLCB2YWx1ZTogMTAgfSwgeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDEx
IH0sIHsgdHlwZTogImkzMiIsIHZhbHVlOiAxMiB9XV0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAxNjYgfSwgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAx
IH0sIHsgdHlwZTogImkzMiIsIHZhbHVlOiAyIH0sIHsgdHlwZTogImkzMiIsIHZhbHVlOiAzIH0s
IHsgdHlwZTogImkzMiIsIHZhbHVlOiA0IH0sIHsgdHlwZTogImkzMiIsIHZhbHVlOiA1IH0sIHsg
dHlwZTogImkzMiIsIHZhbHVlOiA2IH0sIHsgdHlwZTogImkzMiIsIHZhbHVlOiA3IH0sIHsgdHlw
ZTogImkzMiIsIHZhbHVlOiA4IH0sIHsgdHlwZTogImkzMiIsIHZhbHVlOiA5IH0sIHsgdHlwZTog
ImkzMiIsIHZhbHVlOiAxMCB9LCB7IHR5cGU6ICJpMzIiLCB2YWx1ZTogMTEgfSwgeyB0eXBlOiAi
aTMyIiwgdmFsdWU6IDEwMCB9XV0KKyAgICAgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAg
ICAgICAgICAgICAgICAgICBbW3sgdHlwZTogImkzMiIsIHZhbHVlOiAxMiB9LCBbeyB0eXBlOiAi
aTMyIiwgdmFsdWU6IDEgfV1dLAorICAgICAgICAgICAgICAgICAgICAgICAgIFt7IHR5cGU6ICJp
MzIiLCB2YWx1ZTogMTIwMCB9LCBbeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDEwMCB9XV0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAwIH0sIFt7IHR5cGU6
ICJpMzIiLCB2YWx1ZTogMCB9XV0sCisgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAg
ICAgICAgICAgICAgICAgICk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vanMtYXBpL2Z1bmN0
aW9uLXRlc3RzL2JyLWlmLWxvb3AtbGVzcy10aGFuLmpzIGIvSlNUZXN0cy93YXNtL2pzLWFwaS9m
dW5jdGlvbi10ZXN0cy9ici1pZi1sb29wLWxlc3MtdGhhbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNzhiYzEw
NjUzYzhjYzU1ZjgxZDYxNWFlZDE3ODcyZTdhODNjYTdmCi0tLSAvZGV2L251bGwKKysrIGIvSlNU
ZXN0cy93YXNtL2pzLWFwaS9mdW5jdGlvbi10ZXN0cy9ici1pZi1sb29wLWxlc3MtdGhhbi5qcwpA
QCAtMCwwICsxLDUxIEBACitpbXBvcnQgQnVpbGRlciBmcm9tICcuLi8uLi9CdWlsZGVyLmpzJwor
Citjb25zdCBiID0gbmV3IEJ1aWxkZXIoKTsKK2Iuc2V0Q2hlY2tlZChmYWxzZSk7CitiLlR5cGUo
KS5FbmQoKQorICAgIC5GdW5jdGlvbigpLkVuZCgpCisgICAgLkNvZGUoKQorICAgIC5GdW5jdGlv
bih7IHBhcmFtczogWyJpMzIiLCAiaTMyIl0sIHJldDogImkzMiIgfSwgW10pCisgICAgLkxvb3Ao
InZvaWQiKQorICAgIC5CbG9jaygidm9pZCIsIGIgPT4KKyAgICAgICAgICAgYi5CbG9jaygidm9p
ZCIsIGIgPT4KKyAgICAgICAgICAgICAgICAgICBiLkdldExvY2FsKDApCisgICAgICAgICAgICAg
ICAgICAgLkdldExvY2FsKDEpCisgICAgICAgICAgICAgICAgICAgLkkzMkVxKCkKKyAgICAgICAg
ICAgICAgICAgICAuQnJJZigwKQorICAgICAgICAgICAgICAgICAgIC5CcigxKQorICAgICAgICAg
ICAgICAgICAgKQorICAgICAgICAgICAuSTMyQ29uc3QoMCkKKyAgICAgICAgICAgLlJldHVybigp
CisgICAgICAgICAgKQorICAgIC5CbG9jaygidm9pZCIsIGIgPT4KKyAgICAgICAgICAgYi5CbG9j
aygidm9pZCIsIGIgPT4KKyAgICAgICAgICAgICAgICAgICBiLkdldExvY2FsKDApCisgICAgICAg
ICAgICAgICAgICAgLkkzMkNvbnN0KDApCisgICAgICAgICAgICAgICAgICAgLkkzMkVxKCkKKyAg
ICAgICAgICAgICAgICAgICAuQnJJZigwKQorICAgICAgICAgICAgICAgICAgIC5CcigxKQorICAg
ICAgICAgICAgICAgICAgKQorICAgICAgICAgICAuSTMyQ29uc3QoMSkKKyAgICAgICAgICAgLlJl
dHVybigpCisgICAgICAgICAgKQorICAgIC5HZXRMb2NhbCgwKQorICAgIC5JMzJDb25zdCgxKQor
ICAgIC5JMzJTdWIoKQorICAgIC5TZXRMb2NhbCgwKQorICAgIC5CcigwKQorICAgIC5FbmQoKQor
ICAgIC5VbnJlYWNoYWJsZSgpCisgICAgLkVuZCgpCisKK2NvbnN0IGJpbiA9IGIuV2ViQXNzZW1i
bHkoKQorYmluLnRyaW0oKTsKK3Rlc3RXYXNtTW9kdWxlRnVuY3Rpb25zKGJpbi5nZXQoKSwgMSwg
W1t7dHlwZTogImkzMiIsIHZhbHVlOiAxIH0sIFt7IHR5cGU6ICJpMzIiLCB2YWx1ZTogMCB9LCB7
IHR5cGU6ICJpMzIiLCB2YWx1ZTogMSB9XV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBbe3R5cGU6ICJpMzIiLCB2YWx1ZTogMCB9LCBbeyB0eXBlOiAiaTMyIiwgdmFs
dWU6IDEgfSwgeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDAgfV1dLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgW3t0eXBlOiAiaTMyIiwgdmFsdWU6IDAgfSwgW3sgdHlwZTog
ImkzMiIsIHZhbHVlOiAyIH0sIHsgdHlwZTogImkzMiIsIHZhbHVlOiAxIH1dXSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt7dHlwZTogImkzMiIsIHZhbHVlOiAxIH0s
IFt7IHR5cGU6ICJpMzIiLCB2YWx1ZTogMSB9LCB7IHR5cGU6ICJpMzIiLCB2YWx1ZTogMiB9XV0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbe3R5cGU6ICJpMzIiLCB2
YWx1ZTogMCB9LCBbeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDIgfSwgeyB0eXBlOiAiaTMyIiwgdmFs
dWU6IDIgfV1dLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3t0eXBl
OiAiaTMyIiwgdmFsdWU6IDAgfSwgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAxIH0sIHsgdHlwZTog
ImkzMiIsIHZhbHVlOiAxIH1dXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFt7dHlwZTogImkzMiIsIHZhbHVlOiAxIH0sIFt7IHR5cGU6ICJpMzIiLCB2YWx1ZTogMiB9
LCB7IHR5cGU6ICJpMzIiLCB2YWx1ZTogNiB9XV0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBbe3R5cGU6ICJpMzIiLCB2YWx1ZTogMCB9LCBbeyB0eXBlOiAiaTMyIiwg
dmFsdWU6IDEwMCB9LCB7IHR5cGU6ICJpMzIiLCB2YWx1ZTogNiB9XV0KKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL2pzLWFwaS9mdW5jdGlvbi10ZXN0cy9iclRhYmxlQXNJ
Zi5qcyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkvZnVuY3Rpb24tdGVzdHMvYnJUYWJsZUFzSWYuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYWU5Mzc4NGFkMjFmZDM3MGZkNzllYmRhOGJjNDkwY2JkODQxNjk2YQotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkvZnVuY3Rpb24tdGVzdHMvYnJUYWJs
ZUFzSWYuanMKQEAgLTAsMCArMSwyNiBAQAoraW1wb3J0IEJ1aWxkZXIgZnJvbSAnLi4vLi4vQnVp
bGRlci5qcycKKworY29uc3QgYiA9IG5ldyBCdWlsZGVyKCk7CitiLnNldENoZWNrZWQoZmFsc2Up
OworYi5UeXBlKCkuRW5kKCkKKyAgICAuRnVuY3Rpb24oKS5FbmQoKQorICAgIC5Db2RlKCkKKyAg
ICAuRnVuY3Rpb24oeyBwYXJhbXM6IFsiaTMyIl0sIHJldDogImkzMiIgfSwgWyJpMzIiXSkKKyAg
ICAuQmxvY2soInZvaWQiLCAoYikgPT4KKyAgICAgICAgICAgYi5CbG9jaygidm9pZCIsIChiKSA9
PgorICAgICAgICAgICAgICAgICAgIGIuR2V0TG9jYWwoMCkKKyAgICAgICAgICAgICAgICAgICAu
QnJUYWJsZSgxLCAwKQorICAgICAgICAgICAgICAgICAgIC5JMzJDb25zdCgyMSkKKyAgICAgICAg
ICAgICAgICAgICAuUmV0dXJuKCkKKyAgICAgICAgICAgICAgICAgICkuSTMyQ29uc3QoMjApCisg
ICAgICAgICAgIC5SZXR1cm4oKQorICAgICAgICAgICkuSTMyQ29uc3QoMjIpCisgICAgLkVuZCgp
CisKK2NvbnN0IGJpbiA9IGIuV2ViQXNzZW1ibHkoKQorYmluLnRyaW0oKTsKK3Rlc3RXYXNtTW9k
dWxlRnVuY3Rpb25zKGJpbi5nZXQoKSwgMSwgW1t7dHlwZTogImkzMiIsIHZhbHVlOiAyMiB9LCBb
eyB0eXBlOiAiaTMyIiwgdmFsdWU6IDAgfV1dLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgW3t0eXBlOiAiaTMyIiwgdmFsdWU6IDIwIH0sIFt7IHR5cGU6ICJpMzIiLCB2
YWx1ZTogMSB9XV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbe3R5
cGU6ICJpMzIiLCB2YWx1ZTogMjAgfSwgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAxMSB9XV0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbe3R5cGU6ICJpMzIiLCB2YWx1
ZTogMjAgfSwgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAtMTAwIH1dXQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBdKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vanMtYXBpL2Z1bmN0aW9uLXRlc3RzL2JyVGFibGVNYW55
VmFsdWVzLmpzIGIvSlNUZXN0cy93YXNtL2pzLWFwaS9mdW5jdGlvbi10ZXN0cy9iclRhYmxlTWFu
eVZhbHVlcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNzkyNGZjYmMxNzJiNjMyNGEyMjAwOWU3MjIxOTY2ZTJj
ODAzOGUxCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy93YXNtL2pzLWFwaS9mdW5jdGlvbi10
ZXN0cy9iclRhYmxlTWFueVZhbHVlcy5qcwpAQCAtMCwwICsxLDQzIEBACitpbXBvcnQgQnVpbGRl
ciBmcm9tICcuLi8uLi9CdWlsZGVyLmpzJworCitjb25zdCBiID0gbmV3IEJ1aWxkZXIoKTsKK2Iu
c2V0Q2hlY2tlZChmYWxzZSk7CitiLlR5cGUoKS5FbmQoKQorICAgIC5GdW5jdGlvbigpLkVuZCgp
CisgICAgLkNvZGUoKQorICAgIC5GdW5jdGlvbih7IHBhcmFtczogWyJpMzIiXSwgcmV0OiAiaTMy
IiB9LCBbImkzMiJdKQorICAgIC5CbG9jaygiaTMyIiwgKGIpID0+CisgICAgICAgICAgIGIuQmxv
Y2soImkzMiIsIChiKSA9PgorICAgICAgICAgICAgICAgICAgIGIuQmxvY2soImkzMiIsIChiKSA9
PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgYi5CbG9jaygiaTMyIiwgKGIpID0+CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIuQmxvY2soImkzMiIsIChiKSA9PgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIuSTMyQ29uc3QoMjAwKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5HZXRMb2NhbCgwKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5CclRhYmxlKDMsIDIs
IDEsIDAsIDQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLkkz
MkNvbnN0KDEwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuSTMyQWRkKCkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLlJldHVybigpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKS5JMzJDb25zdCgxMSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC5JMzJBZGQoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLlJldHVybigp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICkuSTMyQ29uc3QoMTIpCisgICAgICAgICAgICAg
ICAgICAgLkkzMkFkZCgpCisgICAgICAgICAgICAgICAgICAgLlJldHVybigpCisgICAgICAgICAg
ICAgICAgICApLkkzMkNvbnN0KDEzKQorICAgICAgICAgICAuSTMyQWRkKCkKKyAgICAgICAgICAg
LlJldHVybigpCisgICAgICAgICAgKS5JMzJDb25zdCgxNCkKKyAgICAuSTMyQWRkKCkKKyAgICAu
UmV0dXJuKCkKKyAgICAuRW5kKCkKK2NvbnN0IGJpbiA9IGIuV2ViQXNzZW1ibHkoKQorYmluLnRy
aW0oKTsKK3Rlc3RXYXNtTW9kdWxlRnVuY3Rpb25zKGJpbi5nZXQoKSwgMSwgW1t7dHlwZTogImkz
MiIsIHZhbHVlOiAyMTMgfSwgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAwIH1dXSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt7dHlwZTogImkzMiIsIHZhbHVlOiAyMTIg
fSwgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAxIH1dXSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFt7dHlwZTogImkzMiIsIHZhbHVlOiAyMTEgfSwgW3sgdHlwZTogImkz
MiIsIHZhbHVlOiAyIH1dXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFt7dHlwZTogImkzMiIsIHZhbHVlOiAyMTAgfSwgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAzIH1d
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt7dHlwZTogImkzMiIs
IHZhbHVlOiAyMTQgfSwgW3sgdHlwZTogImkzMiIsIHZhbHVlOiA0IH1dXSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt7dHlwZTogImkzMiIsIHZhbHVlOiAyMTQgfSwg
W3sgdHlwZTogImkzMiIsIHZhbHVlOiA1IH1dXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFt7dHlwZTogImkzMiIsIHZhbHVlOiAyMTQgfSwgW3sgdHlwZTogImkzMiIs
IHZhbHVlOiAtMSB9XV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBb
e3R5cGU6ICJpMzIiLCB2YWx1ZTogMjE0IH0sIFt7IHR5cGU6ICJpMzIiLCB2YWx1ZTogLTEwMDAg
fV1dCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pOwpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9qcy1hcGkvZnVuY3Rp
b24tdGVzdHMvYnJUYWJsZVdpdGhMb29wLmpzIGIvSlNUZXN0cy93YXNtL2pzLWFwaS9mdW5jdGlv
bi10ZXN0cy9iclRhYmxlV2l0aExvb3AuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTJlYjgxNjI0YmM5Zjg2NGFm
ZWQ0YzllMWExZjdmZGI0ZjVhOGZjMgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9q
cy1hcGkvZnVuY3Rpb24tdGVzdHMvYnJUYWJsZVdpdGhMb29wLmpzCkBAIC0wLDAgKzEsMzAgQEAK
K2ltcG9ydCBCdWlsZGVyIGZyb20gJy4uLy4uL0J1aWxkZXIuanMnCisKK2NvbnN0IGIgPSBuZXcg
QnVpbGRlcigpOworYi5zZXRDaGVja2VkKGZhbHNlKTsKK2IuVHlwZSgpLkVuZCgpCisgICAgLkZ1
bmN0aW9uKCkuRW5kKCkKKyAgICAuQ29kZSgpCisgICAgLkZ1bmN0aW9uKHsgcGFyYW1zOiBbImkz
MiJdLCByZXQ6ICJpMzIiIH0sIFsiaTMyIl0pCisgICAgLkxvb3AoInZvaWQiKQorICAgIC5CbG9j
aygidm9pZCIsIChiKSA9PgorCisgICAgICAgICAgIGIuR2V0TG9jYWwoMCkKKyAgICAgICAgICAg
LkdldExvY2FsKDEpCisgICAgICAgICAgIC5JMzJDb25zdCgxKQorICAgICAgICAgICAuSTMyQWRk
KCkKKyAgICAgICAgICAgLlNldExvY2FsKDEpCisgICAgICAgICAgIC5HZXRMb2NhbCgwKQorICAg
ICAgICAgICAuSTMyQ29uc3QoMSkKKyAgICAgICAgICAgLkkzMlN1YigpCisgICAgICAgICAgIC5T
ZXRMb2NhbCgwKQorICAgICAgICAgICAuQnJUYWJsZSgwLCAxKSkKKworICAgIC5FbmQoKQorICAg
IC5HZXRMb2NhbCgxKQorICAgIC5FbmQoKQorY29uc3QgYmluID0gYi5XZWJBc3NlbWJseSgpCiti
aW4udHJpbSgpOwordGVzdFdhc21Nb2R1bGVGdW5jdGlvbnMoYmluLmdldCgpLCAxLCBbW3t0eXBl
OiAiaTMyIiwgdmFsdWU6IDEgfSwgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAwIH1dXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt7dHlwZTogImkzMiIsIHZhbHVlOiAy
IH0sIFt7IHR5cGU6ICJpMzIiLCB2YWx1ZTogMSB9XV0KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy93YXNtL2pzLWFwaS9mdW5jdGlvbi10ZXN0cy9kdW1iLWVxLWlmLXRoZW4tZWxz
ZS5qcyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkvZnVuY3Rpb24tdGVzdHMvZHVtYi1lcS1pZi10aGVu
LWVsc2UuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMTYxNDUxYjkwZDEwOTVkMDgwMmQyNTRkZGY0NWMzODY1Y2Q2
ZjZlMwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkvZnVuY3Rpb24tdGVz
dHMvZHVtYi1lcS1pZi10aGVuLWVsc2UuanMKQEAgLTAsMCArMSwzNCBAQAoraW1wb3J0IEJ1aWxk
ZXIgZnJvbSAnLi4vLi4vQnVpbGRlci5qcycKKworY29uc3QgYiA9IG5ldyBCdWlsZGVyKCk7Citi
LnNldENoZWNrZWQoZmFsc2UpOworYi5UeXBlKCkuRW5kKCkKKyAgICAuRnVuY3Rpb24oKS5FbmQo
KQorICAgIC5NZW1vcnkoKS5Jbml0aWFsTWF4UGFnZXMoMSwgMSkuRW5kKCkKKyAgICAuQ29kZSgp
CisgICAgLkZ1bmN0aW9uKHsgcGFyYW1zOiBbImkzMiIsICJpMzIiXSwgcmV0OiAiaTMyIiB9LCBb
XSkKKyAgICAuR2V0TG9jYWwoMCkKKyAgICAuR2V0TG9jYWwoMSkKKyAgICAuSTMyRXEoKQorICAg
IC5JZigidm9pZCIsIGIgPT4KKyAgICAgICAgYi5CcigwKQorICAgICAgICAuRWxzZSgpCisgICAg
ICAgICAgICAuSTMyQ29uc3QoMSkKKyAgICAgICAgLlJldHVybigpCisgICAgICAgKQorICAgICAg
ICAuSTMyQ29uc3QoMCkKKyAgICAuUmV0dXJuKCkKKyAgICAuRW5kKCkKKworY29uc3QgYmluID0g
Yi5XZWJBc3NlbWJseSgpCitiaW4udHJpbSgpOwordGVzdFdhc21Nb2R1bGVGdW5jdGlvbnMoYmlu
LmdldCgpLCAxLCBbW3t0eXBlOiAiaTMyIiwgdmFsdWU6IDEgfSwgW3sgdHlwZTogImkzMiIsIHZh
bHVlOiAwIH0sIHsgdHlwZTogImkzMiIsIHZhbHVlOiAxIH1dXSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFt7dHlwZTogImkzMiIsIHZhbHVlOiAxIH0sIFt7IHR5cGU6
ICJpMzIiLCB2YWx1ZTogMSB9LCB7IHR5cGU6ICJpMzIiLCB2YWx1ZTogMCB9XV0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbe3R5cGU6ICJpMzIiLCB2YWx1ZTogMSB9
LCBbeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDIgfSwgeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDEgfV1d
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3t0eXBlOiAiaTMyIiwg
dmFsdWU6IDEgfSwgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAxIH0sIHsgdHlwZTogImkzMiIsIHZh
bHVlOiAyIH1dXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt7dHlw
ZTogImkzMiIsIHZhbHVlOiAwIH0sIFt7IHR5cGU6ICJpMzIiLCB2YWx1ZTogMiB9LCB7IHR5cGU6
ICJpMzIiLCB2YWx1ZTogMiB9XV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBbe3R5cGU6ICJpMzIiLCB2YWx1ZTogMCB9LCBbeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDEg
fSwgeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDEgfV1dLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgW3t0eXBlOiAiaTMyIiwgdmFsdWU6IDAgfSwgW3sgdHlwZTogImkzMiIs
IHZhbHVlOiAwIH0sIHsgdHlwZTogImkzMiIsIHZhbHVlOiAwIH1dXSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFt7dHlwZTogImkzMiIsIHZhbHVlOiAxIH0sIFt7IHR5
cGU6ICJpMzIiLCB2YWx1ZTogMiB9LCB7IHR5cGU6ICJpMzIiLCB2YWx1ZTogNiB9XV0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbe3R5cGU6ICJpMzIiLCB2YWx1ZTog
MSB9LCBbeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDEwMCB9LCB7IHR5cGU6ICJpMzIiLCB2YWx1ZTog
NiB9XV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSk7ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL2pzLWFwaS9mdW5j
dGlvbi10ZXN0cy9kdW1iLWxlc3MtdGhhbi1mYWxsdGhyb3VnaC5qcyBiL0pTVGVzdHMvd2FzbS9q
cy1hcGkvZnVuY3Rpb24tdGVzdHMvZHVtYi1sZXNzLXRoYW4tZmFsbHRocm91Z2guanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGEwN2JmY2E4NjkwNmYzMDEzMDM5Nzc5OWZmZGI0OTQyNzgwOGZiMQotLS0gL2Rldi9u
dWxsCisrKyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkvZnVuY3Rpb24tdGVzdHMvZHVtYi1sZXNzLXRo
YW4tZmFsbHRocm91Z2guanMKQEAgLTAsMCArMSwzOSBAQAoraW1wb3J0IEJ1aWxkZXIgZnJvbSAn
Li4vLi4vQnVpbGRlci5qcycKKworY29uc3QgYiA9IG5ldyBCdWlsZGVyKCk7CitiLnNldENoZWNr
ZWQoZmFsc2UpOworYi5UeXBlKCkuRW5kKCkKKyAgICAuRnVuY3Rpb24oKS5FbmQoKQorICAgIC5D
b2RlKCkKKyAgICAuRnVuY3Rpb24oeyBwYXJhbXM6IFsiaTMyIiwgImkzMiJdLCByZXQ6ICJpMzIi
IH0sIFtdKQorICAgIC5Mb29wKCJpMzIiLCBiID0+CisgICAgICAgICAgYi5HZXRMb2NhbCgwKQor
ICAgICAgICAgIC5HZXRMb2NhbCgxKQorICAgICAgICAgIC5JMzJFcSgpCisgICAgICAgICAgLklm
KCJpMzIiLCBiID0+CisgICAgICAgICAgICAgIGIuSTMyQ29uc3QoMCkKKyAgICAgICAgICAgICAg
LlJldHVybigpCisgICAgICAgICAgICAgIC5FbHNlKCkKKyAgICAgICAgICAgICAgICAgIC5HZXRM
b2NhbCgwKQorICAgICAgICAgICAgICAuR2V0TG9jYWwoMCkKKyAgICAgICAgICAgICAgLkkzMkNv
bnN0KDEpCisgICAgICAgICAgICAgIC5JMzJTdWIoKQorICAgICAgICAgICAgICAuU2V0TG9jYWwo
MCkKKyAgICAgICAgICAgICAgLkkzMkNvbnN0KDApCisgICAgICAgICAgICAgIC5JMzJOZSgpCisg
ICAgICAgICAgICAgIC5CcklmKDEpCisgICAgICAgICAgICAgIC5JMzJDb25zdCgxKQorICAgICAg
ICAgICkKKyAgICApLkVuZCgpCisKK2NvbnN0IGJpbiA9IGIuV2ViQXNzZW1ibHkoKQorYmluLnRy
aW0oKTsKK3Rlc3RXYXNtTW9kdWxlRnVuY3Rpb25zKGJpbi5nZXQoKSwgMSwgW1t7dHlwZTogImkz
MiIsIHZhbHVlOiAxIH0sIFt7IHR5cGU6ICJpMzIiLCB2YWx1ZTogMCB9LCB7IHR5cGU6ICJpMzIi
LCB2YWx1ZTogMSB9XV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBb
e3R5cGU6ICJpMzIiLCB2YWx1ZTogMCB9LCBbeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDEgfSwgeyB0
eXBlOiAiaTMyIiwgdmFsdWU6IDAgfV1dLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgW3t0eXBlOiAiaTMyIiwgdmFsdWU6IDAgfSwgW3sgdHlwZTogImkzMiIsIHZhbHVl
OiAyIH0sIHsgdHlwZTogImkzMiIsIHZhbHVlOiAxIH1dXSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFt7dHlwZTogImkzMiIsIHZhbHVlOiAxIH0sIFt7IHR5cGU6ICJp
MzIiLCB2YWx1ZTogMSB9LCB7IHR5cGU6ICJpMzIiLCB2YWx1ZTogMiB9XV0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbe3R5cGU6ICJpMzIiLCB2YWx1ZTogMCB9LCBb
eyB0eXBlOiAiaTMyIiwgdmFsdWU6IDIgfSwgeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDIgfV1dLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3t0eXBlOiAiaTMyIiwgdmFs
dWU6IDAgfSwgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAxIH0sIHsgdHlwZTogImkzMiIsIHZhbHVl
OiAxIH1dXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt7dHlwZTog
ImkzMiIsIHZhbHVlOiAxIH0sIFt7IHR5cGU6ICJpMzIiLCB2YWx1ZTogMiB9LCB7IHR5cGU6ICJp
MzIiLCB2YWx1ZTogNiB9XV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBbe3R5cGU6ICJpMzIiLCB2YWx1ZTogMCB9LCBbeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDEwMCB9
LCB7IHR5cGU6ICJpMzIiLCB2YWx1ZTogNiB9XV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy93YXNtL2pzLWFwaS9mdW5jdGlvbi10ZXN0cy9kdW1iLWxlc3MtdGhhbi1pdGUuanMg
Yi9KU1Rlc3RzL3dhc20vanMtYXBpL2Z1bmN0aW9uLXRlc3RzL2R1bWItbGVzcy10aGFuLWl0ZS5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44Njk2YTFkMzhiNGVjMDM4MWIyMjFlNzdjNmQ0NDRlZWFiYTVjZTBiCi0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy93YXNtL2pzLWFwaS9mdW5jdGlvbi10ZXN0cy9kdW1i
LWxlc3MtdGhhbi1pdGUuanMKQEAgLTAsMCArMSw0NSBAQAoraW1wb3J0IEJ1aWxkZXIgZnJvbSAn
Li4vLi4vQnVpbGRlci5qcycKKworY29uc3QgYiA9IG5ldyBCdWlsZGVyKCk7CitiLnNldENoZWNr
ZWQoZmFsc2UpOworYi5UeXBlKCkuRW5kKCkKKyAgICAuRnVuY3Rpb24oKS5FbmQoKQorICAgIC5D
b2RlKCkKKyAgICAuRnVuY3Rpb24oeyBwYXJhbXM6IFsiaTMyIiwgImkzMiJdLCByZXQ6ICJpMzIi
IH0sIFtdKQorICAgIC5Mb29wKCJ2b2lkIikKKyAgICAuR2V0TG9jYWwoMCkKKyAgICAuR2V0TG9j
YWwoMSkKKyAgICAuSTMyRXEoKQorICAgIC5JZigidm9pZCIsIGIgPT4KKyAgICAgICAgYi5JMzJD
b25zdCgwKQorICAgICAgICAuUmV0dXJuKCkKKyAgICAgICAgLkVsc2UoKQorICAgICAgICAgICAg
LkdldExvY2FsKDApCisgICAgICAgIC5JMzJDb25zdCgwKQorICAgICAgICAuSTMyRXEoKQorICAg
ICAgICAuSWYoInZvaWQiLCBiID0+CisgICAgICAgICAgICBiLkkzMkNvbnN0KDEpCisgICAgICAg
ICAgICAuUmV0dXJuKCkKKyAgICAgICAgICAgKQorICAgICAgICAgICAgKQorICAgICAgICAuR2V0
TG9jYWwoMCkKKyAgICAuSTMyQ29uc3QoMSkKKyAgICAuSTMyU3ViKCkKKyAgICAuU2V0TG9jYWwo
MCkKKyAgICAuQnIoMCkKKyAgICAuRW5kKCkKKyAgICAuVW5yZWFjaGFibGUoKQorICAgIC5FbmQo
KQorCitjb25zdCBiaW4gPSBiLldlYkFzc2VtYmx5KCkKK2Jpbi50cmltKCk7Cit0ZXN0V2FzbU1v
ZHVsZUZ1bmN0aW9ucyhiaW4uZ2V0KCksIDEsIFtbe3R5cGU6ICJpMzIiLCB2YWx1ZTogMSB9LCBb
eyB0eXBlOiAiaTMyIiwgdmFsdWU6IDAgfSwgeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDEgfV1dLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3t0eXBlOiAiaTMyIiwgdmFs
dWU6IDAgfSwgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAxIH0sIHsgdHlwZTogImkzMiIsIHZhbHVl
OiAwIH1dXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt7dHlwZTog
ImkzMiIsIHZhbHVlOiAwIH0sIFt7IHR5cGU6ICJpMzIiLCB2YWx1ZTogMiB9LCB7IHR5cGU6ICJp
MzIiLCB2YWx1ZTogMSB9XV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBbe3R5cGU6ICJpMzIiLCB2YWx1ZTogMSB9LCBbeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDEgfSwg
eyB0eXBlOiAiaTMyIiwgdmFsdWU6IDIgfV1dLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgW3t0eXBlOiAiaTMyIiwgdmFsdWU6IDAgfSwgW3sgdHlwZTogImkzMiIsIHZh
bHVlOiAyIH0sIHsgdHlwZTogImkzMiIsIHZhbHVlOiAyIH1dXSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFt7dHlwZTogImkzMiIsIHZhbHVlOiAwIH0sIFt7IHR5cGU6
ICJpMzIiLCB2YWx1ZTogMSB9LCB7IHR5cGU6ICJpMzIiLCB2YWx1ZTogMSB9XV0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbe3R5cGU6ICJpMzIiLCB2YWx1ZTogMCB9
LCBbeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDAgfSwgeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDAgfV1d
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3t0eXBlOiAiaTMyIiwg
dmFsdWU6IDEgfSwgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAyIH0sIHsgdHlwZTogImkzMiIsIHZh
bHVlOiA2IH1dXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt7dHlw
ZTogImkzMiIsIHZhbHVlOiAwIH0sIFt7IHR5cGU6ICJpMzIiLCB2YWx1ZTogMTAwIH0sIHsgdHlw
ZTogImkzMiIsIHZhbHVlOiA2IH1dXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBdKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L3dhc20vanMtYXBpL2Z1bmN0aW9uLXRlc3RzL2ZhY3RvcmlhbC5qcyBiL0pTVGVzdHMvd2FzbS9q
cy1hcGkvZnVuY3Rpb24tdGVzdHMvZmFjdG9yaWFsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNlMGIzMjVkMjJk
N2EwM2JkYTdlNjM4ZGM0MDBhNmExZTBlODY2MzkKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3Rz
L3dhc20vanMtYXBpL2Z1bmN0aW9uLXRlc3RzL2ZhY3RvcmlhbC5qcwpAQCAtMCwwICsxLDMxIEBA
CitpbXBvcnQgQnVpbGRlciBmcm9tICcuLi8uLi9CdWlsZGVyLmpzJworCitjb25zdCBiID0gbmV3
IEJ1aWxkZXIoKTsKK2Iuc2V0Q2hlY2tlZChmYWxzZSk7CitiLlR5cGUoKS5FbmQoKQorICAgIC5G
dW5jdGlvbigpLkVuZCgpCisgICAgLkNvZGUoKQorICAgIC5GdW5jdGlvbih7IHBhcmFtczogWyJp
MzIiXSwgcmV0OiAiaTMyIiB9LCBbXSkKKyAgICAuR2V0TG9jYWwoMCkKKyAgICAuSTMyQ29uc3Qo
MCkKKyAgICAuSTMyRXEoKQorICAgIC5JZigidm9pZCIsIGIgPT4KKyAgICAgICAgYi5JMzJDb25z
dCgxKQorICAgICAgICAuUmV0dXJuKCkKKyAgICAgICApCisgICAgICAgIC5HZXRMb2NhbCgwKQor
ICAgIC5HZXRMb2NhbCgwKQorICAgIC5JMzJDb25zdCgxKQorICAgIC5JMzJTdWIoKQorICAgIC5D
YWxsKDApCisgICAgLkkzMk11bCgpCisgICAgLlJldHVybigpCisgICAgLkVuZCgpCisKK2NvbnN0
IGJpbiA9IGIuV2ViQXNzZW1ibHkoKQorYmluLnRyaW0oKTsKK3Rlc3RXYXNtTW9kdWxlRnVuY3Rp
b25zKGJpbi5nZXQoKSwgMSwgW1t7dHlwZTogImkzMiIsIHZhbHVlOiAxIH0sIFt7IHR5cGU6ICJp
MzIiLCB2YWx1ZTogMCB9XV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBbe3R5cGU6ICJpMzIiLCB2YWx1ZTogMSB9LCBbeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDEgfV1d
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3t0eXBlOiAiaTMyIiwg
dmFsdWU6IDIgfSwgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAyIH1dXSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFt7dHlwZTogImkzMiIsIHZhbHVlOiAyNCB9LCBbeyB0
eXBlOiAiaTMyIiwgdmFsdWU6IDQgfV1dLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBdKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9KU1Rl
c3RzL3dhc20vanMtYXBpL2Z1bmN0aW9uLXRlc3RzL2Zsb2F0LXN1Yi5qcyBiL0pTVGVzdHMvd2Fz
bS9qcy1hcGkvZnVuY3Rpb24tdGVzdHMvZmxvYXQtc3ViLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgxNTg3ZjJl
NzdiOTE0MDgxNmE4NDY0Nzc4ZGNmYmM3NGI4NzVlOTkKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rl
c3RzL3dhc20vanMtYXBpL2Z1bmN0aW9uLXRlc3RzL2Zsb2F0LXN1Yi5qcwpAQCAtMCwwICsxLDMx
IEBACitpbXBvcnQgQnVpbGRlciBmcm9tICcuLi8uLi9CdWlsZGVyLmpzJworCitjb25zdCBiID0g
bmV3IEJ1aWxkZXIoKTsKK2Iuc2V0Q2hlY2tlZChmYWxzZSk7CitiLlR5cGUoKS5FbmQoKQorICAg
IC5GdW5jdGlvbigpLkVuZCgpCisgICAgLkNvZGUoKQorICAgIC5GdW5jdGlvbih7IHBhcmFtczog
WyJmMzIiLCAiZjMyIl0sIHJldDogImYzMiIgfSwgW10pCisgICAgLkdldExvY2FsKDApCisgICAg
LkdldExvY2FsKDEpCisgICAgLkYzMlN1YigpCisgICAgLlJldHVybigpCisgICAgLkVuZCgpCisK
KyAgICAuRnVuY3Rpb24oeyBwYXJhbXM6IFsiZjMyIiwgImYzMiJdLCByZXQ6ICJmMzIiIH0sIFtd
KQorICAgIC5HZXRMb2NhbCgwKQorICAgIC5HZXRMb2NhbCgxKQorICAgIC5DYWxsKDApCisgICAg
LlJldHVybigpCisgICAgLkVuZCgpCisKK2NvbnN0IGJpbiA9IGIuV2ViQXNzZW1ibHkoKQorYmlu
LnRyaW0oKTsKK3Rlc3RXYXNtTW9kdWxlRnVuY3Rpb25zKGJpbi5nZXQoKSwgMiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIFtbe3R5cGU6ICJmMzIiLCB2YWx1ZTogLTEuNSB9LCBbeyB0eXBlOiAi
ZjMyIiwgdmFsdWU6IDAgfSwgeyB0eXBlOiAiZjMyIiwgdmFsdWU6IDEuNSB9XV0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgW3t0eXBlOiAiZjMyIiwgdmFsdWU6IDg3LjYyMzQgfSwgW3sgdHlw
ZTogImYzMiIsIHZhbHVlOiAxMDAuMTIzNCB9LCB7IHR5cGU6ICJmMzIiLCB2YWx1ZTogMTIuNSB9
XV0KKyAgICAgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICAgICBb
W3t0eXBlOiAiZjMyIiwgdmFsdWU6IC0xLjUgfSwgW3sgdHlwZTogImYzMiIsIHZhbHVlOiAwIH0s
IHsgdHlwZTogImYzMiIsIHZhbHVlOiAxLjUgfV1dLAorICAgICAgICAgICAgICAgICAgICAgICAg
IFt7dHlwZTogImYzMiIsIHZhbHVlOiA4Ny42MjM0IH0sIFt7IHR5cGU6ICJmMzIiLCB2YWx1ZTog
MTAwLjEyMzQgfSwgeyB0eXBlOiAiZjMyIiwgdmFsdWU6IDEyLjUgfV1dCisgICAgICAgICAgICAg
ICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgICAgICk7ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL2pzLWFwaS9mdW5jdGlvbi10ZXN0
cy9pMzItbG9hZC5qcyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkvZnVuY3Rpb24tdGVzdHMvaTMyLWxv
YWQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNzJkOGY2MGQxYmVhZWNmMzM4YzZhYTU5NTIxYmFjYzZkNGQxMWY5
YwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkvZnVuY3Rpb24tdGVzdHMv
aTMyLWxvYWQuanMKQEAgLTAsMCArMSwyMyBAQAoraW1wb3J0IEJ1aWxkZXIgZnJvbSAnLi4vLi4v
QnVpbGRlci5qcycKKworY29uc3QgYiA9IG5ldyBCdWlsZGVyKCk7CitiLnNldENoZWNrZWQoZmFs
c2UpOworYi5UeXBlKCkuRW5kKCkKKyAgICAuRnVuY3Rpb24oKS5FbmQoKQorICAgIC5NZW1vcnko
KS5Jbml0aWFsTWF4UGFnZXMoMSwgMSkuRW5kKCkKKyAgICAuQ29kZSgpCisgICAgLkZ1bmN0aW9u
KHsgcGFyYW1zOiBbImkzMiIsICJpMzIiXSwgcmV0OiAiaTMyIiB9LCBbXSkKKyAgICAuR2V0TG9j
YWwoMSkKKyAgICAuR2V0TG9jYWwoMCkKKyAgICAuSTMyU3RvcmUoMiwgMCkKKyAgICAuR2V0TG9j
YWwoMSkKKyAgICAuSTMyTG9hZCgyLCAwKQorICAgIC5SZXR1cm4oKQorICAgIC5FbmQoKQorCitj
b25zdCBiaW4gPSBiLldlYkFzc2VtYmx5KCkKK2Jpbi50cmltKCk7Cit0ZXN0V2FzbU1vZHVsZUZ1
bmN0aW9ucyhiaW4uZ2V0KCksIDEsIFtbe3R5cGU6ICJpMzIiLCB2YWx1ZTogMCB9LCBbeyB0eXBl
OiAiaTMyIiwgdmFsdWU6IDAgfSwgeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDEwIH1dXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt7dHlwZTogImkzMiIsIHZhbHVlOiAx
MDAgfSwgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAxMDAgfSwgeyB0eXBlOiAiaTMyIiwgdmFsdWU6
IDExMiB9XV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbe3R5cGU6
ICJpMzIiLCB2YWx1ZTogMTAwMDAwMCB9LCBbeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDEwMDAwMDAg
fSwgeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDEwIH1dXQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBdKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3dhc20vanMtYXBpL2Z1bmN0aW9uLXRlc3RzL2kzMi1sb2FkOC1zLmpzIGIvSlNU
ZXN0cy93YXNtL2pzLWFwaS9mdW5jdGlvbi10ZXN0cy9pMzItbG9hZDgtcy5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40YTYzYmM1YWRmNjRiYTY5MWEwMGY0NTZkZTk2ODRkNDgwMzQyNzlmCi0tLSAvZGV2L251bGwK
KysrIGIvSlNUZXN0cy93YXNtL2pzLWFwaS9mdW5jdGlvbi10ZXN0cy9pMzItbG9hZDgtcy5qcwpA
QCAtMCwwICsxLDIzIEBACitpbXBvcnQgQnVpbGRlciBmcm9tICcuLi8uLi9CdWlsZGVyLmpzJwor
Citjb25zdCBiID0gbmV3IEJ1aWxkZXIoKTsKK2Iuc2V0Q2hlY2tlZChmYWxzZSk7CitiLlR5cGUo
KS5FbmQoKQorICAgIC5GdW5jdGlvbigpLkVuZCgpCisgICAgLk1lbW9yeSgpLkluaXRpYWxNYXhQ
YWdlcygxLCAxKS5FbmQoKQorICAgIC5Db2RlKCkKKyAgICAuRnVuY3Rpb24oeyBwYXJhbXM6IFsi
aTMyIiwgImkzMiJdLCByZXQ6ICJpMzIiIH0sIFtdKQorICAgIC5HZXRMb2NhbCgxKQorICAgIC5H
ZXRMb2NhbCgwKQorICAgIC5JMzJTdG9yZSgyLCAwKQorICAgIC5HZXRMb2NhbCgxKQorICAgIC5J
MzJMb2FkOFMoMiwgMCkKKyAgICAuUmV0dXJuKCkKKyAgICAuRW5kKCkKKworY29uc3QgYmluID0g
Yi5XZWJBc3NlbWJseSgpCitiaW4udHJpbSgpOwordGVzdFdhc21Nb2R1bGVGdW5jdGlvbnMoYmlu
LmdldCgpLCAxLCBbW3t0eXBlOiAiaTMyIiwgdmFsdWU6IDAgfSwgW3sgdHlwZTogImkzMiIsIHZh
bHVlOiAwIH0sIHsgdHlwZTogImkzMiIsIHZhbHVlOiAxMCB9XV0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBbe3R5cGU6ICJpMzIiLCB2YWx1ZTogMTAwIH0sIFt7IHR5
cGU6ICJpMzIiLCB2YWx1ZTogMTAwIH0sIHsgdHlwZTogImkzMiIsIHZhbHVlOiAxMTIgfV1dLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3t0eXBlOiAiaTMyIiwgdmFs
dWU6IDB4NDAgfSwgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAxMDAwMDAwIH0sIHsgdHlwZTogImkz
MiIsIHZhbHVlOiAxMCB9XV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNt
L2pzLWFwaS9mdW5jdGlvbi10ZXN0cy9pZi10aGVuLWVsc2UtZmFsbHRocm91Z2guanMgYi9KU1Rl
c3RzL3dhc20vanMtYXBpL2Z1bmN0aW9uLXRlc3RzL2lmLXRoZW4tZWxzZS1mYWxsdGhyb3VnaC5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xY2NjMjIxNTkzZTc1ZjlkNGViNDMzYWM2NWQwZGIzNmVlOGMzOTA4Ci0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy93YXNtL2pzLWFwaS9mdW5jdGlvbi10ZXN0cy9pZi10
aGVuLWVsc2UtZmFsbHRocm91Z2guanMKQEAgLTAsMCArMSwyNSBAQAoraW1wb3J0IEJ1aWxkZXIg
ZnJvbSAnLi4vLi4vQnVpbGRlci5qcycKKworY29uc3QgYiA9IG5ldyBCdWlsZGVyKCk7CitiLnNl
dENoZWNrZWQoZmFsc2UpOworYi5UeXBlKCkuRW5kKCkKKyAgICAuRnVuY3Rpb24oKS5FbmQoKQor
ICAgIC5Db2RlKCkKKyAgICAuRnVuY3Rpb24oeyBwYXJhbXM6IFsiaTMyIl0sIHJldDogImkzMiIg
fSwgW10pCisgICAgLkJsb2NrKCJpMzIiLCAoYikgPT4KKyAgICAgICAgICAgYi5HZXRMb2NhbCgw
KQorICAgICAgICAgICAuSTMyQ29uc3QoMCkKKyAgICAgICAgICAgLkkzMkVxKCkKKyAgICAgICAg
ICAgLklmKCJpMzIiKQorICAgICAgICAgICAgICAgLkkzMkNvbnN0KDEpCisgICAgICAgICAgIC5F
bHNlKCkKKyAgICAgICAgICAgICAgIC5JMzJDb25zdCgyKQorICAgICAgICAgICAuQnIoMSkKKyAg
ICAgICAgICAgLkVuZCgpCisgICAgICAgICAgKS5FbmQoKQorCitjb25zdCBiaW4gPSBiLldlYkFz
c2VtYmx5KCkKK2Jpbi50cmltKCk7Cit0ZXN0V2FzbU1vZHVsZUZ1bmN0aW9ucyhiaW4uZ2V0KCks
IDEsIFtbe3R5cGU6ICJpMzIiLCB2YWx1ZTogMSB9LCBbeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDAg
fV1dLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3t0eXBlOiAiaTMy
IiwgdmFsdWU6IDIgfSwgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAxIH1dXQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBdKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vanMtYXBpL2Z1bmN0aW9uLXRlc3RzL2lmLXRoZW4t
ZmFsbHRocm91Z2guanMgYi9KU1Rlc3RzL3dhc20vanMtYXBpL2Z1bmN0aW9uLXRlc3RzL2lmLXRo
ZW4tZmFsbHRocm91Z2guanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWNjYzIyMTU5M2U3NWY5ZDRlYjQzM2FjNjVk
MGRiMzZlZThjMzkwOAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkvZnVu
Y3Rpb24tdGVzdHMvaWYtdGhlbi1mYWxsdGhyb3VnaC5qcwpAQCAtMCwwICsxLDI1IEBACitpbXBv
cnQgQnVpbGRlciBmcm9tICcuLi8uLi9CdWlsZGVyLmpzJworCitjb25zdCBiID0gbmV3IEJ1aWxk
ZXIoKTsKK2Iuc2V0Q2hlY2tlZChmYWxzZSk7CitiLlR5cGUoKS5FbmQoKQorICAgIC5GdW5jdGlv
bigpLkVuZCgpCisgICAgLkNvZGUoKQorICAgIC5GdW5jdGlvbih7IHBhcmFtczogWyJpMzIiXSwg
cmV0OiAiaTMyIiB9LCBbXSkKKyAgICAuQmxvY2soImkzMiIsIChiKSA9PgorICAgICAgICAgICBi
LkdldExvY2FsKDApCisgICAgICAgICAgIC5JMzJDb25zdCgwKQorICAgICAgICAgICAuSTMyRXEo
KQorICAgICAgICAgICAuSWYoImkzMiIpCisgICAgICAgICAgICAgICAuSTMyQ29uc3QoMSkKKyAg
ICAgICAgICAgLkVsc2UoKQorICAgICAgICAgICAgICAgLkkzMkNvbnN0KDIpCisgICAgICAgICAg
IC5CcigxKQorICAgICAgICAgICAuRW5kKCkKKyAgICAgICAgICApLkVuZCgpCisKK2NvbnN0IGJp
biA9IGIuV2ViQXNzZW1ibHkoKQorYmluLnRyaW0oKTsKK3Rlc3RXYXNtTW9kdWxlRnVuY3Rpb25z
KGJpbi5nZXQoKSwgMSwgW1t7dHlwZTogImkzMiIsIHZhbHVlOiAxIH0sIFt7IHR5cGU6ICJpMzIi
LCB2YWx1ZTogMCB9XV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBb
e3R5cGU6ICJpMzIiLCB2YWx1ZTogMiB9LCBbeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDEgfV1dCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pOwpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9qcy1hcGkvZnVuY3Rpb24tdGVz
dHMvbG9vcC1tdWx0LmpzIGIvSlNUZXN0cy93YXNtL2pzLWFwaS9mdW5jdGlvbi10ZXN0cy9sb29w
LW11bHQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYThiN2I3ZjI0NTYyNjcxYzNkNmE1ZmFlNzkzNmUzNzQ0OTEy
NWI4NQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkvZnVuY3Rpb24tdGVz
dHMvbG9vcC1tdWx0LmpzCkBAIC0wLDAgKzEsMzggQEAKK2ltcG9ydCBCdWlsZGVyIGZyb20gJy4u
Ly4uL0J1aWxkZXIuanMnCisKK2NvbnN0IGIgPSBuZXcgQnVpbGRlcigpOworYi5zZXRDaGVja2Vk
KGZhbHNlKTsKK2IuVHlwZSgpLkVuZCgpCisgICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAuQ29k
ZSgpCisgICAgLkZ1bmN0aW9uKHsgcGFyYW1zOiBbImkzMiJdLCByZXQ6ICJpMzIiIH0sIFsiaTMy
Il0pCisgICAgLkkzMkNvbnN0KDApCisgICAgLlNldExvY2FsKDEpCisgICAgLkxvb3AoInZvaWQi
KQorICAgIC5CbG9jaygidm9pZCIsIGIgPT4KKyAgICAgICAgICAgYi5HZXRMb2NhbCgwKQorICAg
ICAgICAgICAuSTMyQ29uc3QoMCkKKyAgICAgICAgICAgLkkzMkVxKCkKKyAgICAgICAgICAgLkJy
SWYoMCkKKyAgICAgICAgICAgLkdldExvY2FsKDApCisgICAgICAgICAgIC5HZXRMb2NhbCgxKQor
ICAgICAgICAgICAuSTMyQWRkKCkKKyAgICAgICAgICAgLlNldExvY2FsKDEpCisgICAgICAgICAg
IC5HZXRMb2NhbCgwKQorICAgICAgICAgICAuSTMyQ29uc3QoMSkKKyAgICAgICAgICAgLkkzMlN1
YigpCisgICAgICAgICAgIC5TZXRMb2NhbCgwKQorICAgICAgICAgICAuQnIoMSkKKyAgICAgICAg
ICApCisgICAgLkVuZCgpCisgICAgLkdldExvY2FsKDEpCisgICAgLlJldHVybigpCisgICAgLkVu
ZCgpCisKK2NvbnN0IGJpbiA9IGIuV2ViQXNzZW1ibHkoKQorYmluLnRyaW0oKTsKK3Rlc3RXYXNt
TW9kdWxlRnVuY3Rpb25zKGJpbi5nZXQoKSwgMSwgW1t7dHlwZTogImkzMiIsIHZhbHVlOiAwIH0s
IFt7IHR5cGU6ICJpMzIiLCB2YWx1ZTogMCB9XV0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBbe3R5cGU6ICJpMzIiLCB2YWx1ZTogMSB9LCBbeyB0eXBlOiAiaTMyIiwg
dmFsdWU6IDEgfV1dLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3t0
eXBlOiAiaTMyIiwgdmFsdWU6IDMgfSwgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAyIH1dXSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt7dHlwZTogImkzMiIsIHZhbHVl
OiA1MDUwIH0sIFt7IHR5cGU6ICJpMzIiLCB2YWx1ZTogMTAwIH1dXQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBdKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vanMtYXBpL2Z1bmN0aW9uLXRlc3RzL2xvb3Atc3VtLmpz
IGIvSlNUZXN0cy93YXNtL2pzLWFwaS9mdW5jdGlvbi10ZXN0cy9sb29wLXN1bS5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5hOGI3YjdmMjQ1NjI2NzFjM2Q2YTVmYWU3OTM2ZTM3NDQ5MTI1Yjg1Ci0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy93YXNtL2pzLWFwaS9mdW5jdGlvbi10ZXN0cy9sb29wLXN1bS5qcwpA
QCAtMCwwICsxLDM4IEBACitpbXBvcnQgQnVpbGRlciBmcm9tICcuLi8uLi9CdWlsZGVyLmpzJwor
Citjb25zdCBiID0gbmV3IEJ1aWxkZXIoKTsKK2Iuc2V0Q2hlY2tlZChmYWxzZSk7CitiLlR5cGUo
KS5FbmQoKQorICAgIC5GdW5jdGlvbigpLkVuZCgpCisgICAgLkNvZGUoKQorICAgIC5GdW5jdGlv
bih7IHBhcmFtczogWyJpMzIiXSwgcmV0OiAiaTMyIiB9LCBbImkzMiJdKQorICAgIC5JMzJDb25z
dCgwKQorICAgIC5TZXRMb2NhbCgxKQorICAgIC5Mb29wKCJ2b2lkIikKKyAgICAuQmxvY2soInZv
aWQiLCBiID0+CisgICAgICAgICAgIGIuR2V0TG9jYWwoMCkKKyAgICAgICAgICAgLkkzMkNvbnN0
KDApCisgICAgICAgICAgIC5JMzJFcSgpCisgICAgICAgICAgIC5CcklmKDApCisgICAgICAgICAg
IC5HZXRMb2NhbCgwKQorICAgICAgICAgICAuR2V0TG9jYWwoMSkKKyAgICAgICAgICAgLkkzMkFk
ZCgpCisgICAgICAgICAgIC5TZXRMb2NhbCgxKQorICAgICAgICAgICAuR2V0TG9jYWwoMCkKKyAg
ICAgICAgICAgLkkzMkNvbnN0KDEpCisgICAgICAgICAgIC5JMzJTdWIoKQorICAgICAgICAgICAu
U2V0TG9jYWwoMCkKKyAgICAgICAgICAgLkJyKDEpCisgICAgICAgICAgKQorICAgIC5FbmQoKQor
ICAgIC5HZXRMb2NhbCgxKQorICAgIC5SZXR1cm4oKQorICAgIC5FbmQoKQorCitjb25zdCBiaW4g
PSBiLldlYkFzc2VtYmx5KCkKK2Jpbi50cmltKCk7Cit0ZXN0V2FzbU1vZHVsZUZ1bmN0aW9ucyhi
aW4uZ2V0KCksIDEsIFtbe3R5cGU6ICJpMzIiLCB2YWx1ZTogMCB9LCBbeyB0eXBlOiAiaTMyIiwg
dmFsdWU6IDAgfV1dLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3t0
eXBlOiAiaTMyIiwgdmFsdWU6IDEgfSwgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAxIH1dXSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt7dHlwZTogImkzMiIsIHZhbHVl
OiAzIH0sIFt7IHR5cGU6ICJpMzIiLCB2YWx1ZTogMiB9XV0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBbe3R5cGU6ICJpMzIiLCB2YWx1ZTogNTA1MCB9LCBbeyB0eXBl
OiAiaTMyIiwgdmFsdWU6IDEwMCB9XV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy93YXNtL2pzLWFwaS9mdW5jdGlvbi10ZXN0cy9yZXQ1LmpzIGIvSlNUZXN0cy93YXNtL2pzLWFw
aS9mdW5jdGlvbi10ZXN0cy9yZXQ1LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ5M2Y2YjI4NWMyMDgyNDU4ZDhm
NDVmY2UzZTliMzJmMjU5OTY3YjYKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dhc20vanMt
YXBpL2Z1bmN0aW9uLXRlc3RzL3JldDUuanMKQEAgLTAsMCArMSwxNiBAQAoraW1wb3J0IEJ1aWxk
ZXIgZnJvbSAnLi4vLi4vQnVpbGRlci5qcycKKworY29uc3QgYiA9IG5ldyBCdWlsZGVyKCk7Citi
LnNldENoZWNrZWQoZmFsc2UpOworbGV0IGNvZGUgPSBiLlR5cGUoKS5FbmQoKQorICAgIC5GdW5j
dGlvbigpLkVuZCgpCisgICAgLkNvZGUoKTsKKworY29kZS5GdW5jdGlvbih7IHBhcmFtczogW10s
IHJldDogImkzMiIgfSkKKyAgICAuSTMyQ29uc3QoNSkKKyAgICAuUmV0dXJuKCkKKyAgICAuRW5k
KCkKKyAgICAuRW5kKCk7Citjb25zdCBiaW4gPSBiLldlYkFzc2VtYmx5KCk7CitiaW4udHJpbSgp
OwordGVzdFdhc21Nb2R1bGVGdW5jdGlvbnMoYmluLmdldCgpLCAxLCBbW3t0eXBlOiAiaTMyIiwg
dmFsdWU6IDUgfSwgW11dXSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy93YXNtL3NlbGYtdGVzdC90ZXN0X0xvd0xldmVsQmluYXJ5X3ZhcmludC5qcyBi
L0pTVGVzdHMvd2FzbS9zZWxmLXRlc3QvdGVzdF9Mb3dMZXZlbEJpbmFyeV92YXJpbnQuanMKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkZGM4Y2YzYmYxMDEwOWU3OWNkOTEwMjYyMDVm
MmQyMzQ0MzA4MmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvSlNUZXN0cy93YXNtL3NlbGYtdGVzdC90ZXN0X0xvd0xldmVsQmluYXJ5X3ZhcmludC5qcwor
KysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLWltcG9ydCBMb3dMZXZlbEJpbmFyeSwgKiBh
cyBMTEIgZnJvbSAnLi4vTG93TGV2ZWxCaW5hcnkuanMnOwotaW1wb3J0ICogYXMgYXNzZXJ0IGZy
b20gJy4uL2Fzc2VydC5qcyc7Ci0KLWxldCB2YWx1ZXMgPSBbXTsKLWZvciAobGV0IGkgPSBMTEIu
dmFyaW50TWluOyBpICE9PSBMTEIudmFyaW50TWluICsgMTAyNDsgKytpKSB2YWx1ZXMucHVzaChp
KTsKLWZvciAobGV0IGkgPSAtMjA0ODsgaSAhPT0gMjA0ODsgKytpKSB2YWx1ZXMucHVzaChpKTsK
LWZvciAobGV0IGkgPSBMTEIudmFyaW50TWF4OyBpICE9PSBMTEIudmFyaW50TWF4IC0gMTAyNDsg
LS1pKSB2YWx1ZXMucHVzaChpKTsKLQotZm9yIChjb25zdCBpIG9mIHZhbHVlcykgewotICAgIGxl
dCBiID0gbmV3IExvd0xldmVsQmluYXJ5KCk7Ci0gICAgYi52YXJpbnQoaSk7Ci0gICAgY29uc3Qg
diA9IGIuZ2V0VmFyaW50KDApOwotICAgIGlmICh2LnZhbHVlICE9PSBpKQotICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoYFdyb3RlICIke2l9IiBhbmQgcmVhZCBiYWNrICIke3Z9ImApOwotICAgIGlm
ICh2Lm5leHQgIT09IGIuZ2V0U2l6ZSgpKQotICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFNpemUg
JHt2Lm5leHR9LCBleHBlY3RlZCAke2IuZ2V0U2l6ZSgpfWApOwotfQotCi1mb3IgKGxldCBpID0g
MDsgaSA8IExMQi52YXJCaXRzTWF4ICsgMTsgKytpKSB7Ci0gICAgbGV0IGIgPSBuZXcgTG93TGV2
ZWxCaW5hcnkoKTsKLSAgICBmb3IgKGxldCBqID0gMDsgaiA8IGk7ICsraikKLSAgICAgICAgYi51
aW50OCgweDgwKTsKLSAgICBhc3NlcnQudGhyb3dzKCgpID0+IGIuZ2V0VmFyaW50KDApLCBSYW5n
ZUVycm9yLCBgWyR7aX0sICR7aSsxfSkgaXMgb3V0IG9mIGJ1ZmZlciByYW5nZSBbMCwgJHtpfSlg
KTsKLX0KLQotbGV0IGIgPSBuZXcgTG93TGV2ZWxCaW5hcnkoKTsKLWZvciAobGV0IGkgPSAwOyBp
IDwgTExCLnZhckJpdHNNYXg7ICsraSkKLSAgICBiLnVpbnQ4KDB4ODApOwotYi51aW50OCgweDAw
KTsKLWFzc2VydC50aHJvd3MoKCkgPT4gYi5nZXRWYXJpbnQoMCksIFJhbmdlRXJyb3IsIGBTaGlm
dGluZyB0b28gbXVjaCBhdCA2YCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vc2VsZi10ZXN0
L3Rlc3RfTG93TGV2ZWxCaW5hcnlfdmFyaW50MzIuanMgYi9KU1Rlc3RzL3dhc20vc2VsZi10ZXN0
L3Rlc3RfTG93TGV2ZWxCaW5hcnlfdmFyaW50MzIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWI4ZTZhYmM4NzVi
MDQ2Y2U4MDIzM2Y5MjU5ZDAwYjQ2YjE4NzljNgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMv
d2FzbS9zZWxmLXRlc3QvdGVzdF9Mb3dMZXZlbEJpbmFyeV92YXJpbnQzMi5qcwpAQCAtMCwwICsx
LDMwIEBACitpbXBvcnQgTG93TGV2ZWxCaW5hcnksICogYXMgTExCIGZyb20gJy4uL0xvd0xldmVs
QmluYXJ5LmpzJzsKK2ltcG9ydCAqIGFzIGFzc2VydCBmcm9tICcuLi9hc3NlcnQuanMnOworCits
ZXQgdmFsdWVzID0gW107Citmb3IgKGxldCBpID0gTExCLnZhcmludDMyTWluOyBpICE9PSBMTEIu
dmFyaW50MzJNaW4gKyAxMDI0OyArK2kpIHZhbHVlcy5wdXNoKGkpOworZm9yIChsZXQgaSA9IC0y
MDQ4OyBpICE9PSAyMDQ4OyArK2kpIHZhbHVlcy5wdXNoKGkpOworZm9yIChsZXQgaSA9IExMQi52
YXJpbnQzMk1heDsgaSAhPT0gTExCLnZhcmludDMyTWF4IC0gMTAyNDsgLS1pKSB2YWx1ZXMucHVz
aChpKTsKKworZm9yIChjb25zdCBpIG9mIHZhbHVlcykgeworICAgIGxldCBiID0gbmV3IExvd0xl
dmVsQmluYXJ5KCk7CisgICAgYi52YXJpbnQzMihpKTsKKyAgICBjb25zdCB2ID0gYi5nZXRWYXJp
bnQzMigwKTsKKyAgICBpZiAodi52YWx1ZSAhPT0gaSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KGBXcm90ZSAiJHtpfSIgYW5kIHJlYWQgYmFjayAiJHt2fSJgKTsKKyAgICBpZiAodi5uZXh0ICE9
PSBiLmdldFNpemUoKSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTaXplICR7di5uZXh0fSwg
ZXhwZWN0ZWQgJHtiLmdldFNpemUoKX1gKTsKK30KKworZm9yIChsZXQgaSA9IDA7IGkgPCBMTEIu
dmFyQml0c01heCArIDE7ICsraSkgeworICAgIGxldCBiID0gbmV3IExvd0xldmVsQmluYXJ5KCk7
CisgICAgZm9yIChsZXQgaiA9IDA7IGogPCBpOyArK2opCisgICAgICAgIGIudWludDgoMHg4MCk7
CisgICAgYXNzZXJ0LnRocm93cygoKSA9PiBiLmdldFZhcmludDMyKDApLCBSYW5nZUVycm9yLCBg
WyR7aX0sICR7aSsxfSkgaXMgb3V0IG9mIGJ1ZmZlciByYW5nZSBbMCwgJHtpfSlgKTsKK30KKwor
bGV0IGIgPSBuZXcgTG93TGV2ZWxCaW5hcnkoKTsKK2ZvciAobGV0IGkgPSAwOyBpIDwgTExCLnZh
ckJpdHNNYXg7ICsraSkKKyAgICBiLnVpbnQ4KDB4ODApOworYi51aW50OCgweDAwKTsKK2Fzc2Vy
dC50aHJvd3MoKCkgPT4gYi5nZXRWYXJpbnQzMigwKSwgUmFuZ2VFcnJvciwgYFNoaWZ0aW5nIHRv
byBtdWNoIGF0IDZgKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9zZWxmLXRlc3QvdGVzdF9M
b3dMZXZlbEJpbmFyeV92YXJ1aW50LmpzIGIvSlNUZXN0cy93YXNtL3NlbGYtdGVzdC90ZXN0X0xv
d0xldmVsQmluYXJ5X3ZhcnVpbnQuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJl
ODJlMTM1ZTlkMTc1MGNkNGVhMmQ1ZDc1NDFhZDdjNTQ3OWJlMDguLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvSlNUZXN0cy93YXNtL3NlbGYtdGVzdC90ZXN0
X0xvd0xldmVsQmluYXJ5X3ZhcnVpbnQuanMKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBA
Ci1pbXBvcnQgTG93TGV2ZWxCaW5hcnksICogYXMgTExCIGZyb20gJy4uL0xvd0xldmVsQmluYXJ5
LmpzJzsKLWltcG9ydCAqIGFzIGFzc2VydCBmcm9tICcuLi9hc3NlcnQuanMnOwotCi1sZXQgdmFs
dWVzID0gW107Ci1mb3IgKGxldCBpID0gTExCLnZhcnVpbnRNaW47IGkgIT09IExMQi52YXJ1aW50
TWluICsgMTAyNDsgKytpKSB2YWx1ZXMucHVzaChpKTsKLWZvciAobGV0IGkgPSBMTEIudmFydWlu
dE1heDsgaSAhPT0gTExCLnZhcnVpbnRNYXggLSAxMDI0OyAtLWkpIHZhbHVlcy5wdXNoKGkpOwot
Ci1mb3IgKGNvbnN0IGkgb2YgdmFsdWVzKSB7Ci0gICAgbGV0IGIgPSBuZXcgTG93TGV2ZWxCaW5h
cnkoKTsKLSAgICBiLnZhcnVpbnQoaSk7Ci0gICAgY29uc3QgdiA9IGIuZ2V0VmFydWludCgwKTsK
LSAgICBpZiAodi52YWx1ZSAhPT0gaSkKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBXcm90ZSAi
JHtpfSIgYW5kIHJlYWQgYmFjayAiJHt2fSJgKTsKLSAgICBpZiAodi5uZXh0ICE9PSBiLmdldFNp
emUoKSkKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTaXplICR7di5uZXh0fSwgZXhwZWN0ZWQg
JHtiLmdldFNpemUoKX1gKTsKLX0KLQotZm9yIChsZXQgaSA9IDA7IGkgPCBMTEIudmFyQml0c01h
eCArIDE7ICsraSkgewotICAgIGxldCBiID0gbmV3IExvd0xldmVsQmluYXJ5KCk7Ci0gICAgZm9y
IChsZXQgaiA9IDA7IGogPCBpOyArK2opCi0gICAgICAgIGIudWludDgoMHg4MCk7Ci0gICAgYXNz
ZXJ0LnRocm93cygoKSA9PiBiLmdldFZhcmludCgwKSwgUmFuZ2VFcnJvciwgYFske2l9LCAke2kr
MX0pIGlzIG91dCBvZiBidWZmZXIgcmFuZ2UgWzAsICR7aX0pYCk7Ci19Ci0KLWxldCBiID0gbmV3
IExvd0xldmVsQmluYXJ5KCk7Ci1mb3IgKGxldCBpID0gMDsgaSA8IExMQi52YXJCaXRzTWF4OyAr
K2kpCi0gICAgYi51aW50OCgweDgwKTsKLWIudWludDgoMHgwMCk7Ci1hc3NlcnQudGhyb3dzKCgp
ID0+IGIuZ2V0VmFyaW50KDApLCBSYW5nZUVycm9yLCBgU2hpZnRpbmcgdG9vIG11Y2ggYXQgNmAp
OwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL3NlbGYtdGVzdC90ZXN0X0xvd0xldmVsQmluYXJ5
X3ZhcnVpbnQzMi5qcyBiL0pTVGVzdHMvd2FzbS9zZWxmLXRlc3QvdGVzdF9Mb3dMZXZlbEJpbmFy
eV92YXJ1aW50MzIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTljNjQ5NjM3YjQ1MDVmOGMzYTZmZDM4NTIzMDg1
ZjNiNmU3NTFiYwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9zZWxmLXRlc3QvdGVz
dF9Mb3dMZXZlbEJpbmFyeV92YXJ1aW50MzIuanMKQEAgLTAsMCArMSwyOSBAQAoraW1wb3J0IExv
d0xldmVsQmluYXJ5LCAqIGFzIExMQiBmcm9tICcuLi9Mb3dMZXZlbEJpbmFyeS5qcyc7CitpbXBv
cnQgKiBhcyBhc3NlcnQgZnJvbSAnLi4vYXNzZXJ0LmpzJzsKKworbGV0IHZhbHVlcyA9IFtdOwor
Zm9yIChsZXQgaSA9IExMQi52YXJ1aW50MzJNaW47IGkgIT09IExMQi52YXJ1aW50MzJNaW4gKyAx
MDI0OyArK2kpIHZhbHVlcy5wdXNoKGkpOworZm9yIChsZXQgaSA9IExMQi52YXJ1aW50MzJNYXg7
IGkgIT09IExMQi52YXJ1aW50MzJNYXggLSAxMDI0OyAtLWkpIHZhbHVlcy5wdXNoKGkpOworCitm
b3IgKGNvbnN0IGkgb2YgdmFsdWVzKSB7CisgICAgbGV0IGIgPSBuZXcgTG93TGV2ZWxCaW5hcnko
KTsKKyAgICBiLnZhcnVpbnQzMihpKTsKKyAgICBjb25zdCB2ID0gYi5nZXRWYXJ1aW50MzIoMCk7
CisgICAgaWYgKHYudmFsdWUgIT09IGkpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgV3JvdGUg
IiR7aX0iIGFuZCByZWFkIGJhY2sgIiR7dn0iYCk7CisgICAgaWYgKHYubmV4dCAhPT0gYi5nZXRT
aXplKCkpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgU2l6ZSAke3YubmV4dH0sIGV4cGVjdGVk
ICR7Yi5nZXRTaXplKCl9YCk7Cit9CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgTExCLnZhckJpdHNN
YXggKyAxOyArK2kpIHsKKyAgICBsZXQgYiA9IG5ldyBMb3dMZXZlbEJpbmFyeSgpOworICAgIGZv
ciAobGV0IGogPSAwOyBqIDwgaTsgKytqKQorICAgICAgICBiLnVpbnQ4KDB4ODApOworICAgIGFz
c2VydC50aHJvd3MoKCkgPT4gYi5nZXRWYXJpbnQzMigwKSwgUmFuZ2VFcnJvciwgYFske2l9LCAk
e2krMX0pIGlzIG91dCBvZiBidWZmZXIgcmFuZ2UgWzAsICR7aX0pYCk7Cit9CisKK2xldCBiID0g
bmV3IExvd0xldmVsQmluYXJ5KCk7Citmb3IgKGxldCBpID0gMDsgaSA8IExMQi52YXJCaXRzTWF4
OyArK2kpCisgICAgYi51aW50OCgweDgwKTsKK2IudWludDgoMHgwMCk7Cithc3NlcnQudGhyb3dz
KCgpID0+IGIuZ2V0VmFyaW50MzIoMCksIFJhbmdlRXJyb3IsIGBTaGlmdGluZyB0b28gbXVjaCBh
dCA2YCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294556</attachid>
            <date>2016-11-11 15:54:54 -0800</date>
            <delta_ts>2016-11-11 16:32:43 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-164611-20161111155040.patch</filename>
            <type>text/plain</type>
            <size>100669</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4NTE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
MjRmNTliYjgzNWIzOGY2NmI2YjEwN2VjY2Q0NWM5NDM1OGJkMzVkLi40NWQ4MWNmMDM0NTkwZmJk
NTljMzhiZDE0ZDM4NWZmNTBjMGRkZjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2OCBAQAorMjAxNi0xMS0xMSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBNb3ZlIFdhc20gdGVzdHMgdG8gSlMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDYxMQorCisgICAgICAgIFJldmlld2Vk
IGJ5IEdlb2ZmcmV5IEdhcmVuLgorCisgICAgICAgIFRoaXMgcGF0Y2ggdHJhbnNsYXRlcyBtb3N0
IG9mIHRoZSB0ZXN0cyBmcm9tIHRlc3RXYXNtLmNwcCB0byB0aGUgSlMgdGVzdGluZyBhcGkuIE1v
c3Qgb2YgdGhlCisgICAgICAgIG9tbWl0ZWQgdGVzdHMgd2VyZSBlYXJsaWVzdCB0ZXN0cywgd2hp
Y2ggdGVzdGVkIHRyaXZpYWwgdGhpbmdzLCBsaWtlIGFkZGluZyB0d28KKyAgICAgICAgY29uc3Rh
bnRzLiBTb21lIHRlc3RzIGFyZSBvbW1pdGVkIGZvciBvdGhlciByZWFzb25zLCBob3dldmVyLiBU
aGVzZSBhcmU6CisKKyAgICAgICAgMSkgVGVzdHMgdXNpbmcgSTY0IHNpbmNlIHRoZSB0ZXN0aW5n
IGFwaSBkb2VzIG5vdCB5ZXQga25vdyBob3cgdG8gaGFuZGxlIDY0LWJpdCBudW1iZXJzLiAgMikK
KyAgICAgICAgVGVzdHMgdGhhdCB3b3VsZCB2YWxpZGF0ZSB0aGUgbWVtb3J5IG9mIHRoZSBtb2R1
bGUgb25jZSB3YXNtIHdhcyBkb25lIHdpdGggaXQgc2luY2UgdGhhdCdzCisgICAgICAgIG5vdCBy
ZWFsbHkgcG9zc2libGUgaW4gSlMuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gbWFrZSBzdWNoIGEg
dHJhbnNsYXRpb24gZWFzaWVyIHRoaXMgcGF0Y2ggYWxzbyBhZGRzIHNvbWUgZmVhdHVyZXMgdG8g
dGhlIEpTCisgICAgICAgIHRlc3RpbmcgYXBpOgorCisgICAgICAgIDEpIEJsb2NrcyBjYW4gbm93
IGJlIGRvbmUgbGV4aWNhbGx5IGJ5IGFkZGluZyBhIGxhbWJkYSBhcyB0aGUgbGFzdCBhcmd1bWVu
dCBvZiB0aGUgYmxvY2sKKyAgICAgICAgb3Bjb2RlLiBGb3IgZXhhbXBsZSBvbmUgY2FuIGRvOgor
ICAgICAgICAgICAgLi4uCisgICAgICAgICAgICAuQmxvY2soImkzMiIsIGIgPT4gYi5JMzJDb25z
dCgxKSApCisKKyAgICAgICAgYW5kIHRoZSBuZXN0ZWQgbGFtYmRhIHdpbGwgYXV0b21hdGljYWxs
eSBoYXZlIGFuIGVuZCBhdHRhY2hlZC4KKworICAgICAgICAyKSBUaGUgSlMgdGVzdGluZyBhcGkg
Y2FuIG5vdyBoYW5kbGUgaW5saW5lIHNpZ25hdHVyZSB0eXBlcy4KKworICAgICAgICAzKSBSZWxv
Y2F0ZSBzb21lIGNvZGUgdG8gbWFrZSBpdCBlYXNpZXIgdG8gZm9sbG93IGFuZCBwcmV2ZW50IDQ0
IHNwYWNlIGluZGVudGF0aW9uLgorCisgICAgICAgIDQpIFJlbmFtZSB2YXJ1aW50L3ZhcmludCB0
byB2YXJ1aW50MzIvdmFyaW50MzIsIHRoaXMgbGV0cyB0aGVtIGJlIGRpcmVjdGx5IGNhbGxlZCBm
cm9tIHRoZQorICAgICAgICB3YXNtLmpzb24gd2l0aG91dCBiZWluZyByZW1hcHBlZC4KKworICAg
ICAgICA1KSBBZGQgc3VwcG9ydCBmb3IgTWVtb3J5IGFuZCBGdW5jdGlvbiBzZWN0aW9ucyB0byB0
aGUgQnVpbGRlci4KKworICAgICAgICA2KSBBZGQgc3VwcG9ydCBmb3IgbG9jYWwgdmFyaWFibGVz
LgorCisgICAgICAgIE9uIHRoZSBKU0Mgc2lkZSwgd2UgbmVlZGVkIHRvIGV4cG9zZSBhIG5ldyBm
dW5jdGlvbiB0byB2YWxpZGF0ZSB0aGUgY29tcGlsZWQgd2FzbSBjb2RlCisgICAgICAgIGJlaGF2
ZXMgdGhlIHdheSB3ZSBleHBlY3QuIEF0IGxlYXN0IHVudGlsIHRoZSBKUyBXYXNtIEFQSSBpcyBm
aW5pc2hlZC4gVGhlIG5ldyB2YWxpZGF0aW9uCisgICAgICAgIGZ1bmN0aW9uLCB0ZXN0V2FzbU1v
ZHVsZUZ1bmN0aW9ucywgdGFrZXMgYW4gYXJyYXkgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIHdhc20g
YmluYXJ5LCB0aGUKKyAgICAgICAgbnVtYmVyIG9mIGZ1bmN0aW9ucyBpbiB0aGUgYmxvYiBhbmQg
dGVzdHMgZm9yIGVhY2ggb2YgdGhvc2UgZnVuY3Rpb25zLgorCisgICAgICAgICoganNjLmNwcDoK
KyAgICAgICAgKEdsb2JhbE9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoYm94KToK
KyAgICAgICAgKGNhbGxXYXNtRnVuY3Rpb24pOgorICAgICAgICAoZnVuY3Rpb25UZXN0V2FzbU1v
ZHVsZUZ1bmN0aW9ucyk6CisgICAgICAgICogdGVzdFdhc20uY3BwOgorICAgICAgICAoY2hlY2tQ
bGFuKToKKyAgICAgICAgKHJ1bldhc21UZXN0cyk6CisgICAgICAgICogd2FzbS9XYXNtQjNJUkdl
bmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OnBhcnNlQW5kQ29tcGlsZSk6CisgICAg
ICAgICogd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6RnVu
Y3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6RnVuY3Rp
b25QYXJzZXI8Q29udGV4dD46OnBhcnNlQm9keSk6CisgICAgICAgIChKU0M6Oldhc206OkZ1bmN0
aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZUJsb2NrKTogRGVsZXRlZC4KKyAgICAgICAgKiB3YXNt
L1dhc21Nb2R1bGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpNb2R1bGVQYXJzZXI6
OnBhcnNlTWVtb3J5KToKKyAgICAgICAgKEpTQzo6V2FzbTo6TW9kdWxlUGFyc2VyOjpwYXJzZUV4
cG9ydCk6CisgICAgICAgICogd2FzbS9XYXNtUGxhbi5jcHA6CisgICAgICAgIChKU0M6Oldhc206
OlBsYW46OlBsYW4pOgorICAgICAgICAoSlNDOjpXYXNtOjpQbGFuOjpydW4pOgorICAgICAgICAq
IHdhc20vV2FzbVBsYW4uaDoKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlQ29u
c3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5TW9kdWxl
KToKKwogMjAxNi0xMS0wOSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4K
IAogICAgICAgICBqc2MgQ0xJIHNob3VsZCB3b3JrIHdpdGggdGhlIHJlbW90ZSBpbnNwZWN0b3IK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggMjNiZjc0NzBlNzFlODE2YjhmZmI5ZjFmMjViZTEyNTI4
YmIyMGI4Ny4uMjRhMDE5ZDQxMjI3NzM5MTFjOWU0NDAzNDEyNDVhMzBlOGFkODk0MiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2pzYy5jcHAKQEAgLTU0LDkgKzU0LDExIEBACiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIK
ICNpbmNsdWRlICJKU1R5cGVkQXJyYXlzLmgiCiAjaW5jbHVkZSAiTExJbnREYXRhLmgiCisjaW5j
bHVkZSAiTExJbnRUaHVua3MuaCIKICNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgogI2lu
Y2x1ZGUgIlBhcnNlckVycm9yLmgiCiAjaW5jbHVkZSAiUHJvZmlsZXJEYXRhYmFzZS5oIgorI2lu
Y2x1ZGUgIlByb3RvQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiU2FtcGxpbmdQcm9maWxlci5oIgog
I2luY2x1ZGUgIlNoYWRvd0NoaWNrZW4uaCIKICNpbmNsdWRlICJTdGFja1Zpc2l0b3IuaCIKQEAg
LTY1LDYgKzY3LDcgQEAKICNpbmNsdWRlICJTdXBlclNhbXBsZXIuaCIKICNpbmNsdWRlICJUZXN0
UnVubmVyVXRpbHMuaCIKICNpbmNsdWRlICJUeXBlUHJvZmlsZXJMb2cuaCIKKyNpbmNsdWRlICJX
YXNtUGxhbi5oIgogI2luY2x1ZGUgPGxvY2FsZS5oPgogI2luY2x1ZGUgPG1hdGguaD4KICNpbmNs
dWRlIDxzdGRpby5oPgpAQCAtOTA1LDYgKzkwOCwxMCBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvblN0YXJ0U2FtcGxpbmdQcm9maWxlcihFeGVjU3RhdGUqKTsK
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uU2FtcGxpbmdQcm9m
aWxlclN0YWNrVHJhY2VzKEV4ZWNTdGF0ZSopOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCQVNT
RU1CTFkpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblRlc3RX
YXNtTW9kdWxlRnVuY3Rpb25zKEV4ZWNTdGF0ZSopOworI2VuZGlmCisKICNpZiBFTkFCTEUoU0FN
UExJTkdfRkxBR1MpCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
blNldFNhbXBsaW5nRmxhZ3MoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvbkNsZWFyU2FtcGxpbmdGbGFncyhFeGVjU3RhdGUqKTsKQEAgLTEx
NTIsNiArMTE1OSwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAic2Ft
cGxpbmdQcm9maWxlclN0YWNrVHJhY2VzIiwgZnVuY3Rpb25TYW1wbGluZ1Byb2ZpbGVyU3RhY2tU
cmFjZXMsIDApOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisgICAgICAgIGFk
ZEZ1bmN0aW9uKHZtLCAidGVzdFdhc21Nb2R1bGVGdW5jdGlvbnMiLCBmdW5jdGlvblRlc3RXYXNt
TW9kdWxlRnVuY3Rpb25zLCAwKTsKKyNlbmRpZgorCiAgICAgICAgIGlmICghYXJndW1lbnRzLmlz
RW1wdHkoKSkgewogICAgICAgICAgICAgSlNBcnJheSogYXJyYXkgPSBjb25zdHJ1Y3RFbXB0eUFy
cmF5KGdsb2JhbEV4ZWMoKSwgMCk7CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGFyZ3VtZW50cy5zaXplKCk7ICsraSkKQEAgLTIzNTIsNiArMjM2MywxMDQgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblNhbXBsaW5nUHJvZmlsZXJTdGFja1RyYWNlcyhF
eGVjU3RhdGUqIGV4ZWMKIH0KICNlbmRpZiAvLyBFTkFCTEUoU0FNUExJTkdfUFJPRklMRVIpCiAK
KyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisKK3N0YXRpYyBKU1ZhbHVlIGJveChFeGVjU3RhdGUq
IGV4ZWMsIFZNJiB2bSwgSlNWYWx1ZSB3YXNtVmFsdWUpCit7CisgICAgSlNTdHJpbmcqIHR5cGUg
PSBqc0Nhc3Q8SlNTdHJpbmcqPih3YXNtVmFsdWUuZ2V0KGV4ZWMsIG1ha2VJZGVudGlmaWVyKHZt
LCAidHlwZSIpKSk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IHdhc21WYWx1ZS5nZXQoZXhlYywgbWFr
ZUlkZW50aWZpZXIodm0sICJ2YWx1ZSIpKTsKKworICAgIGNvbnN0IFN0cmluZyYgdHlwZVN0cmlu
ZyA9IHR5cGUtPnZhbHVlKGV4ZWMpOworICAgIGlmICh0eXBlU3RyaW5nID09ICJpNjQiKSB7Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKHZhbHVlLmlzU3RyaW5nKCkpOworICAgICAgICBpbnQ2NF90
IHJlc3VsdDsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoc3NjYW5mKGJpdHdpc2VfY2FzdDxjb25z
dCBjaGFyKj4oanNDYXN0PEpTU3RyaW5nKj4odmFsdWUpLT52YWx1ZShleGVjKS5jaGFyYWN0ZXJz
OCgpKSwgIiVsbGQiLCAmcmVzdWx0KSAhPSBFT0YpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZGVjb2RlKHJlc3VsdCk7CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUKHZhbHVlLmlzTnVtYmVy
KCkpOworCisgICAgaWYgKHR5cGVTdHJpbmcgPT0gImkzMiIpIHsKKyAgICAgICAgUkVMRUFTRV9B
U1NFUlQodmFsdWUuaXNJbnQzMigpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh2
YWx1ZS5hc0ludDMyKCkpOworICAgIH0KKworICAgIGlmICh0eXBlU3RyaW5nID09ICJmMzIiKQor
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKGJpdHdpc2VfY2FzdDx1aW50MzJfdD4odmFs
dWUudG9GbG9hdChleGVjKSkpOworCisgICAgUkVMRUFTRV9BU1NFUlQodHlwZVN0cmluZyA9PSAi
ZjY0Iik7CisgICAgcmV0dXJuIHZhbHVlOworfQorCitzdGF0aWMgSlNWYWx1ZSBjYWxsV2FzbUZ1
bmN0aW9uKFZNKiB2bSwgY29uc3QgQjM6OkNvbXBpbGF0aW9uJiBjb2RlLCBWZWN0b3I8SlNWYWx1
ZT4mIGJveGVkQXJncykKK3sKKyAgICBKU1ZhbHVlIGZpcnN0QXJndW1lbnQ7CisgICAgaW50IGFy
Z0NvdW50ID0gMTsKKyAgICBKU1ZhbHVlKiByZW1haW5pbmdBcmdzID0gbnVsbHB0cjsKKyAgICBp
ZiAoYm94ZWRBcmdzLnNpemUoKSkgeworICAgICAgICByZW1haW5pbmdBcmdzID0gYm94ZWRBcmdz
LmRhdGEoKTsKKyAgICAgICAgZmlyc3RBcmd1bWVudCA9ICpyZW1haW5pbmdBcmdzOworICAgICAg
ICByZW1haW5pbmdBcmdzKys7CisgICAgICAgIGFyZ0NvdW50ID0gYm94ZWRBcmdzLnNpemUoKTsK
KyAgICB9CisKKyAgICBQcm90b0NhbGxGcmFtZSBwcm90b0NhbGxGcmFtZTsKKyAgICBwcm90b0Nh
bGxGcmFtZS5pbml0KG51bGxwdHIsIG51bGxwdHIsIGZpcnN0QXJndW1lbnQsIGFyZ0NvdW50LCBy
ZW1haW5pbmdBcmdzKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodm1FbnRyeVRvV2Fz
bShjb2RlLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpLCB2bSwgJnByb3RvQ2FsbEZyYW1lKSk7
Cit9CisKKy8vIHRlc3RXYXNtTW9kdWxlKEpTQXJyYXlCdWZmZXJWaWV3IHNvdXJjZSwgbnVtYmVy
IGZ1bmN0aW9uQ291bnQsIC4uLltbV2FzbVZhbHVlLCBbV2FzbVZhbHVlXV1dKSB3aGVyZSB0aGUg
aXRoIGNvcHkgb2YgW1tyZXN1bHQsIFthcmdzXV1dIGlzIGEgbGlzdAorLy8gb2YgYXJndW1lbnRz
IHRvIGJlIHBhc3NlZCB0byB0aGUgaXRoIHdhc20gZnVuY3Rpb24gYXMgd2VsbCBhcyB0aGUgZXhw
ZWN0ZWQgcmVzdWx0LiBXYXNtVmFsdWUgaXMgYW4gb2JqZWN0IHdpdGggInR5cGUiIGFuZCAidmFs
dWUiIHByb3BlcnRpZXMuCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvblRlc3RXYXNtTW9kdWxlRnVuY3Rpb25zKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKworICAgIGlmICghT3B0aW9uczo6dXNlV2ViQXNzZW1ibHkoKSkKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgidGVzdFdhc21Nb2R1
bGUgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGlmIHRoZSB1c2VXZWJBc3NlbWJseSBvcHRpb24gaXMg
c2V0IikpOworCisgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHNvdXJjZSA9IGpzQ2FzdDxKU0FycmF5
QnVmZmVyVmlldyo+KGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAgICB1aW50MzJfdCBmdW5jdGlvbkNv
dW50ID0gZXhlYy0+YXJndW1lbnQoMSkudG9VSW50MzIoZXhlYyk7CisKKyAgICBpZiAoZXhlYy0+
YXJndW1lbnRDb3VudCgpICE9IGZ1bmN0aW9uQ291bnQgKyAyKQorICAgICAgICBDUkFTSCgpOwor
CisgICAgV2FzbTo6UGxhbiBwbGFuKCZ2bSwgc3RhdGljX2Nhc3Q8dWludDhfdCo+KHNvdXJjZS0+
dmVjdG9yKCkpLCBzb3VyY2UtPmxlbmd0aCgpKTsKKyAgICBwbGFuLnJ1bigpOworICAgIGlmIChw
bGFuLmZhaWxlZCgpKQorICAgICAgICBDUkFTSCgpOworCisgICAgaWYgKHBsYW4uY29tcGlsZWRG
dW5jdGlvbkNvdW50KCkgIT0gZnVuY3Rpb25Db3VudCkKKyAgICAgICAgQ1JBU0goKTsKKworICAg
IGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBmdW5jdGlvbkNvdW50OyArK2kpIHsKKyAgICAgICAg
aWYgKCFwbGFuLmNvbXBpbGVkRnVuY3Rpb24oaSkpCisgICAgICAgICAgICBkYXRhTG9nTG4oImZh
aWxlZCB0byBjb21waWxlIGZ1bmN0aW9uIGF0IGluZGV4IiwgaSk7CisKKyAgICAgICAgSlNBcnJh
eSogdGVzdENhc2VzID0ganNDYXN0PEpTQXJyYXkqPihleGVjLT5hcmd1bWVudChpICsgMikpOwor
ICAgICAgICBmb3IgKHVuc2lnbmVkIHRlc3RJbmRleCA9IDA7IHRlc3RJbmRleCA8IHRlc3RDYXNl
cy0+bGVuZ3RoKCk7ICsrdGVzdEluZGV4KSB7CisgICAgICAgICAgICBKU0FycmF5KiB0ZXN0ID0g
anNDYXN0PEpTQXJyYXkqPih0ZXN0Q2FzZXMtPmdldEluZGV4UXVpY2tseSh0ZXN0SW5kZXgpKTsK
KyAgICAgICAgICAgIEpTT2JqZWN0KiByZXN1bHQgPSBqc0Nhc3Q8SlNPYmplY3QqPih0ZXN0LT5n
ZXRJbmRleFF1aWNrbHkoMCkpOworICAgICAgICAgICAgSlNBcnJheSogYXJndW1lbnRzID0ganND
YXN0PEpTQXJyYXkqPih0ZXN0LT5nZXRJbmRleFF1aWNrbHkoMSkpOworCisgICAgICAgICAgICBW
ZWN0b3I8SlNWYWx1ZT4gYm94ZWRBcmdzOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBhcmdJ
bmRleCA9IDA7IGFyZ0luZGV4IDwgYXJndW1lbnRzLT5sZW5ndGgoKTsgKythcmdJbmRleCkKKyAg
ICAgICAgICAgICAgICBib3hlZEFyZ3MuYXBwZW5kKGJveChleGVjLCB2bSwgYXJndW1lbnRzLT5n
ZXRJbmRleFF1aWNrbHkoYXJnSW5kZXgpKSk7CisKKyAgICAgICAgICAgIEpTVmFsdWUgY2FsbFJl
c3VsdCA9IGNhbGxXYXNtRnVuY3Rpb24oJnZtLCAqcGxhbi5jb21waWxlZEZ1bmN0aW9uKGkpLT5q
c0VudHJ5UG9pbnQsIGJveGVkQXJncyk7CisgICAgICAgICAgICBKU1ZhbHVlIGV4cGVjdGVkID0g
Ym94KGV4ZWMsIHZtLCByZXN1bHQpOworICAgICAgICAgICAgaWYgKGNhbGxSZXN1bHQgIT0gZXhw
ZWN0ZWQpIHsKKyAgICAgICAgICAgICAgICBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKF9fRklM
RV9fLCBfX0xJTkVfXywgV1RGX1BSRVRUWV9GVU5DVElPTiwgdG9DU3RyaW5nKCIgKGNhbGxSZXN1
bHQgPT0gIiwgUmF3UG9pbnRlcihiaXR3aXNlX2Nhc3Q8dm9pZCo+KGNhbGxSZXN1bHQpKSwgIiwg
ZXhwZWN0ZWQgPT0gIiwgUmF3UG9pbnRlcihiaXR3aXNlX2Nhc3Q8dm9pZCo+KGV4cGVjdGVkKSks
ICIpIikuZGF0YSgpKTsKKyAgICAgICAgICAgICAgICBDUkFTSCgpOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGVuY29kZWRKU1VuZGVmaW5lZCgpOworfQor
CisjZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VCTFkpCisKIC8vIFVzZSBTRUggZm9yIFJlbGVhc2Ug
YnVpbGRzIG9ubHkgdG8gZ2V0IHJpZCBvZiB0aGUgY3Jhc2ggcmVwb3J0IGRpYWxvZwogLy8gKGx1
Y2tpbHkgdGhlIHNhbWUgdGVzdHMgZmFpbCBpbiBSZWxlYXNlIGFuZCBEZWJ1ZyBidWlsZHMgc28g
ZmFyKS4gTmVlZCB0bwogLy8gYmUgaW4gYSBzZXBhcmF0ZSBtYWluIGZ1bmN0aW9uIGJlY2F1c2Ug
dGhlIGpzY21haW4gZnVuY3Rpb24gcmVxdWlyZXMgb2JqZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdFdhc20uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RX
YXNtLmNwcAppbmRleCBiNzU5NTYyNTdlNThjMTQ3MzQ5MjRiNjk0ZmQ5OTUyNWFlNjc5NDc5Li43
ODZhMjA4YWMwZjg2YWU0NGZjZDM0MGNiZDlkOTI2YWU1NmRlYjVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdFdhc20uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0V2FzbS5jcHAKQEAgLTI3OSw2ICsyNzksNyBAQCBpbmxpbmUgSlNWYWx1ZSBib3hkKGRv
dWJsZSB2YWx1ZSkKIAogc3RhdGljIHZvaWQgY2hlY2tQbGFuKFBsYW4mIHBsYW4sIHVuc2lnbmVk
IGV4cGVjdGVkTnVtYmVyT2ZGdW5jdGlvbnMpCiB7CisgICAgcGxhbi5ydW4oKTsKICAgICBpZiAo
cGxhbi5mYWlsZWQoKSkgewogICAgICAgICBkYXRhTG9nTG4oIk1vZHVsZSBmYWlsZWQgdG8gY29t
cGlsZSB3aXRoIGVycm9yOiAiLCBwbGFuLmVycm9yTWVzc2FnZSgpKTsKICAgICAgICAgQ1JBU0go
KTsKQEAgLTMyNyw3ICszMjgsNyBAQCBzdGF0aWMgdm9pZCBydW5XYXNtVGVzdHMoKQogICAgICAg
ICAgICAgMHgwZiwgMHgxNCwgMHgwMSwgMHgwZgogICAgICAgICB9OwogCi0gICAgICAgIFBsYW4g
cGxhbigqdm0sIHZlY3Rvcik7CisgICAgICAgIFBsYW4gcGxhbih2bSwgdmVjdG9yKTsKICAgICAg
ICAgY2hlY2tQbGFuKHBsYW4sIDEpOwogCiAgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNy
YXNoLgpAQCAtMzczLDcgKzM3NCw3IEBAIHN0YXRpYyB2b2lkIHJ1bldhc21UZXN0cygpCiAgICAg
ICAgICAgICAweDEwLCAweDBkLCAweDQwLCAweDA5LCAweDBmLCAweDE1LCAweDAxLCAweDE0LCAw
eDAxLCAweDEwLCAweDBlLCAweDQwLCAweDBmCiAgICAgICAgIH07CiAKLSAgICAgICAgUGxhbiBw
bGFuKCp2bSwgdmVjdG9yKTsKKyAgICAgICAgUGxhbiBwbGFuKHZtLCB2ZWN0b3IpOwogICAgICAg
ICBjaGVja1BsYW4ocGxhbiwgMSk7CiAKICAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jh
c2guCkBAIC00MTEsNyArNDEyLDcgQEAgc3RhdGljIHZvaWQgcnVuV2FzbVRlc3RzKCkKICAgICAg
ICAgICAgIDB4MGYKICAgICAgICAgfTsKIAotICAgICAgICBQbGFuIHBsYW4oKnZtLCB2ZWN0b3Ip
OworICAgICAgICBQbGFuIHBsYW4odm0sIHZlY3Rvcik7CiAgICAgICAgIGNoZWNrUGxhbihwbGFu
LCAxKTsKIAogICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KQEAgLTQ0NCw3ICs0
NDUsNyBAQCBzdGF0aWMgdm9pZCBydW5XYXNtVGVzdHMoKQogICAgICAgICAgICAgMHgxMCwgMHgw
MCwgMHg0ZCwgMHgwMywgMHgwMSwgMHgxMCwgMHgwMSwgMHgwNCwgMHgxMCwgMHgwMiwgMHgwNiwg
MHgwMSwgMHgwZiwgMHgwZiwgMHgwZgogICAgICAgICB9OwogCi0gICAgICAgIFBsYW4gcGxhbigq
dm0sIHZlY3Rvcik7CisgICAgICAgIFBsYW4gcGxhbih2bSwgdmVjdG9yKTsKICAgICAgICAgY2hl
Y2tQbGFuKHBsYW4sIDEpOwogCiAgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgpA
QCAtNDcxLDcgKzQ3Miw3IEBAIHN0YXRpYyB2b2lkIHJ1bldhc21UZXN0cygpCiAgICAgICAgICAg
ICAweDRkLCAweDAzLCAweDAxLCAweDEwLCAweDAxLCAweDA0LCAweDEwLCAweDAyLCAweDBmLCAw
eDBmCiAgICAgICAgIH07CiAKLSAgICAgICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9yKTsKKyAgICAg
ICAgUGxhbiBwbGFuKHZtLCB2ZWN0b3IpOwogICAgICAgICBjaGVja1BsYW4ocGxhbiwgMSk7CiAK
ICAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCkBAIC01MDksNyArNTEwLDcgQEAg
c3RhdGljIHZvaWQgcnVuV2FzbVRlc3RzKCkKICAgICAgICAgICAgIDB4MGYsIDB4MGYKICAgICAg
ICAgfTsKIAotICAgICAgICBQbGFuIHBsYW4oKnZtLCB2ZWN0b3IpOworICAgICAgICBQbGFuIHBs
YW4odm0sIHZlY3Rvcik7CiAgICAgICAgIGNoZWNrUGxhbihwbGFuLCAxKTsKIAogICAgICAgICAv
LyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KQEAgLTUzOSw3ICs1NDAsNyBAQCBzdGF0aWMgdm9p
ZCBydW5XYXNtVGVzdHMoKQogICAgICAgICAgICAgMHgxNiwgMHgwMCwgMHgwOSwgMHgwZgogICAg
ICAgICB9OwogCi0gICAgICAgIFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7CisgICAgICAgIFBsYW4g
cGxhbih2bSwgdmVjdG9yKTsKICAgICAgICAgY2hlY2tQbGFuKHBsYW4sIDIpOwogCiAgICAgICAg
IC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgpAQCAtNTY1LDcgKzU2Niw3IEBAIHN0YXRpYyB2
b2lkIHJ1bldhc21UZXN0cygpCiAgICAgICAgICAgICAweDE2LCAweDAwLCAweDA5LCAweDBmCiAg
ICAgICAgIH07CiAKLSAgICAgICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9yKTsKKyAgICAgICAgUGxh
biBwbGFuKHZtLCB2ZWN0b3IpOwogICAgICAgICBjaGVja1BsYW4ocGxhbiwgMik7CiAKICAgICAg
ICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCkBAIC01OTYsNyArNTk3LDcgQEAgc3RhdGlj
IHZvaWQgcnVuV2FzbVRlc3RzKCkKICAgICAgICAgICAgIDB4MTQsIDB4MDAsIDB4MTQsIDB4MDAs
IDB4MTQsIDB4MDAsIDB4MTYsIDB4MDAsIDB4MDksIDB4MGYKICAgICAgICAgfTsKIAotICAgICAg
ICBQbGFuIHBsYW4oKnZtLCB2ZWN0b3IpOworICAgICAgICBQbGFuIHBsYW4odm0sIHZlY3Rvcik7
CiAgICAgICAgIGNoZWNrUGxhbihwbGFuLCAyKTsKIAogICAgICAgICAvLyBUZXN0IHRoaXMgZG9l
c24ndCBjcmFzaC4KQEAgLTYyNyw3ICs2MjgsNyBAQCBzdGF0aWMgdm9pZCBydW5XYXNtVGVzdHMo
KQogICAgICAgICAgICAgMHg1YywgMHgxNiwgMHgwMCwgMHg1ZCwgMHgwOSwgMHgwZgogICAgICAg
ICB9OwogCi0gICAgICAgIFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7CisgICAgICAgIFBsYW4gcGxh
bih2bSwgdmVjdG9yKTsKICAgICAgICAgY2hlY2tQbGFuKHBsYW4sIDEpOwogCiAgICAgICAgIC8v
IFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgpAQCAtNjUzLDExICs2NTQsOCBAQCBzdGF0aWMgdm9p
ZCBydW5XYXNtVGVzdHMoKQogICAgICAgICAgICAgMHgwZiwgMHg4OCwgMHg4MCwgMHg4MCwgMHg4
MCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgwMCwgMHgxNCwgMHgwMSwgMHg1YiwgMHgwOSwgMHgwZgog
ICAgICAgICB9OwogCi0gICAgICAgIFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7Ci0gICAgICAgIGlm
IChwbGFuLmNvbXBpbGVkRnVuY3Rpb25Db3VudCgpICE9IDIgfHwgIXBsYW4uY29tcGlsZWRGdW5j
dGlvbigwKSB8fCAhcGxhbi5jb21waWxlZEZ1bmN0aW9uKDEpKSB7Ci0gICAgICAgICAgICBkYXRh
TG9nTG4oIk1vZHVsZSBmYWlsZWQgdG8gY29tcGlsZSBjb3JyZWN0bHkuIik7Ci0gICAgICAgICAg
ICBDUkFTSCgpOwotICAgICAgICB9CisgICAgICAgIFBsYW4gcGxhbih2bSwgdmVjdG9yKTsKKyAg
ICAgICAgY2hlY2tQbGFuKHBsYW4sIDIpOwogCiAgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0
IGNyYXNoLgogICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5jb21waWxlZEZ1bmN0
aW9uKDEpLT5qc0VudHJ5UG9pbnQsIHsgYm94KDApLCBib3goMCkgfSksIDApOwpAQCAtNjg0LDcg
KzY4Miw3IEBAIHN0YXRpYyB2b2lkIHJ1bldhc21UZXN0cygpCiAgICAgICAgICAgICAweDE2LCAw
eDAwLCAweDA5LCAweDBmCiAgICAgICAgIH07CiAKLSAgICAgICAgUGxhbiBwbGFuKCp2bSwgdmVj
dG9yKTsKKyAgICAgICAgUGxhbiBwbGFuKHZtLCB2ZWN0b3IpOwogICAgICAgICBjaGVja1BsYW4o
cGxhbiwgMik7CiAKICAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCkBAIC03MTMs
NyArNzExLDcgQEAgc3RhdGljIHZvaWQgcnVuV2FzbVRlc3RzKCkKICAgICAgICAgICAgIDB4MTQs
IDB4MDEsIDB4MTQsIDB4MDAsIDB4MzQsIDB4MDMsIDB4MDAsIDB4MTQsIDB4MDEsIDB4MmIsIDB4
MDMsIDB4MDAsIDB4MDksIDB4MGYKICAgICAgICAgfTsKIAotICAgICAgICBQbGFuIHBsYW4oKnZt
LCB2ZWN0b3IpOworICAgICAgICBQbGFuIHBsYW4odm0sIHZlY3Rvcik7CiAgICAgICAgIGNoZWNr
UGxhbihwbGFuLCAxKTsKIAogICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KQEAg
LTc0MCw3ICs3MzgsNyBAQCBzdGF0aWMgdm9pZCBydW5XYXNtVGVzdHMoKQogICAgICAgICAgICAg
MHgwMSwgMHgyYSwgMHgwMiwgMHgwMCwgMHgwOSwgMHgwZgogICAgICAgICB9OwogCi0gICAgICAg
IFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7CisgICAgICAgIFBsYW4gcGxhbih2bSwgdmVjdG9yKTsK
ICAgICAgICAgY2hlY2tQbGFuKHBsYW4sIDEpOwogCiAgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vz
bid0IGNyYXNoLgpAQCAtNzc3LDcgKzc3NSw3IEBAIHN0YXRpYyB2b2lkIHJ1bldhc21UZXN0cygp
CiAgICAgICAgICAgICAweDBmLCAweDA5LCAweDBmCiAgICAgICAgIH07CiAKLSAgICAgICAgUGxh
biBwbGFuKCp2bSwgdmVjdG9yKTsKKyAgICAgICAgUGxhbiBwbGFuKHZtLCB2ZWN0b3IpOwogICAg
ICAgICBjaGVja1BsYW4ocGxhbiwgMSk7CiAgICAgICAgIEFTU0VSVChwbGFuLm1lbW9yeSgpLT5z
aXplKCkpOwogCkBAIC04MjksNyArODI3LDcgQEAgc3RhdGljIHZvaWQgcnVuV2FzbVRlc3RzKCkK
ICAgICAgICAgICAgIDB4MmUsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDEsIDB4MTQsIDB4MDMsIDB4
NDAsIDB4MTUsIDB4MDMsIDB4MDYsIDB4MDAsIDB4MGYsIDB4MGYsIDB4MDksIDB4MGYKICAgICAg
ICAgfTsKIAotICAgICAgICBQbGFuIHBsYW4oKnZtLCB2ZWN0b3IpOworICAgICAgICBQbGFuIHBs
YW4odm0sIHZlY3Rvcik7CiAgICAgICAgIGNoZWNrUGxhbihwbGFuLCAxKTsKICAgICAgICAgQVNT
RVJUKHBsYW4ubWVtb3J5KCktPnNpemUoKSk7CiAKQEAgLTg3MCw3ICs4NjgsNyBAQCBzdGF0aWMg
dm9pZCBydW5XYXNtVGVzdHMoKQogICAgICAgICAgICAgMHgwMSwgMHgyMCwgMHgwMCwgMHgwMCwg
MHgwOSwgMHgwZgogICAgICAgICB9OwogCi0gICAgICAgIFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7
CisgICAgICAgIFBsYW4gcGxhbih2bSwgdmVjdG9yKTsKICAgICAgICAgY2hlY2tQbGFuKHBsYW4s
IDEpOwogICAgICAgICBBU1NFUlQocGxhbi5tZW1vcnkoKS0+c2l6ZSgpKTsKIApAQCAtODk4LDcg
Kzg5Niw3IEBAIHN0YXRpYyB2b2lkIHJ1bldhc21UZXN0cygpCiAgICAgICAgICAgICAweDIwLCAw
eDAwLCAweDAwLCAweDA5LCAweDBmCiAgICAgICAgIH07CiAKLSAgICAgICAgUGxhbiBwbGFuKCp2
bSwgdmVjdG9yKTsKKyAgICAgICAgUGxhbiBwbGFuKHZtLCB2ZWN0b3IpOwogICAgICAgICBjaGVj
a1BsYW4ocGxhbiwgMSk7CiAKICAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCkBA
IC05MjUsNyArOTIzLDcgQEAgc3RhdGljIHZvaWQgcnVuV2FzbVRlc3RzKCkKICAgICAgICAgICAg
IDB4MDEsIDB4MmIsIDB4MDMsIDB4MDAsIDB4MDksIDB4MGYKICAgICAgICAgfTsKIAotICAgICAg
ICBQbGFuIHBsYW4oKnZtLCB2ZWN0b3IpOworICAgICAgICBQbGFuIHBsYW4odm0sIHZlY3Rvcik7
CiAgICAgICAgIGNoZWNrUGxhbihwbGFuLCAxKTsKIAogICAgICAgICAvLyBUZXN0IHRoaXMgZG9l
c24ndCBjcmFzaC4KQEAgLTk1Myw3ICs5NTEsNyBAQCBzdGF0aWMgdm9pZCBydW5XYXNtVGVzdHMo
KQogICAgICAgICAgICAgMHgwMSwgMHgyYSwgMHgwMiwgMHgwMCwgMHgwOSwgMHgwZgogICAgICAg
ICB9OwogCi0gICAgICAgIFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7CisgICAgICAgIFBsYW4gcGxh
bih2bSwgdmVjdG9yKTsKICAgICAgICAgY2hlY2tQbGFuKHBsYW4sIDEpOwogCiAgICAgICAgIC8v
IFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgpAQCAtOTkwLDcgKzk4OCw3IEBAIHN0YXRpYyB2b2lk
IHJ1bldhc21UZXN0cygpCiAgICAgICAgICAgICAweDBmLCAweDA5LCAweDBmCiAgICAgICAgIH07
CiAKLSAgICAgICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9yKTsKKyAgICAgICAgUGxhbiBwbGFuKHZt
LCB2ZWN0b3IpOwogICAgICAgICBjaGVja1BsYW4ocGxhbiwgMSk7CiAgICAgICAgIEFTU0VSVChw
bGFuLm1lbW9yeSgpLT5zaXplKCkpOwogCkBAIC0xMDQyLDcgKzEwNDAsNyBAQCBzdGF0aWMgdm9p
ZCBydW5XYXNtVGVzdHMoKQogICAgICAgICAgICAgMHgyZSwgMHgwMCwgMHgwMCwgMHgxMCwgMHgw
MSwgMHgxNCwgMHgwMywgMHg0MCwgMHgxNSwgMHgwMywgMHgwNiwgMHgwMCwgMHgwZiwgMHgwZiwg
MHgwOSwgMHgwZgogICAgICAgICB9OwogCi0gICAgICAgIFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7
CisgICAgICAgIFBsYW4gcGxhbih2bSwgdmVjdG9yKTsKICAgICAgICAgY2hlY2tQbGFuKHBsYW4s
IDEpOwogICAgICAgICBBU1NFUlQocGxhbi5tZW1vcnkoKS0+c2l6ZSgpKTsKIApAQCAtMTA4Myw3
ICsxMDgxLDcgQEAgc3RhdGljIHZvaWQgcnVuV2FzbVRlc3RzKCkKICAgICAgICAgICAgIDB4MDEs
IDB4MjAsIDB4MDAsIDB4MDAsIDB4MDksIDB4MGYKICAgICAgICAgfTsKIAotICAgICAgICBQbGFu
IHBsYW4oKnZtLCB2ZWN0b3IpOworICAgICAgICBQbGFuIHBsYW4odm0sIHZlY3Rvcik7CiAgICAg
ICAgIGNoZWNrUGxhbihwbGFuLCAxKTsKICAgICAgICAgQVNTRVJUKHBsYW4ubWVtb3J5KCktPnNp
emUoKSk7CiAKQEAgLTExMTEsNyArMTEwOSw3IEBAIHN0YXRpYyB2b2lkIHJ1bldhc21UZXN0cygp
CiAgICAgICAgICAgICAweDIwLCAweDAwLCAweDAwLCAweDA5LCAweDBmCiAgICAgICAgIH07CiAK
LSAgICAgICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9yKTsKKyAgICAgICAgUGxhbiBwbGFuKHZtLCB2
ZWN0b3IpOwogICAgICAgICBjaGVja1BsYW4ocGxhbiwgMSk7CiAKICAgICAgICAgLy8gVGVzdCB0
aGlzIGRvZXNuJ3QgY3Jhc2guCkBAIC0xMTM4LDcgKzExMzYsNyBAQCBzdGF0aWMgdm9pZCBydW5X
YXNtVGVzdHMoKQogICAgICAgICAgICAgMHgwMywgMHgwMCwgMHgwNiwgMHgwMCwgMHgwNCwgMHgx
MCwgMHgwMSwgMHgwOSwgMHgwZiwgMHgxMCwgMHgwMCwgMHgwOSwgMHgwZgogICAgICAgICB9Owog
Ci0gICAgICAgIFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7CisgICAgICAgIFBsYW4gcGxhbih2bSwg
dmVjdG9yKTsKICAgICAgICAgY2hlY2tQbGFuKHBsYW4sIDEpOwogCiAgICAgICAgIC8vIFRlc3Qg
dGhpcyBkb2Vzbid0IGNyYXNoLgpAQCAtMTE3Niw3ICsxMTc0LDcgQEAgc3RhdGljIHZvaWQgcnVu
V2FzbVRlc3RzKCkKICAgICAgICAgICAgIDB4MTUsIDB4MDAsIDB4MDYsIDB4MDAsIDB4MGYsIDB4
MDAsIDB4MGYKICAgICAgICAgfTsKIAotICAgICAgICBQbGFuIHBsYW4oKnZtLCB2ZWN0b3IpOwor
ICAgICAgICBQbGFuIHBsYW4odm0sIHZlY3Rvcik7CiAgICAgICAgIGNoZWNrUGxhbihwbGFuLCAx
KTsKIAogICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KQEAgLTEyMDAsNyArMTE5
OCw3IEBAIHN0YXRpYyB2b2lkIHJ1bldhc21UZXN0cygpCiAgICAgICAgICAgICAweDhiLCAweDgw
LCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDg1LCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAw
eDAwLCAweDEwLCAweDA1LCAweDA5LCAweDBmCiAgICAgICAgIH07CiAKLSAgICAgICAgUGxhbiBw
bGFuKCp2bSwgdmVjdG9yKTsKKyAgICAgICAgUGxhbiBwbGFuKHZtLCB2ZWN0b3IpOwogICAgICAg
ICBjaGVja1BsYW4ocGxhbiwgMSk7CiAKICAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jh
c2guCkBAIC0xMjE4LDcgKzEyMTYsNyBAQCBzdGF0aWMgdm9pZCBydW5XYXNtVGVzdHMoKQogICAg
ICAgICAgICAgMHg0MCwgMHgwOSwgMHgwZgogICAgICAgICB9OwogCi0gICAgICAgIFBsYW4gcGxh
bigqdm0sIHZlY3Rvcik7CisgICAgICAgIFBsYW4gcGxhbih2bSwgdmVjdG9yKTsKICAgICAgICAg
Y2hlY2tQbGFuKHBsYW4sIDEpOwogCiAgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNo
LgpAQCAtMTIzNSw3ICsxMjMzLDcgQEAgc3RhdGljIHZvaWQgcnVuV2FzbVRlc3RzKCkKICAgICAg
ICAgICAgIDB4NDAsIDB4MTAsIDB4MDMsIDB4NDAsIDB4MDksIDB4MGYKICAgICAgICAgfTsKIAot
ICAgICAgICBQbGFuIHBsYW4oKnZtLCB2ZWN0b3IpOworICAgICAgICBQbGFuIHBsYW4odm0sIHZl
Y3Rvcik7CiAgICAgICAgIGNoZWNrUGxhbihwbGFuLCAxKTsKIAogICAgICAgICAvLyBUZXN0IHRo
aXMgZG9lc24ndCBjcmFzaC4KQEAgLTEyNTIsNyArMTI1MCw3IEBAIHN0YXRpYyB2b2lkIHJ1bldh
c21UZXN0cygpCiAgICAgICAgICAgICAweDEwLCAweDAzLCAweDQwLCAweDEwLCAweDAzLCAweDQw
LCAweDA5LCAweDBmLCAweDAwLCAweDBmCiAgICAgICAgIH07CiAKLSAgICAgICAgUGxhbiBwbGFu
KCp2bSwgdmVjdG9yKTsKKyAgICAgICAgUGxhbiBwbGFuKHZtLCB2ZWN0b3IpOwogICAgICAgICBj
aGVja1BsYW4ocGxhbiwgMSk7CiAKICAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2gu
CkBAIC0xMjY4LDcgKzEyNjYsNyBAQCBzdGF0aWMgdm9pZCBydW5XYXNtVGVzdHMoKQogICAgICAg
ICAgICAgMHgwMSwgMHg4OCwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgw
MCwgMHgxNCwgMHgwMSwgMHg0MCwgMHgwOSwgMHgwZgogICAgICAgICB9OwogCi0gICAgICAgIFBs
YW4gcGxhbigqdm0sIHZlY3Rvcik7CisgICAgICAgIFBsYW4gcGxhbih2bSwgdmVjdG9yKTsKICAg
ICAgICAgY2hlY2tQbGFuKHBsYW4sIDEpOwogCiAgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0
IGNyYXNoLgpAQCAtMTI5NCw3ICsxMjkyLDcgQEAgc3RhdGljIHZvaWQgcnVuV2FzbVRlc3RzKCkK
ICAgICAgICAgICAgIDB4MDEsIDB4MDksIDB4MGYKICAgICAgICAgfTsKIAotICAgICAgICBQbGFu
IHBsYW4oKnZtLCB2ZWN0b3IpOworICAgICAgICBQbGFuIHBsYW4odm0sIHZlY3Rvcik7CiAgICAg
ICAgIGNoZWNrUGxhbihwbGFuLCAxKTsKIAogICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBj
cmFzaC4KQEAgLTEzMjcsNyArMTMyNSw3IEBAIHN0YXRpYyB2b2lkIHJ1bldhc21UZXN0cygpCiAg
ICAgICAgICAgICAweDEwLCAweDAxLCAweDQxLCAweDE1LCAweDAwLCAweDA2LCAweDAxLCAweDBm
LCAweDBmLCAweDE0LCAweDAxLCAweDA5LCAweDBmCiAgICAgICAgIH07CiAKLSAgICAgICAgUGxh
biBwbGFuKCp2bSwgdmVjdG9yKTsKKyAgICAgICAgUGxhbiBwbGFuKHZtLCB2ZWN0b3IpOwogICAg
ICAgICBjaGVja1BsYW4ocGxhbiwgMSk7CiAKICAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3Qg
Y3Jhc2guCkBAIC0xMzY4LDcgKzEzNjYsNyBAQCBzdGF0aWMgdm9pZCBydW5XYXNtVGVzdHMoKQog
ICAgICAgICAgICAgMHgwMSwgMHg0MCwgMHgxNSwgMHgwNCwgMHgwNiwgMHgwMCwgMHgwZiwgMHgw
ZiwgMHgwZiwgMHgxNCwgMHgwMiwgMHgwOSwgMHgwZgogICAgICAgICB9OwogCi0gICAgICAgIFBs
YW4gcGxhbigqdm0sIHZlY3Rvcik7CisgICAgICAgIFBsYW4gcGxhbih2bSwgdmVjdG9yKTsKICAg
ICAgICAgY2hlY2tQbGFuKHBsYW4sIDEpOwogCiAgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0
IGNyYXNoLgpAQCAtMTQxOCw3ICsxNDE2LDcgQEAgc3RhdGljIHZvaWQgcnVuV2FzbVRlc3RzKCkK
ICAgICAgICAgICAgIDB4MDAsIDB4MGYsIDB4MDAsIDB4MGYKICAgICAgICAgfTsKIAotICAgICAg
ICBQbGFuIHBsYW4oKnZtLCB2ZWN0b3IpOworICAgICAgICBQbGFuIHBsYW4odm0sIHZlY3Rvcik7
CiAgICAgICAgIGNoZWNrUGxhbihwbGFuLCAxKTsKIAogICAgICAgICAvLyBUZXN0IHRoaXMgZG9l
c24ndCBjcmFzaC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21C
M0lSR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2Vu
ZXJhdG9yLmNwcAppbmRleCA1ODNmYjgyZDU3NGExMGJkYjQwZThhM2QwODViODI4NzI2ZDM2YjFj
Li45NDczYjM3OWVlODhmYjg4ZTUzNGZiOGIyNmRkZmQ4Mzg5NzkwNGZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCkBAIC03NjAsNiAr
NzYwLDggQEAgc3RkOjp1bmlxdWVfcHRyPEZ1bmN0aW9uQ29tcGlsYXRpb24+IHBhcnNlQW5kQ29t
cGlsZShWTSYgdm0sIGNvbnN0IHVpbnQ4X3QqIGZ1bmMKICAgICBwcm9jZWR1cmUucmVzZXRSZWFj
aGFiaWxpdHkoKTsKICAgICB2YWxpZGF0ZShwcm9jZWR1cmUsICJBZnRlciBwYXJzaW5nOlxuIik7
CiAKKyAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgZGF0YUxvZygiUHJlIFNTQTogIiwgcHJvY2Vk
dXJlKTsKICAgICBmaXhTU0EocHJvY2VkdXJlKTsKICAgICBpZiAodmVyYm9zZSkKICAgICAgICAg
ZGF0YUxvZygiUG9zdCBTU0E6ICIsIHByb2NlZHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21GdW5jdGlvblBhcnNlci5oCmluZGV4IDE4NTIyNGI0OTQ1YjM3NWRjOTFi
NzMxM2NiOWE2NjYzMmJlY2E2OTMuLmU3MTc2ZDg5ZDllMWVkOGQwZTY2NTk2YzU3ZjM0ODhkMGM5
MzQ4ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlv
blBhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvblBh
cnNlci5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgc3RhdGljIGNv
bnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogCi0gICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4g
cGFyc2VCbG9jaygpOworICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlQm9keSgpOwog
ICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlRXhwcmVzc2lvbihPcFR5cGUpOwogICAg
IGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlVW5yZWFjaGFibGVFeHByZXNzaW9uKE9wVHlw
ZSk7CiAgICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkUmV0dXJuKCk7CkBAIC0xMDksMTEg
KzEwOSwxMSBAQCBib29sIEZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZSgpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgcmV0dXJuIHBhcnNlQmxvY2soKTsKKyAg
ICByZXR1cm4gcGFyc2VCb2R5KCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbnRleHQ+Ci1i
b29sIEZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZUJsb2NrKCkKK2Jvb2wgRnVuY3Rpb25Q
YXJzZXI8Q29udGV4dD46OnBhcnNlQm9keSgpCiB7CiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAg
ICAgdWludDhfdCBvcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21Nb2R1bGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVs
ZVBhcnNlci5jcHAKaW5kZXggYjAzNWI0NTMyOTdhZDRiZGE2MmMyOTQ4OWM4YzNjOGFmZWQxYjAy
NC4uY2U0NmUwZDZkYmU0NzhlN2UzZTYwZGMyMTU2NDY1NGQwOWZjMmRmMyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZVBhcnNlci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZVBhcnNlci5jcHAKQEAgLTI5MSw2ICsy
OTEsMTMgQEAgYm9vbCBNb2R1bGVQYXJzZXI6OnBhcnNlVGFibGUoKQogCiBib29sIE1vZHVsZVBh
cnNlcjo6cGFyc2VNZW1vcnkoKQogeworICAgIHVpbnQ4X3QgY291bnQ7CisgICAgaWYgKCFwYXJz
ZVZhclVJbnQxKGNvdW50KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFjb3Vu
dCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKICAgICB1aW50OF90IGZsYWdzOwogICAgIGlmICgh
cGFyc2VWYXJVSW50MShmbGFncykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM0NSw3ICsz
NTIsNyBAQCBib29sIE1vZHVsZVBhcnNlcjo6cGFyc2VFeHBvcnQoKQogICAgICAgICAgICAgdWlu
dDMyX3QgZnVuY3Rpb25TaWduYXR1cmVJbmRleDsKICAgICAgICAgICAgIGlmICghcGFyc2VWYXJV
SW50MzIoZnVuY3Rpb25TaWduYXR1cmVJbmRleCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICAgICAgaWYgKGZ1bmN0aW9uU2lnbmF0dXJlSW5kZXggPiBtX21vZHVsZS0+
c2lnbmF0dXJlcy5zaXplKCkpCisgICAgICAgICAgICBpZiAoZnVuY3Rpb25TaWduYXR1cmVJbmRl
eCA+PSBtX21vZHVsZS0+c2lnbmF0dXJlcy5zaXplKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICAgICAgZS5mdW5jdGlvblNpZ25hdHVyZSA9ICZtX21vZHVsZS0+c2ln
bmF0dXJlc1tmdW5jdGlvblNpZ25hdHVyZUluZGV4XTsKICAgICAgICAgfSBicmVhazsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QbGFuLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21QbGFuLmNwcAppbmRleCAwMzRiYzYwYzY4NjVhZTA5Yjdi
NDhlN2U3MTFiZjMzZDQ5OTkzZWQ2Li45ZjhlMGZhNGE0NzA5MWUzOGJjYmU4YTBlZDM1NWUxNTE5
NGZjMDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGxhbi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBsYW4uY3BwCkBAIC00MSwx
NyArNDEsMjQgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKIAogc3RhdGljIGNv
bnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogICAgIAotUGxhbjo6UGxhbihWTSYgdm0sIFZlY3Rv
cjx1aW50OF90PiBzb3VyY2UpCitQbGFuOjpQbGFuKFZNKiB2bSwgVmVjdG9yPHVpbnQ4X3Q+IHNv
dXJjZSkKICAgICA6IFBsYW4odm0sIHNvdXJjZS5kYXRhKCksIHNvdXJjZS5zaXplKCkpCiB7CiB9
CiAKLVBsYW46OlBsYW4oVk0mIHZtLCBjb25zdCB1aW50OF90KiBzb3VyY2UsIHNpemVfdCBzb3Vy
Y2VMZW5ndGgpCitQbGFuOjpQbGFuKFZNKiB2bSwgY29uc3QgdWludDhfdCogc291cmNlLCBzaXpl
X3Qgc291cmNlTGVuZ3RoKQorICAgIDogbV92bSh2bSkKKyAgICAsIG1fc291cmNlKHNvdXJjZSkK
KyAgICAsIG1fc291cmNlTGVuZ3RoKHNvdXJjZUxlbmd0aCkKK3sKK30KKwordm9pZCBQbGFuOjpy
dW4oKQogewogICAgIGlmICh2ZXJib3NlKQogICAgICAgICBkYXRhTG9nTG4oIlN0YXJ0aW5nIHBs
YW4uIik7CiAgICAgewotICAgICAgICBNb2R1bGVQYXJzZXIgbW9kdWxlUGFyc2VyKHNvdXJjZSwg
c291cmNlTGVuZ3RoKTsKKyAgICAgICAgTW9kdWxlUGFyc2VyIG1vZHVsZVBhcnNlcihtX3NvdXJj
ZSwgbV9zb3VyY2VMZW5ndGgpOwogICAgICAgICBpZiAoIW1vZHVsZVBhcnNlci5wYXJzZSgpKSB7
CiAgICAgICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nTG4oIlBh
cnNpbmcgbW9kdWxlIGZhaWxlZDogIiwgbW9kdWxlUGFyc2VyLmVycm9yTWVzc2FnZSgpKTsKQEAg
LTc1LDE3ICs4MiwyMiBAQCBQbGFuOjpQbGFuKFZNJiB2bSwgY29uc3QgdWludDhfdCogc291cmNl
LCBzaXplX3Qgc291cmNlTGVuZ3RoKQogICAgIGZvciAoY29uc3QgRnVuY3Rpb25JbmZvcm1hdGlv
biYgaW5mbyA6IG1fbW9kdWxlSW5mb3JtYXRpb24tPmZ1bmN0aW9ucykgewogICAgICAgICBpZiAo
dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2dMbigiUHJvY2Vzc2luZyBmdW5jdGlvbiBzdGFy
dGluZyBhdDogIiwgaW5mby5zdGFydCwgIiBhbmQgZW5kaW5nIGF0OiAiLCBpbmZvLmVuZCk7Ci0g
ICAgICAgIGNvbnN0IHVpbnQ4X3QqIGZ1bmN0aW9uU3RhcnQgPSBzb3VyY2UgKyBpbmZvLnN0YXJ0
OworICAgICAgICBjb25zdCB1aW50OF90KiBmdW5jdGlvblN0YXJ0ID0gbV9zb3VyY2UgKyBpbmZv
LnN0YXJ0OwogICAgICAgICBzaXplX3QgZnVuY3Rpb25MZW5ndGggPSBpbmZvLmVuZCAtIGluZm8u
c3RhcnQ7Ci0gICAgICAgIEFTU0VSVChmdW5jdGlvbkxlbmd0aCA8PSBzb3VyY2VMZW5ndGgpOwor
ICAgICAgICBBU1NFUlQoZnVuY3Rpb25MZW5ndGggPD0gbV9zb3VyY2VMZW5ndGgpOwogCiAgICAg
ICAgIFN0cmluZyBlcnJvciA9IHZhbGlkYXRlRnVuY3Rpb24oZnVuY3Rpb25TdGFydCwgZnVuY3Rp
b25MZW5ndGgsIGluZm8uc2lnbmF0dXJlLCBtX21vZHVsZUluZm9ybWF0aW9uLT5mdW5jdGlvbnMp
OwogICAgICAgICBpZiAoIWVycm9yLmlzTnVsbCgpKSB7CisgICAgICAgICAgICBpZiAodmVyYm9z
ZSkgeworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmdW5jdGlvbkxl
bmd0aDsgKytpKQorICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKFJhd1BvaW50ZXIocmVpbnRl
cnByZXRfY2FzdDx2b2lkKj4oZnVuY3Rpb25TdGFydFtpXSkpLCAiLCAiKTsKKyAgICAgICAgICAg
ICAgICBkYXRhTG9nTG4oKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIG1fZXJyb3JNZXNz
YWdlID0gZXJyb3I7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBt
X2NvbXBpbGVkRnVuY3Rpb25zLnVuY2hlY2tlZEFwcGVuZChwYXJzZUFuZENvbXBpbGUodm0sIGZ1
bmN0aW9uU3RhcnQsIGZ1bmN0aW9uTGVuZ3RoLCBtX21vZHVsZUluZm9ybWF0aW9uLT5tZW1vcnku
Z2V0KCksIGluZm8uc2lnbmF0dXJlLCBtX21vZHVsZUluZm9ybWF0aW9uLT5mdW5jdGlvbnMpKTsK
KyAgICAgICAgbV9jb21waWxlZEZ1bmN0aW9ucy51bmNoZWNrZWRBcHBlbmQocGFyc2VBbmRDb21w
aWxlKCptX3ZtLCBmdW5jdGlvblN0YXJ0LCBmdW5jdGlvbkxlbmd0aCwgbV9tb2R1bGVJbmZvcm1h
dGlvbi0+bWVtb3J5LmdldCgpLCBpbmZvLnNpZ25hdHVyZSwgbV9tb2R1bGVJbmZvcm1hdGlvbi0+
ZnVuY3Rpb25zKSk7CiAgICAgfQogCiAgICAgLy8gUGF0Y2ggdGhlIGNhbGwgc2l0ZXMgZm9yIGVh
Y2ggZnVuY3Rpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
UGxhbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBsYW4uaAppbmRleCBkN2Mw
M2FiYjk0NjEyODUwMTEzZWMzMWZjNmEwMmRmZDk4ZGM2OTUwLi5jNWRlMTk5MjFlMGUzY2Y2ZDJl
YTA0YjdmMmZlYmY2ODZhMjBmZWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtUGxhbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QbGFu
LmgKQEAgLTM4LDEwICszOCwxMiBAQCBjbGFzcyBNZW1vcnk7CiAKIGNsYXNzIFBsYW4gewogcHVi
bGljOgotICAgIEpTX0VYUE9SVF9QUklWQVRFIFBsYW4oVk0mLCBWZWN0b3I8dWludDhfdD4pOwot
ICAgIEpTX0VYUE9SVF9QUklWQVRFIFBsYW4oVk0mLCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsK
KyAgICBKU19FWFBPUlRfUFJJVkFURSBQbGFuKFZNKiwgVmVjdG9yPHVpbnQ4X3Q+KTsKKyAgICBK
U19FWFBPUlRfUFJJVkFURSBQbGFuKFZNKiwgY29uc3QgdWludDhfdCosIHNpemVfdCk7CiAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgflBsYW4oKTsKIAorICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQg
cnVuKCk7CisKICAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBmYWlsZWQoKSBjb25zdCB7IHJl
dHVybiBtX2ZhaWxlZDsgfQogICAgIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKCkgY29uc3QK
ICAgICB7CkBAIC03OSw2ICs4MSw5IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPE1v
ZHVsZUluZm9ybWF0aW9uPiBtX21vZHVsZUluZm9ybWF0aW9uOwogICAgIENvbXBpbGVkRnVuY3Rp
b25zIG1fY29tcGlsZWRGdW5jdGlvbnM7CiAKKyAgICBWTSogbV92bTsKKyAgICBjb25zdCB1aW50
OF90KiBtX3NvdXJjZTsKKyAgICBjb25zdCBzaXplX3QgbV9zb3VyY2VMZW5ndGg7CiAgICAgYm9v
bCBtX2ZhaWxlZCB7IHRydWUgfTsKICAgICBTdHJpbmcgbV9lcnJvck1lc3NhZ2U7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVD
b25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJs
eU1vZHVsZUNvbnN0cnVjdG9yLmNwcAppbmRleCBiYjY4NGUxZTI0MzJjMzAyZDFhYTNlNjM5YThm
YzAxNjIwOTc3NzlhLi5mMDNhMGE4YmIxMWJkY2I3ZDcwN2ViZGU5YTFiNjNlMmRjMzdmNWU4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVs
ZUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJB
c3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yLmNwcApAQCAtNjgsOCArNjgsOSBAQCBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5TW9kdWxlKEV4
ZWNTdGF0ZSogc3RhdAogICAgIHNpemVfdCBieXRlU2l6ZSA9IGFycmF5QnVmZmVyVmlldyA/IGFy
cmF5QnVmZmVyVmlldy0+bGVuZ3RoKCkgOiBhcnJheUJ1ZmZlci0+aW1wbCgpLT5ieXRlTGVuZ3Ro
KCk7CiAgICAgY29uc3QgYXV0byogYmFzZSA9IGFycmF5QnVmZmVyVmlldyA/IHN0YXRpY19jYXN0
PHVpbnQ4X3QqPihhcnJheUJ1ZmZlclZpZXctPnZlY3RvcigpKSA6IHN0YXRpY19jYXN0PHVpbnQ4
X3QqPihhcnJheUJ1ZmZlci0+aW1wbCgpLT5kYXRhKCkpOwogCi0gICAgV2FzbTo6UGxhbiBwbGFu
KHZtLCBiYXNlICsgYnl0ZU9mZnNldCwgYnl0ZVNpemUpOworICAgIFdhc206OlBsYW4gcGxhbigm
dm0sIGJhc2UgKyBieXRlT2Zmc2V0LCBieXRlU2l6ZSk7CiAgICAgLy8gT24gZmFpbHVyZSwgYSBu
ZXcgV2ViQXNzZW1ibHkuQ29tcGlsZUVycm9yIGlzIHRocm93bi4KKyAgICBwbGFuLnJ1bigpOwog
ICAgIGlmIChwbGFuLmZhaWxlZCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
cm93RXhjZXB0aW9uKHN0YXRlLCBzY29wZSwgY3JlYXRlV2ViQXNzZW1ibHlDb21waWxlRXJyb3Io
c3RhdGUsIHBsYW4uZXJyb3JNZXNzYWdlKCkpKSk7CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hh
bmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNzdhMWNjMzdhN2MyZmI2Mjc1N2VmNDBl
MmYyZDRmMzk3OWIyMWU5MC4uYjEzYjM2YjhkZmUzYTU4MWNmNzdmNWJhZWFlY2M4NjE2MjZhNDUx
MiAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNDUgQEAKKzIwMTYtMTEtMTEgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxl
ckBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBXYXNtIHRlc3RzIHRvIEpTCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ2MTEKKworICAgICAgICBS
ZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKworICAgICAgICBUaGlzIHBhdGNoIHRyYW5zbGF0
ZXMgbW9zdCBvZiB0aGUgdGVzdHMgZnJvbSB0ZXN0V2FzbS5jcHAgdG8gdGhlIEpTIHRlc3Rpbmcg
YXBpLiBNb3N0IG9mIHRoZQorICAgICAgICBvbW1pdGVkIHRlc3RzIHdlcmUgZWFybGllc3QgdGVz
dHMsIHdoaWNoIHRlc3RlZCB0cml2aWFsIHRoaW5ncywgbGlrZSBhZGRpbmcgdHdvCisgICAgICAg
IGNvbnN0YW50cy4gU29tZSB0ZXN0cyBhcmUgb21taXRlZCBmb3Igb3RoZXIgcmVhc29ucywgaG93
ZXZlci4gVGhlc2UgYXJlOgorCisgICAgICAgIDEpIFRlc3RzIHVzaW5nIEk2NCBzaW5jZSB0aGUg
dGVzdGluZyBhcGkgZG9lcyBub3QgeWV0IGtub3cgaG93IHRvIGhhbmRsZSA2NC1iaXQgbnVtYmVy
cy4gIDIpCisgICAgICAgIFRlc3RzIHRoYXQgd291bGQgdmFsaWRhdGUgdGhlIG1lbW9yeSBvZiB0
aGUgbW9kdWxlIG9uY2Ugd2FzbSB3YXMgZG9uZSB3aXRoIGl0IHNpbmNlIHRoYXQncworICAgICAg
ICBub3QgcmVhbGx5IHBvc3NpYmxlIGluIEpTLgorCisgICAgICAgIEluIG9yZGVyIHRvIG1ha2Ug
c3VjaCBhIHRyYW5zbGF0aW9uIGVhc2llciB0aGlzIHBhdGNoIGFsc28gYWRkcyBzb21lIGZlYXR1
cmVzIHRvIHRoZSBKUworICAgICAgICB0ZXN0aW5nIGFwaToKKworICAgICAgICAxKSBCbG9ja3Mg
Y2FuIG5vdyBiZSBkb25lIGxleGljYWxseSBieSBhZGRpbmcgYSBsYW1iZGEgYXMgdGhlIGxhc3Qg
YXJndW1lbnQgb2YgdGhlIGJsb2NrCisgICAgICAgIG9wY29kZS4gRm9yIGV4YW1wbGUgb25lIGNh
biBkbzoKKyAgICAgICAgICAgIC4uLgorICAgICAgICAgICAgLkJsb2NrKCJpMzIiLCBiID0+IGIu
STMyQ29uc3QoMSkgKQorCisgICAgICAgIGFuZCB0aGUgbmVzdGVkIGxhbWJkYSB3aWxsIGF1dG9t
YXRpY2FsbHkgaGF2ZSBhbiBlbmQgYXR0YWNoZWQuCisKKyAgICAgICAgMikgVGhlIEpTIHRlc3Rp
bmcgYXBpIGNhbiBub3cgaGFuZGxlIGlubGluZSBzaWduYXR1cmUgdHlwZXMuCisKKyAgICAgICAg
MykgUmVsb2NhdGUgc29tZSBjb2RlIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGZvbGxvdyBhbmQgcHJl
dmVudCA0NCBzcGFjZSBpbmRlbnRhdGlvbi4KKworICAgICAgICA0KSBSZW5hbWUgdmFydWludC92
YXJpbnQgdG8gdmFydWludDMyL3ZhcmludDMyLCB0aGlzIGxldHMgdGhlbSBiZSBkaXJlY3RseSBj
YWxsZWQgZnJvbSB0aGUKKyAgICAgICAgd2FzbS5qc29uIHdpdGhvdXQgYmVpbmcgcmVtYXBwZWQu
CisKKyAgICAgICAgNSkgQWRkIHN1cHBvcnQgZm9yIE1lbW9yeSBhbmQgRnVuY3Rpb24gc2VjdGlv
bnMgdG8gdGhlIEJ1aWxkZXIuCisKKyAgICAgICAgNikgQWRkIHN1cHBvcnQgZm9yIGxvY2FsIHZh
cmlhYmxlcy4KKworICAgICAgICBPbiB0aGUgSlNDIHNpZGUsIHdlIG5lZWRlZCB0byBleHBvc2Ug
YSBuZXcgZnVuY3Rpb24gdG8gdmFsaWRhdGUgdGhlIGNvbXBpbGVkIHdhc20gY29kZQorICAgICAg
ICBiZWhhdmVzIHRoZSB3YXkgd2UgZXhwZWN0LiBBdCBsZWFzdCB1bnRpbCB0aGUgSlMgV2FzbSBB
UEkgaXMgZmluaXNoZWQuIFRoZSBuZXcgdmFsaWRhdGlvbgorICAgICAgICBmdW5jdGlvbiwgdGVz
dFdhc21Nb2R1bGVGdW5jdGlvbnMsIHRha2VzIGFuIGFycmF5IGJ1ZmZlciBjb250YWluaW5nIHRo
ZSB3YXNtIGJpbmFyeSwgdGhlCisgICAgICAgIG51bWJlciBvZiBmdW5jdGlvbnMgaW4gdGhlIGJs
b2IgYW5kIHRlc3RzIGZvciBlYWNoIG9mIHRob3NlIGZ1bmN0aW9ucy4KKworICAgICAgICAqIHdh
c20vQnVpbGRlci5qczoKKyAgICAgICAgKGNvbnN0Ll9tYXliZVJlZ2lzdGVyVHlwZSk6CisgICAg
ICAgIChjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChzd2l0Y2gudHlwZW9mKTogRGVsZXRlZC4K
KyAgICAgICAgKiB3YXNtL0J1aWxkZXJfV2ViQXNzZW1ibHlCaW5hcnkuanM6CisgICAgICAgIChj
b25zdC5lbWl0dGVycy5UeXBlKToKKyAgICAgICAgKGNvbnN0LmVtaXR0ZXJzLkltcG9ydCk6Cisg
ICAgICAgIChjb25zdC5lbWl0dGVycy5GdW5jdGlvbik6CisgICAgICAgIChjb25zdC5lbWl0dGVy
cy5NZW1vcnkpOgorICAgICAgICAoY29uc3QuZW1pdHRlcnMuQ29kZSk6CisgICAgICAgIChleHBv
cnQuY29uc3QuQmluYXJ5KToKKyAgICAgICAgKiB3YXNtL0xvd0xldmVsQmluYXJ5LmpzOgorICAg
ICAgICAoZXhwb3J0LmRlZmF1bHQuTG93TGV2ZWxCaW5hcnkucHJvdG90eXBlLmdldCByZXR1cm4p
OgorICAgICAgICAoZXhwb3J0LmRlZmF1bHQuTG93TGV2ZWxCaW5hcnkucHJvdG90eXBlLnZhcnVp
bnQzMik6CisgICAgICAgIChleHBvcnQuZGVmYXVsdC5Mb3dMZXZlbEJpbmFyeS5wcm90b3R5cGUu
dmFyaW50MzIpOgorICAgICAgICAoZXhwb3J0LmRlZmF1bHQuTG93TGV2ZWxCaW5hcnkucHJvdG90
eXBlLnZhcnVpbnQxKToKKyAgICAgICAgKGV4cG9ydC5kZWZhdWx0Lkxvd0xldmVsQmluYXJ5LnBy
b3RvdHlwZS52YXJpbnQ3KToKKyAgICAgICAgKGV4cG9ydC5kZWZhdWx0Lkxvd0xldmVsQmluYXJ5
LnByb3RvdHlwZS52YXJ1aW50Nyk6CisgICAgICAgIChleHBvcnQuZGVmYXVsdC5Mb3dMZXZlbEJp
bmFyeS5wcm90b3R5cGUuaW5saW5lX3NpZ25hdHVyZV90eXBlKToKKyAgICAgICAgKGV4cG9ydC5k
ZWZhdWx0Lkxvd0xldmVsQmluYXJ5LnByb3RvdHlwZS5zdHJpbmcpOgorICAgICAgICAoZXhwb3J0
LmRlZmF1bHQuTG93TGV2ZWxCaW5hcnkucHJvdG90eXBlLmdldFZhcnVpbnQzMik6CisgICAgICAg
IChleHBvcnQuZGVmYXVsdC5Mb3dMZXZlbEJpbmFyeS5wcm90b3R5cGUuZ2V0VmFyaW50MzIpOgor
ICAgICAgICAoZXhwb3J0LmRlZmF1bHQuTG93TGV2ZWxCaW5hcnkucHJvdG90eXBlLmdldFZhcnVp
bnQ3KToKKyAgICAgICAgKGV4cG9ydC5kZWZhdWx0Lkxvd0xldmVsQmluYXJ5LnByb3RvdHlwZS5n
ZXRTdHJpbmcpOgorICAgICAgICAoZXhwb3J0LmRlZmF1bHQuTG93TGV2ZWxCaW5hcnkpOgorICAg
ICAgICAoZXhwb3J0LmRlZmF1bHQuTG93TGV2ZWxCaW5hcnkucHJvdG90eXBlLnZhcnVpbnQpOiBE
ZWxldGVkLgorICAgICAgICAoZXhwb3J0LmRlZmF1bHQuTG93TGV2ZWxCaW5hcnkucHJvdG90eXBl
LnZhcmludCk6IERlbGV0ZWQuCisgICAgICAgIChleHBvcnQuZGVmYXVsdC5Mb3dMZXZlbEJpbmFy
eS5wcm90b3R5cGUuZ2V0VmFydWludCk6IERlbGV0ZWQuCisgICAgICAgIChleHBvcnQuZGVmYXVs
dC5Mb3dMZXZlbEJpbmFyeS5wcm90b3R5cGUuZ2V0VmFyaW50KTogRGVsZXRlZC4KKyAgICAgICAg
KiB3YXNtL2pzLWFwaS90ZXN0X29sZF90ZXN0cy5qczogQWRkZWQuCisgICAgICAgIChyZXQ1KToK
KyAgICAgICAgKGJyVGFibGVXaXRoTG9vcCk6CisgICAgICAgIChiclRhYmxlTWFueVZhbHVlcyk6
CisgICAgICAgIChydW4uYnJUYWJsZU1hbnlWYWx1ZXMuYnJUYWJsZUFzSWYpOgorICAgICAgICAo
aWZUaGVuRmFsbHRocm91Z2gpOgorICAgICAgICAoaWZUaGVuRWxzZUZhbGx0aHJvdWdoKToKKyAg
ICAgICAgKGR1bWJMZXNzVGhhbkZhbGx0aHJvdWdoKToKKyAgICAgICAgKHJ1bi5kdW1iTGVzc1Ro
YW5GYWxsdGhyb3VnaC5mbG9hdFN1Yik6CisgICAgICAgIChydW4uZmxvYXRTdWIuYWRkMTIpOgor
ICAgICAgICAocnVuLmFkZDEyLmZhY3RvcmlhbCk6CisgICAgICAgIChpMzJsb2FkKToKKyAgICAg
ICAgKHJ1bi5pMzJsb2FkLmkzMmxvYWQ4cyk6CisgICAgICAgIChydW4uaTMybG9hZDhzLmR1bWJF
cUlmVGhlbkVsc2UpOgorICAgICAgICAocnVuLmR1bWJFcUlmVGhlbkVsc2UuZHVtYkVxSWZUaGVu
RWxzZSk6CisgICAgICAgIChydW4uZHVtYkVxSWZUaGVuRWxzZS5kdW1iTGVzc1RoYW5JZlRoZW5F
bHNlKToKKyAgICAgICAgKHJ1bi5kdW1iTGVzc1RoYW5JZlRoZW5FbHNlLmxvb3BTdW0pOgorICAg
ICAgICAocnVuLmxvb3BTdW0ubG9vcE11bHQpOgorICAgICAgICAoYnJJZkxvb3BMZXNzVGhhbik6
CisgICAgICAgIChydW4uYnJJZkxvb3BMZXNzVGhhbi5ydW4pOgorICAgICAgICAqIHdhc20vc2Vs
Zi10ZXN0L3Rlc3RfTG93TGV2ZWxCaW5hcnlfdmFyaW50MzIuanM6IFJlbmFtZWQgZnJvbSBKU1Rl
c3RzL3dhc20vc2VsZi10ZXN0L3Rlc3RfTG93TGV2ZWxCaW5hcnlfdmFyaW50LmpzLgorICAgICAg
ICAqIHdhc20vc2VsZi10ZXN0L3Rlc3RfTG93TGV2ZWxCaW5hcnlfdmFydWludDMyLmpzOiBSZW5h
bWVkIGZyb20gSlNUZXN0cy93YXNtL3NlbGYtdGVzdC90ZXN0X0xvd0xldmVsQmluYXJ5X3ZhcnVp
bnQuanMuCisKKyAgICAgICAgKiB3YXNtL0J1aWxkZXIuanM6CisgICAgICAgIChjb25zdC5fbWF5
YmVSZWdpc3RlclR5cGUpOgorICAgICAgICAoY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoc3dp
dGNoLnR5cGVvZik6IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9CdWlsZGVyX1dlYkFzc2VtYmx5
QmluYXJ5LmpzOgorICAgICAgICAoY29uc3QuZW1pdHRlcnMuVHlwZSk6CisgICAgICAgIChjb25z
dC5lbWl0dGVycy5JbXBvcnQpOgorICAgICAgICAoY29uc3QuZW1pdHRlcnMuRnVuY3Rpb24pOgor
ICAgICAgICAoY29uc3QuZW1pdHRlcnMuTWVtb3J5KToKKyAgICAgICAgKGNvbnN0LmVtaXR0ZXJz
LkNvZGUpOgorICAgICAgICAoZXhwb3J0LmNvbnN0LkJpbmFyeSk6CisgICAgICAgICogd2FzbS9M
b3dMZXZlbEJpbmFyeS5qczoKKyAgICAgICAgKGV4cG9ydC5kZWZhdWx0Lkxvd0xldmVsQmluYXJ5
LnByb3RvdHlwZS5nZXQgcmV0dXJuKToKKyAgICAgICAgKGV4cG9ydC5kZWZhdWx0Lkxvd0xldmVs
QmluYXJ5LnByb3RvdHlwZS52YXJ1aW50MzIpOgorICAgICAgICAoZXhwb3J0LmRlZmF1bHQuTG93
TGV2ZWxCaW5hcnkucHJvdG90eXBlLnZhcmludDMyKToKKyAgICAgICAgKGV4cG9ydC5kZWZhdWx0
Lkxvd0xldmVsQmluYXJ5LnByb3RvdHlwZS52YXJ1aW50MSk6CisgICAgICAgIChleHBvcnQuZGVm
YXVsdC5Mb3dMZXZlbEJpbmFyeS5wcm90b3R5cGUudmFyaW50Nyk6CisgICAgICAgIChleHBvcnQu
ZGVmYXVsdC5Mb3dMZXZlbEJpbmFyeS5wcm90b3R5cGUudmFydWludDcpOgorICAgICAgICAoZXhw
b3J0LmRlZmF1bHQuTG93TGV2ZWxCaW5hcnkucHJvdG90eXBlLmlubGluZV9zaWduYXR1cmVfdHlw
ZSk6CisgICAgICAgIChleHBvcnQuZGVmYXVsdC5Mb3dMZXZlbEJpbmFyeS5wcm90b3R5cGUuc3Ry
aW5nKToKKyAgICAgICAgKGV4cG9ydC5kZWZhdWx0Lkxvd0xldmVsQmluYXJ5LnByb3RvdHlwZS5n
ZXRWYXJ1aW50MzIpOgorICAgICAgICAoZXhwb3J0LmRlZmF1bHQuTG93TGV2ZWxCaW5hcnkucHJv
dG90eXBlLmdldFZhcmludDMyKToKKyAgICAgICAgKGV4cG9ydC5kZWZhdWx0Lkxvd0xldmVsQmlu
YXJ5LnByb3RvdHlwZS5nZXRWYXJ1aW50Nyk6CisgICAgICAgIChleHBvcnQuZGVmYXVsdC5Mb3dM
ZXZlbEJpbmFyeS5wcm90b3R5cGUuZ2V0U3RyaW5nKToKKyAgICAgICAgKGV4cG9ydC5kZWZhdWx0
Lkxvd0xldmVsQmluYXJ5KToKKyAgICAgICAgKGV4cG9ydC5kZWZhdWx0Lkxvd0xldmVsQmluYXJ5
LnByb3RvdHlwZS52YXJ1aW50KTogRGVsZXRlZC4KKyAgICAgICAgKGV4cG9ydC5kZWZhdWx0Lkxv
d0xldmVsQmluYXJ5LnByb3RvdHlwZS52YXJpbnQpOiBEZWxldGVkLgorICAgICAgICAoZXhwb3J0
LmRlZmF1bHQuTG93TGV2ZWxCaW5hcnkucHJvdG90eXBlLmdldFZhcnVpbnQpOiBEZWxldGVkLgor
ICAgICAgICAoZXhwb3J0LmRlZmF1bHQuTG93TGV2ZWxCaW5hcnkucHJvdG90eXBlLmdldFZhcmlu
dCk6IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9qcy1hcGkvZnVuY3Rpb24tdGVzdHMvYWRkLTEy
LmpzOiBBZGRlZC4KKyAgICAgICAgKiB3YXNtL2pzLWFwaS9mdW5jdGlvbi10ZXN0cy9ici1pZi1s
b29wLWxlc3MtdGhhbi5qczogQWRkZWQuCisgICAgICAgICogd2FzbS9qcy1hcGkvZnVuY3Rpb24t
dGVzdHMvYnJUYWJsZUFzSWYuanM6IEFkZGVkLgorICAgICAgICAqIHdhc20vanMtYXBpL2Z1bmN0
aW9uLXRlc3RzL2JyVGFibGVNYW55VmFsdWVzLmpzOiBBZGRlZC4KKyAgICAgICAgKiB3YXNtL2pz
LWFwaS9mdW5jdGlvbi10ZXN0cy9iclRhYmxlV2l0aExvb3AuanM6IEFkZGVkLgorICAgICAgICAq
IHdhc20vanMtYXBpL2Z1bmN0aW9uLXRlc3RzL2R1bWItZXEtaWYtdGhlbi1lbHNlLmpzOiBBZGRl
ZC4KKyAgICAgICAgKiB3YXNtL2pzLWFwaS9mdW5jdGlvbi10ZXN0cy9kdW1iLWxlc3MtdGhhbi1m
YWxsdGhyb3VnaC5qczogQWRkZWQuCisgICAgICAgICogd2FzbS9qcy1hcGkvZnVuY3Rpb24tdGVz
dHMvZHVtYi1sZXNzLXRoYW4taXRlLmpzOiBBZGRlZC4KKyAgICAgICAgKiB3YXNtL2pzLWFwaS9m
dW5jdGlvbi10ZXN0cy9mYWN0b3JpYWwuanM6IEFkZGVkLgorICAgICAgICAqIHdhc20vanMtYXBp
L2Z1bmN0aW9uLXRlc3RzL2Zsb2F0LXN1Yi5qczogQWRkZWQuCisgICAgICAgICogd2FzbS9qcy1h
cGkvZnVuY3Rpb24tdGVzdHMvaTMyLWxvYWQuanM6IEFkZGVkLgorICAgICAgICAqIHdhc20vanMt
YXBpL2Z1bmN0aW9uLXRlc3RzL2kzMi1sb2FkOC1zLmpzOiBBZGRlZC4KKyAgICAgICAgKiB3YXNt
L2pzLWFwaS9mdW5jdGlvbi10ZXN0cy9pZi10aGVuLWVsc2UtZmFsbHRocm91Z2guanM6IEFkZGVk
LgorICAgICAgICAqIHdhc20vanMtYXBpL2Z1bmN0aW9uLXRlc3RzL2lmLXRoZW4tZmFsbHRocm91
Z2guanM6IEFkZGVkLgorICAgICAgICAqIHdhc20vanMtYXBpL2Z1bmN0aW9uLXRlc3RzL2xvb3At
bXVsdC5qczogQWRkZWQuCisgICAgICAgICogd2FzbS9qcy1hcGkvZnVuY3Rpb24tdGVzdHMvbG9v
cC1zdW0uanM6IEFkZGVkLgorICAgICAgICAqIHdhc20vanMtYXBpL2Z1bmN0aW9uLXRlc3RzL3Jl
dDUuanM6IEFkZGVkLgorICAgICAgICAqIHdhc20vc2VsZi10ZXN0L3Rlc3RfTG93TGV2ZWxCaW5h
cnlfdmFyaW50MzIuanM6IFJlbmFtZWQgZnJvbSBKU1Rlc3RzL3dhc20vc2VsZi10ZXN0L3Rlc3Rf
TG93TGV2ZWxCaW5hcnlfdmFyaW50LmpzLgorICAgICAgICAqIHdhc20vc2VsZi10ZXN0L3Rlc3Rf
TG93TGV2ZWxCaW5hcnlfdmFydWludDMyLmpzOiBSZW5hbWVkIGZyb20gSlNUZXN0cy93YXNtL3Nl
bGYtdGVzdC90ZXN0X0xvd0xldmVsQmluYXJ5X3ZhcnVpbnQuanMuCisKIDIwMTYtMTEtMDkgIFNh
YW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgTWF0aC5taW4oKS9NYXRo
Lm1heCgpIHdpdGggbm8gYXJndW1lbnRzIGlzIGxvd2VyZWQgaW5jb3JyZWN0bHkgaW4gdGhlIEJ5
dGVjb2RlUGFyc2VyCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vQnVpbGRlci5qcyBiL0pTVGVz
dHMvd2FzbS9CdWlsZGVyLmpzCmluZGV4IGQxZTQ3Njg0MjIzOGMyMzY4Yzc1MzNiMzZmMjcyODFk
NDM2NmEyYTguLjc2Zjk3YjQ3ZjQ1ODg0M2NiNzg4YTUwMTRiYzYzMTk0OGFiMDg1NmQgMTAwNjQ0
Ci0tLSBhL0pTVGVzdHMvd2FzbS9CdWlsZGVyLmpzCisrKyBiL0pTVGVzdHMvd2FzbS9CdWlsZGVy
LmpzCkBAIC02MCwxNCArNjAsMTQgQEAgY29uc3QgX21heWJlUmVnaXN0ZXJUeXBlID0gKGJ1aWxk
ZXIsIHR5cGUpID0+IHsKICAgICBpZiAodHlwZW9mKHR5cGUpID09PSAibnVtYmVyIikgewogICAg
ICAgICAvLyBUeXBlIG51bWJlcnMgYWxyZWFkeSByZWZlciB0byB0aGUgdHlwZSBzZWN0aW9uLCBu
byBuZWVkIHRvIHJlZ2lzdGVyIHRoZW0uCiAgICAgICAgIGlmIChidWlsZGVyLl9jaGVja2VkKSB7
Ci0gICAgICAgICAgICBhc3NlcnQuaXNOb3RVbmRlZih0eXBlU2VjdGlvbiwgYENhbid0IHVzZSB0
eXBlICR7dHlwZX0gaWYgYSB0eXBlIHNlY3Rpb24gaXNuJ3QgcHJlc2VudGApOwotICAgICAgICAg
ICAgYXNzZXJ0LmlzTm90VW5kZWYodHlwZVNlY3Rpb24uZGF0YVt0eXBlXSwgYFR5cGUgJHt0eXBl
fSBkb2Vzbid0IGV4aXN0IGluIHR5cGUgc2VjdGlvbmApOworICAgICAgICAgICAgYXNzZXJ0Lmlz
Tm90VW5kZWYodHlwZVNlY3Rpb24sIGBDYW4gbm90IHVzZSB0eXBlICR7dHlwZX0gaWYgYSB0eXBl
IHNlY3Rpb24gaXMgbm90IHByZXNlbnRgKTsKKyAgICAgICAgICAgIGFzc2VydC5pc05vdFVuZGVm
KHR5cGVTZWN0aW9uLmRhdGFbdHlwZV0sIGBUeXBlICR7dHlwZX0gZG9lcyBub3QgZXhpc3QgaW4g
dHlwZSBzZWN0aW9uYCk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHR5cGU7CiAgICAgfQog
ICAgIGFzc2VydC5oYXNPYmplY3RQcm9wZXJ0eSh0eXBlLCAicGFyYW1zIiwgYEV4cGVjdGVkIHR5
cGUgdG8gYmUgYSBudW1iZXIgb3Igb2JqZWN0IHdpdGggJ3BhcmFtcycgYW5kIG9wdGlvbmFsbHkg
J3JldCcgZmllbGRzYCk7CiAgICAgY29uc3QgW3BhcmFtcywgcmV0XSA9IF9ub3JtYWxpemVGdW5j
dGlvblNpZ25hdHVyZSh0eXBlLnBhcmFtcywgdHlwZS5yZXQpOwotICAgIGFzc2VydC5pc05vdFVu
ZGVmKHR5cGVTZWN0aW9uLCBgQ2FuJ3QgYWRkIHR5cGUgaWYgYSB0eXBlIHNlY3Rpb24gaXNuJ3Qg
cHJlc2VudGApOworICAgIGFzc2VydC5pc05vdFVuZGVmKHR5cGVTZWN0aW9uLCBgQ2FuIG5vdCBh
ZGQgdHlwZSBpZiBhIHR5cGUgc2VjdGlvbiBpcyBub3QgcHJlc2VudGApOwogICAgIC8vIFRyeSBy
ZXVzaW5nIGFuIGVxdWl2YWxlbnQgdHlwZSBmcm9tIHRoZSB0eXBlIHNlY3Rpb24uCiAgICAgdHlw
ZXM6CiAgICAgZm9yIChsZXQgaSA9IDA7IGkgIT09IHR5cGVTZWN0aW9uLmRhdGEubGVuZ3RoOyAr
K2kpIHsKQEAgLTE1NCw2ICsxNTQsMTU2IEBAIGNvbnN0IF9leHBvcnRGdW5jdGlvbkNvbnRpbnVh
dGlvbiA9IChidWlsZGVyLCBzZWN0aW9uLCBuZXh0QnVpbGRlcikgPT4gewogICAgIH07CiB9Owog
Citjb25zdCBfY2hlY2tTdGFja0FyZ3MgPSAob3AsIHBhcmFtKSA9PiB7CisgICAgZm9yIChsZXQg
ZXhwZWN0IG9mIHBhcmFtbikgeworICAgICAgICBpZiAoV0FTTS5pc1ZhbGlkVmFsdWVUeXBlKGV4
cGVjdCkpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FIGltcGxlbWVudCBzdGFjayBjaGVja3MgZm9y
IGFyZ3VtZW50cy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzQy
MQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gSGFuZGxlIG91ciBvd24gbWV0YS10
eXBlcy4KKyAgICAgICAgICAgIHN3aXRjaCAoZXhwZWN0KSB7CisgICAgICAgICAgICBjYXNlICJh
ZGRyIjogYnJlYWs7IC8vIEZJWE1FIGltcGxlbWVudCBhZGRyLiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDIxCisgICAgICAgICAgICBjYXNlICJhbnkiOiBicmVh
azsgLy8gRklYTUUgaW1wbGVtZW50IGFueS4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2MzQyMQorICAgICAgICAgICAgY2FzZSAiYm9vbCI6IGJyZWFrOyAvLyBGSVhN
RSBpbXBsZW1lbnQgYm9vbC4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2MzQyMQorICAgICAgICAgICAgY2FzZSAiY2FsbCI6IGJyZWFrOyAvLyBGSVhNRSBpbXBsZW1l
bnQgY2FsbCBzdGFjayBhcmd1bWVudCBjaGVja3MgYmFzZWQgb24gZnVuY3Rpb24gc2lnbmF0dXJl
LiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDIxCisgICAgICAg
ICAgICBjYXNlICJnbG9iYWwiOiBicmVhazsgLy8gRklYTUUgaW1wbGVtZW50IGdsb2JhbC4gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzQyMQorICAgICAgICAgICAg
Y2FzZSAibG9jYWwiOiBicmVhazsgLy8gRklYTUUgaW1wbGVtZW50IGxvY2FsLiBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDIxCisgICAgICAgICAgICBjYXNlICJw
cmV2IjogYnJlYWs7IC8vIEZJWE1FIGltcGxlbWVudCBwcmV2LCBjaGVja2luZyBmb3Igd2hldGV2
ZXIgdGhlIHByZXZpb3VzIHZhbHVlIHdhcy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2MzQyMQorICAgICAgICAgICAgY2FzZSAic2l6ZSI6IGJyZWFrOyAvLyBGSVhN
RSBpbXBsZW1lbnQgc2l6ZS4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2MzQyMQorICAgICAgICAgICAgZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKGBJbXBsZW1lbnRh
dGlvbiBwcm9ibGVtOiB1bmhhbmRsZWQgbWV0YS10eXBlICIke2V4cGVjdH0iIG9uICIke29wfSJg
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKworY29uc3QgX2NoZWNrU3Rh
Y2tSZXR1cm4gPSAob3AsIHJldCkgPT4geworICAgIGZvciAobGV0IGV4cGVjdCBvZiByZXQpIHsK
KyAgICAgICAgaWYgKFdBU00uaXNWYWxpZFZhbHVlVHlwZShleHBlY3QpKSB7CisgICAgICAgICAg
ICAvLyBGSVhNRSBpbXBsZW1lbnQgc3RhY2sgY2hlY2tzIGZvciByZXR1cm4uIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM0MjEKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIC8vIEhhbmRsZSBvdXIgb3duIG1ldGEtdHlwZXMuCisgICAgICAgICAgICBzd2l0
Y2ggKGV4cGVjdCkgeworICAgICAgICAgICAgY2FzZSAiYm9vbCI6IGJyZWFrOyAvLyBGSVhNRSBp
bXBsZW1lbnQgYm9vbC4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
MzQyMQorICAgICAgICAgICAgY2FzZSAiY2FsbCI6IGJyZWFrOyAvLyBGSVhNRSBpbXBsZW1lbnQg
Y2FsbCBzdGFjayByZXR1cm4gY2hlY2sgYmFzZWQgb24gZnVuY3Rpb24gc2lnbmF0dXJlLiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDIxCisgICAgICAgICAgICBj
YXNlICJjb250cm9sIjogYnJlYWs7IC8vIEZJWE1FIGltcGxlbWVudCBjb250cm9sLiBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDIxCisgICAgICAgICAgICBjYXNl
ICJnbG9iYWwiOiBicmVhazsgLy8gRklYTUUgaW1wbGVtZW50IGdsb2JhbC4gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzQyMQorICAgICAgICAgICAgY2FzZSAibG9j
YWwiOiBicmVhazsgLy8gRklYTUUgaW1wbGVtZW50IGxvY2FsLiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDIxCisgICAgICAgICAgICBjYXNlICJwcmV2IjogYnJl
YWs7IC8vIEZJWE1FIGltcGxlbWVudCBwcmV2LCBjaGVja2luZyBmb3Igd2hldGV2ZXIgdGhlIHBh
cmFtZXRlciB0eXBlIHdhcy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2MzQyMQorICAgICAgICAgICAgY2FzZSAic2l6ZSI6IGJyZWFrOyAvLyBGSVhNRSBpbXBsZW1l
bnQgc2l6ZS4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzQyMQor
ICAgICAgICAgICAgZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKGBJbXBsZW1lbnRhdGlvbiBwcm9i
bGVtOiB1bmhhbmRsZWQgbWV0YS10eXBlICIke2V4cGVjdH0iIG9uICIke29wfSJgKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fQorfTsKKworY29uc3QgX2NoZWNrSW1tcyA9IChvcCwgaW1tcywgZXhwZWN0ZWRJbW1zKSA9PiB7
CisgICAgYXNzZXJ0LmVxKGltbXMubGVuZ3RoLCBleHBlY3RlZEltbXMubGVuZ3RoLCBgIiR7b3B9
IiBleHBlY3RzICR7ZXhwZWN0ZWRJbW1zLmxlbmd0aH0gaW1tZWRpYXRlcywgZ290ICR7aW1tcy5s
ZW5ndGh9YCk7CisgICAgZm9yIChsZXQgaWR4ID0gMDsgaWR4ICE9PSBleHBlY3RlZEltbXMubGVu
Z3RoOyArK2lkeCkgeworICAgICAgICBjb25zdCBnb3QgPSBpbW1zW2lkeF07CisgICAgICAgIGNv
bnN0IGV4cGVjdCA9IGV4cGVjdGVkSW1tc1tpZHhdOworICAgICAgICBzd2l0Y2ggKGV4cGVjdC5u
YW1lKSB7CisgICAgICAgIGNhc2UgImZ1bmN0aW9uX2luZGV4IjoKKyAgICAgICAgICAgIGFzc2Vy
dC50cnV0aHkoX2lzVmFsaWRWYWx1ZShnb3QsICJpMzIiKSwgYEludmFsaWQgdmFsdWUgb24gJHtv
cH06IGdvdCAiJHtnb3R9IiwgZXhwZWN0ZWQgaTMyYCk7CisgICAgICAgICAgICAvLyBGSVhNRSBj
aGVjayBmdW5jdGlvbiBpbmRpY2VzLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTYzNDIxCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAibG9jYWxfaW5k
ZXgiOiB0aHJvdyBuZXcgRXJyb3IoYFVuaW1wbGVtZW50ZWQ6ICIke2V4cGVjdC5uYW1lfSIgb24g
IiR7b3B9ImApOworICAgICAgICBjYXNlICJnbG9iYWxfaW5kZXgiOiB0aHJvdyBuZXcgRXJyb3Io
YFVuaW1wbGVtZW50ZWQ6ICIke2V4cGVjdC5uYW1lfSIgb24gIiR7b3B9ImApOworICAgICAgICBj
YXNlICJ0eXBlX2luZGV4IjogdGhyb3cgbmV3IEVycm9yKGBVbmltcGxlbWVudGVkOiAiJHtleHBl
Y3QubmFtZX0iIG9uICIke29wfSJgKTsKKyAgICAgICAgY2FzZSAidmFsdWUiOgorICAgICAgICAg
ICAgYXNzZXJ0LnRydXRoeShfaXNWYWxpZFZhbHVlKGdvdCwgcmV0WzBdKSwgYEludmFsaWQgdmFs
dWUgb24gJHtvcH06IGdvdCAiJHtnb3R9IiwgZXhwZWN0ZWQgJHtyZXRbMF19YCk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSAiZmxhZ3MiOiB0aHJvdyBuZXcgRXJyb3IoYFVuaW1w
bGVtZW50ZWQ6ICIke2V4cGVjdC5uYW1lfSIgb24gIiR7b3B9ImApOworICAgICAgICBjYXNlICJv
ZmZzZXQiOiB0aHJvdyBuZXcgRXJyb3IoYFVuaW1wbGVtZW50ZWQ6ICIke2V4cGVjdC5uYW1lfSIg
b24gIiR7b3B9ImApOworICAgICAgICAgICAgLy8gQ29udHJvbDoKKyAgICAgICAgY2FzZSAiZGVm
YXVsdF90YXJnZXQiOiB0aHJvdyBuZXcgRXJyb3IoYFVuaW1wbGVtZW50ZWQ6ICIke2V4cGVjdC5u
YW1lfSIgb24gIiR7b3B9ImApOworICAgICAgICBjYXNlICJyZWxhdGl2ZV9kZXB0aCI6IHRocm93
IG5ldyBFcnJvcihgVW5pbXBsZW1lbnRlZDogIiR7ZXhwZWN0Lm5hbWV9IiBvbiAiJHtvcH0iYCk7
CisgICAgICAgIGNhc2UgInNpZyI6IHRocm93IG5ldyBFcnJvcihgVW5pbXBsZW1lbnRlZDogIiR7
ZXhwZWN0Lm5hbWV9IiBvbiAiJHtvcH0iYCk7CisgICAgICAgIGNhc2UgInRhcmdldF9jb3VudCI6
IHRocm93IG5ldyBFcnJvcihgVW5pbXBsZW1lbnRlZDogIiR7ZXhwZWN0Lm5hbWV9IiBvbiAiJHtv
cH0iYCk7CisgICAgICAgIGNhc2UgInRhcmdldF90YWJsZSI6IHRocm93IG5ldyBFcnJvcihgVW5p
bXBsZW1lbnRlZDogIiR7ZXhwZWN0Lm5hbWV9IiBvbiAiJHtvcH0iYCk7CisgICAgICAgIGRlZmF1
bHQ6IHRocm93IG5ldyBFcnJvcihgSW1wbGVtZW50YXRpb24gcHJvYmxlbTogdW5oYW5kbGVkIGlt
bWVkaWF0ZSAiJHtleHBlY3QubmFtZX0iIG9uICIke29wfSJgKTsKKyAgICAgICAgfQorICAgIH0K
K307CisKK2NvbnN0IF9jcmVhdGVGdW5jdGlvbkJ1aWxkZXIgPSAoZnVuYywgYnVpbGRlciwgcHJl
dmlvdXNCdWlsZGVyKSA9PiB7CisgICAgbGV0IGZ1bmN0aW9uQnVpbGRlciA9IHt9OworICAgIGZv
ciAoY29uc3Qgb3AgaW4gV0FTTS5kZXNjcmlwdGlvbi5vcGNvZGUpIHsKKyAgICAgICAgY29uc3Qg
bmFtZSA9IF90b0phdmFTY3JpcHROYW1lKG9wKTsKKyAgICAgICAgY29uc3QgdmFsdWUgPSBXQVNN
LmRlc2NyaXB0aW9uLm9wY29kZVtvcF0udmFsdWU7CisgICAgICAgIGNvbnN0IHJldCA9IFdBU00u
ZGVzY3JpcHRpb24ub3Bjb2RlW29wXVsicmV0dXJuIl07CisgICAgICAgIGNvbnN0IHBhcmFtID0g
V0FTTS5kZXNjcmlwdGlvbi5vcGNvZGVbb3BdLnBhcmFtZXRlcjsKKyAgICAgICAgY29uc3QgaW1t
ID0gV0FTTS5kZXNjcmlwdGlvbi5vcGNvZGVbb3BdLmltbWVkaWF0ZTsKKworICAgICAgICBjb25z
dCBjaGVja1N0YWNrQXJncyA9IGJ1aWxkZXIuX2NoZWNrZWQgPyBfY2hlY2tTdGFja0FyZ3MgOiAo
KSA9PiB7fTsKKyAgICAgICAgY29uc3QgY2hlY2tTdGFja1JldHVybiA9IGJ1aWxkZXIuX2NoZWNr
ZWQgPyBfY2hlY2tTdGFja1JldHVybiA6ICgpID0+IHt9OworICAgICAgICBjb25zdCBjaGVja0lt
bXMgPSBidWlsZGVyLl9jaGVja2VkID8gX2NoZWNrSW1tcyA6ICgpID0+IHt9OworCisgICAgICAg
IGZ1bmN0aW9uQnVpbGRlcltuYW1lXSA9ICguLi5hcmdzKSA9PiB7CisgICAgICAgICAgICBsZXQg
bmV4dEJ1aWxkZXI7CisgICAgICAgICAgICBzd2l0Y2ggKG5hbWUpIHsKKyAgICAgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICAgICAgbmV4dEJ1aWxkZXIgPSBmdW5jdGlvbkJ1aWxkZXI7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAiRW5kIjoKKyAgICAg
ICAgICAgICAgICBuZXh0QnVpbGRlciA9IHByZXZpb3VzQnVpbGRlcjsKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICJCbG9jayI6CisgICAgICAgICAgICAgICAg
Y2FzZSAiTG9vcCI6CisgICAgICAgICAgICBjYXNlICJJZiI6CisgICAgICAgICAgICAgICAgbmV4
dEJ1aWxkZXIgPSBfY3JlYXRlRnVuY3Rpb25CdWlsZGVyKGZ1bmMsIGJ1aWxkZXIsIGZ1bmN0aW9u
QnVpbGRlcik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIC8vIFBhc3NpbmcgYSBmdW5jdGlvbiBhcyB0aGUgYXJndW1lbnQgaXMgYSB3YXkgdG8g
bmVzdCBibG9ja3MgbGV4aWNhbGx5LgorICAgICAgICAgICAgY29uc3QgY29udGludWF0aW9uID0g
YXJnc1thcmdzLmxlbmd0aCAtIDFdOworICAgICAgICAgICAgY29uc3QgaGFzQ29udGludWF0aW9u
ID0gdHlwZW9mKGNvbnRpbnVhdGlvbikgPT09ICJmdW5jdGlvbiI7CisgICAgICAgICAgICBjb25z
dCBpbW1zID0gaGFzQ29udGludWF0aW9uID8gYXJncy5zbGljZSgwLCAtMSkgOiBhcmdzOyAvLyBG
SVhNRTogYWxsb3cgcGFzc2luZyBpbiBzdGFjayB2YWx1ZXMsIGFzLWlmIGNvZGUgd2VyZSBhIHN0
YWNrIG1hY2hpbmUuIEp1c3QgY2hlY2sgZm9yIGEgYnVpbGRlciB0byB0aGlzIGZ1bmN0aW9uLCBh
bmQgZHJvcC4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzQyMgor
ICAgICAgICAgICAgY2hlY2tJbW1zKG9wLCBpbW1zLCBpbW0pOworICAgICAgICAgICAgY2hlY2tT
dGFja0FyZ3Mob3AsIHBhcmFtKTsKKyAgICAgICAgICAgIGNoZWNrU3RhY2tSZXR1cm4ob3AsIHJl
dCk7CisgICAgICAgICAgICBjb25zdCBzdGFja0FyZ3MgPSBbXTsgLy8gRklYTUUgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjcwNgorICAgICAgICAgICAgZnVuYy5j
b2RlLnB1c2goeyBuYW1lOiBvcCwgdmFsdWU6IHZhbHVlLCBhcmd1bWVudHM6IHN0YWNrQXJncywg
aW1tZWRpYXRlczogaW1tcyB9KTsKKyAgICAgICAgICAgIGlmIChoYXNDb250aW51YXRpb24pCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihuZXh0QnVpbGRlcikuRW5kKCk7Cisg
ICAgICAgICAgICByZXR1cm4gbmV4dEJ1aWxkZXI7CisgICAgICAgIH07CisgICAgfQorICAgIHJl
dHVybiBmdW5jdGlvbkJ1aWxkZXI7Cit9CisKK2NvbnN0IF9jcmVhdGVGdW5jdGlvbiA9IChzZWN0
aW9uLCBidWlsZGVyLCBwcmV2aW91c0J1aWxkZXIpID0+IHsKKyAgICByZXR1cm4gKC4uLmFyZ3Mp
ID0+IHsKKyAgICAgICAgY29uc3QgbmFtZU9mZnNldCA9ICh0eXBlb2YoYXJnc1swXSkgPT09ICJz
dHJpbmciKSA+Pj4gMDsKKyAgICAgICAgY29uc3QgZnVuY3Rpb25OYW1lID0gbmFtZU9mZnNldCA/
IGFyZ3NbMF0gOiB1bmRlZmluZWQ7CisgICAgICAgIGxldCBzaWduYXR1cmUgPSBhcmdzWzAgKyBu
YW1lT2Zmc2V0XTsKKyAgICAgICAgY29uc3QgbG9jYWxzID0gYXJnc1sxICsgbmFtZU9mZnNldF0g
PT09IHVuZGVmaW5lZCA/IFtdIDogYXJnc1sxICsgbmFtZU9mZnNldF07CisgICAgICAgIGZvciAo
Y29uc3QgbG9jYWwgb2YgbG9jYWxzKQorICAgICAgICAgICAgYXNzZXJ0LnRydXRoeShXQVNNLmlz
VmFsaWRWYWx1ZVR5cGUobG9jYWwpLCBgVHlwZSBvZiBsb2NhbDogJHtsb2NhbH0gbmVlZHMgdG8g
YmUgYSB2YWxpZCB2YWx1ZSB0eXBlYCk7CisKKyAgICAgICAgaWYgKHR5cGVvZihzaWduYXR1cmUp
ID09PSAidW5kZWZpbmVkIikKKyAgICAgICAgICAgIHNpZ25hdHVyZSA9IHsgcGFyYW1zOiBbXSB9
OworICAgICAgICBhc3NlcnQuaGFzT2JqZWN0UHJvcGVydHkoc2lnbmF0dXJlLCAicGFyYW1zIiwg
YEV4cGVjdCBmdW5jdGlvbiBzaWduYXR1cmUgdG8gYmUgYW4gb2JqZWN0IHdpdGggYSAicGFyYW1z
IiBmaWVsZCwgZ290ICIke3NpZ25hdHVyZX0iYCk7CisgICAgICAgIGNvbnN0IFtwYXJhbXMsIHJl
dF0gPSBfbm9ybWFsaXplRnVuY3Rpb25TaWduYXR1cmUoc2lnbmF0dXJlLnBhcmFtcywgc2lnbmF0
dXJlLnJldCk7CisgICAgICAgIHNpZ25hdHVyZSA9IHsgcGFyYW1zOiBwYXJhbXMsIHJldDogcmV0
IH07CisgICAgICAgIGNvbnN0IGZ1bmMgPSB7CisgICAgICAgICAgICBuYW1lOiBmdW5jdGlvbk5h
bWUsCisgICAgICAgICAgICB0eXBlOiBfbWF5YmVSZWdpc3RlclR5cGUoYnVpbGRlciwgc2lnbmF0
dXJlKSwKKyAgICAgICAgICAgIHNpZ25hdHVyZTogc2lnbmF0dXJlLAorICAgICAgICAgICAgbG9j
YWxzOiBwYXJhbXMuY29uY2F0KGxvY2FscyksIC8vIFBhcmFtZXRlcnMgYXJlIHRoZSBmaXJzdCBs
b2NhbHMuCisgICAgICAgICAgICBwYXJhbWV0ZXJDb3VudDogcGFyYW1zLmxlbmd0aCwKKyAgICAg
ICAgICAgIGNvZGU6IFtdCisgICAgICAgIH07CisKKyAgICAgICAgY29uc3QgZnVuY3Rpb25TZWN0
aW9uID0gYnVpbGRlci5fZ2V0U2VjdGlvbigiRnVuY3Rpb24iKTsKKyAgICAgICAgaWYgKGZ1bmN0
aW9uU2VjdGlvbikKKyAgICAgICAgICAgIGZ1bmN0aW9uU2VjdGlvbi5kYXRhLnB1c2goZnVuYy50
eXBlKTsKKworICAgICAgICBzZWN0aW9uLmRhdGEucHVzaChmdW5jKTsKKyAgICAgICAgYnVpbGRl
ci5fcmVnaXN0ZXJGdW5jdGlvblRvSW5kZXhTcGFjZShmdW5jdGlvbk5hbWUpOworCisgICAgICAg
IHJldHVybiBfY3JlYXRlRnVuY3Rpb25CdWlsZGVyKGZ1bmMsIGJ1aWxkZXIsIHByZXZpb3VzQnVp
bGRlcik7CisgICAgfQorfTsKKwogZXhwb3J0IGRlZmF1bHQgY2xhc3MgQnVpbGRlciB7CiAgICAg
Y29uc3RydWN0b3IoKSB7CiAgICAgICAgIHRoaXMuc2V0Q2hlY2tlZCh0cnVlKTsKQEAgLTIxOCw2
ICszNjgsNyBAQCBleHBvcnQgZGVmYXVsdCBjbGFzcyBCdWlsZGVyIHsKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGltcG9ydEJ1aWxkZXI7CiAgICAgICAgICAgICAgICAgfTsKICAgICAgICAg
ICAgICAgICBicmVhazsKKwogICAgICAgICAgICAgY2FzZSAiRXhwb3J0IjoKICAgICAgICAgICAg
ICAgICB0aGlzW3NlY3Rpb25dID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHMgPSB0aGlzLl9hZGRTZWN0aW9uKHNlY3Rpb24pOwpAQCAtMjMxLDYgKzM4MiwzMiBAQCBl
eHBvcnQgZGVmYXVsdCBjbGFzcyBCdWlsZGVyIHsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGV4cG9ydEJ1aWxkZXI7CiAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICBicmVh
azsKKworICAgICAgICAgICAgY2FzZSAiTWVtb3J5IjoKKyAgICAgICAgICAgICAgICB0aGlzW3Nl
Y3Rpb25dID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IHMgPSB0aGlz
Ll9hZGRTZWN0aW9uKHNlY3Rpb24pOworICAgICAgICAgICAgICAgICAgICBjb25zdCBleHBvcnRC
dWlsZGVyID0geworICAgICAgICAgICAgICAgICAgICAgICAgRW5kOiAoKSA9PiB0aGlzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgSW5pdGlhbE1heFBhZ2VzOiAoaW5pdGlhbCwgbWF4KSA9PiB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5kYXRhLnB1c2goeyBpbml0aWFsLCBtYXgg
fSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV4cG9ydEJ1aWxkZXI7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBleHBvcnRCdWlsZGVyOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSAiRnVuY3Rpb24iOgorICAg
ICAgICAgICAgICAgIHRoaXNbc2VjdGlvbl0gPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAg
ICAgICAgY29uc3QgcyA9IHRoaXMuX2FkZFNlY3Rpb24oc2VjdGlvbik7CisgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGV4cG9ydEJ1aWxkZXIgPSB7CisgICAgICAgICAgICAgICAgICAgICAgICBF
bmQ6ICgpID0+IHRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBhZGQgYWJp
bGl0eSB0byBhZGQgdGhpcyB3aXRoIHdoYXRldmVyLgorICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBleHBvcnRCdWlsZGVyOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBicmVhazsKKwogICAgICAgICAgICAgY2FzZSAiQ29kZSI6CiAg
ICAgICAgICAgICAgICAgdGhpc1tzZWN0aW9uXSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAg
ICAgICAgICBjb25zdCBzID0gdGhpcy5fYWRkU2VjdGlvbihzZWN0aW9uKTsKQEAgLTI1NCw3ICs0
MzEsNyBAQCBleHBvcnQgZGVmYXVsdCBjbGFzcyBCdWlsZGVyIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNhc2UgIm51bWJlciI6IHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBpbmRleCA9IGJ1aWxkZXIuX2dldEZ1bmN0aW9uRnJv
bUluZGV4U3BhY2UoZS5pbmRleCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKGJ1aWxkZXIuX2NoZWNrZWQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFzc2VydC5pc05vdFVuZGVmKGluZGV4LCBgRXhwb3J0ICIke2UuZmll
bGR9IiBkb2Vzbid0IGNvcnJlc3BvbmQgdG8gYSBkZWZpbmVkIHZhbHVlIGluIHRoZSBmdW5jdGlv
biBpbmRleCBzcGFjZWApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhc3NlcnQuaXNOb3RVbmRlZihpbmRleCwgYEV4cG9ydCAiJHtlLmZpZWxkfSIgZG9lcyBu
b3QgY29ycmVzcG9uZCB0byBhIGRlZmluZWQgdmFsdWUgaW4gdGhlIGZ1bmN0aW9uIGluZGV4IHNw
YWNlYCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGJyZWFrOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAidW5kZWZpbmVkIjoKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuaW1w
bGVtZW50ZWQ6IEZ1bmN0aW9uKCkuRW5kKCkgd2l0aCB1bmRlZmluZWQgZXhwb3J0IGluZGV4YCk7
IC8vIEZJWE1FCkBAIC0yNjksMTE1ICs0NDYsMTMgQEAgZXhwb3J0IGRlZmF1bHQgY2xhc3MgQnVp
bGRlciB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBidWlsZGVyOwogICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIEZ1bmN0aW9uOiAoYTAsIGExKSA9PiB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbGV0IHNpZ25hdHVyZSA9IHR5cGVvZihhMCkgPT09ICJzdHJpbmci
ID8gYTEgOiBhMDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmdW5jdGlvbk5h
bWUgPSB0eXBlb2YoYTApID09PSAic3RyaW5nIiA/IGEwIDogdW5kZWZpbmVkOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2Yoc2lnbmF0dXJlKSA9PT0gInVuZGVmaW5lZCIp
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25hdHVyZSA9IHsgcGFyYW1zOiBb
XSB9OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydC5oYXNPYmplY3RQcm9wZXJ0
eShzaWduYXR1cmUsICJwYXJhbXMiLCBgRXhwZWN0IGZ1bmN0aW9uIHNpZ25hdHVyZSB0byBiZSBh
biBvYmplY3Qgd2l0aCBhICJwYXJhbXMiIGZpZWxkLCBnb3QgIiR7c2lnbmF0dXJlfSJgKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBbcGFyYW1zLCByZXRdID0gX25vcm1hbGl6
ZUZ1bmN0aW9uU2lnbmF0dXJlKHNpZ25hdHVyZS5wYXJhbXMsIHNpZ25hdHVyZS5yZXQpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25hdHVyZSA9IHsgcGFyYW1zOiBwYXJhbXMsIHJl
dDogcmV0IH07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZnVuYyA9IHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogZnVuY3Rpb25OYW1lLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBfbWF5YmVSZWdpc3RlclR5cGUoYnVpbGRl
ciwgc2lnbmF0dXJlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmF0dXJl
OiBzaWduYXR1cmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsczogcGFy
YW1zLCAvLyBQYXJhbWV0ZXJzIGFyZSB0aGUgZmlyc3QgbG9jYWxzLgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJDb3VudDogcGFyYW1zLmxlbmd0aCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogW10KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuZGF0YS5wdXNoKGZ1bmMpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIuX3JlZ2lzdGVyRnVuY3Rpb25Ub0lu
ZGV4U3BhY2UoZnVuY3Rpb25OYW1lKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQg
ZnVuY3Rpb25CdWlsZGVyID0ge307Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChj
b25zdCBvcCBpbiBXQVNNLmRlc2NyaXB0aW9uLm9wY29kZSkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBuYW1lID0gX3RvSmF2YVNjcmlwdE5hbWUob3ApOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IFdBU00uZGVzY3JpcHRpb24u
b3Bjb2RlW29wXS52YWx1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
cmV0ID0gV0FTTS5kZXNjcmlwdGlvbi5vcGNvZGVbb3BdWyJyZXR1cm4iXTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyYW0gPSBXQVNNLmRlc2NyaXB0aW9uLm9wY29k
ZVtvcF0ucGFyYW1ldGVyOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBp
bW0gPSBXQVNNLmRlc2NyaXB0aW9uLm9wY29kZVtvcF0uaW1tZWRpYXRlOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGVja1N0YWNrQXJncyA9IGJ1aWxkZXIuX2NoZWNr
ZWQgPyBvcCA9PiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxl
dCBleHBlY3Qgb2YgcGFyYW0pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoV0FTTS5pc1ZhbGlkVmFsdWVUeXBlKGV4cGVjdCkpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRklYTUUgaW1wbGVtZW50IHN0YWNrIGNo
ZWNrcyBmb3IgYXJndW1lbnRzLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTYzNDIxCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSGFuZGxl
IG91ciBvd24gbWV0YS10eXBlcy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3dpdGNoIChleHBlY3QpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2FzZSAiYWRkciI6IGJyZWFrOyAvLyBGSVhNRSBpbXBsZW1lbnQgYWRk
ci4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzQyMQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJhbnkiOiBicmVhazsg
Ly8gRklYTUUgaW1wbGVtZW50IGFueS4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2MzQyMQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjYXNlICJib29sIjogYnJlYWs7IC8vIEZJWE1FIGltcGxlbWVudCBib29sLiBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDIxCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImNhbGwiOiBicmVhazsgLy8gRklYTUUgaW1w
bGVtZW50IGNhbGwgc3RhY2sgYXJndW1lbnQgY2hlY2tzIGJhc2VkIG9uIGZ1bmN0aW9uIHNpZ25h
dHVyZS4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzQyMQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJnbG9iYWwiOiBi
cmVhazsgLy8gRklYTUUgaW1wbGVtZW50IGdsb2JhbC4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2MzQyMQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjYXNlICJsb2NhbCI6IGJyZWFrOyAvLyBGSVhNRSBpbXBsZW1lbnQgbG9jYWwu
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM0MjEKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAicHJldiI6IGJyZWFrOyAv
LyBGSVhNRSBpbXBsZW1lbnQgcHJldiwgY2hlY2tpbmcgZm9yIHdoZXRldmVyIHRoZSBwcmV2aW91
cyB2YWx1ZSB3YXMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM0
MjEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAic2l6
ZSI6IGJyZWFrOyAvLyBGSVhNRSBpbXBsZW1lbnQgc2l6ZS4gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2MzQyMQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoYEltcGxlbWVudGF0aW9uIHBy
b2JsZW06IHVuaGFuZGxlZCBtZXRhLXR5cGUgIiR7ZXhwZWN0fSIgb24gIiR7b3B9ImApOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IDogKCkgPT4ge307
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoZWNrU3RhY2tSZXR1cm4g
PSBidWlsZGVyLl9jaGVja2VkID8gb3AgPT4gewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZm9yIChsZXQgZXhwZWN0IG9mIHJldCkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChXQVNNLmlzVmFsaWRWYWx1ZVR5cGUoZXhwZWN0KSkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRSBpbXBs
ZW1lbnQgc3RhY2sgY2hlY2tzIGZvciByZXR1cm4uIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjM0MjEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBIYW5kbGUgb3VyIG93biBtZXRhLXR5cGVzLgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGV4cGVjdCkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJib29sIjogYnJlYWs7IC8vIEZJWE1FIGlt
cGxlbWVudCBib29sLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYz
NDIxCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImNh
bGwiOiBicmVhazsgLy8gRklYTUUgaW1wbGVtZW50IGNhbGwgc3RhY2sgcmV0dXJuIGNoZWNrIGJh
c2VkIG9uIGZ1bmN0aW9uIHNpZ25hdHVyZS4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2MzQyMQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjYXNlICJjb250cm9sIjogYnJlYWs7IC8vIEZJWE1FIGltcGxlbWVudCBjb250cm9sLiBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDIxCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImdsb2JhbCI6IGJyZWFrOyAv
LyBGSVhNRSBpbXBsZW1lbnQgZ2xvYmFsLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTYzNDIxCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNhc2UgImxvY2FsIjogYnJlYWs7IC8vIEZJWE1FIGltcGxlbWVudCBsb2NhbC4gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzQyMQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJwcmV2IjogYnJlYWs7IC8vIEZJWE1F
IGltcGxlbWVudCBwcmV2LCBjaGVja2luZyBmb3Igd2hldGV2ZXIgdGhlIHBhcmFtZXRlciB0eXBl
IHdhcy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzQyMQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJzaXplIjogYnJl
YWs7IC8vIEZJWE1FIGltcGxlbWVudCBzaXplLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTYzNDIxCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcihgSW1wbGVtZW50YXRpb24gcHJvYmxlbTog
dW5oYW5kbGVkIG1ldGEtdHlwZSAiJHtleHBlY3R9IiBvbiAiJHtvcH0iYCk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gOiAoKSA9PiB7fTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hlY2tJbW1zID0gYnVpbGRlci5fY2hl
Y2tlZCA/IChvcCwgaW1tcykgPT4gewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYXNzZXJ0LmVxKGltbXMubGVuZ3RoLCBpbW0ubGVuZ3RoLCBgIiR7b3B9IiBleHBlY3RzICR7
aW1tLmxlbmd0aH0gaW1tZWRpYXRlcywgZ290ICR7aW1tcy5sZW5ndGh9YCk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpZHggPSAwOyBpZHggIT09IGltbS5s
ZW5ndGg7ICsraWR4KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZ290ID0gaW1tc1tpZHhdOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGV4cGVjdCA9IGltbVtpZHhdOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN3aXRjaCAoZXhwZWN0Lm5hbWUpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJmdW5jdGlvbl9pbmRleCI6Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydC50cnV0aHkoX2lzVmFsaWRW
YWx1ZShnb3QsICJpMzIiKSwgYEludmFsaWQgdmFsdWUgb24gJHtvcH06IGdvdCAiJHtnb3R9Iiwg
ZXhwZWN0ZWQgaTMyYCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIEZJWE1FIGNoZWNrIGZ1bmN0aW9uIGluZGljZXMuIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM0MjEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2FzZSAibG9jYWxfaW5kZXgiOiB0aHJvdyBuZXcgRXJyb3IoYFVuaW1wbGVtZW50ZWQ6
ICIke2V4cGVjdC5uYW1lfSIgb24gIiR7b3B9ImApOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNhc2UgImdsb2JhbF9pbmRleCI6IHRocm93IG5ldyBFcnJvcihgVW5p
bXBsZW1lbnRlZDogIiR7ZXhwZWN0Lm5hbWV9IiBvbiAiJHtvcH0iYCk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAidHlwZV9pbmRleCI6IHRocm93IG5ldyBF
cnJvcihgVW5pbXBsZW1lbnRlZDogIiR7ZXhwZWN0Lm5hbWV9IiBvbiAiJHtvcH0iYCk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAidmFsdWUiOgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQudHJ1dGh5KF9pc1Zh
bGlkVmFsdWUoZ290LCByZXRbMF0pLCBgSW52YWxpZCB2YWx1ZSBvbiAke29wfTogZ290ICIke2dv
dH0iLCBleHBlY3RlZCAke3JldFswXX1gKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2FzZSAiZmxhZ3MiOiB0aHJvdyBuZXcgRXJyb3IoYFVuaW1wbGVtZW50ZWQ6ICIke2V4
cGVjdC5uYW1lfSIgb24gIiR7b3B9ImApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNhc2UgIm9mZnNldCI6IHRocm93IG5ldyBFcnJvcihgVW5pbXBsZW1lbnRlZDog
IiR7ZXhwZWN0Lm5hbWV9IiBvbiAiJHtvcH0iYCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gQ29udHJvbDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjYXNlICJkZWZhdWx0X3RhcmdldCI6IHRocm93IG5ldyBFcnJvcihgVW5pbXBs
ZW1lbnRlZDogIiR7ZXhwZWN0Lm5hbWV9IiBvbiAiJHtvcH0iYCk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAicmVsYXRpdmVfZGVwdGgiOiB0aHJvdyBuZXcg
RXJyb3IoYFVuaW1wbGVtZW50ZWQ6ICIke2V4cGVjdC5uYW1lfSIgb24gIiR7b3B9ImApOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInNpZyI6IHRocm93IG5l
dyBFcnJvcihgVW5pbXBsZW1lbnRlZDogIiR7ZXhwZWN0Lm5hbWV9IiBvbiAiJHtvcH0iYCk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAidGFyZ2V0X2NvdW50
IjogdGhyb3cgbmV3IEVycm9yKGBVbmltcGxlbWVudGVkOiAiJHtleHBlY3QubmFtZX0iIG9uICIk
e29wfSJgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJ0
YXJnZXRfdGFibGUiOiB0aHJvdyBuZXcgRXJyb3IoYFVuaW1wbGVtZW50ZWQ6ICIke2V4cGVjdC5u
YW1lfSIgb24gIiR7b3B9ImApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcihgSW1wbGVtZW50YXRpb24gcHJvYmxlbTogdW5o
YW5kbGVkIGltbWVkaWF0ZSAiJHtleHBlY3QubmFtZX0iIG9uICIke29wfSJgKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gOiAoKSA9
PiB7fTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV4dEJ1aWxkZXIg
PSBuYW1lID09PSAiRW5kIiA/IGNvZGVCdWlsZGVyIDogZnVuY3Rpb25CdWlsZGVyOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbkJ1aWxkZXJbbmFtZV0gPSAoLi4uYXJn
cykgPT4gewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW1tcyA9
IGFyZ3M7IC8vIEZJWE1FOiBhbGxvdyBwYXNzaW5nIGluIHN0YWNrIHZhbHVlcywgYXMtaWYgY29k
ZSB3ZXJlIGEgc3RhY2sgbWFjaGluZS4gSnVzdCBjaGVjayBmb3IgYSBidWlsZGVyIHRvIHRoaXMg
ZnVuY3Rpb24sIGFuZCBkcm9wLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTYzNDIyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja0ltbXMo
b3AsIGltbXMpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tTdGFj
a0FyZ3Mob3ApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tTdGFj
a1JldHVybihvcCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBz
dGFja0FyZ3MgPSBbXTsgLy8gRklYTUUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2MjcwNgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuYy5j
b2RlLnB1c2goeyBuYW1lOiBvcCwgdmFsdWU6IHZhbHVlLCBhcmd1bWVudHM6IHN0YWNrQXJncywg
aW1tZWRpYXRlczogaW1tcyB9KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBuZXh0QnVpbGRlcjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZ1bmN0aW9uQnVpbGRlcjsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KKwog
ICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICBjb2RlQnVpbGRlci5G
dW5jdGlvbiA9IF9jcmVhdGVGdW5jdGlvbihzLCBidWlsZGVyLCBjb2RlQnVpbGRlcik7CiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBjb2RlQnVpbGRlcjsKICAgICAgICAgICAgICAgICB9Owog
ICAgICAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAg
ICAgICAgIHRoaXNbc2VjdGlvbl0gPSAoKSA9PiB7IHRocm93IG5ldyBFcnJvcihgVW5pbXBsZW1l
bnRlZDogc2VjdGlvbiB0eXBlICIke3NlY3Rpb259ImApOyB9OwogICAgICAgICAgICAgICAgIGJy
ZWFrOwpAQCAtNDIwLDcgKzQ5NSw3IEBAIGV4cG9ydCBkZWZhdWx0IGNsYXNzIEJ1aWxkZXIgewog
ICAgIH0KICAgICBfZ2V0U2VjdGlvbihuYW1lT3JOdW1iZXIpIHsKICAgICAgICAgc3dpdGNoICh0
eXBlb2YobmFtZU9yTnVtYmVyKSkgewotICAgICAgICBkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3Io
YEltcGxlbWVudGF0aW9uIHByb2JsZW06IGNhbid0IGdldCBzZWN0aW9uICIke25hbWVPck51bWJl
cn0iYCk7CisgICAgICAgIGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcihgSW1wbGVtZW50YXRpb24g
cHJvYmxlbTogY2FuIG5vdCBnZXQgc2VjdGlvbiAiJHtuYW1lT3JOdW1iZXJ9ImApOwogICAgICAg
ICBjYXNlICJzdHJpbmciOgogICAgICAgICAgICAgZm9yIChjb25zdCBzIG9mIHRoaXMuX3NlY3Rp
b25zKQogICAgICAgICAgICAgICAgIGlmIChzLm5hbWUgPT09IG5hbWVPck51bWJlcikKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvd2FzbS9CdWlsZGVyX1dlYkFzc2VtYmx5QmluYXJ5LmpzIGIvSlNUZXN0
cy93YXNtL0J1aWxkZXJfV2ViQXNzZW1ibHlCaW5hcnkuanMKaW5kZXggZjJiMGE1MjE4NzM5MTYw
MzBjNzM4NjM2YWNkYWNhM2U2NzJlYzIxZC4uMTU0MDMyOTNhMmE5NGFlMDgwMGM4YzM5MmJjNTJm
NWNmNTFmMmU0YSAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNtL0J1aWxkZXJfV2ViQXNzZW1ibHlC
aW5hcnkuanMKKysrIGIvSlNUZXN0cy93YXNtL0J1aWxkZXJfV2ViQXNzZW1ibHlCaW5hcnkuanMK
QEAgLTIzLDYgKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAoraW1wb3J0ICogYXMgYXNz
ZXJ0IGZyb20gJ2Fzc2VydC5qcyc7CiBpbXBvcnQgTG93TGV2ZWxCaW5hcnkgZnJvbSAnTG93TGV2
ZWxCaW5hcnkuanMnOwogaW1wb3J0ICogYXMgV0FTTSBmcm9tICdXQVNNLmpzJzsKIApAQCAtMzAs
MTEgKzMxLDExIEBAIGNvbnN0IHB1dCA9IChiaW4sIHR5cGUsIHZhbHVlKSA9PiBiaW5bdHlwZV0o
dmFsdWUpOwogCiBjb25zdCBlbWl0dGVycyA9IHsKICAgICBUeXBlOiAoc2VjdGlvbiwgYmluKSA9
PiB7Ci0gICAgICAgIHB1dChiaW4sICJ2YXJ1aW50Iiwgc2VjdGlvbi5kYXRhLmxlbmd0aCk7Cisg
ICAgICAgIHB1dChiaW4sICJ2YXJ1aW50MzIiLCBzZWN0aW9uLmRhdGEubGVuZ3RoKTsKICAgICAg
ICAgZm9yIChjb25zdCBlbnRyeSBvZiBzZWN0aW9uLmRhdGEpIHsKICAgICAgICAgICAgIGNvbnN0
IGZ1bmNUeXBlQ29uc3RydWN0b3IgPSAtMHgyMDsgLy8gRklYTUUgTW92ZSB0aGlzIHRvIHdhc20u
anNvbi4KICAgICAgICAgICAgIHB1dChiaW4sICJ2YXJpbnQ3IiwgZnVuY1R5cGVDb25zdHJ1Y3Rv
cik7Ci0gICAgICAgICAgICBwdXQoYmluLCAidmFydWludCIsIGVudHJ5LnBhcmFtcy5sZW5ndGgp
OworICAgICAgICAgICAgcHV0KGJpbiwgInZhcnVpbnQzMiIsIGVudHJ5LnBhcmFtcy5sZW5ndGgp
OwogICAgICAgICAgICAgZm9yIChjb25zdCBwYXJhbSBvZiBlbnRyeS5wYXJhbXMpCiAgICAgICAg
ICAgICAgICAgcHV0KGJpbiwgInVpbnQ4IiwgV0FTTS52YWx1ZVR5cGVWYWx1ZVtwYXJhbV0pOwog
ICAgICAgICAgICAgaWYgKGVudHJ5LnJldCA9PT0gInZvaWQiKQpAQCAtNDYsNDIgKzQ3LDgxIEBA
IGNvbnN0IGVtaXR0ZXJzID0gewogICAgICAgICB9CiAgICAgfSwKICAgICBJbXBvcnQ6IChzZWN0
aW9uLCBiaW4pID0+IHsKLSAgICAgICAgcHV0KGJpbiwgInZhcnVpbnQiLCBzZWN0aW9uLmRhdGEu
bGVuZ3RoKTsKKyAgICAgICAgcHV0KGJpbiwgInZhcnVpbnQzMiIsIHNlY3Rpb24uZGF0YS5sZW5n
dGgpOwogICAgICAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIHNlY3Rpb24uZGF0YSkgewogICAgICAg
ICAgICAgcHV0KGJpbiwgInN0cmluZyIsIGVudHJ5Lm1vZHVsZSk7CiAgICAgICAgICAgICBwdXQo
YmluLCAic3RyaW5nIiwgZW50cnkuZmllbGQpOwogICAgICAgICAgICAgcHV0KGJpbiwgInVpbnQ4
IiwgV0FTTS5leHRlcm5hbEtpbmRWYWx1ZVtlbnRyeS5raW5kXSk7CiAgICAgICAgICAgICBzd2l0
Y2ggKGVudHJ5LmtpbmQpIHsKICAgICAgICAgICAgIGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcihg
SW1wbGVtZW50YXRpb24gcHJvYmxlbTogdW5leHBlY3RlZCBraW5kICR7ZW50cnkua2luZH1gKTsK
LSAgICAgICAgICAgIGNhc2UgIkZ1bmN0aW9uIjogcHV0KGJpbiwgInZhcnVpbnQiLCBlbnRyeS50
eXBlKTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlICJGdW5jdGlvbiI6IHB1dChiaW4sICJ2YXJ1
aW50MzIiLCBlbnRyeS50eXBlKTsgYnJlYWs7CiAgICAgICAgICAgICBjYXNlICJUYWJsZSI6IHRo
cm93IG5ldyBFcnJvcihgTm90IHlldCBpbXBsZW1lbnRlZGApOwogICAgICAgICAgICAgY2FzZSAi
TWVtb3J5IjogdGhyb3cgbmV3IEVycm9yKGBOb3QgeWV0IGltcGxlbWVudGVkYCk7CiAgICAgICAg
ICAgICBjYXNlICJHbG9iYWwiOiB0aHJvdyBuZXcgRXJyb3IoYE5vdCB5ZXQgaW1wbGVtZW50ZWRg
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0sCi0gICAgRnVuY3Rpb246IChzZWN0
aW9uLCBiaW4pID0+IHsgdGhyb3cgbmV3IEVycm9yKGBOb3QgeWV0IGltcGxlbWVudGVkYCk7IH0s
CisKKyAgICBGdW5jdGlvbjogKHNlY3Rpb24sIGJpbikgPT4geworICAgICAgICBwdXQoYmluLCAi
dmFydWludDMyIiwgc2VjdGlvbi5kYXRhLmxlbmd0aCk7CisgICAgICAgIGZvciAoY29uc3Qgc2ln
bmF0dXJlIG9mIHNlY3Rpb24uZGF0YSkKKyAgICAgICAgICAgIHB1dChiaW4sICJ2YXJ1aW50MzIi
LCBzaWduYXR1cmUpOworICAgIH0sCisKICAgICBUYWJsZTogKHNlY3Rpb24sIGJpbikgPT4geyB0
aHJvdyBuZXcgRXJyb3IoYE5vdCB5ZXQgaW1wbGVtZW50ZWRgKTsgfSwKLSAgICBNZW1vcnk6IChz
ZWN0aW9uLCBiaW4pID0+IHsgdGhyb3cgbmV3IEVycm9yKGBOb3QgeWV0IGltcGxlbWVudGVkYCk7
IH0sCisKKyAgICBNZW1vcnk6IChzZWN0aW9uLCBiaW4pID0+IHsKKyAgICAgICAgLy8gRmxhZ3Ms
IGN1cnJlbnRseSBjYW4gb25seSBiZSBbMCwxXQorICAgICAgICBwdXQoYmluLCAidmFydWludDEi
LCBzZWN0aW9uLmRhdGEubGVuZ3RoKTsKKyAgICAgICAgZm9yIChjb25zdCBtZW1vcnkgb2Ygc2Vj
dGlvbi5kYXRhKSB7CisgICAgICAgICAgICBwdXQoYmluLCAidmFydWludDMyIiwgbWVtb3J5Lm1h
eCA/IDEgOiAwKTsKKyAgICAgICAgICAgIHB1dChiaW4sICJ2YXJ1aW50MzIiLCBtZW1vcnkuaW5p
dGlhbCk7CisgICAgICAgICAgICBpZiAobWVtb3J5Lm1heCkKKyAgICAgICAgICAgICAgICBwdXQo
YmluLCAidmFydWludDMyIiwgbWVtb3J5Lm1heCk7CisgICAgICAgIH0KKyAgICB9LAorCiAgICAg
R2xvYmFsOiAoc2VjdGlvbiwgYmluKSA9PiB7IHRocm93IG5ldyBFcnJvcihgTm90IHlldCBpbXBs
ZW1lbnRlZGApOyB9LAogICAgIEV4cG9ydDogKHNlY3Rpb24sIGJpbikgPT4geyB0aHJvdyBuZXcg
RXJyb3IoYE5vdCB5ZXQgaW1wbGVtZW50ZWRgKTsgfSwKICAgICBTdGFydDogKHNlY3Rpb24sIGJp
bikgPT4geyB0aHJvdyBuZXcgRXJyb3IoYE5vdCB5ZXQgaW1wbGVtZW50ZWRgKTsgfSwKICAgICBF
bGVtZW50OiAoc2VjdGlvbiwgYmluKSA9PiB7IHRocm93IG5ldyBFcnJvcihgTm90IHlldCBpbXBs
ZW1lbnRlZGApOyB9LAorCiAgICAgQ29kZTogKHNlY3Rpb24sIGJpbikgPT4gewotICAgICAgICBw
dXQoYmluLCAidmFydWludCIsIHNlY3Rpb24uZGF0YS5sZW5ndGgpOworICAgICAgICBwdXQoYmlu
LCAidmFydWludDMyIiwgc2VjdGlvbi5kYXRhLmxlbmd0aCk7CiAgICAgICAgIGZvciAoY29uc3Qg
ZnVuYyBvZiBzZWN0aW9uLmRhdGEpIHsKLSAgICAgICAgICAgIGxldCBmdW5jQmluID0gYmluLm5l
d1BhdGNoYWJsZSgidmFydWludCIpOwotICAgICAgICAgICAgY29uc3QgbG9jYWxDb3VudCA9IGZ1
bmMubG9jYWxzLmxlbmd0aDsKLSAgICAgICAgICAgIHB1dChmdW5jQmluLCAidmFydWludCIsIGxv
Y2FsQ291bnQpOwotICAgICAgICAgICAgaWYgKGxvY2FsQ291bnQgIT09IDApIHRocm93IG5ldyBF
cnJvcihgVW5pbXBsZW1lbnRlZDogbG9jYWxzYCk7IC8vIEZJWE1FIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI3MDYKKyAgICAgICAgICAgIGxldCBmdW5jQmluID0g
YmluLm5ld1BhdGNoYWJsZSgidmFydWludDMyIik7CisgICAgICAgICAgICBjb25zdCBsb2NhbENv
dW50ID0gZnVuYy5sb2NhbHMubGVuZ3RoIC0gZnVuYy5wYXJhbWV0ZXJDb3VudDsKKyAgICAgICAg
ICAgIHB1dChmdW5jQmluLCAidmFydWludDMyIiwgbG9jYWxDb3VudCk7CisgICAgICAgICAgICBm
b3IgKGxldCBpID0gZnVuYy5wYXJhbWV0ZXJDb3VudDsgaSA8IGZ1bmMubG9jYWxzLmxlbmd0aDsg
KytpKSB7CisgICAgICAgICAgICAgICAgcHV0KGZ1bmNCaW4sICJ2YXJ1aW50MzIiLCAxKTsKKyAg
ICAgICAgICAgICAgICBwdXQoZnVuY0JpbiwgInVpbnQ4IiwgV0FTTS52YWx1ZVR5cGVWYWx1ZVtm
dW5jLmxvY2Fsc1tpXV0pOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBmb3IgKGNvbnN0
IG9wIG9mIGZ1bmMuY29kZSkgewogICAgICAgICAgICAgICAgIHB1dChmdW5jQmluLCAidWludDgi
LCBvcC52YWx1ZSk7Ci0gICAgICAgICAgICAgICAgaWYgKG9wLmFyZ3VtZW50cy5sZW5ndGggIT09
IDApIHRocm93IG5ldyBFcnJvcihgVW5pbXBsZW1lbnRlZDogYXJndW1lbnRzYCk7IC8vIEZJWE1F
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI3MDYKLSAgICAgICAg
ICAgICAgICBpZiAob3AuaW1tZWRpYXRlcy5sZW5ndGggIT09IDApIHRocm93IG5ldyBFcnJvcihg
VW5pbXBsZW1lbnRlZDogaW1tZWRpYXRlc2ApOyAvLyBGSVhNRSBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyNzA2CisgICAgICAgICAgICAgICAgaWYgKG9wLmFyZ3Vt
ZW50cy5sZW5ndGggIT09IDApCisgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihg
VW5pbXBsZW1lbnRlZDogYXJndW1lbnRzYCk7IC8vIEZJWE1FIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI3MDYKKworICAgICAgICAgICAgICAgIHN3aXRjaCAob3Au
bmFtZSkgeworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGZv
ciAobGV0IGkgPSAwOyBpIDwgb3AuaW1tZWRpYXRlcy5sZW5ndGg7ICsraSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgdHlwZSA9IFdBU00uZGVzY3JpcHRpb24ub3Bjb2RlW29wLm5h
bWVdLmltbWVkaWF0ZVtpXS50eXBlCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWZ1bmNC
aW5bdHlwZV0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJv
cihgVW5rbm93biB0eXBlOiAke3R5cGV9IGluIG9wOiAke29wLm5hbWV9YCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBwdXQoZnVuY0JpbiwgdHlwZSwgb3AuaW1tZWRpYXRlc1tpXSk7CisgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgY2FzZSAiYnJfdGFibGUiOgorICAgICAgICAgICAgICAgICAgICBwdXQoZnVuY0Jpbiwg
InZhcnVpbnQzMiIsIG9wLmltbWVkaWF0ZXMubGVuZ3RoIC0gMSk7CisgICAgICAgICAgICAgICAg
ICAgIGZvciAobGV0IGltbSBvZiBvcC5pbW1lZGlhdGVzKQorICAgICAgICAgICAgICAgICAgICAg
ICAgcHV0KGZ1bmNCaW4sICJ2YXJ1aW50MzIiLCBpbW0pOworICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBmdW5j
QmluLmFwcGx5KCk7CiAgICAgICAgIH0KICAgICB9LAorCiAgICAgRGF0YTogKHNlY3Rpb24sIGJp
bikgPT4geyB0aHJvdyBuZXcgRXJyb3IoYE5vdCB5ZXQgaW1wbGVtZW50ZWRgKTsgfSwKIH07CiAK
QEAgLTkxLDcgKzEzMSw3IEBAIGV4cG9ydCBjb25zdCBCaW5hcnkgPSAocHJlYW1ibGUsIHNlY3Rp
b25zKSA9PiB7CiAgICAgICAgIHB1dCh3YXNtQmluLCBwLnR5cGUsIHByZWFtYmxlW3AubmFtZV0p
OwogICAgIGZvciAoY29uc3Qgc2VjdGlvbiBvZiBzZWN0aW9ucykgewogICAgICAgICBwdXQod2Fz
bUJpbiwgV0FTTS5zZWN0aW9uRW5jb2RpbmdUeXBlLCBzZWN0aW9uLmlkKTsKLSAgICAgICAgbGV0
IHNlY3Rpb25CaW4gPSB3YXNtQmluLm5ld1BhdGNoYWJsZSgidmFydWludCIpOworICAgICAgICBs
ZXQgc2VjdGlvbkJpbiA9IHdhc21CaW4ubmV3UGF0Y2hhYmxlKCJ2YXJ1aW50MzIiKTsKICAgICAg
ICAgY29uc3QgZW1pdHRlciA9IGVtaXR0ZXJzW3NlY3Rpb24ubmFtZV07CiAgICAgICAgIGlmIChl
bWl0dGVyKQogICAgICAgICAgICAgZW1pdHRlcihzZWN0aW9uLCBzZWN0aW9uQmluKTsKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvd2FzbS9Mb3dMZXZlbEJpbmFyeS5qcyBiL0pTVGVzdHMvd2FzbS9Mb3dM
ZXZlbEJpbmFyeS5qcwppbmRleCA3MjAwOTc2MDhjODY2NzUxYTQ1ODRmZDNhNTM0ZWZjNTJjY2I3
ZmE0Li5lNDNiMzQ2YmQyMDc5MjkwMmZmMWQ1NmFhNGJiZDc4NDkwYTA0MTUyIDEwMDY0NAotLS0g
YS9KU1Rlc3RzL3dhc20vTG93TGV2ZWxCaW5hcnkuanMKKysrIGIvSlNUZXN0cy93YXNtL0xvd0xl
dmVsQmluYXJ5LmpzCkBAIC0yMywxNiArMjMsMTggQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAor
aW1wb3J0ICogYXMgV0FTTSBmcm9tICdXQVNNLmpzJzsKKwogY29uc3QgX2luaXRpYWxBbGxvY2F0
aW9uU2l6ZSA9IDEwMjQ7CiBjb25zdCBfZ3Jvd0FsbG9jYXRpb25TaXplID0gYWxsb2NhdGVkID0+
IGFsbG9jYXRlZCAqIDI7CiAKLWV4cG9ydCBjb25zdCB2YXJ1aW50TWluID0gMDsKK2V4cG9ydCBj
b25zdCB2YXJ1aW50MzJNaW4gPSAwOwogZXhwb3J0IGNvbnN0IHZhcmludDdNaW4gPSAtMGIxMDAw
MDAwOwogZXhwb3J0IGNvbnN0IHZhcmludDdNYXggPSAwYjExMTExMTsKIGV4cG9ydCBjb25zdCB2
YXJ1aW50N01heCA9IDBiMTExMTExMTsKLWV4cG9ydCBjb25zdCB2YXJ1aW50TWF4ID0gKCgoKDEg
PDwgMzEpID4+PiAwKSAtIDEpICogMikgKyAxOwotZXhwb3J0IGNvbnN0IHZhcmludE1pbiA9IC0o
KDEgPDwgMzEpID4+PiAwKTsKLWV4cG9ydCBjb25zdCB2YXJpbnRNYXggPSAoKDEgPDwgMzEpIC0g
MSkgPj4+IDA7CitleHBvcnQgY29uc3QgdmFydWludDMyTWF4ID0gKCgoKDEgPDwgMzEpID4+PiAw
KSAtIDEpICogMikgKyAxOworZXhwb3J0IGNvbnN0IHZhcmludDMyTWluID0gLSgoMSA8PCAzMSkg
Pj4+IDApOworZXhwb3J0IGNvbnN0IHZhcmludDMyTWF4ID0gKCgxIDw8IDMxKSAtIDEpID4+PiAw
OwogZXhwb3J0IGNvbnN0IHZhckJpdHNNYXggPSA1OwogCiBjb25zdCBfZ2V0dGVyUmFuZ2VDaGVj
ayA9IChsbGIsIGF0LCBzaXplKSA9PiB7CkBAIC03NSw2ICs3Nyw4IEBAIGV4cG9ydCBkZWZhdWx0
IGNsYXNzIExvd0xldmVsQmluYXJ5IHsKIAogICAgIC8vIFV0aWxpdGllcy4KICAgICBnZXQoKSB7
IHJldHVybiB0aGlzLl9idWY7IH0KKyAgICB0cmltKCkgeyB0aGlzLl9idWYgPSB0aGlzLl9idWYu
c2xpY2UoMCwgdGhpcy5fdXNlZCk7IH0KKwogICAgIGhleGR1bXAoKSB7IHJldHVybiBfaGV4ZHVt
cCh0aGlzLl9idWYsIHRoaXMuX3VzZWQpOyB9CiAgICAgX21heWJlR3JvdyhieXRlcykgewogICAg
ICAgICBjb25zdCBhbGxvY2F0ZWQgPSB0aGlzLl9idWYubGVuZ3RoOwpAQCAtMTA5LDE4ICsxMTMs
MTggQEAgZXhwb3J0IGRlZmF1bHQgY2xhc3MgTG93TGV2ZWxCaW5hcnkgewogICAgICAgICB0aGlz
Ll9wdXNoOCh2ID4+PiAxNik7CiAgICAgICAgIHRoaXMuX3B1c2g4KHYgPj4+IDI0KTsKICAgICB9
Ci0gICAgdmFydWludCh2KSB7Ci0gICAgICAgIGlmICh2IDwgdmFydWludE1pbiB8fCB2YXJ1aW50
TWF4IDwgdikKLSAgICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKGBJbnZhbGlkIHZhcnVp
bnQgJHt2fSByYW5nZSBpcyBbJHt2YXJ1aW50TWlufSwgJHt2YXJ1aW50TWF4fV1gKTsKKyAgICB2
YXJ1aW50MzIodikgeworICAgICAgICBpZiAodiA8IHZhcnVpbnQzMk1pbiB8fCB2YXJ1aW50MzJN
YXggPCB2KQorICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoYEludmFsaWQgdmFydWlu
dDMyICR7dn0gcmFuZ2UgaXMgWyR7dmFydWludDMyTWlufSwgJHt2YXJ1aW50MzJNYXh9XWApOwog
ICAgICAgICB3aGlsZSAodiA+PSAweDgwKSB7CiAgICAgICAgICAgICB0aGlzLnVpbnQ4KDB4ODAg
fCAodiAmIDB4N0YpKTsKICAgICAgICAgICAgIHYgPj4+PSA3OwogICAgICAgICB9CiAgICAgICAg
IHRoaXMudWludDgodik7CiAgICAgfQotICAgIHZhcmludCh2KSB7Ci0gICAgICAgIGlmICh2IDwg
dmFyaW50TWluIHx8IHZhcmludE1heCA8IHYpCi0gICAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VF
cnJvcihgSW52YWxpZCB2YXJpbnQgJHt2fSByYW5nZSBpcyBbJHt2YXJpbnRNaW59LCAke3Zhcmlu
dE1heH1dYCk7CisgICAgdmFyaW50MzIodikgeworICAgICAgICBpZiAodiA8IHZhcmludDMyTWlu
IHx8IHZhcmludDMyTWF4IDwgdikKKyAgICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKGBJ
bnZhbGlkIHZhcmludDMyICR7dn0gcmFuZ2UgaXMgWyR7dmFyaW50MzJNaW59LCAke3ZhcmludDMy
TWF4fV1gKTsKICAgICAgICAgZG8gewogICAgICAgICAgICAgY29uc3QgYiA9IHYgJiAweDdGOwog
ICAgICAgICAgICAgdiA+Pj0gNzsKQEAgLTEzNCwyMCArMTM4LDIzIEBAIGV4cG9ydCBkZWZhdWx0
IGNsYXNzIExvd0xldmVsQmluYXJ5IHsKICAgICB2YXJ1aW50MSh2KSB7CiAgICAgICAgIGlmICh2
ICE9PSAwICYmIHYgIT09IDEpCiAgICAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihgSW52
YWxpZCB2YXJ1aW50MSAke3Z9IHJhbmdlIGlzIFswLCAxXWApOwotICAgICAgICB0aGlzLnZhcnVp
bnQodik7CisgICAgICAgIHRoaXMudmFydWludDMyKHYpOwogICAgIH0KICAgICB2YXJpbnQ3KHYp
IHsKICAgICAgICAgaWYgKHYgPCB2YXJpbnQ3TWluIHx8IHZhcmludDdNYXggPCB2KQogICAgICAg
ICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoYEludmFsaWQgdmFyaW50NyAke3Z9IHJhbmdlIGlz
IFske3ZhcmludDdNaW59LCAke3ZhcmludDdNYXh9XWApOwotICAgICAgICB0aGlzLnZhcmludCh2
KTsKKyAgICAgICAgdGhpcy52YXJpbnQzMih2KTsKICAgICB9CiAgICAgdmFydWludDcodikgewot
ICAgICAgICBpZiAodiA8IHZhcnVpbnRNaW4gfHwgdmFydWludDdNYXggPCB2KQotICAgICAgICAg
ICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoYEludmFsaWQgdmFydWludDcgJHt2fSByYW5nZSBpcyBb
JHt2YXJ1aW50TWlufSwgJHt2YXJ1aW50N01heH1dYCk7Ci0gICAgICAgIHRoaXMudmFydWludCh2
KTsKKyAgICAgICAgaWYgKHYgPCB2YXJ1aW50MzJNaW4gfHwgdmFydWludDdNYXggPCB2KQorICAg
ICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoYEludmFsaWQgdmFydWludDcgJHt2fSByYW5n
ZSBpcyBbJHt2YXJ1aW50MzJNaW59LCAke3ZhcnVpbnQ3TWF4fV1gKTsKKyAgICAgICAgdGhpcy52
YXJ1aW50MzIodik7CisgICAgfQorICAgIGlubGluZV9zaWduYXR1cmVfdHlwZSh2KSB7CisgICAg
ICAgIHRoaXMudmFyaW50NyhXQVNNLnZhbHVlVHlwZVZhbHVlW3ZdKTsKICAgICB9CiAgICAgc3Ry
aW5nKHN0cikgewotICAgICAgICBsZXQgcGF0Y2ggPSB0aGlzLm5ld1BhdGNoYWJsZSgidmFydWlu
dCIpOworICAgICAgICBsZXQgcGF0Y2ggPSB0aGlzLm5ld1BhdGNoYWJsZSgidmFydWludDMyIik7
CiAgICAgICAgIGZvciAoY29uc3QgY2hhciBvZiBzdHIpCiAgICAgICAgICAgICBwYXRjaC51aW50
MTYoY2hhci5jaGFyQ29kZUF0KCkpOwogICAgICAgICBwYXRjaC5hcHBseSgpOwpAQCAtMTY3LDcg
KzE3NCw3IEBAIGV4cG9ydCBkZWZhdWx0IGNsYXNzIExvd0xldmVsQmluYXJ5IHsKICAgICAgICAg
X2dldHRlclJhbmdlQ2hlY2sodGhpcywgYXQsIDQpOwogICAgICAgICByZXR1cm4gKHRoaXMuX2J1
ZlthdF0gfCAodGhpcy5fYnVmW2F0ICsgMV0gPDwgOCkgfCAodGhpcy5fYnVmW2F0ICsgMl0gPDwg
MTYpIHwgKHRoaXMuX2J1ZlthdCArIDNdIDw8IDI0KSkgPj4+IDA7CiAgICAgfQotICAgIGdldFZh
cnVpbnQoYXQpIHsKKyAgICBnZXRWYXJ1aW50MzIoYXQpIHsKICAgICAgICAgbGV0IHYgPSAwOwog
ICAgICAgICBsZXQgc2hpZnQgPSAwOwogICAgICAgICBsZXQgYnl0ZSA9IDA7CkBAIC0xNzgsMTAg
KzE4NSwxMCBAQCBleHBvcnQgZGVmYXVsdCBjbGFzcyBMb3dMZXZlbEJpbmFyeSB7CiAgICAgICAg
ICAgICBzaGlmdCArPSA3OwogICAgICAgICB9IHdoaWxlICgoYnl0ZSAmIDB4ODApICE9PSAwKTsK
ICAgICAgICAgaWYgKHNoaWZ0IC0gNyA+IDMyKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcihgU2hpZnRp
bmcgdG9vIG11Y2ggYXQgJHthdH1gKTsKLSAgICAgICAgaWYgKChzaGlmdCA9PSAzNSkgJiYgKChi
eXRlICYgMHhGMCkgIT0gMCkpIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCBub24tc2lnbmlm
aWNhbnQgdmFydWludCBiaXRzIGluIGxhc3QgYnl0ZSAweCR7Ynl0ZS50b1N0cmluZygxNil9YCk7
CisgICAgICAgIGlmICgoc2hpZnQgPT0gMzUpICYmICgoYnl0ZSAmIDB4RjApICE9IDApKSB0aHJv
dyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgbm9uLXNpZ25pZmljYW50IHZhcnVpbnQzMiBiaXRzIGlu
IGxhc3QgYnl0ZSAweCR7Ynl0ZS50b1N0cmluZygxNil9YCk7CiAgICAgICAgIHJldHVybiB7IHZh
bHVlOiB2LCBuZXh0OiBhdCB9OwogICAgIH0KLSAgICBnZXRWYXJpbnQoYXQpIHsKKyAgICBnZXRW
YXJpbnQzMihhdCkgewogICAgICAgICBsZXQgdiA9IDA7CiAgICAgICAgIGxldCBzaGlmdCA9IDA7
CiAgICAgICAgIGxldCBieXRlID0gMDsKQEAgLTE5MSw3ICsxOTgsNyBAQCBleHBvcnQgZGVmYXVs
dCBjbGFzcyBMb3dMZXZlbEJpbmFyeSB7CiAgICAgICAgICAgICBzaGlmdCArPSA3OwogICAgICAg
ICB9IHdoaWxlICgoYnl0ZSAmIDB4ODApICE9PSAwKTsKICAgICAgICAgaWYgKHNoaWZ0IC0gNyA+
IDMyKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcihgU2hpZnRpbmcgdG9vIG11Y2ggYXQgJHthdH1gKTsK
LSAgICAgICAgaWYgKChzaGlmdCA9PSAzNSkgJiYgKCgoYnl0ZSA8PCAyNikgPj4gMzApICE9ICgo
Ynl0ZSA8PCAyNSkgPj4gMzEpKSkgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIG5vbi1zaWdu
aWZpY2FudCB2YXJpbnQgYml0cyBpbiBsYXN0IGJ5dGUgMHgke2J5dGUudG9TdHJpbmcoMTYpfWAp
OworICAgICAgICBpZiAoKHNoaWZ0ID09IDM1KSAmJiAoKChieXRlIDw8IDI2KSA+PiAzMCkgIT0g
KChieXRlIDw8IDI1KSA+PiAzMSkpKSB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgbm9uLXNp
Z25pZmljYW50IHZhcmludDMyIGJpdHMgaW4gbGFzdCBieXRlIDB4JHtieXRlLnRvU3RyaW5nKDE2
KX1gKTsKICAgICAgICAgaWYgKChieXRlICYgMHg0MCkgPT09IDB4NDApIHsKICAgICAgICAgICAg
IGNvbnN0IHNleHQgPSBzaGlmdCA8IDMyID8gMzIgLSBzaGlmdCA6IDA7CiAgICAgICAgICAgICB2
ID0gKHYgPDwgc2V4dCkgPj4gc2V4dDsKQEAgLTE5OSwxMiArMjA2LDEyIEBAIGV4cG9ydCBkZWZh
dWx0IGNsYXNzIExvd0xldmVsQmluYXJ5IHsKICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IHYsIG5l
eHQ6IGF0IH07CiAgICAgfQogICAgIGdldFZhcnVpbnQ3KGF0KSB7Ci0gICAgICAgIGNvbnN0IHJl
cyA9IHRoaXMuZ2V0VmFydWludChhdCk7CisgICAgICAgIGNvbnN0IHJlcyA9IHRoaXMuZ2V0VmFy
dWludDMyKGF0KTsKICAgICAgICAgaWYgKHJlcy52YWx1ZSA+IHZhcnVpbnQ3TWF4KSB0aHJvdyBu
ZXcgRXJyb3IoYEV4cGVjdGVkIGEgdmFydWludDcsIGdvdCB2YWx1ZSAke3Jlcy52YWx1ZX1gKTsK
ICAgICAgICAgcmV0dXJuIHJlczsKICAgICB9CiAgICAgZ2V0U3RyaW5nKGF0KSB7Ci0gICAgICAg
IGNvbnN0IHNpemUgPSB0aGlzLmdldFZhcnVpbnQoYXQpOworICAgICAgICBjb25zdCBzaXplID0g
dGhpcy5nZXRWYXJ1aW50MzIoYXQpOwogICAgICAgICBsZXQgc3RyID0gIiI7CiAgICAgICAgIGZv
ciAobGV0IGkgPSBzaXplLm5leHQ7IGkgIT09IHNpemUubmV4dCArIHNpemUudmFsdWU7IGkgKz0g
MikKICAgICAgICAgICAgIHN0ciArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKHRoaXMuZ2V0VWludDE2
KGkpKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9qcy1hcGkvZnVuY3Rpb24tdGVzdHMvYWRk
LTEyLmpzIGIvSlNUZXN0cy93YXNtL2pzLWFwaS9mdW5jdGlvbi10ZXN0cy9hZGQtMTIuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYTczY2Y0YmZmOTY5Y2I4YjA1NzkzNGQ2NWRmMDQ4NzNiYzU0MjY2YQotLS0gL2Rl
di9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkvZnVuY3Rpb24tdGVzdHMvYWRkLTEyLmpz
CkBAIC0wLDAgKzEsNjEgQEAKK2ltcG9ydCBCdWlsZGVyIGZyb20gJy4uLy4uL0J1aWxkZXIuanMn
CisKK2NvbnN0IGIgPSBuZXcgQnVpbGRlcigpOworYi5zZXRDaGVja2VkKGZhbHNlKTsKK2IuVHlw
ZSgpLkVuZCgpCisgICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAuQ29kZSgpCisgICAgLkZ1bmN0
aW9uKHsgcGFyYW1zOiBbImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwg
ImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIl0sIHJldDogImkzMiIgfSwg
W10pCisgICAgLkdldExvY2FsKDApCisgICAgLkdldExvY2FsKDEpCisgICAgLkkzMkFkZCgpCisg
ICAgLkdldExvY2FsKDIpCisgICAgLkkzMkFkZCgpCisgICAgLkdldExvY2FsKDMpCisgICAgLkkz
MkFkZCgpCisgICAgLkdldExvY2FsKDQpCisgICAgLkkzMkFkZCgpCisgICAgLkdldExvY2FsKDUp
CisgICAgLkkzMkFkZCgpCisgICAgLkdldExvY2FsKDYpCisgICAgLkkzMkFkZCgpCisgICAgLkdl
dExvY2FsKDcpCisgICAgLkkzMkFkZCgpCisgICAgLkdldExvY2FsKDgpCisgICAgLkkzMkFkZCgp
CisgICAgLkdldExvY2FsKDkpCisgICAgLkkzMkFkZCgpCisgICAgLkdldExvY2FsKDEwKQorICAg
IC5JMzJBZGQoKQorICAgIC5HZXRMb2NhbCgxMSkKKyAgICAuSTMyQWRkKCkKKyAgICAuUmV0dXJu
KCkKKyAgICAuRW5kKCkKKworICAgIC5GdW5jdGlvbih7IHBhcmFtczogWyJpMzIiXSwgcmV0OiAi
aTMyIiB9KQorICAgIC5HZXRMb2NhbCgwKQorICAgIC5HZXRMb2NhbCgwKQorICAgIC5HZXRMb2Nh
bCgwKQorICAgIC5HZXRMb2NhbCgwKQorICAgIC5HZXRMb2NhbCgwKQorICAgIC5HZXRMb2NhbCgw
KQorICAgIC5HZXRMb2NhbCgwKQorICAgIC5HZXRMb2NhbCgwKQorICAgIC5HZXRMb2NhbCgwKQor
ICAgIC5HZXRMb2NhbCgwKQorICAgIC5HZXRMb2NhbCgwKQorICAgIC5HZXRMb2NhbCgwKQorICAg
IC5DYWxsKDApCisgICAgLkVuZCgpCisKK2NvbnN0IGJpbiA9IGIuV2ViQXNzZW1ibHkoKQorYmlu
LnRyaW0oKTsKK3Rlc3RXYXNtTW9kdWxlRnVuY3Rpb25zKGJpbi5nZXQoKSwgMiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIFtbeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDc4IH0sIFt7IHR5cGU6ICJp
MzIiLCB2YWx1ZTogMSB9LCB7IHR5cGU6ICJpMzIiLCB2YWx1ZTogMiB9LCB7IHR5cGU6ICJpMzIi
LCB2YWx1ZTogMyB9LCB7IHR5cGU6ICJpMzIiLCB2YWx1ZTogNCB9LCB7IHR5cGU6ICJpMzIiLCB2
YWx1ZTogNSB9LCB7IHR5cGU6ICJpMzIiLCB2YWx1ZTogNiB9LCB7IHR5cGU6ICJpMzIiLCB2YWx1
ZTogNyB9LCB7IHR5cGU6ICJpMzIiLCB2YWx1ZTogOCB9LCB7IHR5cGU6ICJpMzIiLCB2YWx1ZTog
OSB9LCB7IHR5cGU6ICJpMzIiLCB2YWx1ZTogMTAgfSwgeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDEx
IH0sIHsgdHlwZTogImkzMiIsIHZhbHVlOiAxMiB9XV0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAxNjYgfSwgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAx
IH0sIHsgdHlwZTogImkzMiIsIHZhbHVlOiAyIH0sIHsgdHlwZTogImkzMiIsIHZhbHVlOiAzIH0s
IHsgdHlwZTogImkzMiIsIHZhbHVlOiA0IH0sIHsgdHlwZTogImkzMiIsIHZhbHVlOiA1IH0sIHsg
dHlwZTogImkzMiIsIHZhbHVlOiA2IH0sIHsgdHlwZTogImkzMiIsIHZhbHVlOiA3IH0sIHsgdHlw
ZTogImkzMiIsIHZhbHVlOiA4IH0sIHsgdHlwZTogImkzMiIsIHZhbHVlOiA5IH0sIHsgdHlwZTog
ImkzMiIsIHZhbHVlOiAxMCB9LCB7IHR5cGU6ICJpMzIiLCB2YWx1ZTogMTEgfSwgeyB0eXBlOiAi
aTMyIiwgdmFsdWU6IDEwMCB9XV0KKyAgICAgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAg
ICAgICAgICAgICAgICAgICBbW3sgdHlwZTogImkzMiIsIHZhbHVlOiAxMiB9LCBbeyB0eXBlOiAi
aTMyIiwgdmFsdWU6IDEgfV1dLAorICAgICAgICAgICAgICAgICAgICAgICAgIFt7IHR5cGU6ICJp
MzIiLCB2YWx1ZTogMTIwMCB9LCBbeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDEwMCB9XV0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAwIH0sIFt7IHR5cGU6
ICJpMzIiLCB2YWx1ZTogMCB9XV0sCisgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAg
ICAgICAgICAgICAgICAgICk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vanMtYXBpL2Z1bmN0
aW9uLXRlc3RzL2JyLWlmLWxvb3AtbGVzcy10aGFuLmpzIGIvSlNUZXN0cy93YXNtL2pzLWFwaS9m
dW5jdGlvbi10ZXN0cy9ici1pZi1sb29wLWxlc3MtdGhhbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNzhiYzEw
NjUzYzhjYzU1ZjgxZDYxNWFlZDE3ODcyZTdhODNjYTdmCi0tLSAvZGV2L251bGwKKysrIGIvSlNU
ZXN0cy93YXNtL2pzLWFwaS9mdW5jdGlvbi10ZXN0cy9ici1pZi1sb29wLWxlc3MtdGhhbi5qcwpA
QCAtMCwwICsxLDUxIEBACitpbXBvcnQgQnVpbGRlciBmcm9tICcuLi8uLi9CdWlsZGVyLmpzJwor
Citjb25zdCBiID0gbmV3IEJ1aWxkZXIoKTsKK2Iuc2V0Q2hlY2tlZChmYWxzZSk7CitiLlR5cGUo
KS5FbmQoKQorICAgIC5GdW5jdGlvbigpLkVuZCgpCisgICAgLkNvZGUoKQorICAgIC5GdW5jdGlv
bih7IHBhcmFtczogWyJpMzIiLCAiaTMyIl0sIHJldDogImkzMiIgfSwgW10pCisgICAgLkxvb3Ao
InZvaWQiKQorICAgIC5CbG9jaygidm9pZCIsIGIgPT4KKyAgICAgICAgICAgYi5CbG9jaygidm9p
ZCIsIGIgPT4KKyAgICAgICAgICAgICAgICAgICBiLkdldExvY2FsKDApCisgICAgICAgICAgICAg
ICAgICAgLkdldExvY2FsKDEpCisgICAgICAgICAgICAgICAgICAgLkkzMkVxKCkKKyAgICAgICAg
ICAgICAgICAgICAuQnJJZigwKQorICAgICAgICAgICAgICAgICAgIC5CcigxKQorICAgICAgICAg
ICAgICAgICAgKQorICAgICAgICAgICAuSTMyQ29uc3QoMCkKKyAgICAgICAgICAgLlJldHVybigp
CisgICAgICAgICAgKQorICAgIC5CbG9jaygidm9pZCIsIGIgPT4KKyAgICAgICAgICAgYi5CbG9j
aygidm9pZCIsIGIgPT4KKyAgICAgICAgICAgICAgICAgICBiLkdldExvY2FsKDApCisgICAgICAg
ICAgICAgICAgICAgLkkzMkNvbnN0KDApCisgICAgICAgICAgICAgICAgICAgLkkzMkVxKCkKKyAg
ICAgICAgICAgICAgICAgICAuQnJJZigwKQorICAgICAgICAgICAgICAgICAgIC5CcigxKQorICAg
ICAgICAgICAgICAgICAgKQorICAgICAgICAgICAuSTMyQ29uc3QoMSkKKyAgICAgICAgICAgLlJl
dHVybigpCisgICAgICAgICAgKQorICAgIC5HZXRMb2NhbCgwKQorICAgIC5JMzJDb25zdCgxKQor
ICAgIC5JMzJTdWIoKQorICAgIC5TZXRMb2NhbCgwKQorICAgIC5CcigwKQorICAgIC5FbmQoKQor
ICAgIC5VbnJlYWNoYWJsZSgpCisgICAgLkVuZCgpCisKK2NvbnN0IGJpbiA9IGIuV2ViQXNzZW1i
bHkoKQorYmluLnRyaW0oKTsKK3Rlc3RXYXNtTW9kdWxlRnVuY3Rpb25zKGJpbi5nZXQoKSwgMSwg
W1t7dHlwZTogImkzMiIsIHZhbHVlOiAxIH0sIFt7IHR5cGU6ICJpMzIiLCB2YWx1ZTogMCB9LCB7
IHR5cGU6ICJpMzIiLCB2YWx1ZTogMSB9XV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBbe3R5cGU6ICJpMzIiLCB2YWx1ZTogMCB9LCBbeyB0eXBlOiAiaTMyIiwgdmFs
dWU6IDEgfSwgeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDAgfV1dLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgW3t0eXBlOiAiaTMyIiwgdmFsdWU6IDAgfSwgW3sgdHlwZTog
ImkzMiIsIHZhbHVlOiAyIH0sIHsgdHlwZTogImkzMiIsIHZhbHVlOiAxIH1dXSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt7dHlwZTogImkzMiIsIHZhbHVlOiAxIH0s
IFt7IHR5cGU6ICJpMzIiLCB2YWx1ZTogMSB9LCB7IHR5cGU6ICJpMzIiLCB2YWx1ZTogMiB9XV0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbe3R5cGU6ICJpMzIiLCB2
YWx1ZTogMCB9LCBbeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDIgfSwgeyB0eXBlOiAiaTMyIiwgdmFs
dWU6IDIgfV1dLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3t0eXBl
OiAiaTMyIiwgdmFsdWU6IDAgfSwgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAxIH0sIHsgdHlwZTog
ImkzMiIsIHZhbHVlOiAxIH1dXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFt7dHlwZTogImkzMiIsIHZhbHVlOiAxIH0sIFt7IHR5cGU6ICJpMzIiLCB2YWx1ZTogMiB9
LCB7IHR5cGU6ICJpMzIiLCB2YWx1ZTogNiB9XV0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBbe3R5cGU6ICJpMzIiLCB2YWx1ZTogMCB9LCBbeyB0eXBlOiAiaTMyIiwg
dmFsdWU6IDEwMCB9LCB7IHR5cGU6ICJpMzIiLCB2YWx1ZTogNiB9XV0KKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL2pzLWFwaS9mdW5jdGlvbi10ZXN0cy9iclRhYmxlQXNJ
Zi5qcyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkvZnVuY3Rpb24tdGVzdHMvYnJUYWJsZUFzSWYuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYWU5Mzc4NGFkMjFmZDM3MGZkNzllYmRhOGJjNDkwY2JkODQxNjk2YQotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkvZnVuY3Rpb24tdGVzdHMvYnJUYWJs
ZUFzSWYuanMKQEAgLTAsMCArMSwyNiBAQAoraW1wb3J0IEJ1aWxkZXIgZnJvbSAnLi4vLi4vQnVp
bGRlci5qcycKKworY29uc3QgYiA9IG5ldyBCdWlsZGVyKCk7CitiLnNldENoZWNrZWQoZmFsc2Up
OworYi5UeXBlKCkuRW5kKCkKKyAgICAuRnVuY3Rpb24oKS5FbmQoKQorICAgIC5Db2RlKCkKKyAg
ICAuRnVuY3Rpb24oeyBwYXJhbXM6IFsiaTMyIl0sIHJldDogImkzMiIgfSwgWyJpMzIiXSkKKyAg
ICAuQmxvY2soInZvaWQiLCAoYikgPT4KKyAgICAgICAgICAgYi5CbG9jaygidm9pZCIsIChiKSA9
PgorICAgICAgICAgICAgICAgICAgIGIuR2V0TG9jYWwoMCkKKyAgICAgICAgICAgICAgICAgICAu
QnJUYWJsZSgxLCAwKQorICAgICAgICAgICAgICAgICAgIC5JMzJDb25zdCgyMSkKKyAgICAgICAg
ICAgICAgICAgICAuUmV0dXJuKCkKKyAgICAgICAgICAgICAgICAgICkuSTMyQ29uc3QoMjApCisg
ICAgICAgICAgIC5SZXR1cm4oKQorICAgICAgICAgICkuSTMyQ29uc3QoMjIpCisgICAgLkVuZCgp
CisKK2NvbnN0IGJpbiA9IGIuV2ViQXNzZW1ibHkoKQorYmluLnRyaW0oKTsKK3Rlc3RXYXNtTW9k
dWxlRnVuY3Rpb25zKGJpbi5nZXQoKSwgMSwgW1t7dHlwZTogImkzMiIsIHZhbHVlOiAyMiB9LCBb
eyB0eXBlOiAiaTMyIiwgdmFsdWU6IDAgfV1dLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgW3t0eXBlOiAiaTMyIiwgdmFsdWU6IDIwIH0sIFt7IHR5cGU6ICJpMzIiLCB2
YWx1ZTogMSB9XV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbe3R5
cGU6ICJpMzIiLCB2YWx1ZTogMjAgfSwgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAxMSB9XV0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbe3R5cGU6ICJpMzIiLCB2YWx1
ZTogMjAgfSwgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAtMTAwIH1dXQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBdKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vanMtYXBpL2Z1bmN0aW9uLXRlc3RzL2JyVGFibGVNYW55
VmFsdWVzLmpzIGIvSlNUZXN0cy93YXNtL2pzLWFwaS9mdW5jdGlvbi10ZXN0cy9iclRhYmxlTWFu
eVZhbHVlcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNzkyNGZjYmMxNzJiNjMyNGEyMjAwOWU3MjIxOTY2ZTJj
ODAzOGUxCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy93YXNtL2pzLWFwaS9mdW5jdGlvbi10
ZXN0cy9iclRhYmxlTWFueVZhbHVlcy5qcwpAQCAtMCwwICsxLDQzIEBACitpbXBvcnQgQnVpbGRl
ciBmcm9tICcuLi8uLi9CdWlsZGVyLmpzJworCitjb25zdCBiID0gbmV3IEJ1aWxkZXIoKTsKK2Iu
c2V0Q2hlY2tlZChmYWxzZSk7CitiLlR5cGUoKS5FbmQoKQorICAgIC5GdW5jdGlvbigpLkVuZCgp
CisgICAgLkNvZGUoKQorICAgIC5GdW5jdGlvbih7IHBhcmFtczogWyJpMzIiXSwgcmV0OiAiaTMy
IiB9LCBbImkzMiJdKQorICAgIC5CbG9jaygiaTMyIiwgKGIpID0+CisgICAgICAgICAgIGIuQmxv
Y2soImkzMiIsIChiKSA9PgorICAgICAgICAgICAgICAgICAgIGIuQmxvY2soImkzMiIsIChiKSA9
PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgYi5CbG9jaygiaTMyIiwgKGIpID0+CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIuQmxvY2soImkzMiIsIChiKSA9PgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIuSTMyQ29uc3QoMjAwKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5HZXRMb2NhbCgwKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5CclRhYmxlKDMsIDIs
IDEsIDAsIDQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLkkz
MkNvbnN0KDEwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuSTMyQWRkKCkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLlJldHVybigpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKS5JMzJDb25zdCgxMSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC5JMzJBZGQoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLlJldHVybigp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICkuSTMyQ29uc3QoMTIpCisgICAgICAgICAgICAg
ICAgICAgLkkzMkFkZCgpCisgICAgICAgICAgICAgICAgICAgLlJldHVybigpCisgICAgICAgICAg
ICAgICAgICApLkkzMkNvbnN0KDEzKQorICAgICAgICAgICAuSTMyQWRkKCkKKyAgICAgICAgICAg
LlJldHVybigpCisgICAgICAgICAgKS5JMzJDb25zdCgxNCkKKyAgICAuSTMyQWRkKCkKKyAgICAu
UmV0dXJuKCkKKyAgICAuRW5kKCkKK2NvbnN0IGJpbiA9IGIuV2ViQXNzZW1ibHkoKQorYmluLnRy
aW0oKTsKK3Rlc3RXYXNtTW9kdWxlRnVuY3Rpb25zKGJpbi5nZXQoKSwgMSwgW1t7dHlwZTogImkz
MiIsIHZhbHVlOiAyMTMgfSwgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAwIH1dXSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt7dHlwZTogImkzMiIsIHZhbHVlOiAyMTIg
fSwgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAxIH1dXSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFt7dHlwZTogImkzMiIsIHZhbHVlOiAyMTEgfSwgW3sgdHlwZTogImkz
MiIsIHZhbHVlOiAyIH1dXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFt7dHlwZTogImkzMiIsIHZhbHVlOiAyMTAgfSwgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAzIH1d
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt7dHlwZTogImkzMiIs
IHZhbHVlOiAyMTQgfSwgW3sgdHlwZTogImkzMiIsIHZhbHVlOiA0IH1dXSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt7dHlwZTogImkzMiIsIHZhbHVlOiAyMTQgfSwg
W3sgdHlwZTogImkzMiIsIHZhbHVlOiA1IH1dXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFt7dHlwZTogImkzMiIsIHZhbHVlOiAyMTQgfSwgW3sgdHlwZTogImkzMiIs
IHZhbHVlOiAtMSB9XV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBb
e3R5cGU6ICJpMzIiLCB2YWx1ZTogMjE0IH0sIFt7IHR5cGU6ICJpMzIiLCB2YWx1ZTogLTEwMDAg
fV1dCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pOwpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9qcy1hcGkvZnVuY3Rp
b24tdGVzdHMvYnJUYWJsZVdpdGhMb29wLmpzIGIvSlNUZXN0cy93YXNtL2pzLWFwaS9mdW5jdGlv
bi10ZXN0cy9iclRhYmxlV2l0aExvb3AuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTJlYjgxNjI0YmM5Zjg2NGFm
ZWQ0YzllMWExZjdmZGI0ZjVhOGZjMgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9q
cy1hcGkvZnVuY3Rpb24tdGVzdHMvYnJUYWJsZVdpdGhMb29wLmpzCkBAIC0wLDAgKzEsMzAgQEAK
K2ltcG9ydCBCdWlsZGVyIGZyb20gJy4uLy4uL0J1aWxkZXIuanMnCisKK2NvbnN0IGIgPSBuZXcg
QnVpbGRlcigpOworYi5zZXRDaGVja2VkKGZhbHNlKTsKK2IuVHlwZSgpLkVuZCgpCisgICAgLkZ1
bmN0aW9uKCkuRW5kKCkKKyAgICAuQ29kZSgpCisgICAgLkZ1bmN0aW9uKHsgcGFyYW1zOiBbImkz
MiJdLCByZXQ6ICJpMzIiIH0sIFsiaTMyIl0pCisgICAgLkxvb3AoInZvaWQiKQorICAgIC5CbG9j
aygidm9pZCIsIChiKSA9PgorCisgICAgICAgICAgIGIuR2V0TG9jYWwoMCkKKyAgICAgICAgICAg
LkdldExvY2FsKDEpCisgICAgICAgICAgIC5JMzJDb25zdCgxKQorICAgICAgICAgICAuSTMyQWRk
KCkKKyAgICAgICAgICAgLlNldExvY2FsKDEpCisgICAgICAgICAgIC5HZXRMb2NhbCgwKQorICAg
ICAgICAgICAuSTMyQ29uc3QoMSkKKyAgICAgICAgICAgLkkzMlN1YigpCisgICAgICAgICAgIC5T
ZXRMb2NhbCgwKQorICAgICAgICAgICAuQnJUYWJsZSgwLCAxKSkKKworICAgIC5FbmQoKQorICAg
IC5HZXRMb2NhbCgxKQorICAgIC5FbmQoKQorY29uc3QgYmluID0gYi5XZWJBc3NlbWJseSgpCiti
aW4udHJpbSgpOwordGVzdFdhc21Nb2R1bGVGdW5jdGlvbnMoYmluLmdldCgpLCAxLCBbW3t0eXBl
OiAiaTMyIiwgdmFsdWU6IDEgfSwgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAwIH1dXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt7dHlwZTogImkzMiIsIHZhbHVlOiAy
IH0sIFt7IHR5cGU6ICJpMzIiLCB2YWx1ZTogMSB9XV0KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy93YXNtL2pzLWFwaS9mdW5jdGlvbi10ZXN0cy9kdW1iLWVxLWlmLXRoZW4tZWxz
ZS5qcyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkvZnVuY3Rpb24tdGVzdHMvZHVtYi1lcS1pZi10aGVu
LWVsc2UuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMTYxNDUxYjkwZDEwOTVkMDgwMmQyNTRkZGY0NWMzODY1Y2Q2
ZjZlMwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkvZnVuY3Rpb24tdGVz
dHMvZHVtYi1lcS1pZi10aGVuLWVsc2UuanMKQEAgLTAsMCArMSwzNCBAQAoraW1wb3J0IEJ1aWxk
ZXIgZnJvbSAnLi4vLi4vQnVpbGRlci5qcycKKworY29uc3QgYiA9IG5ldyBCdWlsZGVyKCk7Citi
LnNldENoZWNrZWQoZmFsc2UpOworYi5UeXBlKCkuRW5kKCkKKyAgICAuRnVuY3Rpb24oKS5FbmQo
KQorICAgIC5NZW1vcnkoKS5Jbml0aWFsTWF4UGFnZXMoMSwgMSkuRW5kKCkKKyAgICAuQ29kZSgp
CisgICAgLkZ1bmN0aW9uKHsgcGFyYW1zOiBbImkzMiIsICJpMzIiXSwgcmV0OiAiaTMyIiB9LCBb
XSkKKyAgICAuR2V0TG9jYWwoMCkKKyAgICAuR2V0TG9jYWwoMSkKKyAgICAuSTMyRXEoKQorICAg
IC5JZigidm9pZCIsIGIgPT4KKyAgICAgICAgYi5CcigwKQorICAgICAgICAuRWxzZSgpCisgICAg
ICAgICAgICAuSTMyQ29uc3QoMSkKKyAgICAgICAgLlJldHVybigpCisgICAgICAgKQorICAgICAg
ICAuSTMyQ29uc3QoMCkKKyAgICAuUmV0dXJuKCkKKyAgICAuRW5kKCkKKworY29uc3QgYmluID0g
Yi5XZWJBc3NlbWJseSgpCitiaW4udHJpbSgpOwordGVzdFdhc21Nb2R1bGVGdW5jdGlvbnMoYmlu
LmdldCgpLCAxLCBbW3t0eXBlOiAiaTMyIiwgdmFsdWU6IDEgfSwgW3sgdHlwZTogImkzMiIsIHZh
bHVlOiAwIH0sIHsgdHlwZTogImkzMiIsIHZhbHVlOiAxIH1dXSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFt7dHlwZTogImkzMiIsIHZhbHVlOiAxIH0sIFt7IHR5cGU6
ICJpMzIiLCB2YWx1ZTogMSB9LCB7IHR5cGU6ICJpMzIiLCB2YWx1ZTogMCB9XV0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbe3R5cGU6ICJpMzIiLCB2YWx1ZTogMSB9
LCBbeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDIgfSwgeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDEgfV1d
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3t0eXBlOiAiaTMyIiwg
dmFsdWU6IDEgfSwgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAxIH0sIHsgdHlwZTogImkzMiIsIHZh
bHVlOiAyIH1dXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt7dHlw
ZTogImkzMiIsIHZhbHVlOiAwIH0sIFt7IHR5cGU6ICJpMzIiLCB2YWx1ZTogMiB9LCB7IHR5cGU6
ICJpMzIiLCB2YWx1ZTogMiB9XV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBbe3R5cGU6ICJpMzIiLCB2YWx1ZTogMCB9LCBbeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDEg
fSwgeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDEgfV1dLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgW3t0eXBlOiAiaTMyIiwgdmFsdWU6IDAgfSwgW3sgdHlwZTogImkzMiIs
IHZhbHVlOiAwIH0sIHsgdHlwZTogImkzMiIsIHZhbHVlOiAwIH1dXSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFt7dHlwZTogImkzMiIsIHZhbHVlOiAxIH0sIFt7IHR5
cGU6ICJpMzIiLCB2YWx1ZTogMiB9LCB7IHR5cGU6ICJpMzIiLCB2YWx1ZTogNiB9XV0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbe3R5cGU6ICJpMzIiLCB2YWx1ZTog
MSB9LCBbeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDEwMCB9LCB7IHR5cGU6ICJpMzIiLCB2YWx1ZTog
NiB9XV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSk7ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL2pzLWFwaS9mdW5j
dGlvbi10ZXN0cy9kdW1iLWxlc3MtdGhhbi1mYWxsdGhyb3VnaC5qcyBiL0pTVGVzdHMvd2FzbS9q
cy1hcGkvZnVuY3Rpb24tdGVzdHMvZHVtYi1sZXNzLXRoYW4tZmFsbHRocm91Z2guanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGEwN2JmY2E4NjkwNmYzMDEzMDM5Nzc5OWZmZGI0OTQyNzgwOGZiMQotLS0gL2Rldi9u
dWxsCisrKyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkvZnVuY3Rpb24tdGVzdHMvZHVtYi1sZXNzLXRo
YW4tZmFsbHRocm91Z2guanMKQEAgLTAsMCArMSwzOSBAQAoraW1wb3J0IEJ1aWxkZXIgZnJvbSAn
Li4vLi4vQnVpbGRlci5qcycKKworY29uc3QgYiA9IG5ldyBCdWlsZGVyKCk7CitiLnNldENoZWNr
ZWQoZmFsc2UpOworYi5UeXBlKCkuRW5kKCkKKyAgICAuRnVuY3Rpb24oKS5FbmQoKQorICAgIC5D
b2RlKCkKKyAgICAuRnVuY3Rpb24oeyBwYXJhbXM6IFsiaTMyIiwgImkzMiJdLCByZXQ6ICJpMzIi
IH0sIFtdKQorICAgIC5Mb29wKCJpMzIiLCBiID0+CisgICAgICAgICAgYi5HZXRMb2NhbCgwKQor
ICAgICAgICAgIC5HZXRMb2NhbCgxKQorICAgICAgICAgIC5JMzJFcSgpCisgICAgICAgICAgLklm
KCJpMzIiLCBiID0+CisgICAgICAgICAgICAgIGIuSTMyQ29uc3QoMCkKKyAgICAgICAgICAgICAg
LlJldHVybigpCisgICAgICAgICAgICAgIC5FbHNlKCkKKyAgICAgICAgICAgICAgICAgIC5HZXRM
b2NhbCgwKQorICAgICAgICAgICAgICAuR2V0TG9jYWwoMCkKKyAgICAgICAgICAgICAgLkkzMkNv
bnN0KDEpCisgICAgICAgICAgICAgIC5JMzJTdWIoKQorICAgICAgICAgICAgICAuU2V0TG9jYWwo
MCkKKyAgICAgICAgICAgICAgLkkzMkNvbnN0KDApCisgICAgICAgICAgICAgIC5JMzJOZSgpCisg
ICAgICAgICAgICAgIC5CcklmKDEpCisgICAgICAgICAgICAgIC5JMzJDb25zdCgxKQorICAgICAg
ICAgICkKKyAgICApLkVuZCgpCisKK2NvbnN0IGJpbiA9IGIuV2ViQXNzZW1ibHkoKQorYmluLnRy
aW0oKTsKK3Rlc3RXYXNtTW9kdWxlRnVuY3Rpb25zKGJpbi5nZXQoKSwgMSwgW1t7dHlwZTogImkz
MiIsIHZhbHVlOiAxIH0sIFt7IHR5cGU6ICJpMzIiLCB2YWx1ZTogMCB9LCB7IHR5cGU6ICJpMzIi
LCB2YWx1ZTogMSB9XV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBb
e3R5cGU6ICJpMzIiLCB2YWx1ZTogMCB9LCBbeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDEgfSwgeyB0
eXBlOiAiaTMyIiwgdmFsdWU6IDAgfV1dLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgW3t0eXBlOiAiaTMyIiwgdmFsdWU6IDAgfSwgW3sgdHlwZTogImkzMiIsIHZhbHVl
OiAyIH0sIHsgdHlwZTogImkzMiIsIHZhbHVlOiAxIH1dXSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFt7dHlwZTogImkzMiIsIHZhbHVlOiAxIH0sIFt7IHR5cGU6ICJp
MzIiLCB2YWx1ZTogMSB9LCB7IHR5cGU6ICJpMzIiLCB2YWx1ZTogMiB9XV0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbe3R5cGU6ICJpMzIiLCB2YWx1ZTogMCB9LCBb
eyB0eXBlOiAiaTMyIiwgdmFsdWU6IDIgfSwgeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDIgfV1dLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3t0eXBlOiAiaTMyIiwgdmFs
dWU6IDAgfSwgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAxIH0sIHsgdHlwZTogImkzMiIsIHZhbHVl
OiAxIH1dXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt7dHlwZTog
ImkzMiIsIHZhbHVlOiAxIH0sIFt7IHR5cGU6ICJpMzIiLCB2YWx1ZTogMiB9LCB7IHR5cGU6ICJp
MzIiLCB2YWx1ZTogNiB9XV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBbe3R5cGU6ICJpMzIiLCB2YWx1ZTogMCB9LCBbeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDEwMCB9
LCB7IHR5cGU6ICJpMzIiLCB2YWx1ZTogNiB9XV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy93YXNtL2pzLWFwaS9mdW5jdGlvbi10ZXN0cy9kdW1iLWxlc3MtdGhhbi1pdGUuanMg
Yi9KU1Rlc3RzL3dhc20vanMtYXBpL2Z1bmN0aW9uLXRlc3RzL2R1bWItbGVzcy10aGFuLWl0ZS5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44Njk2YTFkMzhiNGVjMDM4MWIyMjFlNzdjNmQ0NDRlZWFiYTVjZTBiCi0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy93YXNtL2pzLWFwaS9mdW5jdGlvbi10ZXN0cy9kdW1i
LWxlc3MtdGhhbi1pdGUuanMKQEAgLTAsMCArMSw0NSBAQAoraW1wb3J0IEJ1aWxkZXIgZnJvbSAn
Li4vLi4vQnVpbGRlci5qcycKKworY29uc3QgYiA9IG5ldyBCdWlsZGVyKCk7CitiLnNldENoZWNr
ZWQoZmFsc2UpOworYi5UeXBlKCkuRW5kKCkKKyAgICAuRnVuY3Rpb24oKS5FbmQoKQorICAgIC5D
b2RlKCkKKyAgICAuRnVuY3Rpb24oeyBwYXJhbXM6IFsiaTMyIiwgImkzMiJdLCByZXQ6ICJpMzIi
IH0sIFtdKQorICAgIC5Mb29wKCJ2b2lkIikKKyAgICAuR2V0TG9jYWwoMCkKKyAgICAuR2V0TG9j
YWwoMSkKKyAgICAuSTMyRXEoKQorICAgIC5JZigidm9pZCIsIGIgPT4KKyAgICAgICAgYi5JMzJD
b25zdCgwKQorICAgICAgICAuUmV0dXJuKCkKKyAgICAgICAgLkVsc2UoKQorICAgICAgICAgICAg
LkdldExvY2FsKDApCisgICAgICAgIC5JMzJDb25zdCgwKQorICAgICAgICAuSTMyRXEoKQorICAg
ICAgICAuSWYoInZvaWQiLCBiID0+CisgICAgICAgICAgICBiLkkzMkNvbnN0KDEpCisgICAgICAg
ICAgICAuUmV0dXJuKCkKKyAgICAgICAgICAgKQorICAgICAgICAgICAgKQorICAgICAgICAuR2V0
TG9jYWwoMCkKKyAgICAuSTMyQ29uc3QoMSkKKyAgICAuSTMyU3ViKCkKKyAgICAuU2V0TG9jYWwo
MCkKKyAgICAuQnIoMCkKKyAgICAuRW5kKCkKKyAgICAuVW5yZWFjaGFibGUoKQorICAgIC5FbmQo
KQorCitjb25zdCBiaW4gPSBiLldlYkFzc2VtYmx5KCkKK2Jpbi50cmltKCk7Cit0ZXN0V2FzbU1v
ZHVsZUZ1bmN0aW9ucyhiaW4uZ2V0KCksIDEsIFtbe3R5cGU6ICJpMzIiLCB2YWx1ZTogMSB9LCBb
eyB0eXBlOiAiaTMyIiwgdmFsdWU6IDAgfSwgeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDEgfV1dLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3t0eXBlOiAiaTMyIiwgdmFs
dWU6IDAgfSwgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAxIH0sIHsgdHlwZTogImkzMiIsIHZhbHVl
OiAwIH1dXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt7dHlwZTog
ImkzMiIsIHZhbHVlOiAwIH0sIFt7IHR5cGU6ICJpMzIiLCB2YWx1ZTogMiB9LCB7IHR5cGU6ICJp
MzIiLCB2YWx1ZTogMSB9XV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBbe3R5cGU6ICJpMzIiLCB2YWx1ZTogMSB9LCBbeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDEgfSwg
eyB0eXBlOiAiaTMyIiwgdmFsdWU6IDIgfV1dLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgW3t0eXBlOiAiaTMyIiwgdmFsdWU6IDAgfSwgW3sgdHlwZTogImkzMiIsIHZh
bHVlOiAyIH0sIHsgdHlwZTogImkzMiIsIHZhbHVlOiAyIH1dXSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFt7dHlwZTogImkzMiIsIHZhbHVlOiAwIH0sIFt7IHR5cGU6
ICJpMzIiLCB2YWx1ZTogMSB9LCB7IHR5cGU6ICJpMzIiLCB2YWx1ZTogMSB9XV0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbe3R5cGU6ICJpMzIiLCB2YWx1ZTogMCB9
LCBbeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDAgfSwgeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDAgfV1d
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3t0eXBlOiAiaTMyIiwg
dmFsdWU6IDEgfSwgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAyIH0sIHsgdHlwZTogImkzMiIsIHZh
bHVlOiA2IH1dXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt7dHlw
ZTogImkzMiIsIHZhbHVlOiAwIH0sIFt7IHR5cGU6ICJpMzIiLCB2YWx1ZTogMTAwIH0sIHsgdHlw
ZTogImkzMiIsIHZhbHVlOiA2IH1dXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBdKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L3dhc20vanMtYXBpL2Z1bmN0aW9uLXRlc3RzL2ZhY3RvcmlhbC5qcyBiL0pTVGVzdHMvd2FzbS9q
cy1hcGkvZnVuY3Rpb24tdGVzdHMvZmFjdG9yaWFsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNlMGIzMjVkMjJk
N2EwM2JkYTdlNjM4ZGM0MDBhNmExZTBlODY2MzkKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3Rz
L3dhc20vanMtYXBpL2Z1bmN0aW9uLXRlc3RzL2ZhY3RvcmlhbC5qcwpAQCAtMCwwICsxLDMxIEBA
CitpbXBvcnQgQnVpbGRlciBmcm9tICcuLi8uLi9CdWlsZGVyLmpzJworCitjb25zdCBiID0gbmV3
IEJ1aWxkZXIoKTsKK2Iuc2V0Q2hlY2tlZChmYWxzZSk7CitiLlR5cGUoKS5FbmQoKQorICAgIC5G
dW5jdGlvbigpLkVuZCgpCisgICAgLkNvZGUoKQorICAgIC5GdW5jdGlvbih7IHBhcmFtczogWyJp
MzIiXSwgcmV0OiAiaTMyIiB9LCBbXSkKKyAgICAuR2V0TG9jYWwoMCkKKyAgICAuSTMyQ29uc3Qo
MCkKKyAgICAuSTMyRXEoKQorICAgIC5JZigidm9pZCIsIGIgPT4KKyAgICAgICAgYi5JMzJDb25z
dCgxKQorICAgICAgICAuUmV0dXJuKCkKKyAgICAgICApCisgICAgICAgIC5HZXRMb2NhbCgwKQor
ICAgIC5HZXRMb2NhbCgwKQorICAgIC5JMzJDb25zdCgxKQorICAgIC5JMzJTdWIoKQorICAgIC5D
YWxsKDApCisgICAgLkkzMk11bCgpCisgICAgLlJldHVybigpCisgICAgLkVuZCgpCisKK2NvbnN0
IGJpbiA9IGIuV2ViQXNzZW1ibHkoKQorYmluLnRyaW0oKTsKK3Rlc3RXYXNtTW9kdWxlRnVuY3Rp
b25zKGJpbi5nZXQoKSwgMSwgW1t7dHlwZTogImkzMiIsIHZhbHVlOiAxIH0sIFt7IHR5cGU6ICJp
MzIiLCB2YWx1ZTogMCB9XV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBbe3R5cGU6ICJpMzIiLCB2YWx1ZTogMSB9LCBbeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDEgfV1d
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3t0eXBlOiAiaTMyIiwg
dmFsdWU6IDIgfSwgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAyIH1dXSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFt7dHlwZTogImkzMiIsIHZhbHVlOiAyNCB9LCBbeyB0
eXBlOiAiaTMyIiwgdmFsdWU6IDQgfV1dLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBdKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9KU1Rl
c3RzL3dhc20vanMtYXBpL2Z1bmN0aW9uLXRlc3RzL2Zsb2F0LXN1Yi5qcyBiL0pTVGVzdHMvd2Fz
bS9qcy1hcGkvZnVuY3Rpb24tdGVzdHMvZmxvYXQtc3ViLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgxNTg3ZjJl
NzdiOTE0MDgxNmE4NDY0Nzc4ZGNmYmM3NGI4NzVlOTkKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rl
c3RzL3dhc20vanMtYXBpL2Z1bmN0aW9uLXRlc3RzL2Zsb2F0LXN1Yi5qcwpAQCAtMCwwICsxLDMx
IEBACitpbXBvcnQgQnVpbGRlciBmcm9tICcuLi8uLi9CdWlsZGVyLmpzJworCitjb25zdCBiID0g
bmV3IEJ1aWxkZXIoKTsKK2Iuc2V0Q2hlY2tlZChmYWxzZSk7CitiLlR5cGUoKS5FbmQoKQorICAg
IC5GdW5jdGlvbigpLkVuZCgpCisgICAgLkNvZGUoKQorICAgIC5GdW5jdGlvbih7IHBhcmFtczog
WyJmMzIiLCAiZjMyIl0sIHJldDogImYzMiIgfSwgW10pCisgICAgLkdldExvY2FsKDApCisgICAg
LkdldExvY2FsKDEpCisgICAgLkYzMlN1YigpCisgICAgLlJldHVybigpCisgICAgLkVuZCgpCisK
KyAgICAuRnVuY3Rpb24oeyBwYXJhbXM6IFsiZjMyIiwgImYzMiJdLCByZXQ6ICJmMzIiIH0sIFtd
KQorICAgIC5HZXRMb2NhbCgwKQorICAgIC5HZXRMb2NhbCgxKQorICAgIC5DYWxsKDApCisgICAg
LlJldHVybigpCisgICAgLkVuZCgpCisKK2NvbnN0IGJpbiA9IGIuV2ViQXNzZW1ibHkoKQorYmlu
LnRyaW0oKTsKK3Rlc3RXYXNtTW9kdWxlRnVuY3Rpb25zKGJpbi5nZXQoKSwgMiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIFtbe3R5cGU6ICJmMzIiLCB2YWx1ZTogLTEuNSB9LCBbeyB0eXBlOiAi
ZjMyIiwgdmFsdWU6IDAgfSwgeyB0eXBlOiAiZjMyIiwgdmFsdWU6IDEuNSB9XV0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgW3t0eXBlOiAiZjMyIiwgdmFsdWU6IDg3LjYyMzQgfSwgW3sgdHlw
ZTogImYzMiIsIHZhbHVlOiAxMDAuMTIzNCB9LCB7IHR5cGU6ICJmMzIiLCB2YWx1ZTogMTIuNSB9
XV0KKyAgICAgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICAgICBb
W3t0eXBlOiAiZjMyIiwgdmFsdWU6IC0xLjUgfSwgW3sgdHlwZTogImYzMiIsIHZhbHVlOiAwIH0s
IHsgdHlwZTogImYzMiIsIHZhbHVlOiAxLjUgfV1dLAorICAgICAgICAgICAgICAgICAgICAgICAg
IFt7dHlwZTogImYzMiIsIHZhbHVlOiA4Ny42MjM0IH0sIFt7IHR5cGU6ICJmMzIiLCB2YWx1ZTog
MTAwLjEyMzQgfSwgeyB0eXBlOiAiZjMyIiwgdmFsdWU6IDEyLjUgfV1dCisgICAgICAgICAgICAg
ICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgICAgICk7ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL2pzLWFwaS9mdW5jdGlvbi10ZXN0
cy9pMzItbG9hZC5qcyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkvZnVuY3Rpb24tdGVzdHMvaTMyLWxv
YWQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNzJkOGY2MGQxYmVhZWNmMzM4YzZhYTU5NTIxYmFjYzZkNGQxMWY5
YwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkvZnVuY3Rpb24tdGVzdHMv
aTMyLWxvYWQuanMKQEAgLTAsMCArMSwyMyBAQAoraW1wb3J0IEJ1aWxkZXIgZnJvbSAnLi4vLi4v
QnVpbGRlci5qcycKKworY29uc3QgYiA9IG5ldyBCdWlsZGVyKCk7CitiLnNldENoZWNrZWQoZmFs
c2UpOworYi5UeXBlKCkuRW5kKCkKKyAgICAuRnVuY3Rpb24oKS5FbmQoKQorICAgIC5NZW1vcnko
KS5Jbml0aWFsTWF4UGFnZXMoMSwgMSkuRW5kKCkKKyAgICAuQ29kZSgpCisgICAgLkZ1bmN0aW9u
KHsgcGFyYW1zOiBbImkzMiIsICJpMzIiXSwgcmV0OiAiaTMyIiB9LCBbXSkKKyAgICAuR2V0TG9j
YWwoMSkKKyAgICAuR2V0TG9jYWwoMCkKKyAgICAuSTMyU3RvcmUoMiwgMCkKKyAgICAuR2V0TG9j
YWwoMSkKKyAgICAuSTMyTG9hZCgyLCAwKQorICAgIC5SZXR1cm4oKQorICAgIC5FbmQoKQorCitj
b25zdCBiaW4gPSBiLldlYkFzc2VtYmx5KCkKK2Jpbi50cmltKCk7Cit0ZXN0V2FzbU1vZHVsZUZ1
bmN0aW9ucyhiaW4uZ2V0KCksIDEsIFtbe3R5cGU6ICJpMzIiLCB2YWx1ZTogMCB9LCBbeyB0eXBl
OiAiaTMyIiwgdmFsdWU6IDAgfSwgeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDEwIH1dXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt7dHlwZTogImkzMiIsIHZhbHVlOiAx
MDAgfSwgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAxMDAgfSwgeyB0eXBlOiAiaTMyIiwgdmFsdWU6
IDExMiB9XV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbe3R5cGU6
ICJpMzIiLCB2YWx1ZTogMTAwMDAwMCB9LCBbeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDEwMDAwMDAg
fSwgeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDEwIH1dXQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBdKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3dhc20vanMtYXBpL2Z1bmN0aW9uLXRlc3RzL2kzMi1sb2FkOC1zLmpzIGIvSlNU
ZXN0cy93YXNtL2pzLWFwaS9mdW5jdGlvbi10ZXN0cy9pMzItbG9hZDgtcy5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40YTYzYmM1YWRmNjRiYTY5MWEwMGY0NTZkZTk2ODRkNDgwMzQyNzlmCi0tLSAvZGV2L251bGwK
KysrIGIvSlNUZXN0cy93YXNtL2pzLWFwaS9mdW5jdGlvbi10ZXN0cy9pMzItbG9hZDgtcy5qcwpA
QCAtMCwwICsxLDIzIEBACitpbXBvcnQgQnVpbGRlciBmcm9tICcuLi8uLi9CdWlsZGVyLmpzJwor
Citjb25zdCBiID0gbmV3IEJ1aWxkZXIoKTsKK2Iuc2V0Q2hlY2tlZChmYWxzZSk7CitiLlR5cGUo
KS5FbmQoKQorICAgIC5GdW5jdGlvbigpLkVuZCgpCisgICAgLk1lbW9yeSgpLkluaXRpYWxNYXhQ
YWdlcygxLCAxKS5FbmQoKQorICAgIC5Db2RlKCkKKyAgICAuRnVuY3Rpb24oeyBwYXJhbXM6IFsi
aTMyIiwgImkzMiJdLCByZXQ6ICJpMzIiIH0sIFtdKQorICAgIC5HZXRMb2NhbCgxKQorICAgIC5H
ZXRMb2NhbCgwKQorICAgIC5JMzJTdG9yZSgyLCAwKQorICAgIC5HZXRMb2NhbCgxKQorICAgIC5J
MzJMb2FkOFMoMiwgMCkKKyAgICAuUmV0dXJuKCkKKyAgICAuRW5kKCkKKworY29uc3QgYmluID0g
Yi5XZWJBc3NlbWJseSgpCitiaW4udHJpbSgpOwordGVzdFdhc21Nb2R1bGVGdW5jdGlvbnMoYmlu
LmdldCgpLCAxLCBbW3t0eXBlOiAiaTMyIiwgdmFsdWU6IDAgfSwgW3sgdHlwZTogImkzMiIsIHZh
bHVlOiAwIH0sIHsgdHlwZTogImkzMiIsIHZhbHVlOiAxMCB9XV0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBbe3R5cGU6ICJpMzIiLCB2YWx1ZTogMTAwIH0sIFt7IHR5
cGU6ICJpMzIiLCB2YWx1ZTogMTAwIH0sIHsgdHlwZTogImkzMiIsIHZhbHVlOiAxMTIgfV1dLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3t0eXBlOiAiaTMyIiwgdmFs
dWU6IDB4NDAgfSwgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAxMDAwMDAwIH0sIHsgdHlwZTogImkz
MiIsIHZhbHVlOiAxMCB9XV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNt
L2pzLWFwaS9mdW5jdGlvbi10ZXN0cy9pZi10aGVuLWVsc2UtZmFsbHRocm91Z2guanMgYi9KU1Rl
c3RzL3dhc20vanMtYXBpL2Z1bmN0aW9uLXRlc3RzL2lmLXRoZW4tZWxzZS1mYWxsdGhyb3VnaC5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xY2NjMjIxNTkzZTc1ZjlkNGViNDMzYWM2NWQwZGIzNmVlOGMzOTA4Ci0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy93YXNtL2pzLWFwaS9mdW5jdGlvbi10ZXN0cy9pZi10
aGVuLWVsc2UtZmFsbHRocm91Z2guanMKQEAgLTAsMCArMSwyNSBAQAoraW1wb3J0IEJ1aWxkZXIg
ZnJvbSAnLi4vLi4vQnVpbGRlci5qcycKKworY29uc3QgYiA9IG5ldyBCdWlsZGVyKCk7CitiLnNl
dENoZWNrZWQoZmFsc2UpOworYi5UeXBlKCkuRW5kKCkKKyAgICAuRnVuY3Rpb24oKS5FbmQoKQor
ICAgIC5Db2RlKCkKKyAgICAuRnVuY3Rpb24oeyBwYXJhbXM6IFsiaTMyIl0sIHJldDogImkzMiIg
fSwgW10pCisgICAgLkJsb2NrKCJpMzIiLCAoYikgPT4KKyAgICAgICAgICAgYi5HZXRMb2NhbCgw
KQorICAgICAgICAgICAuSTMyQ29uc3QoMCkKKyAgICAgICAgICAgLkkzMkVxKCkKKyAgICAgICAg
ICAgLklmKCJpMzIiKQorICAgICAgICAgICAgICAgLkkzMkNvbnN0KDEpCisgICAgICAgICAgIC5F
bHNlKCkKKyAgICAgICAgICAgICAgIC5JMzJDb25zdCgyKQorICAgICAgICAgICAuQnIoMSkKKyAg
ICAgICAgICAgLkVuZCgpCisgICAgICAgICAgKS5FbmQoKQorCitjb25zdCBiaW4gPSBiLldlYkFz
c2VtYmx5KCkKK2Jpbi50cmltKCk7Cit0ZXN0V2FzbU1vZHVsZUZ1bmN0aW9ucyhiaW4uZ2V0KCks
IDEsIFtbe3R5cGU6ICJpMzIiLCB2YWx1ZTogMSB9LCBbeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDAg
fV1dLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3t0eXBlOiAiaTMy
IiwgdmFsdWU6IDIgfSwgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAxIH1dXQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBdKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vanMtYXBpL2Z1bmN0aW9uLXRlc3RzL2lmLXRoZW4t
ZmFsbHRocm91Z2guanMgYi9KU1Rlc3RzL3dhc20vanMtYXBpL2Z1bmN0aW9uLXRlc3RzL2lmLXRo
ZW4tZmFsbHRocm91Z2guanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWNjYzIyMTU5M2U3NWY5ZDRlYjQzM2FjNjVk
MGRiMzZlZThjMzkwOAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkvZnVu
Y3Rpb24tdGVzdHMvaWYtdGhlbi1mYWxsdGhyb3VnaC5qcwpAQCAtMCwwICsxLDI1IEBACitpbXBv
cnQgQnVpbGRlciBmcm9tICcuLi8uLi9CdWlsZGVyLmpzJworCitjb25zdCBiID0gbmV3IEJ1aWxk
ZXIoKTsKK2Iuc2V0Q2hlY2tlZChmYWxzZSk7CitiLlR5cGUoKS5FbmQoKQorICAgIC5GdW5jdGlv
bigpLkVuZCgpCisgICAgLkNvZGUoKQorICAgIC5GdW5jdGlvbih7IHBhcmFtczogWyJpMzIiXSwg
cmV0OiAiaTMyIiB9LCBbXSkKKyAgICAuQmxvY2soImkzMiIsIChiKSA9PgorICAgICAgICAgICBi
LkdldExvY2FsKDApCisgICAgICAgICAgIC5JMzJDb25zdCgwKQorICAgICAgICAgICAuSTMyRXEo
KQorICAgICAgICAgICAuSWYoImkzMiIpCisgICAgICAgICAgICAgICAuSTMyQ29uc3QoMSkKKyAg
ICAgICAgICAgLkVsc2UoKQorICAgICAgICAgICAgICAgLkkzMkNvbnN0KDIpCisgICAgICAgICAg
IC5CcigxKQorICAgICAgICAgICAuRW5kKCkKKyAgICAgICAgICApLkVuZCgpCisKK2NvbnN0IGJp
biA9IGIuV2ViQXNzZW1ibHkoKQorYmluLnRyaW0oKTsKK3Rlc3RXYXNtTW9kdWxlRnVuY3Rpb25z
KGJpbi5nZXQoKSwgMSwgW1t7dHlwZTogImkzMiIsIHZhbHVlOiAxIH0sIFt7IHR5cGU6ICJpMzIi
LCB2YWx1ZTogMCB9XV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBb
e3R5cGU6ICJpMzIiLCB2YWx1ZTogMiB9LCBbeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDEgfV1dCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pOwpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9qcy1hcGkvZnVuY3Rpb24tdGVz
dHMvbG9vcC1tdWx0LmpzIGIvSlNUZXN0cy93YXNtL2pzLWFwaS9mdW5jdGlvbi10ZXN0cy9sb29w
LW11bHQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYThiN2I3ZjI0NTYyNjcxYzNkNmE1ZmFlNzkzNmUzNzQ0OTEy
NWI4NQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkvZnVuY3Rpb24tdGVz
dHMvbG9vcC1tdWx0LmpzCkBAIC0wLDAgKzEsMzggQEAKK2ltcG9ydCBCdWlsZGVyIGZyb20gJy4u
Ly4uL0J1aWxkZXIuanMnCisKK2NvbnN0IGIgPSBuZXcgQnVpbGRlcigpOworYi5zZXRDaGVja2Vk
KGZhbHNlKTsKK2IuVHlwZSgpLkVuZCgpCisgICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAuQ29k
ZSgpCisgICAgLkZ1bmN0aW9uKHsgcGFyYW1zOiBbImkzMiJdLCByZXQ6ICJpMzIiIH0sIFsiaTMy
Il0pCisgICAgLkkzMkNvbnN0KDApCisgICAgLlNldExvY2FsKDEpCisgICAgLkxvb3AoInZvaWQi
KQorICAgIC5CbG9jaygidm9pZCIsIGIgPT4KKyAgICAgICAgICAgYi5HZXRMb2NhbCgwKQorICAg
ICAgICAgICAuSTMyQ29uc3QoMCkKKyAgICAgICAgICAgLkkzMkVxKCkKKyAgICAgICAgICAgLkJy
SWYoMCkKKyAgICAgICAgICAgLkdldExvY2FsKDApCisgICAgICAgICAgIC5HZXRMb2NhbCgxKQor
ICAgICAgICAgICAuSTMyQWRkKCkKKyAgICAgICAgICAgLlNldExvY2FsKDEpCisgICAgICAgICAg
IC5HZXRMb2NhbCgwKQorICAgICAgICAgICAuSTMyQ29uc3QoMSkKKyAgICAgICAgICAgLkkzMlN1
YigpCisgICAgICAgICAgIC5TZXRMb2NhbCgwKQorICAgICAgICAgICAuQnIoMSkKKyAgICAgICAg
ICApCisgICAgLkVuZCgpCisgICAgLkdldExvY2FsKDEpCisgICAgLlJldHVybigpCisgICAgLkVu
ZCgpCisKK2NvbnN0IGJpbiA9IGIuV2ViQXNzZW1ibHkoKQorYmluLnRyaW0oKTsKK3Rlc3RXYXNt
TW9kdWxlRnVuY3Rpb25zKGJpbi5nZXQoKSwgMSwgW1t7dHlwZTogImkzMiIsIHZhbHVlOiAwIH0s
IFt7IHR5cGU6ICJpMzIiLCB2YWx1ZTogMCB9XV0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBbe3R5cGU6ICJpMzIiLCB2YWx1ZTogMSB9LCBbeyB0eXBlOiAiaTMyIiwg
dmFsdWU6IDEgfV1dLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3t0
eXBlOiAiaTMyIiwgdmFsdWU6IDMgfSwgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAyIH1dXSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt7dHlwZTogImkzMiIsIHZhbHVl
OiA1MDUwIH0sIFt7IHR5cGU6ICJpMzIiLCB2YWx1ZTogMTAwIH1dXQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBdKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vanMtYXBpL2Z1bmN0aW9uLXRlc3RzL2xvb3Atc3VtLmpz
IGIvSlNUZXN0cy93YXNtL2pzLWFwaS9mdW5jdGlvbi10ZXN0cy9sb29wLXN1bS5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5hOGI3YjdmMjQ1NjI2NzFjM2Q2YTVmYWU3OTM2ZTM3NDQ5MTI1Yjg1Ci0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy93YXNtL2pzLWFwaS9mdW5jdGlvbi10ZXN0cy9sb29wLXN1bS5qcwpA
QCAtMCwwICsxLDM4IEBACitpbXBvcnQgQnVpbGRlciBmcm9tICcuLi8uLi9CdWlsZGVyLmpzJwor
Citjb25zdCBiID0gbmV3IEJ1aWxkZXIoKTsKK2Iuc2V0Q2hlY2tlZChmYWxzZSk7CitiLlR5cGUo
KS5FbmQoKQorICAgIC5GdW5jdGlvbigpLkVuZCgpCisgICAgLkNvZGUoKQorICAgIC5GdW5jdGlv
bih7IHBhcmFtczogWyJpMzIiXSwgcmV0OiAiaTMyIiB9LCBbImkzMiJdKQorICAgIC5JMzJDb25z
dCgwKQorICAgIC5TZXRMb2NhbCgxKQorICAgIC5Mb29wKCJ2b2lkIikKKyAgICAuQmxvY2soInZv
aWQiLCBiID0+CisgICAgICAgICAgIGIuR2V0TG9jYWwoMCkKKyAgICAgICAgICAgLkkzMkNvbnN0
KDApCisgICAgICAgICAgIC5JMzJFcSgpCisgICAgICAgICAgIC5CcklmKDApCisgICAgICAgICAg
IC5HZXRMb2NhbCgwKQorICAgICAgICAgICAuR2V0TG9jYWwoMSkKKyAgICAgICAgICAgLkkzMkFk
ZCgpCisgICAgICAgICAgIC5TZXRMb2NhbCgxKQorICAgICAgICAgICAuR2V0TG9jYWwoMCkKKyAg
ICAgICAgICAgLkkzMkNvbnN0KDEpCisgICAgICAgICAgIC5JMzJTdWIoKQorICAgICAgICAgICAu
U2V0TG9jYWwoMCkKKyAgICAgICAgICAgLkJyKDEpCisgICAgICAgICAgKQorICAgIC5FbmQoKQor
ICAgIC5HZXRMb2NhbCgxKQorICAgIC5SZXR1cm4oKQorICAgIC5FbmQoKQorCitjb25zdCBiaW4g
PSBiLldlYkFzc2VtYmx5KCkKK2Jpbi50cmltKCk7Cit0ZXN0V2FzbU1vZHVsZUZ1bmN0aW9ucyhi
aW4uZ2V0KCksIDEsIFtbe3R5cGU6ICJpMzIiLCB2YWx1ZTogMCB9LCBbeyB0eXBlOiAiaTMyIiwg
dmFsdWU6IDAgfV1dLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3t0
eXBlOiAiaTMyIiwgdmFsdWU6IDEgfSwgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAxIH1dXSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt7dHlwZTogImkzMiIsIHZhbHVl
OiAzIH0sIFt7IHR5cGU6ICJpMzIiLCB2YWx1ZTogMiB9XV0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBbe3R5cGU6ICJpMzIiLCB2YWx1ZTogNTA1MCB9LCBbeyB0eXBl
OiAiaTMyIiwgdmFsdWU6IDEwMCB9XV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy93YXNtL2pzLWFwaS9mdW5jdGlvbi10ZXN0cy9yZXQ1LmpzIGIvSlNUZXN0cy93YXNtL2pzLWFw
aS9mdW5jdGlvbi10ZXN0cy9yZXQ1LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ5M2Y2YjI4NWMyMDgyNDU4ZDhm
NDVmY2UzZTliMzJmMjU5OTY3YjYKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dhc20vanMt
YXBpL2Z1bmN0aW9uLXRlc3RzL3JldDUuanMKQEAgLTAsMCArMSwxNiBAQAoraW1wb3J0IEJ1aWxk
ZXIgZnJvbSAnLi4vLi4vQnVpbGRlci5qcycKKworY29uc3QgYiA9IG5ldyBCdWlsZGVyKCk7Citi
LnNldENoZWNrZWQoZmFsc2UpOworbGV0IGNvZGUgPSBiLlR5cGUoKS5FbmQoKQorICAgIC5GdW5j
dGlvbigpLkVuZCgpCisgICAgLkNvZGUoKTsKKworY29kZS5GdW5jdGlvbih7IHBhcmFtczogW10s
IHJldDogImkzMiIgfSkKKyAgICAuSTMyQ29uc3QoNSkKKyAgICAuUmV0dXJuKCkKKyAgICAuRW5k
KCkKKyAgICAuRW5kKCk7Citjb25zdCBiaW4gPSBiLldlYkFzc2VtYmx5KCk7CitiaW4udHJpbSgp
OwordGVzdFdhc21Nb2R1bGVGdW5jdGlvbnMoYmluLmdldCgpLCAxLCBbW3t0eXBlOiAiaTMyIiwg
dmFsdWU6IDUgfSwgW11dXSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy93YXNtL3NlbGYtdGVzdC90ZXN0X0xvd0xldmVsQmluYXJ5X3ZhcmludC5qcyBi
L0pTVGVzdHMvd2FzbS9zZWxmLXRlc3QvdGVzdF9Mb3dMZXZlbEJpbmFyeV92YXJpbnQuanMKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkZGM4Y2YzYmYxMDEwOWU3OWNkOTEwMjYyMDVm
MmQyMzQ0MzA4MmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvSlNUZXN0cy93YXNtL3NlbGYtdGVzdC90ZXN0X0xvd0xldmVsQmluYXJ5X3ZhcmludC5qcwor
KysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLWltcG9ydCBMb3dMZXZlbEJpbmFyeSwgKiBh
cyBMTEIgZnJvbSAnLi4vTG93TGV2ZWxCaW5hcnkuanMnOwotaW1wb3J0ICogYXMgYXNzZXJ0IGZy
b20gJy4uL2Fzc2VydC5qcyc7Ci0KLWxldCB2YWx1ZXMgPSBbXTsKLWZvciAobGV0IGkgPSBMTEIu
dmFyaW50TWluOyBpICE9PSBMTEIudmFyaW50TWluICsgMTAyNDsgKytpKSB2YWx1ZXMucHVzaChp
KTsKLWZvciAobGV0IGkgPSAtMjA0ODsgaSAhPT0gMjA0ODsgKytpKSB2YWx1ZXMucHVzaChpKTsK
LWZvciAobGV0IGkgPSBMTEIudmFyaW50TWF4OyBpICE9PSBMTEIudmFyaW50TWF4IC0gMTAyNDsg
LS1pKSB2YWx1ZXMucHVzaChpKTsKLQotZm9yIChjb25zdCBpIG9mIHZhbHVlcykgewotICAgIGxl
dCBiID0gbmV3IExvd0xldmVsQmluYXJ5KCk7Ci0gICAgYi52YXJpbnQoaSk7Ci0gICAgY29uc3Qg
diA9IGIuZ2V0VmFyaW50KDApOwotICAgIGlmICh2LnZhbHVlICE9PSBpKQotICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoYFdyb3RlICIke2l9IiBhbmQgcmVhZCBiYWNrICIke3Z9ImApOwotICAgIGlm
ICh2Lm5leHQgIT09IGIuZ2V0U2l6ZSgpKQotICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFNpemUg
JHt2Lm5leHR9LCBleHBlY3RlZCAke2IuZ2V0U2l6ZSgpfWApOwotfQotCi1mb3IgKGxldCBpID0g
MDsgaSA8IExMQi52YXJCaXRzTWF4ICsgMTsgKytpKSB7Ci0gICAgbGV0IGIgPSBuZXcgTG93TGV2
ZWxCaW5hcnkoKTsKLSAgICBmb3IgKGxldCBqID0gMDsgaiA8IGk7ICsraikKLSAgICAgICAgYi51
aW50OCgweDgwKTsKLSAgICBhc3NlcnQudGhyb3dzKCgpID0+IGIuZ2V0VmFyaW50KDApLCBSYW5n
ZUVycm9yLCBgWyR7aX0sICR7aSsxfSkgaXMgb3V0IG9mIGJ1ZmZlciByYW5nZSBbMCwgJHtpfSlg
KTsKLX0KLQotbGV0IGIgPSBuZXcgTG93TGV2ZWxCaW5hcnkoKTsKLWZvciAobGV0IGkgPSAwOyBp
IDwgTExCLnZhckJpdHNNYXg7ICsraSkKLSAgICBiLnVpbnQ4KDB4ODApOwotYi51aW50OCgweDAw
KTsKLWFzc2VydC50aHJvd3MoKCkgPT4gYi5nZXRWYXJpbnQoMCksIFJhbmdlRXJyb3IsIGBTaGlm
dGluZyB0b28gbXVjaCBhdCA2YCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vc2VsZi10ZXN0
L3Rlc3RfTG93TGV2ZWxCaW5hcnlfdmFyaW50MzIuanMgYi9KU1Rlc3RzL3dhc20vc2VsZi10ZXN0
L3Rlc3RfTG93TGV2ZWxCaW5hcnlfdmFyaW50MzIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWI4ZTZhYmM4NzVi
MDQ2Y2U4MDIzM2Y5MjU5ZDAwYjQ2YjE4NzljNgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMv
d2FzbS9zZWxmLXRlc3QvdGVzdF9Mb3dMZXZlbEJpbmFyeV92YXJpbnQzMi5qcwpAQCAtMCwwICsx
LDMwIEBACitpbXBvcnQgTG93TGV2ZWxCaW5hcnksICogYXMgTExCIGZyb20gJy4uL0xvd0xldmVs
QmluYXJ5LmpzJzsKK2ltcG9ydCAqIGFzIGFzc2VydCBmcm9tICcuLi9hc3NlcnQuanMnOworCits
ZXQgdmFsdWVzID0gW107Citmb3IgKGxldCBpID0gTExCLnZhcmludDMyTWluOyBpICE9PSBMTEIu
dmFyaW50MzJNaW4gKyAxMDI0OyArK2kpIHZhbHVlcy5wdXNoKGkpOworZm9yIChsZXQgaSA9IC0y
MDQ4OyBpICE9PSAyMDQ4OyArK2kpIHZhbHVlcy5wdXNoKGkpOworZm9yIChsZXQgaSA9IExMQi52
YXJpbnQzMk1heDsgaSAhPT0gTExCLnZhcmludDMyTWF4IC0gMTAyNDsgLS1pKSB2YWx1ZXMucHVz
aChpKTsKKworZm9yIChjb25zdCBpIG9mIHZhbHVlcykgeworICAgIGxldCBiID0gbmV3IExvd0xl
dmVsQmluYXJ5KCk7CisgICAgYi52YXJpbnQzMihpKTsKKyAgICBjb25zdCB2ID0gYi5nZXRWYXJp
bnQzMigwKTsKKyAgICBpZiAodi52YWx1ZSAhPT0gaSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KGBXcm90ZSAiJHtpfSIgYW5kIHJlYWQgYmFjayAiJHt2fSJgKTsKKyAgICBpZiAodi5uZXh0ICE9
PSBiLmdldFNpemUoKSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTaXplICR7di5uZXh0fSwg
ZXhwZWN0ZWQgJHtiLmdldFNpemUoKX1gKTsKK30KKworZm9yIChsZXQgaSA9IDA7IGkgPCBMTEIu
dmFyQml0c01heCArIDE7ICsraSkgeworICAgIGxldCBiID0gbmV3IExvd0xldmVsQmluYXJ5KCk7
CisgICAgZm9yIChsZXQgaiA9IDA7IGogPCBpOyArK2opCisgICAgICAgIGIudWludDgoMHg4MCk7
CisgICAgYXNzZXJ0LnRocm93cygoKSA9PiBiLmdldFZhcmludDMyKDApLCBSYW5nZUVycm9yLCBg
WyR7aX0sICR7aSsxfSkgaXMgb3V0IG9mIGJ1ZmZlciByYW5nZSBbMCwgJHtpfSlgKTsKK30KKwor
bGV0IGIgPSBuZXcgTG93TGV2ZWxCaW5hcnkoKTsKK2ZvciAobGV0IGkgPSAwOyBpIDwgTExCLnZh
ckJpdHNNYXg7ICsraSkKKyAgICBiLnVpbnQ4KDB4ODApOworYi51aW50OCgweDAwKTsKK2Fzc2Vy
dC50aHJvd3MoKCkgPT4gYi5nZXRWYXJpbnQzMigwKSwgUmFuZ2VFcnJvciwgYFNoaWZ0aW5nIHRv
byBtdWNoIGF0IDZgKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9zZWxmLXRlc3QvdGVzdF9M
b3dMZXZlbEJpbmFyeV92YXJ1aW50LmpzIGIvSlNUZXN0cy93YXNtL3NlbGYtdGVzdC90ZXN0X0xv
d0xldmVsQmluYXJ5X3ZhcnVpbnQuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJl
ODJlMTM1ZTlkMTc1MGNkNGVhMmQ1ZDc1NDFhZDdjNTQ3OWJlMDguLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvSlNUZXN0cy93YXNtL3NlbGYtdGVzdC90ZXN0
X0xvd0xldmVsQmluYXJ5X3ZhcnVpbnQuanMKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBA
Ci1pbXBvcnQgTG93TGV2ZWxCaW5hcnksICogYXMgTExCIGZyb20gJy4uL0xvd0xldmVsQmluYXJ5
LmpzJzsKLWltcG9ydCAqIGFzIGFzc2VydCBmcm9tICcuLi9hc3NlcnQuanMnOwotCi1sZXQgdmFs
dWVzID0gW107Ci1mb3IgKGxldCBpID0gTExCLnZhcnVpbnRNaW47IGkgIT09IExMQi52YXJ1aW50
TWluICsgMTAyNDsgKytpKSB2YWx1ZXMucHVzaChpKTsKLWZvciAobGV0IGkgPSBMTEIudmFydWlu
dE1heDsgaSAhPT0gTExCLnZhcnVpbnRNYXggLSAxMDI0OyAtLWkpIHZhbHVlcy5wdXNoKGkpOwot
Ci1mb3IgKGNvbnN0IGkgb2YgdmFsdWVzKSB7Ci0gICAgbGV0IGIgPSBuZXcgTG93TGV2ZWxCaW5h
cnkoKTsKLSAgICBiLnZhcnVpbnQoaSk7Ci0gICAgY29uc3QgdiA9IGIuZ2V0VmFydWludCgwKTsK
LSAgICBpZiAodi52YWx1ZSAhPT0gaSkKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBXcm90ZSAi
JHtpfSIgYW5kIHJlYWQgYmFjayAiJHt2fSJgKTsKLSAgICBpZiAodi5uZXh0ICE9PSBiLmdldFNp
emUoKSkKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTaXplICR7di5uZXh0fSwgZXhwZWN0ZWQg
JHtiLmdldFNpemUoKX1gKTsKLX0KLQotZm9yIChsZXQgaSA9IDA7IGkgPCBMTEIudmFyQml0c01h
eCArIDE7ICsraSkgewotICAgIGxldCBiID0gbmV3IExvd0xldmVsQmluYXJ5KCk7Ci0gICAgZm9y
IChsZXQgaiA9IDA7IGogPCBpOyArK2opCi0gICAgICAgIGIudWludDgoMHg4MCk7Ci0gICAgYXNz
ZXJ0LnRocm93cygoKSA9PiBiLmdldFZhcmludCgwKSwgUmFuZ2VFcnJvciwgYFske2l9LCAke2kr
MX0pIGlzIG91dCBvZiBidWZmZXIgcmFuZ2UgWzAsICR7aX0pYCk7Ci19Ci0KLWxldCBiID0gbmV3
IExvd0xldmVsQmluYXJ5KCk7Ci1mb3IgKGxldCBpID0gMDsgaSA8IExMQi52YXJCaXRzTWF4OyAr
K2kpCi0gICAgYi51aW50OCgweDgwKTsKLWIudWludDgoMHgwMCk7Ci1hc3NlcnQudGhyb3dzKCgp
ID0+IGIuZ2V0VmFyaW50KDApLCBSYW5nZUVycm9yLCBgU2hpZnRpbmcgdG9vIG11Y2ggYXQgNmAp
OwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL3NlbGYtdGVzdC90ZXN0X0xvd0xldmVsQmluYXJ5
X3ZhcnVpbnQzMi5qcyBiL0pTVGVzdHMvd2FzbS9zZWxmLXRlc3QvdGVzdF9Mb3dMZXZlbEJpbmFy
eV92YXJ1aW50MzIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTljNjQ5NjM3YjQ1MDVmOGMzYTZmZDM4NTIzMDg1
ZjNiNmU3NTFiYwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9zZWxmLXRlc3QvdGVz
dF9Mb3dMZXZlbEJpbmFyeV92YXJ1aW50MzIuanMKQEAgLTAsMCArMSwyOSBAQAoraW1wb3J0IExv
d0xldmVsQmluYXJ5LCAqIGFzIExMQiBmcm9tICcuLi9Mb3dMZXZlbEJpbmFyeS5qcyc7CitpbXBv
cnQgKiBhcyBhc3NlcnQgZnJvbSAnLi4vYXNzZXJ0LmpzJzsKKworbGV0IHZhbHVlcyA9IFtdOwor
Zm9yIChsZXQgaSA9IExMQi52YXJ1aW50MzJNaW47IGkgIT09IExMQi52YXJ1aW50MzJNaW4gKyAx
MDI0OyArK2kpIHZhbHVlcy5wdXNoKGkpOworZm9yIChsZXQgaSA9IExMQi52YXJ1aW50MzJNYXg7
IGkgIT09IExMQi52YXJ1aW50MzJNYXggLSAxMDI0OyAtLWkpIHZhbHVlcy5wdXNoKGkpOworCitm
b3IgKGNvbnN0IGkgb2YgdmFsdWVzKSB7CisgICAgbGV0IGIgPSBuZXcgTG93TGV2ZWxCaW5hcnko
KTsKKyAgICBiLnZhcnVpbnQzMihpKTsKKyAgICBjb25zdCB2ID0gYi5nZXRWYXJ1aW50MzIoMCk7
CisgICAgaWYgKHYudmFsdWUgIT09IGkpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgV3JvdGUg
IiR7aX0iIGFuZCByZWFkIGJhY2sgIiR7dn0iYCk7CisgICAgaWYgKHYubmV4dCAhPT0gYi5nZXRT
aXplKCkpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgU2l6ZSAke3YubmV4dH0sIGV4cGVjdGVk
ICR7Yi5nZXRTaXplKCl9YCk7Cit9CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgTExCLnZhckJpdHNN
YXggKyAxOyArK2kpIHsKKyAgICBsZXQgYiA9IG5ldyBMb3dMZXZlbEJpbmFyeSgpOworICAgIGZv
ciAobGV0IGogPSAwOyBqIDwgaTsgKytqKQorICAgICAgICBiLnVpbnQ4KDB4ODApOworICAgIGFz
c2VydC50aHJvd3MoKCkgPT4gYi5nZXRWYXJpbnQzMigwKSwgUmFuZ2VFcnJvciwgYFske2l9LCAk
e2krMX0pIGlzIG91dCBvZiBidWZmZXIgcmFuZ2UgWzAsICR7aX0pYCk7Cit9CisKK2xldCBiID0g
bmV3IExvd0xldmVsQmluYXJ5KCk7Citmb3IgKGxldCBpID0gMDsgaSA8IExMQi52YXJCaXRzTWF4
OyArK2kpCisgICAgYi51aW50OCgweDgwKTsKK2IudWludDgoMHgwMCk7Cithc3NlcnQudGhyb3dz
KCgpID0+IGIuZ2V0VmFyaW50MzIoMCksIFJhbmdlRXJyb3IsIGBTaGlmdGluZyB0b28gbXVjaCBh
dCA2YCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>