<?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>209998</bug_id>
          
          <creation_ts>2020-04-03 21:32:47 -0700</creation_ts>
          <short_desc>Web Inspector: Debugger: treat comma sub-expressions as separate statements</short_desc>
          <delta_ts>2020-04-21 13:12:04 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>WebKit Local Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=210588</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>210253</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Devin Rousso">hi</reporter>
          <assigned_to name="Devin Rousso">hi</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1637619</commentid>
    <comment_count>0</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-04-03 21:32:47 -0700</bug_when>
    <thetext>Some minifies use `,` instead of `;` in many situations, and frankly the `,` operator is basically an inline-statement, so we should treat each comma sub-expression as a statement for pausing (including breakpoints).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637649</commentid>
    <comment_count>1</comment_count>
      <attachid>395438</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-04-03 23:05:13 -0700</bug_when>
    <thetext>Created attachment 395438
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637712</commentid>
    <comment_count>2</comment_count>
      <attachid>395438</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2020-04-04 11:06:46 -0700</bug_when>
    <thetext>Comment on attachment 395438
Patch

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

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:3045
&gt; +    for (; node &amp;&amp; node-&gt;next(); node = node-&gt;next()) {

I wonder if the `node` check is actually necessary here. Given we always fall out of this loop assuming `node` is valid.

&gt; Source/WebInspectorUI/UserInterface/Workers/Formatter/JSFormatter.js:217
&gt; +        switch (node.type) {
&gt; +        case &quot;BlockStatement&quot;:
&gt; +        case &quot;ClassDeclaration&quot;:
&gt; +        case &quot;DoWhileStatement&quot;:
&gt; +        case &quot;ForInStatement&quot;:
&gt; +        case &quot;ForOfStatement&quot;:
&gt; +        case &quot;ForStatement&quot;:
&gt; +        case &quot;FunctionDeclaration&quot;:
&gt; +        case &quot;IfStatement&quot;:
&gt; +        case &quot;SwitchStatement&quot;:
&gt; +        case &quot;TryStatement&quot;:
&gt; +        case &quot;WhileStatement&quot;:
&gt; +        case &quot;WithStatement&quot;:
&gt; +            return true;

Previously this was sorted by frequency of statement, to &quot;optimize&quot; the fewest number of checks. I&apos;m not sure it mattered. Switch is probably fine!

&gt; LayoutTests/inspector/debugger/stepping/stepOver-expected.txt:222
&gt; + -&gt;  40        let a = 1|,
&gt; +     41            b = 2,
&gt; +     42            c = 3;

Wouldn&apos;t we rather pause before &quot;b&quot;? This seems poor.

&gt; LayoutTests/inspector/debugger/stepping/stepOver-expected.txt:247
&gt; + -&gt;  43        testAlert(&quot;comma log 1&quot;), |testAlert(&quot;comma log 2&quot;), testAlert(&quot;comma log 3&quot;);

This looks correct tho!

&gt; LayoutTests/inspector/formatting/resources/javascript-tests/sample-jquery-expected.js:4165
&gt; -    }), e.jQuery = e.$ = b, &quot;function&quot; == typeof define &amp;&amp; define.amd &amp;&amp; define.amd.jQuery &amp;&amp; define(&quot;jquery&quot;, [], function() {
&gt; +    }),
&gt; +    e.jQuery = e.$ = b,

Awesome improvement in general!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637792</commentid>
    <comment_count>3</comment_count>
      <attachid>395438</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-04-04 19:39:32 -0700</bug_when>
    <thetext>Comment on attachment 395438
Patch

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

&gt;&gt; Source/WebInspectorUI/UserInterface/Workers/Formatter/JSFormatter.js:217
&gt;&gt; +            return true;
&gt; 
&gt; Previously this was sorted by frequency of statement, to &quot;optimize&quot; the fewest number of checks. I&apos;m not sure it mattered. Switch is probably fine!

I was wondering how this was sorted!  In that case, I would&apos;ve probably expected DoWhileStatement to be lower down :P

We&apos;re running this on a `Worker`, so this is probably fine :)

&gt;&gt; LayoutTests/inspector/debugger/stepping/stepOver-expected.txt:222
&gt;&gt; +     42            c = 3;
&gt; 
&gt; Wouldn&apos;t we rather pause before &quot;b&quot;? This seems poor.

I agree, but I&apos;m not really sure what to do about this, especially since it&apos;s coming from the same `CommaNode` 🤔

&gt;&gt; LayoutTests/inspector/formatting/resources/javascript-tests/sample-jquery-expected.js:4165
&gt;&gt; +    e.jQuery = e.$ = b,
&gt; 
&gt; Awesome improvement in general!

Yeah!  I think this looks _way_ better :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637847</commentid>
    <comment_count>4</comment_count>
      <attachid>395495</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-04-05 01:59:27 -0700</bug_when>
    <thetext>Created attachment 395495
Patch

Turns out, the only reason I needed to have `m_lastExecutedPosition` was because I was unnecessarily `emitDebugHook` before the first `CommaNode`, which really should already be handled by the container `StatementNode`.In addition to considering each `CommaNode` as a pause location, we should also consider them as a possible breakpoint location.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637852</commentid>
    <comment_count>5</comment_count>
      <attachid>395495</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2020-04-05 03:02:41 -0700</bug_when>
    <thetext>Comment on attachment 395495
Patch

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

Do we have a test for something like:

    for(let x = 1, y = 2; ...; ...) {}

I want to make sure we don&apos;t pretty print that poorly, and that we&apos;d pause on `y=2` naturally.

And maybe just sanity check this as well (though I don&apos;t expect it to be any different):

    let x;
    if (x = 1, x) {}

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:3045
&gt; +    for (; node &amp;&amp; node-&gt;next(); node = node-&gt;next()) {

I still think we can and should drop the `node` at the start of the condition. If it was ever nullptr we&apos;d crash at line 3047.

&gt; LayoutTests/inspector/debugger/breakpoints/resolved-dump-all-pause-locations-expected.txt:1107
&gt;  INSERTING AT: 166:1
&gt; -PAUSES AT: 168:0
&gt; +PAUSES AT: 167:4
&gt;      163    
&gt;      164    var v1 = 1,
&gt;      165        v2 = 1;
&gt;   -&gt; 166    l#et l1 = 2,
&gt; -    167        l2 = 2;
&gt; + =&gt; 167        |l2 = 2;
&gt; +    168    const c1 = 3,
&gt; +    169        c2 = 3;
&gt; +    170    

Nice!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637927</commentid>
    <comment_count>6</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-04-05 11:16:06 -0700</bug_when>
    <thetext>(In reply to Joseph Pecoraro from comment #5)
&gt; Comment on attachment 395495 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=395495&amp;action=review
&gt; 
&gt; Do we have a test for something like:
&gt; 
&gt;     for(let x = 1, y = 2; ...; ...) {}
&gt; 
&gt; I want to make sure we don&apos;t pretty print that poorly, and that we&apos;d pause on `y=2` naturally.
We already have pretty printing tests this.  I&apos;ll add a stepping test.

&gt; And maybe just sanity check this as well (though I don&apos;t expect it to be any different):
&gt; 
&gt;     let x;
&gt;     if (x = 1, x) {}
Good idea :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637931</commentid>
    <comment_count>7</comment_count>
      <attachid>395519</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-04-05 11:39:14 -0700</bug_when>
    <thetext>Created attachment 395519
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638001</commentid>
    <comment_count>8</comment_count>
      <attachid>395537</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-04-05 17:33:17 -0700</bug_when>
    <thetext>Created attachment 395537
Patch

Adjust the tests slightly for a better diff :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639271</commentid>
    <comment_count>9</comment_count>
      <attachid>395537</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2020-04-08 13:47:13 -0700</bug_when>
    <thetext>Comment on attachment 395537
Patch

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

Awesome! r=me

&gt; Source/JavaScriptCore/parser/Parser.cpp:901
&gt; +                    head = tail = context.createCommaExpr(headLocation, head);

Clever. Maybe too clever.

&gt; LayoutTests/inspector/formatting/resources/javascript-tests/for-statements.js:38
&gt;  for(var x=1;x&lt;len;++x)1;
&gt; -for(var x=1,len=10;x&lt;len;++x)1;
&gt; +for(var x=1,len=1;len=10,x&lt;len;len=5,++x)1;

FWIW, if you&apos;re purely additive to these tests, the diffs end up easier to read and we hypothetically test more cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639472</commentid>
    <comment_count>10</comment_count>
      <attachid>395909</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-04-08 21:40:41 -0700</bug_when>
    <thetext>Created attachment 395909
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639477</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-04-08 22:10:32 -0700</bug_when>
    <thetext>Committed r259781: &lt;https://trac.webkit.org/changeset/259781&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 395909.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639478</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-04-08 22:11:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/61496849&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395438</attachid>
            <date>2020-04-03 23:05:13 -0700</date>
            <delta_ts>2020-04-05 01:59:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209998-20200404000511.patch</filename>
            <type>text/plain</type>
            <size>112207</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDg4ZmQzMmUzNjgyNjZkMWUxZjBlNDAzODY1NzRk
NDE5ZTk1NzI5NmUuLjc3MDBkNmI3YTczYzg0NWMyZTA2YzFlZjczYjNkZDc4Y2EwYWQwNTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIwLTA0LTAzICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBE
ZWJ1Z2dlcjogdHJlYXQgY29tbWEgc3ViLWV4cHJlc3Npb25zIGFzIHNlcGFyYXRlIHN0YXRlbWVu
dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTk5
OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1pbmlm
aWVycyBzb21ldGltZXMgdXNlIGAsYCBpbnN0ZWFkIG9mIGA7YCBhcyBhIHdheSBvZiBjb21wcmVz
c2luZyBtdWx0aXBsZSBzdGF0ZW1lbnRzIGludG8KKyAgICAgICAgYSBzaW5nbGUgc3RhdGVtZW50
IChlLmcuIGluc2lkZSBhbiBgaWZgIGNvbmRpdGlvbmFsKS4gVGhpcyBtYWtlcyBzdGVwcGluZyB0
aHJvdWdoIG1pbmlmaWVkCisgICAgICAgIGNvZGUgbXVjaCBsZXNzIHVzZWZ1bCwgYXMgb3VyIGN1
cnJlbnQgc3RlcHBpbmcgbG9naWMgaXMgYmFzZWQgb24gZXhwcmVzc2lvbnMgKG5vdCBpbmNsdWRp
bmcKKyAgICAgICAgc3RlcCBpbiBvciBzdGVwIG91dCkuIEluIG1vc3QgY2FzZXMsIHdlIGRvIGFj
dHVhbGx5IHdhbnQgdG8gdHJlYXQgZWFjaCBzdWItZXhwcmVzc2lvbiBpbiBhCisgICAgICAgIGNv
bW1hIGV4cHJlc3Npb24gYXMgYSBzdGF0ZW1lbnQgc28gYXMgdG8gZW11bGF0ZSB0aGUgYmVoYXZp
b3VyIGFzIGlmIHRoZXJlIHdlcmUgYDtgIGluc3RlYWQuCisKKyAgICAgICAgKiBieXRlY29tcGls
ZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6Q29tbWFOb2RlOjplbWl0Qnl0ZWNv
ZGUpOgorCisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXIuaDoKKyAgICAgICAgKiBkZWJ1Z2dl
ci9EZWJ1Z2dlci5jcHA6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpEZWJ1Z2dlcik6CisgICAg
ICAgIChKU0M6OkRlYnVnZ2VyOjpoYXNCcmVha3BvaW50KToKKyAgICAgICAgKEpTQzo6RGVidWdn
ZXI6OnVwZGF0ZUNhbGxGcmFtZUludGVybmFsKToKKyAgICAgICAgKEpTQzo6RGVidWdnZXI6OnBh
dXNlSWZOZWVkZWQpOgorICAgICAgICBJbnN0ZWFkIG9mIGp1c3Qga2VlcGluZyB0cmFjayBvZiB0
aGUgbGFzdCBleGVjdXRlZCBsaW5lLCBrZWVwIGEgcmVjb3JkIG9mIHRoZSBsYXN0IGV4ZWN1dGVk
CisgICAgICAgIHBvc2l0aW9uIHNvIHRoYXQgbXVsdGlwbGUgcGF1c2VzIGZvciB0aGUgc2FtZSBw
b3NpdGlvbiBjYW4gYmUgaWdub3JlZC4KKwogMjAyMC0wNC0wMyAgWXVzdWtlIFN1enVraSAgPHlz
dXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIGNhbm9uaWNhbGl6ZUxvY2FsZUxpc3Qg
c2hvdWxkIGdyYWNlZnVsbHkgdGhyb3cgT09NIGVycm9yIGlmIGlucHV0ICsgZXJyb3IgbWVzc2Fn
ZSBpcyB0b28gbGFyZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IGEzMTM5ZTRiZjY1NGRh
NzE2OWNkM2E4ZDU0OTA3NzQ3OTZjZmRiYWMuLjUxNjM3OWY3MGE3OTkwMWEzNDdkZjY0YWIxNmE2
MTI4OTBjMDg1YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisy
MDIwLTA0LTAzICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBEZWJ1Z2dlcjogdHJlYXQgY29tbWEgc3ViLWV4cHJlc3Npb25zIGFzIHNl
cGFyYXRlIHN0YXRlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwOTk5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE1pbmlmaWVycyBzb21ldGltZXMgdXNlIGAsYCBpbnN0ZWFkIG9mIGA7YCBhcyBh
IHdheSBvZiBjb21wcmVzc2luZyBtdWx0aXBsZSBzdGF0ZW1lbnRzIGludG8KKyAgICAgICAgYSBz
aW5nbGUgc3RhdGVtZW50IChlLmcuIGluc2lkZSBhbiBgaWZgIGNvbmRpdGlvbmFsKS4gVGhpcyBt
YWtlcyBzdGVwcGluZyB0aHJvdWdoIG1pbmlmaWVkCisgICAgICAgIGNvZGUgbXVjaCBsZXNzIHVz
ZWZ1bCwgYXMgb3VyIGN1cnJlbnQgc3RlcHBpbmcgbG9naWMgaXMgYmFzZWQgb24gZXhwcmVzc2lv
bnMgKG5vdCBpbmNsdWRpbmcKKyAgICAgICAgc3RlcCBpbiBvciBzdGVwIG91dCkuIEluIG1vc3Qg
Y2FzZXMsIHdlIGRvIGFjdHVhbGx5IHdhbnQgdG8gdHJlYXQgZWFjaCBzdWItZXhwcmVzc2lvbiBp
biBhCisgICAgICAgIGNvbW1hIGV4cHJlc3Npb24gYXMgYSBzdGF0ZW1lbnQgc28gYXMgdG8gZW11
bGF0ZSB0aGUgYmVoYXZpb3VyIGFzIGlmIHRoZXJlIHdlcmUgYDtgIGluc3RlYWQuCisKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL1dvcmtlcnMvRm9ybWF0dGVyL0pTRm9ybWF0dGVyLmpzOgorICAg
ICAgICAoSlNGb3JtYXR0ZXIucHJvdG90eXBlLl9pc0xpa2VseVRvSGF2ZU5ld2xpbmUpOgorICAg
ICAgICAoSlNGb3JtYXR0ZXIucHJvdG90eXBlLl9oYW5kbGVUb2tlbkF0Tm9kZSk6CisgICAgICAg
IFB1dCBlYWNoIHN1Yi1leHByZXNzaW9uIGluIGEgY29tbWEgZXhwcmVzc2lvbiBvbiBpdCdzIG93
biBsaW5lLgorCiAyMDIwLTA0LTAzICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+
CiAKICAgICAgICAgW1hjb2RlXSBSZXBsYWNlIEFTQU5fT1RIRVJfQ0ZMQUdTIGFuZCBBU0FOX09U
SEVSX0NQTFVTUExVU0ZMQUdTIHdpdGggJChpbmhlcml0ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggNjQwYjI0OTc1
NWUxMGVjZGQ5YTgzYjllMTRiMDk3YWIzOWZkMDk0Zi4uMWUxNmFkZmQwYjI3YzhlNjVkYWYxOGE2
NDEwYzY3NTJhZWViZjk3MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMzA0Miw4ICszMDQyLDExIEBAIFJlZ2lzdGVy
SUQqIFJlYWRNb2RpZnlCcmFja2V0Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlCiBSZWdpc3RlcklEKiBDb21tYU5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7CiAgICAgQ29tbWFO
b2RlKiBub2RlID0gdGhpczsKLSAgICBmb3IgKDsgbm9kZSAmJiBub2RlLT5uZXh0KCk7IG5vZGUg
PSBub2RlLT5uZXh0KCkpCisgICAgZm9yICg7IG5vZGUgJiYgbm9kZS0+bmV4dCgpOyBub2RlID0g
bm9kZS0+bmV4dCgpKSB7CisgICAgICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKG5vZGUtPm1f
ZXhwcik7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShnZW5lcmF0b3IuaWdub3JlZFJlc3Vs
dCgpLCBub2RlLT5tX2V4cHIpOworICAgIH0KKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhu
b2RlLT5tX2V4cHIpOwogICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdE5vZGVJblRhaWxQb3NpdGlv
bihkc3QsIG5vZGUtPm1fZXhwcik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdn
ZXIvRGVidWdnZXIuY3BwCmluZGV4IGQzZDNiZDFmZWE5NmZiYzM4MjkwMDM1NmU4NmE2M2YwZjEx
ZTU1YmUuLmNmZDhlYTgxNjhlODg1YjMyMmY3M2MyNTQ5NDMwNGRjNjU3NzYyMmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcApAQCAtOTQsOCArOTQsOCBA
QCBEZWJ1Z2dlcjo6RGVidWdnZXIoVk0mIHZtKQogICAgICwgbV9zdXBwcmVzc0FsbFBhdXNlcyhm
YWxzZSkKICAgICAsIG1fc3RlcHBpbmdNb2RlKFN0ZXBwaW5nTW9kZURpc2FibGVkKQogICAgICwg
bV9yZWFzb25Gb3JQYXVzZShOb3RQYXVzZWQpCi0gICAgLCBtX2xhc3RFeGVjdXRlZExpbmUoVUlO
VF9NQVgpCiAgICAgLCBtX2xhc3RFeGVjdXRlZFNvdXJjZUlEKG5vU291cmNlSUQpCisgICAgLCBt
X2xhc3RFeGVjdXRlZFBvc2l0aW9uKFRleHRQb3NpdGlvbjo6YmVsb3dSYW5nZVBvc2l0aW9uKCkp
CiAgICAgLCBtX3RvcEJyZWFrcG9pbnRJRChub0JyZWFrcG9pbnRJRCkKICAgICAsIG1fcGF1c2lu
Z0JyZWFrcG9pbnRJRChub0JyZWFrcG9pbnRJRCkKIHsKQEAgLTQ1NSw2ICs0NTUsOCBAQCBib29s
IERlYnVnZ2VyOjpoYXNCcmVha3BvaW50KFNvdXJjZUlEIHNvdXJjZUlELCBjb25zdCBUZXh0UG9z
aXRpb24mIHBvc2l0aW9uLCBCcgogICAgIGlmIChicmVha3NJdCA9PSBpdC0+dmFsdWUuZW5kKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIHVuc2lnbmVkIGxhc3RMaW5lID0gbV9sYXN0
RXhlY3V0ZWRQb3NpdGlvbi5tX2xpbmUuemVyb0Jhc2VkSW50KCk7CisKICAgICBib29sIGhpdCA9
IGZhbHNlOwogICAgIGNvbnN0IEJyZWFrcG9pbnRzTGlzdCYgYnJlYWtwb2ludHMgPSAqYnJlYWtz
SXQtPnZhbHVlOwogICAgIEJyZWFrcG9pbnQqIGJyZWFrcG9pbnQ7CkBAIC00NjMsOCArNDY1LDcg
QEAgYm9vbCBEZWJ1Z2dlcjo6aGFzQnJlYWtwb2ludChTb3VyY2VJRCBzb3VyY2VJRCwgY29uc3Qg
VGV4dFBvc2l0aW9uJiBwb3NpdGlvbiwgQnIKICAgICAgICAgdW5zaWduZWQgYnJlYWtDb2x1bW4g
PSBicmVha3BvaW50LT5jb2x1bW47CiAgICAgICAgIC8vIFNpbmNlIGZyb250ZW5kIHRydW5jYXRl
cyB0aGUgaW5kZW50LCB0aGUgZmlyc3Qgc3RhdGVtZW50IGluIGEgbGluZSBtdXN0IG1hdGNoIHRo
ZSBicmVha3BvaW50IChsaW5lLDApLgogICAgICAgICBBU1NFUlQodGhpcyA9PSBtX2N1cnJlbnRD
YWxsRnJhbWUtPmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3QoKS0+ZGVidWdnZXIoKSk7Ci0gICAg
ICAgIGlmICgobGluZSAhPSBtX2xhc3RFeGVjdXRlZExpbmUgJiYgbGluZSA9PSBicmVha0xpbmUg
JiYgIWJyZWFrQ29sdW1uKQotICAgICAgICAgICAgfHwgKGxpbmUgPT0gYnJlYWtMaW5lICYmIGNv
bHVtbiA9PSBicmVha0NvbHVtbikpIHsKKyAgICAgICAgaWYgKChsaW5lICE9IGxhc3RMaW5lICYm
IGxpbmUgPT0gYnJlYWtMaW5lICYmICFicmVha0NvbHVtbikgfHwgKGxpbmUgPT0gYnJlYWtMaW5l
ICYmIGNvbHVtbiA9PSBicmVha0NvbHVtbikpIHsKICAgICAgICAgICAgIGhpdCA9IHRydWU7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtNjY4LDggKzY2OSw4IEBAIHZvaWQgRGVi
dWdnZXI6OnVwZGF0ZUNhbGxGcmFtZUludGVybmFsKENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAg
IG1fY3VycmVudENhbGxGcmFtZSA9IGNhbGxGcmFtZTsKICAgICBTb3VyY2VJRCBzb3VyY2VJRCA9
IERlYnVnZ2VyQ2FsbEZyYW1lOjpzb3VyY2VJREZvckNhbGxGcmFtZShjYWxsRnJhbWUpOwogICAg
IGlmIChtX2xhc3RFeGVjdXRlZFNvdXJjZUlEICE9IHNvdXJjZUlEKSB7Ci0gICAgICAgIG1fbGFz
dEV4ZWN1dGVkTGluZSA9IFVJTlRfTUFYOwogICAgICAgICBtX2xhc3RFeGVjdXRlZFNvdXJjZUlE
ID0gc291cmNlSUQ7CisgICAgICAgIG1fbGFzdEV4ZWN1dGVkUG9zaXRpb24gPSBUZXh0UG9zaXRp
b246OmJlbG93UmFuZ2VQb3NpdGlvbigpOwogICAgIH0KIH0KIApAQCAtNjg0LDYgKzY4NSwxMiBA
QCB2b2lkIERlYnVnZ2VyOjpwYXVzZUlmTmVlZGVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpCiAgICAgaWYgKG1fc3VwcHJlc3NBbGxQYXVzZXMpCiAgICAgICAgIHJldHVybjsKIAorICAg
IGF1dG8gcG9zaXRpb24gPSBEZWJ1Z2dlckNhbGxGcmFtZTo6cG9zaXRpb25Gb3JDYWxsRnJhbWUo
dm0sIG1fY3VycmVudENhbGxGcmFtZSk7CisgICAgaWYgKHBvc2l0aW9uID09IG1fbGFzdEV4ZWN1
dGVkUG9zaXRpb24pCisgICAgICAgIHJldHVybjsKKworICAgIG1fbGFzdEV4ZWN1dGVkUG9zaXRp
b24gPSBwb3NpdGlvbjsKKwogICAgIGludHB0cl90IHNvdXJjZUlEID0gRGVidWdnZXJDYWxsRnJh
bWU6OnNvdXJjZUlERm9yQ2FsbEZyYW1lKG1fY3VycmVudENhbGxGcmFtZSk7CiAKICAgICBhdXRv
IGJsYWNrYm94VHlwZUl0ZXJhdG9yID0gbV9ibGFja2JveGVkU2NyaXB0cy5maW5kKHNvdXJjZUlE
KTsKQEAgLTY5MiwxNyArNjk5LDEyIEBAIHZvaWQgRGVidWdnZXI6OnBhdXNlSWZOZWVkZWQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIAogICAgIERlYnVnZ2VyUGF1c2VkU2NvcGUgZGVi
dWdnZXJQYXVzZWRTY29wZSgqdGhpcyk7CiAKLSAgICBib29sIHBhdXNlTm93ID0gbV9wYXVzZUF0
TmV4dE9wcG9ydHVuaXR5OwotICAgIHBhdXNlTm93IHw9IChtX3BhdXNlT25DYWxsRnJhbWUgPT0g
bV9jdXJyZW50Q2FsbEZyYW1lKTsKLQotICAgIGJvb2wgZGlkUGF1c2VGb3JTdGVwID0gcGF1c2VO
b3c7CisgICAgYm9vbCBwYXVzZUZyb21TdGVwcGluZyA9IG1fcGF1c2VBdE5leHRPcHBvcnR1bml0
eSB8fCBtX3BhdXNlT25DYWxsRnJhbWUgPT0gbV9jdXJyZW50Q2FsbEZyYW1lOwogCiAgICAgQnJl
YWtwb2ludCBicmVha3BvaW50OwotICAgIFRleHRQb3NpdGlvbiBwb3NpdGlvbiA9IERlYnVnZ2Vy
Q2FsbEZyYW1lOjpwb3NpdGlvbkZvckNhbGxGcmFtZSh2bSwgbV9jdXJyZW50Q2FsbEZyYW1lKTsK
ICAgICBib29sIGRpZEhpdEJyZWFrcG9pbnQgPSBoYXNCcmVha3BvaW50KHNvdXJjZUlELCBwb3Np
dGlvbiwgJmJyZWFrcG9pbnQpOwotICAgIHBhdXNlTm93IHw9IGRpZEhpdEJyZWFrcG9pbnQ7Ci0g
ICAgbV9sYXN0RXhlY3V0ZWRMaW5lID0gcG9zaXRpb24ubV9saW5lLnplcm9CYXNlZEludCgpOwot
ICAgIGlmICghcGF1c2VOb3cpCisKKyAgICBpZiAoIXBhdXNlRnJvbVN0ZXBwaW5nICYmICFkaWRI
aXRCcmVha3BvaW50KQogICAgICAgICByZXR1cm47CiAKICAgICBib29sIGFmdGVyQmxhY2tib3hl
ZFNjcmlwdCA9IG1fYWZ0ZXJCbGFja2JveGVkU2NyaXB0OwpAQCAtNzIwLDcgKzcyMiw3IEBAIHZv
aWQgRGVidWdnZXI6OnBhdXNlSWZOZWVkZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
ICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAoYnJlYWtwb2ludC5hdXRvQ29udGlu
dWUpIHsKLSAgICAgICAgICAgIGlmICghZGlkUGF1c2VGb3JTdGVwKQorICAgICAgICAgICAgaWYg
KCFwYXVzZUZyb21TdGVwcGluZykKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICBkaWRIaXRCcmVha3BvaW50ID0gZmFsc2U7CiAgICAgICAgIH0gZWxzZQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuaAppbmRleCBmZjdhMjE5ZDRlMTg5OTEwZmI3ZTNi
ODllMzE1MTQwMzE3ZmQwYjQyLi5kMTA0ZjJiMTk5YmNiMzZiYTQ4MDUyNDM2YzM4MTY4ZDA5MmMz
N2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuaApAQCAtMjM2
LDE0ICsyMzYsMTQgQEAgcHJpdmF0ZToKICAgICBib29sIG1fYnJlYWtwb2ludHNBY3RpdmF0ZWQg
OiAxOwogICAgIGJvb2wgbV9oYXNIYW5kbGVyRm9yRXhjZXB0aW9uQ2FsbGJhY2sgOiAxOwogICAg
IGJvb2wgbV9zdXBwcmVzc0FsbFBhdXNlcyA6IDE7Ci0gICAgdW5zaWduZWQgbV9zdGVwcGluZ01v
ZGUgOiAxOyAvLyBTdGVwcGluZ01vZGUKKyAgICBTdGVwcGluZ01vZGUgbV9zdGVwcGluZ01vZGU7
CiAKICAgICBSZWFzb25Gb3JQYXVzZSBtX3JlYXNvbkZvclBhdXNlOwogICAgIEpTVmFsdWUgbV9j
dXJyZW50RXhjZXB0aW9uOwogICAgIENhbGxGcmFtZSogbV9wYXVzZU9uQ2FsbEZyYW1lIHsgbnVs
bHB0ciB9OwogICAgIENhbGxGcmFtZSogbV9jdXJyZW50Q2FsbEZyYW1lIHsgbnVsbHB0ciB9Owot
ICAgIHVuc2lnbmVkIG1fbGFzdEV4ZWN1dGVkTGluZTsKICAgICBTb3VyY2VJRCBtX2xhc3RFeGVj
dXRlZFNvdXJjZUlEOworICAgIFRleHRQb3NpdGlvbiBtX2xhc3RFeGVjdXRlZFBvc2l0aW9uOwog
ICAgIGJvb2wgbV9hZnRlckJsYWNrYm94ZWRTY3JpcHQgeyBmYWxzZSB9OwogCiAgICAgQnJlYWtw
b2ludElEIG1fdG9wQnJlYWtwb2ludElEOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvV29ya2Vycy9Gb3JtYXR0ZXIvSlNGb3JtYXR0ZXIuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Xb3JrZXJzL0Zvcm1hdHRlci9KU0Zvcm1h
dHRlci5qcwppbmRleCBmNzZiNjAyOGQ0ODIxMzQ4ODhmN2FjMTM3YTM3Mzk2NzJlMTBjYjAxLi5k
ZGQxZTkxNjY1MTdlMjRmZmYxYzI5ZGM5OWU4MWVmODQ3MDE5ZWM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Xb3JrZXJzL0Zvcm1hdHRlci9KU0Zvcm1h
dHRlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Xb3JrZXJz
L0Zvcm1hdHRlci9KU0Zvcm1hdHRlci5qcwpAQCAtMjAxLDE5ICsyMDEsMjYgQEAgSlNGb3JtYXR0
ZXIgPSBjbGFzcyBKU0Zvcm1hdHRlcgogCiAgICAgX2lzTGlrZWx5VG9IYXZlTmV3bGluZShub2Rl
KQogICAgIHsKLSAgICAgICAgbGV0IG5vZGVUeXBlID0gbm9kZS50eXBlOwotICAgICAgICByZXR1
cm4gbm9kZVR5cGUgPT09ICJJZlN0YXRlbWVudCIKLSAgICAgICAgICAgIHx8IG5vZGVUeXBlID09
PSAiRm9yU3RhdGVtZW50IgotICAgICAgICAgICAgfHwgbm9kZVR5cGUgPT09ICJGb3JPZlN0YXRl
bWVudCIKLSAgICAgICAgICAgIHx8IG5vZGVUeXBlID09PSAiRm9ySW5TdGF0ZW1lbnQiCi0gICAg
ICAgICAgICB8fCBub2RlVHlwZSA9PT0gIldoaWxlU3RhdGVtZW50IgotICAgICAgICAgICAgfHwg
bm9kZVR5cGUgPT09ICJEb1doaWxlU3RhdGVtZW50IgotICAgICAgICAgICAgfHwgbm9kZVR5cGUg
PT09ICJTd2l0Y2hTdGF0ZW1lbnQiCi0gICAgICAgICAgICB8fCBub2RlVHlwZSA9PT0gIlRyeVN0
YXRlbWVudCIKLSAgICAgICAgICAgIHx8IG5vZGVUeXBlID09PSAiRnVuY3Rpb25EZWNsYXJhdGlv
biIKLSAgICAgICAgICAgIHx8IG5vZGVUeXBlID09PSAiQ2xhc3NEZWNsYXJhdGlvbiIKLSAgICAg
ICAgICAgIHx8IG5vZGVUeXBlID09PSAiQmxvY2tTdGF0ZW1lbnQiCi0gICAgICAgICAgICB8fCBu
b2RlVHlwZSA9PT0gIldpdGhTdGF0ZW1lbnQiOworICAgICAgICBzd2l0Y2ggKG5vZGUudHlwZSkg
eworICAgICAgICBjYXNlICJCbG9ja1N0YXRlbWVudCI6CisgICAgICAgIGNhc2UgIkNsYXNzRGVj
bGFyYXRpb24iOgorICAgICAgICBjYXNlICJEb1doaWxlU3RhdGVtZW50IjoKKyAgICAgICAgY2Fz
ZSAiRm9ySW5TdGF0ZW1lbnQiOgorICAgICAgICBjYXNlICJGb3JPZlN0YXRlbWVudCI6CisgICAg
ICAgIGNhc2UgIkZvclN0YXRlbWVudCI6CisgICAgICAgIGNhc2UgIkZ1bmN0aW9uRGVjbGFyYXRp
b24iOgorICAgICAgICBjYXNlICJJZlN0YXRlbWVudCI6CisgICAgICAgIGNhc2UgIlN3aXRjaFN0
YXRlbWVudCI6CisgICAgICAgIGNhc2UgIlRyeVN0YXRlbWVudCI6CisgICAgICAgIGNhc2UgIldo
aWxlU3RhdGVtZW50IjoKKyAgICAgICAgY2FzZSAiV2l0aFN0YXRlbWVudCI6CisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKworICAgICAgICBjYXNlICJFeHByZXNzaW9uU3RhdGVtZW50IjoKKyAg
ICAgICAgICAgIHJldHVybiBub2RlLmV4cHJlc3Npb24udHlwZSA9PT0gIlNlcXVlbmNlRXhwcmVz
c2lvbiI7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAg
X2lzUmFuZ2VXaGl0ZXNwYWNlKGZyb20sIHRvKQpAQCAtMjg1LDcgKzI5Miw3IEBAIEpTRm9ybWF0
dGVyID0gY2xhc3MgSlNGb3JtYXR0ZXIKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
Ci0gICAgICAgIGlmIChub2RlVHlwZSA9PT0gIkNhbGxFeHByZXNzaW9uIiB8fCBub2RlVHlwZSA9
PT0gIkFycmF5RXhwcmVzc2lvbiIgfHwgbm9kZVR5cGUgPT09ICJBcnJheVBhdHRlcm4iIHx8IG5v
ZGVUeXBlID09PSAiT2JqZWN0UGF0dGVybiIgfHwgbm9kZVR5cGUgPT09ICJTZXF1ZW5jZUV4cHJl
c3Npb24iKSB7CisgICAgICAgIGlmIChub2RlVHlwZSA9PT0gIkNhbGxFeHByZXNzaW9uIiB8fCBu
b2RlVHlwZSA9PT0gIkFycmF5RXhwcmVzc2lvbiIgfHwgbm9kZVR5cGUgPT09ICJBcnJheVBhdHRl
cm4iIHx8IG5vZGVUeXBlID09PSAiT2JqZWN0UGF0dGVybiIpIHsKICAgICAgICAgICAgIGlmICh0
b2tlblZhbHVlID09PSAiLCIpIHsKICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZFRva2Vu
KHRva2VuVmFsdWUsIHRva2VuT2Zmc2V0KTsKICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZFNwYWNlKCk7CkBAIC0yOTUsNiArMzAyLDE3IEBAIEpTRm9ybWF0dGVyID0gY2xhc3MgSlNGb3Jt
YXR0ZXIKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCisgICAgICAgIGlmIChub2Rl
VHlwZSA9PT0gIlNlcXVlbmNlRXhwcmVzc2lvbiIpIHsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kVG9rZW4odG9rZW5WYWx1ZSwgdG9rZW5PZmZzZXQpOworICAgICAgICAgICAgaWYgKHRva2Vu
VmFsdWUgPT09ICIsIikgeworICAgICAgICAgICAgICAgIGlmIChub2RlLnBhcmVudC50eXBlID09
PSAiRXhwcmVzc2lvblN0YXRlbWVudCIpCisgICAgICAgICAgICAgICAgICAgIHRoaXMuX2FwcGVu
ZE5ld2xpbmUobm9kZSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZFNwYWNlKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKwogICAgICAgICBpZiAobm9kZVR5cGUgPT09ICJMb2dpY2FsRXhwcmVz
c2lvbiIgfHwgbm9kZVR5cGUgPT09ICJCaW5hcnlFeHByZXNzaW9uIikgewogICAgICAgICAgICAg
aWYgKHRva2VuVmFsdWUgIT09ICIoIiAmJiB0b2tlblZhbHVlICE9PSAiKSIpIHsKICAgICAgICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZFNwYWNlKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggM2I2YjRhYTljYzM2NmUwN2Fl
MzNkOTRkNmQwZDAxMGE3YTg2YWNlOS4uNGFmZmI5NmE3ZjlhM2Y0Yjg2MjFiMDk1MzFmODg2Yzk1
MDc5MjU4MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIwLTA0LTAzICBEZXZpbiBSb3Vzc28g
IDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBEZWJ1Z2dlcjog
dHJlYXQgY29tbWEgc3ViLWV4cHJlc3Npb25zIGFzIHNlcGFyYXRlIHN0YXRlbWVudHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTk5OAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL2Rl
YnVnZ2VyL3N0ZXBwaW5nL3N0ZXBPdmVyLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVn
Z2VyL3N0ZXBwaW5nL3N0ZXBPdmVyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZGVidWdnZXIvc3RlcHBpbmcvc3RlcHBpbmctZnVuY3Rpb24tY2FsbHMuaHRtbDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcvc3RlcHBpbmctZnVuY3Rpb24tY2FsbHMtZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9zdGVwcGluZy9zdGVwcGlu
Zy1taXNjLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL3N0ZXBwaW5nL3N0ZXBw
aW5nLW1pc2MtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9mb3JtYXR0aW5nL3Jl
c291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL3NhbXBsZS1qcXVlcnktZXhwZWN0ZWQuanM6CisKIDIw
MjAtMDQtMDMgIFRydWl0dCBTYXZlbGwgIDx0c2F2ZWxsQGFwcGxlLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkLCByZXZlcnRpbmcgcjI1OTQ0MC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9kZWJ1Z2dlci9zdGVwcGluZy9zdGVwT3Zlci1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcvc3RlcE92ZXItZXhwZWN0ZWQudHh0Cmlu
ZGV4IGY1M2FhZjBjMzNjZGI3NDc1MDk2MzRmMGQyYTM2YzNmNDVkNThjYTUuLjg3ODdiMmQzNDBm
Y2Y0Y2EwNWI1N2NlZmZhOWNjYzZmZTY2OWQ3NjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9kZWJ1Z2dlci9zdGVwcGluZy9zdGVwT3Zlci1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3N0ZXBwaW5nL3N0ZXBPdmVyLWV4cGVjdGVkLnR4
dApAQCAtMSwxMTkgKzEsMTIyIEBACi1BTEVSVDogbG9nIDEKK0FMRVJUOiBmdW5jdGlvbiBsb2cg
MQorQUxFUlQ6IGNvbW1hIGxvZyAxCitBTEVSVDogY29tbWEgbG9nIDIKK0FMRVJUOiBjb21tYSBs
b2cgMwogQ2hlY2tpbmcgcGF1c2UgbG9jYXRpb25zIHdoZW4gc3RlcHBpbmcgd2l0aCAic3RlcE92
ZXIiLgogCiAKID09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogRGVidWdnZXIuc3RlcE92ZXIKIC0tIFJ1
bm5pbmcgdGVzdCBjYXNlOiBEZWJ1Z2dlci5zdGVwT3Zlci5zdGF0ZW1lbnRzCiBQQVVTRUQgKGRl
YnVnZ2VyLXN0YXRlbWVudCkKLVBBVVNFIEFUIGVudHJ5MToxMjo1CitQQVVTRSBBVCB0ZXN0U3Rh
dGVtZW50czoxMjo1CiAgICAgICA4ICAgIH0KICAgICAgIDkgICAgCi0gICAgIDEwICAgIGZ1bmN0
aW9uIGVudHJ5MSgpIHsKKyAgICAgMTAgICAgZnVuY3Rpb24gdGVzdFN0YXRlbWVudHMoKSB7CiAg
LT4gIDExICAgICAgICB8ZGVidWdnZXI7CiAgICAgIDEyICAgICAgICBsZXQgeCA9IDE7CiAgICAg
IDEzICAgICAgICBsZXQgeSA9IDI7CiAgICAgIDE0ICAgIH0KIAotUEFVU0UgQVQgZW50cnkxOjEz
OjUKK1BBVVNFIEFUIHRlc3RTdGF0ZW1lbnRzOjEzOjUKICAgICAgIDkgICAgCi0gICAgIDEwICAg
IGZ1bmN0aW9uIGVudHJ5MSgpIHsKKyAgICAgMTAgICAgZnVuY3Rpb24gdGVzdFN0YXRlbWVudHMo
KSB7CiAgICAgIDExICAgICAgICBkZWJ1Z2dlcjsKICAtPiAgMTIgICAgICAgIHxsZXQgeCA9IDE7
CiAgICAgIDEzICAgICAgICBsZXQgeSA9IDI7CiAgICAgIDE0ICAgIH0KICAgICAgMTUgICAgCiAK
LVBBVVNFIEFUIGVudHJ5MToxNDo1Ci0gICAgIDEwICAgIGZ1bmN0aW9uIGVudHJ5MSgpIHsKK1BB
VVNFIEFUIHRlc3RTdGF0ZW1lbnRzOjE0OjUKKyAgICAgMTAgICAgZnVuY3Rpb24gdGVzdFN0YXRl
bWVudHMoKSB7CiAgICAgIDExICAgICAgICBkZWJ1Z2dlcjsKICAgICAgMTIgICAgICAgIGxldCB4
ID0gMTsKICAtPiAgMTMgICAgICAgIHxsZXQgeSA9IDI7CiAgICAgIDE0ICAgIH0KICAgICAgMTUg
ICAgCi0gICAgIDE2ICAgIGZ1bmN0aW9uIGVudHJ5MigpIHsKKyAgICAgMTYgICAgZnVuY3Rpb24g
dGVzdEZ1bmN0aW9ucygpIHsKIAotUEFVU0UgQVQgZW50cnkxOjE1OjIKK1BBVVNFIEFUIHRlc3RT
dGF0ZW1lbnRzOjE1OjIKICAgICAgMTEgICAgICAgIGRlYnVnZ2VyOwogICAgICAxMiAgICAgICAg
bGV0IHggPSAxOwogICAgICAxMyAgICAgICAgbGV0IHkgPSAyOwogIC0+ICAxNCAgICB9fAogICAg
ICAxNSAgICAKLSAgICAgMTYgICAgZnVuY3Rpb24gZW50cnkyKCkgeworICAgICAxNiAgICBmdW5j
dGlvbiB0ZXN0RnVuY3Rpb25zKCkgewogICAgICAxNyAgICAgICAgZGVidWdnZXI7CiAKIFJFU1VN
RUQKIAogLS0gUnVubmluZyB0ZXN0IGNhc2U6IERlYnVnZ2VyLnN0ZXBPdmVyLmZ1bmN0aW9uCiBQ
QVVTRUQgKGRlYnVnZ2VyLXN0YXRlbWVudCkKLVBBVVNFIEFUIGVudHJ5MjoxODo1CitQQVVTRSBB
VCB0ZXN0RnVuY3Rpb25zOjE4OjUKICAgICAgMTQgICAgfQogICAgICAxNSAgICAKLSAgICAgMTYg
ICAgZnVuY3Rpb24gZW50cnkyKCkgeworICAgICAxNiAgICBmdW5jdGlvbiB0ZXN0RnVuY3Rpb25z
KCkgewogIC0+ICAxNyAgICAgICAgfGRlYnVnZ2VyOwogICAgICAxOCAgICAgICAgbGV0IGJlZm9y
ZSA9IDE7Ci0gICAgIDE5ICAgICAgICB0ZXN0QWxlcnQoImxvZyAxIik7CisgICAgIDE5ICAgICAg
ICB0ZXN0QWxlcnQoImZ1bmN0aW9uIGxvZyAxIik7CiAgICAgIDIwICAgICAgICBsZXQgYWZ0ZXIg
PSAyOwogCi1QQVVTRSBBVCBlbnRyeTI6MTk6NQorUEFVU0UgQVQgdGVzdEZ1bmN0aW9uczoxOTo1
CiAgICAgIDE1ICAgIAotICAgICAxNiAgICBmdW5jdGlvbiBlbnRyeTIoKSB7CisgICAgIDE2ICAg
IGZ1bmN0aW9uIHRlc3RGdW5jdGlvbnMoKSB7CiAgICAgIDE3ICAgICAgICBkZWJ1Z2dlcjsKICAt
PiAgMTggICAgICAgIHxsZXQgYmVmb3JlID0gMTsKLSAgICAgMTkgICAgICAgIHRlc3RBbGVydCgi
bG9nIDEiKTsKKyAgICAgMTkgICAgICAgIHRlc3RBbGVydCgiZnVuY3Rpb24gbG9nIDEiKTsKICAg
ICAgMjAgICAgICAgIGxldCBhZnRlciA9IDI7CiAgICAgIDIxICAgIH0KIAotUEFVU0UgQVQgZW50
cnkyOjIwOjUKLSAgICAgMTYgICAgZnVuY3Rpb24gZW50cnkyKCkgeworUEFVU0UgQVQgdGVzdEZ1
bmN0aW9uczoyMDo1CisgICAgIDE2ICAgIGZ1bmN0aW9uIHRlc3RGdW5jdGlvbnMoKSB7CiAgICAg
IDE3ICAgICAgICBkZWJ1Z2dlcjsKICAgICAgMTggICAgICAgIGxldCBiZWZvcmUgPSAxOwotIC0+
ICAxOSAgICAgICAgfHRlc3RBbGVydCgibG9nIDEiKTsKKyAtPiAgMTkgICAgICAgIHx0ZXN0QWxl
cnQoImZ1bmN0aW9uIGxvZyAxIik7CiAgICAgIDIwICAgICAgICBsZXQgYWZ0ZXIgPSAyOwogICAg
ICAyMSAgICB9CiAgICAgIDIyICAgIAogCi1QQVVTRSBBVCBlbnRyeTI6MjE6NQorUEFVU0UgQVQg
dGVzdEZ1bmN0aW9uczoyMTo1CiAgICAgIDE3ICAgICAgICBkZWJ1Z2dlcjsKICAgICAgMTggICAg
ICAgIGxldCBiZWZvcmUgPSAxOwotICAgICAxOSAgICAgICAgdGVzdEFsZXJ0KCJsb2cgMSIpOwor
ICAgICAxOSAgICAgICAgdGVzdEFsZXJ0KCJmdW5jdGlvbiBsb2cgMSIpOwogIC0+ICAyMCAgICAg
ICAgfGxldCBhZnRlciA9IDI7CiAgICAgIDIxICAgIH0KICAgICAgMjIgICAgCi0gICAgIDIzICAg
IGZ1bmN0aW9uIGVudHJ5MygpIHsKKyAgICAgMjMgICAgZnVuY3Rpb24gdGVzdEV2YWwoKSB7CiAK
LVBBVVNFIEFUIGVudHJ5MjoyMjoyCitQQVVTRSBBVCB0ZXN0RnVuY3Rpb25zOjIyOjIKICAgICAg
MTggICAgICAgIGxldCBiZWZvcmUgPSAxOwotICAgICAxOSAgICAgICAgdGVzdEFsZXJ0KCJsb2cg
MSIpOworICAgICAxOSAgICAgICAgdGVzdEFsZXJ0KCJmdW5jdGlvbiBsb2cgMSIpOwogICAgICAy
MCAgICAgICAgbGV0IGFmdGVyID0gMjsKICAtPiAgMjEgICAgfXwKICAgICAgMjIgICAgCi0gICAg
IDIzICAgIGZ1bmN0aW9uIGVudHJ5MygpIHsKKyAgICAgMjMgICAgZnVuY3Rpb24gdGVzdEV2YWwo
KSB7CiAgICAgIDI0ICAgICAgICBkZWJ1Z2dlcjsKIAogUkVTVU1FRAogCiAtLSBSdW5uaW5nIHRl
c3QgY2FzZTogRGVidWdnZXIuc3RlcE92ZXIuZXZhbAogUEFVU0VEIChkZWJ1Z2dlci1zdGF0ZW1l
bnQpCi1QQVVTRSBBVCBlbnRyeTM6MjU6NQorUEFVU0UgQVQgdGVzdEV2YWw6MjU6NQogICAgICAy
MSAgICB9CiAgICAgIDIyICAgIAotICAgICAyMyAgICBmdW5jdGlvbiBlbnRyeTMoKSB7CisgICAg
IDIzICAgIGZ1bmN0aW9uIHRlc3RFdmFsKCkgewogIC0+ICAyNCAgICAgICAgfGRlYnVnZ2VyOwog
ICAgICAyNSAgICAgICAgbGV0IGJlZm9yZSA9IDE7CiAgICAgIDI2ICAgICAgICBldmFsKCIxICsg
MSIpOwogICAgICAyNyAgICAgICAgbGV0IGFmdGVyID0gMjsKIAotUEFVU0UgQVQgZW50cnkzOjI2
OjUKK1BBVVNFIEFUIHRlc3RFdmFsOjI2OjUKICAgICAgMjIgICAgCi0gICAgIDIzICAgIGZ1bmN0
aW9uIGVudHJ5MygpIHsKKyAgICAgMjMgICAgZnVuY3Rpb24gdGVzdEV2YWwoKSB7CiAgICAgIDI0
ICAgICAgICBkZWJ1Z2dlcjsKICAtPiAgMjUgICAgICAgIHxsZXQgYmVmb3JlID0gMTsKICAgICAg
MjYgICAgICAgIGV2YWwoIjEgKyAxIik7CiAgICAgIDI3ICAgICAgICBsZXQgYWZ0ZXIgPSAyOwog
ICAgICAyOCAgICB9CiAKLVBBVVNFIEFUIGVudHJ5MzoyNzo1Ci0gICAgIDIzICAgIGZ1bmN0aW9u
IGVudHJ5MygpIHsKK1BBVVNFIEFUIHRlc3RFdmFsOjI3OjUKKyAgICAgMjMgICAgZnVuY3Rpb24g
dGVzdEV2YWwoKSB7CiAgICAgIDI0ICAgICAgICBkZWJ1Z2dlcjsKICAgICAgMjUgICAgICAgIGxl
dCBiZWZvcmUgPSAxOwogIC0+ICAyNiAgICAgICAgfGV2YWwoIjEgKyAxIik7CkBAIC0xMjEsMjIg
KzEyNCwyMiBAQCBQQVVTRSBBVCBlbnRyeTM6Mjc6NQogICAgICAyOCAgICB9CiAgICAgIDI5ICAg
IAogCi1QQVVTRSBBVCBlbnRyeTM6Mjg6NQorUEFVU0UgQVQgdGVzdEV2YWw6Mjg6NQogICAgICAy
NCAgICAgICAgZGVidWdnZXI7CiAgICAgIDI1ICAgICAgICBsZXQgYmVmb3JlID0gMTsKICAgICAg
MjYgICAgICAgIGV2YWwoIjEgKyAxIik7CiAgLT4gIDI3ICAgICAgICB8bGV0IGFmdGVyID0gMjsK
ICAgICAgMjggICAgfQogICAgICAyOSAgICAKLSAgICAgMzAgICAgZnVuY3Rpb24gZW50cnk0KCkg
eworICAgICAzMCAgICBmdW5jdGlvbiB0ZXN0TG9jYWxGdW5jdGlvbigpIHsKIAotUEFVU0UgQVQg
ZW50cnkzOjI5OjIKK1BBVVNFIEFUIHRlc3RFdmFsOjI5OjIKICAgICAgMjUgICAgICAgIGxldCBi
ZWZvcmUgPSAxOwogICAgICAyNiAgICAgICAgZXZhbCgiMSArIDEiKTsKICAgICAgMjcgICAgICAg
IGxldCBhZnRlciA9IDI7CiAgLT4gIDI4ICAgIH18CiAgICAgIDI5ICAgIAotICAgICAzMCAgICBm
dW5jdGlvbiBlbnRyeTQoKSB7CisgICAgIDMwICAgIGZ1bmN0aW9uIHRlc3RMb2NhbEZ1bmN0aW9u
KCkgewogICAgICAzMSAgICAgICAgKGZ1bmN0aW9uKCkgewogCiBSRVNVTUVECkBAIC0xNDUsNyAr
MTQ4LDcgQEAgUkVTVU1FRAogUEFVU0VEIChkZWJ1Z2dlci1zdGF0ZW1lbnQpCiBQQVVTRSBBVCA8
YW5vbnltb3VzPjozMzo5CiAgICAgIDI5ICAgIAotICAgICAzMCAgICBmdW5jdGlvbiBlbnRyeTQo
KSB7CisgICAgIDMwICAgIGZ1bmN0aW9uIHRlc3RMb2NhbEZ1bmN0aW9uKCkgewogICAgICAzMSAg
ICAgICAgKGZ1bmN0aW9uKCkgewogIC0+ICAzMiAgICAgICAgICAgIHxkZWJ1Z2dlcjsKICAgICAg
MzMgICAgICAgICAgICBsZXQgaW5uZXIgPSAxOwpAQCAtMTUzLDcgKzE1Niw3IEBAIFBBVVNFIEFU
IDxhbm9ueW1vdXM+OjMzOjkKICAgICAgMzUgICAgICAgIGxldCBvdXRlciA9IDI7CiAKIFBBVVNF
IEFUIDxhbm9ueW1vdXM+OjM0OjkKLSAgICAgMzAgICAgZnVuY3Rpb24gZW50cnk0KCkgeworICAg
ICAzMCAgICBmdW5jdGlvbiB0ZXN0TG9jYWxGdW5jdGlvbigpIHsKICAgICAgMzEgICAgICAgIChm
dW5jdGlvbigpIHsKICAgICAgMzIgICAgICAgICAgICBkZWJ1Z2dlcjsKICAtPiAgMzMgICAgICAg
ICAgICB8bGV0IGlubmVyID0gMTsKQEAgLTE3MCwyMyArMTczLDk5IEBAIFBBVVNFIEFUIDxhbm9u
eW1vdXM+OjM1OjYKICAgICAgMzYgICAgfQogICAgICAzNyAgICAKIAotUEFVU0UgQVQgZW50cnk0
OjM2OjUKK1BBVVNFIEFUIHRlc3RMb2NhbEZ1bmN0aW9uOjM2OjUKICAgICAgMzIgICAgICAgICAg
ICBkZWJ1Z2dlcjsKICAgICAgMzMgICAgICAgICAgICBsZXQgaW5uZXIgPSAxOwogICAgICAzNCAg
ICAgICAgfSkoKTsKICAtPiAgMzUgICAgICAgIHxsZXQgb3V0ZXIgPSAyOwogICAgICAzNiAgICB9
CiAgICAgIDM3ICAgIAotICAgICAzOCAgICAvLyAtLS0tLS0tLS0KKyAgICAgMzggICAgZnVuY3Rp
b24gdGVzdENvbW1hcygpIHsKIAotUEFVU0UgQVQgZW50cnk0OjM3OjIKK1BBVVNFIEFUIHRlc3RM
b2NhbEZ1bmN0aW9uOjM3OjIKICAgICAgMzMgICAgICAgICAgICBsZXQgaW5uZXIgPSAxOwogICAg
ICAzNCAgICAgICAgfSkoKTsKICAgICAgMzUgICAgICAgIGxldCBvdXRlciA9IDI7CiAgLT4gIDM2
ICAgIH18CiAgICAgIDM3ICAgIAotICAgICAzOCAgICAvLyAtLS0tLS0tLS0KLSAgICAgMzkgICAg
CisgICAgIDM4ICAgIGZ1bmN0aW9uIHRlc3RDb21tYXMoKSB7CisgICAgIDM5ICAgICAgICBkZWJ1
Z2dlcjsKKworUkVTVU1FRAorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRGVidWdnZXIuc3RlcE92
ZXIuY29tbWFzCitQQVVTRUQgKGRlYnVnZ2VyLXN0YXRlbWVudCkKK1BBVVNFIEFUIHRlc3RDb21t
YXM6NDA6NQorICAgICAzNiAgICB9CisgICAgIDM3ICAgIAorICAgICAzOCAgICBmdW5jdGlvbiB0
ZXN0Q29tbWFzKCkgeworIC0+ICAzOSAgICAgICAgfGRlYnVnZ2VyOworICAgICA0MCAgICAgICAg
bGV0IGEgPSAxLAorICAgICA0MSAgICAgICAgICAgIGIgPSAyLAorICAgICA0MiAgICAgICAgICAg
IGMgPSAzOworCitQQVVTRSBBVCB0ZXN0Q29tbWFzOjQxOjUKKyAgICAgMzcgICAgCisgICAgIDM4
ICAgIGZ1bmN0aW9uIHRlc3RDb21tYXMoKSB7CisgICAgIDM5ICAgICAgICBkZWJ1Z2dlcjsKKyAt
PiAgNDAgICAgICAgIHxsZXQgYSA9IDEsCisgICAgIDQxICAgICAgICAgICAgYiA9IDIsCisgICAg
IDQyICAgICAgICAgICAgYyA9IDM7CisgICAgIDQzICAgICAgICB0ZXN0QWxlcnQoImNvbW1hIGxv
ZyAxIiksIHRlc3RBbGVydCgiY29tbWEgbG9nIDIiKSwgdGVzdEFsZXJ0KCJjb21tYSBsb2cgMyIp
OworCitQQVVTRSBBVCB0ZXN0Q29tbWFzOjQxOjE0CisgICAgIDM3ICAgIAorICAgICAzOCAgICBm
dW5jdGlvbiB0ZXN0Q29tbWFzKCkgeworICAgICAzOSAgICAgICAgZGVidWdnZXI7CisgLT4gIDQw
ICAgICAgICBsZXQgYSA9IDF8LAorICAgICA0MSAgICAgICAgICAgIGIgPSAyLAorICAgICA0MiAg
ICAgICAgICAgIGMgPSAzOworICAgICA0MyAgICAgICAgdGVzdEFsZXJ0KCJjb21tYSBsb2cgMSIp
LCB0ZXN0QWxlcnQoImNvbW1hIGxvZyAyIiksIHRlc3RBbGVydCgiY29tbWEgbG9nIDMiKTsKKwor
UEFVU0UgQVQgdGVzdENvbW1hczo0MjoxNAorICAgICAzOCAgICBmdW5jdGlvbiB0ZXN0Q29tbWFz
KCkgeworICAgICAzOSAgICAgICAgZGVidWdnZXI7CisgICAgIDQwICAgICAgICBsZXQgYSA9IDEs
CisgLT4gIDQxICAgICAgICAgICAgYiA9IDJ8LAorICAgICA0MiAgICAgICAgICAgIGMgPSAzOwor
ICAgICA0MyAgICAgICAgdGVzdEFsZXJ0KCJjb21tYSBsb2cgMSIpLCB0ZXN0QWxlcnQoImNvbW1h
IGxvZyAyIiksIHRlc3RBbGVydCgiY29tbWEgbG9nIDMiKTsKKyAgICAgNDQgICAgfQorCitQQVVT
RSBBVCB0ZXN0Q29tbWFzOjQ0OjUKKyAgICAgNDAgICAgICAgIGxldCBhID0gMSwKKyAgICAgNDEg
ICAgICAgICAgICBiID0gMiwKKyAgICAgNDIgICAgICAgICAgICBjID0gMzsKKyAtPiAgNDMgICAg
ICAgIHx0ZXN0QWxlcnQoImNvbW1hIGxvZyAxIiksIHRlc3RBbGVydCgiY29tbWEgbG9nIDIiKSwg
dGVzdEFsZXJ0KCJjb21tYSBsb2cgMyIpOworICAgICA0NCAgICB9CisgICAgIDQ1ICAgIAorICAg
ICA0NiAgICAvLyAtLS0tLS0tLS0KKworUEFVU0UgQVQgdGVzdENvbW1hczo0NDozMQorICAgICA0
MCAgICAgICAgbGV0IGEgPSAxLAorICAgICA0MSAgICAgICAgICAgIGIgPSAyLAorICAgICA0MiAg
ICAgICAgICAgIGMgPSAzOworIC0+ICA0MyAgICAgICAgdGVzdEFsZXJ0KCJjb21tYSBsb2cgMSIp
LCB8dGVzdEFsZXJ0KCJjb21tYSBsb2cgMiIpLCB0ZXN0QWxlcnQoImNvbW1hIGxvZyAzIik7Cisg
ICAgIDQ0ICAgIH0KKyAgICAgNDUgICAgCisgICAgIDQ2ICAgIC8vIC0tLS0tLS0tLQorCitQQVVT
RSBBVCB0ZXN0Q29tbWFzOjQ0OjU3CisgICAgIDQwICAgICAgICBsZXQgYSA9IDEsCisgICAgIDQx
ICAgICAgICAgICAgYiA9IDIsCisgICAgIDQyICAgICAgICAgICAgYyA9IDM7CisgLT4gIDQzICAg
ICAgICB0ZXN0QWxlcnQoImNvbW1hIGxvZyAxIiksIHRlc3RBbGVydCgiY29tbWEgbG9nIDIiKSwg
fHRlc3RBbGVydCgiY29tbWEgbG9nIDMiKTsKKyAgICAgNDQgICAgfQorICAgICA0NSAgICAKKyAg
ICAgNDYgICAgLy8gLS0tLS0tLS0tCisKK1BBVVNFIEFUIHRlc3RDb21tYXM6NDU6MgorICAgICA0
MSAgICAgICAgICAgIGIgPSAyLAorICAgICA0MiAgICAgICAgICAgIGMgPSAzOworICAgICA0MyAg
ICAgICAgdGVzdEFsZXJ0KCJjb21tYSBsb2cgMSIpLCB0ZXN0QWxlcnQoImNvbW1hIGxvZyAyIiks
IHRlc3RBbGVydCgiY29tbWEgbG9nIDMiKTsKKyAtPiAgNDQgICAgfXwKKyAgICAgNDUgICAgCisg
ICAgIDQ2ICAgIC8vIC0tLS0tLS0tLQorICAgICA0NyAgICAKIAogUkVTVU1FRAogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcvc3RlcE92ZXIuaHRt
bCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zdGVwcGluZy9zdGVwT3Zlci5odG1s
CmluZGV4IDZiOTQ5MjNiMGNlNTNhMjIxM2Y2MGNjYjQ3NGI0ZDA4M2Y2NTI4ZTUuLjMyNWI3N2Vj
ZjNjY2NhMjRhN2RmNmEyNzU1YTFjNWZmMTI3YjU5ZDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9kZWJ1Z2dlci9zdGVwcGluZy9zdGVwT3Zlci5odG1sCisrKyBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zdGVwcGluZy9zdGVwT3Zlci5odG1sCkBAIC04LDI3ICs4
LDI3IEBAIGZ1bmN0aW9uIHRlc3RBbGVydChzdHIpIHsKICAgICBhbGVydChzdHIpOwogfQogCi1m
dW5jdGlvbiBlbnRyeTEoKSB7CitmdW5jdGlvbiB0ZXN0U3RhdGVtZW50cygpIHsKICAgICBkZWJ1
Z2dlcjsKICAgICBsZXQgeCA9IDE7CiAgICAgbGV0IHkgPSAyOwogfQogCi1mdW5jdGlvbiBlbnRy
eTIoKSB7CitmdW5jdGlvbiB0ZXN0RnVuY3Rpb25zKCkgewogICAgIGRlYnVnZ2VyOwogICAgIGxl
dCBiZWZvcmUgPSAxOwotICAgIHRlc3RBbGVydCgibG9nIDEiKTsKKyAgICB0ZXN0QWxlcnQoImZ1
bmN0aW9uIGxvZyAxIik7CiAgICAgbGV0IGFmdGVyID0gMjsKIH0KIAotZnVuY3Rpb24gZW50cnkz
KCkgeworZnVuY3Rpb24gdGVzdEV2YWwoKSB7CiAgICAgZGVidWdnZXI7CiAgICAgbGV0IGJlZm9y
ZSA9IDE7CiAgICAgZXZhbCgiMSArIDEiKTsKICAgICBsZXQgYWZ0ZXIgPSAyOwogfQogCi1mdW5j
dGlvbiBlbnRyeTQoKSB7CitmdW5jdGlvbiB0ZXN0TG9jYWxGdW5jdGlvbigpIHsKICAgICAoZnVu
Y3Rpb24oKSB7CiAgICAgICAgIGRlYnVnZ2VyOwogICAgICAgICBsZXQgaW5uZXIgPSAxOwpAQCAt
MzYsNiArMzYsMTQgQEAgZnVuY3Rpb24gZW50cnk0KCkgewogICAgIGxldCBvdXRlciA9IDI7CiB9
CiAKK2Z1bmN0aW9uIHRlc3RDb21tYXMoKSB7CisgICAgZGVidWdnZXI7CisgICAgbGV0IGEgPSAx
LAorICAgICAgICBiID0gMiwKKyAgICAgICAgYyA9IDM7CisgICAgdGVzdEFsZXJ0KCJjb21tYSBs
b2cgMSIpLCB0ZXN0QWxlcnQoImNvbW1hIGxvZyAyIiksIHRlc3RBbGVydCgiY29tbWEgbG9nIDMi
KTsKK30KKwogLy8gLS0tLS0tLS0tCiAKIGZ1bmN0aW9uIHRlc3QoKQpAQCAtNjksMjUgKzc3LDMx
IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgIGFkZFRlc3RDYXNlKHsKICAgICAgICAgbmFtZTogIkRl
YnVnZ2VyLnN0ZXBPdmVyLnN0YXRlbWVudHMiLAogICAgICAgICBkZXNjcmlwdGlvbjogInN0ZXAt
b3ZlciBzaG91bGQgc3RlcCBvdmVyIHN0YXRlbWVudHMuIiwKLSAgICAgICAgZXhwcmVzc2lvbjog
InNldFRpbWVvdXQoZW50cnkxKSIsCisgICAgICAgIGV4cHJlc3Npb246ICJzZXRUaW1lb3V0KHRl
c3RTdGF0ZW1lbnRzKSIsCiAgICAgfSk7CiAKICAgICBhZGRUZXN0Q2FzZSh7CiAgICAgICAgIG5h
bWU6ICJEZWJ1Z2dlci5zdGVwT3Zlci5mdW5jdGlvbiIsCiAgICAgICAgIGRlc2NyaXB0aW9uOiAi
c3RlcC1vdmVyIHNob3VsZCBzdGVwIG92ZXIgZnVuY3Rpb24gY2FsbHMuIiwKLSAgICAgICAgZXhw
cmVzc2lvbjogInNldFRpbWVvdXQoZW50cnkyKSIsCisgICAgICAgIGV4cHJlc3Npb246ICJzZXRU
aW1lb3V0KHRlc3RGdW5jdGlvbnMpIiwKICAgICB9KTsKIAogICAgIGFkZFRlc3RDYXNlKHsKICAg
ICAgICAgbmFtZTogIkRlYnVnZ2VyLnN0ZXBPdmVyLmV2YWwiLAogICAgICAgICBkZXNjcmlwdGlv
bjogInN0ZXAtb3ZlciBzaG91bGQgc3RlcCBvdmVyIGFuIGV2YWwgcHJvZ3JhbS4iLAotICAgICAg
ICBleHByZXNzaW9uOiAic2V0VGltZW91dChlbnRyeTMpIiwKKyAgICAgICAgZXhwcmVzc2lvbjog
InNldFRpbWVvdXQodGVzdEV2YWwpIiwKICAgICB9KTsKIAogICAgIGFkZFRlc3RDYXNlKHsKICAg
ICAgICAgbmFtZTogIkRlYnVnZ2VyLnN0ZXBPdmVyLmlubmVyRnVuY3Rpb24iLAogICAgICAgICBk
ZXNjcmlwdGlvbjogInN0ZXAtb3ZlciBzaG91bGQgc3RlcCBvdXQgb2YgYSBmdW5jdGlvbiB0byBp
dHMgY2FsbGVyLiIsCi0gICAgICAgIGV4cHJlc3Npb246ICJzZXRUaW1lb3V0KGVudHJ5NCkiLAor
ICAgICAgICBleHByZXNzaW9uOiAic2V0VGltZW91dCh0ZXN0TG9jYWxGdW5jdGlvbikiLAorICAg
IH0pOworCisgICAgYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiRGVidWdnZXIuc3RlcE92
ZXIuY29tbWFzIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJzdGVwLW92ZXIgc2hvdWxkIHN0ZXAg
b3ZlciBjb21tYSBleHByZXNzaW9ucywgdHJlYXRpbmcgdGhlbSBhcyBzdGF0ZW1lbnRzLiIsCisg
ICAgICAgIGV4cHJlc3Npb246ICJzZXRUaW1lb3V0KHRlc3RDb21tYXMpIiwKICAgICB9KTsKIAog
ICAgIGxvYWRNYWluUGFnZUNvbnRlbnQoKS50aGVuKCgpID0+IHsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zdGVwcGluZy9zdGVwcGluZy1mdW5jdGlvbi1jYWxs
cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcv
c3RlcHBpbmctZnVuY3Rpb24tY2FsbHMtZXhwZWN0ZWQudHh0CmluZGV4IGRmZDdkNDY5Y2RjN2I4
Mjg4ZDViMzJmNTAyOTkxOThhYjVhMWM2YWEuLmM4OWE2YTdjZTU3ODVlYTI2YjQxNTljZTE2N2Y5
MmQxOWNkZDUyMWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9z
dGVwcGluZy9zdGVwcGluZy1mdW5jdGlvbi1jYWxscy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3N0ZXBwaW5nL3N0ZXBwaW5nLWZ1bmN0aW9uLWNhbGxz
LWV4cGVjdGVkLnR4dApAQCAtOTc1LDcgKzk3NSw3IEBAIFBBU1M6IFNob3VsZCBoYXZlIHVzZWQg
YWxsIHN0ZXBzLgogCiAtLSBSdW5uaW5nIHRlc3QgY2FzZTogRGVidWdnZXIuc3RlcHBpbmcuQ29t
cGxleFN0YXRlbWVudDQKIEVYUFJFU1NJT046IHNldFRpbWVvdXQoZW50cnlDb21tYUV4cHJlc3Np
b24pCi1TVEVQUzogb3Zlciwgb3ZlciwgcmVzdW1lCitTVEVQUzogb3Zlciwgb3Zlciwgb3Zlciwg
b3ZlciwgcmVzdW1lCiBQQVVTRUQgKGRlYnVnZ2VyLXN0YXRlbWVudCkKIFBBVVNFIEFUIGVudHJ5
Q29tbWFFeHByZXNzaW9uOjUxOjUKICAgICAgNDcgICAgfQpAQCAtOTk2LDYgKzk5NiwyNiBAQCBQ
QVVTRSBBVCBlbnRyeUNvbW1hRXhwcmVzc2lvbjo1Mjo1CiAgICAgIDUzICAgIAogICAgICA1NCAg
ICBmdW5jdGlvbiBlbnRyeURvdFByb3BlcnR5QWNjZXNzQ2FsbCgpIHsKIAorQUNUSU9OOiBzdGVw
LW92ZXIKK1BBVVNFIEFUIGVudHJ5Q29tbWFFeHByZXNzaW9uOjUyOjEwCisgICAgIDQ4ICAgIAor
ICAgICA0OSAgICBmdW5jdGlvbiBlbnRyeUNvbW1hRXhwcmVzc2lvbigpIHsKKyAgICAgNTAgICAg
ICAgIGRlYnVnZ2VyOworIC0+ICA1MSAgICAgICAgYSgpLCB8YigpLCBhKCk7CisgICAgIDUyICAg
IH0KKyAgICAgNTMgICAgCisgICAgIDU0ICAgIGZ1bmN0aW9uIGVudHJ5RG90UHJvcGVydHlBY2Nl
c3NDYWxsKCkgeworCitBQ1RJT046IHN0ZXAtb3ZlcgorUEFVU0UgQVQgZW50cnlDb21tYUV4cHJl
c3Npb246NTI6MTUKKyAgICAgNDggICAgCisgICAgIDQ5ICAgIGZ1bmN0aW9uIGVudHJ5Q29tbWFF
eHByZXNzaW9uKCkgeworICAgICA1MCAgICAgICAgZGVidWdnZXI7CisgLT4gIDUxICAgICAgICBh
KCksIGIoKSwgfGEoKTsKKyAgICAgNTIgICAgfQorICAgICA1MyAgICAKKyAgICAgNTQgICAgZnVu
Y3Rpb24gZW50cnlEb3RQcm9wZXJ0eUFjY2Vzc0NhbGwoKSB7CisKIEFDVElPTjogc3RlcC1vdmVy
CiBQQVVTRSBBVCBlbnRyeUNvbW1hRXhwcmVzc2lvbjo1MzoyCiAgICAgIDQ5ICAgIGZ1bmN0aW9u
IGVudHJ5Q29tbWFFeHByZXNzaW9uKCkgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RlYnVnZ2VyL3N0ZXBwaW5nL3N0ZXBwaW5nLWZ1bmN0aW9uLWNhbGxzLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcvc3RlcHBpbmctZnVuY3Rpb24tY2Fs
bHMuaHRtbAppbmRleCAwYjRkMzljOGRjMDM2YTE3MjE0YTNkNDllYTAyNWQzYjc2ZmQ3MTQ0Li4x
MWRjYTQxYjZhNTZhNjVjOTQ2MTFkMmI2ZTUyYzM1ZjQ1NzhiZWE4IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcvc3RlcHBpbmctZnVuY3Rpb24tY2Fs
bHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcvc3Rl
cHBpbmctZnVuY3Rpb24tY2FsbHMuaHRtbApAQCAtMzI3LDcgKzMyNyw5IEBAIGZ1bmN0aW9uIHRl
c3QoKQogICAgICAgICAvLyBhKCksIGIoKSwgYSgpOwogICAgICAgICBzdGVwczogWwogICAgICAg
ICAgICAgIm92ZXIiLAotICAgICAgICAgICAgICAgICJvdmVyIiwgLy8gY29tcGxldGU6IGEoKSwg
YigpLCBhKCkKKyAgICAgICAgICAgICAgICAib3ZlciIsIC8vIGEoKQorICAgICAgICAgICAgICAg
ICJvdmVyIiwgLy8gYigpCisgICAgICAgICAgICAgICAgIm92ZXIiLCAvLyBhKCkKICAgICAgICAg
ICAgICJyZXN1bWUiCiAgICAgICAgIF0KICAgICB9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9kZWJ1Z2dlci9zdGVwcGluZy9zdGVwcGluZy1taXNjLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zdGVwcGluZy9zdGVwcGluZy1taXNjLWV4
cGVjdGVkLnR4dAppbmRleCA1NDdmM2JjYjA1ODQwMTJkZDFhMTZkOWIwZjBkYjcxODlhODg2ZGI0
Li41ZTkwYWE0ZTY0Y2E3MzYxZGEwNzNmMjkzNGYwYjEwNTA0YzU0Yzk4IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcvc3RlcHBpbmctbWlzYy1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3N0ZXBwaW5nL3N0
ZXBwaW5nLW1pc2MtZXhwZWN0ZWQudHh0CkBAIC0zODksNyArMzg5LDcgQEAgUEFTUzogU2hvdWxk
IGhhdmUgdXNlZCBhbGwgc3RlcHMuCiAKIC0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBEZWJ1Z2dlci5z
dGVwcGluZy5WYXJpYWJsZURlY2xhcmF0aW9uCiBFWFBSRVNTSU9OOiBzZXRUaW1lb3V0KGVudHJ5
VmFyaWFibGVEZWNsYXJhdGlvbikKLVNURVBTOiBvdmVyLCBpbiwgaW4sIGluLCByZXN1bWUKK1NU
RVBTOiBvdmVyLCBpbiwgaW4sIGluLCBpbiwgaW4sIGluLCByZXN1bWUKIFBBVVNFRCAoZGVidWdn
ZXItc3RhdGVtZW50KQogUEFVU0UgQVQgZW50cnlWYXJpYWJsZURlY2xhcmF0aW9uOjU4OjUKICAg
ICAgNTQgICAgfQpAQCAtNDEwLDYgKzQxMCwxNiBAQCBQQVVTRSBBVCBlbnRyeVZhcmlhYmxlRGVj
bGFyYXRpb246NTk6NQogICAgICA2MCAgICAgICAgbGV0IGIgPSAyLAogICAgICA2MSAgICAgICAg
ICAgIHkgPSAyOwogCitBQ1RJT046IHN0ZXAtaW4KK1BBVVNFIEFUIGVudHJ5VmFyaWFibGVEZWNs
YXJhdGlvbjo1OToxNAorICAgICA1NSAgICAKKyAgICAgNTYgICAgZnVuY3Rpb24gZW50cnlWYXJp
YWJsZURlY2xhcmF0aW9uKCkgeworICAgICA1NyAgICAgICAgZGVidWdnZXI7CisgLT4gIDU4ICAg
ICAgICB2YXIgYSA9IDF8LAorICAgICA1OSAgICAgICAgICAgIHggPSAxOworICAgICA2MCAgICAg
ICAgbGV0IGIgPSAyLAorICAgICA2MSAgICAgICAgICAgIHkgPSAyOworCiBBQ1RJT046IHN0ZXAt
aW4KIFBBVVNFIEFUIGVudHJ5VmFyaWFibGVEZWNsYXJhdGlvbjo2MTo1CiAgICAgIDU3ICAgICAg
ICBkZWJ1Z2dlcjsKQEAgLTQyMCw2ICs0MzAsMTYgQEAgUEFVU0UgQVQgZW50cnlWYXJpYWJsZURl
Y2xhcmF0aW9uOjYxOjUKICAgICAgNjIgICAgICAgIGNvbnN0IGMgPSAzLAogICAgICA2MyAgICAg
ICAgICAgIHogPSAzOwogCitBQ1RJT046IHN0ZXAtaW4KK1BBVVNFIEFUIGVudHJ5VmFyaWFibGVE
ZWNsYXJhdGlvbjo2MToxNAorICAgICA1NyAgICAgICAgZGVidWdnZXI7CisgICAgIDU4ICAgICAg
ICB2YXIgYSA9IDEsCisgICAgIDU5ICAgICAgICAgICAgeCA9IDE7CisgLT4gIDYwICAgICAgICBs
ZXQgYiA9IDJ8LAorICAgICA2MSAgICAgICAgICAgIHkgPSAyOworICAgICA2MiAgICAgICAgY29u
c3QgYyA9IDMsCisgICAgIDYzICAgICAgICAgICAgeiA9IDM7CisKIEFDVElPTjogc3RlcC1pbgog
UEFVU0UgQVQgZW50cnlWYXJpYWJsZURlY2xhcmF0aW9uOjYzOjUKICAgICAgNTkgICAgICAgICAg
ICB4ID0gMTsKQEAgLTQzMCw2ICs0NTAsMTYgQEAgUEFVU0UgQVQgZW50cnlWYXJpYWJsZURlY2xh
cmF0aW9uOjYzOjUKICAgICAgNjQgICAgfQogICAgICA2NSAgICAKIAorQUNUSU9OOiBzdGVwLWlu
CitQQVVTRSBBVCBlbnRyeVZhcmlhYmxlRGVjbGFyYXRpb246NjM6MTYKKyAgICAgNTkgICAgICAg
ICAgICB4ID0gMTsKKyAgICAgNjAgICAgICAgIGxldCBiID0gMiwKKyAgICAgNjEgICAgICAgICAg
ICB5ID0gMjsKKyAtPiAgNjIgICAgICAgIGNvbnN0IGMgPSAzfCwKKyAgICAgNjMgICAgICAgICAg
ICB6ID0gMzsKKyAgICAgNjQgICAgfQorICAgICA2NSAgICAKKwogQUNUSU9OOiBzdGVwLWluCiBQ
QVVTRSBBVCBlbnRyeVZhcmlhYmxlRGVjbGFyYXRpb246NjU6MgogICAgICA2MSAgICAgICAgICAg
IHkgPSAyOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3N0ZXBw
aW5nL3N0ZXBwaW5nLW1pc2MuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9z
dGVwcGluZy9zdGVwcGluZy1taXNjLmh0bWwKaW5kZXggMjczYjllNjE4OTA0ZWUxOTExOGQ2ZTkx
OGE4MmFiODJjNjMyYjgyZS4uZjY5MGFhNmM2ZWVmNThlOGFjMTQ1ZGZiYzU2OTc3NTUzYzgwOGUx
NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3N0ZXBwaW5nL3N0
ZXBwaW5nLW1pc2MuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc3Rl
cHBpbmcvc3RlcHBpbmctbWlzYy5odG1sCkBAIC0xODQsMTQgKzE4NCwxNiBAQCBmdW5jdGlvbiB0
ZXN0KCkKIAogICAgIGFkZFN0ZXBwaW5nVGVzdENhc2UoewogICAgICAgICBuYW1lOiAiRGVidWdn
ZXIuc3RlcHBpbmcuVmFyaWFibGVEZWNsYXJhdGlvbiIsCi0gICAgICAgIGRlc2NyaXB0aW9uOiAi
U2hvdWxkIGJlIGFibGUgdG8gc3RlcCB0aHJvdWdoIHZhcmlhYmxlIGRlY2xhcmF0aW9ucy4iLAor
ICAgICAgICBkZXNjcmlwdGlvbjogIlNob3VsZCBiZSBhYmxlIHRvIHN0ZXAgdG8gZWFjaCBpbmRp
dmlkdWFsIHZhcmlhYmxlIGRlY2xhcmF0aW9uLiIsCiAgICAgICAgIGV4cHJlc3Npb246ICJzZXRU
aW1lb3V0KGVudHJ5VmFyaWFibGVEZWNsYXJhdGlvbikiLAogICAgICAgICBzdGVwczogWwogICAg
ICAgICAgICAgIm92ZXIiLAotICAgICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogT3Bwb3J0
dW5pdHkgdG8gcGF1c2UgYXQgYXNzaWdubWVudCBleHByZXNzaW9ucy4KLSAgICAgICAgICAgICAg
ICAiaW4iLCAgLy8gYSA9IDEsIHggPSAxCi0gICAgICAgICAgICAgICAgImluIiwgIC8vIGIgPSAy
LCB5ID0gMgotICAgICAgICAgICAgICAgICJpbiIsICAvLyBjID0gMywgeiA9IDMKKyAgICAgICAg
ICAgICAgICAiaW4iLCAgLy8gYSA9IDEKKyAgICAgICAgICAgICAgICAiaW4iLCAgLy8geCA9IDEK
KyAgICAgICAgICAgICAgICAiaW4iLCAgLy8gYiA9IDIKKyAgICAgICAgICAgICAgICAiaW4iLCAg
Ly8geSA9IDIKKyAgICAgICAgICAgICAgICAiaW4iLCAgLy8gYyA9IDMKKyAgICAgICAgICAgICAg
ICAiaW4iLCAgLy8geiA9IDMKICAgICAgICAgICAgICJyZXN1bWUiLAogICAgICAgICBdCiAgICAg
fSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJj
ZXMvamF2YXNjcmlwdC10ZXN0cy9zYW1wbGUtanF1ZXJ5LWV4cGVjdGVkLmpzIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvc2FtcGxl
LWpxdWVyeS1leHBlY3RlZC5qcwppbmRleCA2ZDU5MTczMjkwNDcyM2E4MjczYzQ3MzI1NjcxZDIz
NWVjNDU2NTk1Li5lMWYxZjk3MWQwMmNkOTFlNjYxOTFlYmY5NTdlMGY1YTI4NWIzNjIyIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNj
cmlwdC10ZXN0cy9zYW1wbGUtanF1ZXJ5LWV4cGVjdGVkLmpzCisrKyBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL3NhbXBsZS1qcXVl
cnktZXhwZWN0ZWQuanMKQEAgLTYyLDcgKzYyLDggQEAKICAgICAgICAgICAgICAgICBpZiAoYSA9
IG8uZ2V0RWxlbWVudEJ5SWQoaVsyXSksIGEgJiYgYS5wYXJlbnROb2RlKSB7CiAgICAgICAgICAg
ICAgICAgICAgIGlmIChhLmlkICE9PSBpWzJdKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHIuZmluZChlKTsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5sZW5ndGggPSAxLCB0aGlz
WzBdID0gYQorICAgICAgICAgICAgICAgICAgICB0aGlzLmxlbmd0aCA9IDEsCisgICAgICAgICAg
ICAgICAgICAgIHRoaXNbMF0gPSBhCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IHJldHVybiB0aGlzLmNvbnRleHQgPSBvLCB0aGlzLnNlbGVjdG9yID0gZSwgdGhpcwogICAgICAg
ICAgICAgfQpAQCAtMTE0LDcgKzExNSw5IEBACiAgICAgICAgIHB1c2g6IGQsCiAgICAgICAgIHNv
cnQ6IFtdLnNvcnQsCiAgICAgICAgIHNwbGljZTogW10uc3BsaWNlCi0gICAgfSwgYi5mbi5pbml0
LnByb3RvdHlwZSA9IGIuZm4sIGIuZXh0ZW5kID0gYi5mbi5leHRlbmQgPSBmdW5jdGlvbigpIHsK
KyAgICB9LAorICAgIGIuZm4uaW5pdC5wcm90b3R5cGUgPSBiLmZuLAorICAgIGIuZXh0ZW5kID0g
Yi5mbi5leHRlbmQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgdmFyIGUsCiAgICAgICAgICAgICBu
LAogICAgICAgICAgICAgciwKQEAgLTEyOCw5ICsxMzEsMTIgQEAKICAgICAgICAgZm9yICgiYm9v
bGVhbiIgPT0gdHlwZW9mIHMgJiYgKGMgPSBzLCBzID0gYXJndW1lbnRzWzFdIHx8IHt9LCB1ID0g
MiksICJvYmplY3QiID09IHR5cGVvZiBzIHx8IGIuaXNGdW5jdGlvbihzKSB8fCAocyA9IHt9KSwg
bCA9PT0gdSAmJiAocyA9IHRoaXMsIC0tdSk7IGwgPiB1OyB1KyspCiAgICAgICAgICAgICBpZiAo
bnVsbCAhPSAobyA9IGFyZ3VtZW50c1t1XSkpCiAgICAgICAgICAgICAgICAgZm9yIChpIGluIG8p
Ci0gICAgICAgICAgICAgICAgICAgIGUgPSBzW2ldLCByID0gb1tpXSwgcyAhPT0gciAmJiAoYyAm
JiByICYmIChiLmlzUGxhaW5PYmplY3QocikgfHwgKG4gPSBiLmlzQXJyYXkocikpKSA/IChuID8g
KG4gPSAhMSwgYSA9IGUgJiYgYi5pc0FycmF5KGUpID8gZSA6IFtdKSA6IGEgPSBlICYmIGIuaXNQ
bGFpbk9iamVjdChlKSA/IGUgOiB7fSwgc1tpXSA9IGIuZXh0ZW5kKGMsIGEsIHIpKSA6IHIgIT09
IHQgJiYgKHNbaV0gPSByKSk7CisgICAgICAgICAgICAgICAgICAgIGUgPSBzW2ldLAorICAgICAg
ICAgICAgICAgICAgICByID0gb1tpXSwKKyAgICAgICAgICAgICAgICAgICAgcyAhPT0gciAmJiAo
YyAmJiByICYmIChiLmlzUGxhaW5PYmplY3QocikgfHwgKG4gPSBiLmlzQXJyYXkocikpKSA/IChu
ID8gKG4gPSAhMSwgYSA9IGUgJiYgYi5pc0FycmF5KGUpID8gZSA6IFtdKSA6IGEgPSBlICYmIGIu
aXNQbGFpbk9iamVjdChlKSA/IGUgOiB7fSwgc1tpXSA9IGIuZXh0ZW5kKGMsIGEsIHIpKSA6IHIg
IT09IHQgJiYgKHNbaV0gPSByKSk7CiAgICAgICAgIHJldHVybiBzCi0gICAgfSwgYi5leHRlbmQo
eworICAgIH0sCisgICAgYi5leHRlbmQoewogICAgICAgICBub0NvbmZsaWN0OiBmdW5jdGlvbih0
KSB7CiAgICAgICAgICAgICByZXR1cm4gZS4kID09PSBiICYmIChlLiQgPSB1KSwgdCAmJiBlLmpR
dWVyeSA9PT0gYiAmJiAoZS5qUXVlcnkgPSBzKSwgYgogICAgICAgICB9LApAQCAtMTQzLDcgKzE0
OSw4IEBACiAgICAgICAgICAgICBpZiAoZSA9PT0gITAgPyAhLS1iLnJlYWR5V2FpdCA6ICFiLmlz
UmVhZHkpIHsKICAgICAgICAgICAgICAgICBpZiAoIW8uYm9keSkKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHNldFRpbWVvdXQoYi5yZWFkeSk7Ci0gICAgICAgICAgICAgICAgYi5pc1JlYWR5
ID0gITAsIGUgIT09ICEwICYmIC0tYi5yZWFkeVdhaXQgPiAwIHx8IChuLnJlc29sdmVXaXRoKG8s
IFtiXSksIGIuZm4udHJpZ2dlciAmJiBiKG8pLnRyaWdnZXIoInJlYWR5Iikub2ZmKCJyZWFkeSIp
KQorICAgICAgICAgICAgICAgIGIuaXNSZWFkeSA9ICEwLAorICAgICAgICAgICAgICAgIGUgIT09
ICEwICYmIC0tYi5yZWFkeVdhaXQgPiAwIHx8IChuLnJlc29sdmVXaXRoKG8sIFtiXSksIGIuZm4u
dHJpZ2dlciAmJiBiKG8pLnRyaWdnZXIoInJlYWR5Iikub2ZmKCJyZWFkeSIpKQogICAgICAgICAg
ICAgfQogICAgICAgICB9LAogICAgICAgICBpc0Z1bmN0aW9uOiBmdW5jdGlvbihlKSB7CkBAIC0x
ODcsNyArMTk0LDggQEAKICAgICAgICAgcGFyc2VIVE1MOiBmdW5jdGlvbihlLCB0LCBuKSB7CiAg
ICAgICAgICAgICBpZiAoIWUgfHwgInN0cmluZyIgIT0gdHlwZW9mIGUpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIG51bGw7Ci0gICAgICAgICAgICAiYm9vbGVhbiIgPT0gdHlwZW9mIHQgJiYgKG4g
PSB0LCB0ID0gITEpLCB0ID0gdCB8fCBvOworICAgICAgICAgICAgImJvb2xlYW4iID09IHR5cGVv
ZiB0ICYmIChuID0gdCwgdCA9ICExKSwKKyAgICAgICAgICAgIHQgPSB0IHx8IG87CiAgICAgICAg
ICAgICB2YXIgciA9IEMuZXhlYyhlKSwKICAgICAgICAgICAgICAgICBpID0gIW4gJiYgW107CiAg
ICAgICAgICAgICByZXR1cm4gciA/IFt0LmNyZWF0ZUVsZW1lbnQoclsxXSldIDogKHIgPSBiLmJ1
aWxkRnJhZ21lbnQoW2VdLCB0LCBpKSwgaSAmJiBiKGkpLnJlbW92ZSgpLCBiLm1lcmdlKFtdLCBy
LmNoaWxkTm9kZXMpKQpAQCAtMjgxLDcgKzI4OSw4IEBACiAgICAgICAgICAgICAgICAgbyA9IDAs
CiAgICAgICAgICAgICAgICAgYSA9IGUubGVuZ3RoOwogICAgICAgICAgICAgZm9yIChuID0gISFu
OyBhID4gbzsgbysrKQotICAgICAgICAgICAgICAgIHIgPSAhIXQoZVtvXSwgbyksIG4gIT09IHIg
JiYgaS5wdXNoKGVbb10pOworICAgICAgICAgICAgICAgIHIgPSAhIXQoZVtvXSwgbyksCisgICAg
ICAgICAgICAgICAgbiAhPT0gciAmJiBpLnB1c2goZVtvXSk7CiAgICAgICAgICAgICByZXR1cm4g
aQogICAgICAgICB9LAogICAgICAgICBtYXA6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKQEAgLTI5Miwx
MCArMzAxLDEyIEBACiAgICAgICAgICAgICAgICAgcyA9IFtdOwogICAgICAgICAgICAgaWYgKGEp
CiAgICAgICAgICAgICAgICAgZm9yICg7IG8gPiBpOyBpKyspCi0gICAgICAgICAgICAgICAgICAg
IHIgPSB0KGVbaV0sIGksIG4pLCBudWxsICE9IHIgJiYgKHNbcy5sZW5ndGhdID0gcik7CisgICAg
ICAgICAgICAgICAgICAgIHIgPSB0KGVbaV0sIGksIG4pLAorICAgICAgICAgICAgICAgICAgICBu
dWxsICE9IHIgJiYgKHNbcy5sZW5ndGhdID0gcik7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAg
ICAgICAgICAgZm9yIChpIGluIGUpCi0gICAgICAgICAgICAgICAgICAgIHIgPSB0KGVbaV0sIGks
IG4pLCBudWxsICE9IHIgJiYgKHNbcy5sZW5ndGhdID0gcik7CisgICAgICAgICAgICAgICAgICAg
IHIgPSB0KGVbaV0sIGksIG4pLAorICAgICAgICAgICAgICAgICAgICBudWxsICE9IHIgJiYgKHNb
cy5sZW5ndGhdID0gcik7CiAgICAgICAgICAgICByZXR1cm4gZi5hcHBseShbXSwgcykKICAgICAg
ICAgfSwKICAgICAgICAgZ3VpZDogMSwKQEAgLTMyNSwxNCArMzM2LDE3IEBACiAgICAgICAgIG5v
dzogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICByZXR1cm4gKG5ldyBEYXRlKS5nZXRUaW1lKCkK
ICAgICAgICAgfQotICAgIH0pLCBiLnJlYWR5LnByb21pc2UgPSBmdW5jdGlvbih0KSB7CisgICAg
fSksCisgICAgYi5yZWFkeS5wcm9taXNlID0gZnVuY3Rpb24odCkgewogICAgICAgICBpZiAoIW4p
CiAgICAgICAgICAgICBpZiAobiA9IGIuRGVmZXJyZWQoKSwgImNvbXBsZXRlIiA9PT0gby5yZWFk
eVN0YXRlKQogICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoYi5yZWFkeSk7CiAgICAgICAgICAg
ICBlbHNlIGlmIChvLmFkZEV2ZW50TGlzdGVuZXIpCi0gICAgICAgICAgICAgICAgby5hZGRFdmVu
dExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIiwgSCwgITEpLCBlLmFkZEV2ZW50TGlzdGVuZXIo
ImxvYWQiLCBILCAhMSk7CisgICAgICAgICAgICAgICAgby5hZGRFdmVudExpc3RlbmVyKCJET01D
b250ZW50TG9hZGVkIiwgSCwgITEpLAorICAgICAgICAgICAgICAgIGUuYWRkRXZlbnRMaXN0ZW5l
cigibG9hZCIsIEgsICExKTsKICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIG8u
YXR0YWNoRXZlbnQoIm9ucmVhZHlzdGF0ZWNoYW5nZSIsIEgpLCBlLmF0dGFjaEV2ZW50KCJvbmxv
YWQiLCBIKTsKKyAgICAgICAgICAgICAgICBvLmF0dGFjaEV2ZW50KCJvbnJlYWR5c3RhdGVjaGFu
Z2UiLCBIKSwKKyAgICAgICAgICAgICAgICBlLmF0dGFjaEV2ZW50KCJvbmxvYWQiLCBIKTsKICAg
ICAgICAgICAgICAgICB2YXIgciA9ICExOwogICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAg
ICAgICAgICAgICAgIHIgPSBudWxsID09IGUuZnJhbWVFbGVtZW50ICYmIG8uZG9jdW1lbnRFbGVt
ZW50CkBAIC0zNDQsMTIgKzM1OCwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRj
aCAoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZXRUaW1lb3V0KGEs
IDUwKQogICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAg
cSgpLCBiLnJlYWR5KCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHEoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGIucmVhZHkoKQogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgfSgpCiAgICAgICAgICAgICB9CiAgICAgICAgIHJldHVybiBuLnByb21pc2UodCkKLSAg
ICB9LCBiLmVhY2goIkJvb2xlYW4gTnVtYmVyIFN0cmluZyBGdW5jdGlvbiBBcnJheSBEYXRlIFJl
Z0V4cCBPYmplY3QgRXJyb3IiLnNwbGl0KCIgIiksIGZ1bmN0aW9uKGUsIHQpIHsKKyAgICB9LAor
ICAgIGIuZWFjaCgiQm9vbGVhbiBOdW1iZXIgU3RyaW5nIEZ1bmN0aW9uIEFycmF5IERhdGUgUmVn
RXhwIE9iamVjdCBFcnJvciIuc3BsaXQoIiAiKSwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICBs
WyJbb2JqZWN0ICIgKyB0ICsgIl0iXSA9IHQudG9Mb3dlckNhc2UoKQogICAgIH0pOwogICAgIGZ1
bmN0aW9uIE0oZSkgewpAQCAtMzgxLDcgKzM5Nyw4IEBACiAgICAgICAgICAgICAgICAgICAgICAg
ICByID0gITE7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgbiA9ICExLCB1ICYmIChsID8gbC5sZW5ndGggJiYgYyhs
LnNoaWZ0KCkpIDogciA/IHUgPSBbXSA6IHAuZGlzYWJsZSgpKQorICAgICAgICAgICAgICAgIG4g
PSAhMSwKKyAgICAgICAgICAgICAgICB1ICYmIChsID8gbC5sZW5ndGggJiYgYyhsLnNoaWZ0KCkp
IDogciA/IHUgPSBbXSA6IHAuZGlzYWJsZSgpKQogICAgICAgICAgICAgfSwKICAgICAgICAgICAg
IHAgPSB7CiAgICAgICAgICAgICAgICAgYWRkOiBmdW5jdGlvbigpIHsKQEAgLTM5Miw3ICs0MDks
OCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGIudHlwZShuKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZ1bmN0aW9uIiA9PT0gciA/IGUudW5p
cXVlICYmIHAuaGFzKG4pIHx8IHUucHVzaChuKSA6IG4gJiYgbi5sZW5ndGggJiYgInN0cmluZyIg
IT09IHIgJiYgaShuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCi0gICAgICAgICAg
ICAgICAgICAgICAgICB9KShhcmd1bWVudHMpLCBuID8gbyA9IHUubGVuZ3RoIDogciAmJiAocyA9
IHQsIGMocikpCisgICAgICAgICAgICAgICAgICAgICAgICB9KShhcmd1bWVudHMpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgbiA/IG8gPSB1Lmxlbmd0aCA6IHIgJiYgKHMgPSB0LCBjKHIpKQog
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzCiAg
ICAgICAgICAgICAgICAgfSwKQEAgLTQwMCw3ICs0MTgsOCBAQAogICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdSAmJiBiLmVhY2goYXJndW1lbnRzLCBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICB2YXIgcjsKICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgo
ciA9IGIuaW5BcnJheSh0LCB1LCByKSkgPiAtMSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1LnNwbGljZShyLCAxKSwgbiAmJiAobyA+PSByICYmIG8tLSwgYSA+PSByICYmIGEtLSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1LnNwbGljZShyLCAxKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBuICYmIChvID49IHIgJiYgby0tLCBhID49IHIgJiYgYS0tKQogICAgICAg
ICAgICAgICAgICAgICB9KSwgdGhpcwogICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAg
ICAgaGFzOiBmdW5jdGlvbihlKSB7CkBAIC00MzIsNyArNDUxLDggQEAKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICB9OwogICAgICAgICByZXR1cm4gcAotICAgIH0sIGIuZXh0ZW5kKHsK
KyAgICB9LAorICAgIGIuZXh0ZW5kKHsKICAgICAgICAgRGVmZXJyZWQ6IGZ1bmN0aW9uKGUpIHsK
ICAgICAgICAgICAgIHZhciB0ID0gW1sicmVzb2x2ZSIsICJkb25lIiwgYi5DYWxsYmFja3MoIm9u
Y2UgbWVtb3J5IiksICJyZXNvbHZlZCJdLCBbInJlamVjdCIsICJmYWlsIiwgYi5DYWxsYmFja3Mo
Im9uY2UgbWVtb3J5IiksICJyZWplY3RlZCJdLCBbIm5vdGlmeSIsICJwcm9ncmVzcyIsIGIuQ2Fs
bGJhY2tzKCJtZW1vcnkiKV1dLAogICAgICAgICAgICAgICAgIG4gPSAicGVuZGluZyIsCkBAIC00
NTMsNyArNDczLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBl
ID0gcyAmJiBzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBlICYmIGIuaXNGdW5jdGlvbihlLnByb21pc2UpID8gZS5wcm9taXNlKCku
ZG9uZShuLnJlc29sdmUpLmZhaWwobi5yZWplY3QpLnByb2dyZXNzKG4ubm90aWZ5KSA6IG5bYSAr
ICJXaXRoIl0odGhpcyA9PT0gciA/IG4ucHJvbWlzZSgpIDogdGhpcywgcyA/IFtlXSA6IGFyZ3Vt
ZW50cykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9KSwgZSA9IG51bGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gbnVsbAogICAgICAgICAgICAgICAg
ICAgICAgICAgfSkucHJvbWlzZSgpCiAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAg
ICAgICAgICAgIHByb21pc2U6IGZ1bmN0aW9uKGUpIHsKQEAgLTQ2NCwxMSArNDg1LDE0IEBACiAg
ICAgICAgICAgICByZXR1cm4gci5waXBlID0gci50aGVuLCBiLmVhY2godCwgZnVuY3Rpb24oZSwg
bykgewogICAgICAgICAgICAgICAgIHZhciBhID0gb1syXSwKICAgICAgICAgICAgICAgICAgICAg
cyA9IG9bM107Ci0gICAgICAgICAgICAgICAgcltvWzFdXSA9IGEuYWRkLCBzICYmIGEuYWRkKGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHJbb1sxXV0gPSBhLmFkZCwKKyAgICAgICAgICAg
ICAgICBzICYmIGEuYWRkKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICBuID0gcwot
ICAgICAgICAgICAgICAgIH0sIHRbMSBeIGVdWzJdLmRpc2FibGUsIHRbMl1bMl0ubG9jayksIGlb
b1swXV0gPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICB9LCB0WzEgXiBlXVsyXS5kaXNh
YmxlLCB0WzJdWzJdLmxvY2spLAorICAgICAgICAgICAgICAgIGlbb1swXV0gPSBmdW5jdGlvbigp
IHsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlbb1swXSArICJXaXRoIl0odGhpcyA9PT0g
aSA/IHIgOiB0aGlzLCBhcmd1bWVudHMpLCB0aGlzCi0gICAgICAgICAgICAgICAgfSwgaVtvWzBd
ICsgIldpdGgiXSA9IGEuZmlyZVdpdGgKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAg
ICAgIGlbb1swXSArICJXaXRoIl0gPSBhLmZpcmVXaXRoCiAgICAgICAgICAgICB9KSwgci5wcm9t
aXNlKGkpLCBlICYmIGUuY2FsbChpLCBpKSwgaQogICAgICAgICB9LAogICAgICAgICB3aGVuOiBm
dW5jdGlvbihlKSB7CkBAIC00NzksNyArNTAzLDkgQEAKICAgICAgICAgICAgICAgICBvID0gMSA9
PT0gaSA/IGUgOiBiLkRlZmVycmVkKCksCiAgICAgICAgICAgICAgICAgYSA9IGZ1bmN0aW9uKGUs
IHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHIpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHRbZV0gPSB0aGlzLCBuW2VdID0gYXJndW1lbnRzLmxlbmd0aCA+
IDEgPyBoLmNhbGwoYXJndW1lbnRzKSA6IHIsIG4gPT09IHMgPyBvLm5vdGlmeVdpdGgodCwgbikg
OiAtLWkgfHwgby5yZXNvbHZlV2l0aCh0LCBuKQorICAgICAgICAgICAgICAgICAgICAgICAgdFtl
XSA9IHRoaXMsCisgICAgICAgICAgICAgICAgICAgICAgICBuW2VdID0gYXJndW1lbnRzLmxlbmd0
aCA+IDEgPyBoLmNhbGwoYXJndW1lbnRzKSA6IHIsCisgICAgICAgICAgICAgICAgICAgICAgICBu
ID09PSBzID8gby5ub3RpZnlXaXRoKHQsIG4pIDogLS1pIHx8IG8ucmVzb2x2ZVdpdGgodCwgbikK
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAg
ICAgcywKQEAgLTQ5MCw3ICs1MTYsOCBAQAogICAgICAgICAgICAgICAgICAgICBuW3RdICYmIGIu
aXNGdW5jdGlvbihuW3RdLnByb21pc2UpID8gblt0XS5wcm9taXNlKCkuZG9uZShhKHQsIGwsIG4p
KS5mYWlsKG8ucmVqZWN0KS5wcm9ncmVzcyhhKHQsIHUsIHMpKSA6IC0taTsKICAgICAgICAgICAg
IHJldHVybiBpIHx8IG8ucmVzb2x2ZVdpdGgobCwgbiksIG8ucHJvbWlzZSgpCiAgICAgICAgIH0K
LSAgICB9KSwgYi5zdXBwb3J0ID0gZnVuY3Rpb24oKSB7CisgICAgfSksCisgICAgYi5zdXBwb3J0
ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgIHZhciB0LAogICAgICAgICAgICAgbiwKICAgICAgICAg
ICAgIHIsCkBAIC01MDQsNyArNTMxLDExIEBACiAgICAgICAgICAgICBkID0gby5jcmVhdGVFbGVt
ZW50KCJkaXYiKTsKICAgICAgICAgaWYgKGQuc2V0QXR0cmlidXRlKCJjbGFzc05hbWUiLCAidCIp
LCBkLmlubmVySFRNTCA9ICIgIDxsaW5rLz48dGFibGU+PC90YWJsZT48YSBocmVmPScvYSc+YTwv
YT48aW5wdXQgdHlwZT0nY2hlY2tib3gnLz4iLCBuID0gZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
KiIpLCByID0gZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYSIpWzBdLCAhbiB8fCAhciB8fCAhbi5s
ZW5ndGgpCiAgICAgICAgICAgICByZXR1cm4ge307Ci0gICAgICAgIHMgPSBvLmNyZWF0ZUVsZW1l
bnQoInNlbGVjdCIpLCBsID0gcy5hcHBlbmRDaGlsZChvLmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIp
KSwgYSA9IGQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlucHV0IilbMF0sIHIuc3R5bGUuY3NzVGV4
dCA9ICJ0b3A6MXB4O2Zsb2F0OmxlZnQ7b3BhY2l0eTouNSIsIHQgPSB7CisgICAgICAgIHMgPSBv
LmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIpLAorICAgICAgICBsID0gcy5hcHBlbmRDaGlsZChvLmNy
ZWF0ZUVsZW1lbnQoIm9wdGlvbiIpKSwKKyAgICAgICAgYSA9IGQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoImlucHV0IilbMF0sCisgICAgICAgIHIuc3R5bGUuY3NzVGV4dCA9ICJ0b3A6MXB4O2Zsb2F0
OmxlZnQ7b3BhY2l0eTouNSIsCisgICAgICAgIHQgPSB7CiAgICAgICAgICAgICBnZXRTZXRBdHRy
aWJ1dGU6ICJ0IiAhPT0gZC5jbGFzc05hbWUsCiAgICAgICAgICAgICBsZWFkaW5nV2hpdGVzcGFj
ZTogMyA9PT0gZC5maXJzdENoaWxkLm5vZGVUeXBlLAogICAgICAgICAgICAgdGJvZHk6ICFkLmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0Ym9keSIpLmxlbmd0aCwKQEAgLTUyNSwxMyArNTU2LDI5IEBA
CiAgICAgICAgICAgICByZWxpYWJsZU1hcmdpblJpZ2h0OiAhMCwKICAgICAgICAgICAgIGJveFNp
emluZ1JlbGlhYmxlOiAhMCwKICAgICAgICAgICAgIHBpeGVsUG9zaXRpb246ICExCi0gICAgICAg
IH0sIGEuY2hlY2tlZCA9ICEwLCB0Lm5vQ2xvbmVDaGVja2VkID0gYS5jbG9uZU5vZGUoITApLmNo
ZWNrZWQsIHMuZGlzYWJsZWQgPSAhMCwgdC5vcHREaXNhYmxlZCA9ICFsLmRpc2FibGVkOworICAg
ICAgICB9LAorICAgICAgICBhLmNoZWNrZWQgPSAhMCwKKyAgICAgICAgdC5ub0Nsb25lQ2hlY2tl
ZCA9IGEuY2xvbmVOb2RlKCEwKS5jaGVja2VkLAorICAgICAgICBzLmRpc2FibGVkID0gITAsCisg
ICAgICAgIHQub3B0RGlzYWJsZWQgPSAhbC5kaXNhYmxlZDsKICAgICAgICAgdHJ5IHsKICAgICAg
ICAgICAgIGRlbGV0ZSBkLnRlc3QKICAgICAgICAgfSBjYXRjaCAoaCkgewogICAgICAgICAgICAg
dC5kZWxldGVFeHBhbmRvID0gITEKICAgICAgICAgfQotICAgICAgICBhID0gby5jcmVhdGVFbGVt
ZW50KCJpbnB1dCIpLCBhLnNldEF0dHJpYnV0ZSgidmFsdWUiLCAiIiksIHQuaW5wdXQgPSAiIiA9
PT0gYS5nZXRBdHRyaWJ1dGUoInZhbHVlIiksIGEudmFsdWUgPSAidCIsIGEuc2V0QXR0cmlidXRl
KCJ0eXBlIiwgInJhZGlvIiksIHQucmFkaW9WYWx1ZSA9ICJ0IiA9PT0gYS52YWx1ZSwgYS5zZXRB
dHRyaWJ1dGUoImNoZWNrZWQiLCAidCIpLCBhLnNldEF0dHJpYnV0ZSgibmFtZSIsICJ0IiksIHUg
PSBvLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSwgdS5hcHBlbmRDaGlsZChhKSwgdC5hcHBlbmRD
aGVja2VkID0gYS5jaGVja2VkLCB0LmNoZWNrQ2xvbmUgPSB1LmNsb25lTm9kZSghMCkuY2xvbmVO
b2RlKCEwKS5sYXN0Q2hpbGQuY2hlY2tlZCwgZC5hdHRhY2hFdmVudCAmJiAoZC5hdHRhY2hFdmVu
dCgib25jbGljayIsIGZ1bmN0aW9uKCkgeworICAgICAgICBhID0gby5jcmVhdGVFbGVtZW50KCJp
bnB1dCIpLAorICAgICAgICBhLnNldEF0dHJpYnV0ZSgidmFsdWUiLCAiIiksCisgICAgICAgIHQu
aW5wdXQgPSAiIiA9PT0gYS5nZXRBdHRyaWJ1dGUoInZhbHVlIiksCisgICAgICAgIGEudmFsdWUg
PSAidCIsCisgICAgICAgIGEuc2V0QXR0cmlidXRlKCJ0eXBlIiwgInJhZGlvIiksCisgICAgICAg
IHQucmFkaW9WYWx1ZSA9ICJ0IiA9PT0gYS52YWx1ZSwKKyAgICAgICAgYS5zZXRBdHRyaWJ1dGUo
ImNoZWNrZWQiLCAidCIpLAorICAgICAgICBhLnNldEF0dHJpYnV0ZSgibmFtZSIsICJ0IiksCisg
ICAgICAgIHUgPSBvLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSwKKyAgICAgICAgdS5hcHBlbmRD
aGlsZChhKSwKKyAgICAgICAgdC5hcHBlbmRDaGVja2VkID0gYS5jaGVja2VkLAorICAgICAgICB0
LmNoZWNrQ2xvbmUgPSB1LmNsb25lTm9kZSghMCkuY2xvbmVOb2RlKCEwKS5sYXN0Q2hpbGQuY2hl
Y2tlZCwKKyAgICAgICAgZC5hdHRhY2hFdmVudCAmJiAoZC5hdHRhY2hFdmVudCgib25jbGljayIs
IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgdC5ub0Nsb25lRXZlbnQgPSAhMQogICAgICAgICB9
KSwgZC5jbG9uZU5vZGUoITApLmNsaWNrKCkpOwogICAgICAgICBmb3IgKGYgaW4gewpAQCAtNTM5
LDcgKzU4Niw4IEBACiAgICAgICAgICAgICBjaGFuZ2U6ICEwLAogICAgICAgICAgICAgZm9jdXNp
bjogITAKICAgICAgICAgfSkKLSAgICAgICAgICAgIGQuc2V0QXR0cmlidXRlKGMgPSAib24iICsg
ZiwgInQiKSwgdFtmICsgIkJ1YmJsZXMiXSA9IGMgaW4gZSB8fCBkLmF0dHJpYnV0ZXNbY10uZXhw
YW5kbyA9PT0gITE7CisgICAgICAgICAgICBkLnNldEF0dHJpYnV0ZShjID0gIm9uIiArIGYsICJ0
IiksCisgICAgICAgICAgICB0W2YgKyAiQnViYmxlcyJdID0gYyBpbiBlIHx8IGQuYXR0cmlidXRl
c1tjXS5leHBhbmRvID09PSAhMTsKICAgICAgICAgcmV0dXJuIGQuc3R5bGUuYmFja2dyb3VuZENs
aXAgPSAiY29udGVudC1ib3giLCBkLmNsb25lTm9kZSghMCkuc3R5bGUuYmFja2dyb3VuZENsaXAg
PSAiIiwgdC5jbGVhckNsb25lU3R5bGUgPSAiY29udGVudC1ib3giID09PSBkLnN0eWxlLmJhY2tn
cm91bmRDbGlwLCBiKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgdmFyIG4sCiAgICAgICAgICAg
ICAgICAgciwKQEAgLTYxNSw3ICs2NjMsOCBAQAogICAgICAgICAgICAgdmFyIHQgPSBlLm5vZGVO
YW1lICYmIGIubm9EYXRhW2Uubm9kZU5hbWUudG9Mb3dlckNhc2UoKV07CiAgICAgICAgICAgICBy
ZXR1cm4gIXQgfHwgdCAhPT0gITAgJiYgZS5nZXRBdHRyaWJ1dGUoImNsYXNzaWQiKSA9PT0gdAog
ICAgICAgICB9Ci0gICAgfSksIGIuZm4uZXh0ZW5kKHsKKyAgICB9KSwKKyAgICBiLmZuLmV4dGVu
ZCh7CiAgICAgICAgIGRhdGE6IGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgICAgIHZhciByLAog
ICAgICAgICAgICAgICAgIGksCkBAIC02MjUsNyArNjc0LDggQEAKICAgICAgICAgICAgIGlmIChl
ID09PSB0KSB7CiAgICAgICAgICAgICAgICAgaWYgKHRoaXMubGVuZ3RoICYmIChzID0gYi5kYXRh
KG8pLCAxID09PSBvLm5vZGVUeXBlICYmICFiLl9kYXRhKG8sICJwYXJzZWRBdHRycyIpKSkgewog
ICAgICAgICAgICAgICAgICAgICBmb3IgKHIgPSBvLmF0dHJpYnV0ZXM7IHIubGVuZ3RoID4gYTsg
YSsrKQotICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHJbYV0ubmFtZSwgaS5pbmRleE9mKCJk
YXRhLSIpIHx8IChpID0gYi5jYW1lbENhc2UoaS5zbGljZSg1KSksIFcobywgaSwgc1tpXSkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHJbYV0ubmFtZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGkuaW5kZXhPZigiZGF0YS0iKSB8fCAoaSA9IGIuY2FtZWxDYXNlKGkuc2xpY2UoNSkp
LCBXKG8sIGksIHNbaV0pKTsKICAgICAgICAgICAgICAgICAgICAgYi5fZGF0YShvLCAicGFyc2Vk
QXR0cnMiLCAhMCkKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgcmV0dXJuIHMK
QEAgLTY3OCwyMiArNzI4LDI4IEBACiAgICAgICAgICAgICAgICAgYSA9IGZ1bmN0aW9uKCkgewog
ICAgICAgICAgICAgICAgICAgICBiLmRlcXVldWUoZSwgdCkKICAgICAgICAgICAgICAgICB9Owot
ICAgICAgICAgICAgImlucHJvZ3Jlc3MiID09PSBpICYmIChpID0gbi5zaGlmdCgpLCByLS0pLCBv
LmN1ciA9IGksIGkgJiYgKCJmeCIgPT09IHQgJiYgbi51bnNoaWZ0KCJpbnByb2dyZXNzIiksIGRl
bGV0ZSBvLnN0b3AsIGkuY2FsbChlLCBhLCBvKSksICFyICYmIG8gJiYgby5lbXB0eS5maXJlKCkK
KyAgICAgICAgICAgICJpbnByb2dyZXNzIiA9PT0gaSAmJiAoaSA9IG4uc2hpZnQoKSwgci0tKSwK
KyAgICAgICAgICAgIG8uY3VyID0gaSwKKyAgICAgICAgICAgIGkgJiYgKCJmeCIgPT09IHQgJiYg
bi51bnNoaWZ0KCJpbnByb2dyZXNzIiksIGRlbGV0ZSBvLnN0b3AsIGkuY2FsbChlLCBhLCBvKSks
CisgICAgICAgICAgICAhciAmJiBvICYmIG8uZW1wdHkuZmlyZSgpCiAgICAgICAgIH0sCiAgICAg
ICAgIF9xdWV1ZUhvb2tzOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICB2YXIgbiA9IHQg
KyAicXVldWVIb29rcyI7CiAgICAgICAgICAgICByZXR1cm4gYi5fZGF0YShlLCBuKSB8fCBiLl9k
YXRhKGUsIG4sIHsKICAgICAgICAgICAgICAgICAgICAgZW1wdHk6IGIuQ2FsbGJhY2tzKCJvbmNl
IG1lbW9yeSIpLmFkZChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGIuX3Jl
bW92ZURhdGEoZSwgdCArICJxdWV1ZSIpLCBiLl9yZW1vdmVEYXRhKGUsIG4pCisgICAgICAgICAg
ICAgICAgICAgICAgICBiLl9yZW1vdmVEYXRhKGUsIHQgKyAicXVldWUiKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGIuX3JlbW92ZURhdGEoZSwgbikKICAgICAgICAgICAgICAgICAgICAgfSkK
ICAgICAgICAgICAgICAgICB9KQogICAgICAgICB9Ci0gICAgfSksIGIuZm4uZXh0ZW5kKHsKKyAg
ICB9KSwKKyAgICBiLmZuLmV4dGVuZCh7CiAgICAgICAgIHF1ZXVlOiBmdW5jdGlvbihlLCBuKSB7
CiAgICAgICAgICAgICB2YXIgciA9IDI7CiAgICAgICAgICAgICByZXR1cm4gInN0cmluZyIgIT0g
dHlwZW9mIGUgJiYgKG4gPSBlLCBlID0gImZ4Iiwgci0tKSwgciA+IGFyZ3VtZW50cy5sZW5ndGgg
PyBiLnF1ZXVlKHRoaXNbMF0sIGUpIDogbiA9PT0gdCA/IHRoaXMgOiB0aGlzLmVhY2goZnVuY3Rp
b24oKSB7CiAgICAgICAgICAgICAgICAgdmFyIHQgPSBiLnF1ZXVlKHRoaXMsIGUsIG4pOwotICAg
ICAgICAgICAgICAgIGIuX3F1ZXVlSG9va3ModGhpcywgZSksICJmeCIgPT09IGUgJiYgImlucHJv
Z3Jlc3MiICE9PSB0WzBdICYmIGIuZGVxdWV1ZSh0aGlzLCBlKQorICAgICAgICAgICAgICAgIGIu
X3F1ZXVlSG9va3ModGhpcywgZSksCisgICAgICAgICAgICAgICAgImZ4IiA9PT0gZSAmJiAiaW5w
cm9ncmVzcyIgIT09IHRbMF0gJiYgYi5kZXF1ZXVlKHRoaXMsIGUpCiAgICAgICAgICAgICB9KQog
ICAgICAgICB9LAogICAgICAgICBkZXF1ZXVlOiBmdW5jdGlvbihlKSB7CkBAIC03MjEsOSArNzc3
LDExIEBACiAgICAgICAgICAgICAgICAgdSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAg
ICAgICAtLWkgfHwgby5yZXNvbHZlV2l0aChhLCBbYV0pCiAgICAgICAgICAgICAgICAgfTsKLSAg
ICAgICAgICAgICJzdHJpbmciICE9IHR5cGVvZiBlICYmIChuID0gZSwgZSA9IHQpLCBlID0gZSB8
fCAiZngiOworICAgICAgICAgICAgInN0cmluZyIgIT0gdHlwZW9mIGUgJiYgKG4gPSBlLCBlID0g
dCksCisgICAgICAgICAgICBlID0gZSB8fCAiZngiOwogICAgICAgICAgICAgd2hpbGUgKHMtLSkK
LSAgICAgICAgICAgICAgICByID0gYi5fZGF0YShhW3NdLCBlICsgInF1ZXVlSG9va3MiKSwgciAm
JiByLmVtcHR5ICYmIChpKyssIHIuZW1wdHkuYWRkKHUpKTsKKyAgICAgICAgICAgICAgICByID0g
Yi5fZGF0YShhW3NdLCBlICsgInF1ZXVlSG9va3MiKSwKKyAgICAgICAgICAgICAgICByICYmIHIu
ZW1wdHkgJiYgKGkrKywgci5lbXB0eS5hZGQodSkpOwogICAgICAgICAgICAgcmV0dXJuIHUoKSwg
by5wcm9taXNlKG4pCiAgICAgICAgIH0KICAgICB9KTsKQEAgLTc1Miw3ICs4MTAsOCBAQAogICAg
ICAgICByZW1vdmVQcm9wOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICByZXR1cm4gZSA9IGIu
cHJvcEZpeFtlXSB8fCBlLCB0aGlzLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAg
dHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgdGhpc1tlXSA9IHQsIGRlbGV0ZSB0aGlzW2VdCisg
ICAgICAgICAgICAgICAgICAgIHRoaXNbZV0gPSB0LAorICAgICAgICAgICAgICAgICAgICBkZWxl
dGUgdGhpc1tlXQogICAgICAgICAgICAgICAgIH0gY2F0Y2ggKG4pIHt9CiAgICAgICAgICAgICB9
KQogICAgICAgICB9LApAQCAtODE2LDcgKzg3NSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAg
ICB1ID0gdCwKICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBlLm1hdGNoKHcpIHx8IFtdOwog
ICAgICAgICAgICAgICAgICAgICB3aGlsZSAobyA9IGxbYSsrXSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHUgPSByID8gdSA6ICFzLmhhc0NsYXNzKG8pLCBzW3UgPyAiYWRkQ2xhc3MiIDogInJl
bW92ZUNsYXNzIl0obykKKyAgICAgICAgICAgICAgICAgICAgICAgIHUgPSByID8gdSA6ICFzLmhh
c0NsYXNzKG8pLAorICAgICAgICAgICAgICAgICAgICAgICAgc1t1ID8gImFkZENsYXNzIiA6ICJy
ZW1vdmVDbGFzcyJdKG8pCiAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAg
ICAgIChuID09PSBpIHx8ICJib29sZWFuIiA9PT0gbikgJiYgKHRoaXMuY2xhc3NOYW1lICYmIGIu
X2RhdGEodGhpcywgIl9fY2xhc3NOYW1lX18iLCB0aGlzLmNsYXNzTmFtZSksIHRoaXMuY2xhc3NO
YW1lID0gdGhpcy5jbGFzc05hbWUgfHwgZSA9PT0gITEgPyAiIiA6IGIuX2RhdGEodGhpcywgIl9f
Y2xhc3NOYW1lX18iKSB8fCAiIikKICAgICAgICAgICAgIH0pCkBAIC04NDgsNyArOTA4LDggQEAK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHIgPSBiLnZhbEhvb2tzW28udHlwZV0gfHwgYi52
YWxIb29rc1tvLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldLCByICYmICJnZXQiIGluIHIgJiYgKG4g
PSByLmdldChvLCAidmFsdWUiKSkgIT09IHQgPyBuIDogKG4gPSBvLnZhbHVlLCAic3RyaW5nIiA9
PSB0eXBlb2YgbiA/IG4ucmVwbGFjZShVLCAiIikgOiBudWxsID09IG4gPyAiIiA6IG4pCiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KLSAgICB9KSwgYi5leHRlbmQoeworICAgIH0pLAorICAgIGIu
ZXh0ZW5kKHsKICAgICAgICAgdmFsSG9va3M6IHsKICAgICAgICAgICAgIG9wdGlvbjogewogICAg
ICAgICAgICAgICAgIGdldDogZnVuY3Rpb24oZSkgewpAQCAtODk3LDcgKzk1OCw5IEBACiAgICAg
ICAgICAgICAgICAgbyA9IHQgJiYgdC5tYXRjaCh3KTsKICAgICAgICAgICAgIGlmIChvICYmIDEg
PT09IGUubm9kZVR5cGUpCiAgICAgICAgICAgICAgICAgd2hpbGUgKG4gPSBvW2krK10pCi0gICAg
ICAgICAgICAgICAgICAgIHIgPSBiLnByb3BGaXhbbl0gfHwgbiwgSi50ZXN0KG4pID8gIVEgJiYg
Ry50ZXN0KG4pID8gZVtiLmNhbWVsQ2FzZSgiZGVmYXVsdC0iICsgbildID0gZVtyXSA9ICExIDog
ZVtyXSA9ICExIDogYi5hdHRyKGUsIG4sICIiKSwgZS5yZW1vdmVBdHRyaWJ1dGUoUSA/IG4gOiBy
KQorICAgICAgICAgICAgICAgICAgICByID0gYi5wcm9wRml4W25dIHx8IG4sCisgICAgICAgICAg
ICAgICAgICAgIEoudGVzdChuKSA/ICFRICYmIEcudGVzdChuKSA/IGVbYi5jYW1lbENhc2UoImRl
ZmF1bHQtIiArIG4pXSA9IGVbcl0gPSAhMSA6IGVbcl0gPSAhMSA6IGIuYXR0cihlLCBuLCAiIiks
CisgICAgICAgICAgICAgICAgICAgIGUucmVtb3ZlQXR0cmlidXRlKFEgPyBuIDogcikKICAgICAg
ICAgfSwKICAgICAgICAgYXR0ckhvb2tzOiB7CiAgICAgICAgICAgICB0eXBlOiB7CkBAIC05Mzks
NyArMTAwMiw4IEBACiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9
Ci0gICAgfSksIHogPSB7CisgICAgfSksCisgICAgeiA9IHsKICAgICAgICAgZ2V0OiBmdW5jdGlv
bihlLCBuKSB7CiAgICAgICAgICAgICB2YXIgciA9IGIucHJvcChlLCBuKSwKICAgICAgICAgICAg
ICAgICBpID0gImJvb2xlYW4iID09IHR5cGVvZiByICYmIGUuZ2V0QXR0cmlidXRlKG4pLApAQCAt
OTQ5LDcgKzEwMTMsOCBAQAogICAgICAgICBzZXQ6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAg
ICAgICAgIHJldHVybiB0ID09PSAhMSA/IGIucmVtb3ZlQXR0cihlLCBuKSA6IEsgJiYgUSB8fCAh
Ry50ZXN0KG4pID8gZS5zZXRBdHRyaWJ1dGUoIVEgJiYgYi5wcm9wRml4W25dIHx8IG4sIG4pIDog
ZVtiLmNhbWVsQ2FzZSgiZGVmYXVsdC0iICsgbildID0gZVtuXSA9ICEwLCBuCiAgICAgICAgIH0K
LSAgICB9LCBLICYmIFEgfHwgKGIuYXR0ckhvb2tzLnZhbHVlID0geworICAgIH0sCisgICAgSyAm
JiBRIHx8IChiLmF0dHJIb29rcy52YWx1ZSA9IHsKICAgICAgICAgZ2V0OiBmdW5jdGlvbihlLCBu
KSB7CiAgICAgICAgICAgICB2YXIgciA9IGUuZ2V0QXR0cmlidXRlTm9kZShuKTsKICAgICAgICAg
ICAgIHJldHVybiBiLm5vZGVOYW1lKGUsICJpbnB1dCIpID8gZS5kZWZhdWx0VmFsdWUgOiByICYm
IHIuc3BlY2lmaWVkID8gci52YWx1ZSA6IHQKQEAgLTk1Nyw3ICsxMDIyLDggQEAKICAgICAgICAg
c2V0OiBmdW5jdGlvbihlLCBuLCByKSB7CiAgICAgICAgICAgICByZXR1cm4gYi5ub2RlTmFtZShl
LCAiaW5wdXQiKSA/IChlLmRlZmF1bHRWYWx1ZSA9IG4sIHQpIDogSSAmJiBJLnNldChlLCBuLCBy
KQogICAgICAgICB9Ci0gICAgfSksIFEgfHwgKEkgPSBiLnZhbEhvb2tzLmJ1dHRvbiA9IHsKKyAg
ICB9KSwKKyAgICBRIHx8IChJID0gYi52YWxIb29rcy5idXR0b24gPSB7CiAgICAgICAgIGdldDog
ZnVuY3Rpb24oZSwgbikgewogICAgICAgICAgICAgdmFyIHIgPSBlLmdldEF0dHJpYnV0ZU5vZGUo
bik7CiAgICAgICAgICAgICByZXR1cm4gciAmJiAoImlkIiA9PT0gbiB8fCAibmFtZSIgPT09IG4g
fHwgImNvb3JkcyIgPT09IG4gPyAiIiAhPT0gci52YWx1ZSA6IHIuc3BlY2lmaWVkKSA/IHIudmFs
dWUgOiB0CkBAIC05NzcsNyArMTA0Myw4IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuICIiID09
PSByID8gKGUuc2V0QXR0cmlidXRlKG4sICJhdXRvIiksIHIpIDogdAogICAgICAgICAgICAgfQog
ICAgICAgICB9KQotICAgIH0pKSwgYi5zdXBwb3J0LmhyZWZOb3JtYWxpemVkIHx8IChiLmVhY2go
WyJocmVmIiwgInNyYyIsICJ3aWR0aCIsICJoZWlnaHQiXSwgZnVuY3Rpb24oZSwgbikgeworICAg
IH0pKSwKKyAgICBiLnN1cHBvcnQuaHJlZk5vcm1hbGl6ZWQgfHwgKGIuZWFjaChbImhyZWYiLCAi
c3JjIiwgIndpZHRoIiwgImhlaWdodCJdLCBmdW5jdGlvbihlLCBuKSB7CiAgICAgICAgIGIuYXR0
ckhvb2tzW25dID0gYi5leHRlbmQoYi5hdHRySG9va3Nbbl0sIHsKICAgICAgICAgICAgIGdldDog
ZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgIHZhciByID0gZS5nZXRBdHRyaWJ1dGUobiwg
Mik7CkBAIC05OTAsMjUgKzEwNTcsMzAgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gZS5nZXRB
dHRyaWJ1dGUodCwgNCkKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgIH0pKSwgYi5zdXBw
b3J0LnN0eWxlIHx8IChiLmF0dHJIb29rcy5zdHlsZSA9IHsKKyAgICB9KSksCisgICAgYi5zdXBw
b3J0LnN0eWxlIHx8IChiLmF0dHJIb29rcy5zdHlsZSA9IHsKICAgICAgICAgZ2V0OiBmdW5jdGlv
bihlKSB7CiAgICAgICAgICAgICByZXR1cm4gZS5zdHlsZS5jc3NUZXh0IHx8IHQKICAgICAgICAg
fSwKICAgICAgICAgc2V0OiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICByZXR1cm4gZS5z
dHlsZS5jc3NUZXh0ID0gdCArICIiCiAgICAgICAgIH0KLSAgICB9KSwgYi5zdXBwb3J0Lm9wdFNl
bGVjdGVkIHx8IChiLnByb3BIb29rcy5zZWxlY3RlZCA9IGIuZXh0ZW5kKGIucHJvcEhvb2tzLnNl
bGVjdGVkLCB7CisgICAgfSksCisgICAgYi5zdXBwb3J0Lm9wdFNlbGVjdGVkIHx8IChiLnByb3BI
b29rcy5zZWxlY3RlZCA9IGIuZXh0ZW5kKGIucHJvcEhvb2tzLnNlbGVjdGVkLCB7CiAgICAgICAg
IGdldDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgdmFyIHQgPSBlLnBhcmVudE5vZGU7CiAg
ICAgICAgICAgICByZXR1cm4gdCAmJiAodC5zZWxlY3RlZEluZGV4LCB0LnBhcmVudE5vZGUgJiYg
dC5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXgpLCBudWxsCiAgICAgICAgIH0KLSAgICB9KSksIGIu
c3VwcG9ydC5lbmN0eXBlIHx8IChiLnByb3BGaXguZW5jdHlwZSA9ICJlbmNvZGluZyIpLCBiLnN1
cHBvcnQuY2hlY2tPbiB8fCBiLmVhY2goWyJyYWRpbyIsICJjaGVja2JveCJdLCBmdW5jdGlvbigp
IHsKKyAgICB9KSksCisgICAgYi5zdXBwb3J0LmVuY3R5cGUgfHwgKGIucHJvcEZpeC5lbmN0eXBl
ID0gImVuY29kaW5nIiksCisgICAgYi5zdXBwb3J0LmNoZWNrT24gfHwgYi5lYWNoKFsicmFkaW8i
LCAiY2hlY2tib3giXSwgZnVuY3Rpb24oKSB7CiAgICAgICAgIGIudmFsSG9va3NbdGhpc10gPSB7
CiAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICByZXR1cm4g
bnVsbCA9PT0gZS5nZXRBdHRyaWJ1dGUoInZhbHVlIikgPyAib24iIDogZS52YWx1ZQogICAgICAg
ICAgICAgfQogICAgICAgICB9Ci0gICAgfSksIGIuZWFjaChbInJhZGlvIiwgImNoZWNrYm94Il0s
IGZ1bmN0aW9uKCkgeworICAgIH0pLAorICAgIGIuZWFjaChbInJhZGlvIiwgImNoZWNrYm94Il0s
IGZ1bmN0aW9uKCkgewogICAgICAgICBiLnZhbEhvb2tzW3RoaXNdID0gYi5leHRlbmQoYi52YWxI
b29rc1t0aGlzXSwgewogICAgICAgICAgICAgc2V0OiBmdW5jdGlvbihlLCBuKSB7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGIuaXNBcnJheShuKSA/IGUuY2hlY2tlZCA9IGIuaW5BcnJheShiKGUp
LnZhbCgpLCBuKSA+PSAwIDogdApAQCAtMTA0MiwxMSArMTExNCwyMiBAQAogICAgICAgICAgICAg
ICAgIHksCiAgICAgICAgICAgICAgICAgdiA9IGIuX2RhdGEoZSk7CiAgICAgICAgICAgICBpZiAo
dikgewotICAgICAgICAgICAgICAgIHIuaGFuZGxlciAmJiAoYyA9IHIsIHIgPSBjLmhhbmRsZXIs
IGEgPSBjLnNlbGVjdG9yKSwgci5ndWlkIHx8IChyLmd1aWQgPSBiLmd1aWQrKyksICh1ID0gdi5l
dmVudHMpIHx8ICh1ID0gdi5ldmVudHMgPSB7fSksIChmID0gdi5oYW5kbGUpIHx8IChmID0gdi5o
YW5kbGUgPSBmdW5jdGlvbihlKSB7CisgICAgICAgICAgICAgICAgci5oYW5kbGVyICYmIChjID0g
ciwgciA9IGMuaGFuZGxlciwgYSA9IGMuc2VsZWN0b3IpLAorICAgICAgICAgICAgICAgIHIuZ3Vp
ZCB8fCAoci5ndWlkID0gYi5ndWlkKyspLAorICAgICAgICAgICAgICAgICh1ID0gdi5ldmVudHMp
IHx8ICh1ID0gdi5ldmVudHMgPSB7fSksCisgICAgICAgICAgICAgICAgKGYgPSB2LmhhbmRsZSkg
fHwgKGYgPSB2LmhhbmRsZSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHR5cGVvZiBiID09PSBpIHx8IGUgJiYgYi5ldmVudC50cmlnZ2VyZWQgPT09IGUudHlwZSA/
IHQgOiBiLmV2ZW50LmRpc3BhdGNoLmFwcGx5KGYuZWxlbSwgYXJndW1lbnRzKQotICAgICAgICAg
ICAgICAgIH0sIGYuZWxlbSA9IGUpLCBuID0gKG4gfHwgIiIpLm1hdGNoKHcpIHx8IFsiIl0sIGwg
PSBuLmxlbmd0aDsKKyAgICAgICAgICAgICAgICB9LCBmLmVsZW0gPSBlKSwKKyAgICAgICAgICAg
ICAgICBuID0gKG4gfHwgIiIpLm1hdGNoKHcpIHx8IFsiIl0sCisgICAgICAgICAgICAgICAgbCA9
IG4ubGVuZ3RoOwogICAgICAgICAgICAgICAgIHdoaWxlIChsLS0pCi0gICAgICAgICAgICAgICAg
ICAgIHMgPSBydC5leGVjKG5bbF0pIHx8IFtdLCBnID0geSA9IHNbMV0sIG0gPSAoc1syXSB8fCAi
Iikuc3BsaXQoIi4iKS5zb3J0KCksIHAgPSBiLmV2ZW50LnNwZWNpYWxbZ10gfHwge30sIGcgPSAo
YSA/IHAuZGVsZWdhdGVUeXBlIDogcC5iaW5kVHlwZSkgfHwgZywgcCA9IGIuZXZlbnQuc3BlY2lh
bFtnXSB8fCB7fSwgZCA9IGIuZXh0ZW5kKHsKKyAgICAgICAgICAgICAgICAgICAgcyA9IHJ0LmV4
ZWMobltsXSkgfHwgW10sCisgICAgICAgICAgICAgICAgICAgIGcgPSB5ID0gc1sxXSwKKyAgICAg
ICAgICAgICAgICAgICAgbSA9IChzWzJdIHx8ICIiKS5zcGxpdCgiLiIpLnNvcnQoKSwKKyAgICAg
ICAgICAgICAgICAgICAgcCA9IGIuZXZlbnQuc3BlY2lhbFtnXSB8fCB7fSwKKyAgICAgICAgICAg
ICAgICAgICAgZyA9IChhID8gcC5kZWxlZ2F0ZVR5cGUgOiBwLmJpbmRUeXBlKSB8fCBnLAorICAg
ICAgICAgICAgICAgICAgICBwID0gYi5ldmVudC5zcGVjaWFsW2ddIHx8IHt9LAorICAgICAgICAg
ICAgICAgICAgICBkID0gYi5leHRlbmQoewogICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTog
ZywKICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdUeXBlOiB5LAogICAgICAgICAgICAgICAg
ICAgICAgICAgZGF0YTogbywKQEAgLTEwNTUsNyArMTEzOCwxMSBAQAogICAgICAgICAgICAgICAg
ICAgICAgICAgc2VsZWN0b3I6IGEsCiAgICAgICAgICAgICAgICAgICAgICAgICBuZWVkc0NvbnRl
eHQ6IGEgJiYgYi5leHByLm1hdGNoLm5lZWRzQ29udGV4dC50ZXN0KGEpLAogICAgICAgICAgICAg
ICAgICAgICAgICAgbmFtZXNwYWNlOiBtLmpvaW4oIi4iKQotICAgICAgICAgICAgICAgICAgICB9
LCBjKSwgKGggPSB1W2ddKSB8fCAoaCA9IHVbZ10gPSBbXSwgaC5kZWxlZ2F0ZUNvdW50ID0gMCwg
cC5zZXR1cCAmJiBwLnNldHVwLmNhbGwoZSwgbywgbSwgZikgIT09ICExIHx8IChlLmFkZEV2ZW50
TGlzdGVuZXIgPyBlLmFkZEV2ZW50TGlzdGVuZXIoZywgZiwgITEpIDogZS5hdHRhY2hFdmVudCAm
JiBlLmF0dGFjaEV2ZW50KCJvbiIgKyBnLCBmKSkpLCBwLmFkZCAmJiAocC5hZGQuY2FsbChlLCBk
KSwgZC5oYW5kbGVyLmd1aWQgfHwgKGQuaGFuZGxlci5ndWlkID0gci5ndWlkKSksIGEgPyBoLnNw
bGljZShoLmRlbGVnYXRlQ291bnQrKywgMCwgZCkgOiBoLnB1c2goZCksIGIuZXZlbnQuZ2xvYmFs
W2ddID0gITA7CisgICAgICAgICAgICAgICAgICAgIH0sIGMpLAorICAgICAgICAgICAgICAgICAg
ICAoaCA9IHVbZ10pIHx8IChoID0gdVtnXSA9IFtdLCBoLmRlbGVnYXRlQ291bnQgPSAwLCBwLnNl
dHVwICYmIHAuc2V0dXAuY2FsbChlLCBvLCBtLCBmKSAhPT0gITEgfHwgKGUuYWRkRXZlbnRMaXN0
ZW5lciA/IGUuYWRkRXZlbnRMaXN0ZW5lcihnLCBmLCAhMSkgOiBlLmF0dGFjaEV2ZW50ICYmIGUu
YXR0YWNoRXZlbnQoIm9uIiArIGcsIGYpKSksCisgICAgICAgICAgICAgICAgICAgIHAuYWRkICYm
IChwLmFkZC5jYWxsKGUsIGQpLCBkLmhhbmRsZXIuZ3VpZCB8fCAoZC5oYW5kbGVyLmd1aWQgPSBy
Lmd1aWQpKSwKKyAgICAgICAgICAgICAgICAgICAgYSA/IGguc3BsaWNlKGguZGVsZWdhdGVDb3Vu
dCsrLCAwLCBkKSA6IGgucHVzaChkKSwKKyAgICAgICAgICAgICAgICAgICAgYi5ldmVudC5nbG9i
YWxbZ10gPSAhMDsKICAgICAgICAgICAgICAgICBlID0gbnVsbAogICAgICAgICAgICAgfQogICAg
ICAgICB9LApAQCAtMTA3MywxMiArMTE2MCwxOCBAQAogICAgICAgICAgICAgICAgIGcsCiAgICAg
ICAgICAgICAgICAgbSA9IGIuaGFzRGF0YShlKSAmJiBiLl9kYXRhKGUpOwogICAgICAgICAgICAg
aWYgKG0gJiYgKGMgPSBtLmV2ZW50cykpIHsKLSAgICAgICAgICAgICAgICB0ID0gKHQgfHwgIiIp
Lm1hdGNoKHcpIHx8IFsiIl0sIGwgPSB0Lmxlbmd0aDsKKyAgICAgICAgICAgICAgICB0ID0gKHQg
fHwgIiIpLm1hdGNoKHcpIHx8IFsiIl0sCisgICAgICAgICAgICAgICAgbCA9IHQubGVuZ3RoOwog
ICAgICAgICAgICAgICAgIHdoaWxlIChsLS0pCiAgICAgICAgICAgICAgICAgICAgIGlmIChzID0g
cnQuZXhlYyh0W2xdKSB8fCBbXSwgZCA9IGcgPSBzWzFdLCBoID0gKHNbMl0gfHwgIiIpLnNwbGl0
KCIuIikuc29ydCgpLCBkKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwID0gYi5ldmVudC5z
cGVjaWFsW2RdIHx8IHt9LCBkID0gKHIgPyBwLmRlbGVnYXRlVHlwZSA6IHAuYmluZFR5cGUpIHx8
IGQsIGYgPSBjW2RdIHx8IFtdLCBzID0gc1syXSAmJiBSZWdFeHAoIihefFxcLikiICsgaC5qb2lu
KCJcXC4oPzouKlxcLnwpIikgKyAiKFxcLnwkKSIpLCB1ID0gbyA9IGYubGVuZ3RoOworICAgICAg
ICAgICAgICAgICAgICAgICAgcCA9IGIuZXZlbnQuc3BlY2lhbFtkXSB8fCB7fSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGQgPSAociA/IHAuZGVsZWdhdGVUeXBlIDogcC5iaW5kVHlwZSkgfHwg
ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBjW2RdIHx8IFtdLAorICAgICAgICAgICAg
ICAgICAgICAgICAgcyA9IHNbMl0gJiYgUmVnRXhwKCIoXnxcXC4pIiArIGguam9pbigiXFwuKD86
LipcXC58KSIpICsgIihcXC58JCkiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBvID0g
Zi5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoby0tKQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGEgPSBmW29dLCAhaSAmJiBnICE9PSBhLm9yaWdUeXBlIHx8IG4g
JiYgbi5ndWlkICE9PSBhLmd1aWQgfHwgcyAmJiAhcy50ZXN0KGEubmFtZXNwYWNlKSB8fCByICYm
IHIgIT09IGEuc2VsZWN0b3IgJiYgKCIqKiIgIT09IHIgfHwgIWEuc2VsZWN0b3IpIHx8IChmLnNw
bGljZShvLCAxKSwgYS5zZWxlY3RvciAmJiBmLmRlbGVnYXRlQ291bnQtLSwgcC5yZW1vdmUgJiYg
cC5yZW1vdmUuY2FsbChlLCBhKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGZb
b10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWkgJiYgZyAhPT0gYS5vcmlnVHlwZSB8
fCBuICYmIG4uZ3VpZCAhPT0gYS5ndWlkIHx8IHMgJiYgIXMudGVzdChhLm5hbWVzcGFjZSkgfHwg
ciAmJiByICE9PSBhLnNlbGVjdG9yICYmICgiKioiICE9PSByIHx8ICFhLnNlbGVjdG9yKSB8fCAo
Zi5zcGxpY2UobywgMSksIGEuc2VsZWN0b3IgJiYgZi5kZWxlZ2F0ZUNvdW50LS0sIHAucmVtb3Zl
ICYmIHAucmVtb3ZlLmNhbGwoZSwgYSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgdSAmJiAh
Zi5sZW5ndGggJiYgKHAudGVhcmRvd24gJiYgcC50ZWFyZG93bi5jYWxsKGUsIGgsIG0uaGFuZGxl
KSAhPT0gITEgfHwgYi5yZW1vdmVFdmVudChlLCBkLCBtLmhhbmRsZSksIGRlbGV0ZSBjW2RdKQog
ICAgICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAo
ZCBpbiBjKQpAQCAtMTEwMCwxOCArMTE5MywyNiBAQAogICAgICAgICAgICAgaWYgKGwgPSBmID0g
aSA9IGkgfHwgbywgMyAhPT0gaS5ub2RlVHlwZSAmJiA4ICE9PSBpLm5vZGVUeXBlICYmICFudC50
ZXN0KGcgKyBiLmV2ZW50LnRyaWdnZXJlZCkgJiYgKGcuaW5kZXhPZigiLiIpID49IDAgJiYgKG0g
PSBnLnNwbGl0KCIuIiksIGcgPSBtLnNoaWZ0KCksIG0uc29ydCgpKSwgdSA9IDAgPiBnLmluZGV4
T2YoIjoiKSAmJiAib24iICsgZywgbiA9IG5bYi5leHBhbmRvXSA/IG4gOiBuZXcgYi5FdmVudChn
LCAib2JqZWN0IiA9PSB0eXBlb2YgbiAmJiBuKSwgbi5pc1RyaWdnZXIgPSAhMCwgbi5uYW1lc3Bh
Y2UgPSBtLmpvaW4oIi4iKSwgbi5uYW1lc3BhY2VfcmUgPSBuLm5hbWVzcGFjZSA/IFJlZ0V4cCgi
KF58XFwuKSIgKyBtLmpvaW4oIlxcLig/Oi4qXFwufCkiKSArICIoXFwufCQpIikgOiBudWxsLCBu
LnJlc3VsdCA9IHQsIG4udGFyZ2V0IHx8IChuLnRhcmdldCA9IGkpLCByID0gbnVsbCA9PSByID8g
W25dIDogYi5tYWtlQXJyYXkociwgW25dKSwgcCA9IGIuZXZlbnQuc3BlY2lhbFtnXSB8fCB7fSwg
YSB8fCAhcC50cmlnZ2VyIHx8IHAudHJpZ2dlci5hcHBseShpLCByKSAhPT0gITEpKSB7CiAgICAg
ICAgICAgICAgICAgaWYgKCFhICYmICFwLm5vQnViYmxlICYmICFiLmlzV2luZG93KGkpKSB7CiAg
ICAgICAgICAgICAgICAgICAgIGZvciAoYyA9IHAuZGVsZWdhdGVUeXBlIHx8IGcsIG50LnRlc3Qo
YyArIGcpIHx8IChsID0gbC5wYXJlbnROb2RlKTsgbDsgbCA9IGwucGFyZW50Tm9kZSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGgucHVzaChsKSwgZiA9IGw7CisgICAgICAgICAgICAgICAgICAg
ICAgICBoLnB1c2gobCksCisgICAgICAgICAgICAgICAgICAgICAgICBmID0gbDsKICAgICAgICAg
ICAgICAgICAgICAgZiA9PT0gKGkub3duZXJEb2N1bWVudCB8fCBvKSAmJiBoLnB1c2goZi5kZWZh
dWx0VmlldyB8fCBmLnBhcmVudFdpbmRvdyB8fCBlKQogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICBkID0gMDsKICAgICAgICAgICAgICAgICB3aGlsZSAoKGwgPSBoW2QrK10pICYm
ICFuLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpCi0gICAgICAgICAgICAgICAgICAgIG4udHlwZSA9
IGQgPiAxID8gYyA6IHAuYmluZFR5cGUgfHwgZywgcyA9IChiLl9kYXRhKGwsICJldmVudHMiKSB8
fCB7fSlbbi50eXBlXSAmJiBiLl9kYXRhKGwsICJoYW5kbGUiKSwgcyAmJiBzLmFwcGx5KGwsIHIp
LCBzID0gdSAmJiBsW3VdLCBzICYmIGIuYWNjZXB0RGF0YShsKSAmJiBzLmFwcGx5ICYmIHMuYXBw
bHkobCwgcikgPT09ICExICYmIG4ucHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgICAgICAgICAg
ICAgbi50eXBlID0gZCA+IDEgPyBjIDogcC5iaW5kVHlwZSB8fCBnLAorICAgICAgICAgICAgICAg
ICAgICBzID0gKGIuX2RhdGEobCwgImV2ZW50cyIpIHx8IHt9KVtuLnR5cGVdICYmIGIuX2RhdGEo
bCwgImhhbmRsZSIpLAorICAgICAgICAgICAgICAgICAgICBzICYmIHMuYXBwbHkobCwgciksCisg
ICAgICAgICAgICAgICAgICAgIHMgPSB1ICYmIGxbdV0sCisgICAgICAgICAgICAgICAgICAgIHMg
JiYgYi5hY2NlcHREYXRhKGwpICYmIHMuYXBwbHkgJiYgcy5hcHBseShsLCByKSA9PT0gITEgJiYg
bi5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgIGlmIChuLnR5cGUgPSBnLCAhKGEg
fHwgbi5pc0RlZmF1bHRQcmV2ZW50ZWQoKSB8fCBwLl9kZWZhdWx0ICYmIHAuX2RlZmF1bHQuYXBw
bHkoaS5vd25lckRvY3VtZW50LCByKSAhPT0gITEgfHwgImNsaWNrIiA9PT0gZyAmJiBiLm5vZGVO
YW1lKGksICJhIikgfHwgIWIuYWNjZXB0RGF0YShpKSB8fCAhdSB8fCAhaVtnXSB8fCBiLmlzV2lu
ZG93KGkpKSkgewotICAgICAgICAgICAgICAgICAgICBmID0gaVt1XSwgZiAmJiAoaVt1XSA9IG51
bGwpLCBiLmV2ZW50LnRyaWdnZXJlZCA9IGc7CisgICAgICAgICAgICAgICAgICAgIGYgPSBpW3Vd
LAorICAgICAgICAgICAgICAgICAgICBmICYmIChpW3VdID0gbnVsbCksCisgICAgICAgICAgICAg
ICAgICAgIGIuZXZlbnQudHJpZ2dlcmVkID0gZzsKICAgICAgICAgICAgICAgICAgICAgdHJ5IHsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGlbZ10oKQogICAgICAgICAgICAgICAgICAgICB9IGNh
dGNoICh2KSB7fQotICAgICAgICAgICAgICAgICAgICBiLmV2ZW50LnRyaWdnZXJlZCA9IHQsIGYg
JiYgKGlbdV0gPSBmKQorICAgICAgICAgICAgICAgICAgICBiLmV2ZW50LnRyaWdnZXJlZCA9IHQs
CisgICAgICAgICAgICAgICAgICAgIGYgJiYgKGlbdV0gPSBmKQogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICByZXR1cm4gbi5yZXN1bHQKICAgICAgICAgICAgIH0KQEAgLTExMjgs
OSArMTIyOSwxMSBAQAogICAgICAgICAgICAgICAgIGwgPSAoYi5fZGF0YSh0aGlzLCAiZXZlbnRz
IikgfHwge30pW2UudHlwZV0gfHwgW10sCiAgICAgICAgICAgICAgICAgYyA9IGIuZXZlbnQuc3Bl
Y2lhbFtlLnR5cGVdIHx8IHt9OwogICAgICAgICAgICAgaWYgKHVbMF0gPSBlLCBlLmRlbGVnYXRl
VGFyZ2V0ID0gdGhpcywgIWMucHJlRGlzcGF0Y2ggfHwgYy5wcmVEaXNwYXRjaC5jYWxsKHRoaXMs
IGUpICE9PSAhMSkgewotICAgICAgICAgICAgICAgIHMgPSBiLmV2ZW50LmhhbmRsZXJzLmNhbGwo
dGhpcywgZSwgbCksIG4gPSAwOworICAgICAgICAgICAgICAgIHMgPSBiLmV2ZW50LmhhbmRsZXJz
LmNhbGwodGhpcywgZSwgbCksCisgICAgICAgICAgICAgICAgbiA9IDA7CiAgICAgICAgICAgICAg
ICAgd2hpbGUgKChvID0gc1tuKytdKSAmJiAhZS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGUuY3VycmVudFRhcmdldCA9IG8uZWxlbSwgYSA9IDA7CisgICAg
ICAgICAgICAgICAgICAgIGUuY3VycmVudFRhcmdldCA9IG8uZWxlbSwKKyAgICAgICAgICAgICAg
ICAgICAgYSA9IDA7CiAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgoaSA9IG8uaGFuZGxlcnNb
YSsrXSkgJiYgIWUuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQoKSkKICAgICAgICAgICAg
ICAgICAgICAgICAgICghZS5uYW1lc3BhY2VfcmUgfHwgZS5uYW1lc3BhY2VfcmUudGVzdChpLm5h
bWVzcGFjZSkpICYmIChlLmhhbmRsZU9iaiA9IGksIGUuZGF0YSA9IGkuZGF0YSwgciA9ICgoYi5l
dmVudC5zcGVjaWFsW2kub3JpZ1R5cGVdIHx8IHt9KS5oYW5kbGUgfHwgaS5oYW5kbGVyKS5hcHBs
eShvLmVsZW0sIHUpLCByICE9PSB0ICYmIChlLnJlc3VsdCA9IHIpID09PSAhMSAmJiAoZS5wcmV2
ZW50RGVmYXVsdCgpLCBlLnN0b3BQcm9wYWdhdGlvbigpKSkKICAgICAgICAgICAgICAgICB9CkBA
IC0xMTQ5LDcgKzEyNTIsMTAgQEAKICAgICAgICAgICAgICAgICBmb3IgKDsgbCAhPSB0aGlzOyBs
ID0gbC5wYXJlbnROb2RlIHx8IHRoaXMpCiAgICAgICAgICAgICAgICAgICAgIGlmICgxID09PSBs
Lm5vZGVUeXBlICYmIChsLmRpc2FibGVkICE9PSAhMCB8fCAiY2xpY2siICE9PSBlLnR5cGUpKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKG8gPSBbXSwgYSA9IDA7IHUgPiBhOyBhKysp
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG5bYV0sIHIgPSBpLnNlbGVjdG9yICsg
IiAiLCBvW3JdID09PSB0ICYmIChvW3JdID0gaS5uZWVkc0NvbnRleHQgPyBiKHIsIHRoaXMpLmlu
ZGV4KGwpID49IDAgOiBiLmZpbmQociwgdGhpcywgbnVsbCwgW2xdKS5sZW5ndGgpLCBvW3JdICYm
IG8ucHVzaChpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gblthXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByID0gaS5zZWxlY3RvciArICIgIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBvW3JdID09PSB0ICYmIChvW3JdID0gaS5uZWVkc0NvbnRleHQgPyBi
KHIsIHRoaXMpLmluZGV4KGwpID49IDAgOiBiLmZpbmQociwgdGhpcywgbnVsbCwgW2xdKS5sZW5n
dGgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9bcl0gJiYgby5wdXNoKGkpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgby5sZW5ndGggJiYgcy5wdXNoKHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBlbGVtOiBsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRs
ZXJzOiBvCkBAIC0xMTY5LDkgKzEyNzUsMTMgQEAKICAgICAgICAgICAgICAgICBpID0gZS50eXBl
LAogICAgICAgICAgICAgICAgIGEgPSBlLAogICAgICAgICAgICAgICAgIHMgPSB0aGlzLmZpeEhv
b2tzW2ldOwotICAgICAgICAgICAgcyB8fCAodGhpcy5maXhIb29rc1tpXSA9IHMgPSB0dC50ZXN0
KGkpID8gdGhpcy5tb3VzZUhvb2tzIDogZXQudGVzdChpKSA/IHRoaXMua2V5SG9va3MgOiB7fSks
IHIgPSBzLnByb3BzID8gdGhpcy5wcm9wcy5jb25jYXQocy5wcm9wcykgOiB0aGlzLnByb3BzLCBl
ID0gbmV3IGIuRXZlbnQoYSksIHQgPSByLmxlbmd0aDsKKyAgICAgICAgICAgIHMgfHwgKHRoaXMu
Zml4SG9va3NbaV0gPSBzID0gdHQudGVzdChpKSA/IHRoaXMubW91c2VIb29rcyA6IGV0LnRlc3Qo
aSkgPyB0aGlzLmtleUhvb2tzIDoge30pLAorICAgICAgICAgICAgciA9IHMucHJvcHMgPyB0aGlz
LnByb3BzLmNvbmNhdChzLnByb3BzKSA6IHRoaXMucHJvcHMsCisgICAgICAgICAgICBlID0gbmV3
IGIuRXZlbnQoYSksCisgICAgICAgICAgICB0ID0gci5sZW5ndGg7CiAgICAgICAgICAgICB3aGls
ZSAodC0tKQotICAgICAgICAgICAgICAgIG4gPSByW3RdLCBlW25dID0gYVtuXTsKKyAgICAgICAg
ICAgICAgICBuID0gclt0XSwKKyAgICAgICAgICAgICAgICBlW25dID0gYVtuXTsKICAgICAgICAg
ICAgIHJldHVybiBlLnRhcmdldCB8fCAoZS50YXJnZXQgPSBhLnNyY0VsZW1lbnQgfHwgbyksIDMg
PT09IGUudGFyZ2V0Lm5vZGVUeXBlICYmIChlLnRhcmdldCA9IGUudGFyZ2V0LnBhcmVudE5vZGUp
LCBlLm1ldGFLZXkgPSAhIWUubWV0YUtleSwgcy5maWx0ZXIgPyBzLmZpbHRlcihlLCBhKSA6IGUK
ICAgICAgICAgfSwKICAgICAgICAgcHJvcHM6ICJhbHRLZXkgYnViYmxlcyBjYW5jZWxhYmxlIGN0
cmxLZXkgY3VycmVudFRhcmdldCBldmVudFBoYXNlIG1ldGFLZXkgcmVsYXRlZFRhcmdldCBzaGlm
dEtleSB0YXJnZXQgdGltZVN0YW1wIHZpZXcgd2hpY2giLnNwbGl0KCIgIiksCkBAIC0xMjI5LDMx
ICsxMzM5LDM5IEBACiAgICAgICAgICAgICAgICAgaXNTaW11bGF0ZWQ6ICEwLAogICAgICAgICAg
ICAgICAgIG9yaWdpbmFsRXZlbnQ6IHt9CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIHIg
PyBiLmV2ZW50LnRyaWdnZXIoaSwgbnVsbCwgdCkgOiBiLmV2ZW50LmRpc3BhdGNoLmNhbGwodCwg
aSksIGkuaXNEZWZhdWx0UHJldmVudGVkKCkgJiYgbi5wcmV2ZW50RGVmYXVsdCgpCisgICAgICAg
ICAgICByID8gYi5ldmVudC50cmlnZ2VyKGksIG51bGwsIHQpIDogYi5ldmVudC5kaXNwYXRjaC5j
YWxsKHQsIGkpLAorICAgICAgICAgICAgaS5pc0RlZmF1bHRQcmV2ZW50ZWQoKSAmJiBuLnByZXZl
bnREZWZhdWx0KCkKICAgICAgICAgfQotICAgIH0sIGIucmVtb3ZlRXZlbnQgPSBvLnJlbW92ZUV2
ZW50TGlzdGVuZXIgPyBmdW5jdGlvbihlLCB0LCBuKSB7CisgICAgfSwKKyAgICBiLnJlbW92ZUV2
ZW50ID0gby5yZW1vdmVFdmVudExpc3RlbmVyID8gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAg
ICBlLnJlbW92ZUV2ZW50TGlzdGVuZXIgJiYgZS5yZW1vdmVFdmVudExpc3RlbmVyKHQsIG4sICEx
KQogICAgIH0gOiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgIHZhciByID0gIm9uIiArIHQ7
CiAgICAgICAgIGUuZGV0YWNoRXZlbnQgJiYgKHR5cGVvZiBlW3JdID09PSBpICYmIChlW3JdID0g
bnVsbCksIGUuZGV0YWNoRXZlbnQociwgbikpCi0gICAgfSwgYi5FdmVudCA9IGZ1bmN0aW9uKGUs
IG4pIHsKKyAgICB9LAorICAgIGIuRXZlbnQgPSBmdW5jdGlvbihlLCBuKSB7CiAgICAgICAgIHJl
dHVybiB0aGlzIGluc3RhbmNlb2YgYi5FdmVudCA/IChlICYmIGUudHlwZSA/ICh0aGlzLm9yaWdp
bmFsRXZlbnQgPSBlLCB0aGlzLnR5cGUgPSBlLnR5cGUsIHRoaXMuaXNEZWZhdWx0UHJldmVudGVk
ID0gZS5kZWZhdWx0UHJldmVudGVkIHx8IGUucmV0dXJuVmFsdWUgPT09ICExIHx8IGUuZ2V0UHJl
dmVudERlZmF1bHQgJiYgZS5nZXRQcmV2ZW50RGVmYXVsdCgpID8gaXQgOiBvdCkgOiB0aGlzLnR5
cGUgPSBlLCBuICYmIGIuZXh0ZW5kKHRoaXMsIG4pLCB0aGlzLnRpbWVTdGFtcCA9IGUgJiYgZS50
aW1lU3RhbXAgfHwgYi5ub3coKSwgdGhpc1tiLmV4cGFuZG9dID0gITAsIHQpIDogbmV3IGIuRXZl
bnQoZSwgbikKLSAgICB9LCBiLkV2ZW50LnByb3RvdHlwZSA9IHsKKyAgICB9LAorICAgIGIuRXZl
bnQucHJvdG90eXBlID0gewogICAgICAgICBpc0RlZmF1bHRQcmV2ZW50ZWQ6IG90LAogICAgICAg
ICBpc1Byb3BhZ2F0aW9uU3RvcHBlZDogb3QsCiAgICAgICAgIGlzSW1tZWRpYXRlUHJvcGFnYXRp
b25TdG9wcGVkOiBvdCwKICAgICAgICAgcHJldmVudERlZmF1bHQ6IGZ1bmN0aW9uKCkgewogICAg
ICAgICAgICAgdmFyIGUgPSB0aGlzLm9yaWdpbmFsRXZlbnQ7Ci0gICAgICAgICAgICB0aGlzLmlz
RGVmYXVsdFByZXZlbnRlZCA9IGl0LCBlICYmIChlLnByZXZlbnREZWZhdWx0ID8gZS5wcmV2ZW50
RGVmYXVsdCgpIDogZS5yZXR1cm5WYWx1ZSA9ICExKQorICAgICAgICAgICAgdGhpcy5pc0RlZmF1
bHRQcmV2ZW50ZWQgPSBpdCwKKyAgICAgICAgICAgIGUgJiYgKGUucHJldmVudERlZmF1bHQgPyBl
LnByZXZlbnREZWZhdWx0KCkgOiBlLnJldHVyblZhbHVlID0gITEpCiAgICAgICAgIH0sCiAgICAg
ICAgIHN0b3BQcm9wYWdhdGlvbjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICB2YXIgZSA9IHRo
aXMub3JpZ2luYWxFdmVudDsKLSAgICAgICAgICAgIHRoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQg
PSBpdCwgZSAmJiAoZS5zdG9wUHJvcGFnYXRpb24gJiYgZS5zdG9wUHJvcGFnYXRpb24oKSwgZS5j
YW5jZWxCdWJibGUgPSAhMCkKKyAgICAgICAgICAgIHRoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQg
PSBpdCwKKyAgICAgICAgICAgIGUgJiYgKGUuc3RvcFByb3BhZ2F0aW9uICYmIGUuc3RvcFByb3Bh
Z2F0aW9uKCksIGUuY2FuY2VsQnViYmxlID0gITApCiAgICAgICAgIH0sCiAgICAgICAgIHN0b3BJ
bW1lZGlhdGVQcm9wYWdhdGlvbjogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICB0aGlzLmlzSW1t
ZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkID0gaXQsIHRoaXMuc3RvcFByb3BhZ2F0aW9uKCkKKyAg
ICAgICAgICAgIHRoaXMuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQgPSBpdCwKKyAgICAg
ICAgICAgIHRoaXMuc3RvcFByb3BhZ2F0aW9uKCkKICAgICAgICAgfQotICAgIH0sIGIuZWFjaCh7
CisgICAgfSwKKyAgICBiLmVhY2goewogICAgICAgICBtb3VzZWVudGVyOiAibW91c2VvdmVyIiwK
ICAgICAgICAgbW91c2VsZWF2ZTogIm1vdXNlb3V0IgogICAgIH0sIGZ1bmN0aW9uKGUsIHQpIHsK
QEAgLTEyNjgsNyArMTM4Niw4IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuICghaSB8fCBpICE9
PSByICYmICFiLmNvbnRhaW5zKHIsIGkpKSAmJiAoZS50eXBlID0gby5vcmlnVHlwZSwgbiA9IG8u
aGFuZGxlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpLCBlLnR5cGUgPSB0KSwgbgogICAgICAgICAg
ICAgfQogICAgICAgICB9Ci0gICAgfSksIGIuc3VwcG9ydC5zdWJtaXRCdWJibGVzIHx8IChiLmV2
ZW50LnNwZWNpYWwuc3VibWl0ID0geworICAgIH0pLAorICAgIGIuc3VwcG9ydC5zdWJtaXRCdWJi
bGVzIHx8IChiLmV2ZW50LnNwZWNpYWwuc3VibWl0ID0gewogICAgICAgICBzZXR1cDogZnVuY3Rp
b24oKSB7CiAgICAgICAgICAgICByZXR1cm4gYi5ub2RlTmFtZSh0aGlzLCAiZm9ybSIpID8gITEg
OiAoYi5ldmVudC5hZGQodGhpcywgImNsaWNrLl9zdWJtaXQga2V5cHJlc3MuX3N1Ym1pdCIsIGZ1
bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICB2YXIgbiA9IGUudGFyZ2V0LApAQCAtMTI4NCwx
MiArMTQwMywxNCBAQAogICAgICAgICB0ZWFyZG93bjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAg
ICByZXR1cm4gYi5ub2RlTmFtZSh0aGlzLCAiZm9ybSIpID8gITEgOiAoYi5ldmVudC5yZW1vdmUo
dGhpcywgIi5fc3VibWl0IiksIHQpCiAgICAgICAgIH0KLSAgICB9KSwgYi5zdXBwb3J0LmNoYW5n
ZUJ1YmJsZXMgfHwgKGIuZXZlbnQuc3BlY2lhbC5jaGFuZ2UgPSB7CisgICAgfSksCisgICAgYi5z
dXBwb3J0LmNoYW5nZUJ1YmJsZXMgfHwgKGIuZXZlbnQuc3BlY2lhbC5jaGFuZ2UgPSB7CiAgICAg
ICAgIHNldHVwOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgIHJldHVybiBaLnRlc3QodGhpcy5u
b2RlTmFtZSkgPyAoKCJjaGVja2JveCIgPT09IHRoaXMudHlwZSB8fCAicmFkaW8iID09PSB0aGlz
LnR5cGUpICYmIChiLmV2ZW50LmFkZCh0aGlzLCAicHJvcGVydHljaGFuZ2UuX2NoYW5nZSIsIGZ1
bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAiY2hlY2tlZCIgPT09IGUub3JpZ2luYWxFdmVu
dC5wcm9wZXJ0eU5hbWUgJiYgKHRoaXMuX2p1c3RfY2hhbmdlZCA9ICEwKQogICAgICAgICAgICAg
fSksIGIuZXZlbnQuYWRkKHRoaXMsICJjbGljay5fY2hhbmdlIiwgZnVuY3Rpb24oZSkgewotICAg
ICAgICAgICAgICAgIHRoaXMuX2p1c3RfY2hhbmdlZCAmJiAhZS5pc1RyaWdnZXIgJiYgKHRoaXMu
X2p1c3RfY2hhbmdlZCA9ICExKSwgYi5ldmVudC5zaW11bGF0ZSgiY2hhbmdlIiwgdGhpcywgZSwg
ITApCisgICAgICAgICAgICAgICAgdGhpcy5fanVzdF9jaGFuZ2VkICYmICFlLmlzVHJpZ2dlciAm
JiAodGhpcy5fanVzdF9jaGFuZ2VkID0gITEpLAorICAgICAgICAgICAgICAgIGIuZXZlbnQuc2lt
dWxhdGUoImNoYW5nZSIsIHRoaXMsIGUsICEwKQogICAgICAgICAgICAgfSkpLCAhMSkgOiAoYi5l
dmVudC5hZGQodGhpcywgImJlZm9yZWFjdGl2YXRlLl9jaGFuZ2UiLCBmdW5jdGlvbihlKSB7CiAg
ICAgICAgICAgICAgICAgdmFyIHQgPSBlLnRhcmdldDsKICAgICAgICAgICAgICAgICBaLnRlc3Qo
dC5ub2RlTmFtZSkgJiYgIWIuX2RhdGEodCwgImNoYW5nZUJ1YmJsZXMiKSAmJiAoYi5ldmVudC5h
ZGQodCwgImNoYW5nZS5fY2hhbmdlIiwgZnVuY3Rpb24oZSkgewpAQCAtMTMwNCw3ICsxNDI1LDgg
QEAKICAgICAgICAgdGVhcmRvd246IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgcmV0dXJuIGIu
ZXZlbnQucmVtb3ZlKHRoaXMsICIuX2NoYW5nZSIpLCAhWi50ZXN0KHRoaXMubm9kZU5hbWUpCiAg
ICAgICAgIH0KLSAgICB9KSwgYi5zdXBwb3J0LmZvY3VzaW5CdWJibGVzIHx8IGIuZWFjaCh7Cisg
ICAgfSksCisgICAgYi5zdXBwb3J0LmZvY3VzaW5CdWJibGVzIHx8IGIuZWFjaCh7CiAgICAgICAg
IGZvY3VzOiAiZm9jdXNpbiIsCiAgICAgICAgIGJsdXI6ICJmb2N1c291dCIKICAgICB9LCBmdW5j
dGlvbihlLCB0KSB7CkBAIC0xMzIwLDcgKzE0NDIsOCBAQAogICAgICAgICAgICAgICAgIDAgPT09
IC0tbiAmJiBvLnJlbW92ZUV2ZW50TGlzdGVuZXIoZSwgciwgITApCiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KLSAgICB9KSwgYi5mbi5leHRlbmQoeworICAgIH0pLAorICAgIGIuZm4uZXh0ZW5k
KHsKICAgICAgICAgb246IGZ1bmN0aW9uKGUsIG4sIHIsIGksIG8pIHsKICAgICAgICAgICAgIHZh
ciBhLAogICAgICAgICAgICAgICAgIHM7CkBAIC0xMzc4LDcgKzE1MDEsOCBAQAogICAgICAgICAg
ICAgdmFyIHIgPSB0aGlzWzBdOwogICAgICAgICAgICAgcmV0dXJuIHIgPyBiLmV2ZW50LnRyaWdn
ZXIoZSwgbiwgciwgITApIDogdAogICAgICAgICB9Ci0gICAgfSksIGZ1bmN0aW9uKGUsIHQpIHsK
KyAgICB9KSwKKyAgICBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgIHZhciBuLAogICAgICAgICAg
ICAgciwKICAgICAgICAgICAgIGksCkBAIC0xNTE4LDEwICsxNjQyLDE0IEBACiAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoVC5xc2EgJiYgIWgudGVzdChlKSkgewog
ICAgICAgICAgICAgICAgICAgICBpZiAoZiA9ICEwLCBnID0geCwgbSA9IHQsIHYgPSA5ID09PSBz
ICYmIGUsIDEgPT09IHMgJiYgIm9iamVjdCIgIT09IHQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgbCA9IGZ0KGUpLCAoZiA9IHQuZ2V0QXR0cmlidXRl
KCJpZCIpKSA/IGcgPSBmLnJlcGxhY2UoSywgIlxcJCYiKSA6IHQuc2V0QXR0cmlidXRlKCJpZCIs
IGcpLCBnID0gIltpZD0nIiArIGcgKyAiJ10gIiwgdSA9IGwubGVuZ3RoOworICAgICAgICAgICAg
ICAgICAgICAgICAgbCA9IGZ0KGUpLAorICAgICAgICAgICAgICAgICAgICAgICAgKGYgPSB0Lmdl
dEF0dHJpYnV0ZSgiaWQiKSkgPyBnID0gZi5yZXBsYWNlKEssICJcXCQmIikgOiB0LnNldEF0dHJp
YnV0ZSgiaWQiLCBnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGcgPSAiW2lkPSciICsgZyAr
ICInXSAiLAorICAgICAgICAgICAgICAgICAgICAgICAgdSA9IGwubGVuZ3RoOwogICAgICAgICAg
ICAgICAgICAgICAgICAgd2hpbGUgKHUtLSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBs
W3VdID0gZyArIGR0KGxbdV0pOwotICAgICAgICAgICAgICAgICAgICAgICAgbSA9IFYudGVzdChl
KSAmJiB0LnBhcmVudE5vZGUgfHwgdCwgdiA9IGwuam9pbigiLCIpCisgICAgICAgICAgICAgICAg
ICAgICAgICBtID0gVi50ZXN0KGUpICYmIHQucGFyZW50Tm9kZSB8fCB0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgdiA9IGwuam9pbigiLCIpCiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICAgaWYgKHYpCiAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewpAQCAt
MTUzNiw3ICsxNjY0LDggQEAKICAgICAgICAgYSA9IHN0LmlzWE1MID0gZnVuY3Rpb24oZSkgewog
ICAgICAgICAgICAgdmFyIHQgPSBlICYmIChlLm93bmVyRG9jdW1lbnQgfHwgZSkuZG9jdW1lbnRF
bGVtZW50OwogICAgICAgICAgICAgcmV0dXJuIHQgPyAiSFRNTCIgIT09IHQubm9kZU5hbWUgOiAh
MQotICAgICAgICB9LCBjID0gc3Quc2V0RG9jdW1lbnQgPSBmdW5jdGlvbihlKSB7CisgICAgICAg
IH0sCisgICAgICAgIGMgPSBzdC5zZXREb2N1bWVudCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAg
ICAgIHZhciBuID0gZSA/IGUub3duZXJEb2N1bWVudCB8fCBlIDogdzsKICAgICAgICAgICAgIHJl
dHVybiBuICE9PSBwICYmIDkgPT09IG4ubm9kZVR5cGUgJiYgbi5kb2N1bWVudEVsZW1lbnQgPyAo
cCA9IG4sIGYgPSBuLmRvY3VtZW50RWxlbWVudCwgZCA9IGEobiksIFQudGFnTmFtZU5vQ29tbWVu
dHMgPSBhdChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGUuYXBwZW5kQ2hp
bGQobi5jcmVhdGVDb21tZW50KCIiKSksICFlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikubGVu
Z3RoCkBAIC0xNTQ3LDcgKzE2NzYsOSBAQAogICAgICAgICAgICAgfSksIFQuZ2V0QnlDbGFzc05h
bWUgPSBhdChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGUuaW5uZXJIVE1M
ID0gIjxkaXYgY2xhc3M9J2hpZGRlbiBlJz48L2Rpdj48ZGl2IGNsYXNzPSdoaWRkZW4nPjwvZGl2
PiIsIGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSAmJiBlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUo
ImUiKS5sZW5ndGggPyAoZS5sYXN0Q2hpbGQuY2xhc3NOYW1lID0gImUiLCAyID09PSBlLmdldEVs
ZW1lbnRzQnlDbGFzc05hbWUoImUiKS5sZW5ndGgpIDogITEKICAgICAgICAgICAgIH0pLCBULmdl
dEJ5TmFtZSA9IGF0KGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAgICBlLmlkID0geCArIDAs
IGUuaW5uZXJIVE1MID0gIjxhIG5hbWU9JyIgKyB4ICsgIic+PC9hPjxkaXYgbmFtZT0nIiArIHgg
KyAiJz48L2Rpdj4iLCBmLmluc2VydEJlZm9yZShlLCBmLmZpcnN0Q2hpbGQpOworICAgICAgICAg
ICAgICAgIGUuaWQgPSB4ICsgMCwKKyAgICAgICAgICAgICAgICBlLmlubmVySFRNTCA9ICI8YSBu
YW1lPSciICsgeCArICInPjwvYT48ZGl2IG5hbWU9JyIgKyB4ICsgIic+PC9kaXY+IiwKKyAgICAg
ICAgICAgICAgICBmLmluc2VydEJlZm9yZShlLCBmLmZpcnN0Q2hpbGQpOwogICAgICAgICAgICAg
ICAgIHZhciB0ID0gbi5nZXRFbGVtZW50c0J5TmFtZSAmJiBuLmdldEVsZW1lbnRzQnlOYW1lKHgp
Lmxlbmd0aCA9PT0gMiArIG4uZ2V0RWxlbWVudHNCeU5hbWUoeCArIDApLmxlbmd0aDsKICAgICAg
ICAgICAgICAgICByZXR1cm4gVC5nZXRJZE5vdE5hbWUgPSAhbi5nZXRFbGVtZW50QnlJZCh4KSwg
Zi5yZW1vdmVDaGlsZChlKSwgdAogICAgICAgICAgICAgfSksIGkuYXR0ckhhbmRsZSA9IGF0KGZ1
bmN0aW9uKGUpIHsKQEAgLTE1OTgsMTEgKzE3MjksMTkgQEAKICAgICAgICAgICAgIH0sIGkuZmlu
ZC5DTEFTUyA9IFQuZ2V0QnlDbGFzc05hbWUgJiYgZnVuY3Rpb24oZSwgbikgewogICAgICAgICAg
ICAgICAgIHJldHVybiB0eXBlb2Ygbi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lID09PSBBIHx8IGQg
PyB0IDogbi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGUpCiAgICAgICAgICAgICB9LCBnID0gW10s
IGggPSBbIjpmb2N1cyJdLCAoVC5xc2EgPSBydChuLnF1ZXJ5U2VsZWN0b3JBbGwpKSAmJiAoYXQo
ZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgICAgIGUuaW5uZXJIVE1MID0gIjxzZWxlY3Q+PG9w
dGlvbiBzZWxlY3RlZD0nJz48L29wdGlvbj48L3NlbGVjdD4iLCBlLnF1ZXJ5U2VsZWN0b3JBbGwo
IltzZWxlY3RlZF0iKS5sZW5ndGggfHwgaC5wdXNoKCJcXFsiICsgXyArICIqKD86Y2hlY2tlZHxk
aXNhYmxlZHxpc21hcHxtdWx0aXBsZXxyZWFkb25seXxzZWxlY3RlZHx2YWx1ZSkiKSwgZS5xdWVy
eVNlbGVjdG9yQWxsKCI6Y2hlY2tlZCIpLmxlbmd0aCB8fCBoLnB1c2goIjpjaGVja2VkIikKKyAg
ICAgICAgICAgICAgICBlLmlubmVySFRNTCA9ICI8c2VsZWN0PjxvcHRpb24gc2VsZWN0ZWQ9Jyc+
PC9vcHRpb24+PC9zZWxlY3Q+IiwKKyAgICAgICAgICAgICAgICBlLnF1ZXJ5U2VsZWN0b3JBbGwo
IltzZWxlY3RlZF0iKS5sZW5ndGggfHwgaC5wdXNoKCJcXFsiICsgXyArICIqKD86Y2hlY2tlZHxk
aXNhYmxlZHxpc21hcHxtdWx0aXBsZXxyZWFkb25seXxzZWxlY3RlZHx2YWx1ZSkiKSwKKyAgICAg
ICAgICAgICAgICBlLnF1ZXJ5U2VsZWN0b3JBbGwoIjpjaGVja2VkIikubGVuZ3RoIHx8IGgucHVz
aCgiOmNoZWNrZWQiKQogICAgICAgICAgICAgfSksIGF0KGZ1bmN0aW9uKGUpIHsKLSAgICAgICAg
ICAgICAgICBlLmlubmVySFRNTCA9ICI8aW5wdXQgdHlwZT0naGlkZGVuJyBpPScnLz4iLCBlLnF1
ZXJ5U2VsZWN0b3JBbGwoIltpXj0nJ10iKS5sZW5ndGggJiYgaC5wdXNoKCJbKl4kXT0iICsgXyAr
ICIqKD86XCJcInwnJykiKSwgZS5xdWVyeVNlbGVjdG9yQWxsKCI6ZW5hYmxlZCIpLmxlbmd0aCB8
fCBoLnB1c2goIjplbmFibGVkIiwgIjpkaXNhYmxlZCIpLCBlLnF1ZXJ5U2VsZWN0b3JBbGwoIios
OngiKSwgaC5wdXNoKCIsLio6IikKKyAgICAgICAgICAgICAgICBlLmlubmVySFRNTCA9ICI8aW5w
dXQgdHlwZT0naGlkZGVuJyBpPScnLz4iLAorICAgICAgICAgICAgICAgIGUucXVlcnlTZWxlY3Rv
ckFsbCgiW2lePScnXSIpLmxlbmd0aCAmJiBoLnB1c2goIlsqXiRdPSIgKyBfICsgIiooPzpcIlwi
fCcnKSIpLAorICAgICAgICAgICAgICAgIGUucXVlcnlTZWxlY3RvckFsbCgiOmVuYWJsZWQiKS5s
ZW5ndGggfHwgaC5wdXNoKCI6ZW5hYmxlZCIsICI6ZGlzYWJsZWQiKSwKKyAgICAgICAgICAgICAg
ICBlLnF1ZXJ5U2VsZWN0b3JBbGwoIiosOngiKSwKKyAgICAgICAgICAgICAgICBoLnB1c2goIiwu
KjoiKQogICAgICAgICAgICAgfSkpLCAoVC5tYXRjaGVzU2VsZWN0b3IgPSBydChtID0gZi5tYXRj
aGVzU2VsZWN0b3IgfHwgZi5tb3pNYXRjaGVzU2VsZWN0b3IgfHwgZi53ZWJraXRNYXRjaGVzU2Vs
ZWN0b3IgfHwgZi5vTWF0Y2hlc1NlbGVjdG9yIHx8IGYubXNNYXRjaGVzU2VsZWN0b3IpKSAmJiBh
dChmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICAgICAgVC5kaXNjb25uZWN0ZWRNYXRjaCA9IG0u
Y2FsbChlLCAiZGl2IiksIG0uY2FsbChlLCAiW3MhPScnXTp4IiksIGcucHVzaCgiIT0iLCBSKQor
ICAgICAgICAgICAgICAgIFQuZGlzY29ubmVjdGVkTWF0Y2ggPSBtLmNhbGwoZSwgImRpdiIpLAor
ICAgICAgICAgICAgICAgIG0uY2FsbChlLCAiW3MhPScnXTp4IiksCisgICAgICAgICAgICAgICAg
Zy5wdXNoKCIhPSIsIFIpCiAgICAgICAgICAgICB9KSwgaCA9IFJlZ0V4cChoLmpvaW4oInwiKSks
IGcgPSBSZWdFeHAoZy5qb2luKCJ8IikpLCB5ID0gcnQoZi5jb250YWlucykgfHwgZi5jb21wYXJl
RG9jdW1lbnRQb3NpdGlvbiA/IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICB2YXIg
biA9IDkgPT09IGUubm9kZVR5cGUgPyBlLmRvY3VtZW50RWxlbWVudCA6IGUsCiAgICAgICAgICAg
ICAgICAgICAgIHIgPSB0ICYmIHQucGFyZW50Tm9kZTsKQEAgLTE2MzksOSArMTc3OCwxMSBAQAog
ICAgICAgICAgICAgICAgICAgICBpKys7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGkgPyB1dChz
W2ldLCBsW2ldKSA6IHNbaV0gPT09IHcgPyAtMSA6IGxbaV0gPT09IHcgPyAxIDogMAogICAgICAg
ICAgICAgfSwgdSA9ICExLCBbMCwgMF0uc29ydCh2KSwgVC5kZXRlY3REdXBsaWNhdGVzID0gdSwg
cCkgOiBwCi0gICAgICAgIH0sIHN0Lm1hdGNoZXMgPSBmdW5jdGlvbihlLCB0KSB7CisgICAgICAg
IH0sCisgICAgICAgIHN0Lm1hdGNoZXMgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICBy
ZXR1cm4gc3QoZSwgbnVsbCwgbnVsbCwgdCkKLSAgICAgICAgfSwgc3QubWF0Y2hlc1NlbGVjdG9y
ID0gZnVuY3Rpb24oZSwgdCkgeworICAgICAgICB9LAorICAgICAgICBzdC5tYXRjaGVzU2VsZWN0
b3IgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICBpZiAoKGUub3duZXJEb2N1bWVudCB8
fCBlKSAhPT0gcCAmJiBjKGUpLCB0ID0gdC5yZXBsYWNlKFosICI9JyQxJ10iKSwgISghVC5tYXRj
aGVzU2VsZWN0b3IgfHwgZCB8fCBnICYmIGcudGVzdCh0KSB8fCBoLnRlc3QodCkpKQogICAgICAg
ICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gbS5jYWxsKGUsIHQp
OwpAQCAtMTY0OSwxNCArMTc5MCwxOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IG4KICAgICAgICAgICAgICAgICB9IGNhdGNoIChyKSB7fQogICAgICAgICAgICAgcmV0dXJuIHN0
KHQsIHAsIG51bGwsIFtlXSkubGVuZ3RoID4gMAotICAgICAgICB9LCBzdC5jb250YWlucyA9IGZ1
bmN0aW9uKGUsIHQpIHsKKyAgICAgICAgfSwKKyAgICAgICAgc3QuY29udGFpbnMgPSBmdW5jdGlv
bihlLCB0KSB7CiAgICAgICAgICAgICByZXR1cm4gKGUub3duZXJEb2N1bWVudCB8fCBlKSAhPT0g
cCAmJiBjKGUpLCB5KGUsIHQpCi0gICAgICAgIH0sIHN0LmF0dHIgPSBmdW5jdGlvbihlLCB0KSB7
CisgICAgICAgIH0sCisgICAgICAgIHN0LmF0dHIgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAg
ICAgICB2YXIgbjsKICAgICAgICAgICAgIHJldHVybiAoZS5vd25lckRvY3VtZW50IHx8IGUpICE9
PSBwICYmIGMoZSksIGQgfHwgKHQgPSB0LnRvTG93ZXJDYXNlKCkpLCAobiA9IGkuYXR0ckhhbmRs
ZVt0XSkgPyBuKGUpIDogZCB8fCBULmF0dHJpYnV0ZXMgPyBlLmdldEF0dHJpYnV0ZSh0KSA6ICgo
biA9IGUuZ2V0QXR0cmlidXRlTm9kZSh0KSkgfHwgZS5nZXRBdHRyaWJ1dGUodCkpICYmIGVbdF0g
PT09ICEwID8gdCA6IG4gJiYgbi5zcGVjaWZpZWQgPyBuLnZhbHVlIDogbnVsbAotICAgICAgICB9
LCBzdC5lcnJvciA9IGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgfSwKKyAgICAgICAgc3QuZXJyb3Ig
PSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICB0aHJvdyBFcnJvcigiU3ludGF4IGVycm9yLCB1
bnJlY29nbml6ZWQgZXhwcmVzc2lvbjogIiArIGUpCi0gICAgICAgIH0sIHN0LnVuaXF1ZVNvcnQg
PSBmdW5jdGlvbihlKSB7CisgICAgICAgIH0sCisgICAgICAgIHN0LnVuaXF1ZVNvcnQgPSBmdW5j
dGlvbihlKSB7CiAgICAgICAgICAgICB2YXIgdCwKICAgICAgICAgICAgICAgICBuID0gW10sCiAg
ICAgICAgICAgICAgICAgciA9IDEsCkBAIC0xNzIwLDcgKzE4NjUsOCBAQAogICAgICAgICAgICAg
ICAgIGZvciAoOyB0ID0gZVtyXTsgcisrKQogICAgICAgICAgICAgICAgICAgICBuICs9IG8odCk7
CiAgICAgICAgICAgICByZXR1cm4gbgotICAgICAgICB9LCBpID0gc3Quc2VsZWN0b3JzID0gewor
ICAgICAgICB9LAorICAgICAgICBpID0gc3Quc2VsZWN0b3JzID0gewogICAgICAgICAgICAgY2Fj
aGVMZW5ndGg6IDUwLAogICAgICAgICAgICAgY3JlYXRlUHNldWRvOiBvdCwKICAgICAgICAgICAg
IG1hdGNoOiBVLApAQCAtMTgwMyw3ICsxOTQ5LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiAhMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoaCA9IFthID8gbS5maXJzdENoaWxkIDogbS5sYXN0
Q2hpbGRdLCBhICYmIHYpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IG1b
eF0gfHwgKG1beF0gPSB7fSksIGwgPSBjW2VdIHx8IFtdLCBkID0gbFswXSA9PT0gTiAmJiBsWzFd
LCBmID0gbFswXSA9PT0gTiAmJiBsWzJdLCBwID0gZCAmJiBtLmNoaWxkTm9kZXNbZF07CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBtW3hdIHx8IChtW3hdID0ge30pLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gY1tlXSB8fCBbXSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZCA9IGxbMF0gPT09IE4gJiYgbFsxXSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZiA9IGxbMF0gPT09IE4gJiYgbFsyXSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcCA9IGQgJiYgbS5jaGlsZE5vZGVzW2RdOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAocCA9ICsrZCAmJiBwICYmIHBbZ10gfHwgKGYg
PSBkID0gMCkgfHwgaC5wb3AoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmICgxID09PSBwLm5vZGVUeXBlICYmICsrZiAmJiBwID09PSB0KSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY1tlXSA9IFtOLCBkLCBmXTsKQEAgLTE4MjcsNyAr
MTk3Nyw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHIoZSwgdCksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYSA9IG8ubGVuZ3RoOwogICAgICAgICAgICAgICAgICAg
ICAgICAgd2hpbGUgKGEtLSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gTS5jYWxs
KGUsIG9bYV0pLCBlW2ldID0gIShuW2ldID0gb1thXSkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpID0gTS5jYWxsKGUsIG9bYV0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVb
aV0gPSAhKG5baV0gPSBvW2FdKQogICAgICAgICAgICAgICAgICAgICB9KSA6IGZ1bmN0aW9uKGUp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByKGUsIDAsIG4pCiAgICAgICAgICAg
ICAgICAgICAgIH0pIDogcgpAQCAtMTk3Miw5ICsyMTIzLDEzIEBACiAgICAgICAgICAgICAgICAg
YyA9IEVbZSArICIgIl07CiAgICAgICAgICAgICBpZiAoYykKICAgICAgICAgICAgICAgICByZXR1
cm4gdCA/IDAgOiBjLnNsaWNlKDApOwotICAgICAgICAgICAgcyA9IGUsIHUgPSBbXSwgbCA9IGku
cHJlRmlsdGVyOworICAgICAgICAgICAgcyA9IGUsCisgICAgICAgICAgICB1ID0gW10sCisgICAg
ICAgICAgICBsID0gaS5wcmVGaWx0ZXI7CiAgICAgICAgICAgICB3aGlsZSAocykgewotICAgICAg
ICAgICAgICAgICghbiB8fCAociA9ICQuZXhlYyhzKSkpICYmIChyICYmIChzID0gcy5zbGljZShy
WzBdLmxlbmd0aCkgfHwgcyksIHUucHVzaChvID0gW10pKSwgbiA9ICExLCAociA9IEkuZXhlYyhz
KSkgJiYgKG4gPSByLnNoaWZ0KCksIG8ucHVzaCh7CisgICAgICAgICAgICAgICAgKCFuIHx8IChy
ID0gJC5leGVjKHMpKSkgJiYgKHIgJiYgKHMgPSBzLnNsaWNlKHJbMF0ubGVuZ3RoKSB8fCBzKSwg
dS5wdXNoKG8gPSBbXSkpLAorICAgICAgICAgICAgICAgIG4gPSAhMSwKKyAgICAgICAgICAgICAg
ICAociA9IEkuZXhlYyhzKSkgJiYgKG4gPSByLnNoaWZ0KCksIG8ucHVzaCh7CiAgICAgICAgICAg
ICAgICAgICAgIHZhbHVlOiBuLAogICAgICAgICAgICAgICAgICAgICB0eXBlOiByWzBdLnJlcGxh
Y2UoVywgIiAiKQogICAgICAgICAgICAgICAgIH0pLCBzID0gcy5zbGljZShuLmxlbmd0aCkpOwpA
QCAtMjA1NSwxNCArMjIxMCwxNyBAQAogICAgICAgICAgICAgICAgICAgICBtID0gIWUgfHwgIW8g
JiYgdCA/IGcgOiBtdChnLCBmLCBlLCBzLCB1KSwKICAgICAgICAgICAgICAgICAgICAgeSA9IG4g
PyBpIHx8IChvID8gZSA6IGggfHwgcikgPyBbXSA6IGEgOiBtOwogICAgICAgICAgICAgICAgIGlm
IChuICYmIG4obSwgeSwgcywgdSksIHIpIHsKLSAgICAgICAgICAgICAgICAgICAgbCA9IG10KHks
IGQpLCByKGwsIFtdLCBzLCB1KSwgYyA9IGwubGVuZ3RoOworICAgICAgICAgICAgICAgICAgICBs
ID0gbXQoeSwgZCksCisgICAgICAgICAgICAgICAgICAgIHIobCwgW10sIHMsIHUpLAorICAgICAg
ICAgICAgICAgICAgICBjID0gbC5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChj
LS0pCiAgICAgICAgICAgICAgICAgICAgICAgICAocCA9IGxbY10pICYmICh5W2RbY11dID0gISht
W2RbY11dID0gcCkpCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmIChvKSB7
CiAgICAgICAgICAgICAgICAgICAgIGlmIChpIHx8IGUpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IFtdLCBjID0geS5s
ZW5ndGg7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IFtdLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGMgPSB5Lmxlbmd0aDsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB3aGlsZSAoYy0tKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocCA9IHlbY10p
ICYmIGwucHVzaChtW2NdID0gcCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaShudWxs
LCB5ID0gW10sIGwsIHUpCkBAIC0yMDcyLDcgKzIyMzAsOCBAQAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChwID0geVtjXSkgJiYgKGwgPSBpID8gTS5jYWxsKG8sIHApIDogZltjXSkgPiAt
MSAmJiAob1tsXSA9ICEoYVtsXSA9IHApKQogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHkgPSBtdCh5ID09PSBhID8geS5z
cGxpY2UoaCwgeS5sZW5ndGgpIDogeSksIGkgPyBpKG51bGwsIGEsIHksIHUpIDogSC5hcHBseShh
LCB5KQorICAgICAgICAgICAgICAgICAgICB5ID0gbXQoeSA9PT0gYSA/IHkuc3BsaWNlKGgsIHku
bGVuZ3RoKSA6IHkpLAorICAgICAgICAgICAgICAgICAgICBpID8gaShudWxsLCBhLCB5LCB1KSA6
IEguYXBwbHkoYSwgeSkKICAgICAgICAgICAgIH0pCiAgICAgICAgIH0KICAgICAgICAgZnVuY3Rp
b24gdnQoZSkgewpAQCAtMjE0NCw3ICsyMzAzLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHhbYl0gfHwgeVtiXSB8fCAoeVtiXSA9IEwuY2FsbChmKSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgeSA9IG10KHkpCiAgICAgICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgICAgICAgICBILmFwcGx5KGYsIHkpLCB3ICYmICFzICYmIHkubGVu
Z3RoID4gMCAmJiB2ICsgdC5sZW5ndGggPiAxICYmIHN0LnVuaXF1ZVNvcnQoZikKKyAgICAgICAg
ICAgICAgICAgICAgICAgIEguYXBwbHkoZiwgeSksCisgICAgICAgICAgICAgICAgICAgICAgICB3
ICYmICFzICYmIHkubGVuZ3RoID4gMCAmJiB2ICsgdC5sZW5ndGggPiAxICYmIHN0LnVuaXF1ZVNv
cnQoZikKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICByZXR1cm4g
dyAmJiAoTiA9IGssIGwgPSBUKSwgeAogICAgICAgICAgICAgICAgIH07CkBAIC0yMTU2LDkgKzIz
MTYsMTEgQEAKICAgICAgICAgICAgICAgICBpID0gW10sCiAgICAgICAgICAgICAgICAgbyA9IFNb
ZSArICIgIl07CiAgICAgICAgICAgICBpZiAoIW8pIHsKLSAgICAgICAgICAgICAgICB0IHx8ICh0
ID0gZnQoZSkpLCBuID0gdC5sZW5ndGg7CisgICAgICAgICAgICAgICAgdCB8fCAodCA9IGZ0KGUp
KSwKKyAgICAgICAgICAgICAgICBuID0gdC5sZW5ndGg7CiAgICAgICAgICAgICAgICAgd2hpbGUg
KG4tLSkKLSAgICAgICAgICAgICAgICAgICAgbyA9IHZ0KHRbbl0pLCBvW3hdID8gci5wdXNoKG8p
IDogaS5wdXNoKG8pOworICAgICAgICAgICAgICAgICAgICBvID0gdnQodFtuXSksCisgICAgICAg
ICAgICAgICAgICAgIG9beF0gPyByLnB1c2gobykgOiBpLnB1c2gobyk7CiAgICAgICAgICAgICAg
ICAgbyA9IFMoZSwgYnQoaSwgcikpCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4g
bwpAQCAtMjE5OCw3ICsyMzYwLDE3IEBACiAgICAgICAgIH0KICAgICAgICAgaS5wc2V1ZG9zLm50
aCA9IGkucHNldWRvcy5lcTsKICAgICAgICAgZnVuY3Rpb24gVHQoKSB7fQotICAgICAgICBpLmZp
bHRlcnMgPSBUdC5wcm90b3R5cGUgPSBpLnBzZXVkb3MsIGkuc2V0RmlsdGVycyA9IG5ldyBUdCwg
YygpLCBzdC5hdHRyID0gYi5hdHRyLCBiLmZpbmQgPSBzdCwgYi5leHByID0gc3Quc2VsZWN0b3Jz
LCBiLmV4cHJbIjoiXSA9IGIuZXhwci5wc2V1ZG9zLCBiLnVuaXF1ZSA9IHN0LnVuaXF1ZVNvcnQs
IGIudGV4dCA9IHN0LmdldFRleHQsIGIuaXNYTUxEb2MgPSBzdC5pc1hNTCwgYi5jb250YWlucyA9
IHN0LmNvbnRhaW5zCisgICAgICAgIGkuZmlsdGVycyA9IFR0LnByb3RvdHlwZSA9IGkucHNldWRv
cywKKyAgICAgICAgaS5zZXRGaWx0ZXJzID0gbmV3IFR0LAorICAgICAgICBjKCksCisgICAgICAg
IHN0LmF0dHIgPSBiLmF0dHIsCisgICAgICAgIGIuZmluZCA9IHN0LAorICAgICAgICBiLmV4cHIg
PSBzdC5zZWxlY3RvcnMsCisgICAgICAgIGIuZXhwclsiOiJdID0gYi5leHByLnBzZXVkb3MsCisg
ICAgICAgIGIudW5pcXVlID0gc3QudW5pcXVlU29ydCwKKyAgICAgICAgYi50ZXh0ID0gc3QuZ2V0
VGV4dCwKKyAgICAgICAgYi5pc1hNTERvYyA9IHN0LmlzWE1MLAorICAgICAgICBiLmNvbnRhaW5z
ID0gc3QuY29udGFpbnMKICAgICB9KGUpOwogICAgIHZhciBhdCA9IC9VbnRpbCQvLAogICAgICAg
ICBzdCA9IC9eKD86cGFyZW50c3xwcmV2KD86VW50aWx8QWxsKSkvLApAQCAtMjI3NCw3ICsyNDQ2
LDggQEAKICAgICAgICAgYWRkQmFjazogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgcmV0dXJu
IHRoaXMuYWRkKG51bGwgPT0gZSA/IHRoaXMucHJldk9iamVjdCA6IHRoaXMucHJldk9iamVjdC5m
aWx0ZXIoZSkpCiAgICAgICAgIH0KLSAgICB9KSwgYi5mbi5hbmRTZWxmID0gYi5mbi5hZGRCYWNr
OworICAgIH0pLAorICAgIGIuZm4uYW5kU2VsZiA9IGIuZm4uYWRkQmFjazsKICAgICBmdW5jdGlv
biBwdChlLCB0KSB7CiAgICAgICAgIGRvIGUgPSBlW3RdOwogICAgICAgICB3aGlsZSAoZSAmJiAx
ICE9PSBlLm5vZGVUeXBlKTsKQEAgLTIzMjMsNyArMjQ5Niw4IEBACiAgICAgICAgICAgICB2YXIg
aSA9IGIubWFwKHRoaXMsIHQsIG4pOwogICAgICAgICAgICAgcmV0dXJuIGF0LnRlc3QoZSkgfHwg
KHIgPSBuKSwgciAmJiAic3RyaW5nIiA9PSB0eXBlb2YgciAmJiAoaSA9IGIuZmlsdGVyKHIsIGkp
KSwgaSA9IHRoaXMubGVuZ3RoID4gMSAmJiAhY3RbZV0gPyBiLnVuaXF1ZShpKSA6IGksIHRoaXMu
bGVuZ3RoID4gMSAmJiBzdC50ZXN0KGUpICYmIChpID0gaS5yZXZlcnNlKCkpLCB0aGlzLnB1c2hT
dGFjayhpKQogICAgICAgICB9Ci0gICAgfSksIGIuZXh0ZW5kKHsKKyAgICB9KSwKKyAgICBiLmV4
dGVuZCh7CiAgICAgICAgIGZpbHRlcjogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAg
cmV0dXJuIG4gJiYgKGUgPSAiOm5vdCgiICsgZSArICIpIiksIDEgPT09IHQubGVuZ3RoID8gYi5m
aW5kLm1hdGNoZXNTZWxlY3Rvcih0WzBdLCBlKSA/IFt0WzBdXSA6IFtdIDogYi5maW5kLm1hdGNo
ZXMoZSwgdCkKICAgICAgICAgfSwKQEAgLTIzMzEsNyArMjUwNSw4IEBACiAgICAgICAgICAgICB2
YXIgaSA9IFtdLAogICAgICAgICAgICAgICAgIG8gPSBlW25dOwogICAgICAgICAgICAgd2hpbGUg
KG8gJiYgOSAhPT0gby5ub2RlVHlwZSAmJiAociA9PT0gdCB8fCAxICE9PSBvLm5vZGVUeXBlIHx8
ICFiKG8pLmlzKHIpKSkKLSAgICAgICAgICAgICAgICAxID09PSBvLm5vZGVUeXBlICYmIGkucHVz
aChvKSwgbyA9IG9bbl07CisgICAgICAgICAgICAgICAgMSA9PT0gby5ub2RlVHlwZSAmJiBpLnB1
c2gobyksCisgICAgICAgICAgICAgICAgbyA9IG9bbl07CiAgICAgICAgICAgICByZXR1cm4gaQog
ICAgICAgICB9LAogICAgICAgICBzaWJsaW5nOiBmdW5jdGlvbihlLCB0KSB7CkBAIC0yMzk4LDcg
KzI1NzMsMTAgQEAKICAgICAgICAgfSwKICAgICAgICAganQgPSBkdChvKSwKICAgICAgICAgRHQg
PSBqdC5hcHBlbmRDaGlsZChvLmNyZWF0ZUVsZW1lbnQoImRpdiIpKTsKLSAgICBBdC5vcHRncm91
cCA9IEF0Lm9wdGlvbiwgQXQudGJvZHkgPSBBdC50Zm9vdCA9IEF0LmNvbGdyb3VwID0gQXQuY2Fw
dGlvbiA9IEF0LnRoZWFkLCBBdC50aCA9IEF0LnRkLCBiLmZuLmV4dGVuZCh7CisgICAgQXQub3B0
Z3JvdXAgPSBBdC5vcHRpb24sCisgICAgQXQudGJvZHkgPSBBdC50Zm9vdCA9IEF0LmNvbGdyb3Vw
ID0gQXQuY2FwdGlvbiA9IEF0LnRoZWFkLAorICAgIEF0LnRoID0gQXQudGQsCisgICAgYi5mbi5l
eHRlbmQoewogICAgICAgICB0ZXh0OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICByZXR1cm4g
Yi5hY2Nlc3ModGhpcywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgIHJldHVybiBlID09
PSB0ID8gYi50ZXh0KHRoaXMpIDogdGhpcy5lbXB0eSgpLmFwcGVuZCgodGhpc1swXSAmJiB0aGlz
WzBdLm93bmVyRG9jdW1lbnQgfHwgbykuY3JlYXRlVGV4dE5vZGUoZSkpCkBAIC0yNDExLDcgKzI1
ODksOCBAQAogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgaWYgKHRoaXNbMF0pIHsK
ICAgICAgICAgICAgICAgICB2YXIgdCA9IGIoZSwgdGhpc1swXS5vd25lckRvY3VtZW50KS5lcSgw
KS5jbG9uZSghMCk7Ci0gICAgICAgICAgICAgICAgdGhpc1swXS5wYXJlbnROb2RlICYmIHQuaW5z
ZXJ0QmVmb3JlKHRoaXNbMF0pLCB0Lm1hcChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICB0
aGlzWzBdLnBhcmVudE5vZGUgJiYgdC5pbnNlcnRCZWZvcmUodGhpc1swXSksCisgICAgICAgICAg
ICAgICAgdC5tYXAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhp
czsKICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGUuZmlyc3RDaGlsZCAmJiAxID09PSBlLmZp
cnN0Q2hpbGQubm9kZVR5cGUpCiAgICAgICAgICAgICAgICAgICAgICAgICBlID0gZS5maXJzdENo
aWxkOwpAQCAtMjQ5NCw3ICsyNjczLDggQEAKICAgICAgICAgICAgICAgICAgICAgZSA9IGUucmVw
bGFjZSh2dCwgIjwkMT48LyQyPiIpOwogICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgZm9yICg7IGkgPiByOyByKyspCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbiA9IHRoaXNbcl0gfHwge30sIDEgPT09IG4ubm9kZVR5cGUgJiYgKGIuY2xlYW5E
YXRhKE90KG4sICExKSksIG4uaW5uZXJIVE1MID0gZSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbiA9IHRoaXNbcl0gfHwge30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSA9
PT0gbi5ub2RlVHlwZSAmJiAoYi5jbGVhbkRhdGEoT3QobiwgITEpKSwgbi5pbm5lckhUTUwgPSBl
KTsKICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSAwCiAgICAgICAgICAgICAgICAgICAgIH0g
Y2F0Y2ggKG8pIHt9CiAgICAgICAgICAgICAgICAgfQpAQCAtMjUyOSwxNCArMjcwOSwxOCBAQAog
ICAgICAgICAgICAgaWYgKG0gfHwgISgxID49IHAgfHwgInN0cmluZyIgIT0gdHlwZW9mIGcgfHwg
Yi5zdXBwb3J0LmNoZWNrQ2xvbmUpICYmIEN0LnRlc3QoZykpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIHRoaXMuZWFjaChmdW5jdGlvbihpKSB7CiAgICAgICAgICAgICAgICAgICAgIHZhciBvID0g
ZC5lcShpKTsKLSAgICAgICAgICAgICAgICAgICAgbSAmJiAoZVswXSA9IGcuY2FsbCh0aGlzLCBp
LCBuID8gby5odG1sKCkgOiB0KSksIG8uZG9tTWFuaXAoZSwgbiwgcikKKyAgICAgICAgICAgICAg
ICAgICAgbSAmJiAoZVswXSA9IGcuY2FsbCh0aGlzLCBpLCBuID8gby5odG1sKCkgOiB0KSksCisg
ICAgICAgICAgICAgICAgICAgIG8uZG9tTWFuaXAoZSwgbiwgcikKICAgICAgICAgICAgICAgICB9
KTsKICAgICAgICAgICAgIGlmIChwICYmIChsID0gYi5idWlsZEZyYWdtZW50KGUsIHRoaXNbMF0u
b3duZXJEb2N1bWVudCwgITEsIHRoaXMpLCBpID0gbC5maXJzdENoaWxkLCAxID09PSBsLmNoaWxk
Tm9kZXMubGVuZ3RoICYmIChsID0gaSksIGkpKSB7CiAgICAgICAgICAgICAgICAgZm9yIChuID0g
biAmJiBiLm5vZGVOYW1lKGksICJ0ciIpLCBzID0gYi5tYXAoT3QobCwgInNjcmlwdCIpLCBIdCks
IGEgPSBzLmxlbmd0aDsgcCA+IGM7IGMrKykKLSAgICAgICAgICAgICAgICAgICAgbyA9IGwsIGMg
IT09IGggJiYgKG8gPSBiLmNsb25lKG8sICEwLCAhMCksIGEgJiYgYi5tZXJnZShzLCBPdChvLCAi
c2NyaXB0IikpKSwgci5jYWxsKG4gJiYgYi5ub2RlTmFtZSh0aGlzW2NdLCAidGFibGUiKSA/IEx0
KHRoaXNbY10sICJ0Ym9keSIpIDogdGhpc1tjXSwgbywgYyk7CisgICAgICAgICAgICAgICAgICAg
IG8gPSBsLAorICAgICAgICAgICAgICAgICAgICBjICE9PSBoICYmIChvID0gYi5jbG9uZShvLCAh
MCwgITApLCBhICYmIGIubWVyZ2UocywgT3QobywgInNjcmlwdCIpKSksCisgICAgICAgICAgICAg
ICAgICAgIHIuY2FsbChuICYmIGIubm9kZU5hbWUodGhpc1tjXSwgInRhYmxlIikgPyBMdCh0aGlz
W2NdLCAidGJvZHkiKSA6IHRoaXNbY10sIG8sIGMpOwogICAgICAgICAgICAgICAgIGlmIChhKQog
ICAgICAgICAgICAgICAgICAgICBmb3IgKHUgPSBzW3MubGVuZ3RoIC0gMV0ub3duZXJEb2N1bWVu
dCwgYi5tYXAocywgcXQpLCBjID0gMDsgYSA+IGM7IGMrKykKLSAgICAgICAgICAgICAgICAgICAg
ICAgIG8gPSBzW2NdLCBrdC50ZXN0KG8udHlwZSB8fCAiIikgJiYgIWIuX2RhdGEobywgImdsb2Jh
bEV2YWwiKSAmJiBiLmNvbnRhaW5zKHUsIG8pICYmIChvLnNyYyA/IGIuYWpheCh7CisgICAgICAg
ICAgICAgICAgICAgICAgICBvID0gc1tjXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGt0LnRl
c3Qoby50eXBlIHx8ICIiKSAmJiAhYi5fZGF0YShvLCAiZ2xvYmFsRXZhbCIpICYmIGIuY29udGFp
bnModSwgbykgJiYgKG8uc3JjID8gYi5hamF4KHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1cmw6IG8uc3JjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICJHRVQiLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAic2NyaXB0IiwKQEAgLTI1NzUs
NyArMjc1OSw4IEBACiAgICAgICAgICAgICAgICAgYSA9IGIuX2RhdGEodCwgbyksCiAgICAgICAg
ICAgICAgICAgcyA9IG8uZXZlbnRzOwogICAgICAgICAgICAgaWYgKHMpIHsKLSAgICAgICAgICAg
ICAgICBkZWxldGUgYS5oYW5kbGUsIGEuZXZlbnRzID0ge307CisgICAgICAgICAgICAgICAgZGVs
ZXRlIGEuaGFuZGxlLAorICAgICAgICAgICAgICAgIGEuZXZlbnRzID0ge307CiAgICAgICAgICAg
ICAgICAgZm9yIChuIGluIHMpCiAgICAgICAgICAgICAgICAgICAgIGZvciAociA9IDAsIGkgPSBz
W25dLmxlbmd0aDsgaSA+IHI7IHIrKykKICAgICAgICAgICAgICAgICAgICAgICAgIGIuZXZlbnQu
YWRkKHQsIG4sIHNbbl1bcl0pCkBAIC0yNjExLDcgKzI3OTYsOSBAQAogICAgICAgICAgICAgICAg
IG8gPSBiKGUpLAogICAgICAgICAgICAgICAgIGEgPSBvLmxlbmd0aCAtIDE7CiAgICAgICAgICAg
ICBmb3IgKDsgYSA+PSByOyByKyspCi0gICAgICAgICAgICAgICAgbiA9IHIgPT09IGEgPyB0aGlz
IDogdGhpcy5jbG9uZSghMCksIGIob1tyXSlbdF0obiksIGQuYXBwbHkoaSwgbi5nZXQoKSk7Cisg
ICAgICAgICAgICAgICAgbiA9IHIgPT09IGEgPyB0aGlzIDogdGhpcy5jbG9uZSghMCksCisgICAg
ICAgICAgICAgICAgYihvW3JdKVt0XShuKSwKKyAgICAgICAgICAgICAgICBkLmFwcGx5KGksIG4u
Z2V0KCkpOwogICAgICAgICAgICAgcmV0dXJuIHRoaXMucHVzaFN0YWNrKGkpCiAgICAgICAgIH0K
ICAgICB9KTsKQEAgLTI2NjQsMjEgKzI4NTEsMjkgQEAKICAgICAgICAgICAgICAgICAgICAgaWYg
KCJvYmplY3QiID09PSBiLnR5cGUobykpCiAgICAgICAgICAgICAgICAgICAgICAgICBiLm1lcmdl
KGQsIG8ubm9kZVR5cGUgPyBbb10gOiBvKTsKICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAo
d3QudGVzdChvKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHMgfHwgZi5hcHBlbmRD
aGlsZCh0LmNyZWF0ZUVsZW1lbnQoImRpdiIpKSwgdSA9IChidC5leGVjKG8pIHx8IFsiIiwgIiJd
KVsxXS50b0xvd2VyQ2FzZSgpLCBjID0gQXRbdV0gfHwgQXQuX2RlZmF1bHQsIHMuaW5uZXJIVE1M
ID0gY1sxXSArIG8ucmVwbGFjZSh2dCwgIjwkMT48LyQyPiIpICsgY1syXSwgaSA9IGNbMF07Cisg
ICAgICAgICAgICAgICAgICAgICAgICBzID0gcyB8fCBmLmFwcGVuZENoaWxkKHQuY3JlYXRlRWxl
bWVudCgiZGl2IikpLAorICAgICAgICAgICAgICAgICAgICAgICAgdSA9IChidC5leGVjKG8pIHx8
IFsiIiwgIiJdKVsxXS50b0xvd2VyQ2FzZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgYyA9
IEF0W3VdIHx8IEF0Ll9kZWZhdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgcy5pbm5lckhU
TUwgPSBjWzFdICsgby5yZXBsYWNlKHZ0LCAiPCQxPjwvJDI+IikgKyBjWzJdLAorICAgICAgICAg
ICAgICAgICAgICAgICAgaSA9IGNbMF07CiAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAo
aS0tKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBzLmxhc3RDaGlsZDsKICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICghYi5zdXBwb3J0LmxlYWRpbmdXaGl0ZXNwYWNlICYmIHl0
LnRlc3QobykgJiYgZC5wdXNoKHQuY3JlYXRlVGV4dE5vZGUoeXQuZXhlYyhvKVswXSkpLCAhYi5z
dXBwb3J0LnRib2R5KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9ICJ0YWJsZSIg
IT09IHUgfHwgeHQudGVzdChvKSA/ICI8dGFibGU+IiAhPT0gY1sxXSB8fCB4dC50ZXN0KG8pID8g
MCA6IHMgOiBzLmZpcnN0Q2hpbGQsIGkgPSBvICYmIG8uY2hpbGROb2Rlcy5sZW5ndGg7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbyA9ICJ0YWJsZSIgIT09IHUgfHwgeHQudGVzdChvKSA/
ICI8dGFibGU+IiAhPT0gY1sxXSB8fCB4dC50ZXN0KG8pID8gMCA6IHMgOiBzLmZpcnN0Q2hpbGQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG8gJiYgby5jaGlsZE5vZGVzLmxlbmd0
aDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoaS0tKQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBiLm5vZGVOYW1lKGwgPSBvLmNoaWxkTm9kZXNbaV0sICJ0Ym9k
eSIpICYmICFsLmNoaWxkTm9kZXMubGVuZ3RoICYmIG8ucmVtb3ZlQ2hpbGQobCkKICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIGIubWVyZ2UoZCwgcy5j
aGlsZE5vZGVzKSwgcy50ZXh0Q29udGVudCA9ICIiOworICAgICAgICAgICAgICAgICAgICAgICAg
Yi5tZXJnZShkLCBzLmNoaWxkTm9kZXMpLAorICAgICAgICAgICAgICAgICAgICAgICAgcy50ZXh0
Q29udGVudCA9ICIiOwogICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHMuZmlyc3RDaGls
ZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLnJlbW92ZUNoaWxkKHMuZmlyc3RDaGls
ZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBzID0gZi5sYXN0Q2hpbGQKICAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICBkLnB1c2godC5jcmVhdGVU
ZXh0Tm9kZShvKSk7Ci0gICAgICAgICAgICBzICYmIGYucmVtb3ZlQ2hpbGQocyksIGIuc3VwcG9y
dC5hcHBlbmRDaGVja2VkIHx8IGIuZ3JlcChPdChkLCAiaW5wdXQiKSwgQnQpLCBoID0gMDsKKyAg
ICAgICAgICAgIHMgJiYgZi5yZW1vdmVDaGlsZChzKSwKKyAgICAgICAgICAgIGIuc3VwcG9ydC5h
cHBlbmRDaGVja2VkIHx8IGIuZ3JlcChPdChkLCAiaW5wdXQiKSwgQnQpLAorICAgICAgICAgICAg
aCA9IDA7CiAgICAgICAgICAgICB3aGlsZSAobyA9IGRbaCsrXSkKICAgICAgICAgICAgICAgICBp
ZiAoKCFyIHx8IC0xID09PSBiLmluQXJyYXkobywgcikpICYmIChhID0gYi5jb250YWlucyhvLm93
bmVyRG9jdW1lbnQsIG8pLCBzID0gT3QoZi5hcHBlbmRDaGlsZChvKSwgInNjcmlwdCIpLCBhICYm
IE10KHMpLCBuKSkgewogICAgICAgICAgICAgICAgICAgICBpID0gMDsKQEAgLTI3NTMsOSArMjk0
OCwxMSBAQAogICAgICAgICAgICAgYSA9IDAsCiAgICAgICAgICAgICBzID0gZS5sZW5ndGg7CiAg
ICAgICAgIGZvciAoOyBzID4gYTsgYSsrKQotICAgICAgICAgICAgciA9IGVbYV0sIHIuc3R5bGUg
JiYgKG9bYV0gPSBiLl9kYXRhKHIsICJvbGRkaXNwbGF5IiksIG4gPSByLnN0eWxlLmRpc3BsYXks
IHQgPyAob1thXSB8fCAibm9uZSIgIT09IG4gfHwgKHIuc3R5bGUuZGlzcGxheSA9ICIiKSwgIiIg
PT09IHIuc3R5bGUuZGlzcGxheSAmJiBubihyKSAmJiAob1thXSA9IGIuX2RhdGEociwgIm9sZGRp
c3BsYXkiLCB1bihyLm5vZGVOYW1lKSkpKSA6IG9bYV0gfHwgKGkgPSBubihyKSwgKG4gJiYgIm5v
bmUiICE9PSBuIHx8ICFpKSAmJiBiLl9kYXRhKHIsICJvbGRkaXNwbGF5IiwgaSA/IG4gOiBiLmNz
cyhyLCAiZGlzcGxheSIpKSkpOworICAgICAgICAgICAgciA9IGVbYV0sCisgICAgICAgICAgICBy
LnN0eWxlICYmIChvW2FdID0gYi5fZGF0YShyLCAib2xkZGlzcGxheSIpLCBuID0gci5zdHlsZS5k
aXNwbGF5LCB0ID8gKG9bYV0gfHwgIm5vbmUiICE9PSBuIHx8IChyLnN0eWxlLmRpc3BsYXkgPSAi
IiksICIiID09PSByLnN0eWxlLmRpc3BsYXkgJiYgbm4ocikgJiYgKG9bYV0gPSBiLl9kYXRhKHIs
ICJvbGRkaXNwbGF5IiwgdW4oci5ub2RlTmFtZSkpKSkgOiBvW2FdIHx8IChpID0gbm4ociksIChu
ICYmICJub25lIiAhPT0gbiB8fCAhaSkgJiYgYi5fZGF0YShyLCAib2xkZGlzcGxheSIsIGkgPyBu
IDogYi5jc3MociwgImRpc3BsYXkiKSkpKTsKICAgICAgICAgZm9yIChhID0gMDsgcyA+IGE7IGEr
KykKLSAgICAgICAgICAgIHIgPSBlW2FdLCByLnN0eWxlICYmICh0ICYmICJub25lIiAhPT0gci5z
dHlsZS5kaXNwbGF5ICYmICIiICE9PSByLnN0eWxlLmRpc3BsYXkgfHwgKHIuc3R5bGUuZGlzcGxh
eSA9IHQgPyBvW2FdIHx8ICIiIDogIm5vbmUiKSk7CisgICAgICAgICAgICByID0gZVthXSwKKyAg
ICAgICAgICAgIHIuc3R5bGUgJiYgKHQgJiYgIm5vbmUiICE9PSByLnN0eWxlLmRpc3BsYXkgJiYg
IiIgIT09IHIuc3R5bGUuZGlzcGxheSB8fCAoci5zdHlsZS5kaXNwbGF5ID0gdCA/IG9bYV0gfHwg
IiIgOiAibm9uZSIpKTsKICAgICAgICAgcmV0dXJuIGUKICAgICB9CiAgICAgYi5mbi5leHRlbmQo
ewpAQCAtMjc4NSw3ICsyOTgyLDggQEAKICAgICAgICAgICAgICAgICAodCA/IGUgOiBubih0aGlz
KSkgPyBiKHRoaXMpLnNob3coKSA6IGIodGhpcykuaGlkZSgpCiAgICAgICAgICAgICB9KQogICAg
ICAgICB9Ci0gICAgfSksIGIuZXh0ZW5kKHsKKyAgICB9KSwKKyAgICBiLmV4dGVuZCh7CiAgICAg
ICAgIGNzc0hvb2tzOiB7CiAgICAgICAgICAgICBvcGFjaXR5OiB7CiAgICAgICAgICAgICAgICAg
Z2V0OiBmdW5jdGlvbihlLCB0KSB7CkBAIC0yODM3LDEzICszMDM1LDE1IEBACiAgICAgICAgICAg
ICAgICAgbywKICAgICAgICAgICAgICAgICBhID0ge307CiAgICAgICAgICAgICBmb3IgKG8gaW4g
dCkKLSAgICAgICAgICAgICAgICBhW29dID0gZS5zdHlsZVtvXSwgZS5zdHlsZVtvXSA9IHRbb107
CisgICAgICAgICAgICAgICAgYVtvXSA9IGUuc3R5bGVbb10sCisgICAgICAgICAgICAgICAgZS5z
dHlsZVtvXSA9IHRbb107CiAgICAgICAgICAgICBpID0gbi5hcHBseShlLCByIHx8IFtdKTsKICAg
ICAgICAgICAgIGZvciAobyBpbiB0KQogICAgICAgICAgICAgICAgIGUuc3R5bGVbb10gPSBhW29d
OwogICAgICAgICAgICAgcmV0dXJuIGkKICAgICAgICAgfQotICAgIH0pLCBlLmdldENvbXB1dGVk
U3R5bGUgPyAoUnQgPSBmdW5jdGlvbih0KSB7CisgICAgfSksCisgICAgZS5nZXRDb21wdXRlZFN0
eWxlID8gKFJ0ID0gZnVuY3Rpb24odCkgewogICAgICAgICByZXR1cm4gZS5nZXRDb21wdXRlZFN0
eWxlKHQsIG51bGwpCiAgICAgfSwgV3QgPSBmdW5jdGlvbihlLCBuLCByKSB7CiAgICAgICAgIHZh
ciBpLApAQCAtMjg3Miw3ICszMDcyLDggQEAKICAgICAgICAgdmFyIG8gPSBuID09PSAociA/ICJi
b3JkZXIiIDogImNvbnRlbnQiKSA/IDQgOiAid2lkdGgiID09PSB0ID8gMSA6IDAsCiAgICAgICAg
ICAgICBhID0gMDsKICAgICAgICAgZm9yICg7IDQgPiBvOyBvICs9IDIpCi0gICAgICAgICAgICAi
bWFyZ2luIiA9PT0gbiAmJiAoYSArPSBiLmNzcyhlLCBuICsgWnRbb10sICEwLCBpKSksIHIgPyAo
ImNvbnRlbnQiID09PSBuICYmIChhIC09IGIuY3NzKGUsICJwYWRkaW5nIiArIFp0W29dLCAhMCwg
aSkpLCAibWFyZ2luIiAhPT0gbiAmJiAoYSAtPSBiLmNzcyhlLCAiYm9yZGVyIiArIFp0W29dICsg
IldpZHRoIiwgITAsIGkpKSkgOiAoYSArPSBiLmNzcyhlLCAicGFkZGluZyIgKyBadFtvXSwgITAs
IGkpLCAicGFkZGluZyIgIT09IG4gJiYgKGEgKz0gYi5jc3MoZSwgImJvcmRlciIgKyBadFtvXSAr
ICJXaWR0aCIsICEwLCBpKSkpOworICAgICAgICAgICAgIm1hcmdpbiIgPT09IG4gJiYgKGEgKz0g
Yi5jc3MoZSwgbiArIFp0W29dLCAhMCwgaSkpLAorICAgICAgICAgICAgciA/ICgiY29udGVudCIg
PT09IG4gJiYgKGEgLT0gYi5jc3MoZSwgInBhZGRpbmciICsgWnRbb10sICEwLCBpKSksICJtYXJn
aW4iICE9PSBuICYmIChhIC09IGIuY3NzKGUsICJib3JkZXIiICsgWnRbb10gKyAiV2lkdGgiLCAh
MCwgaSkpKSA6IChhICs9IGIuY3NzKGUsICJwYWRkaW5nIiArIFp0W29dLCAhMCwgaSksICJwYWRk
aW5nIiAhPT0gbiAmJiAoYSArPSBiLmNzcyhlLCAiYm9yZGVyIiArIFp0W29dICsgIldpZHRoIiwg
ITAsIGkpKSk7CiAgICAgICAgIHJldHVybiBhCiAgICAgfQogICAgIGZ1bmN0aW9uIHNuKGUsIHQs
IG4pIHsKQEAgLTI4ODMsNyArMzA4NCw4IEBACiAgICAgICAgIGlmICgwID49IGkgfHwgbnVsbCA9
PSBpKSB7CiAgICAgICAgICAgICBpZiAoaSA9IFd0KGUsIHQsIG8pLCAoMCA+IGkgfHwgbnVsbCA9
PSBpKSAmJiAoaSA9IGUuc3R5bGVbdF0pLCBZdC50ZXN0KGkpKQogICAgICAgICAgICAgICAgIHJl
dHVybiBpOwotICAgICAgICAgICAgciA9IGEgJiYgKGIuc3VwcG9ydC5ib3hTaXppbmdSZWxpYWJs
ZSB8fCBpID09PSBlLnN0eWxlW3RdKSwgaSA9IHBhcnNlRmxvYXQoaSkgfHwgMAorICAgICAgICAg
ICAgciA9IGEgJiYgKGIuc3VwcG9ydC5ib3hTaXppbmdSZWxpYWJsZSB8fCBpID09PSBlLnN0eWxl
W3RdKSwKKyAgICAgICAgICAgIGkgPSBwYXJzZUZsb2F0KGkpIHx8IDAKICAgICAgICAgfQogICAg
ICAgICByZXR1cm4gaSArIGFuKGUsIHQsIG4gfHwgKGEgPyAiYm9yZGVyIiA6ICJjb250ZW50Iiks
IHIsIG8pICsgInB4IgogICAgIH0KQEAgLTI5MDksNyArMzExMSw4IEBACiAgICAgICAgICAgICAg
ICAgcmV0dXJuIG9uKGUsIHQsIHIgPyBhbihlLCBuLCByLCBiLnN1cHBvcnQuYm94U2l6aW5nICYm
ICJib3JkZXItYm94IiA9PT0gYi5jc3MoZSwgImJveFNpemluZyIsICExLCBpKSwgaSkgOiAwKQog
ICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgfSksIGIuc3VwcG9ydC5vcGFjaXR5IHx8IChi
LmNzc0hvb2tzLm9wYWNpdHkgPSB7CisgICAgfSksCisgICAgYi5zdXBwb3J0Lm9wYWNpdHkgfHwg
KGIuY3NzSG9va3Mub3BhY2l0eSA9IHsKICAgICAgICAgZ2V0OiBmdW5jdGlvbihlLCB0KSB7CiAg
ICAgICAgICAgICByZXR1cm4gSXQudGVzdCgodCAmJiBlLmN1cnJlbnRTdHlsZSA/IGUuY3VycmVu
dFN0eWxlLmZpbHRlciA6IGUuc3R5bGUuZmlsdGVyKSB8fCAiIikgPyAuMDEgKiBwYXJzZUZsb2F0
KFJlZ0V4cC4kMSkgKyAiIiA6IHQgPyAiMSIgOiAiIgogICAgICAgICB9LApAQCAtMjkxOCwyNyAr
MzEyMSwzMiBAQAogICAgICAgICAgICAgICAgIHIgPSBlLmN1cnJlbnRTdHlsZSwKICAgICAgICAg
ICAgICAgICBpID0gYi5pc051bWVyaWModCkgPyAiYWxwaGEob3BhY2l0eT0iICsgMTAwICogdCAr
ICIpIiA6ICIiLAogICAgICAgICAgICAgICAgIG8gPSByICYmIHIuZmlsdGVyIHx8IG4uZmlsdGVy
IHx8ICIiOwotICAgICAgICAgICAgbi56b29tID0gMSwgKHQgPj0gMSB8fCAiIiA9PT0gdCkgJiYg
IiIgPT09IGIudHJpbShvLnJlcGxhY2UoJHQsICIiKSkgJiYgbi5yZW1vdmVBdHRyaWJ1dGUgJiYg
KG4ucmVtb3ZlQXR0cmlidXRlKCJmaWx0ZXIiKSwgIiIgPT09IHQgfHwgciAmJiAhci5maWx0ZXIp
IHx8IChuLmZpbHRlciA9ICR0LnRlc3QobykgPyBvLnJlcGxhY2UoJHQsIGkpIDogbyArICIgIiAr
IGkpCisgICAgICAgICAgICBuLnpvb20gPSAxLAorICAgICAgICAgICAgKHQgPj0gMSB8fCAiIiA9
PT0gdCkgJiYgIiIgPT09IGIudHJpbShvLnJlcGxhY2UoJHQsICIiKSkgJiYgbi5yZW1vdmVBdHRy
aWJ1dGUgJiYgKG4ucmVtb3ZlQXR0cmlidXRlKCJmaWx0ZXIiKSwgIiIgPT09IHQgfHwgciAmJiAh
ci5maWx0ZXIpIHx8IChuLmZpbHRlciA9ICR0LnRlc3QobykgPyBvLnJlcGxhY2UoJHQsIGkpIDog
byArICIgIiArIGkpCiAgICAgICAgIH0KLSAgICB9KSwgYihmdW5jdGlvbigpIHsKKyAgICB9KSwK
KyAgICBiKGZ1bmN0aW9uKCkgewogICAgICAgICBiLnN1cHBvcnQucmVsaWFibGVNYXJnaW5SaWdo
dCB8fCAoYi5jc3NIb29rcy5tYXJnaW5SaWdodCA9IHsKICAgICAgICAgICAgIGdldDogZnVuY3Rp
b24oZSwgbikgewogICAgICAgICAgICAgICAgIHJldHVybiBuID8gYi5zd2FwKGUsIHsKICAgICAg
ICAgICAgICAgICAgICAgZGlzcGxheTogImlubGluZS1ibG9jayIKICAgICAgICAgICAgICAgICB9
LCBXdCwgW2UsICJtYXJnaW5SaWdodCJdKSA6IHQKICAgICAgICAgICAgIH0KLSAgICAgICAgfSks
ICFiLnN1cHBvcnQucGl4ZWxQb3NpdGlvbiAmJiBiLmZuLnBvc2l0aW9uICYmIGIuZWFjaChbInRv
cCIsICJsZWZ0Il0sIGZ1bmN0aW9uKGUsIG4pIHsKKyAgICAgICAgfSksCisgICAgICAgICFiLnN1
cHBvcnQucGl4ZWxQb3NpdGlvbiAmJiBiLmZuLnBvc2l0aW9uICYmIGIuZWFjaChbInRvcCIsICJs
ZWZ0Il0sIGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgICAgIGIuY3NzSG9va3Nbbl0gPSB7CiAg
ICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbihlLCByKSB7CiAgICAgICAgICAgICAgICAgICAg
IHJldHVybiByID8gKHIgPSBXdChlLCBuKSwgWXQudGVzdChyKSA/IGIoZSkucG9zaXRpb24oKVtu
XSArICJweCIgOiByKSA6IHQKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0pCi0gICAgfSksIGIuZXhwciAmJiBiLmV4cHIuZmlsdGVycyAmJiAoYi5leHByLmZpbHRl
cnMuaGlkZGVuID0gZnVuY3Rpb24oZSkgeworICAgIH0pLAorICAgIGIuZXhwciAmJiBiLmV4cHIu
ZmlsdGVycyAmJiAoYi5leHByLmZpbHRlcnMuaGlkZGVuID0gZnVuY3Rpb24oZSkgewogICAgICAg
ICByZXR1cm4gMCA+PSBlLm9mZnNldFdpZHRoICYmIDAgPj0gZS5vZmZzZXRIZWlnaHQgfHwgIWIu
c3VwcG9ydC5yZWxpYWJsZUhpZGRlbk9mZnNldHMgJiYgIm5vbmUiID09PSAoZS5zdHlsZSAmJiBl
LnN0eWxlLmRpc3BsYXkgfHwgYi5jc3MoZSwgImRpc3BsYXkiKSkKICAgICB9LCBiLmV4cHIuZmls
dGVycy52aXNpYmxlID0gZnVuY3Rpb24oZSkgewogICAgICAgICByZXR1cm4gIWIuZXhwci5maWx0
ZXJzLmhpZGRlbihlKQotICAgIH0pLCBiLmVhY2goeworICAgIH0pLAorICAgIGIuZWFjaCh7CiAg
ICAgICAgIG1hcmdpbjogIiIsCiAgICAgICAgIHBhZGRpbmc6ICIiLAogICAgICAgICBib3JkZXI6
ICJXaWR0aCIKQEAgLTI5NTIsNyArMzE2MCw4IEBACiAgICAgICAgICAgICAgICAgICAgIGlbZSAr
IFp0W3JdICsgdF0gPSBvW3JdIHx8IG9bciAtIDJdIHx8IG9bMF07CiAgICAgICAgICAgICAgICAg
cmV0dXJuIGkKICAgICAgICAgICAgIH0KLSAgICAgICAgfSwgVXQudGVzdChlKSB8fCAoYi5jc3NI
b29rc1tlICsgdF0uc2V0ID0gb24pCisgICAgICAgIH0sCisgICAgICAgIFV0LnRlc3QoZSkgfHwg
KGIuY3NzSG9va3NbZSArIHRdLnNldCA9IG9uKQogICAgIH0pOwogICAgIHZhciBjbiA9IC8lMjAv
ZywKICAgICAgICAgcG4gPSAvXFtcXSQvLApAQCAtMjk4MywxMSArMzE5MiwxMyBAQAogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIH0pLmdldCgpCiAgICAgICAgIH0KLSAgICB9KSwgYi5w
YXJhbSA9IGZ1bmN0aW9uKGUsIG4pIHsKKyAgICB9KSwKKyAgICBiLnBhcmFtID0gZnVuY3Rpb24o
ZSwgbikgewogICAgICAgICB2YXIgciwKICAgICAgICAgICAgIGkgPSBbXSwKICAgICAgICAgICAg
IG8gPSBmdW5jdGlvbihlLCB0KSB7Ci0gICAgICAgICAgICAgICAgdCA9IGIuaXNGdW5jdGlvbih0
KSA/IHQoKSA6IG51bGwgPT0gdCA/ICIiIDogdCwgaVtpLmxlbmd0aF0gPSBlbmNvZGVVUklDb21w
b25lbnQoZSkgKyAiPSIgKyBlbmNvZGVVUklDb21wb25lbnQodCkKKyAgICAgICAgICAgICAgICB0
ID0gYi5pc0Z1bmN0aW9uKHQpID8gdCgpIDogbnVsbCA9PSB0ID8gIiIgOiB0LAorICAgICAgICAg
ICAgICAgIGlbaS5sZW5ndGhdID0gZW5jb2RlVVJJQ29tcG9uZW50KGUpICsgIj0iICsgZW5jb2Rl
VVJJQ29tcG9uZW50KHQpCiAgICAgICAgICAgICB9OwogICAgICAgICBpZiAobiA9PT0gdCAmJiAo
biA9IGIuYWpheFNldHRpbmdzICYmIGIuYWpheFNldHRpbmdzLnRyYWRpdGlvbmFsKSwgYi5pc0Fy
cmF5KGUpIHx8IGUuanF1ZXJ5ICYmICFiLmlzUGxhaW5PYmplY3QoZSkpCiAgICAgICAgICAgICBi
LmVhY2goZSwgZnVuY3Rpb24oKSB7CkBAIC0zMDE0LDcgKzMyMjUsOCBAQAogICAgICAgICBiLmZu
W3RdID0gZnVuY3Rpb24oZSwgbikgewogICAgICAgICAgICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGggPiAwID8gdGhpcy5vbih0LCBudWxsLCBlLCBuKSA6IHRoaXMudHJpZ2dlcih0KQogICAgICAg
ICB9Ci0gICAgfSksIGIuZm4uaG92ZXIgPSBmdW5jdGlvbihlLCB0KSB7CisgICAgfSksCisgICAg
Yi5mbi5ob3ZlciA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgcmV0dXJuIHRoaXMubW91c2Vl
bnRlcihlKS5tb3VzZWxlYXZlKHQgfHwgZSkKICAgICB9OwogICAgIHZhciBtbiwKQEAgLTMwMzUs
NyArMzI0Nyw5IEBACiAgICAgdHJ5IHsKICAgICAgICAgeW4gPSBhLmhyZWYKICAgICB9IGNhdGNo
IChMbikgewotICAgICAgICB5biA9IG8uY3JlYXRlRWxlbWVudCgiYSIpLCB5bi5ocmVmID0gIiIs
IHluID0geW4uaHJlZgorICAgICAgICB5biA9IG8uY3JlYXRlRWxlbWVudCgiYSIpLAorICAgICAg
ICB5bi5ocmVmID0gIiIsCisgICAgICAgIHluID0geW4uaHJlZgogICAgIH0KICAgICBtbiA9IEVu
LmV4ZWMoeW4udG9Mb3dlckNhc2UoKSkgfHwgW107CiAgICAgZnVuY3Rpb24gSG4oZSkgewpAQCAt
MzA4MywxNSArMzI5NywxOCBAQAogICAgICAgICAgICAgZGF0YVR5cGU6ICJodG1sIiwKICAgICAg
ICAgICAgIGRhdGE6IG4KICAgICAgICAgfSkuZG9uZShmdW5jdGlvbihlKSB7Ci0gICAgICAgICAg
ICBvID0gYXJndW1lbnRzLCBzLmh0bWwoaSA/IGIoIjxkaXY+IikuYXBwZW5kKGIucGFyc2VIVE1M
KGUpKS5maW5kKGkpIDogZSkKKyAgICAgICAgICAgIG8gPSBhcmd1bWVudHMsCisgICAgICAgICAg
ICBzLmh0bWwoaSA/IGIoIjxkaXY+IikuYXBwZW5kKGIucGFyc2VIVE1MKGUpKS5maW5kKGkpIDog
ZSkKICAgICAgICAgfSkuY29tcGxldGUociAmJiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAg
ICBzLmVhY2gociwgbyB8fCBbZS5yZXNwb25zZVRleHQsIHQsIGVdKQogICAgICAgICB9KSwgdGhp
cwotICAgIH0sIGIuZWFjaChbImFqYXhTdGFydCIsICJhamF4U3RvcCIsICJhamF4Q29tcGxldGUi
LCAiYWpheEVycm9yIiwgImFqYXhTdWNjZXNzIiwgImFqYXhTZW5kIl0sIGZ1bmN0aW9uKGUsIHQp
IHsKKyAgICB9LAorICAgIGIuZWFjaChbImFqYXhTdGFydCIsICJhamF4U3RvcCIsICJhamF4Q29t
cGxldGUiLCAiYWpheEVycm9yIiwgImFqYXhTdWNjZXNzIiwgImFqYXhTZW5kIl0sIGZ1bmN0aW9u
KGUsIHQpIHsKICAgICAgICAgYi5mblt0XSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgIHJl
dHVybiB0aGlzLm9uKHQsIGUpCiAgICAgICAgIH0KLSAgICB9KSwgYi5lYWNoKFsiZ2V0IiwgInBv
c3QiXSwgZnVuY3Rpb24oZSwgbikgeworICAgIH0pLAorICAgIGIuZWFjaChbImdldCIsICJwb3N0
Il0sIGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgYltuXSA9IGZ1bmN0aW9uKGUsIHIsIGksIG8p
IHsKICAgICAgICAgICAgIHJldHVybiBiLmlzRnVuY3Rpb24ocikgJiYgKG8gPSBvIHx8IGksIGkg
PSByLCByID0gdCksIGIuYWpheCh7CiAgICAgICAgICAgICAgICAgdXJsOiBlLApAQCAtMzEwMSw3
ICszMzE4LDggQEAKICAgICAgICAgICAgICAgICBzdWNjZXNzOiBpCiAgICAgICAgICAgICB9KQog
ICAgICAgICB9Ci0gICAgfSksIGIuZXh0ZW5kKHsKKyAgICB9KSwKKyAgICBiLmV4dGVuZCh7CiAg
ICAgICAgIGFjdGl2ZTogMCwKICAgICAgICAgbGFzdE1vZGlmaWVkOiB7fSwKICAgICAgICAgZXRh
Zzoge30sCkBAIC0zMTQ2LDcgKzMzNjQsOCBAQAogICAgICAgICBhamF4UHJlZmlsdGVyOiBIbihB
biksCiAgICAgICAgIGFqYXhUcmFuc3BvcnQ6IEhuKGpuKSwKICAgICAgICAgYWpheDogZnVuY3Rp
b24oZSwgbikgewotICAgICAgICAgICAgIm9iamVjdCIgPT0gdHlwZW9mIGUgJiYgKG4gPSBlLCBl
ID0gdCksIG4gPSBuIHx8IHt9OworICAgICAgICAgICAgIm9iamVjdCIgPT0gdHlwZW9mIGUgJiYg
KG4gPSBlLCBlID0gdCksCisgICAgICAgICAgICBuID0gbiB8fCB7fTsKICAgICAgICAgICAgIHZh
ciByLAogICAgICAgICAgICAgICAgIGksCiAgICAgICAgICAgICAgICAgbywKQEAgLTMyMDYsNyAr
MzQyNSwxNSBAQAogICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICBpZiAoaC5wcm9taXNl
KE4pLmNvbXBsZXRlID0gZy5hZGQsIE4uc3VjY2VzcyA9IE4uZG9uZSwgTi5lcnJvciA9IE4uZmFp
bCwgcC51cmwgPSAoKGUgfHwgcC51cmwgfHwgeW4pICsgIiIpLnJlcGxhY2UoeG4sICIiKS5yZXBs
YWNlKGtuLCBtblsxXSArICIvLyIpLCBwLnR5cGUgPSBuLm1ldGhvZCB8fCBuLnR5cGUgfHwgcC5t
ZXRob2QgfHwgcC50eXBlLCBwLmRhdGFUeXBlcyA9IGIudHJpbShwLmRhdGFUeXBlIHx8ICIqIiku
dG9Mb3dlckNhc2UoKS5tYXRjaCh3KSB8fCBbIiJdLCBudWxsID09IHAuY3Jvc3NEb21haW4gJiYg
KHIgPSBFbi5leGVjKHAudXJsLnRvTG93ZXJDYXNlKCkpLCBwLmNyb3NzRG9tYWluID0gISghciB8
fCByWzFdID09PSBtblsxXSAmJiByWzJdID09PSBtblsyXSAmJiAoclszXSB8fCAoImh0dHA6IiA9
PT0gclsxXSA/IDgwIDogNDQzKSkgPT0gKG1uWzNdIHx8ICgiaHR0cDoiID09PSBtblsxXSA/IDgw
IDogNDQzKSkpKSwgcC5kYXRhICYmIHAucHJvY2Vzc0RhdGEgJiYgInN0cmluZyIgIT0gdHlwZW9m
IHAuZGF0YSAmJiAocC5kYXRhID0gYi5wYXJhbShwLmRhdGEsIHAudHJhZGl0aW9uYWwpKSwgcW4o
QW4sIHAsIG4sIE4pLCAyID09PSB4KQogICAgICAgICAgICAgICAgIHJldHVybiBOOwotICAgICAg
ICAgICAgdSA9IHAuZ2xvYmFsLCB1ICYmIDAgPT09IGIuYWN0aXZlKysgJiYgYi5ldmVudC50cmln
Z2VyKCJhamF4U3RhcnQiKSwgcC50eXBlID0gcC50eXBlLnRvVXBwZXJDYXNlKCksIHAuaGFzQ29u
dGVudCA9ICFDbi50ZXN0KHAudHlwZSksIG8gPSBwLnVybCwgcC5oYXNDb250ZW50IHx8IChwLmRh
dGEgJiYgKG8gPSBwLnVybCArPSAoYm4udGVzdChvKSA/ICImIiA6ICI/IikgKyBwLmRhdGEsIGRl
bGV0ZSBwLmRhdGEpLCBwLmNhY2hlID09PSAhMSAmJiAocC51cmwgPSB3bi50ZXN0KG8pID8gby5y
ZXBsYWNlKHduLCAiJDFfPSIgKyB2bisrKSA6IG8gKyAoYm4udGVzdChvKSA/ICImIiA6ICI/Iikg
KyAiXz0iICsgdm4rKykpLCBwLmlmTW9kaWZpZWQgJiYgKGIubGFzdE1vZGlmaWVkW29dICYmIE4u
c2V0UmVxdWVzdEhlYWRlcigiSWYtTW9kaWZpZWQtU2luY2UiLCBiLmxhc3RNb2RpZmllZFtvXSks
IGIuZXRhZ1tvXSAmJiBOLnNldFJlcXVlc3RIZWFkZXIoIklmLU5vbmUtTWF0Y2giLCBiLmV0YWdb
b10pKSwgKHAuZGF0YSAmJiBwLmhhc0NvbnRlbnQgJiYgcC5jb250ZW50VHlwZSAhPT0gITEgfHwg
bi5jb250ZW50VHlwZSkgJiYgTi5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LVR5cGUiLCBwLmNv
bnRlbnRUeXBlKSwgTi5zZXRSZXF1ZXN0SGVhZGVyKCJBY2NlcHQiLCBwLmRhdGFUeXBlc1swXSAm
JiBwLmFjY2VwdHNbcC5kYXRhVHlwZXNbMF1dID8gcC5hY2NlcHRzW3AuZGF0YVR5cGVzWzBdXSAr
ICgiKiIgIT09IHAuZGF0YVR5cGVzWzBdID8gIiwgIiArIERuICsgIjsgcT0wLjAxIiA6ICIiKSA6
IHAuYWNjZXB0c1siKiJdKTsKKyAgICAgICAgICAgIHUgPSBwLmdsb2JhbCwKKyAgICAgICAgICAg
IHUgJiYgMCA9PT0gYi5hY3RpdmUrKyAmJiBiLmV2ZW50LnRyaWdnZXIoImFqYXhTdGFydCIpLAor
ICAgICAgICAgICAgcC50eXBlID0gcC50eXBlLnRvVXBwZXJDYXNlKCksCisgICAgICAgICAgICBw
Lmhhc0NvbnRlbnQgPSAhQ24udGVzdChwLnR5cGUpLAorICAgICAgICAgICAgbyA9IHAudXJsLAor
ICAgICAgICAgICAgcC5oYXNDb250ZW50IHx8IChwLmRhdGEgJiYgKG8gPSBwLnVybCArPSAoYm4u
dGVzdChvKSA/ICImIiA6ICI/IikgKyBwLmRhdGEsIGRlbGV0ZSBwLmRhdGEpLCBwLmNhY2hlID09
PSAhMSAmJiAocC51cmwgPSB3bi50ZXN0KG8pID8gby5yZXBsYWNlKHduLCAiJDFfPSIgKyB2bisr
KSA6IG8gKyAoYm4udGVzdChvKSA/ICImIiA6ICI/IikgKyAiXz0iICsgdm4rKykpLAorICAgICAg
ICAgICAgcC5pZk1vZGlmaWVkICYmIChiLmxhc3RNb2RpZmllZFtvXSAmJiBOLnNldFJlcXVlc3RI
ZWFkZXIoIklmLU1vZGlmaWVkLVNpbmNlIiwgYi5sYXN0TW9kaWZpZWRbb10pLCBiLmV0YWdbb10g
JiYgTi5zZXRSZXF1ZXN0SGVhZGVyKCJJZi1Ob25lLU1hdGNoIiwgYi5ldGFnW29dKSksCisgICAg
ICAgICAgICAocC5kYXRhICYmIHAuaGFzQ29udGVudCAmJiBwLmNvbnRlbnRUeXBlICE9PSAhMSB8
fCBuLmNvbnRlbnRUeXBlKSAmJiBOLnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtVHlwZSIsIHAu
Y29udGVudFR5cGUpLAorICAgICAgICAgICAgTi5zZXRSZXF1ZXN0SGVhZGVyKCJBY2NlcHQiLCBw
LmRhdGFUeXBlc1swXSAmJiBwLmFjY2VwdHNbcC5kYXRhVHlwZXNbMF1dID8gcC5hY2NlcHRzW3Au
ZGF0YVR5cGVzWzBdXSArICgiKiIgIT09IHAuZGF0YVR5cGVzWzBdID8gIiwgIiArIERuICsgIjsg
cT0wLjAxIiA6ICIiKSA6IHAuYWNjZXB0c1siKiJdKTsKICAgICAgICAgICAgIGZvciAoaSBpbiBw
LmhlYWRlcnMpCiAgICAgICAgICAgICAgICAgTi5zZXRSZXF1ZXN0SGVhZGVyKGksIHAuaGVhZGVy
c1tpXSk7CiAgICAgICAgICAgICBpZiAocC5iZWZvcmVTZW5kICYmIChwLmJlZm9yZVNlbmQuY2Fs
bChmLCBOLCBwKSA9PT0gITEgfHwgMiA9PT0geCkpCkBAIC0zMjE5LDExICszNDQ2LDE0IEBACiAg
ICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgIE5baV0ocFtpXSk7CiAgICAgICAgICAgICBp
ZiAobCA9IHFuKGpuLCBwLCBuLCBOKSkgewotICAgICAgICAgICAgICAgIE4ucmVhZHlTdGF0ZSA9
IDEsIHUgJiYgZC50cmlnZ2VyKCJhamF4U2VuZCIsIFtOLCBwXSksIHAuYXN5bmMgJiYgcC50aW1l
b3V0ID4gMCAmJiAocyA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAg
Ti5yZWFkeVN0YXRlID0gMSwKKyAgICAgICAgICAgICAgICB1ICYmIGQudHJpZ2dlcigiYWpheFNl
bmQiLCBbTiwgcF0pLAorICAgICAgICAgICAgICAgIHAuYXN5bmMgJiYgcC50aW1lb3V0ID4gMCAm
JiAocyA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgIE4uYWJv
cnQoInRpbWVvdXQiKQogICAgICAgICAgICAgICAgIH0sIHAudGltZW91dCkpOwogICAgICAgICAg
ICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgIHggPSAxLCBsLnNlbmQoeSwgaykKKyAg
ICAgICAgICAgICAgICAgICAgeCA9IDEsCisgICAgICAgICAgICAgICAgICAgIGwuc2VuZCh5LCBr
KQogICAgICAgICAgICAgICAgIH0gY2F0Y2ggKEMpIHsKICAgICAgICAgICAgICAgICAgICAgaWYg
KCEoMiA+IHgpKQogICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgQzsKQEAgLTMyNjAsNyAr
MzQ5MCw4IEBACiAgICAgICAgIGZvciAocyBpbiBjKQogICAgICAgICAgICAgcyBpbiByICYmIChu
W2Nbc11dID0gcltzXSk7CiAgICAgICAgIHdoaWxlICgiKiIgPT09IGxbMF0pCi0gICAgICAgICAg
ICBsLnNoaWZ0KCksIG8gPT09IHQgJiYgKG8gPSBlLm1pbWVUeXBlIHx8IG4uZ2V0UmVzcG9uc2VI
ZWFkZXIoIkNvbnRlbnQtVHlwZSIpKTsKKyAgICAgICAgICAgIGwuc2hpZnQoKSwKKyAgICAgICAg
ICAgIG8gPT09IHQgJiYgKG8gPSBlLm1pbWVUeXBlIHx8IG4uZ2V0UmVzcG9uc2VIZWFkZXIoIkNv
bnRlbnQtVHlwZSIpKTsKICAgICAgICAgaWYgKG8pCiAgICAgICAgICAgICBmb3IgKHMgaW4gdSkK
ICAgICAgICAgICAgICAgICBpZiAodVtzXSAmJiB1W3NdLnRlc3QobykpIHsKQEAgLTMzMzQsMTcg
KzM1NjUsMjUgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gYi5nbG9iYWxFdmFsKGUpLCBlCiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICB9KSwgYi5hamF4UHJlZmlsdGVyKCJzY3JpcHQi
LCBmdW5jdGlvbihlKSB7Ci0gICAgICAgIGUuY2FjaGUgPT09IHQgJiYgKGUuY2FjaGUgPSAhMSks
IGUuY3Jvc3NEb21haW4gJiYgKGUudHlwZSA9ICJHRVQiLCBlLmdsb2JhbCA9ICExKQotICAgIH0p
LCBiLmFqYXhUcmFuc3BvcnQoInNjcmlwdCIsIGZ1bmN0aW9uKGUpIHsKKyAgICB9KSwKKyAgICBi
LmFqYXhQcmVmaWx0ZXIoInNjcmlwdCIsIGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgZS5jYWNoZSA9
PT0gdCAmJiAoZS5jYWNoZSA9ICExKSwKKyAgICAgICAgZS5jcm9zc0RvbWFpbiAmJiAoZS50eXBl
ID0gIkdFVCIsIGUuZ2xvYmFsID0gITEpCisgICAgfSksCisgICAgYi5hamF4VHJhbnNwb3J0KCJz
Y3JpcHQiLCBmdW5jdGlvbihlKSB7CiAgICAgICAgIGlmIChlLmNyb3NzRG9tYWluKSB7CiAgICAg
ICAgICAgICB2YXIgbiwKICAgICAgICAgICAgICAgICByID0gby5oZWFkIHx8IGIoImhlYWQiKVsw
XSB8fCBvLmRvY3VtZW50RWxlbWVudDsKICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAg
ICAgICAgc2VuZDogZnVuY3Rpb24odCwgaSkgewotICAgICAgICAgICAgICAgICAgICBuID0gby5j
cmVhdGVFbGVtZW50KCJzY3JpcHQiKSwgbi5hc3luYyA9ICEwLCBlLnNjcmlwdENoYXJzZXQgJiYg
KG4uY2hhcnNldCA9IGUuc2NyaXB0Q2hhcnNldCksIG4uc3JjID0gZS51cmwsIG4ub25sb2FkID0g
bi5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbihlLCB0KSB7CisgICAgICAgICAgICAgICAg
ICAgIG4gPSBvLmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpLAorICAgICAgICAgICAgICAgICAgICBu
LmFzeW5jID0gITAsCisgICAgICAgICAgICAgICAgICAgIGUuc2NyaXB0Q2hhcnNldCAmJiAobi5j
aGFyc2V0ID0gZS5zY3JpcHRDaGFyc2V0KSwKKyAgICAgICAgICAgICAgICAgICAgbi5zcmMgPSBl
LnVybCwKKyAgICAgICAgICAgICAgICAgICAgbi5vbmxvYWQgPSBuLm9ucmVhZHlzdGF0ZWNoYW5n
ZSA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICh0IHx8ICFuLnJl
YWR5U3RhdGUgfHwgL2xvYWRlZHxjb21wbGV0ZS8udGVzdChuLnJlYWR5U3RhdGUpKSAmJiAobi5v
bmxvYWQgPSBuLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IG51bGwsIG4ucGFyZW50Tm9kZSAmJiBuLnBh
cmVudE5vZGUucmVtb3ZlQ2hpbGQobiksIG4gPSBudWxsLCB0IHx8IGkoMjAwLCAic3VjY2VzcyIp
KQotICAgICAgICAgICAgICAgICAgICB9LCByLmluc2VydEJlZm9yZShuLCByLmZpcnN0Q2hpbGQp
CisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgIHIuaW5zZXJ0QmVm
b3JlKG4sIHIuZmlyc3RDaGlsZCkKICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAg
IGFib3J0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgbiAmJiBuLm9ubG9hZCh0
LCAhMCkKQEAgLTMzNjAsNyArMzU5OSw4IEBACiAgICAgICAgICAgICB2YXIgZSA9IE9uLnBvcCgp
IHx8IGIuZXhwYW5kbyArICJfIiArIHZuKys7CiAgICAgICAgICAgICByZXR1cm4gdGhpc1tlXSA9
ICEwLCBlCiAgICAgICAgIH0KLSAgICB9KSwgYi5hamF4UHJlZmlsdGVyKCJqc29uIGpzb25wIiwg
ZnVuY3Rpb24obiwgciwgaSkgeworICAgIH0pLAorICAgIGIuYWpheFByZWZpbHRlcigianNvbiBq
c29ucCIsIGZ1bmN0aW9uKG4sIHIsIGkpIHsKICAgICAgICAgdmFyIG8sCiAgICAgICAgICAgICBh
LAogICAgICAgICAgICAgcywKQEAgLTMzNzAsNyArMzYxMCwxMCBAQAogICAgICAgICB9LCBuLmRh
dGFUeXBlc1swXSA9ICJqc29uIiwgYSA9IGVbb10sIGVbb10gPSBmdW5jdGlvbigpIHsKICAgICAg
ICAgICAgIHMgPSBhcmd1bWVudHMKICAgICAgICAgfSwgaS5hbHdheXMoZnVuY3Rpb24oKSB7Ci0g
ICAgICAgICAgICBlW29dID0gYSwgbltvXSAmJiAobi5qc29ucENhbGxiYWNrID0gci5qc29ucENh
bGxiYWNrLCBPbi5wdXNoKG8pKSwgcyAmJiBiLmlzRnVuY3Rpb24oYSkgJiYgYShzWzBdKSwgcyA9
IGEgPSB0CisgICAgICAgICAgICBlW29dID0gYSwKKyAgICAgICAgICAgIG5bb10gJiYgKG4uanNv
bnBDYWxsYmFjayA9IHIuanNvbnBDYWxsYmFjaywgT24ucHVzaChvKSksCisgICAgICAgICAgICBz
ICYmIGIuaXNGdW5jdGlvbihhKSAmJiBhKHNbMF0pLAorICAgICAgICAgICAgcyA9IGEgPSB0CiAg
ICAgICAgIH0pLCAic2NyaXB0IikgOiB0CiAgICAgfSk7CiAgICAgdmFyIFBuLApAQCAtMzM5Myw3
ICszNjM2LDExIEBACiAgICAgfQogICAgIGIuYWpheFNldHRpbmdzLnhociA9IGUuQWN0aXZlWE9i
amVjdCA/IGZ1bmN0aW9uKCkgewogICAgICAgICByZXR1cm4gIXRoaXMuaXNMb2NhbCAmJiBJbigp
IHx8IHpuKCkKLSAgICB9IDogSW4sIFJuID0gYi5hamF4U2V0dGluZ3MueGhyKCksIGIuc3VwcG9y
dC5jb3JzID0gISFSbiAmJiAid2l0aENyZWRlbnRpYWxzIiBpbiBSbiwgUm4gPSBiLnN1cHBvcnQu
YWpheCA9ICEhUm4sIFJuICYmIGIuYWpheFRyYW5zcG9ydChmdW5jdGlvbihuKSB7CisgICAgfSA6
IEluLAorICAgIFJuID0gYi5hamF4U2V0dGluZ3MueGhyKCksCisgICAgYi5zdXBwb3J0LmNvcnMg
PSAhIVJuICYmICJ3aXRoQ3JlZGVudGlhbHMiIGluIFJuLAorICAgIFJuID0gYi5zdXBwb3J0LmFq
YXggPSAhIVJuLAorICAgIFJuICYmIGIuYWpheFRyYW5zcG9ydChmdW5jdGlvbihuKSB7CiAgICAg
ICAgIGlmICghbi5jcm9zc0RvbWFpbiB8fCBiLnN1cHBvcnQuY29ycykgewogICAgICAgICAgICAg
dmFyIHI7CiAgICAgICAgICAgICByZXR1cm4gewpAQCAtMzQwNCwxMiArMzY1MSwxNCBAQAogICAg
ICAgICAgICAgICAgICAgICBpZiAobi51c2VybmFtZSA/IHUub3BlbihuLnR5cGUsIG4udXJsLCBu
LmFzeW5jLCBuLnVzZXJuYW1lLCBuLnBhc3N3b3JkKSA6IHUub3BlbihuLnR5cGUsIG4udXJsLCBu
LmFzeW5jKSwgbi54aHJGaWVsZHMpCiAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHMgaW4g
bi54aHJGaWVsZHMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdVtzXSA9IG4ueGhyRmll
bGRzW3NdOwotICAgICAgICAgICAgICAgICAgICBuLm1pbWVUeXBlICYmIHUub3ZlcnJpZGVNaW1l
VHlwZSAmJiB1Lm92ZXJyaWRlTWltZVR5cGUobi5taW1lVHlwZSksIG4uY3Jvc3NEb21haW4gfHwg
aVsiWC1SZXF1ZXN0ZWQtV2l0aCJdIHx8IChpWyJYLVJlcXVlc3RlZC1XaXRoIl0gPSAiWE1MSHR0
cFJlcXVlc3QiKTsKKyAgICAgICAgICAgICAgICAgICAgbi5taW1lVHlwZSAmJiB1Lm92ZXJyaWRl
TWltZVR5cGUgJiYgdS5vdmVycmlkZU1pbWVUeXBlKG4ubWltZVR5cGUpLAorICAgICAgICAgICAg
ICAgICAgICBuLmNyb3NzRG9tYWluIHx8IGlbIlgtUmVxdWVzdGVkLVdpdGgiXSB8fCAoaVsiWC1S
ZXF1ZXN0ZWQtV2l0aCJdID0gIlhNTEh0dHBSZXF1ZXN0Iik7CiAgICAgICAgICAgICAgICAgICAg
IHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHMgaW4gaSkKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1LnNldFJlcXVlc3RIZWFkZXIocywgaVtzXSkKICAgICAgICAgICAg
ICAgICAgICAgfSBjYXRjaCAobCkge30KLSAgICAgICAgICAgICAgICAgICAgdS5zZW5kKG4uaGFz
Q29udGVudCAmJiBuLmRhdGEgfHwgbnVsbCksIHIgPSBmdW5jdGlvbihlLCBpKSB7CisgICAgICAg
ICAgICAgICAgICAgIHUuc2VuZChuLmhhc0NvbnRlbnQgJiYgbi5kYXRhIHx8IG51bGwpLAorICAg
ICAgICAgICAgICAgICAgICByID0gZnVuY3Rpb24oZSwgaSkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgdmFyIHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjLApAQCAtMzQxOSw3ICszNjY4LDEwIEBACiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChyID0gdCwgYSAmJiAodS5vbnJlYWR5c3RhdGVjaGFuZ2Ug
PSBiLm5vb3AsICRuICYmIGRlbGV0ZSBQblthXSksIGkpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA0ICE9PSB1LnJlYWR5U3RhdGUgJiYgdS5hYm9ydCgpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHAgPSB7fSwgcyA9IHUuc3RhdHVzLCBsID0gdS5nZXRBbGxSZXNwb25zZUhlYWRl
cnMoKSwgInN0cmluZyIgPT0gdHlwZW9mIHUucmVzcG9uc2VUZXh0ICYmIChwLnRleHQgPSB1LnJl
c3BvbnNlVGV4dCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0ge30s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gdS5zdGF0dXMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gdS5nZXRBbGxSZXNwb25zZUhlYWRl
cnMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdHJpbmciID09IHR5
cGVvZiB1LnJlc3BvbnNlVGV4dCAmJiAocC50ZXh0ID0gdS5yZXNwb25zZVRleHQpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjID0gdS5zdGF0dXNUZXh0CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9IGNhdGNoIChmKSB7CkBAIC0zNDMxLDcgKzM2ODMsOCBAQAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGkgfHwgbygtMSwgZCkKICAgICAgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIHAgJiYgbyhzLCBjLCBwLCBsKQotICAg
ICAgICAgICAgICAgICAgICB9LCBuLmFzeW5jID8gNCA9PT0gdS5yZWFkeVN0YXRlID8gc2V0VGlt
ZW91dChyKSA6IChhID0gKytXbiwgJG4gJiYgKFBuIHx8IChQbiA9IHt9LCBiKGUpLnVubG9hZCgk
bikpLCBQblthXSA9IHIpLCB1Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9IHIpIDogcigpCisgICAgICAg
ICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgIG4uYXN5bmMgPyA0ID09PSB1LnJl
YWR5U3RhdGUgPyBzZXRUaW1lb3V0KHIpIDogKGEgPSArK1duLCAkbiAmJiAoUG4gfHwgKFBuID0g
e30sIGIoZSkudW5sb2FkKCRuKSksIFBuW2FdID0gciksIHUub25yZWFkeXN0YXRlY2hhbmdlID0g
cikgOiByKCkKICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgIGFib3J0OiBmdW5j
dGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgciAmJiByKHQsICEwKQpAQCAtMzQ1OCwxMCAr
MzcxMSwxNCBAQAogICAgICAgICAgICAgICAgIGlmIChvKSB7CiAgICAgICAgICAgICAgICAgICAg
IGlmIChuID0gK29bMl0sIHIgPSBvWzNdIHx8IChiLmNzc051bWJlcltlXSA/ICIiIDogInB4Iiks
ICJweCIgIT09IHIgJiYgcykgewogICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGIuY3NzKGku
ZWxlbSwgZSwgITApIHx8IG4gfHwgMTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRvIHUgPSB1
IHx8ICIuNSIsIHMgLz0gdSwgYi5zdHlsZShpLmVsZW0sIGUsIHMgKyByKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGRvIHUgPSB1IHx8ICIuNSIsCisgICAgICAgICAgICAgICAgICAgICAgICBz
IC89IHUsCisgICAgICAgICAgICAgICAgICAgICAgICBiLnN0eWxlKGkuZWxlbSwgZSwgcyArIHIp
OwogICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHUgIT09ICh1ID0gaS5jdXIoKSAvIGEp
ICYmIDEgIT09IHUgJiYgLS1sKQogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgICAgIGkudW5pdCA9IHIsIGkuc3RhcnQgPSBzLCBpLmVuZCA9IG9bMV0gPyBzICsgKG9bMV0g
KyAxKSAqIG4gOiBuCisgICAgICAgICAgICAgICAgICAgIGkudW5pdCA9IHIsCisgICAgICAgICAg
ICAgICAgICAgIGkuc3RhcnQgPSBzLAorICAgICAgICAgICAgICAgICAgICBpLmVuZCA9IG9bMV0g
PyBzICsgKG9bMV0gKyAxKSAqIG4gOiBuCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIHJldHVybiBpCiAgICAgICAgICAgICB9XQpAQCAtMzU0NSw3ICszODAyLDggQEAKICAgICAg
ICAgICAgIGE7CiAgICAgICAgIGZvciAoaSBpbiBlKQogICAgICAgICAgICAgaWYgKHIgPSBiLmNh
bWVsQ2FzZShpKSwgbyA9IHRbcl0sIG4gPSBlW2ldLCBiLmlzQXJyYXkobikgJiYgKG8gPSBuWzFd
LCBuID0gZVtpXSA9IG5bMF0pLCBpICE9PSByICYmIChlW3JdID0gbiwgZGVsZXRlIGVbaV0pLCBh
ID0gYi5jc3NIb29rc1tyXSwgYSAmJiAiZXhwYW5kIiBpbiBhKSB7Ci0gICAgICAgICAgICAgICAg
biA9IGEuZXhwYW5kKG4pLCBkZWxldGUgZVtyXTsKKyAgICAgICAgICAgICAgICBuID0gYS5leHBh
bmQobiksCisgICAgICAgICAgICAgICAgZGVsZXRlIGVbcl07CiAgICAgICAgICAgICAgICAgZm9y
IChpIGluIG4pCiAgICAgICAgICAgICAgICAgICAgIGkgaW4gZSB8fCAoZVtpXSA9IG5baV0sIHRb
aV0gPSBvKQogICAgICAgICAgICAgfSBlbHNlCkBAIC0zNTU4LDcgKzM4MTYsOSBAQAogICAgICAg
ICAgICAgICAgIHIgPSAwLAogICAgICAgICAgICAgICAgIGkgPSBlLmxlbmd0aDsKICAgICAgICAg
ICAgIGZvciAoOyBpID4gcjsgcisrKQotICAgICAgICAgICAgICAgIG4gPSBlW3JdLCBRbltuXSA9
IFFuW25dIHx8IFtdLCBRbltuXS51bnNoaWZ0KHQpCisgICAgICAgICAgICAgICAgbiA9IGVbcl0s
CisgICAgICAgICAgICAgICAgUW5bbl0gPSBRbltuXSB8fCBbXSwKKyAgICAgICAgICAgICAgICBR
bltuXS51bnNoaWZ0KHQpCiAgICAgICAgIH0sCiAgICAgICAgIHByZWZpbHRlcjogZnVuY3Rpb24o
ZSwgdCkgewogICAgICAgICAgICAgdCA/IEduLnVuc2hpZnQoZSkgOiBHbi5wdXNoKGUpCkBAIC0z
NTgzLDEwICszODQzLDE1IEBACiAgICAgICAgICAgICBjLnVucXVldWVkIHx8IHAoKQogICAgICAg
ICB9KSwgYy51bnF1ZXVlZCsrLCBmLmFsd2F5cyhmdW5jdGlvbigpIHsKICAgICAgICAgICAgIGYu
YWx3YXlzKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIGMudW5xdWV1ZWQtLSwgYi5xdWV1
ZShlLCAiZngiKS5sZW5ndGggfHwgYy5lbXB0eS5maXJlKCkKKyAgICAgICAgICAgICAgICBjLnVu
cXVldWVkLS0sCisgICAgICAgICAgICAgICAgYi5xdWV1ZShlLCAiZngiKS5sZW5ndGggfHwgYy5l
bXB0eS5maXJlKCkKICAgICAgICAgICAgIH0pCi0gICAgICAgIH0pKSwgMSA9PT0gZS5ub2RlVHlw
ZSAmJiAoImhlaWdodCIgaW4gdCB8fCAid2lkdGgiIGluIHQpICYmIChuLm92ZXJmbG93ID0gW2Qu
b3ZlcmZsb3csIGQub3ZlcmZsb3dYLCBkLm92ZXJmbG93WV0sICJpbmxpbmUiID09PSBiLmNzcyhl
LCAiZGlzcGxheSIpICYmICJub25lIiA9PT0gYi5jc3MoZSwgImZsb2F0IikgJiYgKGIuc3VwcG9y
dC5pbmxpbmVCbG9ja05lZWRzTGF5b3V0ICYmICJpbmxpbmUiICE9PSB1bihlLm5vZGVOYW1lKSA/
IGQuem9vbSA9IDEgOiBkLmRpc3BsYXkgPSAiaW5saW5lLWJsb2NrIikpLCBuLm92ZXJmbG93ICYm
IChkLm92ZXJmbG93ID0gImhpZGRlbiIsIGIuc3VwcG9ydC5zaHJpbmtXcmFwQmxvY2tzIHx8IGYu
YWx3YXlzKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgZC5vdmVyZmxvdyA9IG4ub3ZlcmZsb3db
MF0sIGQub3ZlcmZsb3dYID0gbi5vdmVyZmxvd1sxXSwgZC5vdmVyZmxvd1kgPSBuLm92ZXJmbG93
WzJdCisgICAgICAgIH0pKSwKKyAgICAgICAgMSA9PT0gZS5ub2RlVHlwZSAmJiAoImhlaWdodCIg
aW4gdCB8fCAid2lkdGgiIGluIHQpICYmIChuLm92ZXJmbG93ID0gW2Qub3ZlcmZsb3csIGQub3Zl
cmZsb3dYLCBkLm92ZXJmbG93WV0sICJpbmxpbmUiID09PSBiLmNzcyhlLCAiZGlzcGxheSIpICYm
ICJub25lIiA9PT0gYi5jc3MoZSwgImZsb2F0IikgJiYgKGIuc3VwcG9ydC5pbmxpbmVCbG9ja05l
ZWRzTGF5b3V0ICYmICJpbmxpbmUiICE9PSB1bihlLm5vZGVOYW1lKSA/IGQuem9vbSA9IDEgOiBk
LmRpc3BsYXkgPSAiaW5saW5lLWJsb2NrIikpLAorICAgICAgICBuLm92ZXJmbG93ICYmIChkLm92
ZXJmbG93ID0gImhpZGRlbiIsIGIuc3VwcG9ydC5zaHJpbmtXcmFwQmxvY2tzIHx8IGYuYWx3YXlz
KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZC5vdmVyZmxvdyA9IG4ub3ZlcmZsb3dbMF0sCisg
ICAgICAgICAgICBkLm92ZXJmbG93WCA9IG4ub3ZlcmZsb3dbMV0sCisgICAgICAgICAgICBkLm92
ZXJmbG93WSA9IG4ub3ZlcmZsb3dbMl0KICAgICAgICAgfSkpOwogICAgICAgICBmb3IgKGkgaW4g
dCkKICAgICAgICAgICAgIGlmIChhID0gdFtpXSwgVm4uZXhlYyhhKSkgewpAQCAtMzU5NSwyNSAr
Mzg2MCwzOSBAQAogICAgICAgICAgICAgICAgIGcucHVzaChpKQogICAgICAgICAgICAgfQogICAg
ICAgICBpZiAobyA9IGcubGVuZ3RoKSB7Ci0gICAgICAgICAgICBzID0gYi5fZGF0YShlLCAiZnhz
aG93IikgfHwgYi5fZGF0YShlLCAiZnhzaG93Iiwge30pLCAiaGlkZGVuIiBpbiBzICYmIChtID0g
cy5oaWRkZW4pLCB1ICYmIChzLmhpZGRlbiA9ICFtKSwgbSA/IGIoZSkuc2hvdygpIDogZi5kb25l
KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgcyA9IGIuX2RhdGEoZSwgImZ4c2hvdyIpIHx8IGIu
X2RhdGEoZSwgImZ4c2hvdyIsIHt9KSwKKyAgICAgICAgICAgICJoaWRkZW4iIGluIHMgJiYgKG0g
PSBzLmhpZGRlbiksCisgICAgICAgICAgICB1ICYmIChzLmhpZGRlbiA9ICFtKSwKKyAgICAgICAg
ICAgIG0gPyBiKGUpLnNob3coKSA6IGYuZG9uZShmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAg
ICBiKGUpLmhpZGUoKQotICAgICAgICAgICAgfSksIGYuZG9uZShmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgIH0pLAorICAgICAgICAgICAgZi5kb25lKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAg
ICAgIHZhciB0OwogICAgICAgICAgICAgICAgIGIuX3JlbW92ZURhdGEoZSwgImZ4c2hvdyIpOwog
ICAgICAgICAgICAgICAgIGZvciAodCBpbiBoKQogICAgICAgICAgICAgICAgICAgICBiLnN0eWxl
KGUsIHQsIGhbdF0pCiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIGZvciAoaSA9IDA7IG8g
PiBpOyBpKyspCi0gICAgICAgICAgICAgICAgciA9IGdbaV0sIGwgPSBmLmNyZWF0ZVR3ZWVuKHIs
IG0gPyBzW3JdIDogMCksIGhbcl0gPSBzW3JdIHx8IGIuc3R5bGUoZSwgciksIHIgaW4gcyB8fCAo
c1tyXSA9IGwuc3RhcnQsIG0gJiYgKGwuZW5kID0gbC5zdGFydCwgbC5zdGFydCA9ICJ3aWR0aCIg
PT09IHIgfHwgImhlaWdodCIgPT09IHIgPyAxIDogMCkpCisgICAgICAgICAgICAgICAgciA9IGdb
aV0sCisgICAgICAgICAgICAgICAgbCA9IGYuY3JlYXRlVHdlZW4ociwgbSA/IHNbcl0gOiAwKSwK
KyAgICAgICAgICAgICAgICBoW3JdID0gc1tyXSB8fCBiLnN0eWxlKGUsIHIpLAorICAgICAgICAg
ICAgICAgIHIgaW4gcyB8fCAoc1tyXSA9IGwuc3RhcnQsIG0gJiYgKGwuZW5kID0gbC5zdGFydCwg
bC5zdGFydCA9ICJ3aWR0aCIgPT09IHIgfHwgImhlaWdodCIgPT09IHIgPyAxIDogMCkpCiAgICAg
ICAgIH0KICAgICB9CiAgICAgZnVuY3Rpb24gcnIoZSwgdCwgbiwgciwgaSkgewogICAgICAgICBy
ZXR1cm4gbmV3IHJyLnByb3RvdHlwZS5pbml0KGUsIHQsIG4sIHIsIGkpCiAgICAgfQotICAgIGIu
VHdlZW4gPSByciwgcnIucHJvdG90eXBlID0geworICAgIGIuVHdlZW4gPSByciwKKyAgICByci5w
cm90b3R5cGUgPSB7CiAgICAgICAgIGNvbnN0cnVjdG9yOiByciwKICAgICAgICAgaW5pdDogZnVu
Y3Rpb24oZSwgdCwgbiwgciwgaSwgbykgewotICAgICAgICAgICAgdGhpcy5lbGVtID0gZSwgdGhp
cy5wcm9wID0gbiwgdGhpcy5lYXNpbmcgPSBpIHx8ICJzd2luZyIsIHRoaXMub3B0aW9ucyA9IHQs
IHRoaXMuc3RhcnQgPSB0aGlzLm5vdyA9IHRoaXMuY3VyKCksIHRoaXMuZW5kID0gciwgdGhpcy51
bml0ID0gbyB8fCAoYi5jc3NOdW1iZXJbbl0gPyAiIiA6ICJweCIpCisgICAgICAgICAgICB0aGlz
LmVsZW0gPSBlLAorICAgICAgICAgICAgdGhpcy5wcm9wID0gbiwKKyAgICAgICAgICAgIHRoaXMu
ZWFzaW5nID0gaSB8fCAic3dpbmciLAorICAgICAgICAgICAgdGhpcy5vcHRpb25zID0gdCwKKyAg
ICAgICAgICAgIHRoaXMuc3RhcnQgPSB0aGlzLm5vdyA9IHRoaXMuY3VyKCksCisgICAgICAgICAg
ICB0aGlzLmVuZCA9IHIsCisgICAgICAgICAgICB0aGlzLnVuaXQgPSBvIHx8IChiLmNzc051bWJl
cltuXSA/ICIiIDogInB4IikKICAgICAgICAgfSwKICAgICAgICAgY3VyOiBmdW5jdGlvbigpIHsK
ICAgICAgICAgICAgIHZhciBlID0gcnIucHJvcEhvb2tzW3RoaXMucHJvcF07CkBAIC0zNjI0LDcg
KzM5MDMsOSBAQAogICAgICAgICAgICAgICAgIG4gPSByci5wcm9wSG9va3NbdGhpcy5wcm9wXTsK
ICAgICAgICAgICAgIHJldHVybiB0aGlzLnBvcyA9IHQgPSB0aGlzLm9wdGlvbnMuZHVyYXRpb24g
PyBiLmVhc2luZ1t0aGlzLmVhc2luZ10oZSwgdGhpcy5vcHRpb25zLmR1cmF0aW9uICogZSwgMCwg
MSwgdGhpcy5vcHRpb25zLmR1cmF0aW9uKSA6IGUsIHRoaXMubm93ID0gKHRoaXMuZW5kIC0gdGhp
cy5zdGFydCkgKiB0ICsgdGhpcy5zdGFydCwgdGhpcy5vcHRpb25zLnN0ZXAgJiYgdGhpcy5vcHRp
b25zLnN0ZXAuY2FsbCh0aGlzLmVsZW0sIHRoaXMubm93LCB0aGlzKSwgbiAmJiBuLnNldCA/IG4u
c2V0KHRoaXMpIDogcnIucHJvcEhvb2tzLl9kZWZhdWx0LnNldCh0aGlzKSwgdGhpcwogICAgICAg
ICB9Ci0gICAgfSwgcnIucHJvdG90eXBlLmluaXQucHJvdG90eXBlID0gcnIucHJvdG90eXBlLCBy
ci5wcm9wSG9va3MgPSB7CisgICAgfSwKKyAgICByci5wcm90b3R5cGUuaW5pdC5wcm90b3R5cGUg
PSByci5wcm90b3R5cGUsCisgICAgcnIucHJvcEhvb2tzID0gewogICAgICAgICBfZGVmYXVsdDog
ewogICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgdmFyIHQ7
CkBAIC0zNjM0LDE2ICszOTE1LDE5IEBACiAgICAgICAgICAgICAgICAgYi5meC5zdGVwW2UucHJv
cF0gPyBiLmZ4LnN0ZXBbZS5wcm9wXShlKSA6IGUuZWxlbS5zdHlsZSAmJiAobnVsbCAhPSBlLmVs
ZW0uc3R5bGVbYi5jc3NQcm9wc1tlLnByb3BdXSB8fCBiLmNzc0hvb2tzW2UucHJvcF0pID8gYi5z
dHlsZShlLmVsZW0sIGUucHJvcCwgZS5ub3cgKyBlLnVuaXQpIDogZS5lbGVtW2UucHJvcF0gPSBl
Lm5vdwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgfSwgcnIucHJvcEhvb2tzLnNjcm9s
bFRvcCA9IHJyLnByb3BIb29rcy5zY3JvbGxMZWZ0ID0geworICAgIH0sCisgICAgcnIucHJvcEhv
b2tzLnNjcm9sbFRvcCA9IHJyLnByb3BIb29rcy5zY3JvbGxMZWZ0ID0gewogICAgICAgICBzZXQ6
IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgIGUuZWxlbS5ub2RlVHlwZSAmJiBlLmVsZW0ucGFy
ZW50Tm9kZSAmJiAoZS5lbGVtW2UucHJvcF0gPSBlLm5vdykKICAgICAgICAgfQotICAgIH0sIGIu
ZWFjaChbInRvZ2dsZSIsICJzaG93IiwgImhpZGUiXSwgZnVuY3Rpb24oZSwgdCkgeworICAgIH0s
CisgICAgYi5lYWNoKFsidG9nZ2xlIiwgInNob3ciLCAiaGlkZSJdLCBmdW5jdGlvbihlLCB0KSB7
CiAgICAgICAgIHZhciBuID0gYi5mblt0XTsKICAgICAgICAgYi5mblt0XSA9IGZ1bmN0aW9uKGUs
IHIsIGkpIHsKICAgICAgICAgICAgIHJldHVybiBudWxsID09IGUgfHwgImJvb2xlYW4iID09IHR5
cGVvZiBlID8gbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpIDogdGhpcy5hbmltYXRlKGlyKHQsICEw
KSwgZSwgciwgaSkKICAgICAgICAgfQotICAgIH0pLCBiLmZuLmV4dGVuZCh7CisgICAgfSksCisg
ICAgYi5mbi5leHRlbmQoewogICAgICAgICBmYWRlVG86IGZ1bmN0aW9uKGUsIHQsIG4sIHIpIHsK
ICAgICAgICAgICAgIHJldHVybiB0aGlzLmZpbHRlcihubikuY3NzKCJvcGFjaXR5IiwgMCkuc2hv
dygpLmVuZCgpLmFuaW1hdGUoewogICAgICAgICAgICAgICAgIG9wYWNpdHk6IHQKQEAgLTM2NTYs
MTQgKzM5NDAsMTYgQEAKICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBlcih0aGlzLCBiLmV4
dGVuZCh7fSwgZSksIG8pOwogICAgICAgICAgICAgICAgICAgICBhLmZpbmlzaCA9IGZ1bmN0aW9u
KCkgewogICAgICAgICAgICAgICAgICAgICAgICAgdC5zdG9wKCEwKQotICAgICAgICAgICAgICAg
ICAgICB9LCAoaSB8fCBiLl9kYXRhKHRoaXMsICJmaW5pc2giKSkgJiYgdC5zdG9wKCEwKQorICAg
ICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAoaSB8fCBiLl9kYXRhKHRo
aXMsICJmaW5pc2giKSkgJiYgdC5zdG9wKCEwKQogICAgICAgICAgICAgICAgIH07CiAgICAgICAg
ICAgICByZXR1cm4gYS5maW5pc2ggPSBhLCBpIHx8IG8ucXVldWUgPT09ICExID8gdGhpcy5lYWNo
KGEpIDogdGhpcy5xdWV1ZShvLnF1ZXVlLCBhKQogICAgICAgICB9LAogICAgICAgICBzdG9wOiBm
dW5jdGlvbihlLCBuLCByKSB7CiAgICAgICAgICAgICB2YXIgaSA9IGZ1bmN0aW9uKGUpIHsKICAg
ICAgICAgICAgICAgICB2YXIgdCA9IGUuc3RvcDsKLSAgICAgICAgICAgICAgICBkZWxldGUgZS5z
dG9wLCB0KHIpCisgICAgICAgICAgICAgICAgZGVsZXRlIGUuc3RvcCwKKyAgICAgICAgICAgICAg
ICB0KHIpCiAgICAgICAgICAgICB9OwogICAgICAgICAgICAgcmV0dXJuICJzdHJpbmciICE9IHR5
cGVvZiBlICYmIChyID0gbiwgbiA9IGUsIGUgPSB0KSwgbiAmJiBlICE9PSAhMSAmJiB0aGlzLnF1
ZXVlKGUgfHwgImZ4IiwgW10pLCB0aGlzLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAg
ICAgdmFyIHQgPSAhMCwKQEAgLTM3MDMsNyArMzk4OSw4IEBACiAgICAgICAgICAgICB9LAogICAg
ICAgICAgICAgaSA9IDA7CiAgICAgICAgIGZvciAodCA9IHQgPyAxIDogMDsgNCA+IGk7IGkgKz0g
MiAtIHQpCi0gICAgICAgICAgICBuID0gWnRbaV0sIHJbIm1hcmdpbiIgKyBuXSA9IHJbInBhZGRp
bmciICsgbl0gPSBlOworICAgICAgICAgICAgbiA9IFp0W2ldLAorICAgICAgICAgICAgclsibWFy
Z2luIiArIG5dID0gclsicGFkZGluZyIgKyBuXSA9IGU7CiAgICAgICAgIHJldHVybiB0ICYmIChy
Lm9wYWNpdHkgPSByLndpZHRoID0gZSksIHIKICAgICB9CiAgICAgYi5lYWNoKHsKQEAgLTM3MjMs
NDQgKzQwMTAsNjEgQEAKICAgICAgICAgYi5mbltlXSA9IGZ1bmN0aW9uKGUsIG4sIHIpIHsKICAg
ICAgICAgICAgIHJldHVybiB0aGlzLmFuaW1hdGUodCwgZSwgbiwgcikKICAgICAgICAgfQotICAg
IH0pLCBiLnNwZWVkID0gZnVuY3Rpb24oZSwgdCwgbikgeworICAgIH0pLAorICAgIGIuc3BlZWQg
PSBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgIHZhciByID0gZSAmJiAib2JqZWN0IiA9PSB0
eXBlb2YgZSA/IGIuZXh0ZW5kKHt9LCBlKSA6IHsKICAgICAgICAgICAgIGNvbXBsZXRlOiBuIHx8
ICFuICYmIHQgfHwgYi5pc0Z1bmN0aW9uKGUpICYmIGUsCiAgICAgICAgICAgICBkdXJhdGlvbjog
ZSwKICAgICAgICAgICAgIGVhc2luZzogbiAmJiB0IHx8IHQgJiYgIWIuaXNGdW5jdGlvbih0KSAm
JiB0CiAgICAgICAgIH07CiAgICAgICAgIHJldHVybiByLmR1cmF0aW9uID0gYi5meC5vZmYgPyAw
IDogIm51bWJlciIgPT0gdHlwZW9mIHIuZHVyYXRpb24gPyByLmR1cmF0aW9uIDogci5kdXJhdGlv
biBpbiBiLmZ4LnNwZWVkcyA/IGIuZnguc3BlZWRzW3IuZHVyYXRpb25dIDogYi5meC5zcGVlZHMu
X2RlZmF1bHQsIChudWxsID09IHIucXVldWUgfHwgci5xdWV1ZSA9PT0gITApICYmIChyLnF1ZXVl
ID0gImZ4IiksIHIub2xkID0gci5jb21wbGV0ZSwgci5jb21wbGV0ZSA9IGZ1bmN0aW9uKCkgewot
ICAgICAgICAgICAgYi5pc0Z1bmN0aW9uKHIub2xkKSAmJiByLm9sZC5jYWxsKHRoaXMpLCByLnF1
ZXVlICYmIGIuZGVxdWV1ZSh0aGlzLCByLnF1ZXVlKQorICAgICAgICAgICAgYi5pc0Z1bmN0aW9u
KHIub2xkKSAmJiByLm9sZC5jYWxsKHRoaXMpLAorICAgICAgICAgICAgci5xdWV1ZSAmJiBiLmRl
cXVldWUodGhpcywgci5xdWV1ZSkKICAgICAgICAgfSwgcgotICAgIH0sIGIuZWFzaW5nID0gewor
ICAgIH0sCisgICAgYi5lYXNpbmcgPSB7CiAgICAgICAgIGxpbmVhcjogZnVuY3Rpb24oZSkgewog
ICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICAgfSwKICAgICAgICAgc3dpbmc6IGZ1bmN0aW9u
KGUpIHsKICAgICAgICAgICAgIHJldHVybiAuNSAtIE1hdGguY29zKGUgKiBNYXRoLlBJKSAvIDIK
ICAgICAgICAgfQotICAgIH0sIGIudGltZXJzID0gW10sIGIuZnggPSByci5wcm90b3R5cGUuaW5p
dCwgYi5meC50aWNrID0gZnVuY3Rpb24oKSB7CisgICAgfSwKKyAgICBiLnRpbWVycyA9IFtdLAor
ICAgIGIuZnggPSByci5wcm90b3R5cGUuaW5pdCwKKyAgICBiLmZ4LnRpY2sgPSBmdW5jdGlvbigp
IHsKICAgICAgICAgdmFyIGUsCiAgICAgICAgICAgICBuID0gYi50aW1lcnMsCiAgICAgICAgICAg
ICByID0gMDsKICAgICAgICAgZm9yIChYbiA9IGIubm93KCk7IG4ubGVuZ3RoID4gcjsgcisrKQot
ICAgICAgICAgICAgZSA9IG5bcl0sIGUoKSB8fCBuW3JdICE9PSBlIHx8IG4uc3BsaWNlKHItLSwg
MSk7Ci0gICAgICAgIG4ubGVuZ3RoIHx8IGIuZnguc3RvcCgpLCBYbiA9IHQKLSAgICB9LCBiLmZ4
LnRpbWVyID0gZnVuY3Rpb24oZSkgeworICAgICAgICAgICAgZSA9IG5bcl0sCisgICAgICAgICAg
ICBlKCkgfHwgbltyXSAhPT0gZSB8fCBuLnNwbGljZShyLS0sIDEpOworICAgICAgICBuLmxlbmd0
aCB8fCBiLmZ4LnN0b3AoKSwKKyAgICAgICAgWG4gPSB0CisgICAgfSwKKyAgICBiLmZ4LnRpbWVy
ID0gZnVuY3Rpb24oZSkgewogICAgICAgICBlKCkgJiYgYi50aW1lcnMucHVzaChlKSAmJiBiLmZ4
LnN0YXJ0KCkKLSAgICB9LCBiLmZ4LmludGVydmFsID0gMTMsIGIuZnguc3RhcnQgPSBmdW5jdGlv
bigpIHsKKyAgICB9LAorICAgIGIuZnguaW50ZXJ2YWwgPSAxMywKKyAgICBiLmZ4LnN0YXJ0ID0g
ZnVuY3Rpb24oKSB7CiAgICAgICAgIFVuIHx8IChVbiA9IHNldEludGVydmFsKGIuZngudGljaywg
Yi5meC5pbnRlcnZhbCkpCi0gICAgfSwgYi5meC5zdG9wID0gZnVuY3Rpb24oKSB7Ci0gICAgICAg
IGNsZWFySW50ZXJ2YWwoVW4pLCBVbiA9IG51bGwKLSAgICB9LCBiLmZ4LnNwZWVkcyA9IHsKKyAg
ICB9LAorICAgIGIuZnguc3RvcCA9IGZ1bmN0aW9uKCkgeworICAgICAgICBjbGVhckludGVydmFs
KFVuKSwKKyAgICAgICAgVW4gPSBudWxsCisgICAgfSwKKyAgICBiLmZ4LnNwZWVkcyA9IHsKICAg
ICAgICAgc2xvdzogNjAwLAogICAgICAgICBmYXN0OiAyMDAsCiAgICAgICAgIF9kZWZhdWx0OiA0
MDAKLSAgICB9LCBiLmZ4LnN0ZXAgPSB7fSwgYi5leHByICYmIGIuZXhwci5maWx0ZXJzICYmIChi
LmV4cHIuZmlsdGVycy5hbmltYXRlZCA9IGZ1bmN0aW9uKGUpIHsKKyAgICB9LAorICAgIGIuZngu
c3RlcCA9IHt9LAorICAgIGIuZXhwciAmJiBiLmV4cHIuZmlsdGVycyAmJiAoYi5leHByLmZpbHRl
cnMuYW5pbWF0ZWQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgIHJldHVybiBiLmdyZXAoYi50aW1l
cnMsIGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgIHJldHVybiBlID09PSB0LmVsZW0KICAgICAg
ICAgfSkubGVuZ3RoCi0gICAgfSksIGIuZm4ub2Zmc2V0ID0gZnVuY3Rpb24oZSkgeworICAgIH0p
LAorICAgIGIuZm4ub2Zmc2V0ID0gZnVuY3Rpb24oZSkgewogICAgICAgICBpZiAoYXJndW1lbnRz
Lmxlbmd0aCkKICAgICAgICAgICAgIHJldHVybiBlID09PSB0ID8gdGhpcyA6IHRoaXMuZWFjaChm
dW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgYi5vZmZzZXQuc2V0T2Zmc2V0KHRoaXMsIGUs
IHQpCkBAIC0zNzc4LDcgKzQwODIsOCBAQAogICAgICAgICAgICAgICAgIHRvcDogby50b3AgKyAo
ci5wYWdlWU9mZnNldCB8fCBuLnNjcm9sbFRvcCkgLSAobi5jbGllbnRUb3AgfHwgMCksCiAgICAg
ICAgICAgICAgICAgbGVmdDogby5sZWZ0ICsgKHIucGFnZVhPZmZzZXQgfHwgbi5zY3JvbGxMZWZ0
KSAtIChuLmNsaWVudExlZnQgfHwgMCkKICAgICAgICAgICAgIH0pIDogbwotICAgIH0sIGIub2Zm
c2V0ID0geworICAgIH0sCisgICAgYi5vZmZzZXQgPSB7CiAgICAgICAgIHNldE9mZnNldDogZnVu
Y3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgdmFyIHIgPSBiLmNzcyhlLCAicG9zaXRpb24i
KTsKICAgICAgICAgICAgICJzdGF0aWMiID09PSByICYmIChlLnN0eWxlLnBvc2l0aW9uID0gInJl
bGF0aXZlIik7CkBAIC0zNzkxLDkgKzQwOTYsMTQgQEAKICAgICAgICAgICAgICAgICBjID0ge30s
CiAgICAgICAgICAgICAgICAgcCwKICAgICAgICAgICAgICAgICBmOwotICAgICAgICAgICAgdSA/
IChjID0gaS5wb3NpdGlvbigpLCBwID0gYy50b3AsIGYgPSBjLmxlZnQpIDogKHAgPSBwYXJzZUZs
b2F0KGEpIHx8IDAsIGYgPSBwYXJzZUZsb2F0KHMpIHx8IDApLCBiLmlzRnVuY3Rpb24odCkgJiYg
KHQgPSB0LmNhbGwoZSwgbiwgbykpLCBudWxsICE9IHQudG9wICYmIChsLnRvcCA9IHQudG9wIC0g
by50b3AgKyBwKSwgbnVsbCAhPSB0LmxlZnQgJiYgKGwubGVmdCA9IHQubGVmdCAtIG8ubGVmdCAr
IGYpLCAidXNpbmciIGluIHQgPyB0LnVzaW5nLmNhbGwoZSwgbCkgOiBpLmNzcyhsKQorICAgICAg
ICAgICAgdSA/IChjID0gaS5wb3NpdGlvbigpLCBwID0gYy50b3AsIGYgPSBjLmxlZnQpIDogKHAg
PSBwYXJzZUZsb2F0KGEpIHx8IDAsIGYgPSBwYXJzZUZsb2F0KHMpIHx8IDApLAorICAgICAgICAg
ICAgYi5pc0Z1bmN0aW9uKHQpICYmICh0ID0gdC5jYWxsKGUsIG4sIG8pKSwKKyAgICAgICAgICAg
IG51bGwgIT0gdC50b3AgJiYgKGwudG9wID0gdC50b3AgLSBvLnRvcCArIHApLAorICAgICAgICAg
ICAgbnVsbCAhPSB0LmxlZnQgJiYgKGwubGVmdCA9IHQubGVmdCAtIG8ubGVmdCArIGYpLAorICAg
ICAgICAgICAgInVzaW5nIiBpbiB0ID8gdC51c2luZy5jYWxsKGUsIGwpIDogaS5jc3MobCkKICAg
ICAgICAgfQotICAgIH0sIGIuZm4uZXh0ZW5kKHsKKyAgICB9LAorICAgIGIuZm4uZXh0ZW5kKHsK
ICAgICAgICAgcG9zaXRpb246IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgaWYgKHRoaXNbMF0p
IHsKICAgICAgICAgICAgICAgICB2YXIgZSwKQEAgLTM4MTcsNyArNDEyNyw4IEBACiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGUgfHwgby5kb2N1bWVudEVsZW1lbnQKICAgICAgICAgICAgIH0pCiAg
ICAgICAgIH0KLSAgICB9KSwgYi5lYWNoKHsKKyAgICB9KSwKKyAgICBiLmVhY2goewogICAgICAg
ICBzY3JvbGxMZWZ0OiAicGFnZVhPZmZzZXQiLAogICAgICAgICBzY3JvbGxUb3A6ICJwYWdlWU9m
ZnNldCIKICAgICB9LCBmdW5jdGlvbihlLCBuKSB7CkBAIC0zODUwLDcgKzQxNjEsOSBAQAogICAg
ICAgICAgICAgICAgIH0sIG4sIGEgPyBpIDogdCwgYSwgbnVsbCkKICAgICAgICAgICAgIH0KICAg
ICAgICAgfSkKLSAgICB9KSwgZS5qUXVlcnkgPSBlLiQgPSBiLCAiZnVuY3Rpb24iID09IHR5cGVv
ZiBkZWZpbmUgJiYgZGVmaW5lLmFtZCAmJiBkZWZpbmUuYW1kLmpRdWVyeSAmJiBkZWZpbmUoImpx
dWVyeSIsIFtdLCBmdW5jdGlvbigpIHsKKyAgICB9KSwKKyAgICBlLmpRdWVyeSA9IGUuJCA9IGIs
CisgICAgImZ1bmN0aW9uIiA9PSB0eXBlb2YgZGVmaW5lICYmIGRlZmluZS5hbWQgJiYgZGVmaW5l
LmFtZC5qUXVlcnkgJiYgZGVmaW5lKCJqcXVlcnkiLCBbXSwgZnVuY3Rpb24oKSB7CiAgICAgICAg
IHJldHVybiBiCiAgICAgfSkKIH0pKHdpbmRvdyk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395495</attachid>
            <date>2020-04-05 01:59:27 -0700</date>
            <delta_ts>2020-04-05 11:39:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209998-20200405025926.patch</filename>
            <type>text/plain</type>
            <size>184082</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDNjNTI5NTBmZGMzM2IyNTIxNWE4NGI0MDA3NTE4
OGVjMDdiY2U4ZTQuLjNhM2E4ZDM1YTk1MmM5MzA4YmU3MzQ5Y2MwYmNkMjM1YmIyNDEwYTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIwLTA0LTA1ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBE
ZWJ1Z2dlcjogdHJlYXQgY29tbWEgc3ViLWV4cHJlc3Npb25zIGFzIHNlcGFyYXRlIHN0YXRlbWVu
dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTk5
OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1pbmlm
aWVycyBzb21ldGltZXMgdXNlIGAsYCBpbnN0ZWFkIG9mIGA7YCBhcyBhIHdheSBvZiBjb21wcmVz
c2luZyBtdWx0aXBsZSBzdGF0ZW1lbnRzIGludG8KKyAgICAgICAgYSBzaW5nbGUgc3RhdGVtZW50
IChlLmcuIGluc2lkZSBhbiBgaWZgIGNvbmRpdGlvbmFsKS4gVGhpcyBtYWtlcyBzdGVwcGluZyB0
aHJvdWdoIG1pbmlmaWVkCisgICAgICAgIGNvZGUgbXVjaCBsZXNzIHVzZWZ1bCwgYXMgb3VyIGN1
cnJlbnQgc3RlcHBpbmcgbG9naWMgaXMgYmFzZWQgb24gZXhwcmVzc2lvbnMgKG5vdCBpbmNsdWRp
bmcKKyAgICAgICAgc3RlcCBpbiBvciBzdGVwIG91dCkuIEluIG1vc3QgY2FzZXMsIHdlIGRvIGFj
dHVhbGx5IHdhbnQgdG8gdHJlYXQgZWFjaCBzdWItZXhwcmVzc2lvbiBpbiBhCisgICAgICAgIGNv
bW1hIGV4cHJlc3Npb24gYXMgYSBzdGF0ZW1lbnQgc28gYXMgdG8gZW11bGF0ZSB0aGUgYmVoYXZp
b3VyIGFzIGlmIHRoZXJlIHdlcmUgYDtgIGluc3RlYWQuCisKKyAgICAgICAgKiBieXRlY29tcGls
ZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6Q29tbWFOb2RlOjplbWl0Qnl0ZWNv
ZGUpOgorCisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OlBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZVZhcmlhYmxlRGVjbGFyYXRpb25MaXN0KToKKyAgICAgICAgKFBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZUV4cHJlc3Npb24pOgorICAgICAgICBTaGlmdCB0aGUgbG9j
YXRpb24gb2Ygc3Vic2VxdWVudCBzdWItZXhwcmVzc2lvbnMgdG8gYmUgYWZ0ZXIgdGhlIGNvbW1h
LiBBZGQgYnJlYWtwb2ludCBwYXVzZQorICAgICAgICBsb2NhdGlvbnMgZm9yIGVhY2ggc3Vic2Vx
dWVudCBzdWItZXhwcmVzc2lvbi4KKwogMjAyMC0wNC0wNCAgQWxleGV5IFNodmF5a2EgIDxzaHZh
aWthbGVzaEBnbWFpbC5jb20+CiAKICAgICAgICAgJ1x1JyBzaG91bGQgdGhyb3cgYW4gZWFybHkg
U3ludGF4RXJyb3IgZXhjZXB0aW9uLCBidXQgaW5zdGVhZCBldmFsdWF0ZXMgdG8gJ3UnCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL0NoYW5nZUxvZwppbmRleCAwMDM3YzU3ZGNjMmE1MWRiNTRhYWY0ZDUwYzBmMDg5ODM1
YTFhMTA4Li5lZDhkMTViMjM4YWRjNWE1YWFjNzc0YTk4ZTZkNjAyODc3OGM2MGU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAyMC0wNC0wNSAgRGV2aW4gUm91
c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogRGVidWdn
ZXI6IHRyZWF0IGNvbW1hIHN1Yi1leHByZXNzaW9ucyBhcyBzZXBhcmF0ZSBzdGF0ZW1lbnRzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk5OTgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNaW5pZmllcnMg
c29tZXRpbWVzIHVzZSBgLGAgaW5zdGVhZCBvZiBgO2AgYXMgYSB3YXkgb2YgY29tcHJlc3Npbmcg
bXVsdGlwbGUgc3RhdGVtZW50cyBpbnRvCisgICAgICAgIGEgc2luZ2xlIHN0YXRlbWVudCAoZS5n
LiBpbnNpZGUgYW4gYGlmYCBjb25kaXRpb25hbCkuIFRoaXMgbWFrZXMgc3RlcHBpbmcgdGhyb3Vn
aCBtaW5pZmllZAorICAgICAgICBjb2RlIG11Y2ggbGVzcyB1c2VmdWwsIGFzIG91ciBjdXJyZW50
IHN0ZXBwaW5nIGxvZ2ljIGlzIGJhc2VkIG9uIGV4cHJlc3Npb25zIChub3QgaW5jbHVkaW5nCisg
ICAgICAgIHN0ZXAgaW4gb3Igc3RlcCBvdXQpLiBJbiBtb3N0IGNhc2VzLCB3ZSBkbyBhY3R1YWxs
eSB3YW50IHRvIHRyZWF0IGVhY2ggc3ViLWV4cHJlc3Npb24gaW4gYQorICAgICAgICBjb21tYSBl
eHByZXNzaW9uIGFzIGEgc3RhdGVtZW50IHNvIGFzIHRvIGVtdWxhdGUgdGhlIGJlaGF2aW91ciBh
cyBpZiB0aGVyZSB3ZXJlIGA7YCBpbnN0ZWFkLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9X
b3JrZXJzL0Zvcm1hdHRlci9KU0Zvcm1hdHRlci5qczoKKyAgICAgICAgKEpTRm9ybWF0dGVyLnBy
b3RvdHlwZS5faXNMaWtlbHlUb0hhdmVOZXdsaW5lKToKKyAgICAgICAgKEpTRm9ybWF0dGVyLnBy
b3RvdHlwZS5faGFuZGxlVG9rZW5BdE5vZGUpOgorICAgICAgICBQdXQgZWFjaCBzdWItZXhwcmVz
c2lvbiBpbiBhIGNvbW1hIGV4cHJlc3Npb24gb24gaXQncyBvd24gbGluZS4KKwogMjAyMC0wNC0w
MyAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3Bl
Y3RvcjogU291cmNlczogZGlzY2xvc3VyZSBhcnJvd3Mgc2hvdWxkIGJlIHNob3duIGlmIGEgZm9s
ZGVyIGlzIGFkZGVkIHRvIHRoZSBuYXZpZ2F0aW9uIHNpZGViYXIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCA2NDBiMjQ5
NzU1ZTEwZWNkZDlhODNiOWUxNGIwOTdhYjM5ZmQwOTRmLi44NWFlOTdkMzY0OTIzMTZhMTAwNTg1
ZjQxZGIxODNhMjZiNzgyNDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0zMDQyLDggKzMwNDIsMTMgQEAgUmVnaXN0
ZXJJRCogUmVhZE1vZGlmeUJyYWNrZXROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwgUmUKIFJlZ2lzdGVySUQqIENvbW1hTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKICAgICBDb21t
YU5vZGUqIG5vZGUgPSB0aGlzOwotICAgIGZvciAoOyBub2RlICYmIG5vZGUtPm5leHQoKTsgbm9k
ZSA9IG5vZGUtPm5leHQoKSkKKyAgICBmb3IgKDsgbm9kZSAmJiBub2RlLT5uZXh0KCk7IG5vZGUg
PSBub2RlLT5uZXh0KCkpIHsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGdlbmVyYXRvci5p
Z25vcmVkUmVzdWx0KCksIG5vZGUtPm1fZXhwcik7CisKKyAgICAgICAgLy8gRG9uJ3QgZW1pdCBh
IGRlYnVnIGhvb2sgZm9yIHRoZSBmaXJzdCBleHByZXNzaW9uLCBhcyB0aGF0IHNob3VsZCd2ZSBh
bHJlYWR5IGhhcHBlbmVkIGluCisgICAgICAgIC8vIHRoZSBjb250YWluaW5nIHN0YXRlbWVudC4K
KyAgICAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2sobm9kZS0+bmV4dCgpLT5tX2V4cHIpOwor
ICAgIH0KICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXROb2RlSW5UYWlsUG9zaXRpb24oZHN0LCBu
b2RlLT5tX2V4cHIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAK
aW5kZXggODQ4NTgyM2M0ZTY0NWJhNmU2MzFjYTRhMmRjMDQ2YTVmNzA4M2FhNy4uYzQ3MzllM2Vj
YmY5ZDBhZjYyYjZkM2I1YjZiOTJlNjZkMjU4NDkzZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmNwcApAQCAtODA5LDYgKzgwOSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlVmFyaWFibGVE
ZWNsCiB7CiAgICAgQVNTRVJUKGRlY2xhcmF0aW9uVHlwZSA9PSBEZWNsYXJhdGlvblR5cGU6Okxl
dERlY2xhcmF0aW9uIHx8IGRlY2xhcmF0aW9uVHlwZSA9PSBEZWNsYXJhdGlvblR5cGU6OlZhckRl
Y2xhcmF0aW9uIHx8IGRlY2xhcmF0aW9uVHlwZSA9PSBEZWNsYXJhdGlvblR5cGU6OkNvbnN0RGVj
bGFyYXRpb24pOwogICAgIFRyZWVFeHByZXNzaW9uIGhlYWQgPSAwOworICAgIEpTVG9rZW5Mb2Nh
dGlvbiBoZWFkTG9jYXRpb247CiAgICAgVHJlZUV4cHJlc3Npb24gdGFpbCA9IDA7CiAgICAgY29u
c3QgSWRlbnRpZmllciogbGFzdElkZW50OwogICAgIEpTVG9rZW4gbGFzdElkZW50VG9rZW47IApA
QCAtODE4LDYgKzgxOSwxMCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHBy
ZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVZhcmlhYmxlRGVjbAogICAgICAgICBsYXN0
UGF0dGVybiA9IFRyZWVEZXN0cnVjdHVyaW5nUGF0dGVybigwKTsKICAgICAgICAgSlNUb2tlbkxv
Y2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgICAgIG5leHQoKTsKKyAgICAg
ICAgaWYgKGhlYWQpIHsKKyAgICAgICAgICAgIC8vIE1vdmUgdGhlIGxvY2F0aW9uIG9mIHN1YnNl
cXVlbnQgZGVjbGFyYXRpb25zIGFmdGVyIHRoZSBjb21tYS4KKyAgICAgICAgICAgIGxvY2F0aW9u
ID0gdG9rZW5Mb2NhdGlvbigpOworICAgICAgICB9CiAgICAgICAgIFRyZWVFeHByZXNzaW9uIG5v
ZGUgPSAwOwogICAgICAgICBkZWNsYXJhdGlvbnMrKzsKICAgICAgICAgYm9vbCBoYXNJbml0aWFs
aXplciA9IGZhbHNlOwpAQCAtODg4LDEzICs4OTMsMTUgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VWYXJpYWJsZURl
Y2wKICAgICAgICAgfQogCiAgICAgICAgIGlmIChub2RlKSB7Ci0gICAgICAgICAgICBpZiAoIWhl
YWQpCisgICAgICAgICAgICBpZiAoIWhlYWQpIHsKICAgICAgICAgICAgICAgICBoZWFkID0gbm9k
ZTsKLSAgICAgICAgICAgIGVsc2UgaWYgKCF0YWlsKSB7Ci0gICAgICAgICAgICAgICAgaGVhZCA9
IGNvbnRleHQuY3JlYXRlQ29tbWFFeHByKGxvY2F0aW9uLCBoZWFkKTsKLSAgICAgICAgICAgICAg
ICB0YWlsID0gY29udGV4dC5hcHBlbmRUb0NvbW1hRXhwcihsb2NhdGlvbiwgaGVhZCwgaGVhZCwg
bm9kZSk7Ci0gICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBoZWFkTG9jYXRpb24g
PSBsb2NhdGlvbjsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKCF0
YWlsKQorICAgICAgICAgICAgICAgICAgICBoZWFkID0gdGFpbCA9IGNvbnRleHQuY3JlYXRlQ29t
bWFFeHByKGhlYWRMb2NhdGlvbiwgaGVhZCk7CiAgICAgICAgICAgICAgICAgdGFpbCA9IGNvbnRl
eHQuYXBwZW5kVG9Db21tYUV4cHIobG9jYXRpb24sIGhlYWQsIHRhaWwsIG5vZGUpOworICAgICAg
ICAgICAgICAgIHJlY29yZFBhdXNlTG9jYXRpb24oY29udGV4dC5icmVha3BvaW50TG9jYXRpb24o
dGFpbCkpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfSB3aGlsZSAobWF0Y2goQ09N
TUEpKTsKICAgICBpZiAobGFzdElkZW50KQpAQCAtMzY5Nyw3ICszNzA0LDcgQEAgdGVtcGxhdGUg
PHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4
cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRXhwcmVzc2lvbihUcmVlQnVpbGRlciYg
Y29udGV4dCkKIHsKICAgICBmYWlsSWZTdGFja092ZXJmbG93KCk7Ci0gICAgSlNUb2tlbkxvY2F0
aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CisgICAgSlNUb2tlbkxvY2F0aW9uIGhlYWRM
b2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgIFRyZWVFeHByZXNzaW9uIG5vZGUgPSBwYXJz
ZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQpOwogICAgIGZhaWxJZkZhbHNlKG5vZGUsICJD
YW5ub3QgcGFyc2UgZXhwcmVzc2lvbiIpOwogICAgIGNvbnRleHQuc2V0RW5kT2Zmc2V0KG5vZGUs
IG1fbGFzdFRva2VuRW5kUG9zaXRpb24ub2Zmc2V0KTsKQEAgLTM3MDYsMTcgKzM3MTMsMjEgQEAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJU
eXBlPjo6cGFyc2VFeHByZXNzaW9uKFQKICAgICBuZXh0KCk7CiAgICAgbV9wYXJzZXJTdGF0ZS5u
b25Ucml2aWFsRXhwcmVzc2lvbkNvdW50Kys7CiAgICAgbV9wYXJzZXJTdGF0ZS5ub25MSFNDb3Vu
dCsrOworICAgIEpTVG9rZW5Mb2NhdGlvbiB0YWlsTG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsK
ICAgICBUcmVlRXhwcmVzc2lvbiByaWdodCA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oY29u
dGV4dCk7CiAgICAgZmFpbElmRmFsc2UocmlnaHQsICJDYW5ub3QgcGFyc2UgZXhwcmVzc2lvbiBp
biBhIGNvbW1hIGV4cHJlc3Npb24iKTsKICAgICBjb250ZXh0LnNldEVuZE9mZnNldChyaWdodCwg
bV9sYXN0VG9rZW5FbmRQb3NpdGlvbi5vZmZzZXQpOwotICAgIHR5cGVuYW1lIFRyZWVCdWlsZGVy
OjpDb21tYSBoZWFkID0gY29udGV4dC5jcmVhdGVDb21tYUV4cHIobG9jYXRpb24sIG5vZGUpOwot
ICAgIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpDb21tYSB0YWlsID0gY29udGV4dC5hcHBlbmRUb0Nv
bW1hRXhwcihsb2NhdGlvbiwgaGVhZCwgaGVhZCwgcmlnaHQpOworICAgIHR5cGVuYW1lIFRyZWVC
dWlsZGVyOjpDb21tYSBoZWFkID0gY29udGV4dC5jcmVhdGVDb21tYUV4cHIoaGVhZExvY2F0aW9u
LCBub2RlKTsKKyAgICB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Q29tbWEgdGFpbCA9IGNvbnRleHQu
YXBwZW5kVG9Db21tYUV4cHIodGFpbExvY2F0aW9uLCBoZWFkLCBoZWFkLCByaWdodCk7CisgICAg
cmVjb3JkUGF1c2VMb2NhdGlvbihjb250ZXh0LmJyZWFrcG9pbnRMb2NhdGlvbih0YWlsKSk7CiAg
ICAgd2hpbGUgKG1hdGNoKENPTU1BKSkgewogICAgICAgICBuZXh0KFRyZWVCdWlsZGVyOjpEb250
QnVpbGRTdHJpbmdzKTsKKyAgICAgICAgdGFpbExvY2F0aW9uID0gdG9rZW5Mb2NhdGlvbigpOwog
ICAgICAgICByaWdodCA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oY29udGV4dCk7CiAgICAg
ICAgIGZhaWxJZkZhbHNlKHJpZ2h0LCAiQ2Fubm90IHBhcnNlIGV4cHJlc3Npb24gaW4gYSBjb21t
YSBleHByZXNzaW9uIik7CiAgICAgICAgIGNvbnRleHQuc2V0RW5kT2Zmc2V0KHJpZ2h0LCBtX2xh
c3RUb2tlbkVuZFBvc2l0aW9uLm9mZnNldCk7Ci0gICAgICAgIHRhaWwgPSBjb250ZXh0LmFwcGVu
ZFRvQ29tbWFFeHByKGxvY2F0aW9uLCBoZWFkLCB0YWlsLCByaWdodCk7CisgICAgICAgIHRhaWwg
PSBjb250ZXh0LmFwcGVuZFRvQ29tbWFFeHByKHRhaWxMb2NhdGlvbiwgaGVhZCwgdGFpbCwgcmln
aHQpOworICAgICAgICByZWNvcmRQYXVzZUxvY2F0aW9uKGNvbnRleHQuYnJlYWtwb2ludExvY2F0
aW9uKHRhaWwpKTsKICAgICB9CiAgICAgY29udGV4dC5zZXRFbmRPZmZzZXQoaGVhZCwgbV9sYXN0
VG9rZW5FbmRQb3NpdGlvbi5vZmZzZXQpOwogICAgIHJldHVybiBoZWFkOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvV29ya2Vycy9Gb3JtYXR0ZXIvSlNG
b3JtYXR0ZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Xb3JrZXJz
L0Zvcm1hdHRlci9KU0Zvcm1hdHRlci5qcwppbmRleCBmNzZiNjAyOGQ0ODIxMzQ4ODhmN2FjMTM3
YTM3Mzk2NzJlMTBjYjAxLi5kZGQxZTkxNjY1MTdlMjRmZmYxYzI5ZGM5OWU4MWVmODQ3MDE5ZWM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Xb3JrZXJz
L0Zvcm1hdHRlci9KU0Zvcm1hdHRlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Xb3JrZXJzL0Zvcm1hdHRlci9KU0Zvcm1hdHRlci5qcwpAQCAtMjAxLDE5ICsy
MDEsMjYgQEAgSlNGb3JtYXR0ZXIgPSBjbGFzcyBKU0Zvcm1hdHRlcgogCiAgICAgX2lzTGlrZWx5
VG9IYXZlTmV3bGluZShub2RlKQogICAgIHsKLSAgICAgICAgbGV0IG5vZGVUeXBlID0gbm9kZS50
eXBlOwotICAgICAgICByZXR1cm4gbm9kZVR5cGUgPT09ICJJZlN0YXRlbWVudCIKLSAgICAgICAg
ICAgIHx8IG5vZGVUeXBlID09PSAiRm9yU3RhdGVtZW50IgotICAgICAgICAgICAgfHwgbm9kZVR5
cGUgPT09ICJGb3JPZlN0YXRlbWVudCIKLSAgICAgICAgICAgIHx8IG5vZGVUeXBlID09PSAiRm9y
SW5TdGF0ZW1lbnQiCi0gICAgICAgICAgICB8fCBub2RlVHlwZSA9PT0gIldoaWxlU3RhdGVtZW50
IgotICAgICAgICAgICAgfHwgbm9kZVR5cGUgPT09ICJEb1doaWxlU3RhdGVtZW50IgotICAgICAg
ICAgICAgfHwgbm9kZVR5cGUgPT09ICJTd2l0Y2hTdGF0ZW1lbnQiCi0gICAgICAgICAgICB8fCBu
b2RlVHlwZSA9PT0gIlRyeVN0YXRlbWVudCIKLSAgICAgICAgICAgIHx8IG5vZGVUeXBlID09PSAi
RnVuY3Rpb25EZWNsYXJhdGlvbiIKLSAgICAgICAgICAgIHx8IG5vZGVUeXBlID09PSAiQ2xhc3NE
ZWNsYXJhdGlvbiIKLSAgICAgICAgICAgIHx8IG5vZGVUeXBlID09PSAiQmxvY2tTdGF0ZW1lbnQi
Ci0gICAgICAgICAgICB8fCBub2RlVHlwZSA9PT0gIldpdGhTdGF0ZW1lbnQiOworICAgICAgICBz
d2l0Y2ggKG5vZGUudHlwZSkgeworICAgICAgICBjYXNlICJCbG9ja1N0YXRlbWVudCI6CisgICAg
ICAgIGNhc2UgIkNsYXNzRGVjbGFyYXRpb24iOgorICAgICAgICBjYXNlICJEb1doaWxlU3RhdGVt
ZW50IjoKKyAgICAgICAgY2FzZSAiRm9ySW5TdGF0ZW1lbnQiOgorICAgICAgICBjYXNlICJGb3JP
ZlN0YXRlbWVudCI6CisgICAgICAgIGNhc2UgIkZvclN0YXRlbWVudCI6CisgICAgICAgIGNhc2Ug
IkZ1bmN0aW9uRGVjbGFyYXRpb24iOgorICAgICAgICBjYXNlICJJZlN0YXRlbWVudCI6CisgICAg
ICAgIGNhc2UgIlN3aXRjaFN0YXRlbWVudCI6CisgICAgICAgIGNhc2UgIlRyeVN0YXRlbWVudCI6
CisgICAgICAgIGNhc2UgIldoaWxlU3RhdGVtZW50IjoKKyAgICAgICAgY2FzZSAiV2l0aFN0YXRl
bWVudCI6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICBjYXNlICJFeHByZXNz
aW9uU3RhdGVtZW50IjoKKyAgICAgICAgICAgIHJldHVybiBub2RlLmV4cHJlc3Npb24udHlwZSA9
PT0gIlNlcXVlbmNlRXhwcmVzc2lvbiI7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCiAgICAgX2lzUmFuZ2VXaGl0ZXNwYWNlKGZyb20sIHRvKQpAQCAtMjg1LDcg
KzI5Miw3IEBAIEpTRm9ybWF0dGVyID0gY2xhc3MgSlNGb3JtYXR0ZXIKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChub2RlVHlwZSA9PT0gIkNhbGxFeHByZXNz
aW9uIiB8fCBub2RlVHlwZSA9PT0gIkFycmF5RXhwcmVzc2lvbiIgfHwgbm9kZVR5cGUgPT09ICJB
cnJheVBhdHRlcm4iIHx8IG5vZGVUeXBlID09PSAiT2JqZWN0UGF0dGVybiIgfHwgbm9kZVR5cGUg
PT09ICJTZXF1ZW5jZUV4cHJlc3Npb24iKSB7CisgICAgICAgIGlmIChub2RlVHlwZSA9PT0gIkNh
bGxFeHByZXNzaW9uIiB8fCBub2RlVHlwZSA9PT0gIkFycmF5RXhwcmVzc2lvbiIgfHwgbm9kZVR5
cGUgPT09ICJBcnJheVBhdHRlcm4iIHx8IG5vZGVUeXBlID09PSAiT2JqZWN0UGF0dGVybiIpIHsK
ICAgICAgICAgICAgIGlmICh0b2tlblZhbHVlID09PSAiLCIpIHsKICAgICAgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZFRva2VuKHRva2VuVmFsdWUsIHRva2VuT2Zmc2V0KTsKICAgICAgICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZFNwYWNlKCk7CkBAIC0yOTUsNiArMzAyLDE3IEBAIEpTRm9ybWF0
dGVyID0gY2xhc3MgSlNGb3JtYXR0ZXIKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
CisgICAgICAgIGlmIChub2RlVHlwZSA9PT0gIlNlcXVlbmNlRXhwcmVzc2lvbiIpIHsKKyAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kVG9rZW4odG9rZW5WYWx1ZSwgdG9rZW5PZmZzZXQpOworICAg
ICAgICAgICAgaWYgKHRva2VuVmFsdWUgPT09ICIsIikgeworICAgICAgICAgICAgICAgIGlmIChu
b2RlLnBhcmVudC50eXBlID09PSAiRXhwcmVzc2lvblN0YXRlbWVudCIpCisgICAgICAgICAgICAg
ICAgICAgIHRoaXMuX2FwcGVuZE5ld2xpbmUobm9kZSk7CisgICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZFNwYWNlKCk7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwogICAgICAgICBpZiAobm9kZVR5cGUg
PT09ICJMb2dpY2FsRXhwcmVzc2lvbiIgfHwgbm9kZVR5cGUgPT09ICJCaW5hcnlFeHByZXNzaW9u
IikgewogICAgICAgICAgICAgaWYgKHRva2VuVmFsdWUgIT09ICIoIiAmJiB0b2tlblZhbHVlICE9
PSAiKSIpIHsKICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZFNwYWNlKCk7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
MjAxZjAwYTQ0MTM1NTk3OWZiZjU2OTFmODY4N2I2ZTBiYTc0ODJiYi4uYWU4N2RmOWY5NDg1ZWQ4
ZTdmMzAzMzA5ZmQ0MTcxOGVmNGZkMmIwZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIwLTA0
LTA1ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5z
cGVjdG9yOiBEZWJ1Z2dlcjogdHJlYXQgY29tbWEgc3ViLWV4cHJlc3Npb25zIGFzIHNlcGFyYXRl
IHN0YXRlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwOTk5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnRzL3Jlc291cmNlcy9kdW1wLWZ1bmN0
aW9ucy5qczoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvYnJlYWtwb2ludHMvcmVzb3Vy
Y2VzL2R1bXAtZ2VuZXJhbC5qczoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvYnJlYWtw
b2ludHMvcmVzb2x2ZWQtZHVtcC1hbGwtcGF1c2UtbG9jYXRpb25zLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvYnJlYWtwb2ludHMvcmVzb2x2ZWQtZHVtcC1lYWNo
LWxpbmUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9zdGVwcGlu
Zy9zdGVwT3Zlci5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9zdGVwcGluZy9z
dGVwT3Zlci1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL3N0ZXBw
aW5nL3N0ZXBwaW5nLWZ1bmN0aW9uLWNhbGxzLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2Rl
YnVnZ2VyL3N0ZXBwaW5nL3N0ZXBwaW5nLWZ1bmN0aW9uLWNhbGxzLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcvc3RlcHBpbmctbWlzYy5odG1sOgor
ICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9zdGVwcGluZy9zdGVwcGluZy1taXNjLWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNj
cmlwdC10ZXN0cy9zYW1wbGUtanF1ZXJ5LWV4cGVjdGVkLmpzOgorCiAyMDIwLTA0LTA0ICBMYXVy
byBNb3VyYSAgPGxtb3VyYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFVwZGF0ZSB0ZXN0
IGJhc2VsaW5lIGFmdGVyIHIyNTk0MzggYW5kIGdhcmRlbiBjcmFzaGVzCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvYnJlYWtwb2ludHMvcmVzb2x2ZWQtZHVtcC1h
bGwtcGF1c2UtbG9jYXRpb25zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci9icmVha3BvaW50cy9yZXNvbHZlZC1kdW1wLWFsbC1wYXVzZS1sb2NhdGlvbnMtZXhw
ZWN0ZWQudHh0CmluZGV4IGNjMDhkOTQ5Y2ViNDNmOTU5ZmUyNzhiNmE2ZGQxMDQ5MTk4ZTA4NDMu
LjAzYzg4YTdmNjkxNjExYzAwZDQ1OGY4YzFhMDVlMDZhOTgwMzdhNGIgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50cy9yZXNvbHZlZC1kdW1wLWFs
bC1wYXVzZS1sb2NhdGlvbnMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kZWJ1Z2dlci9icmVha3BvaW50cy9yZXNvbHZlZC1kdW1wLWFsbC1wYXVzZS1sb2NhdGlvbnMt
ZXhwZWN0ZWQudHh0CkBAIC0xMDc0LDM2ICsxMDc0LDY2IEBAIFBBVVNFUyBBVDogMTY0OjAKICAg
ICAxNjcgICAgICAgIGwyID0gMjsKIAogSU5TRVJUSU5HIEFUOiAxNjQ6MQotUEFVU0VTIEFUOiAx
NjY6MAorUEFVU0VTIEFUOiAxNjU6NAogICAgIDE2MSAgICAgICAgYSgpOwogICAgIDE2MiAgICB9
CiAgICAgMTYzICAgIAogIC0+IDE2NCAgICB2I2FyIHYxID0gMSwKLSAgICAxNjUgICAgICAgIHYy
ID0gMTsKKyA9PiAxNjUgICAgICAgIHx2MiA9IDE7CisgICAgMTY2ICAgIGxldCBsMSA9IDIsCisg
ICAgMTY3ICAgICAgICBsMiA9IDI7CisgICAgMTY4ICAgIGNvbnN0IGMxID0gMywKKworSU5TRVJU
SU5HIEFUOiAxNjU6NQorUEFVU0VTIEFUOiAxNjY6MAorICAgIDE2MiAgICB9CisgICAgMTYzICAg
IAorICAgIDE2NCAgICB2YXIgdjEgPSAxLAorIC0+IDE2NSAgICAgICAgdiMyID0gMTsKICA9PiAx
NjYgICAgfGxldCBsMSA9IDIsCiAgICAgMTY3ICAgICAgICBsMiA9IDI7CiAgICAgMTY4ICAgIGNv
bnN0IGMxID0gMywKICAgICAxNjkgICAgICAgIGMyID0gMzsKIAogSU5TRVJUSU5HIEFUOiAxNjY6
MQotUEFVU0VTIEFUOiAxNjg6MAorUEFVU0VTIEFUOiAxNjc6NAogICAgIDE2MyAgICAKICAgICAx
NjQgICAgdmFyIHYxID0gMSwKICAgICAxNjUgICAgICAgIHYyID0gMTsKICAtPiAxNjYgICAgbCNl
dCBsMSA9IDIsCi0gICAgMTY3ICAgICAgICBsMiA9IDI7CisgPT4gMTY3ICAgICAgICB8bDIgPSAy
OworICAgIDE2OCAgICBjb25zdCBjMSA9IDMsCisgICAgMTY5ICAgICAgICBjMiA9IDM7CisgICAg
MTcwICAgIAorCitJTlNFUlRJTkcgQVQ6IDE2Nzo1CitQQVVTRVMgQVQ6IDE2ODowCisgICAgMTY0
ICAgIHZhciB2MSA9IDEsCisgICAgMTY1ICAgICAgICB2MiA9IDE7CisgICAgMTY2ICAgIGxldCBs
MSA9IDIsCisgLT4gMTY3ICAgICAgICBsIzIgPSAyOwogID0+IDE2OCAgICB8Y29uc3QgYzEgPSAz
LAogICAgIDE2OSAgICAgICAgYzIgPSAzOwogICAgIDE3MCAgICAKICAgICAxNzEgICAgdjEgPSB2
MiA9IHYxOwogCiBJTlNFUlRJTkcgQVQ6IDE2ODoxCi1QQVVTRVMgQVQ6IDE3MTowCitQQVVTRVMg
QVQ6IDE2OTo0CiAgICAgMTY1ICAgICAgICB2MiA9IDE7CiAgICAgMTY2ICAgIGxldCBsMSA9IDIs
CiAgICAgMTY3ICAgICAgICBsMiA9IDI7CiAgLT4gMTY4ICAgIGMjb25zdCBjMSA9IDMsCi0gICAg
MTY5ICAgICAgICBjMiA9IDM7CisgPT4gMTY5ICAgICAgICB8YzIgPSAzOworICAgIDE3MCAgICAK
KyAgICAxNzEgICAgdjEgPSB2MiA9IHYxOworICAgIDE3MiAgICAKKworSU5TRVJUSU5HIEFUOiAx
Njk6NQorUEFVU0VTIEFUOiAxNzE6MAorICAgIDE2NiAgICBsZXQgbDEgPSAyLAorICAgIDE2NyAg
ICAgICAgbDIgPSAyOworICAgIDE2OCAgICBjb25zdCBjMSA9IDMsCisgLT4gMTY5ICAgICAgICBj
IzIgPSAzOwogICAgIDE3MCAgICAKICA9PiAxNzEgICAgfHYxID0gdjIgPSB2MTsKICAgICAxNzIg
ICAgCkBAIC0xMjU2LDc0ICsxMjg2LDE0MCBAQCBQQVVTRVMgQVQ6IDIwMDowCiAgICAgMTk5ICAg
IAogID0+IDIwMCAgICB8YShhKCksIGIoKSk7CiAgICAgMjAxICAgIAotICAgIDIwMiAgICBpZiAo
bzEucDEpCi0gICAgMjAzICAgICAgICBhKCk7CisgICAgMjAyICAgIGEoKSwgYigpLCBjKCk7Cisg
ICAgMjAzICAgIAogCiBJTlNFUlRJTkcgQVQ6IDIwMDoxCi1QQVVTRVMgQVQ6IDIwMjo0CitQQVVT
RVMgQVQ6IDIwMjowCiAgICAgMTk3ICAgIHZhciB0MSA9IGAkezF9ICR7eD0xfSAke2EoKX1gOwog
ICAgIDE5OCAgICB2YXIgdDIgPSBhYCR7MX0gJHt4PTF9ICR7YSgpfWA7CiAgICAgMTk5ICAgIAog
IC0+IDIwMCAgICBhIyhhKCksIGIoKSk7CiAgICAgMjAxICAgIAotID0+IDIwMiAgICBpZiAofG8x
LnAxKQotICAgIDIwMyAgICAgICAgYSgpOwotICAgIDIwNCAgICAKLSAgICAyMDUgICAgaWYgKG8x
WyJwMSJdKQorID0+IDIwMiAgICB8YSgpLCBiKCksIGMoKTsKKyAgICAyMDMgICAgCisgICAgMjA0
ICAgIGEoKSwKKyAgICAyMDUgICAgYigpLAogCi1JTlNFUlRJTkcgQVQ6IDIwMjo1Ci1QQVVTRVMg
QVQ6IDIwMzo0CitJTlNFUlRJTkcgQVQ6IDIwMjoxCitQQVVTRVMgQVQ6IDIwMjo1CiAgICAgMTk5
ICAgIAogICAgIDIwMCAgICBhKGEoKSwgYigpKTsKICAgICAyMDEgICAgCi0gLT4gMjAyICAgIGlm
IChvIzEucDEpCi0gPT4gMjAzICAgICAgICB8YSgpOwotICAgIDIwNCAgICAKLSAgICAyMDUgICAg
aWYgKG8xWyJwMSJdKQotICAgIDIwNiAgICAgICAgYSgpOworLT0+IDIwMiAgICBhIygpLCB8Yigp
LCBjKCk7CisgICAgMjAzICAgIAorICAgIDIwNCAgICBhKCksCisgICAgMjA1ICAgIGIoKSwKIAot
SU5TRVJUSU5HIEFUOiAyMDM6NQotUEFVU0VTIEFUOiAyMDU6NAorSU5TRVJUSU5HIEFUOiAyMDI6
NgorUEFVU0VTIEFUOiAyMDI6MTAKKyAgICAxOTkgICAgCiAgICAgMjAwICAgIGEoYSgpLCBiKCkp
OwogICAgIDIwMSAgICAKLSAgICAyMDIgICAgaWYgKG8xLnAxKQotIC0+IDIwMyAgICAgICAgYSMo
KTsKLSAgICAyMDQgICAgCi0gPT4gMjA1ICAgIGlmICh8bzFbInAxIl0pCi0gICAgMjA2ICAgICAg
ICBhKCk7Ci0gICAgMjA3ICAgIAotICAgIDIwOCAgICBpZiAoU3RyaW5nLnJhd2B0ZXN0YCkKKy09
PiAyMDIgICAgYSgpLCBiIygpLCB8YygpOworICAgIDIwMyAgICAKKyAgICAyMDQgICAgYSgpLAor
ICAgIDIwNSAgICBiKCksCiAKLUlOU0VSVElORyBBVDogMjA1OjUKLVBBVVNFUyBBVDogMjA2OjQK
LSAgICAyMDIgICAgaWYgKG8xLnAxKQotICAgIDIwMyAgICAgICAgYSgpOwotICAgIDIwNCAgICAK
LSAtPiAyMDUgICAgaWYgKG8jMVsicDEiXSkKLSA9PiAyMDYgICAgICAgIHxhKCk7CitJTlNFUlRJ
TkcgQVQ6IDIwMjoxMQorUEFVU0VTIEFUOiAyMDQ6MAorICAgIDE5OSAgICAKKyAgICAyMDAgICAg
YShhKCksIGIoKSk7CisgICAgMjAxICAgIAorIC0+IDIwMiAgICBhKCksIGIoKSwgYyMoKTsKKyAg
ICAyMDMgICAgCisgPT4gMjA0ICAgIHxhKCksCisgICAgMjA1ICAgIGIoKSwKKyAgICAyMDYgICAg
YygpOwogICAgIDIwNyAgICAKLSAgICAyMDggICAgaWYgKFN0cmluZy5yYXdgdGVzdGApCisKK0lO
U0VSVElORyBBVDogMjA0OjEKK1BBVVNFUyBBVDogMjA1OjAKKyAgICAyMDEgICAgCisgICAgMjAy
ICAgIGEoKSwgYigpLCBjKCk7CisgICAgMjAzICAgIAorIC0+IDIwNCAgICBhIygpLAorID0+IDIw
NSAgICB8YigpLAorICAgIDIwNiAgICBjKCk7CisgICAgMjA3ICAgIAorICAgIDIwOCAgICBpZiAo
bzEucDEpCisKK0lOU0VSVElORyBBVDogMjA1OjEKK1BBVVNFUyBBVDogMjA2OjAKKyAgICAyMDIg
ICAgYSgpLCBiKCksIGMoKTsKKyAgICAyMDMgICAgCisgICAgMjA0ICAgIGEoKSwKKyAtPiAyMDUg
ICAgYiMoKSwKKyA9PiAyMDYgICAgfGMoKTsKKyAgICAyMDcgICAgCisgICAgMjA4ICAgIGlmIChv
MS5wMSkKICAgICAyMDkgICAgICAgIGEoKTsKIAotSU5TRVJUSU5HIEFUOiAyMDY6NQorSU5TRVJU
SU5HIEFUOiAyMDY6MQogUEFVU0VTIEFUOiAyMDg6NAotICAgIDIwMyAgICAgICAgYSgpOwotICAg
IDIwNCAgICAKLSAgICAyMDUgICAgaWYgKG8xWyJwMSJdKQotIC0+IDIwNiAgICAgICAgYSMoKTsK
KyAgICAyMDMgICAgCisgICAgMjA0ICAgIGEoKSwKKyAgICAyMDUgICAgYigpLAorIC0+IDIwNiAg
ICBjIygpOwogICAgIDIwNyAgICAKLSA9PiAyMDggICAgaWYgKHxTdHJpbmcucmF3YHRlc3RgKQor
ID0+IDIwOCAgICBpZiAofG8xLnAxKQogICAgIDIwOSAgICAgICAgYSgpOwogICAgIDIxMCAgICAK
KyAgICAyMTEgICAgaWYgKG8xWyJwMSJdKQogCiBJTlNFUlRJTkcgQVQ6IDIwODo1CiBQQVVTRVMg
QVQ6IDIwOTo0Ci0gICAgMjA1ICAgIGlmIChvMVsicDEiXSkKLSAgICAyMDYgICAgICAgIGEoKTsK
KyAgICAyMDUgICAgYigpLAorICAgIDIwNiAgICBjKCk7CiAgICAgMjA3ICAgIAotIC0+IDIwOCAg
ICBpZiAoUyN0cmluZy5yYXdgdGVzdGApCisgLT4gMjA4ICAgIGlmIChvIzEucDEpCiAgPT4gMjA5
ICAgICAgICB8YSgpOwogICAgIDIxMCAgICAKKyAgICAyMTEgICAgaWYgKG8xWyJwMSJdKQorICAg
IDIxMiAgICAgICAgYSgpOworCitJTlNFUlRJTkcgQVQ6IDIwOTo1CitQQVVTRVMgQVQ6IDIxMTo0
CisgICAgMjA2ICAgIGMoKTsKKyAgICAyMDcgICAgCisgICAgMjA4ICAgIGlmIChvMS5wMSkKKyAt
PiAyMDkgICAgICAgIGEjKCk7CisgICAgMjEwICAgIAorID0+IDIxMSAgICBpZiAofG8xWyJwMSJd
KQorICAgIDIxMiAgICAgICAgYSgpOworICAgIDIxMyAgICAKKyAgICAyMTQgICAgaWYgKFN0cmlu
Zy5yYXdgdGVzdGApCisKK0lOU0VSVElORyBBVDogMjExOjUKK1BBVVNFUyBBVDogMjEyOjQKKyAg
ICAyMDggICAgaWYgKG8xLnAxKQorICAgIDIwOSAgICAgICAgYSgpOworICAgIDIxMCAgICAKKyAt
PiAyMTEgICAgaWYgKG8jMVsicDEiXSkKKyA9PiAyMTIgICAgICAgIHxhKCk7CisgICAgMjEzICAg
IAorICAgIDIxNCAgICBpZiAoU3RyaW5nLnJhd2B0ZXN0YCkKKyAgICAyMTUgICAgICAgIGEoKTsK
KworSU5TRVJUSU5HIEFUOiAyMTI6NQorUEFVU0VTIEFUOiAyMTQ6NAorICAgIDIwOSAgICAgICAg
YSgpOworICAgIDIxMCAgICAKKyAgICAyMTEgICAgaWYgKG8xWyJwMSJdKQorIC0+IDIxMiAgICAg
ICAgYSMoKTsKKyAgICAyMTMgICAgCisgPT4gMjE0ICAgIGlmICh8U3RyaW5nLnJhd2B0ZXN0YCkK
KyAgICAyMTUgICAgICAgIGEoKTsKKyAgICAyMTYgICAgCisKK0lOU0VSVElORyBBVDogMjE0OjUK
K1BBVVNFUyBBVDogMjE1OjQKKyAgICAyMTEgICAgaWYgKG8xWyJwMSJdKQorICAgIDIxMiAgICAg
ICAgYSgpOworICAgIDIxMyAgICAKKyAtPiAyMTQgICAgaWYgKFMjdHJpbmcucmF3YHRlc3RgKQor
ID0+IDIxNSAgICAgICAgfGEoKTsKKyAgICAyMTYgICAgCiAKIAogLS0gUnVubmluZyB0ZXN0IGNh
c2U6IERlYnVnZ2VyLnJlc29sdmVkQnJlYWtwb2ludC5kdW1wQWxsTG9jYXRpb25zLkZ1bmN0aW9u
cwpAQCAtMTMzNiw3ICsxNDMyLDcgQEAgUEFVU0VTIEFUOiAwOjE5CiAgICAgICAzICAgIH0KIAog
SU5TRVJUSU5HIEFUOiAwOjIwCi1QQVVTRVMgQVQ6IDQ0OjAKK1BBVVNFUyBBVDogNTQ6MAogIC0+
ICAgMCAgICBmdW5jdGlvbiBpbmxpbmUoKSB7fSMKICAgICAgIDEgICAgZnVuY3Rpb24gbmFtZWQo
KSB7CiAgICAgICAyICAgICAgICB2YXIgeDsKQEAgLTEzODEsMTAgKzE0NzcsMjAgQEAgUEFVU0VT
IEFUOiA0NDowCiAgICAgIDQxICAgICAgICBmdW5jdGlvbiBpbm5lcjIoKSB7IHZhciB6OyB9CiAg
ICAgIDQyICAgIH0KICAgICAgNDMgICAgCi0gPT4gIDQ0ICAgIHwoZnVuY3Rpb24oKSB7Ci0gICAg
IDQ1ICAgICAgICB2YXIgeDsKLSAgICAgNDYgICAgfSkoKTsKKyAgICAgNDQgICAgZnVuY3Rpb24g
Y29tbWFPbmVMaW5lKCkgeworICAgICA0NSAgICAgICAgaW5saW5lKCksIGlubGluZSgpLCBpbmxp
bmUoKTsKKyAgICAgNDYgICAgfQogICAgICA0NyAgICAKKyAgICAgNDggICAgZnVuY3Rpb24gY29t
bWFNdWx0aUxpbmUoKSB7CisgICAgIDQ5ICAgICAgICBpbmxpbmUoKSwKKyAgICAgNTAgICAgICAg
IGlubGluZSgpLAorICAgICA1MSAgICAgICAgaW5saW5lKCk7CisgICAgIDUyICAgIH0KKyAgICAg
NTMgICAgCisgPT4gIDU0ICAgIHwoZnVuY3Rpb24oKSB7CisgICAgIDU1ICAgICAgICB2YXIgeDsK
KyAgICAgNTYgICAgfSkoKTsKKyAgICAgNTcgICAgCiAKIElOU0VSVElORyBBVDogMTowCiBQQVVT
RVMgQVQ6IDI6NApAQCAtMTc2NCw4ICsxODcwLDggQEAgUEFVU0VTIEFUOiA0MjowCiAgICAgIDQx
ICAgICAgICBmdW5jdGlvbiBpbm5lcjIoKSB7IHZhciB6OyB9CiAgPT4gIDQyICAgIHx9CiAgICAg
IDQzICAgIAotICAgICA0NCAgICAoZnVuY3Rpb24oKSB7Ci0gICAgIDQ1ICAgICAgICB2YXIgeDsK
KyAgICAgNDQgICAgZnVuY3Rpb24gY29tbWFPbmVMaW5lKCkgeworICAgICA0NSAgICAgICAgaW5s
aW5lKCksIGlubGluZSgpLCBpbmxpbmUoKTsKIAogSU5TRVJUSU5HIEFUOiAzOToxNQogUEFVU0VT
IEFUOiA0MDoyNApAQCAtMTc5Niw3ICsxOTAyLDcgQEAgUEFVU0VTIEFUOiA0MToyNAogLT0+ICA0
MSAgICAjICAgIGZ1bmN0aW9uIGlubmVyMigpIHsgfHZhciB6OyB9CiAgICAgIDQyICAgIH0KICAg
ICAgNDMgICAgCi0gICAgIDQ0ICAgIChmdW5jdGlvbigpIHsKKyAgICAgNDQgICAgZnVuY3Rpb24g
Y29tbWFPbmVMaW5lKCkgewogCiBJTlNFUlRJTkcgQVQ6IDQxOjI1CiBQQVVTRVMgQVQ6IDQxOjMx
CkBAIC0xODA2LDU2NiArMTkxMiw2NTIgQEAgUEFVU0VTIEFUOiA0MTozMQogLT0+ICA0MSAgICAg
ICAgZnVuY3Rpb24gaW5uZXIyKCkgeyB2I2FyIHo7IHx9CiAgICAgIDQyICAgIH0KICAgICAgNDMg
ICAgCi0gICAgIDQ0ICAgIChmdW5jdGlvbigpIHsKKyAgICAgNDQgICAgZnVuY3Rpb24gY29tbWFP
bmVMaW5lKCkgewogCi1JTlNFUlRJTkcgQVQ6IDQ0OjEKK0lOU0VSVElORyBBVDogNDQ6MAogUEFV
U0VTIEFUOiA0NTo0CiAgICAgIDQxICAgICAgICBmdW5jdGlvbiBpbm5lcjIoKSB7IHZhciB6OyB9
CiAgICAgIDQyICAgIH0KICAgICAgNDMgICAgCi0gLT4gIDQ0ICAgICgjZnVuY3Rpb24oKSB7Ci0g
PT4gIDQ1ICAgICAgICB8dmFyIHg7Ci0gICAgIDQ2ICAgIH0pKCk7CisgLT4gIDQ0ICAgICNmdW5j
dGlvbiBjb21tYU9uZUxpbmUoKSB7CisgPT4gIDQ1ICAgICAgICB8aW5saW5lKCksIGlubGluZSgp
LCBpbmxpbmUoKTsKKyAgICAgNDYgICAgfQogICAgICA0NyAgICAKLSAgICAgNDggICAgKCgpID0+
IHsKKyAgICAgNDggICAgZnVuY3Rpb24gY29tbWFNdWx0aUxpbmUoKSB7CiAKIElOU0VSVElORyBB
VDogNDU6NQorUEFVU0VTIEFUOiA0NToxNAorICAgICA0MiAgICB9CisgICAgIDQzICAgIAorICAg
ICA0NCAgICBmdW5jdGlvbiBjb21tYU9uZUxpbmUoKSB7CistPT4gIDQ1ICAgICAgICBpI25saW5l
KCksIHxpbmxpbmUoKSwgaW5saW5lKCk7CisgICAgIDQ2ICAgIH0KKyAgICAgNDcgICAgCisgICAg
IDQ4ICAgIGZ1bmN0aW9uIGNvbW1hTXVsdGlMaW5lKCkgeworCitJTlNFUlRJTkcgQVQ6IDQ1OjE1
CitQQVVTRVMgQVQ6IDQ1OjI0CisgICAgIDQyICAgIH0KKyAgICAgNDMgICAgCisgICAgIDQ0ICAg
IGZ1bmN0aW9uIGNvbW1hT25lTGluZSgpIHsKKy09PiAgNDUgICAgICAgIGlubGluZSgpLCBpI25s
aW5lKCksIHxpbmxpbmUoKTsKKyAgICAgNDYgICAgfQorICAgICA0NyAgICAKKyAgICAgNDggICAg
ZnVuY3Rpb24gY29tbWFNdWx0aUxpbmUoKSB7CisKK0lOU0VSVElORyBBVDogNDU6MjUKIFBBVVNF
UyBBVDogNDY6MAogICAgICA0MiAgICB9CiAgICAgIDQzICAgIAotICAgICA0NCAgICAoZnVuY3Rp
b24oKSB7Ci0gLT4gIDQ1ICAgICAgICB2I2FyIHg7Ci0gPT4gIDQ2ICAgIHx9KSgpOworICAgICA0
NCAgICBmdW5jdGlvbiBjb21tYU9uZUxpbmUoKSB7CisgLT4gIDQ1ICAgICAgICBpbmxpbmUoKSwg
aW5saW5lKCksIGkjbmxpbmUoKTsKKyA9PiAgNDYgICAgfH0KICAgICAgNDcgICAgCi0gICAgIDQ4
ICAgICgoKSA9PiB7Ci0gICAgIDQ5ICAgICAgICB2YXIgeDsKKyAgICAgNDggICAgZnVuY3Rpb24g
Y29tbWFNdWx0aUxpbmUoKSB7CisgICAgIDQ5ICAgICAgICBpbmxpbmUoKSwKIAotSU5TRVJUSU5H
IEFUOiA0NjoxCi1QQVVTRVMgQVQ6IDQ4OjAKLSAgICAgNDMgICAgCi0gICAgIDQ0ICAgIChmdW5j
dGlvbigpIHsKLSAgICAgNDUgICAgICAgIHZhciB4OwotIC0+ICA0NiAgICB9IykoKTsKLSAgICAg
NDcgICAgCi0gPT4gIDQ4ICAgIHwoKCkgPT4gewotICAgICA0OSAgICAgICAgdmFyIHg7Ci0gICAg
IDUwICAgIH0pOwotICAgICA1MSAgICAKLQotSU5TRVJUSU5HIEFUOiA0ODoxCitJTlNFUlRJTkcg
QVQ6IDQ4OjAKIFBBVVNFUyBBVDogNDk6NAotICAgICA0NSAgICAgICAgdmFyIHg7Ci0gICAgIDQ2
ICAgIH0pKCk7CisgICAgIDQ1ICAgICAgICBpbmxpbmUoKSwgaW5saW5lKCksIGlubGluZSgpOwor
ICAgICA0NiAgICB9CiAgICAgIDQ3ICAgIAotIC0+ICA0OCAgICAoIygpID0+IHsKLSA9PiAgNDkg
ICAgICAgIHx2YXIgeDsKLSAgICAgNTAgICAgfSk7Ci0gICAgIDUxICAgIAotICAgICA1MiAgICBm
dW5jdGlvbiogZ2VuZXJhdG9yKCkgeworIC0+ICA0OCAgICAjZnVuY3Rpb24gY29tbWFNdWx0aUxp
bmUoKSB7CisgPT4gIDQ5ICAgICAgICB8aW5saW5lKCksCisgICAgIDUwICAgICAgICBpbmxpbmUo
KSwKKyAgICAgNTEgICAgICAgIGlubGluZSgpOworICAgICA1MiAgICB9CiAKIElOU0VSVElORyBB
VDogNDk6NQotUEFVU0VTIEFUOiA1MDowCi0gICAgIDQ2ICAgIH0pKCk7CitQQVVTRVMgQVQ6IDUw
OjQKKyAgICAgNDYgICAgfQogICAgICA0NyAgICAKLSAgICAgNDggICAgKCgpID0+IHsKLSAtPiAg
NDkgICAgICAgIHYjYXIgeDsKLSA9PiAgNTAgICAgfH0pOwotICAgICA1MSAgICAKLSAgICAgNTIg
ICAgZnVuY3Rpb24qIGdlbmVyYXRvcigpIHsKLSAgICAgNTMgICAgICAgIHZhciB4OworICAgICA0
OCAgICBmdW5jdGlvbiBjb21tYU11bHRpTGluZSgpIHsKKyAtPiAgNDkgICAgICAgIGkjbmxpbmUo
KSwKKyA9PiAgNTAgICAgICAgIHxpbmxpbmUoKSwKKyAgICAgNTEgICAgICAgIGlubGluZSgpOwor
ICAgICA1MiAgICB9CisgICAgIDUzICAgIAogCi1JTlNFUlRJTkcgQVQ6IDUwOjEKLVBBVVNFUyBB
VDogODc6MAorSU5TRVJUSU5HIEFUOiA1MDo1CitQQVVTRVMgQVQ6IDUxOjQKICAgICAgNDcgICAg
Ci0gICAgIDQ4ICAgICgoKSA9PiB7Ci0gICAgIDQ5ICAgICAgICB2YXIgeDsKLSAtPiAgNTAgICAg
fSMpOwotICAgICA1MSAgICAKLSAgICAgNTIgICAgZnVuY3Rpb24qIGdlbmVyYXRvcigpIHsKLSAg
ICAgNTMgICAgICAgIHZhciB4OwotICAgICA1NCAgICB9Ci0gICAgIDU1ICAgIAotICAgICA1NiAg
ICBjbGFzcyBDbGFzcyB7Ci0gICAgIDU3ICAgICAgICBzdGF0aWMgc3RhdGljTWV0aG9kMSgpIHsK
LSAgICAgNTggICAgICAgICAgICB2YXIgeDsKLSAgICAgNTkgICAgICAgIH0KLSAgICAgNjAgICAg
ICAgIHN0YXRpYyBzdGF0aWNNZXRob2QyKCkKLSAgICAgNjEgICAgICAgIHsKLSAgICAgNjIgICAg
ICAgICAgICB2YXIgeDsKLSAgICAgNjMgICAgICAgIH0KLSAgICAgNjQgICAgICAgIG1ldGhvZDEo
KSB7Ci0gICAgIDY1ICAgICAgICAgICAgdmFyIHg7Ci0gICAgIDY2ICAgICAgICB9Ci0gICAgIDY3
ICAgICAgICBtZXRob2QyKCkKLSAgICAgNjggICAgICAgIHsKLSAgICAgNjkgICAgICAgICAgICB2
YXIgeDsKLSAgICAgNzAgICAgICAgIH0KLSAgICAgNzEgICAgICAgIGdldCBnZXR0ZXIxKCkgewor
ICAgICA0OCAgICBmdW5jdGlvbiBjb21tYU11bHRpTGluZSgpIHsKKyAgICAgNDkgICAgICAgIGlu
bGluZSgpLAorIC0+ICA1MCAgICAgICAgaSNubGluZSgpLAorID0+ICA1MSAgICAgICAgfGlubGlu
ZSgpOworICAgICA1MiAgICB9CisgICAgIDUzICAgIAorICAgICA1NCAgICAoZnVuY3Rpb24oKSB7
CisKK0lOU0VSVElORyBBVDogNTE6NQorUEFVU0VTIEFUOiA1MjowCisgICAgIDQ4ICAgIGZ1bmN0
aW9uIGNvbW1hTXVsdGlMaW5lKCkgeworICAgICA0OSAgICAgICAgaW5saW5lKCksCisgICAgIDUw
ICAgICAgICBpbmxpbmUoKSwKKyAtPiAgNTEgICAgICAgIGkjbmxpbmUoKTsKKyA9PiAgNTIgICAg
fH0KKyAgICAgNTMgICAgCisgICAgIDU0ICAgIChmdW5jdGlvbigpIHsKKyAgICAgNTUgICAgICAg
IHZhciB4OworCitJTlNFUlRJTkcgQVQ6IDU0OjEKK1BBVVNFUyBBVDogNTU6NAorICAgICA1MSAg
ICAgICAgaW5saW5lKCk7CisgICAgIDUyICAgIH0KKyAgICAgNTMgICAgCisgLT4gIDU0ICAgICgj
ZnVuY3Rpb24oKSB7CisgPT4gIDU1ICAgICAgICB8dmFyIHg7CisgICAgIDU2ICAgIH0pKCk7Cisg
ICAgIDU3ICAgIAorICAgICA1OCAgICAoKCkgPT4geworCitJTlNFUlRJTkcgQVQ6IDU1OjUKK1BB
VVNFUyBBVDogNTY6MAorICAgICA1MiAgICB9CisgICAgIDUzICAgIAorICAgICA1NCAgICAoZnVu
Y3Rpb24oKSB7CisgLT4gIDU1ICAgICAgICB2I2FyIHg7CisgPT4gIDU2ICAgIHx9KSgpOworICAg
ICA1NyAgICAKKyAgICAgNTggICAgKCgpID0+IHsKKyAgICAgNTkgICAgICAgIHZhciB4OworCitJ
TlNFUlRJTkcgQVQ6IDU2OjEKK1BBVVNFUyBBVDogNTg6MAorICAgICA1MyAgICAKKyAgICAgNTQg
ICAgKGZ1bmN0aW9uKCkgeworICAgICA1NSAgICAgICAgdmFyIHg7CisgLT4gIDU2ICAgIH0jKSgp
OworICAgICA1NyAgICAKKyA9PiAgNTggICAgfCgoKSA9PiB7CisgICAgIDU5ICAgICAgICB2YXIg
eDsKKyAgICAgNjAgICAgfSk7CisgICAgIDYxICAgIAorCitJTlNFUlRJTkcgQVQ6IDU4OjEKK1BB
VVNFUyBBVDogNTk6NAorICAgICA1NSAgICAgICAgdmFyIHg7CisgICAgIDU2ICAgIH0pKCk7Cisg
ICAgIDU3ICAgIAorIC0+ICA1OCAgICAoIygpID0+IHsKKyA9PiAgNTkgICAgICAgIHx2YXIgeDsK
KyAgICAgNjAgICAgfSk7CisgICAgIDYxICAgIAorICAgICA2MiAgICBmdW5jdGlvbiogZ2VuZXJh
dG9yKCkgeworCitJTlNFUlRJTkcgQVQ6IDU5OjUKK1BBVVNFUyBBVDogNjA6MAorICAgICA1NiAg
ICB9KSgpOworICAgICA1NyAgICAKKyAgICAgNTggICAgKCgpID0+IHsKKyAtPiAgNTkgICAgICAg
IHYjYXIgeDsKKyA9PiAgNjAgICAgfH0pOworICAgICA2MSAgICAKKyAgICAgNjIgICAgZnVuY3Rp
b24qIGdlbmVyYXRvcigpIHsKKyAgICAgNjMgICAgICAgIHZhciB4OworCitJTlNFUlRJTkcgQVQ6
IDYwOjEKK1BBVVNFUyBBVDogOTc6MAorICAgICA1NyAgICAKKyAgICAgNTggICAgKCgpID0+IHsK
KyAgICAgNTkgICAgICAgIHZhciB4OworIC0+ICA2MCAgICB9Iyk7CisgICAgIDYxICAgIAorICAg
ICA2MiAgICBmdW5jdGlvbiogZ2VuZXJhdG9yKCkgeworICAgICA2MyAgICAgICAgdmFyIHg7Cisg
ICAgIDY0ICAgIH0KKyAgICAgNjUgICAgCisgICAgIDY2ICAgIGNsYXNzIENsYXNzIHsKKyAgICAg
NjcgICAgICAgIHN0YXRpYyBzdGF0aWNNZXRob2QxKCkgeworICAgICA2OCAgICAgICAgICAgIHZh
ciB4OworICAgICA2OSAgICAgICAgfQorICAgICA3MCAgICAgICAgc3RhdGljIHN0YXRpY01ldGhv
ZDIoKQorICAgICA3MSAgICAgICAgewogICAgICA3MiAgICAgICAgICAgIHZhciB4OwogICAgICA3
MyAgICAgICAgfQotICAgICA3NCAgICAgICAgZ2V0IGdldHRlcjIoKQotICAgICA3NSAgICAgICAg
ewotICAgICA3NiAgICAgICAgICAgIHZhciB4OwotICAgICA3NyAgICAgICAgfQotICAgICA3OCAg
ICAgICAgc2V0IHNldHRlcjEoeCkgewotICAgICA3OSAgICAgICAgICAgIHZhciBzOworICAgICA3
NCAgICAgICAgbWV0aG9kMSgpIHsKKyAgICAgNzUgICAgICAgICAgICB2YXIgeDsKKyAgICAgNzYg
ICAgICAgIH0KKyAgICAgNzcgICAgICAgIG1ldGhvZDIoKQorICAgICA3OCAgICAgICAgeworICAg
ICA3OSAgICAgICAgICAgIHZhciB4OwogICAgICA4MCAgICAgICAgfQotICAgICA4MSAgICAgICAg
c2V0IHNldHRlcjIoeCkKLSAgICAgODIgICAgICAgIHsKLSAgICAgODMgICAgICAgICAgICB2YXIg
czsKLSAgICAgODQgICAgICAgIH0KLSAgICAgODUgICAgfQotICAgICA4NiAgICAKLSA9PiAgODcg
ICAgfHggPT4geDsKLSAgICAgODggICAgKCkgPT4gMTsKLSAgICAgODkgICAgKHgpID0+IHg7Ci0g
ICAgIDkwICAgICh4KSA9PiB7IHggfTsKKyAgICAgODEgICAgICAgIGdldCBnZXR0ZXIxKCkgewor
ICAgICA4MiAgICAgICAgICAgIHZhciB4OworICAgICA4MyAgICAgICAgfQorICAgICA4NCAgICAg
ICAgZ2V0IGdldHRlcjIoKQorICAgICA4NSAgICAgICAgeworICAgICA4NiAgICAgICAgICAgIHZh
ciB4OworICAgICA4NyAgICAgICAgfQorICAgICA4OCAgICAgICAgc2V0IHNldHRlcjEoeCkgewor
ICAgICA4OSAgICAgICAgICAgIHZhciBzOworICAgICA5MCAgICAgICAgfQorICAgICA5MSAgICAg
ICAgc2V0IHNldHRlcjIoeCkKKyAgICAgOTIgICAgICAgIHsKKyAgICAgOTMgICAgICAgICAgICB2
YXIgczsKKyAgICAgOTQgICAgICAgIH0KKyAgICAgOTUgICAgfQorICAgICA5NiAgICAKKyA9PiAg
OTcgICAgfHggPT4geDsKKyAgICAgOTggICAgKCkgPT4gMTsKKyAgICAgOTkgICAgKHgpID0+IHg7
CisgICAgMTAwICAgICh4KSA9PiB7IHggfTsKIAotSU5TRVJUSU5HIEFUOiA1MjowCi1QQVVTRVMg
QVQ6IDUzOjQKLSAgICAgNDkgICAgICAgIHZhciB4OwotICAgICA1MCAgICB9KTsKLSAgICAgNTEg
ICAgCi0gLT4gIDUyICAgICNmdW5jdGlvbiogZ2VuZXJhdG9yKCkgewotID0+ICA1MyAgICAgICAg
fHZhciB4OwotICAgICA1NCAgICB9Ci0gICAgIDU1ICAgIAotICAgICA1NiAgICBjbGFzcyBDbGFz
cyB7Ci0KLUlOU0VSVElORyBBVDogNTM6NQotUEFVU0VTIEFUOiA1NDowCi0gICAgIDUwICAgIH0p
OwotICAgICA1MSAgICAKLSAgICAgNTIgICAgZnVuY3Rpb24qIGdlbmVyYXRvcigpIHsKLSAtPiAg
NTMgICAgICAgIHYjYXIgeDsKLSA9PiAgNTQgICAgfH0KLSAgICAgNTUgICAgCi0gICAgIDU2ICAg
IGNsYXNzIENsYXNzIHsKLSAgICAgNTcgICAgICAgIHN0YXRpYyBzdGF0aWNNZXRob2QxKCkgewot
Ci1JTlNFUlRJTkcgQVQ6IDU3OjAKLVBBVVNFUyBBVDogNTg6OAotICAgICA1NCAgICB9Ci0gICAg
IDU1ICAgIAotICAgICA1NiAgICBjbGFzcyBDbGFzcyB7Ci0gLT4gIDU3ICAgICMgICAgc3RhdGlj
IHN0YXRpY01ldGhvZDEoKSB7Ci0gPT4gIDU4ICAgICAgICAgICAgfHZhciB4OwotICAgICA1OSAg
ICAgICAgfQotICAgICA2MCAgICAgICAgc3RhdGljIHN0YXRpY01ldGhvZDIoKQotICAgICA2MSAg
ICAgICAgewotCi1JTlNFUlRJTkcgQVQ6IDU4OjkKLVBBVVNFUyBBVDogNTk6NAotICAgICA1NSAg
ICAKLSAgICAgNTYgICAgY2xhc3MgQ2xhc3MgewotICAgICA1NyAgICAgICAgc3RhdGljIHN0YXRp
Y01ldGhvZDEoKSB7Ci0gLT4gIDU4ICAgICAgICAgICAgdiNhciB4OwotID0+ICA1OSAgICAgICAg
fH0KLSAgICAgNjAgICAgICAgIHN0YXRpYyBzdGF0aWNNZXRob2QyKCkKLSAgICAgNjEgICAgICAg
IHsKLSAgICAgNjIgICAgICAgICAgICB2YXIgeDsKLQotSU5TRVJUSU5HIEFUOiA2MDowCi1QQVVT
RVMgQVQ6IDYyOjgKLSAgICAgNTcgICAgICAgIHN0YXRpYyBzdGF0aWNNZXRob2QxKCkgewotICAg
ICA1OCAgICAgICAgICAgIHZhciB4OwotICAgICA1OSAgICAgICAgfQotIC0+ICA2MCAgICAjICAg
IHN0YXRpYyBzdGF0aWNNZXRob2QyKCkKLSAgICAgNjEgICAgICAgIHsKLSA9PiAgNjIgICAgICAg
ICAgICB8dmFyIHg7Ci0gICAgIDYzICAgICAgICB9Ci0gICAgIDY0ICAgICAgICBtZXRob2QxKCkg
ewotICAgICA2NSAgICAgICAgICAgIHZhciB4OwotCi1JTlNFUlRJTkcgQVQ6IDYyOjkKK0lOU0VS
VElORyBBVDogNjI6MAogUEFVU0VTIEFUOiA2Mzo0Ci0gICAgIDU5ICAgICAgICB9Ci0gICAgIDYw
ICAgICAgICBzdGF0aWMgc3RhdGljTWV0aG9kMigpCi0gICAgIDYxICAgICAgICB7Ci0gLT4gIDYy
ICAgICAgICAgICAgdiNhciB4OwotID0+ICA2MyAgICAgICAgfH0KLSAgICAgNjQgICAgICAgIG1l
dGhvZDEoKSB7Ci0gICAgIDY1ICAgICAgICAgICAgdmFyIHg7Ci0gICAgIDY2ICAgICAgICB9Cisg
ICAgIDU5ICAgICAgICB2YXIgeDsKKyAgICAgNjAgICAgfSk7CisgICAgIDYxICAgIAorIC0+ICA2
MiAgICAjZnVuY3Rpb24qIGdlbmVyYXRvcigpIHsKKyA9PiAgNjMgICAgICAgIHx2YXIgeDsKKyAg
ICAgNjQgICAgfQorICAgICA2NSAgICAKKyAgICAgNjYgICAgY2xhc3MgQ2xhc3MgewogCi1JTlNF
UlRJTkcgQVQ6IDY0OjAKLVBBVVNFUyBBVDogNjU6OAotICAgICA2MSAgICAgICAgewotICAgICA2
MiAgICAgICAgICAgIHZhciB4OwotICAgICA2MyAgICAgICAgfQotIC0+ICA2NCAgICAjICAgIG1l
dGhvZDEoKSB7Ci0gPT4gIDY1ICAgICAgICAgICAgfHZhciB4OwotICAgICA2NiAgICAgICAgfQot
ICAgICA2NyAgICAgICAgbWV0aG9kMigpCi0gICAgIDY4ICAgICAgICB7Ci0KLUlOU0VSVElORyBB
VDogNjU6OQotUEFVU0VTIEFUOiA2Njo0Ci0gICAgIDYyICAgICAgICAgICAgdmFyIHg7Ci0gICAg
IDYzICAgICAgICB9Ci0gICAgIDY0ICAgICAgICBtZXRob2QxKCkgewotIC0+ICA2NSAgICAgICAg
ICAgIHYjYXIgeDsKLSA9PiAgNjYgICAgICAgIHx9Ci0gICAgIDY3ICAgICAgICBtZXRob2QyKCkK
LSAgICAgNjggICAgICAgIHsKLSAgICAgNjkgICAgICAgICAgICB2YXIgeDsKK0lOU0VSVElORyBB
VDogNjM6NQorUEFVU0VTIEFUOiA2NDowCisgICAgIDYwICAgIH0pOworICAgICA2MSAgICAKKyAg
ICAgNjIgICAgZnVuY3Rpb24qIGdlbmVyYXRvcigpIHsKKyAtPiAgNjMgICAgICAgIHYjYXIgeDsK
KyA9PiAgNjQgICAgfH0KKyAgICAgNjUgICAgCisgICAgIDY2ICAgIGNsYXNzIENsYXNzIHsKKyAg
ICAgNjcgICAgICAgIHN0YXRpYyBzdGF0aWNNZXRob2QxKCkgewogCiBJTlNFUlRJTkcgQVQ6IDY3
OjAKLVBBVVNFUyBBVDogNjk6OAotICAgICA2NCAgICAgICAgbWV0aG9kMSgpIHsKLSAgICAgNjUg
ICAgICAgICAgICB2YXIgeDsKLSAgICAgNjYgICAgICAgIH0KLSAtPiAgNjcgICAgIyAgICBtZXRo
b2QyKCkKLSAgICAgNjggICAgICAgIHsKLSA9PiAgNjkgICAgICAgICAgICB8dmFyIHg7Ci0gICAg
IDcwICAgICAgICB9Ci0gICAgIDcxICAgICAgICBnZXQgZ2V0dGVyMSgpIHsKK1BBVVNFUyBBVDog
Njg6OAorICAgICA2NCAgICB9CisgICAgIDY1ICAgIAorICAgICA2NiAgICBjbGFzcyBDbGFzcyB7
CisgLT4gIDY3ICAgICMgICAgc3RhdGljIHN0YXRpY01ldGhvZDEoKSB7CisgPT4gIDY4ICAgICAg
ICAgICAgfHZhciB4OworICAgICA2OSAgICAgICAgfQorICAgICA3MCAgICAgICAgc3RhdGljIHN0
YXRpY01ldGhvZDIoKQorICAgICA3MSAgICAgICAgeworCitJTlNFUlRJTkcgQVQ6IDY4OjkKK1BB
VVNFUyBBVDogNjk6NAorICAgICA2NSAgICAKKyAgICAgNjYgICAgY2xhc3MgQ2xhc3MgeworICAg
ICA2NyAgICAgICAgc3RhdGljIHN0YXRpY01ldGhvZDEoKSB7CisgLT4gIDY4ICAgICAgICAgICAg
diNhciB4OworID0+ICA2OSAgICAgICAgfH0KKyAgICAgNzAgICAgICAgIHN0YXRpYyBzdGF0aWNN
ZXRob2QyKCkKKyAgICAgNzEgICAgICAgIHsKICAgICAgNzIgICAgICAgICAgICB2YXIgeDsKIAot
SU5TRVJUSU5HIEFUOiA2OTo5Ci1QQVVTRVMgQVQ6IDcwOjQKLSAgICAgNjYgICAgICAgIH0KLSAg
ICAgNjcgICAgICAgIG1ldGhvZDIoKQotICAgICA2OCAgICAgICAgewotIC0+ICA2OSAgICAgICAg
ICAgIHYjYXIgeDsKLSA9PiAgNzAgICAgICAgIHx9Ci0gICAgIDcxICAgICAgICBnZXQgZ2V0dGVy
MSgpIHsKLSAgICAgNzIgICAgICAgICAgICB2YXIgeDsKLSAgICAgNzMgICAgICAgIH0KLQotSU5T
RVJUSU5HIEFUOiA3MTowCitJTlNFUlRJTkcgQVQ6IDcwOjAKIFBBVVNFUyBBVDogNzI6OAotICAg
ICA2OCAgICAgICAgewotICAgICA2OSAgICAgICAgICAgIHZhciB4OwotICAgICA3MCAgICAgICAg
fQotIC0+ICA3MSAgICAjICAgIGdldCBnZXR0ZXIxKCkgeworICAgICA2NyAgICAgICAgc3RhdGlj
IHN0YXRpY01ldGhvZDEoKSB7CisgICAgIDY4ICAgICAgICAgICAgdmFyIHg7CisgICAgIDY5ICAg
ICAgICB9CisgLT4gIDcwICAgICMgICAgc3RhdGljIHN0YXRpY01ldGhvZDIoKQorICAgICA3MSAg
ICAgICAgewogID0+ICA3MiAgICAgICAgICAgIHx2YXIgeDsKICAgICAgNzMgICAgICAgIH0KLSAg
ICAgNzQgICAgICAgIGdldCBnZXR0ZXIyKCkKLSAgICAgNzUgICAgICAgIHsKKyAgICAgNzQgICAg
ICAgIG1ldGhvZDEoKSB7CisgICAgIDc1ICAgICAgICAgICAgdmFyIHg7CiAKIElOU0VSVElORyBB
VDogNzI6OQogUEFVU0VTIEFUOiA3Mzo0Ci0gICAgIDY5ICAgICAgICAgICAgdmFyIHg7Ci0gICAg
IDcwICAgICAgICB9Ci0gICAgIDcxICAgICAgICBnZXQgZ2V0dGVyMSgpIHsKKyAgICAgNjkgICAg
ICAgIH0KKyAgICAgNzAgICAgICAgIHN0YXRpYyBzdGF0aWNNZXRob2QyKCkKKyAgICAgNzEgICAg
ICAgIHsKICAtPiAgNzIgICAgICAgICAgICB2I2FyIHg7CiAgPT4gIDczICAgICAgICB8fQotICAg
ICA3NCAgICAgICAgZ2V0IGdldHRlcjIoKQotICAgICA3NSAgICAgICAgewotICAgICA3NiAgICAg
ICAgICAgIHZhciB4OworICAgICA3NCAgICAgICAgbWV0aG9kMSgpIHsKKyAgICAgNzUgICAgICAg
ICAgICB2YXIgeDsKKyAgICAgNzYgICAgICAgIH0KIAogSU5TRVJUSU5HIEFUOiA3NDowCi1QQVVT
RVMgQVQ6IDc2OjgKLSAgICAgNzEgICAgICAgIGdldCBnZXR0ZXIxKCkgeworUEFVU0VTIEFUOiA3
NTo4CisgICAgIDcxICAgICAgICB7CiAgICAgIDcyICAgICAgICAgICAgdmFyIHg7CiAgICAgIDcz
ICAgICAgICB9Ci0gLT4gIDc0ICAgICMgICAgZ2V0IGdldHRlcjIoKQotICAgICA3NSAgICAgICAg
ewotID0+ICA3NiAgICAgICAgICAgIHx2YXIgeDsKLSAgICAgNzcgICAgICAgIH0KLSAgICAgNzgg
ICAgICAgIHNldCBzZXR0ZXIxKHgpIHsKLSAgICAgNzkgICAgICAgICAgICB2YXIgczsKKyAtPiAg
NzQgICAgIyAgICBtZXRob2QxKCkgeworID0+ICA3NSAgICAgICAgICAgIHx2YXIgeDsKKyAgICAg
NzYgICAgICAgIH0KKyAgICAgNzcgICAgICAgIG1ldGhvZDIoKQorICAgICA3OCAgICAgICAgewog
Ci1JTlNFUlRJTkcgQVQ6IDc2OjkKLVBBVVNFUyBBVDogNzc6NAorSU5TRVJUSU5HIEFUOiA3NTo5
CitQQVVTRVMgQVQ6IDc2OjQKKyAgICAgNzIgICAgICAgICAgICB2YXIgeDsKICAgICAgNzMgICAg
ICAgIH0KLSAgICAgNzQgICAgICAgIGdldCBnZXR0ZXIyKCkKLSAgICAgNzUgICAgICAgIHsKLSAt
PiAgNzYgICAgICAgICAgICB2I2FyIHg7Ci0gPT4gIDc3ICAgICAgICB8fQotICAgICA3OCAgICAg
ICAgc2V0IHNldHRlcjEoeCkgewotICAgICA3OSAgICAgICAgICAgIHZhciBzOwotICAgICA4MCAg
ICAgICAgfQorICAgICA3NCAgICAgICAgbWV0aG9kMSgpIHsKKyAtPiAgNzUgICAgICAgICAgICB2
I2FyIHg7CisgPT4gIDc2ICAgICAgICB8fQorICAgICA3NyAgICAgICAgbWV0aG9kMigpCisgICAg
IDc4ICAgICAgICB7CisgICAgIDc5ICAgICAgICAgICAgdmFyIHg7CiAKLUlOU0VSVElORyBBVDog
Nzg6MAorSU5TRVJUSU5HIEFUOiA3NzowCiBQQVVTRVMgQVQ6IDc5OjgKLSAgICAgNzUgICAgICAg
IHsKLSAgICAgNzYgICAgICAgICAgICB2YXIgeDsKLSAgICAgNzcgICAgICAgIH0KLSAtPiAgNzgg
ICAgIyAgICBzZXQgc2V0dGVyMSh4KSB7Ci0gPT4gIDc5ICAgICAgICAgICAgfHZhciBzOworICAg
ICA3NCAgICAgICAgbWV0aG9kMSgpIHsKKyAgICAgNzUgICAgICAgICAgICB2YXIgeDsKKyAgICAg
NzYgICAgICAgIH0KKyAtPiAgNzcgICAgIyAgICBtZXRob2QyKCkKKyAgICAgNzggICAgICAgIHsK
KyA9PiAgNzkgICAgICAgICAgICB8dmFyIHg7CiAgICAgIDgwICAgICAgICB9Ci0gICAgIDgxICAg
ICAgICBzZXQgc2V0dGVyMih4KQotICAgICA4MiAgICAgICAgeworICAgICA4MSAgICAgICAgZ2V0
IGdldHRlcjEoKSB7CisgICAgIDgyICAgICAgICAgICAgdmFyIHg7CiAKIElOU0VSVElORyBBVDog
Nzk6OQogUEFVU0VTIEFUOiA4MDo0Ci0gICAgIDc2ICAgICAgICAgICAgdmFyIHg7Ci0gICAgIDc3
ICAgICAgICB9Ci0gICAgIDc4ICAgICAgICBzZXQgc2V0dGVyMSh4KSB7Ci0gLT4gIDc5ICAgICAg
ICAgICAgdiNhciBzOworICAgICA3NiAgICAgICAgfQorICAgICA3NyAgICAgICAgbWV0aG9kMigp
CisgICAgIDc4ICAgICAgICB7CisgLT4gIDc5ICAgICAgICAgICAgdiNhciB4OwogID0+ICA4MCAg
ICAgICAgfH0KLSAgICAgODEgICAgICAgIHNldCBzZXR0ZXIyKHgpCi0gICAgIDgyICAgICAgICB7
Ci0gICAgIDgzICAgICAgICAgICAgdmFyIHM7CisgICAgIDgxICAgICAgICBnZXQgZ2V0dGVyMSgp
IHsKKyAgICAgODIgICAgICAgICAgICB2YXIgeDsKKyAgICAgODMgICAgICAgIH0KIAogSU5TRVJU
SU5HIEFUOiA4MTowCi1QQVVTRVMgQVQ6IDgzOjgKLSAgICAgNzggICAgICAgIHNldCBzZXR0ZXIx
KHgpIHsKLSAgICAgNzkgICAgICAgICAgICB2YXIgczsKK1BBVVNFUyBBVDogODI6OAorICAgICA3
OCAgICAgICAgeworICAgICA3OSAgICAgICAgICAgIHZhciB4OwogICAgICA4MCAgICAgICAgfQot
IC0+ICA4MSAgICAjICAgIHNldCBzZXR0ZXIyKHgpCi0gICAgIDgyICAgICAgICB7Ci0gPT4gIDgz
ICAgICAgICAgICAgfHZhciBzOwotICAgICA4NCAgICAgICAgfQotICAgICA4NSAgICB9Ci0gICAg
IDg2ICAgIAorIC0+ICA4MSAgICAjICAgIGdldCBnZXR0ZXIxKCkgeworID0+ICA4MiAgICAgICAg
ICAgIHx2YXIgeDsKKyAgICAgODMgICAgICAgIH0KKyAgICAgODQgICAgICAgIGdldCBnZXR0ZXIy
KCkKKyAgICAgODUgICAgICAgIHsKIAotSU5TRVJUSU5HIEFUOiA4Mzo5Ci1QQVVTRVMgQVQ6IDg0
OjQKK0lOU0VSVElORyBBVDogODI6OQorUEFVU0VTIEFUOiA4Mzo0CisgICAgIDc5ICAgICAgICAg
ICAgdmFyIHg7CiAgICAgIDgwICAgICAgICB9Ci0gICAgIDgxICAgICAgICBzZXQgc2V0dGVyMih4
KQotICAgICA4MiAgICAgICAgewotIC0+ICA4MyAgICAgICAgICAgIHYjYXIgczsKLSA9PiAgODQg
ICAgICAgIHx9Ci0gICAgIDg1ICAgIH0KLSAgICAgODYgICAgCi0gICAgIDg3ICAgIHggPT4geDsK
KyAgICAgODEgICAgICAgIGdldCBnZXR0ZXIxKCkgeworIC0+ICA4MiAgICAgICAgICAgIHYjYXIg
eDsKKyA9PiAgODMgICAgICAgIHx9CisgICAgIDg0ICAgICAgICBnZXQgZ2V0dGVyMigpCisgICAg
IDg1ICAgICAgICB7CisgICAgIDg2ICAgICAgICAgICAgdmFyIHg7CiAKLUlOU0VSVElORyBBVDog
ODc6MQotUEFVU0VTIEFUOiA4Nzo1Ci0gICAgIDg0ICAgICAgICB9Ci0gICAgIDg1ICAgIH0KLSAg
ICAgODYgICAgCi0tPT4gIDg3ICAgIHgjID0+IHx4OwotICAgICA4OCAgICAoKSA9PiAxOwotICAg
ICA4OSAgICAoeCkgPT4geDsKLSAgICAgOTAgICAgKHgpID0+IHsgeCB9OworSU5TRVJUSU5HIEFU
OiA4NDowCitQQVVTRVMgQVQ6IDg2OjgKKyAgICAgODEgICAgICAgIGdldCBnZXR0ZXIxKCkgewor
ICAgICA4MiAgICAgICAgICAgIHZhciB4OworICAgICA4MyAgICAgICAgfQorIC0+ICA4NCAgICAj
ICAgIGdldCBnZXR0ZXIyKCkKKyAgICAgODUgICAgICAgIHsKKyA9PiAgODYgICAgICAgICAgICB8
dmFyIHg7CisgICAgIDg3ICAgICAgICB9CisgICAgIDg4ICAgICAgICBzZXQgc2V0dGVyMSh4KSB7
CisgICAgIDg5ICAgICAgICAgICAgdmFyIHM7CiAKLUlOU0VSVElORyBBVDogODc6NgotUEFVU0VT
IEFUOiA4ODowCi0gICAgIDg0ICAgICAgICB9Ci0gICAgIDg1ICAgIH0KLSAgICAgODYgICAgCi0g
LT4gIDg3ICAgIHggPT4geCM7Ci0gPT4gIDg4ICAgIHwoKSA9PiAxOwotICAgICA4OSAgICAoeCkg
PT4geDsKLSAgICAgOTAgICAgKHgpID0+IHsgeCB9OwotICAgICA5MSAgICAoeCkgPT4geworSU5T
RVJUSU5HIEFUOiA4Njo5CitQQVVTRVMgQVQ6IDg3OjQKKyAgICAgODMgICAgICAgIH0KKyAgICAg
ODQgICAgICAgIGdldCBnZXR0ZXIyKCkKKyAgICAgODUgICAgICAgIHsKKyAtPiAgODYgICAgICAg
ICAgICB2I2FyIHg7CisgPT4gIDg3ICAgICAgICB8fQorICAgICA4OCAgICAgICAgc2V0IHNldHRl
cjEoeCkgeworICAgICA4OSAgICAgICAgICAgIHZhciBzOworICAgICA5MCAgICAgICAgfQogCi1J
TlNFUlRJTkcgQVQ6IDg4OjEKLVBBVVNFUyBBVDogODg6NgotICAgICA4NSAgICB9Ci0gICAgIDg2
ICAgIAotICAgICA4NyAgICB4ID0+IHg7Ci0tPT4gIDg4ICAgICgjKSA9PiB8MTsKLSAgICAgODkg
ICAgKHgpID0+IHg7Ci0gICAgIDkwICAgICh4KSA9PiB7IHggfTsKLSAgICAgOTEgICAgKHgpID0+
IHsKK0lOU0VSVElORyBBVDogODg6MAorUEFVU0VTIEFUOiA4OTo4CisgICAgIDg1ICAgICAgICB7
CisgICAgIDg2ICAgICAgICAgICAgdmFyIHg7CisgICAgIDg3ICAgICAgICB9CisgLT4gIDg4ICAg
ICMgICAgc2V0IHNldHRlcjEoeCkgeworID0+ICA4OSAgICAgICAgICAgIHx2YXIgczsKKyAgICAg
OTAgICAgICAgIH0KKyAgICAgOTEgICAgICAgIHNldCBzZXR0ZXIyKHgpCisgICAgIDkyICAgICAg
ICB7CiAKLUlOU0VSVElORyBBVDogODg6NwotUEFVU0VTIEFUOiA4OTowCi0gICAgIDg1ICAgIH0K
LSAgICAgODYgICAgCi0gICAgIDg3ICAgIHggPT4geDsKLSAtPiAgODggICAgKCkgPT4gMSM7Ci0g
PT4gIDg5ICAgIHwoeCkgPT4geDsKLSAgICAgOTAgICAgKHgpID0+IHsgeCB9OwotICAgICA5MSAg
ICAoeCkgPT4gewotICAgICA5MiAgICAgICAgeAotCi1JTlNFUlRJTkcgQVQ6IDg5OjEKLVBBVVNF
UyBBVDogODk6NwotICAgICA4NiAgICAKLSAgICAgODcgICAgeCA9PiB4OwotICAgICA4OCAgICAo
KSA9PiAxOwotLT0+ICA4OSAgICAoI3gpID0+IHx4OwotICAgICA5MCAgICAoeCkgPT4geyB4IH07
Ci0gICAgIDkxICAgICh4KSA9PiB7Ci0gICAgIDkyICAgICAgICB4Ci0KLUlOU0VSVElORyBBVDog
ODk6OAotUEFVU0VTIEFUOiA5ODowCi0gICAgIDg2ICAgIAotICAgICA4NyAgICB4ID0+IHg7Ci0g
ICAgIDg4ICAgICgpID0+IDE7Ci0gLT4gIDg5ICAgICh4KSA9PiB4IzsKLSAgICAgOTAgICAgKHgp
ID0+IHsgeCB9OwotICAgICA5MSAgICAoeCkgPT4gewotICAgICA5MiAgICAgICAgeAotICAgICA5
MyAgICB9OwotICAgICA5NCAgICAoKSA9PiB7Ci0gICAgIDk1ICAgICAgICB2YXIgeDsKLSAgICAg
OTYgICAgfTsKLSAgICAgOTcgICAgCi0gPT4gIDk4ICAgIHx2YXIgZk9iaiA9IHsKLSAgICAgOTkg
ICAgICAgIGYxOiBmdW5jdGlvbigpIHsKLSAgICAxMDAgICAgICAgICAgICB2YXIgeDsKLSAgICAx
MDEgICAgICAgIH0sCi0KLUlOU0VSVElORyBBVDogOTA6MAotUEFVU0VTIEFUOiA5MDowCi0gICAg
IDg3ICAgIHggPT4geDsKLSAgICAgODggICAgKCkgPT4gMTsKLSAgICAgODkgICAgKHgpID0+IHg7
Ci0tPT4gIDkwICAgIHwoeCkgPT4geyB4IH07Ci0gICAgIDkxICAgICh4KSA9PiB7Ci0gICAgIDky
ICAgICAgICB4Ci0gICAgIDkzICAgIH07Ci0KLUlOU0VSVElORyBBVDogOTA6MQotUEFVU0VTIEFU
OiA5MDo5Ci0gICAgIDg3ICAgIHggPT4geDsKLSAgICAgODggICAgKCkgPT4gMTsKLSAgICAgODkg
ICAgKHgpID0+IHg7Ci0tPT4gIDkwICAgICgjeCkgPT4geyB8eCB9OwotICAgICA5MSAgICAoeCkg
PT4gewotICAgICA5MiAgICAgICAgeAotICAgICA5MyAgICB9OwotCi1JTlNFUlRJTkcgQVQ6IDkw
OjEwCi1QQVVTRVMgQVQ6IDkwOjExCi0gICAgIDg3ICAgIHggPT4geDsKLSAgICAgODggICAgKCkg
PT4gMTsKLSAgICAgODkgICAgKHgpID0+IHg7Ci0tPT4gIDkwICAgICh4KSA9PiB7IHgjIHx9Owot
ICAgICA5MSAgICAoeCkgPT4gewotICAgICA5MiAgICAgICAgeAotICAgICA5MyAgICB9OworSU5T
RVJUSU5HIEFUOiA4OTo5CitQQVVTRVMgQVQ6IDkwOjQKKyAgICAgODYgICAgICAgICAgICB2YXIg
eDsKKyAgICAgODcgICAgICAgIH0KKyAgICAgODggICAgICAgIHNldCBzZXR0ZXIxKHgpIHsKKyAt
PiAgODkgICAgICAgICAgICB2I2FyIHM7CisgPT4gIDkwICAgICAgICB8fQorICAgICA5MSAgICAg
ICAgc2V0IHNldHRlcjIoeCkKKyAgICAgOTIgICAgICAgIHsKKyAgICAgOTMgICAgICAgICAgICB2
YXIgczsKIAogSU5TRVJUSU5HIEFUOiA5MTowCi1QQVVTRVMgQVQ6IDkxOjAKLSAgICAgODggICAg
KCkgPT4gMTsKLSAgICAgODkgICAgKHgpID0+IHg7Ci0gICAgIDkwICAgICh4KSA9PiB7IHggfTsK
LS09PiAgOTEgICAgfCh4KSA9PiB7Ci0gICAgIDkyICAgICAgICB4Ci0gICAgIDkzICAgIH07Ci0g
ICAgIDk0ICAgICgpID0+IHsKK1BBVVNFUyBBVDogOTM6OAorICAgICA4OCAgICAgICAgc2V0IHNl
dHRlcjEoeCkgeworICAgICA4OSAgICAgICAgICAgIHZhciBzOworICAgICA5MCAgICAgICAgfQor
IC0+ICA5MSAgICAjICAgIHNldCBzZXR0ZXIyKHgpCisgICAgIDkyICAgICAgICB7CisgPT4gIDkz
ICAgICAgICAgICAgfHZhciBzOworICAgICA5NCAgICAgICAgfQorICAgICA5NSAgICB9CisgICAg
IDk2ICAgIAogCi1JTlNFUlRJTkcgQVQ6IDkxOjEKLVBBVVNFUyBBVDogOTI6NAotICAgICA4OCAg
ICAoKSA9PiAxOwotICAgICA4OSAgICAoeCkgPT4geDsKLSAgICAgOTAgICAgKHgpID0+IHsgeCB9
OwotIC0+ICA5MSAgICAoI3gpID0+IHsKLSA9PiAgOTIgICAgICAgIHx4Ci0gICAgIDkzICAgIH07
Ci0gICAgIDk0ICAgICgpID0+IHsKLSAgICAgOTUgICAgICAgIHZhciB4OworSU5TRVJUSU5HIEFU
OiA5Mzo5CitQQVVTRVMgQVQ6IDk0OjQKKyAgICAgOTAgICAgICAgIH0KKyAgICAgOTEgICAgICAg
IHNldCBzZXR0ZXIyKHgpCisgICAgIDkyICAgICAgICB7CisgLT4gIDkzICAgICAgICAgICAgdiNh
ciBzOworID0+ICA5NCAgICAgICAgfH0KKyAgICAgOTUgICAgfQorICAgICA5NiAgICAKKyAgICAg
OTcgICAgeCA9PiB4OwogCi1JTlNFUlRJTkcgQVQ6IDkyOjUKLVBBVVNFUyBBVDogOTM6MAotICAg
ICA4OSAgICAoeCkgPT4geDsKLSAgICAgOTAgICAgKHgpID0+IHsgeCB9OwotICAgICA5MSAgICAo
eCkgPT4gewotIC0+ICA5MiAgICAgICAgeCMKLSA9PiAgOTMgICAgfH07Ci0gICAgIDk0ICAgICgp
ID0+IHsKLSAgICAgOTUgICAgICAgIHZhciB4OwotICAgICA5NiAgICB9OworSU5TRVJUSU5HIEFU
OiA5NzoxCitQQVVTRVMgQVQ6IDk3OjUKKyAgICAgOTQgICAgICAgIH0KKyAgICAgOTUgICAgfQor
ICAgICA5NiAgICAKKy09PiAgOTcgICAgeCMgPT4gfHg7CisgICAgIDk4ICAgICgpID0+IDE7Cisg
ICAgIDk5ICAgICh4KSA9PiB4OworICAgIDEwMCAgICAoeCkgPT4geyB4IH07CiAKLUlOU0VSVElO
RyBBVDogOTQ6MAotUEFVU0VTIEFUOiA5NDowCi0gICAgIDkxICAgICh4KSA9PiB7Ci0gICAgIDky
ICAgICAgICB4Ci0gICAgIDkzICAgIH07Ci0tPT4gIDk0ICAgIHwoKSA9PiB7Ci0gICAgIDk1ICAg
ICAgICB2YXIgeDsKLSAgICAgOTYgICAgfTsKLSAgICAgOTcgICAgCitJTlNFUlRJTkcgQVQ6IDk3
OjYKK1BBVVNFUyBBVDogOTg6MAorICAgICA5NCAgICAgICAgfQorICAgICA5NSAgICB9CisgICAg
IDk2ICAgIAorIC0+ICA5NyAgICB4ID0+IHgjOworID0+ICA5OCAgICB8KCkgPT4gMTsKKyAgICAg
OTkgICAgKHgpID0+IHg7CisgICAgMTAwICAgICh4KSA9PiB7IHggfTsKKyAgICAxMDEgICAgKHgp
ID0+IHsKIAotSU5TRVJUSU5HIEFUOiA5NDoxCi1QQVVTRVMgQVQ6IDk1OjQKLSAgICAgOTEgICAg
KHgpID0+IHsKLSAgICAgOTIgICAgICAgIHgKLSAgICAgOTMgICAgfTsKLSAtPiAgOTQgICAgKCMp
ID0+IHsKLSA9PiAgOTUgICAgICAgIHx2YXIgeDsKLSAgICAgOTYgICAgfTsKLSAgICAgOTcgICAg
Ci0gICAgIDk4ICAgIHZhciBmT2JqID0geworSU5TRVJUSU5HIEFUOiA5ODoxCitQQVVTRVMgQVQ6
IDk4OjYKKyAgICAgOTUgICAgfQorICAgICA5NiAgICAKKyAgICAgOTcgICAgeCA9PiB4OworLT0+
ICA5OCAgICAoIykgPT4gfDE7CisgICAgIDk5ICAgICh4KSA9PiB4OworICAgIDEwMCAgICAoeCkg
PT4geyB4IH07CisgICAgMTAxICAgICh4KSA9PiB7CiAKLUlOU0VSVElORyBBVDogOTU6NQotUEFV
U0VTIEFUOiA5NjowCi0gICAgIDkyICAgICAgICB4Ci0gICAgIDkzICAgIH07Ci0gICAgIDk0ICAg
ICgpID0+IHsKLSAtPiAgOTUgICAgICAgIHYjYXIgeDsKLSA9PiAgOTYgICAgfH07Ci0gICAgIDk3
ICAgIAotICAgICA5OCAgICB2YXIgZk9iaiA9IHsKLSAgICAgOTkgICAgICAgIGYxOiBmdW5jdGlv
bigpIHsKK0lOU0VSVElORyBBVDogOTg6NworUEFVU0VTIEFUOiA5OTowCisgICAgIDk1ICAgIH0K
KyAgICAgOTYgICAgCisgICAgIDk3ICAgIHggPT4geDsKKyAtPiAgOTggICAgKCkgPT4gMSM7Cisg
PT4gIDk5ICAgIHwoeCkgPT4geDsKKyAgICAxMDAgICAgKHgpID0+IHsgeCB9OworICAgIDEwMSAg
ICAoeCkgPT4geworICAgIDEwMiAgICAgICAgeAogCi1JTlNFUlRJTkcgQVQ6IDk5OjAKLVBBVVNF
UyBBVDogMTAwOjgKLSAgICAgOTYgICAgfTsKLSAgICAgOTcgICAgCi0gICAgIDk4ICAgIHZhciBm
T2JqID0gewotIC0+ICA5OSAgICAjICAgIGYxOiBmdW5jdGlvbigpIHsKLSA9PiAxMDAgICAgICAg
ICAgICB8dmFyIHg7Ci0gICAgMTAxICAgICAgICB9LAotICAgIDEwMiAgICAgICAgZjI6IGZ1bmN0
aW9uKCkKLSAgICAxMDMgICAgICAgIHsKK0lOU0VSVElORyBBVDogOTk6MQorUEFVU0VTIEFUOiA5
OTo3CisgICAgIDk2ICAgIAorICAgICA5NyAgICB4ID0+IHg7CisgICAgIDk4ICAgICgpID0+IDE7
CistPT4gIDk5ICAgICgjeCkgPT4gfHg7CisgICAgMTAwICAgICh4KSA9PiB7IHggfTsKKyAgICAx
MDEgICAgKHgpID0+IHsKKyAgICAxMDIgICAgICAgIHgKIAotSU5TRVJUSU5HIEFUOiAxMDA6OQot
UEFVU0VTIEFUOiAxMDE6NAotICAgICA5NyAgICAKLSAgICAgOTggICAgdmFyIGZPYmogPSB7Ci0g
ICAgIDk5ICAgICAgICBmMTogZnVuY3Rpb24oKSB7Ci0gLT4gMTAwICAgICAgICAgICAgdiNhciB4
OwotID0+IDEwMSAgICAgICAgfH0sCi0gICAgMTAyICAgICAgICBmMjogZnVuY3Rpb24oKQotICAg
IDEwMyAgICAgICAgewotICAgIDEwNCAgICAgICAgICAgIHZhciB4OworSU5TRVJUSU5HIEFUOiA5
OTo4CitQQVVTRVMgQVQ6IDEwODowCisgICAgIDk2ICAgIAorICAgICA5NyAgICB4ID0+IHg7Cisg
ICAgIDk4ICAgICgpID0+IDE7CisgLT4gIDk5ICAgICh4KSA9PiB4IzsKKyAgICAxMDAgICAgKHgp
ID0+IHsgeCB9OworICAgIDEwMSAgICAoeCkgPT4geworICAgIDEwMiAgICAgICAgeAorICAgIDEw
MyAgICB9OworICAgIDEwNCAgICAoKSA9PiB7CisgICAgMTA1ICAgICAgICB2YXIgeDsKKyAgICAx
MDYgICAgfTsKKyAgICAxMDcgICAgCisgPT4gMTA4ICAgIHx2YXIgZk9iaiA9IHsKKyAgICAxMDkg
ICAgICAgIGYxOiBmdW5jdGlvbigpIHsKKyAgICAxMTAgICAgICAgICAgICB2YXIgeDsKKyAgICAx
MTEgICAgICAgIH0sCiAKLUlOU0VSVElORyBBVDogMTAyOjAKLVBBVVNFUyBBVDogMTA0OjgKLSAg
ICAgOTkgICAgICAgIGYxOiBmdW5jdGlvbigpIHsKLSAgICAxMDAgICAgICAgICAgICB2YXIgeDsK
LSAgICAxMDEgICAgICAgIH0sCi0gLT4gMTAyICAgICMgICAgZjI6IGZ1bmN0aW9uKCkKLSAgICAx
MDMgICAgICAgIHsKLSA9PiAxMDQgICAgICAgICAgICB8dmFyIHg7Ci0gICAgMTA1ICAgICAgICB9
LAotICAgIDEwNiAgICAgICAgZjM6ICgpID0+IHsKLSAgICAxMDcgICAgICAgICAgICB2YXIgeDsK
K0lOU0VSVElORyBBVDogMTAwOjAKK1BBVVNFUyBBVDogMTAwOjAKKyAgICAgOTcgICAgeCA9PiB4
OworICAgICA5OCAgICAoKSA9PiAxOworICAgICA5OSAgICAoeCkgPT4geDsKKy09PiAxMDAgICAg
fCh4KSA9PiB7IHggfTsKKyAgICAxMDEgICAgKHgpID0+IHsKKyAgICAxMDIgICAgICAgIHgKKyAg
ICAxMDMgICAgfTsKIAotSU5TRVJUSU5HIEFUOiAxMDQ6OQorSU5TRVJUSU5HIEFUOiAxMDA6MQor
UEFVU0VTIEFUOiAxMDA6OQorICAgICA5NyAgICB4ID0+IHg7CisgICAgIDk4ICAgICgpID0+IDE7
CisgICAgIDk5ICAgICh4KSA9PiB4OworLT0+IDEwMCAgICAoI3gpID0+IHsgfHggfTsKKyAgICAx
MDEgICAgKHgpID0+IHsKKyAgICAxMDIgICAgICAgIHgKKyAgICAxMDMgICAgfTsKKworSU5TRVJU
SU5HIEFUOiAxMDA6MTAKK1BBVVNFUyBBVDogMTAwOjExCisgICAgIDk3ICAgIHggPT4geDsKKyAg
ICAgOTggICAgKCkgPT4gMTsKKyAgICAgOTkgICAgKHgpID0+IHg7CistPT4gMTAwICAgICh4KSA9
PiB7IHgjIHx9OworICAgIDEwMSAgICAoeCkgPT4geworICAgIDEwMiAgICAgICAgeAorICAgIDEw
MyAgICB9OworCitJTlNFUlRJTkcgQVQ6IDEwMTowCitQQVVTRVMgQVQ6IDEwMTowCisgICAgIDk4
ICAgICgpID0+IDE7CisgICAgIDk5ICAgICh4KSA9PiB4OworICAgIDEwMCAgICAoeCkgPT4geyB4
IH07CistPT4gMTAxICAgIHwoeCkgPT4geworICAgIDEwMiAgICAgICAgeAorICAgIDEwMyAgICB9
OworICAgIDEwNCAgICAoKSA9PiB7CisKK0lOU0VSVElORyBBVDogMTAxOjEKK1BBVVNFUyBBVDog
MTAyOjQKKyAgICAgOTggICAgKCkgPT4gMTsKKyAgICAgOTkgICAgKHgpID0+IHg7CisgICAgMTAw
ICAgICh4KSA9PiB7IHggfTsKKyAtPiAxMDEgICAgKCN4KSA9PiB7CisgPT4gMTAyICAgICAgICB8
eAorICAgIDEwMyAgICB9OworICAgIDEwNCAgICAoKSA9PiB7CisgICAgMTA1ICAgICAgICB2YXIg
eDsKKworSU5TRVJUSU5HIEFUOiAxMDI6NQorUEFVU0VTIEFUOiAxMDM6MAorICAgICA5OSAgICAo
eCkgPT4geDsKKyAgICAxMDAgICAgKHgpID0+IHsgeCB9OworICAgIDEwMSAgICAoeCkgPT4gewor
IC0+IDEwMiAgICAgICAgeCMKKyA9PiAxMDMgICAgfH07CisgICAgMTA0ICAgICgpID0+IHsKKyAg
ICAxMDUgICAgICAgIHZhciB4OworICAgIDEwNiAgICB9OworCitJTlNFUlRJTkcgQVQ6IDEwNDow
CitQQVVTRVMgQVQ6IDEwNDowCisgICAgMTAxICAgICh4KSA9PiB7CisgICAgMTAyICAgICAgICB4
CisgICAgMTAzICAgIH07CistPT4gMTA0ICAgIHwoKSA9PiB7CisgICAgMTA1ICAgICAgICB2YXIg
eDsKKyAgICAxMDYgICAgfTsKKyAgICAxMDcgICAgCisKK0lOU0VSVElORyBBVDogMTA0OjEKIFBB
VVNFUyBBVDogMTA1OjQKLSAgICAxMDEgICAgICAgIH0sCi0gICAgMTAyICAgICAgICBmMjogZnVu
Y3Rpb24oKQotICAgIDEwMyAgICAgICAgewotIC0+IDEwNCAgICAgICAgICAgIHYjYXIgeDsKLSA9
PiAxMDUgICAgICAgIHx9LAotICAgIDEwNiAgICAgICAgZjM6ICgpID0+IHsKLSAgICAxMDcgICAg
ICAgICAgICB2YXIgeDsKLSAgICAxMDggICAgICAgIH0sCisgICAgMTAxICAgICh4KSA9PiB7Cisg
ICAgMTAyICAgICAgICB4CisgICAgMTAzICAgIH07CisgLT4gMTA0ICAgICgjKSA9PiB7CisgPT4g
MTA1ICAgICAgICB8dmFyIHg7CisgICAgMTA2ICAgIH07CisgICAgMTA3ICAgIAorICAgIDEwOCAg
ICB2YXIgZk9iaiA9IHsKIAotSU5TRVJUSU5HIEFUOiAxMDY6MAotUEFVU0VTIEFUOiAxMDc6OAot
ICAgIDEwMyAgICAgICAgewotICAgIDEwNCAgICAgICAgICAgIHZhciB4OwotICAgIDEwNSAgICAg
ICAgfSwKLSAtPiAxMDYgICAgIyAgICBmMzogKCkgPT4gewotID0+IDEwNyAgICAgICAgICAgIHx2
YXIgeDsKLSAgICAxMDggICAgICAgIH0sCi0gICAgMTA5ICAgICAgICBmNDogKCkgPT4KLSAgICAx
MTAgICAgICAgIHsKLQotSU5TRVJUSU5HIEFUOiAxMDc6OQotUEFVU0VTIEFUOiAxMDg6NAotICAg
IDEwNCAgICAgICAgICAgIHZhciB4OwotICAgIDEwNSAgICAgICAgfSwKLSAgICAxMDYgICAgICAg
IGYzOiAoKSA9PiB7Ci0gLT4gMTA3ICAgICAgICAgICAgdiNhciB4OwotID0+IDEwOCAgICAgICAg
fH0sCi0gICAgMTA5ICAgICAgICBmNDogKCkgPT4KLSAgICAxMTAgICAgICAgIHsKLSAgICAxMTEg
ICAgICAgICAgICB2YXIgeDsKK0lOU0VSVElORyBBVDogMTA1OjUKK1BBVVNFUyBBVDogMTA2OjAK
KyAgICAxMDIgICAgICAgIHgKKyAgICAxMDMgICAgfTsKKyAgICAxMDQgICAgKCkgPT4geworIC0+
IDEwNSAgICAgICAgdiNhciB4OworID0+IDEwNiAgICB8fTsKKyAgICAxMDcgICAgCisgICAgMTA4
ICAgIHZhciBmT2JqID0geworICAgIDEwOSAgICAgICAgZjE6IGZ1bmN0aW9uKCkgewogCiBJTlNF
UlRJTkcgQVQ6IDEwOTowCi1QQVVTRVMgQVQ6IDExMTo4Ci0gICAgMTA2ICAgICAgICBmMzogKCkg
PT4gewotICAgIDEwNyAgICAgICAgICAgIHZhciB4OwotICAgIDEwOCAgICAgICAgfSwKLSAtPiAx
MDkgICAgIyAgICBmNDogKCkgPT4KLSAgICAxMTAgICAgICAgIHsKLSA9PiAxMTEgICAgICAgICAg
ICB8dmFyIHg7Ci0gICAgMTEyICAgICAgICB9ICAgCi0gICAgMTEzICAgIH07Ci0gICAgMTE0ICAg
IAorUEFVU0VTIEFUOiAxMTA6OAorICAgIDEwNiAgICB9OworICAgIDEwNyAgICAKKyAgICAxMDgg
ICAgdmFyIGZPYmogPSB7CisgLT4gMTA5ICAgICMgICAgZjE6IGZ1bmN0aW9uKCkgeworID0+IDEx
MCAgICAgICAgICAgIHx2YXIgeDsKKyAgICAxMTEgICAgICAgIH0sCisgICAgMTEyICAgICAgICBm
MjogZnVuY3Rpb24oKQorICAgIDExMyAgICAgICAgewogCi1JTlNFUlRJTkcgQVQ6IDExMTo5Ci1Q
QVVTRVMgQVQ6IDExMjo0Ci0gICAgMTA4ICAgICAgICB9LAotICAgIDEwOSAgICAgICAgZjQ6ICgp
ID0+Ci0gICAgMTEwICAgICAgICB7Ci0gLT4gMTExICAgICAgICAgICAgdiNhciB4OwotID0+IDEx
MiAgICAgICAgfH0gICAKLSAgICAxMTMgICAgfTsKLSAgICAxMTQgICAgCitJTlNFUlRJTkcgQVQ6
IDExMDo5CitQQVVTRVMgQVQ6IDExMTo0CisgICAgMTA3ICAgIAorICAgIDEwOCAgICB2YXIgZk9i
aiA9IHsKKyAgICAxMDkgICAgICAgIGYxOiBmdW5jdGlvbigpIHsKKyAtPiAxMTAgICAgICAgICAg
ICB2I2FyIHg7CisgPT4gMTExICAgICAgICB8fSwKKyAgICAxMTIgICAgICAgIGYyOiBmdW5jdGlv
bigpCisgICAgMTEzICAgICAgICB7CisgICAgMTE0ICAgICAgICAgICAgdmFyIHg7CisKK0lOU0VS
VElORyBBVDogMTEyOjAKK1BBVVNFUyBBVDogMTE0OjgKKyAgICAxMDkgICAgICAgIGYxOiBmdW5j
dGlvbigpIHsKKyAgICAxMTAgICAgICAgICAgICB2YXIgeDsKKyAgICAxMTEgICAgICAgIH0sCisg
LT4gMTEyICAgICMgICAgZjI6IGZ1bmN0aW9uKCkKKyAgICAxMTMgICAgICAgIHsKKyA9PiAxMTQg
ICAgICAgICAgICB8dmFyIHg7CisgICAgMTE1ICAgICAgICB9LAorICAgIDExNiAgICAgICAgZjM6
ICgpID0+IHsKKyAgICAxMTcgICAgICAgICAgICB2YXIgeDsKKworSU5TRVJUSU5HIEFUOiAxMTQ6
OQorUEFVU0VTIEFUOiAxMTU6NAorICAgIDExMSAgICAgICAgfSwKKyAgICAxMTIgICAgICAgIGYy
OiBmdW5jdGlvbigpCisgICAgMTEzICAgICAgICB7CisgLT4gMTE0ICAgICAgICAgICAgdiNhciB4
OworID0+IDExNSAgICAgICAgfH0sCisgICAgMTE2ICAgICAgICBmMzogKCkgPT4geworICAgIDEx
NyAgICAgICAgICAgIHZhciB4OworICAgIDExOCAgICAgICAgfSwKKworSU5TRVJUSU5HIEFUOiAx
MTY6MAorUEFVU0VTIEFUOiAxMTc6OAorICAgIDExMyAgICAgICAgeworICAgIDExNCAgICAgICAg
ICAgIHZhciB4OworICAgIDExNSAgICAgICAgfSwKKyAtPiAxMTYgICAgIyAgICBmMzogKCkgPT4g
eworID0+IDExNyAgICAgICAgICAgIHx2YXIgeDsKKyAgICAxMTggICAgICAgIH0sCisgICAgMTE5
ICAgICAgICBmNDogKCkgPT4KKyAgICAxMjAgICAgICAgIHsKKworSU5TRVJUSU5HIEFUOiAxMTc6
OQorUEFVU0VTIEFUOiAxMTg6NAorICAgIDExNCAgICAgICAgICAgIHZhciB4OworICAgIDExNSAg
ICAgICAgfSwKKyAgICAxMTYgICAgICAgIGYzOiAoKSA9PiB7CisgLT4gMTE3ICAgICAgICAgICAg
diNhciB4OworID0+IDExOCAgICAgICAgfH0sCisgICAgMTE5ICAgICAgICBmNDogKCkgPT4KKyAg
ICAxMjAgICAgICAgIHsKKyAgICAxMjEgICAgICAgICAgICB2YXIgeDsKKworSU5TRVJUSU5HIEFU
OiAxMTk6MAorUEFVU0VTIEFUOiAxMjE6OAorICAgIDExNiAgICAgICAgZjM6ICgpID0+IHsKKyAg
ICAxMTcgICAgICAgICAgICB2YXIgeDsKKyAgICAxMTggICAgICAgIH0sCisgLT4gMTE5ICAgICMg
ICAgZjQ6ICgpID0+CisgICAgMTIwICAgICAgICB7CisgPT4gMTIxICAgICAgICAgICAgfHZhciB4
OworICAgIDEyMiAgICAgICAgfSAgIAorICAgIDEyMyAgICB9OworICAgIDEyNCAgICAKKworSU5T
RVJUSU5HIEFUOiAxMjE6OQorUEFVU0VTIEFUOiAxMjI6NAorICAgIDExOCAgICAgICAgfSwKKyAg
ICAxMTkgICAgICAgIGY0OiAoKSA9PgorICAgIDEyMCAgICAgICAgeworIC0+IDEyMSAgICAgICAg
ICAgIHYjYXIgeDsKKyA9PiAxMjIgICAgICAgIHx9ICAgCisgICAgMTIzICAgIH07CisgICAgMTI0
ICAgIAogCiAKIC0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBEZWJ1Z2dlci5yZXNvbHZlZEJyZWFrcG9p
bnQuZHVtcEFsbExvY2F0aW9ucy5Vbmljb2RlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZGVidWdnZXIvYnJlYWtwb2ludHMvcmVzb2x2ZWQtZHVtcC1lYWNoLWxpbmUtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnRzL3Jlc29s
dmVkLWR1bXAtZWFjaC1saW5lLWV4cGVjdGVkLnR4dAppbmRleCBmMDBmMjk3MGIwY2I5MmFkODVi
OWQ4OWY4NzMwZGY5NzU2ZTBiMzIyLi41ZWJmMGJhODQyZGUwZDIyMWVkODBiNDFlNzJhZDhjNDRm
MDJmNjdlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvYnJlYWtw
b2ludHMvcmVzb2x2ZWQtZHVtcC1lYWNoLWxpbmUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50cy9yZXNvbHZlZC1kdW1wLWVhY2gtbGlu
ZS1leHBlY3RlZC50eHQKQEAgLTI0ODgsMTUgKzI0ODgsMTQgQEAgUEFVU0VTIEFUOiAxNjQ6MAog
CiAKIElOU0VSVElORyBBVDogMTY1OjAKLVBBVVNFUyBBVDogMTY2OjAKK1BBVVNFUyBBVDogMTY1
OjQKICAgICAxNjIgICAgfQogICAgIDE2MyAgICAKICAgICAxNjQgICAgdmFyIHYxID0gMSwKLSAt
PiAxNjUgICAgIyAgICB2MiA9IDE7Ci0gPT4gMTY2ICAgIHxsZXQgbDEgPSAyLAorLT0+IDE2NSAg
ICAjICAgIHx2MiA9IDE7CisgICAgMTY2ICAgIGxldCBsMSA9IDIsCiAgICAgMTY3ICAgICAgICBs
MiA9IDI7CiAgICAgMTY4ICAgIGNvbnN0IGMxID0gMywKLSAgICAxNjkgICAgICAgIGMyID0gMzsK
IAogCiBJTlNFUlRJTkcgQVQ6IDE2NjowCkBAIC0yNTExLDE1ICsyNTEwLDE0IEBAIFBBVVNFUyBB
VDogMTY2OjAKIAogCiBJTlNFUlRJTkcgQVQ6IDE2NzowCi1QQVVTRVMgQVQ6IDE2ODowCitQQVVT
RVMgQVQ6IDE2Nzo0CiAgICAgMTY0ICAgIHZhciB2MSA9IDEsCiAgICAgMTY1ICAgICAgICB2MiA9
IDE7CiAgICAgMTY2ICAgIGxldCBsMSA9IDIsCi0gLT4gMTY3ICAgICMgICAgbDIgPSAyOwotID0+
IDE2OCAgICB8Y29uc3QgYzEgPSAzLAorLT0+IDE2NyAgICAjICAgIHxsMiA9IDI7CisgICAgMTY4
ICAgIGNvbnN0IGMxID0gMywKICAgICAxNjkgICAgICAgIGMyID0gMzsKICAgICAxNzAgICAgCi0g
ICAgMTcxICAgIHYxID0gdjIgPSB2MTsKIAogCiBJTlNFUlRJTkcgQVQ6IDE2ODowCkBAIC0yNTM0
LDE2ICsyNTMyLDE0IEBAIFBBVVNFUyBBVDogMTY4OjAKIAogCiBJTlNFUlRJTkcgQVQ6IDE2OTow
Ci1QQVVTRVMgQVQ6IDE3MTowCitQQVVTRVMgQVQ6IDE2OTo0CiAgICAgMTY2ICAgIGxldCBsMSA9
IDIsCiAgICAgMTY3ICAgICAgICBsMiA9IDI7CiAgICAgMTY4ICAgIGNvbnN0IGMxID0gMywKLSAt
PiAxNjkgICAgIyAgICBjMiA9IDM7CistPT4gMTY5ICAgICMgICAgfGMyID0gMzsKICAgICAxNzAg
ICAgCi0gPT4gMTcxICAgIHx2MSA9IHYyID0gdjE7CisgICAgMTcxICAgIHYxID0gdjIgPSB2MTsK
ICAgICAxNzIgICAgCi0gICAgMTczICAgIHZhciB7eCwgeX0gPSBvYmo7Ci0gICAgMTc0ICAgIHZh
ciBbdywgel0gPSBhcnI7CiAKIAogSU5TRVJUSU5HIEFUOiAxNzA6MApAQCAtMjkyNiw4ICsyOTIy
LDggQEAgUEFVU0VTIEFUOiAyMDA6MAogIC0+IDE5OSAgICAjCiAgPT4gMjAwICAgIHxhKGEoKSwg
YigpKTsKICAgICAyMDEgICAgCi0gICAgMjAyICAgIGlmIChvMS5wMSkKLSAgICAyMDMgICAgICAg
IGEoKTsKKyAgICAyMDIgICAgYSgpLCBiKCksIGMoKTsKKyAgICAyMDMgICAgCiAKIAogSU5TRVJU
SU5HIEFUOiAyMDA6MApAQCAtMjkzNywxMDkgKzI5MzMsMTc3IEBAIFBBVVNFUyBBVDogMjAwOjAK
ICAgICAxOTkgICAgCiAtPT4gMjAwICAgIHxhKGEoKSwgYigpKTsKICAgICAyMDEgICAgCi0gICAg
MjAyICAgIGlmIChvMS5wMSkKLSAgICAyMDMgICAgICAgIGEoKTsKKyAgICAyMDIgICAgYSgpLCBi
KCksIGMoKTsKKyAgICAyMDMgICAgCiAKIAogSU5TRVJUSU5HIEFUOiAyMDE6MAotUEFVU0VTIEFU
OiAyMDI6NAorUEFVU0VTIEFUOiAyMDI6MAogICAgIDE5OCAgICB2YXIgdDIgPSBhYCR7MX0gJHt4
PTF9ICR7YSgpfWA7CiAgICAgMTk5ICAgIAogICAgIDIwMCAgICBhKGEoKSwgYigpKTsKICAtPiAy
MDEgICAgIwotID0+IDIwMiAgICBpZiAofG8xLnAxKQotICAgIDIwMyAgICAgICAgYSgpOwotICAg
IDIwNCAgICAKLSAgICAyMDUgICAgaWYgKG8xWyJwMSJdKQorID0+IDIwMiAgICB8YSgpLCBiKCks
IGMoKTsKKyAgICAyMDMgICAgCisgICAgMjA0ICAgIGEoKSwKKyAgICAyMDUgICAgYigpLAogCiAK
IElOU0VSVElORyBBVDogMjAyOjAKLVBBVVNFUyBBVDogMjAyOjQKK1BBVVNFUyBBVDogMjAyOjAK
ICAgICAxOTkgICAgCiAgICAgMjAwICAgIGEoYSgpLCBiKCkpOwogICAgIDIwMSAgICAKLS09PiAy
MDIgICAgI2lmICh8bzEucDEpCi0gICAgMjAzICAgICAgICBhKCk7Ci0gICAgMjA0ICAgIAotICAg
IDIwNSAgICBpZiAobzFbInAxIl0pCistPT4gMjAyICAgIHxhKCksIGIoKSwgYygpOworICAgIDIw
MyAgICAKKyAgICAyMDQgICAgYSgpLAorICAgIDIwNSAgICBiKCksCiAKIAogSU5TRVJUSU5HIEFU
OiAyMDM6MAotUEFVU0VTIEFUOiAyMDM6NAorUEFVU0VTIEFUOiAyMDQ6MAogICAgIDIwMCAgICBh
KGEoKSwgYigpKTsKICAgICAyMDEgICAgCi0gICAgMjAyICAgIGlmIChvMS5wMSkKLS09PiAyMDMg
ICAgIyAgICB8YSgpOwotICAgIDIwNCAgICAKLSAgICAyMDUgICAgaWYgKG8xWyJwMSJdKQotICAg
IDIwNiAgICAgICAgYSgpOworICAgIDIwMiAgICBhKCksIGIoKSwgYygpOworIC0+IDIwMyAgICAj
CisgPT4gMjA0ICAgIHxhKCksCisgICAgMjA1ICAgIGIoKSwKKyAgICAyMDYgICAgYygpOworICAg
IDIwNyAgICAKIAogCiBJTlNFUlRJTkcgQVQ6IDIwNDowCi1QQVVTRVMgQVQ6IDIwNTo0CitQQVVT
RVMgQVQ6IDIwNDowCiAgICAgMjAxICAgIAotICAgIDIwMiAgICBpZiAobzEucDEpCi0gICAgMjAz
ICAgICAgICBhKCk7Ci0gLT4gMjA0ICAgICMKLSA9PiAyMDUgICAgaWYgKHxvMVsicDEiXSkKLSAg
ICAyMDYgICAgICAgIGEoKTsKKyAgICAyMDIgICAgYSgpLCBiKCksIGMoKTsKKyAgICAyMDMgICAg
CistPT4gMjA0ICAgIHxhKCksCisgICAgMjA1ICAgIGIoKSwKKyAgICAyMDYgICAgYygpOwogICAg
IDIwNyAgICAKLSAgICAyMDggICAgaWYgKFN0cmluZy5yYXdgdGVzdGApCiAKIAogSU5TRVJUSU5H
IEFUOiAyMDU6MAotUEFVU0VTIEFUOiAyMDU6NAotICAgIDIwMiAgICBpZiAobzEucDEpCi0gICAg
MjAzICAgICAgICBhKCk7Ci0gICAgMjA0ICAgIAotLT0+IDIwNSAgICAjaWYgKHxvMVsicDEiXSkK
LSAgICAyMDYgICAgICAgIGEoKTsKK1BBVVNFUyBBVDogMjA1OjAKKyAgICAyMDIgICAgYSgpLCBi
KCksIGMoKTsKKyAgICAyMDMgICAgCisgICAgMjA0ICAgIGEoKSwKKy09PiAyMDUgICAgfGIoKSwK
KyAgICAyMDYgICAgYygpOwogICAgIDIwNyAgICAKLSAgICAyMDggICAgaWYgKFN0cmluZy5yYXdg
dGVzdGApCisgICAgMjA4ICAgIGlmIChvMS5wMSkKIAogCiBJTlNFUlRJTkcgQVQ6IDIwNjowCi1Q
QVVTRVMgQVQ6IDIwNjo0Ci0gICAgMjAzICAgICAgICBhKCk7Ci0gICAgMjA0ICAgIAotICAgIDIw
NSAgICBpZiAobzFbInAxIl0pCi0tPT4gMjA2ICAgICMgICAgfGEoKTsKK1BBVVNFUyBBVDogMjA2
OjAKKyAgICAyMDMgICAgCisgICAgMjA0ICAgIGEoKSwKKyAgICAyMDUgICAgYigpLAorLT0+IDIw
NiAgICB8YygpOwogICAgIDIwNyAgICAKLSAgICAyMDggICAgaWYgKFN0cmluZy5yYXdgdGVzdGAp
CisgICAgMjA4ICAgIGlmIChvMS5wMSkKICAgICAyMDkgICAgICAgIGEoKTsKIAogCiBJTlNFUlRJ
TkcgQVQ6IDIwNzowCiBQQVVTRVMgQVQ6IDIwODo0Ci0gICAgMjA0ICAgIAotICAgIDIwNSAgICBp
ZiAobzFbInAxIl0pCi0gICAgMjA2ICAgICAgICBhKCk7CisgICAgMjA0ICAgIGEoKSwKKyAgICAy
MDUgICAgYigpLAorICAgIDIwNiAgICBjKCk7CiAgLT4gMjA3ICAgICMKLSA9PiAyMDggICAgaWYg
KHxTdHJpbmcucmF3YHRlc3RgKQorID0+IDIwOCAgICBpZiAofG8xLnAxKQogICAgIDIwOSAgICAg
ICAgYSgpOwogICAgIDIxMCAgICAKKyAgICAyMTEgICAgaWYgKG8xWyJwMSJdKQogCiAKIElOU0VS
VElORyBBVDogMjA4OjAKIFBBVVNFUyBBVDogMjA4OjQKLSAgICAyMDUgICAgaWYgKG8xWyJwMSJd
KQotICAgIDIwNiAgICAgICAgYSgpOworICAgIDIwNSAgICBiKCksCisgICAgMjA2ICAgIGMoKTsK
ICAgICAyMDcgICAgCi0tPT4gMjA4ICAgICNpZiAofFN0cmluZy5yYXdgdGVzdGApCistPT4gMjA4
ICAgICNpZiAofG8xLnAxKQogICAgIDIwOSAgICAgICAgYSgpOwogICAgIDIxMCAgICAKKyAgICAy
MTEgICAgaWYgKG8xWyJwMSJdKQogCiAKIElOU0VSVElORyBBVDogMjA5OjAKIFBBVVNFUyBBVDog
MjA5OjQKLSAgICAyMDYgICAgICAgIGEoKTsKKyAgICAyMDYgICAgYygpOwogICAgIDIwNyAgICAK
LSAgICAyMDggICAgaWYgKFN0cmluZy5yYXdgdGVzdGApCisgICAgMjA4ICAgIGlmIChvMS5wMSkK
IC09PiAyMDkgICAgIyAgICB8YSgpOwogICAgIDIxMCAgICAKKyAgICAyMTEgICAgaWYgKG8xWyJw
MSJdKQorICAgIDIxMiAgICAgICAgYSgpOwogCiAKIElOU0VSVElORyBBVDogMjEwOjAKK1BBVVNF
UyBBVDogMjExOjQKKyAgICAyMDcgICAgCisgICAgMjA4ICAgIGlmIChvMS5wMSkKKyAgICAyMDkg
ICAgICAgIGEoKTsKKyAtPiAyMTAgICAgIworID0+IDIxMSAgICBpZiAofG8xWyJwMSJdKQorICAg
IDIxMiAgICAgICAgYSgpOworICAgIDIxMyAgICAKKyAgICAyMTQgICAgaWYgKFN0cmluZy5yYXdg
dGVzdGApCisKKworSU5TRVJUSU5HIEFUOiAyMTE6MAorUEFVU0VTIEFUOiAyMTE6NAorICAgIDIw
OCAgICBpZiAobzEucDEpCisgICAgMjA5ICAgICAgICBhKCk7CisgICAgMjEwICAgIAorLT0+IDIx
MSAgICAjaWYgKHxvMVsicDEiXSkKKyAgICAyMTIgICAgICAgIGEoKTsKKyAgICAyMTMgICAgCisg
ICAgMjE0ICAgIGlmIChTdHJpbmcucmF3YHRlc3RgKQorCisKK0lOU0VSVElORyBBVDogMjEyOjAK
K1BBVVNFUyBBVDogMjEyOjQKKyAgICAyMDkgICAgICAgIGEoKTsKKyAgICAyMTAgICAgCisgICAg
MjExICAgIGlmIChvMVsicDEiXSkKKy09PiAyMTIgICAgIyAgICB8YSgpOworICAgIDIxMyAgICAK
KyAgICAyMTQgICAgaWYgKFN0cmluZy5yYXdgdGVzdGApCisgICAgMjE1ICAgICAgICBhKCk7CisK
KworSU5TRVJUSU5HIEFUOiAyMTM6MAorUEFVU0VTIEFUOiAyMTQ6NAorICAgIDIxMCAgICAKKyAg
ICAyMTEgICAgaWYgKG8xWyJwMSJdKQorICAgIDIxMiAgICAgICAgYSgpOworIC0+IDIxMyAgICAj
CisgPT4gMjE0ICAgIGlmICh8U3RyaW5nLnJhd2B0ZXN0YCkKKyAgICAyMTUgICAgICAgIGEoKTsK
KyAgICAyMTYgICAgCisKKworSU5TRVJUSU5HIEFUOiAyMTQ6MAorUEFVU0VTIEFUOiAyMTQ6NAor
ICAgIDIxMSAgICBpZiAobzFbInAxIl0pCisgICAgMjEyICAgICAgICBhKCk7CisgICAgMjEzICAg
IAorLT0+IDIxNCAgICAjaWYgKHxTdHJpbmcucmF3YHRlc3RgKQorICAgIDIxNSAgICAgICAgYSgp
OworICAgIDIxNiAgICAKKworCitJTlNFUlRJTkcgQVQ6IDIxNTowCitQQVVTRVMgQVQ6IDIxNTo0
CisgICAgMjEyICAgICAgICBhKCk7CisgICAgMjEzICAgIAorICAgIDIxNCAgICBpZiAoU3RyaW5n
LnJhd2B0ZXN0YCkKKy09PiAyMTUgICAgIyAgICB8YSgpOworICAgIDIxNiAgICAKKworCitJTlNF
UlRJTkcgQVQ6IDIxNjowCiBQUk9EVUNFUzogQ291bGQgbm90IHJlc29sdmUgYnJlYWtwb2ludAog
CiAtLSBSdW5uaW5nIHRlc3QgY2FzZTogRGVidWdnZXIucmVzb2x2ZWRCcmVha3BvaW50LmR1bXBF
YWNoTGluZS5GdW5jdGlvbnMKQEAgLTM1MDYsOCArMzU3MCw4IEBAIFBBVVNFUyBBVDogNDI6MAog
ICAgICA0MSAgICAgICAgZnVuY3Rpb24gaW5uZXIyKCkgeyB2YXIgejsgfQogID0+ICA0MiAgICB8
fQogICAgICA0MyAgICAKLSAgICAgNDQgICAgKGZ1bmN0aW9uKCkgewotICAgICA0NSAgICAgICAg
dmFyIHg7CisgICAgIDQ0ICAgIGZ1bmN0aW9uIGNvbW1hT25lTGluZSgpIHsKKyAgICAgNDUgICAg
ICAgIGlubGluZSgpLCBpbmxpbmUoKSwgaW5saW5lKCk7CiAKIAogSU5TRVJUSU5HIEFUOiA0MDow
CkBAIC0zNTI5LDcgKzM1OTMsNyBAQCBQQVVTRVMgQVQ6IDQxOjI0CiAtPT4gIDQxICAgICMgICAg
ZnVuY3Rpb24gaW5uZXIyKCkgeyB8dmFyIHo7IH0KICAgICAgNDIgICAgfQogICAgICA0MyAgICAK
LSAgICAgNDQgICAgKGZ1bmN0aW9uKCkgeworICAgICA0NCAgICBmdW5jdGlvbiBjb21tYU9uZUxp
bmUoKSB7CiAKIAogSU5TRVJUSU5HIEFUOiA0MjowCkBAIC0zNTM5LDkxMyArMzYwMywxMDQzIEBA
IFBBVVNFUyBBVDogNDI6MAogICAgICA0MSAgICAgICAgZnVuY3Rpb24gaW5uZXIyKCkgeyB2YXIg
ejsgfQogLT0+ICA0MiAgICB8fQogICAgICA0MyAgICAKLSAgICAgNDQgICAgKGZ1bmN0aW9uKCkg
ewotICAgICA0NSAgICAgICAgdmFyIHg7CisgICAgIDQ0ICAgIGZ1bmN0aW9uIGNvbW1hT25lTGlu
ZSgpIHsKKyAgICAgNDUgICAgICAgIGlubGluZSgpLCBpbmxpbmUoKSwgaW5saW5lKCk7CiAKIAog
SU5TRVJUSU5HIEFUOiA0MzowCi1QQVVTRVMgQVQ6IDQ0OjAKK1BBVVNFUyBBVDogNTQ6MAogICAg
ICA0MCAgICAgICAgZnVuY3Rpb24gaW5uZXIxKCkgeyB2YXIgeTsgfQogICAgICA0MSAgICAgICAg
ZnVuY3Rpb24gaW5uZXIyKCkgeyB2YXIgejsgfQogICAgICA0MiAgICB9CiAgLT4gIDQzICAgICMK
LSA9PiAgNDQgICAgfChmdW5jdGlvbigpIHsKLSAgICAgNDUgICAgICAgIHZhciB4OwotICAgICA0
NiAgICB9KSgpOworICAgICA0NCAgICBmdW5jdGlvbiBjb21tYU9uZUxpbmUoKSB7CisgICAgIDQ1
ICAgICAgICBpbmxpbmUoKSwgaW5saW5lKCksIGlubGluZSgpOworICAgICA0NiAgICB9CiAgICAg
IDQ3ICAgIAorICAgICA0OCAgICBmdW5jdGlvbiBjb21tYU11bHRpTGluZSgpIHsKKyAgICAgNDkg
ICAgICAgIGlubGluZSgpLAorICAgICA1MCAgICAgICAgaW5saW5lKCksCisgICAgIDUxICAgICAg
ICBpbmxpbmUoKTsKKyAgICAgNTIgICAgfQorICAgICA1MyAgICAKKyA9PiAgNTQgICAgfChmdW5j
dGlvbigpIHsKKyAgICAgNTUgICAgICAgIHZhciB4OworICAgICA1NiAgICB9KSgpOworICAgICA1
NyAgICAKIAogCiBJTlNFUlRJTkcgQVQ6IDQ0OjAKLVBBVVNFUyBBVDogNDQ6MAorUEFVU0VTIEFU
OiA0NTo0CiAgICAgIDQxICAgICAgICBmdW5jdGlvbiBpbm5lcjIoKSB7IHZhciB6OyB9CiAgICAg
IDQyICAgIH0KICAgICAgNDMgICAgCi0tPT4gIDQ0ICAgIHwoZnVuY3Rpb24oKSB7Ci0gICAgIDQ1
ICAgICAgICB2YXIgeDsKLSAgICAgNDYgICAgfSkoKTsKKyAtPiAgNDQgICAgI2Z1bmN0aW9uIGNv
bW1hT25lTGluZSgpIHsKKyA9PiAgNDUgICAgICAgIHxpbmxpbmUoKSwgaW5saW5lKCksIGlubGlu
ZSgpOworICAgICA0NiAgICB9CiAgICAgIDQ3ICAgIAorICAgICA0OCAgICBmdW5jdGlvbiBjb21t
YU11bHRpTGluZSgpIHsKIAogCiBJTlNFUlRJTkcgQVQ6IDQ1OjAKIFBBVVNFUyBBVDogNDU6NAog
ICAgICA0MiAgICB9CiAgICAgIDQzICAgIAotICAgICA0NCAgICAoZnVuY3Rpb24oKSB7Ci0tPT4g
IDQ1ICAgICMgICAgfHZhciB4OwotICAgICA0NiAgICB9KSgpOworICAgICA0NCAgICBmdW5jdGlv
biBjb21tYU9uZUxpbmUoKSB7CistPT4gIDQ1ICAgICMgICAgfGlubGluZSgpLCBpbmxpbmUoKSwg
aW5saW5lKCk7CisgICAgIDQ2ICAgIH0KICAgICAgNDcgICAgCi0gICAgIDQ4ICAgICgoKSA9PiB7
CisgICAgIDQ4ICAgIGZ1bmN0aW9uIGNvbW1hTXVsdGlMaW5lKCkgewogCiAKIElOU0VSVElORyBB
VDogNDY6MAogUEFVU0VTIEFUOiA0NjowCiAgICAgIDQzICAgIAotICAgICA0NCAgICAoZnVuY3Rp
b24oKSB7Ci0gICAgIDQ1ICAgICAgICB2YXIgeDsKLS09PiAgNDYgICAgfH0pKCk7CisgICAgIDQ0
ICAgIGZ1bmN0aW9uIGNvbW1hT25lTGluZSgpIHsKKyAgICAgNDUgICAgICAgIGlubGluZSgpLCBp
bmxpbmUoKSwgaW5saW5lKCk7CistPT4gIDQ2ICAgIHx9CiAgICAgIDQ3ICAgIAotICAgICA0OCAg
ICAoKCkgPT4gewotICAgICA0OSAgICAgICAgdmFyIHg7CisgICAgIDQ4ICAgIGZ1bmN0aW9uIGNv
bW1hTXVsdGlMaW5lKCkgeworICAgICA0OSAgICAgICAgaW5saW5lKCksCiAKIAogSU5TRVJUSU5H
IEFUOiA0NzowCi1QQVVTRVMgQVQ6IDQ4OjAKLSAgICAgNDQgICAgKGZ1bmN0aW9uKCkgewotICAg
ICA0NSAgICAgICAgdmFyIHg7Ci0gICAgIDQ2ICAgIH0pKCk7CitQQVVTRVMgQVQ6IDU0OjAKKyAg
ICAgNDQgICAgZnVuY3Rpb24gY29tbWFPbmVMaW5lKCkgeworICAgICA0NSAgICAgICAgaW5saW5l
KCksIGlubGluZSgpLCBpbmxpbmUoKTsKKyAgICAgNDYgICAgfQogIC0+ICA0NyAgICAjCi0gPT4g
IDQ4ICAgIHwoKCkgPT4gewotICAgICA0OSAgICAgICAgdmFyIHg7Ci0gICAgIDUwICAgIH0pOwot
ICAgICA1MSAgICAKKyAgICAgNDggICAgZnVuY3Rpb24gY29tbWFNdWx0aUxpbmUoKSB7CisgICAg
IDQ5ICAgICAgICBpbmxpbmUoKSwKKyAgICAgNTAgICAgICAgIGlubGluZSgpLAorICAgICA1MSAg
ICAgICAgaW5saW5lKCk7CisgICAgIDUyICAgIH0KKyAgICAgNTMgICAgCisgPT4gIDU0ICAgIHwo
ZnVuY3Rpb24oKSB7CisgICAgIDU1ICAgICAgICB2YXIgeDsKKyAgICAgNTYgICAgfSkoKTsKKyAg
ICAgNTcgICAgCiAKIAogSU5TRVJUSU5HIEFUOiA0ODowCi1QQVVTRVMgQVQ6IDQ4OjAKLSAgICAg
NDUgICAgICAgIHZhciB4OwotICAgICA0NiAgICB9KSgpOworUEFVU0VTIEFUOiA0OTo0CisgICAg
IDQ1ICAgICAgICBpbmxpbmUoKSwgaW5saW5lKCksIGlubGluZSgpOworICAgICA0NiAgICB9CiAg
ICAgIDQ3ICAgIAotLT0+ICA0OCAgICB8KCgpID0+IHsKLSAgICAgNDkgICAgICAgIHZhciB4Owot
ICAgICA1MCAgICB9KTsKLSAgICAgNTEgICAgCisgLT4gIDQ4ICAgICNmdW5jdGlvbiBjb21tYU11
bHRpTGluZSgpIHsKKyA9PiAgNDkgICAgICAgIHxpbmxpbmUoKSwKKyAgICAgNTAgICAgICAgIGlu
bGluZSgpLAorICAgICA1MSAgICAgICAgaW5saW5lKCk7CisgICAgIDUyICAgIH0KIAogCiBJTlNF
UlRJTkcgQVQ6IDQ5OjAKIFBBVVNFUyBBVDogNDk6NAotICAgICA0NiAgICB9KSgpOworICAgICA0
NiAgICB9CiAgICAgIDQ3ICAgIAotICAgICA0OCAgICAoKCkgPT4gewotLT0+ICA0OSAgICAjICAg
IHx2YXIgeDsKLSAgICAgNTAgICAgfSk7Ci0gICAgIDUxICAgIAotICAgICA1MiAgICBmdW5jdGlv
biogZ2VuZXJhdG9yKCkgeworICAgICA0OCAgICBmdW5jdGlvbiBjb21tYU11bHRpTGluZSgpIHsK
Ky09PiAgNDkgICAgIyAgICB8aW5saW5lKCksCisgICAgIDUwICAgICAgICBpbmxpbmUoKSwKKyAg
ICAgNTEgICAgICAgIGlubGluZSgpOworICAgICA1MiAgICB9CiAKIAogSU5TRVJUSU5HIEFUOiA1
MDowCi1QQVVTRVMgQVQ6IDUwOjAKK1BBVVNFUyBBVDogNTA6NAogICAgICA0NyAgICAKLSAgICAg
NDggICAgKCgpID0+IHsKLSAgICAgNDkgICAgICAgIHZhciB4OwotLT0+ICA1MCAgICB8fSk7Ci0g
ICAgIDUxICAgIAotICAgICA1MiAgICBmdW5jdGlvbiogZ2VuZXJhdG9yKCkgewotICAgICA1MyAg
ICAgICAgdmFyIHg7CisgICAgIDQ4ICAgIGZ1bmN0aW9uIGNvbW1hTXVsdGlMaW5lKCkgeworICAg
ICA0OSAgICAgICAgaW5saW5lKCksCistPT4gIDUwICAgICMgICAgfGlubGluZSgpLAorICAgICA1
MSAgICAgICAgaW5saW5lKCk7CisgICAgIDUyICAgIH0KKyAgICAgNTMgICAgCiAKIAogSU5TRVJU
SU5HIEFUOiA1MTowCi1QQVVTRVMgQVQ6IDg3OjAKLSAgICAgNDggICAgKCgpID0+IHsKLSAgICAg
NDkgICAgICAgIHZhciB4OwotICAgICA1MCAgICB9KTsKLSAtPiAgNTEgICAgIwotICAgICA1MiAg
ICBmdW5jdGlvbiogZ2VuZXJhdG9yKCkgewotICAgICA1MyAgICAgICAgdmFyIHg7Ci0gICAgIDU0
ICAgIH0KLSAgICAgNTUgICAgCi0gICAgIDU2ICAgIGNsYXNzIENsYXNzIHsKLSAgICAgNTcgICAg
ICAgIHN0YXRpYyBzdGF0aWNNZXRob2QxKCkgewotICAgICA1OCAgICAgICAgICAgIHZhciB4Owot
ICAgICA1OSAgICAgICAgfQotICAgICA2MCAgICAgICAgc3RhdGljIHN0YXRpY01ldGhvZDIoKQot
ICAgICA2MSAgICAgICAgewotICAgICA2MiAgICAgICAgICAgIHZhciB4OwotICAgICA2MyAgICAg
ICAgfQotICAgICA2NCAgICAgICAgbWV0aG9kMSgpIHsKLSAgICAgNjUgICAgICAgICAgICB2YXIg
eDsKLSAgICAgNjYgICAgICAgIH0KLSAgICAgNjcgICAgICAgIG1ldGhvZDIoKQotICAgICA2OCAg
ICAgICAgewotICAgICA2OSAgICAgICAgICAgIHZhciB4OwotICAgICA3MCAgICAgICAgfQotICAg
ICA3MSAgICAgICAgZ2V0IGdldHRlcjEoKSB7Ci0gICAgIDcyICAgICAgICAgICAgdmFyIHg7Ci0g
ICAgIDczICAgICAgICB9Ci0gICAgIDc0ICAgICAgICBnZXQgZ2V0dGVyMigpCi0gICAgIDc1ICAg
ICAgICB7Ci0gICAgIDc2ICAgICAgICAgICAgdmFyIHg7Ci0gICAgIDc3ICAgICAgICB9Ci0gICAg
IDc4ICAgICAgICBzZXQgc2V0dGVyMSh4KSB7Ci0gICAgIDc5ICAgICAgICAgICAgdmFyIHM7Ci0g
ICAgIDgwICAgICAgICB9Ci0gICAgIDgxICAgICAgICBzZXQgc2V0dGVyMih4KQotICAgICA4MiAg
ICAgICAgewotICAgICA4MyAgICAgICAgICAgIHZhciBzOwotICAgICA4NCAgICAgICAgfQotICAg
ICA4NSAgICB9Ci0gICAgIDg2ICAgIAotID0+ICA4NyAgICB8eCA9PiB4OwotICAgICA4OCAgICAo
KSA9PiAxOwotICAgICA4OSAgICAoeCkgPT4geDsKLSAgICAgOTAgICAgKHgpID0+IHsgeCB9Owor
UEFVU0VTIEFUOiA1MTo0CisgICAgIDQ4ICAgIGZ1bmN0aW9uIGNvbW1hTXVsdGlMaW5lKCkgewor
ICAgICA0OSAgICAgICAgaW5saW5lKCksCisgICAgIDUwICAgICAgICBpbmxpbmUoKSwKKy09PiAg
NTEgICAgIyAgICB8aW5saW5lKCk7CisgICAgIDUyICAgIH0KKyAgICAgNTMgICAgCisgICAgIDU0
ICAgIChmdW5jdGlvbigpIHsKIAogCiBJTlNFUlRJTkcgQVQ6IDUyOjAKLVBBVVNFUyBBVDogNTM6
NAotICAgICA0OSAgICAgICAgdmFyIHg7Ci0gICAgIDUwICAgIH0pOwotICAgICA1MSAgICAKLSAt
PiAgNTIgICAgI2Z1bmN0aW9uKiBnZW5lcmF0b3IoKSB7Ci0gPT4gIDUzICAgICAgICB8dmFyIHg7
Ci0gICAgIDU0ICAgIH0KLSAgICAgNTUgICAgCi0gICAgIDU2ICAgIGNsYXNzIENsYXNzIHsKK1BB
VVNFUyBBVDogNTI6MAorICAgICA0OSAgICAgICAgaW5saW5lKCksCisgICAgIDUwICAgICAgICBp
bmxpbmUoKSwKKyAgICAgNTEgICAgICAgIGlubGluZSgpOworLT0+ICA1MiAgICB8fQorICAgICA1
MyAgICAKKyAgICAgNTQgICAgKGZ1bmN0aW9uKCkgeworICAgICA1NSAgICAgICAgdmFyIHg7CiAK
IAogSU5TRVJUSU5HIEFUOiA1MzowCi1QQVVTRVMgQVQ6IDUzOjQKLSAgICAgNTAgICAgfSk7Ci0g
ICAgIDUxICAgIAotICAgICA1MiAgICBmdW5jdGlvbiogZ2VuZXJhdG9yKCkgewotLT0+ICA1MyAg
ICAjICAgIHx2YXIgeDsKLSAgICAgNTQgICAgfQotICAgICA1NSAgICAKLSAgICAgNTYgICAgY2xh
c3MgQ2xhc3MgeworUEFVU0VTIEFUOiA1NDowCisgICAgIDUwICAgICAgICBpbmxpbmUoKSwKKyAg
ICAgNTEgICAgICAgIGlubGluZSgpOworICAgICA1MiAgICB9CisgLT4gIDUzICAgICMKKyA9PiAg
NTQgICAgfChmdW5jdGlvbigpIHsKKyAgICAgNTUgICAgICAgIHZhciB4OworICAgICA1NiAgICB9
KSgpOworICAgICA1NyAgICAKIAogCiBJTlNFUlRJTkcgQVQ6IDU0OjAKIFBBVVNFUyBBVDogNTQ6
MAotICAgICA1MSAgICAKLSAgICAgNTIgICAgZnVuY3Rpb24qIGdlbmVyYXRvcigpIHsKLSAgICAg
NTMgICAgICAgIHZhciB4OwotLT0+ICA1NCAgICB8fQotICAgICA1NSAgICAKLSAgICAgNTYgICAg
Y2xhc3MgQ2xhc3MgewotICAgICA1NyAgICAgICAgc3RhdGljIHN0YXRpY01ldGhvZDEoKSB7Cisg
ICAgIDUxICAgICAgICBpbmxpbmUoKTsKKyAgICAgNTIgICAgfQorICAgICA1MyAgICAKKy09PiAg
NTQgICAgfChmdW5jdGlvbigpIHsKKyAgICAgNTUgICAgICAgIHZhciB4OworICAgICA1NiAgICB9
KSgpOworICAgICA1NyAgICAKIAogCiBJTlNFUlRJTkcgQVQ6IDU1OjAKLVBBVVNFUyBBVDogODc6
MAotICAgICA1MiAgICBmdW5jdGlvbiogZ2VuZXJhdG9yKCkgewotICAgICA1MyAgICAgICAgdmFy
IHg7Ci0gICAgIDU0ICAgIH0KLSAtPiAgNTUgICAgIwotICAgICA1NiAgICBjbGFzcyBDbGFzcyB7
Ci0gICAgIDU3ICAgICAgICBzdGF0aWMgc3RhdGljTWV0aG9kMSgpIHsKLSAgICAgNTggICAgICAg
ICAgICB2YXIgeDsKLSAgICAgNTkgICAgICAgIH0KLSAgICAgNjAgICAgICAgIHN0YXRpYyBzdGF0
aWNNZXRob2QyKCkKLSAgICAgNjEgICAgICAgIHsKLSAgICAgNjIgICAgICAgICAgICB2YXIgeDsK
LSAgICAgNjMgICAgICAgIH0KLSAgICAgNjQgICAgICAgIG1ldGhvZDEoKSB7Ci0gICAgIDY1ICAg
ICAgICAgICAgdmFyIHg7Ci0gICAgIDY2ICAgICAgICB9Ci0gICAgIDY3ICAgICAgICBtZXRob2Qy
KCkKLSAgICAgNjggICAgICAgIHsKLSAgICAgNjkgICAgICAgICAgICB2YXIgeDsKLSAgICAgNzAg
ICAgICAgIH0KLSAgICAgNzEgICAgICAgIGdldCBnZXR0ZXIxKCkgewotICAgICA3MiAgICAgICAg
ICAgIHZhciB4OwotICAgICA3MyAgICAgICAgfQotICAgICA3NCAgICAgICAgZ2V0IGdldHRlcjIo
KQotICAgICA3NSAgICAgICAgewotICAgICA3NiAgICAgICAgICAgIHZhciB4OwotICAgICA3NyAg
ICAgICAgfQotICAgICA3OCAgICAgICAgc2V0IHNldHRlcjEoeCkgewotICAgICA3OSAgICAgICAg
ICAgIHZhciBzOwotICAgICA4MCAgICAgICAgfQotICAgICA4MSAgICAgICAgc2V0IHNldHRlcjIo
eCkKLSAgICAgODIgICAgICAgIHsKLSAgICAgODMgICAgICAgICAgICB2YXIgczsKLSAgICAgODQg
ICAgICAgIH0KLSAgICAgODUgICAgfQotICAgICA4NiAgICAKLSA9PiAgODcgICAgfHggPT4geDsK
LSAgICAgODggICAgKCkgPT4gMTsKLSAgICAgODkgICAgKHgpID0+IHg7Ci0gICAgIDkwICAgICh4
KSA9PiB7IHggfTsKK1BBVVNFUyBBVDogNTU6NAorICAgICA1MiAgICB9CisgICAgIDUzICAgIAor
ICAgICA1NCAgICAoZnVuY3Rpb24oKSB7CistPT4gIDU1ICAgICMgICAgfHZhciB4OworICAgICA1
NiAgICB9KSgpOworICAgICA1NyAgICAKKyAgICAgNTggICAgKCgpID0+IHsKIAogCiBJTlNFUlRJ
TkcgQVQ6IDU2OjAKLVBBVVNFUyBBVDogODc6MAotICAgICA1MyAgICAgICAgdmFyIHg7Ci0gICAg
IDU0ICAgIH0KLSAgICAgNTUgICAgCi0gLT4gIDU2ICAgICNjbGFzcyBDbGFzcyB7Ci0gICAgIDU3
ICAgICAgICBzdGF0aWMgc3RhdGljTWV0aG9kMSgpIHsKLSAgICAgNTggICAgICAgICAgICB2YXIg
eDsKLSAgICAgNTkgICAgICAgIH0KLSAgICAgNjAgICAgICAgIHN0YXRpYyBzdGF0aWNNZXRob2Qy
KCkKLSAgICAgNjEgICAgICAgIHsKLSAgICAgNjIgICAgICAgICAgICB2YXIgeDsKLSAgICAgNjMg
ICAgICAgIH0KLSAgICAgNjQgICAgICAgIG1ldGhvZDEoKSB7Ci0gICAgIDY1ICAgICAgICAgICAg
dmFyIHg7Ci0gICAgIDY2ICAgICAgICB9Ci0gICAgIDY3ICAgICAgICBtZXRob2QyKCkKLSAgICAg
NjggICAgICAgIHsKLSAgICAgNjkgICAgICAgICAgICB2YXIgeDsKLSAgICAgNzAgICAgICAgIH0K
LSAgICAgNzEgICAgICAgIGdldCBnZXR0ZXIxKCkgewotICAgICA3MiAgICAgICAgICAgIHZhciB4
OwotICAgICA3MyAgICAgICAgfQotICAgICA3NCAgICAgICAgZ2V0IGdldHRlcjIoKQotICAgICA3
NSAgICAgICAgewotICAgICA3NiAgICAgICAgICAgIHZhciB4OwotICAgICA3NyAgICAgICAgfQot
ICAgICA3OCAgICAgICAgc2V0IHNldHRlcjEoeCkgewotICAgICA3OSAgICAgICAgICAgIHZhciBz
OwotICAgICA4MCAgICAgICAgfQotICAgICA4MSAgICAgICAgc2V0IHNldHRlcjIoeCkKLSAgICAg
ODIgICAgICAgIHsKLSAgICAgODMgICAgICAgICAgICB2YXIgczsKLSAgICAgODQgICAgICAgIH0K
LSAgICAgODUgICAgfQotICAgICA4NiAgICAKLSA9PiAgODcgICAgfHggPT4geDsKLSAgICAgODgg
ICAgKCkgPT4gMTsKLSAgICAgODkgICAgKHgpID0+IHg7Ci0gICAgIDkwICAgICh4KSA9PiB7IHgg
fTsKK1BBVVNFUyBBVDogNTY6MAorICAgICA1MyAgICAKKyAgICAgNTQgICAgKGZ1bmN0aW9uKCkg
eworICAgICA1NSAgICAgICAgdmFyIHg7CistPT4gIDU2ICAgIHx9KSgpOworICAgICA1NyAgICAK
KyAgICAgNTggICAgKCgpID0+IHsKKyAgICAgNTkgICAgICAgIHZhciB4OwogCiAKIElOU0VSVElO
RyBBVDogNTc6MAotUEFVU0VTIEFUOiA1ODo4Ci0gICAgIDU0ICAgIH0KLSAgICAgNTUgICAgCi0g
ICAgIDU2ICAgIGNsYXNzIENsYXNzIHsKLSAtPiAgNTcgICAgIyAgICBzdGF0aWMgc3RhdGljTWV0
aG9kMSgpIHsKLSA9PiAgNTggICAgICAgICAgICB8dmFyIHg7Ci0gICAgIDU5ICAgICAgICB9Ci0g
ICAgIDYwICAgICAgICBzdGF0aWMgc3RhdGljTWV0aG9kMigpCi0gICAgIDYxICAgICAgICB7CitQ
QVVTRVMgQVQ6IDU4OjAKKyAgICAgNTQgICAgKGZ1bmN0aW9uKCkgeworICAgICA1NSAgICAgICAg
dmFyIHg7CisgICAgIDU2ICAgIH0pKCk7CisgLT4gIDU3ICAgICMKKyA9PiAgNTggICAgfCgoKSA9
PiB7CisgICAgIDU5ICAgICAgICB2YXIgeDsKKyAgICAgNjAgICAgfSk7CisgICAgIDYxICAgIAog
CiAKIElOU0VSVElORyBBVDogNTg6MAotUEFVU0VTIEFUOiA1ODo4Ci0gICAgIDU1ICAgIAotICAg
ICA1NiAgICBjbGFzcyBDbGFzcyB7Ci0gICAgIDU3ICAgICAgICBzdGF0aWMgc3RhdGljTWV0aG9k
MSgpIHsKLS09PiAgNTggICAgIyAgICAgICAgfHZhciB4OwotICAgICA1OSAgICAgICAgfQotICAg
ICA2MCAgICAgICAgc3RhdGljIHN0YXRpY01ldGhvZDIoKQotICAgICA2MSAgICAgICAgeworUEFV
U0VTIEFUOiA1ODowCisgICAgIDU1ICAgICAgICB2YXIgeDsKKyAgICAgNTYgICAgfSkoKTsKKyAg
ICAgNTcgICAgCistPT4gIDU4ICAgIHwoKCkgPT4geworICAgICA1OSAgICAgICAgdmFyIHg7Cisg
ICAgIDYwICAgIH0pOworICAgICA2MSAgICAKIAogCiBJTlNFUlRJTkcgQVQ6IDU5OjAKIFBBVVNF
UyBBVDogNTk6NAotICAgICA1NiAgICBjbGFzcyBDbGFzcyB7Ci0gICAgIDU3ICAgICAgICBzdGF0
aWMgc3RhdGljTWV0aG9kMSgpIHsKLSAgICAgNTggICAgICAgICAgICB2YXIgeDsKLS09PiAgNTkg
ICAgIyAgICB8fQotICAgICA2MCAgICAgICAgc3RhdGljIHN0YXRpY01ldGhvZDIoKQotICAgICA2
MSAgICAgICAgewotICAgICA2MiAgICAgICAgICAgIHZhciB4OworICAgICA1NiAgICB9KSgpOwor
ICAgICA1NyAgICAKKyAgICAgNTggICAgKCgpID0+IHsKKy09PiAgNTkgICAgIyAgICB8dmFyIHg7
CisgICAgIDYwICAgIH0pOworICAgICA2MSAgICAKKyAgICAgNjIgICAgZnVuY3Rpb24qIGdlbmVy
YXRvcigpIHsKIAogCiBJTlNFUlRJTkcgQVQ6IDYwOjAKLVBBVVNFUyBBVDogNjI6OAotICAgICA1
NyAgICAgICAgc3RhdGljIHN0YXRpY01ldGhvZDEoKSB7Ci0gICAgIDU4ICAgICAgICAgICAgdmFy
IHg7Ci0gICAgIDU5ICAgICAgICB9Ci0gLT4gIDYwICAgICMgICAgc3RhdGljIHN0YXRpY01ldGhv
ZDIoKQotICAgICA2MSAgICAgICAgewotID0+ICA2MiAgICAgICAgICAgIHx2YXIgeDsKLSAgICAg
NjMgICAgICAgIH0KLSAgICAgNjQgICAgICAgIG1ldGhvZDEoKSB7Ci0gICAgIDY1ICAgICAgICAg
ICAgdmFyIHg7CitQQVVTRVMgQVQ6IDYwOjAKKyAgICAgNTcgICAgCisgICAgIDU4ICAgICgoKSA9
PiB7CisgICAgIDU5ICAgICAgICB2YXIgeDsKKy09PiAgNjAgICAgfH0pOworICAgICA2MSAgICAK
KyAgICAgNjIgICAgZnVuY3Rpb24qIGdlbmVyYXRvcigpIHsKKyAgICAgNjMgICAgICAgIHZhciB4
OwogCiAKIElOU0VSVElORyBBVDogNjE6MAotUEFVU0VTIEFUOiA2Mjo4Ci0gICAgIDU4ICAgICAg
ICAgICAgdmFyIHg7Ci0gICAgIDU5ICAgICAgICB9Ci0gICAgIDYwICAgICAgICBzdGF0aWMgc3Rh
dGljTWV0aG9kMigpCi0gLT4gIDYxICAgICMgICAgewotID0+ICA2MiAgICAgICAgICAgIHx2YXIg
eDsKLSAgICAgNjMgICAgICAgIH0KLSAgICAgNjQgICAgICAgIG1ldGhvZDEoKSB7Ci0gICAgIDY1
ICAgICAgICAgICAgdmFyIHg7CitQQVVTRVMgQVQ6IDk3OjAKKyAgICAgNTggICAgKCgpID0+IHsK
KyAgICAgNTkgICAgICAgIHZhciB4OworICAgICA2MCAgICB9KTsKKyAtPiAgNjEgICAgIworICAg
ICA2MiAgICBmdW5jdGlvbiogZ2VuZXJhdG9yKCkgeworICAgICA2MyAgICAgICAgdmFyIHg7Cisg
ICAgIDY0ICAgIH0KKyAgICAgNjUgICAgCisgICAgIDY2ICAgIGNsYXNzIENsYXNzIHsKKyAgICAg
NjcgICAgICAgIHN0YXRpYyBzdGF0aWNNZXRob2QxKCkgeworICAgICA2OCAgICAgICAgICAgIHZh
ciB4OworICAgICA2OSAgICAgICAgfQorICAgICA3MCAgICAgICAgc3RhdGljIHN0YXRpY01ldGhv
ZDIoKQorICAgICA3MSAgICAgICAgeworICAgICA3MiAgICAgICAgICAgIHZhciB4OworICAgICA3
MyAgICAgICAgfQorICAgICA3NCAgICAgICAgbWV0aG9kMSgpIHsKKyAgICAgNzUgICAgICAgICAg
ICB2YXIgeDsKKyAgICAgNzYgICAgICAgIH0KKyAgICAgNzcgICAgICAgIG1ldGhvZDIoKQorICAg
ICA3OCAgICAgICAgeworICAgICA3OSAgICAgICAgICAgIHZhciB4OworICAgICA4MCAgICAgICAg
fQorICAgICA4MSAgICAgICAgZ2V0IGdldHRlcjEoKSB7CisgICAgIDgyICAgICAgICAgICAgdmFy
IHg7CisgICAgIDgzICAgICAgICB9CisgICAgIDg0ICAgICAgICBnZXQgZ2V0dGVyMigpCisgICAg
IDg1ICAgICAgICB7CisgICAgIDg2ICAgICAgICAgICAgdmFyIHg7CisgICAgIDg3ICAgICAgICB9
CisgICAgIDg4ICAgICAgICBzZXQgc2V0dGVyMSh4KSB7CisgICAgIDg5ICAgICAgICAgICAgdmFy
IHM7CisgICAgIDkwICAgICAgICB9CisgICAgIDkxICAgICAgICBzZXQgc2V0dGVyMih4KQorICAg
ICA5MiAgICAgICAgeworICAgICA5MyAgICAgICAgICAgIHZhciBzOworICAgICA5NCAgICAgICAg
fQorICAgICA5NSAgICB9CisgICAgIDk2ICAgIAorID0+ICA5NyAgICB8eCA9PiB4OworICAgICA5
OCAgICAoKSA9PiAxOworICAgICA5OSAgICAoeCkgPT4geDsKKyAgICAxMDAgICAgKHgpID0+IHsg
eCB9OwogCiAKIElOU0VSVElORyBBVDogNjI6MAotUEFVU0VTIEFUOiA2Mjo4Ci0gICAgIDU5ICAg
ICAgICB9Ci0gICAgIDYwICAgICAgICBzdGF0aWMgc3RhdGljTWV0aG9kMigpCi0gICAgIDYxICAg
ICAgICB7Ci0tPT4gIDYyICAgICMgICAgICAgIHx2YXIgeDsKLSAgICAgNjMgICAgICAgIH0KLSAg
ICAgNjQgICAgICAgIG1ldGhvZDEoKSB7Ci0gICAgIDY1ICAgICAgICAgICAgdmFyIHg7CitQQVVT
RVMgQVQ6IDYzOjQKKyAgICAgNTkgICAgICAgIHZhciB4OworICAgICA2MCAgICB9KTsKKyAgICAg
NjEgICAgCisgLT4gIDYyICAgICNmdW5jdGlvbiogZ2VuZXJhdG9yKCkgeworID0+ICA2MyAgICAg
ICAgfHZhciB4OworICAgICA2NCAgICB9CisgICAgIDY1ICAgIAorICAgICA2NiAgICBjbGFzcyBD
bGFzcyB7CiAKIAogSU5TRVJUSU5HIEFUOiA2MzowCiBQQVVTRVMgQVQ6IDYzOjQKLSAgICAgNjAg
ICAgICAgIHN0YXRpYyBzdGF0aWNNZXRob2QyKCkKLSAgICAgNjEgICAgICAgIHsKLSAgICAgNjIg
ICAgICAgICAgICB2YXIgeDsKLS09PiAgNjMgICAgIyAgICB8fQotICAgICA2NCAgICAgICAgbWV0
aG9kMSgpIHsKLSAgICAgNjUgICAgICAgICAgICB2YXIgeDsKLSAgICAgNjYgICAgICAgIH0KKyAg
ICAgNjAgICAgfSk7CisgICAgIDYxICAgIAorICAgICA2MiAgICBmdW5jdGlvbiogZ2VuZXJhdG9y
KCkgeworLT0+ICA2MyAgICAjICAgIHx2YXIgeDsKKyAgICAgNjQgICAgfQorICAgICA2NSAgICAK
KyAgICAgNjYgICAgY2xhc3MgQ2xhc3MgewogCiAKIElOU0VSVElORyBBVDogNjQ6MAotUEFVU0VT
IEFUOiA2NTo4Ci0gICAgIDYxICAgICAgICB7Ci0gICAgIDYyICAgICAgICAgICAgdmFyIHg7Ci0g
ICAgIDYzICAgICAgICB9Ci0gLT4gIDY0ICAgICMgICAgbWV0aG9kMSgpIHsKLSA9PiAgNjUgICAg
ICAgICAgICB8dmFyIHg7Ci0gICAgIDY2ICAgICAgICB9Ci0gICAgIDY3ICAgICAgICBtZXRob2Qy
KCkKLSAgICAgNjggICAgICAgIHsKK1BBVVNFUyBBVDogNjQ6MAorICAgICA2MSAgICAKKyAgICAg
NjIgICAgZnVuY3Rpb24qIGdlbmVyYXRvcigpIHsKKyAgICAgNjMgICAgICAgIHZhciB4OworLT0+
ICA2NCAgICB8fQorICAgICA2NSAgICAKKyAgICAgNjYgICAgY2xhc3MgQ2xhc3MgeworICAgICA2
NyAgICAgICAgc3RhdGljIHN0YXRpY01ldGhvZDEoKSB7CiAKIAogSU5TRVJUSU5HIEFUOiA2NTow
Ci1QQVVTRVMgQVQ6IDY1OjgKLSAgICAgNjIgICAgICAgICAgICB2YXIgeDsKLSAgICAgNjMgICAg
ICAgIH0KLSAgICAgNjQgICAgICAgIG1ldGhvZDEoKSB7Ci0tPT4gIDY1ICAgICMgICAgICAgIHx2
YXIgeDsKLSAgICAgNjYgICAgICAgIH0KLSAgICAgNjcgICAgICAgIG1ldGhvZDIoKQotICAgICA2
OCAgICAgICAgeworUEFVU0VTIEFUOiA5NzowCisgICAgIDYyICAgIGZ1bmN0aW9uKiBnZW5lcmF0
b3IoKSB7CisgICAgIDYzICAgICAgICB2YXIgeDsKKyAgICAgNjQgICAgfQorIC0+ICA2NSAgICAj
CisgICAgIDY2ICAgIGNsYXNzIENsYXNzIHsKKyAgICAgNjcgICAgICAgIHN0YXRpYyBzdGF0aWNN
ZXRob2QxKCkgeworICAgICA2OCAgICAgICAgICAgIHZhciB4OworICAgICA2OSAgICAgICAgfQor
ICAgICA3MCAgICAgICAgc3RhdGljIHN0YXRpY01ldGhvZDIoKQorICAgICA3MSAgICAgICAgewor
ICAgICA3MiAgICAgICAgICAgIHZhciB4OworICAgICA3MyAgICAgICAgfQorICAgICA3NCAgICAg
ICAgbWV0aG9kMSgpIHsKKyAgICAgNzUgICAgICAgICAgICB2YXIgeDsKKyAgICAgNzYgICAgICAg
IH0KKyAgICAgNzcgICAgICAgIG1ldGhvZDIoKQorICAgICA3OCAgICAgICAgeworICAgICA3OSAg
ICAgICAgICAgIHZhciB4OworICAgICA4MCAgICAgICAgfQorICAgICA4MSAgICAgICAgZ2V0IGdl
dHRlcjEoKSB7CisgICAgIDgyICAgICAgICAgICAgdmFyIHg7CisgICAgIDgzICAgICAgICB9Cisg
ICAgIDg0ICAgICAgICBnZXQgZ2V0dGVyMigpCisgICAgIDg1ICAgICAgICB7CisgICAgIDg2ICAg
ICAgICAgICAgdmFyIHg7CisgICAgIDg3ICAgICAgICB9CisgICAgIDg4ICAgICAgICBzZXQgc2V0
dGVyMSh4KSB7CisgICAgIDg5ICAgICAgICAgICAgdmFyIHM7CisgICAgIDkwICAgICAgICB9Cisg
ICAgIDkxICAgICAgICBzZXQgc2V0dGVyMih4KQorICAgICA5MiAgICAgICAgeworICAgICA5MyAg
ICAgICAgICAgIHZhciBzOworICAgICA5NCAgICAgICAgfQorICAgICA5NSAgICB9CisgICAgIDk2
ICAgIAorID0+ICA5NyAgICB8eCA9PiB4OworICAgICA5OCAgICAoKSA9PiAxOworICAgICA5OSAg
ICAoeCkgPT4geDsKKyAgICAxMDAgICAgKHgpID0+IHsgeCB9OwogCiAKIElOU0VSVElORyBBVDog
NjY6MAotUEFVU0VTIEFUOiA2Njo0Ci0gICAgIDYzICAgICAgICB9Ci0gICAgIDY0ICAgICAgICBt
ZXRob2QxKCkgewotICAgICA2NSAgICAgICAgICAgIHZhciB4OwotLT0+ICA2NiAgICAjICAgIHx9
Ci0gICAgIDY3ICAgICAgICBtZXRob2QyKCkKLSAgICAgNjggICAgICAgIHsKLSAgICAgNjkgICAg
ICAgICAgICB2YXIgeDsKK1BBVVNFUyBBVDogOTc6MAorICAgICA2MyAgICAgICAgdmFyIHg7Cisg
ICAgIDY0ICAgIH0KKyAgICAgNjUgICAgCisgLT4gIDY2ICAgICNjbGFzcyBDbGFzcyB7CisgICAg
IDY3ICAgICAgICBzdGF0aWMgc3RhdGljTWV0aG9kMSgpIHsKKyAgICAgNjggICAgICAgICAgICB2
YXIgeDsKKyAgICAgNjkgICAgICAgIH0KKyAgICAgNzAgICAgICAgIHN0YXRpYyBzdGF0aWNNZXRo
b2QyKCkKKyAgICAgNzEgICAgICAgIHsKKyAgICAgNzIgICAgICAgICAgICB2YXIgeDsKKyAgICAg
NzMgICAgICAgIH0KKyAgICAgNzQgICAgICAgIG1ldGhvZDEoKSB7CisgICAgIDc1ICAgICAgICAg
ICAgdmFyIHg7CisgICAgIDc2ICAgICAgICB9CisgICAgIDc3ICAgICAgICBtZXRob2QyKCkKKyAg
ICAgNzggICAgICAgIHsKKyAgICAgNzkgICAgICAgICAgICB2YXIgeDsKKyAgICAgODAgICAgICAg
IH0KKyAgICAgODEgICAgICAgIGdldCBnZXR0ZXIxKCkgeworICAgICA4MiAgICAgICAgICAgIHZh
ciB4OworICAgICA4MyAgICAgICAgfQorICAgICA4NCAgICAgICAgZ2V0IGdldHRlcjIoKQorICAg
ICA4NSAgICAgICAgeworICAgICA4NiAgICAgICAgICAgIHZhciB4OworICAgICA4NyAgICAgICAg
fQorICAgICA4OCAgICAgICAgc2V0IHNldHRlcjEoeCkgeworICAgICA4OSAgICAgICAgICAgIHZh
ciBzOworICAgICA5MCAgICAgICAgfQorICAgICA5MSAgICAgICAgc2V0IHNldHRlcjIoeCkKKyAg
ICAgOTIgICAgICAgIHsKKyAgICAgOTMgICAgICAgICAgICB2YXIgczsKKyAgICAgOTQgICAgICAg
IH0KKyAgICAgOTUgICAgfQorICAgICA5NiAgICAKKyA9PiAgOTcgICAgfHggPT4geDsKKyAgICAg
OTggICAgKCkgPT4gMTsKKyAgICAgOTkgICAgKHgpID0+IHg7CisgICAgMTAwICAgICh4KSA9PiB7
IHggfTsKIAogCiBJTlNFUlRJTkcgQVQ6IDY3OjAKLVBBVVNFUyBBVDogNjk6OAotICAgICA2NCAg
ICAgICAgbWV0aG9kMSgpIHsKLSAgICAgNjUgICAgICAgICAgICB2YXIgeDsKLSAgICAgNjYgICAg
ICAgIH0KLSAtPiAgNjcgICAgIyAgICBtZXRob2QyKCkKLSAgICAgNjggICAgICAgIHsKLSA9PiAg
NjkgICAgICAgICAgICB8dmFyIHg7Ci0gICAgIDcwICAgICAgICB9Ci0gICAgIDcxICAgICAgICBn
ZXQgZ2V0dGVyMSgpIHsKLSAgICAgNzIgICAgICAgICAgICB2YXIgeDsKK1BBVVNFUyBBVDogNjg6
OAorICAgICA2NCAgICB9CisgICAgIDY1ICAgIAorICAgICA2NiAgICBjbGFzcyBDbGFzcyB7Cisg
LT4gIDY3ICAgICMgICAgc3RhdGljIHN0YXRpY01ldGhvZDEoKSB7CisgPT4gIDY4ICAgICAgICAg
ICAgfHZhciB4OworICAgICA2OSAgICAgICAgfQorICAgICA3MCAgICAgICAgc3RhdGljIHN0YXRp
Y01ldGhvZDIoKQorICAgICA3MSAgICAgICAgewogCiAKIElOU0VSVElORyBBVDogNjg6MAotUEFV
U0VTIEFUOiA2OTo4Ci0gICAgIDY1ICAgICAgICAgICAgdmFyIHg7Ci0gICAgIDY2ICAgICAgICB9
Ci0gICAgIDY3ICAgICAgICBtZXRob2QyKCkKLSAtPiAgNjggICAgIyAgICB7Ci0gPT4gIDY5ICAg
ICAgICAgICAgfHZhciB4OwotICAgICA3MCAgICAgICAgfQotICAgICA3MSAgICAgICAgZ2V0IGdl
dHRlcjEoKSB7Ci0gICAgIDcyICAgICAgICAgICAgdmFyIHg7CitQQVVTRVMgQVQ6IDY4OjgKKyAg
ICAgNjUgICAgCisgICAgIDY2ICAgIGNsYXNzIENsYXNzIHsKKyAgICAgNjcgICAgICAgIHN0YXRp
YyBzdGF0aWNNZXRob2QxKCkgeworLT0+ICA2OCAgICAjICAgICAgICB8dmFyIHg7CisgICAgIDY5
ICAgICAgICB9CisgICAgIDcwICAgICAgICBzdGF0aWMgc3RhdGljTWV0aG9kMigpCisgICAgIDcx
ICAgICAgICB7CiAKIAogSU5TRVJUSU5HIEFUOiA2OTowCi1QQVVTRVMgQVQ6IDY5OjgKLSAgICAg
NjYgICAgICAgIH0KLSAgICAgNjcgICAgICAgIG1ldGhvZDIoKQotICAgICA2OCAgICAgICAgewot
LT0+ICA2OSAgICAjICAgICAgICB8dmFyIHg7Ci0gICAgIDcwICAgICAgICB9Ci0gICAgIDcxICAg
ICAgICBnZXQgZ2V0dGVyMSgpIHsKK1BBVVNFUyBBVDogNjk6NAorICAgICA2NiAgICBjbGFzcyBD
bGFzcyB7CisgICAgIDY3ICAgICAgICBzdGF0aWMgc3RhdGljTWV0aG9kMSgpIHsKKyAgICAgNjgg
ICAgICAgICAgICB2YXIgeDsKKy09PiAgNjkgICAgIyAgICB8fQorICAgICA3MCAgICAgICAgc3Rh
dGljIHN0YXRpY01ldGhvZDIoKQorICAgICA3MSAgICAgICAgewogICAgICA3MiAgICAgICAgICAg
IHZhciB4OwogCiAKIElOU0VSVElORyBBVDogNzA6MAotUEFVU0VTIEFUOiA3MDo0Ci0gICAgIDY3
ICAgICAgICBtZXRob2QyKCkKLSAgICAgNjggICAgICAgIHsKLSAgICAgNjkgICAgICAgICAgICB2
YXIgeDsKLS09PiAgNzAgICAgIyAgICB8fQotICAgICA3MSAgICAgICAgZ2V0IGdldHRlcjEoKSB7
Ci0gICAgIDcyICAgICAgICAgICAgdmFyIHg7CitQQVVTRVMgQVQ6IDcyOjgKKyAgICAgNjcgICAg
ICAgIHN0YXRpYyBzdGF0aWNNZXRob2QxKCkgeworICAgICA2OCAgICAgICAgICAgIHZhciB4Owor
ICAgICA2OSAgICAgICAgfQorIC0+ICA3MCAgICAjICAgIHN0YXRpYyBzdGF0aWNNZXRob2QyKCkK
KyAgICAgNzEgICAgICAgIHsKKyA9PiAgNzIgICAgICAgICAgICB8dmFyIHg7CiAgICAgIDczICAg
ICAgICB9CisgICAgIDc0ICAgICAgICBtZXRob2QxKCkgeworICAgICA3NSAgICAgICAgICAgIHZh
ciB4OwogCiAKIElOU0VSVElORyBBVDogNzE6MAogUEFVU0VTIEFUOiA3Mjo4Ci0gICAgIDY4ICAg
ICAgICB7Ci0gICAgIDY5ICAgICAgICAgICAgdmFyIHg7Ci0gICAgIDcwICAgICAgICB9Ci0gLT4g
IDcxICAgICMgICAgZ2V0IGdldHRlcjEoKSB7CisgICAgIDY4ICAgICAgICAgICAgdmFyIHg7Cisg
ICAgIDY5ICAgICAgICB9CisgICAgIDcwICAgICAgICBzdGF0aWMgc3RhdGljTWV0aG9kMigpCisg
LT4gIDcxICAgICMgICAgewogID0+ICA3MiAgICAgICAgICAgIHx2YXIgeDsKICAgICAgNzMgICAg
ICAgIH0KLSAgICAgNzQgICAgICAgIGdldCBnZXR0ZXIyKCkKLSAgICAgNzUgICAgICAgIHsKKyAg
ICAgNzQgICAgICAgIG1ldGhvZDEoKSB7CisgICAgIDc1ICAgICAgICAgICAgdmFyIHg7CiAKIAog
SU5TRVJUSU5HIEFUOiA3MjowCiBQQVVTRVMgQVQ6IDcyOjgKLSAgICAgNjkgICAgICAgICAgICB2
YXIgeDsKLSAgICAgNzAgICAgICAgIH0KLSAgICAgNzEgICAgICAgIGdldCBnZXR0ZXIxKCkgewor
ICAgICA2OSAgICAgICAgfQorICAgICA3MCAgICAgICAgc3RhdGljIHN0YXRpY01ldGhvZDIoKQor
ICAgICA3MSAgICAgICAgewogLT0+ICA3MiAgICAjICAgICAgICB8dmFyIHg7CiAgICAgIDczICAg
ICAgICB9Ci0gICAgIDc0ICAgICAgICBnZXQgZ2V0dGVyMigpCi0gICAgIDc1ICAgICAgICB7Cisg
ICAgIDc0ICAgICAgICBtZXRob2QxKCkgeworICAgICA3NSAgICAgICAgICAgIHZhciB4OwogCiAK
IElOU0VSVElORyBBVDogNzM6MAogUEFVU0VTIEFUOiA3Mzo0Ci0gICAgIDcwICAgICAgICB9Ci0g
ICAgIDcxICAgICAgICBnZXQgZ2V0dGVyMSgpIHsKKyAgICAgNzAgICAgICAgIHN0YXRpYyBzdGF0
aWNNZXRob2QyKCkKKyAgICAgNzEgICAgICAgIHsKICAgICAgNzIgICAgICAgICAgICB2YXIgeDsK
IC09PiAgNzMgICAgIyAgICB8fQotICAgICA3NCAgICAgICAgZ2V0IGdldHRlcjIoKQotICAgICA3
NSAgICAgICAgewotICAgICA3NiAgICAgICAgICAgIHZhciB4OworICAgICA3NCAgICAgICAgbWV0
aG9kMSgpIHsKKyAgICAgNzUgICAgICAgICAgICB2YXIgeDsKKyAgICAgNzYgICAgICAgIH0KIAog
CiBJTlNFUlRJTkcgQVQ6IDc0OjAKLVBBVVNFUyBBVDogNzY6OAotICAgICA3MSAgICAgICAgZ2V0
IGdldHRlcjEoKSB7CitQQVVTRVMgQVQ6IDc1OjgKKyAgICAgNzEgICAgICAgIHsKICAgICAgNzIg
ICAgICAgICAgICB2YXIgeDsKICAgICAgNzMgICAgICAgIH0KLSAtPiAgNzQgICAgIyAgICBnZXQg
Z2V0dGVyMigpCi0gICAgIDc1ICAgICAgICB7Ci0gPT4gIDc2ICAgICAgICAgICAgfHZhciB4Owot
ICAgICA3NyAgICAgICAgfQotICAgICA3OCAgICAgICAgc2V0IHNldHRlcjEoeCkgewotICAgICA3
OSAgICAgICAgICAgIHZhciBzOworIC0+ICA3NCAgICAjICAgIG1ldGhvZDEoKSB7CisgPT4gIDc1
ICAgICAgICAgICAgfHZhciB4OworICAgICA3NiAgICAgICAgfQorICAgICA3NyAgICAgICAgbWV0
aG9kMigpCisgICAgIDc4ICAgICAgICB7CiAKIAogSU5TRVJUSU5HIEFUOiA3NTowCi1QQVVTRVMg
QVQ6IDc2OjgKK1BBVVNFUyBBVDogNzU6OAogICAgICA3MiAgICAgICAgICAgIHZhciB4OwogICAg
ICA3MyAgICAgICAgfQotICAgICA3NCAgICAgICAgZ2V0IGdldHRlcjIoKQotIC0+ICA3NSAgICAj
ICAgIHsKLSA9PiAgNzYgICAgICAgICAgICB8dmFyIHg7Ci0gICAgIDc3ICAgICAgICB9Ci0gICAg
IDc4ICAgICAgICBzZXQgc2V0dGVyMSh4KSB7Ci0gICAgIDc5ICAgICAgICAgICAgdmFyIHM7Cisg
ICAgIDc0ICAgICAgICBtZXRob2QxKCkgeworLT0+ICA3NSAgICAjICAgICAgICB8dmFyIHg7Cisg
ICAgIDc2ICAgICAgICB9CisgICAgIDc3ICAgICAgICBtZXRob2QyKCkKKyAgICAgNzggICAgICAg
IHsKIAogCiBJTlNFUlRJTkcgQVQ6IDc2OjAKLVBBVVNFUyBBVDogNzY6OAorUEFVU0VTIEFUOiA3
Njo0CiAgICAgIDczICAgICAgICB9Ci0gICAgIDc0ICAgICAgICBnZXQgZ2V0dGVyMigpCi0gICAg
IDc1ICAgICAgICB7Ci0tPT4gIDc2ICAgICMgICAgICAgIHx2YXIgeDsKLSAgICAgNzcgICAgICAg
IH0KLSAgICAgNzggICAgICAgIHNldCBzZXR0ZXIxKHgpIHsKLSAgICAgNzkgICAgICAgICAgICB2
YXIgczsKKyAgICAgNzQgICAgICAgIG1ldGhvZDEoKSB7CisgICAgIDc1ICAgICAgICAgICAgdmFy
IHg7CistPT4gIDc2ICAgICMgICAgfH0KKyAgICAgNzcgICAgICAgIG1ldGhvZDIoKQorICAgICA3
OCAgICAgICAgeworICAgICA3OSAgICAgICAgICAgIHZhciB4OwogCiAKIElOU0VSVElORyBBVDog
Nzc6MAotUEFVU0VTIEFUOiA3Nzo0Ci0gICAgIDc0ICAgICAgICBnZXQgZ2V0dGVyMigpCi0gICAg
IDc1ICAgICAgICB7Ci0gICAgIDc2ICAgICAgICAgICAgdmFyIHg7Ci0tPT4gIDc3ICAgICMgICAg
fH0KLSAgICAgNzggICAgICAgIHNldCBzZXR0ZXIxKHgpIHsKLSAgICAgNzkgICAgICAgICAgICB2
YXIgczsKK1BBVVNFUyBBVDogNzk6OAorICAgICA3NCAgICAgICAgbWV0aG9kMSgpIHsKKyAgICAg
NzUgICAgICAgICAgICB2YXIgeDsKKyAgICAgNzYgICAgICAgIH0KKyAtPiAgNzcgICAgIyAgICBt
ZXRob2QyKCkKKyAgICAgNzggICAgICAgIHsKKyA9PiAgNzkgICAgICAgICAgICB8dmFyIHg7CiAg
ICAgIDgwICAgICAgICB9CisgICAgIDgxICAgICAgICBnZXQgZ2V0dGVyMSgpIHsKKyAgICAgODIg
ICAgICAgICAgICB2YXIgeDsKIAogCiBJTlNFUlRJTkcgQVQ6IDc4OjAKIFBBVVNFUyBBVDogNzk6
OAotICAgICA3NSAgICAgICAgewotICAgICA3NiAgICAgICAgICAgIHZhciB4OwotICAgICA3NyAg
ICAgICAgfQotIC0+ICA3OCAgICAjICAgIHNldCBzZXR0ZXIxKHgpIHsKLSA9PiAgNzkgICAgICAg
ICAgICB8dmFyIHM7CisgICAgIDc1ICAgICAgICAgICAgdmFyIHg7CisgICAgIDc2ICAgICAgICB9
CisgICAgIDc3ICAgICAgICBtZXRob2QyKCkKKyAtPiAgNzggICAgIyAgICB7CisgPT4gIDc5ICAg
ICAgICAgICAgfHZhciB4OwogICAgICA4MCAgICAgICAgfQotICAgICA4MSAgICAgICAgc2V0IHNl
dHRlcjIoeCkKLSAgICAgODIgICAgICAgIHsKKyAgICAgODEgICAgICAgIGdldCBnZXR0ZXIxKCkg
eworICAgICA4MiAgICAgICAgICAgIHZhciB4OwogCiAKIElOU0VSVElORyBBVDogNzk6MAogUEFV
U0VTIEFUOiA3OTo4Ci0gICAgIDc2ICAgICAgICAgICAgdmFyIHg7Ci0gICAgIDc3ICAgICAgICB9
Ci0gICAgIDc4ICAgICAgICBzZXQgc2V0dGVyMSh4KSB7Ci0tPT4gIDc5ICAgICMgICAgICAgIHx2
YXIgczsKKyAgICAgNzYgICAgICAgIH0KKyAgICAgNzcgICAgICAgIG1ldGhvZDIoKQorICAgICA3
OCAgICAgICAgeworLT0+ICA3OSAgICAjICAgICAgICB8dmFyIHg7CiAgICAgIDgwICAgICAgICB9
Ci0gICAgIDgxICAgICAgICBzZXQgc2V0dGVyMih4KQotICAgICA4MiAgICAgICAgeworICAgICA4
MSAgICAgICAgZ2V0IGdldHRlcjEoKSB7CisgICAgIDgyICAgICAgICAgICAgdmFyIHg7CiAKIAog
SU5TRVJUSU5HIEFUOiA4MDowCiBQQVVTRVMgQVQ6IDgwOjQKLSAgICAgNzcgICAgICAgIH0KLSAg
ICAgNzggICAgICAgIHNldCBzZXR0ZXIxKHgpIHsKLSAgICAgNzkgICAgICAgICAgICB2YXIgczsK
KyAgICAgNzcgICAgICAgIG1ldGhvZDIoKQorICAgICA3OCAgICAgICAgeworICAgICA3OSAgICAg
ICAgICAgIHZhciB4OwogLT0+ICA4MCAgICAjICAgIHx9Ci0gICAgIDgxICAgICAgICBzZXQgc2V0
dGVyMih4KQotICAgICA4MiAgICAgICAgewotICAgICA4MyAgICAgICAgICAgIHZhciBzOworICAg
ICA4MSAgICAgICAgZ2V0IGdldHRlcjEoKSB7CisgICAgIDgyICAgICAgICAgICAgdmFyIHg7Cisg
ICAgIDgzICAgICAgICB9CiAKIAogSU5TRVJUSU5HIEFUOiA4MTowCi1QQVVTRVMgQVQ6IDgzOjgK
LSAgICAgNzggICAgICAgIHNldCBzZXR0ZXIxKHgpIHsKLSAgICAgNzkgICAgICAgICAgICB2YXIg
czsKK1BBVVNFUyBBVDogODI6OAorICAgICA3OCAgICAgICAgeworICAgICA3OSAgICAgICAgICAg
IHZhciB4OwogICAgICA4MCAgICAgICAgfQotIC0+ICA4MSAgICAjICAgIHNldCBzZXR0ZXIyKHgp
Ci0gICAgIDgyICAgICAgICB7Ci0gPT4gIDgzICAgICAgICAgICAgfHZhciBzOwotICAgICA4NCAg
ICAgICAgfQotICAgICA4NSAgICB9Ci0gICAgIDg2ICAgIAorIC0+ICA4MSAgICAjICAgIGdldCBn
ZXR0ZXIxKCkgeworID0+ICA4MiAgICAgICAgICAgIHx2YXIgeDsKKyAgICAgODMgICAgICAgIH0K
KyAgICAgODQgICAgICAgIGdldCBnZXR0ZXIyKCkKKyAgICAgODUgICAgICAgIHsKIAogCiBJTlNF
UlRJTkcgQVQ6IDgyOjAKLVBBVVNFUyBBVDogODM6OAotICAgICA3OSAgICAgICAgICAgIHZhciBz
OworUEFVU0VTIEFUOiA4Mjo4CisgICAgIDc5ICAgICAgICAgICAgdmFyIHg7CiAgICAgIDgwICAg
ICAgICB9Ci0gICAgIDgxICAgICAgICBzZXQgc2V0dGVyMih4KQotIC0+ICA4MiAgICAjICAgIHsK
LSA9PiAgODMgICAgICAgICAgICB8dmFyIHM7Ci0gICAgIDg0ICAgICAgICB9Ci0gICAgIDg1ICAg
IH0KLSAgICAgODYgICAgCisgICAgIDgxICAgICAgICBnZXQgZ2V0dGVyMSgpIHsKKy09PiAgODIg
ICAgIyAgICAgICAgfHZhciB4OworICAgICA4MyAgICAgICAgfQorICAgICA4NCAgICAgICAgZ2V0
IGdldHRlcjIoKQorICAgICA4NSAgICAgICAgewogCiAKIElOU0VSVElORyBBVDogODM6MAotUEFV
U0VTIEFUOiA4Mzo4CitQQVVTRVMgQVQ6IDgzOjQKICAgICAgODAgICAgICAgIH0KLSAgICAgODEg
ICAgICAgIHNldCBzZXR0ZXIyKHgpCi0gICAgIDgyICAgICAgICB7Ci0tPT4gIDgzICAgICMgICAg
ICAgIHx2YXIgczsKLSAgICAgODQgICAgICAgIH0KLSAgICAgODUgICAgfQotICAgICA4NiAgICAK
KyAgICAgODEgICAgICAgIGdldCBnZXR0ZXIxKCkgeworICAgICA4MiAgICAgICAgICAgIHZhciB4
OworLT0+ICA4MyAgICAjICAgIHx9CisgICAgIDg0ICAgICAgICBnZXQgZ2V0dGVyMigpCisgICAg
IDg1ICAgICAgICB7CisgICAgIDg2ICAgICAgICAgICAgdmFyIHg7CiAKIAogSU5TRVJUSU5HIEFU
OiA4NDowCi1QQVVTRVMgQVQ6IDg0OjQKLSAgICAgODEgICAgICAgIHNldCBzZXR0ZXIyKHgpCi0g
ICAgIDgyICAgICAgICB7Ci0gICAgIDgzICAgICAgICAgICAgdmFyIHM7Ci0tPT4gIDg0ICAgICMg
ICAgfH0KLSAgICAgODUgICAgfQotICAgICA4NiAgICAKLSAgICAgODcgICAgeCA9PiB4OworUEFV
U0VTIEFUOiA4Njo4CisgICAgIDgxICAgICAgICBnZXQgZ2V0dGVyMSgpIHsKKyAgICAgODIgICAg
ICAgICAgICB2YXIgeDsKKyAgICAgODMgICAgICAgIH0KKyAtPiAgODQgICAgIyAgICBnZXQgZ2V0
dGVyMigpCisgICAgIDg1ICAgICAgICB7CisgPT4gIDg2ICAgICAgICAgICAgfHZhciB4OworICAg
ICA4NyAgICAgICAgfQorICAgICA4OCAgICAgICAgc2V0IHNldHRlcjEoeCkgeworICAgICA4OSAg
ICAgICAgICAgIHZhciBzOwogCiAKIElOU0VSVElORyBBVDogODU6MAotUEFVU0VTIEFUOiA4Nzow
Ci0gICAgIDgyICAgICAgICB7Ci0gICAgIDgzICAgICAgICAgICAgdmFyIHM7Ci0gICAgIDg0ICAg
ICAgICB9Ci0gLT4gIDg1ICAgICN9Ci0gICAgIDg2ICAgIAotID0+ICA4NyAgICB8eCA9PiB4Owot
ICAgICA4OCAgICAoKSA9PiAxOwotICAgICA4OSAgICAoeCkgPT4geDsKLSAgICAgOTAgICAgKHgp
ID0+IHsgeCB9OworUEFVU0VTIEFUOiA4Njo4CisgICAgIDgyICAgICAgICAgICAgdmFyIHg7Cisg
ICAgIDgzICAgICAgICB9CisgICAgIDg0ICAgICAgICBnZXQgZ2V0dGVyMigpCisgLT4gIDg1ICAg
ICMgICAgeworID0+ICA4NiAgICAgICAgICAgIHx2YXIgeDsKKyAgICAgODcgICAgICAgIH0KKyAg
ICAgODggICAgICAgIHNldCBzZXR0ZXIxKHgpIHsKKyAgICAgODkgICAgICAgICAgICB2YXIgczsK
IAogCiBJTlNFUlRJTkcgQVQ6IDg2OjAKLVBBVVNFUyBBVDogODc6MAotICAgICA4MyAgICAgICAg
ICAgIHZhciBzOwotICAgICA4NCAgICAgICAgfQotICAgICA4NSAgICB9Ci0gLT4gIDg2ICAgICMK
LSA9PiAgODcgICAgfHggPT4geDsKLSAgICAgODggICAgKCkgPT4gMTsKLSAgICAgODkgICAgKHgp
ID0+IHg7Ci0gICAgIDkwICAgICh4KSA9PiB7IHggfTsKK1BBVVNFUyBBVDogODY6OAorICAgICA4
MyAgICAgICAgfQorICAgICA4NCAgICAgICAgZ2V0IGdldHRlcjIoKQorICAgICA4NSAgICAgICAg
eworLT0+ICA4NiAgICAjICAgICAgICB8dmFyIHg7CisgICAgIDg3ICAgICAgICB9CisgICAgIDg4
ICAgICAgICBzZXQgc2V0dGVyMSh4KSB7CisgICAgIDg5ICAgICAgICAgICAgdmFyIHM7CiAKIAog
SU5TRVJUSU5HIEFUOiA4NzowCi1QQVVTRVMgQVQ6IDg3OjAKLSAgICAgODQgICAgICAgIH0KLSAg
ICAgODUgICAgfQotICAgICA4NiAgICAKLS09PiAgODcgICAgfHggPT4geDsKLSAgICAgODggICAg
KCkgPT4gMTsKLSAgICAgODkgICAgKHgpID0+IHg7Ci0gICAgIDkwICAgICh4KSA9PiB7IHggfTsK
K1BBVVNFUyBBVDogODc6NAorICAgICA4NCAgICAgICAgZ2V0IGdldHRlcjIoKQorICAgICA4NSAg
ICAgICAgeworICAgICA4NiAgICAgICAgICAgIHZhciB4OworLT0+ICA4NyAgICAjICAgIHx9Cisg
ICAgIDg4ICAgICAgICBzZXQgc2V0dGVyMSh4KSB7CisgICAgIDg5ICAgICAgICAgICAgdmFyIHM7
CisgICAgIDkwICAgICAgICB9CiAKIAogSU5TRVJUSU5HIEFUOiA4ODowCi1QQVVTRVMgQVQ6IDg4
OjAKLSAgICAgODUgICAgfQotICAgICA4NiAgICAKLSAgICAgODcgICAgeCA9PiB4OwotLT0+ICA4
OCAgICB8KCkgPT4gMTsKLSAgICAgODkgICAgKHgpID0+IHg7Ci0gICAgIDkwICAgICh4KSA9PiB7
IHggfTsKLSAgICAgOTEgICAgKHgpID0+IHsKK1BBVVNFUyBBVDogODk6OAorICAgICA4NSAgICAg
ICAgeworICAgICA4NiAgICAgICAgICAgIHZhciB4OworICAgICA4NyAgICAgICAgfQorIC0+ICA4
OCAgICAjICAgIHNldCBzZXR0ZXIxKHgpIHsKKyA9PiAgODkgICAgICAgICAgICB8dmFyIHM7Cisg
ICAgIDkwICAgICAgICB9CisgICAgIDkxICAgICAgICBzZXQgc2V0dGVyMih4KQorICAgICA5MiAg
ICAgICAgewogCiAKIElOU0VSVElORyBBVDogODk6MAotUEFVU0VTIEFUOiA4OTowCi0gICAgIDg2
ICAgIAotICAgICA4NyAgICB4ID0+IHg7Ci0gICAgIDg4ICAgICgpID0+IDE7Ci0tPT4gIDg5ICAg
IHwoeCkgPT4geDsKLSAgICAgOTAgICAgKHgpID0+IHsgeCB9OwotICAgICA5MSAgICAoeCkgPT4g
ewotICAgICA5MiAgICAgICAgeAorUEFVU0VTIEFUOiA4OTo4CisgICAgIDg2ICAgICAgICAgICAg
dmFyIHg7CisgICAgIDg3ICAgICAgICB9CisgICAgIDg4ICAgICAgICBzZXQgc2V0dGVyMSh4KSB7
CistPT4gIDg5ICAgICMgICAgICAgIHx2YXIgczsKKyAgICAgOTAgICAgICAgIH0KKyAgICAgOTEg
ICAgICAgIHNldCBzZXR0ZXIyKHgpCisgICAgIDkyICAgICAgICB7CiAKIAogSU5TRVJUSU5HIEFU
OiA5MDowCi1QQVVTRVMgQVQ6IDkwOjAKLSAgICAgODcgICAgeCA9PiB4OwotICAgICA4OCAgICAo
KSA9PiAxOwotICAgICA4OSAgICAoeCkgPT4geDsKLS09PiAgOTAgICAgfCh4KSA9PiB7IHggfTsK
LSAgICAgOTEgICAgKHgpID0+IHsKLSAgICAgOTIgICAgICAgIHgKLSAgICAgOTMgICAgfTsKK1BB
VVNFUyBBVDogOTA6NAorICAgICA4NyAgICAgICAgfQorICAgICA4OCAgICAgICAgc2V0IHNldHRl
cjEoeCkgeworICAgICA4OSAgICAgICAgICAgIHZhciBzOworLT0+ICA5MCAgICAjICAgIHx9Cisg
ICAgIDkxICAgICAgICBzZXQgc2V0dGVyMih4KQorICAgICA5MiAgICAgICAgeworICAgICA5MyAg
ICAgICAgICAgIHZhciBzOwogCiAKIElOU0VSVElORyBBVDogOTE6MAotUEFVU0VTIEFUOiA5MTow
Ci0gICAgIDg4ICAgICgpID0+IDE7Ci0gICAgIDg5ICAgICh4KSA9PiB4OwotICAgICA5MCAgICAo
eCkgPT4geyB4IH07Ci0tPT4gIDkxICAgIHwoeCkgPT4gewotICAgICA5MiAgICAgICAgeAotICAg
ICA5MyAgICB9OwotICAgICA5NCAgICAoKSA9PiB7CitQQVVTRVMgQVQ6IDkzOjgKKyAgICAgODgg
ICAgICAgIHNldCBzZXR0ZXIxKHgpIHsKKyAgICAgODkgICAgICAgICAgICB2YXIgczsKKyAgICAg
OTAgICAgICAgIH0KKyAtPiAgOTEgICAgIyAgICBzZXQgc2V0dGVyMih4KQorICAgICA5MiAgICAg
ICAgeworID0+ICA5MyAgICAgICAgICAgIHx2YXIgczsKKyAgICAgOTQgICAgICAgIH0KKyAgICAg
OTUgICAgfQorICAgICA5NiAgICAKIAogCiBJTlNFUlRJTkcgQVQ6IDkyOjAKLVBBVVNFUyBBVDog
OTI6NAotICAgICA4OSAgICAoeCkgPT4geDsKLSAgICAgOTAgICAgKHgpID0+IHsgeCB9OwotICAg
ICA5MSAgICAoeCkgPT4gewotLT0+ICA5MiAgICAjICAgIHx4Ci0gICAgIDkzICAgIH07Ci0gICAg
IDk0ICAgICgpID0+IHsKLSAgICAgOTUgICAgICAgIHZhciB4OworUEFVU0VTIEFUOiA5Mzo4Cisg
ICAgIDg5ICAgICAgICAgICAgdmFyIHM7CisgICAgIDkwICAgICAgICB9CisgICAgIDkxICAgICAg
ICBzZXQgc2V0dGVyMih4KQorIC0+ICA5MiAgICAjICAgIHsKKyA9PiAgOTMgICAgICAgICAgICB8
dmFyIHM7CisgICAgIDk0ICAgICAgICB9CisgICAgIDk1ICAgIH0KKyAgICAgOTYgICAgCiAKIAog
SU5TRVJUSU5HIEFUOiA5MzowCi1QQVVTRVMgQVQ6IDkzOjAKLSAgICAgOTAgICAgKHgpID0+IHsg
eCB9OwotICAgICA5MSAgICAoeCkgPT4gewotICAgICA5MiAgICAgICAgeAotLT0+ICA5MyAgICB8
fTsKLSAgICAgOTQgICAgKCkgPT4gewotICAgICA5NSAgICAgICAgdmFyIHg7Ci0gICAgIDk2ICAg
IH07CitQQVVTRVMgQVQ6IDkzOjgKKyAgICAgOTAgICAgICAgIH0KKyAgICAgOTEgICAgICAgIHNl
dCBzZXR0ZXIyKHgpCisgICAgIDkyICAgICAgICB7CistPT4gIDkzICAgICMgICAgICAgIHx2YXIg
czsKKyAgICAgOTQgICAgICAgIH0KKyAgICAgOTUgICAgfQorICAgICA5NiAgICAKIAogCiBJTlNF
UlRJTkcgQVQ6IDk0OjAKLVBBVVNFUyBBVDogOTQ6MAotICAgICA5MSAgICAoeCkgPT4gewotICAg
ICA5MiAgICAgICAgeAotICAgICA5MyAgICB9OwotLT0+ICA5NCAgICB8KCkgPT4gewotICAgICA5
NSAgICAgICAgdmFyIHg7Ci0gICAgIDk2ICAgIH07Ci0gICAgIDk3ICAgIAorUEFVU0VTIEFUOiA5
NDo0CisgICAgIDkxICAgICAgICBzZXQgc2V0dGVyMih4KQorICAgICA5MiAgICAgICAgeworICAg
ICA5MyAgICAgICAgICAgIHZhciBzOworLT0+ICA5NCAgICAjICAgIHx9CisgICAgIDk1ICAgIH0K
KyAgICAgOTYgICAgCisgICAgIDk3ICAgIHggPT4geDsKIAogCiBJTlNFUlRJTkcgQVQ6IDk1OjAK
LVBBVVNFUyBBVDogOTU6NAotICAgICA5MiAgICAgICAgeAotICAgICA5MyAgICB9OwotICAgICA5
NCAgICAoKSA9PiB7Ci0tPT4gIDk1ICAgICMgICAgfHZhciB4OwotICAgICA5NiAgICB9OwotICAg
ICA5NyAgICAKLSAgICAgOTggICAgdmFyIGZPYmogPSB7CitQQVVTRVMgQVQ6IDk3OjAKKyAgICAg
OTIgICAgICAgIHsKKyAgICAgOTMgICAgICAgICAgICB2YXIgczsKKyAgICAgOTQgICAgICAgIH0K
KyAtPiAgOTUgICAgI30KKyAgICAgOTYgICAgCisgPT4gIDk3ICAgIHx4ID0+IHg7CisgICAgIDk4
ICAgICgpID0+IDE7CisgICAgIDk5ICAgICh4KSA9PiB4OworICAgIDEwMCAgICAoeCkgPT4geyB4
IH07CiAKIAogSU5TRVJUSU5HIEFUOiA5NjowCi1QQVVTRVMgQVQ6IDk2OjAKLSAgICAgOTMgICAg
fTsKLSAgICAgOTQgICAgKCkgPT4gewotICAgICA5NSAgICAgICAgdmFyIHg7Ci0tPT4gIDk2ICAg
IHx9OwotICAgICA5NyAgICAKLSAgICAgOTggICAgdmFyIGZPYmogPSB7Ci0gICAgIDk5ICAgICAg
ICBmMTogZnVuY3Rpb24oKSB7CitQQVVTRVMgQVQ6IDk3OjAKKyAgICAgOTMgICAgICAgICAgICB2
YXIgczsKKyAgICAgOTQgICAgICAgIH0KKyAgICAgOTUgICAgfQorIC0+ICA5NiAgICAjCisgPT4g
IDk3ICAgIHx4ID0+IHg7CisgICAgIDk4ICAgICgpID0+IDE7CisgICAgIDk5ICAgICh4KSA9PiB4
OworICAgIDEwMCAgICAoeCkgPT4geyB4IH07CiAKIAogSU5TRVJUSU5HIEFUOiA5NzowCi1QQVVT
RVMgQVQ6IDk4OjAKLSAgICAgOTQgICAgKCkgPT4gewotICAgICA5NSAgICAgICAgdmFyIHg7Ci0g
ICAgIDk2ICAgIH07Ci0gLT4gIDk3ICAgICMKLSA9PiAgOTggICAgfHZhciBmT2JqID0gewotICAg
ICA5OSAgICAgICAgZjE6IGZ1bmN0aW9uKCkgewotICAgIDEwMCAgICAgICAgICAgIHZhciB4Owot
ICAgIDEwMSAgICAgICAgfSwKK1BBVVNFUyBBVDogOTc6MAorICAgICA5NCAgICAgICAgfQorICAg
ICA5NSAgICB9CisgICAgIDk2ICAgIAorLT0+ICA5NyAgICB8eCA9PiB4OworICAgICA5OCAgICAo
KSA9PiAxOworICAgICA5OSAgICAoeCkgPT4geDsKKyAgICAxMDAgICAgKHgpID0+IHsgeCB9Owog
CiAKIElOU0VSVElORyBBVDogOTg6MAogUEFVU0VTIEFUOiA5ODowCi0gICAgIDk1ICAgICAgICB2
YXIgeDsKLSAgICAgOTYgICAgfTsKLSAgICAgOTcgICAgCi0tPT4gIDk4ICAgIHx2YXIgZk9iaiA9
IHsKLSAgICAgOTkgICAgICAgIGYxOiBmdW5jdGlvbigpIHsKLSAgICAxMDAgICAgICAgICAgICB2
YXIgeDsKLSAgICAxMDEgICAgICAgIH0sCisgICAgIDk1ICAgIH0KKyAgICAgOTYgICAgCisgICAg
IDk3ICAgIHggPT4geDsKKy09PiAgOTggICAgfCgpID0+IDE7CisgICAgIDk5ICAgICh4KSA9PiB4
OworICAgIDEwMCAgICAoeCkgPT4geyB4IH07CisgICAgMTAxICAgICh4KSA9PiB7CiAKIAogSU5T
RVJUSU5HIEFUOiA5OTowCi1QQVVTRVMgQVQ6IDEwMDo4Ci0gICAgIDk2ICAgIH07Ci0gICAgIDk3
ICAgIAotICAgICA5OCAgICB2YXIgZk9iaiA9IHsKLSAtPiAgOTkgICAgIyAgICBmMTogZnVuY3Rp
b24oKSB7Ci0gPT4gMTAwICAgICAgICAgICAgfHZhciB4OwotICAgIDEwMSAgICAgICAgfSwKLSAg
ICAxMDIgICAgICAgIGYyOiBmdW5jdGlvbigpCi0gICAgMTAzICAgICAgICB7CitQQVVTRVMgQVQ6
IDk5OjAKKyAgICAgOTYgICAgCisgICAgIDk3ICAgIHggPT4geDsKKyAgICAgOTggICAgKCkgPT4g
MTsKKy09PiAgOTkgICAgfCh4KSA9PiB4OworICAgIDEwMCAgICAoeCkgPT4geyB4IH07CisgICAg
MTAxICAgICh4KSA9PiB7CisgICAgMTAyICAgICAgICB4CiAKIAogSU5TRVJUSU5HIEFUOiAxMDA6
MAotUEFVU0VTIEFUOiAxMDA6OAotICAgICA5NyAgICAKLSAgICAgOTggICAgdmFyIGZPYmogPSB7
Ci0gICAgIDk5ICAgICAgICBmMTogZnVuY3Rpb24oKSB7Ci0tPT4gMTAwICAgICMgICAgICAgIHx2
YXIgeDsKLSAgICAxMDEgICAgICAgIH0sCi0gICAgMTAyICAgICAgICBmMjogZnVuY3Rpb24oKQot
ICAgIDEwMyAgICAgICAgeworUEFVU0VTIEFUOiAxMDA6MAorICAgICA5NyAgICB4ID0+IHg7Cisg
ICAgIDk4ICAgICgpID0+IDE7CisgICAgIDk5ICAgICh4KSA9PiB4OworLT0+IDEwMCAgICB8KHgp
ID0+IHsgeCB9OworICAgIDEwMSAgICAoeCkgPT4geworICAgIDEwMiAgICAgICAgeAorICAgIDEw
MyAgICB9OwogCiAKIElOU0VSVElORyBBVDogMTAxOjAKLVBBVVNFUyBBVDogMTAxOjQKLSAgICAg
OTggICAgdmFyIGZPYmogPSB7Ci0gICAgIDk5ICAgICAgICBmMTogZnVuY3Rpb24oKSB7Ci0gICAg
MTAwICAgICAgICAgICAgdmFyIHg7Ci0tPT4gMTAxICAgICMgICAgfH0sCi0gICAgMTAyICAgICAg
ICBmMjogZnVuY3Rpb24oKQotICAgIDEwMyAgICAgICAgewotICAgIDEwNCAgICAgICAgICAgIHZh
ciB4OworUEFVU0VTIEFUOiAxMDE6MAorICAgICA5OCAgICAoKSA9PiAxOworICAgICA5OSAgICAo
eCkgPT4geDsKKyAgICAxMDAgICAgKHgpID0+IHsgeCB9OworLT0+IDEwMSAgICB8KHgpID0+IHsK
KyAgICAxMDIgICAgICAgIHgKKyAgICAxMDMgICAgfTsKKyAgICAxMDQgICAgKCkgPT4gewogCiAK
IElOU0VSVElORyBBVDogMTAyOjAKLVBBVVNFUyBBVDogMTA0OjgKLSAgICAgOTkgICAgICAgIGYx
OiBmdW5jdGlvbigpIHsKLSAgICAxMDAgICAgICAgICAgICB2YXIgeDsKLSAgICAxMDEgICAgICAg
IH0sCi0gLT4gMTAyICAgICMgICAgZjI6IGZ1bmN0aW9uKCkKLSAgICAxMDMgICAgICAgIHsKLSA9
PiAxMDQgICAgICAgICAgICB8dmFyIHg7Ci0gICAgMTA1ICAgICAgICB9LAotICAgIDEwNiAgICAg
ICAgZjM6ICgpID0+IHsKLSAgICAxMDcgICAgICAgICAgICB2YXIgeDsKK1BBVVNFUyBBVDogMTAy
OjQKKyAgICAgOTkgICAgKHgpID0+IHg7CisgICAgMTAwICAgICh4KSA9PiB7IHggfTsKKyAgICAx
MDEgICAgKHgpID0+IHsKKy09PiAxMDIgICAgIyAgICB8eAorICAgIDEwMyAgICB9OworICAgIDEw
NCAgICAoKSA9PiB7CisgICAgMTA1ICAgICAgICB2YXIgeDsKIAogCiBJTlNFUlRJTkcgQVQ6IDEw
MzowCi1QQVVTRVMgQVQ6IDEwNDo4Ci0gICAgMTAwICAgICAgICAgICAgdmFyIHg7Ci0gICAgMTAx
ICAgICAgICB9LAotICAgIDEwMiAgICAgICAgZjI6IGZ1bmN0aW9uKCkKLSAtPiAxMDMgICAgIyAg
ICB7Ci0gPT4gMTA0ICAgICAgICAgICAgfHZhciB4OwotICAgIDEwNSAgICAgICAgfSwKLSAgICAx
MDYgICAgICAgIGYzOiAoKSA9PiB7Ci0gICAgMTA3ICAgICAgICAgICAgdmFyIHg7CitQQVVTRVMg
QVQ6IDEwMzowCisgICAgMTAwICAgICh4KSA9PiB7IHggfTsKKyAgICAxMDEgICAgKHgpID0+IHsK
KyAgICAxMDIgICAgICAgIHgKKy09PiAxMDMgICAgfH07CisgICAgMTA0ICAgICgpID0+IHsKKyAg
ICAxMDUgICAgICAgIHZhciB4OworICAgIDEwNiAgICB9OwogCiAKIElOU0VSVElORyBBVDogMTA0
OjAKLVBBVVNFUyBBVDogMTA0OjgKLSAgICAxMDEgICAgICAgIH0sCi0gICAgMTAyICAgICAgICBm
MjogZnVuY3Rpb24oKQotICAgIDEwMyAgICAgICAgewotLT0+IDEwNCAgICAjICAgICAgICB8dmFy
IHg7Ci0gICAgMTA1ICAgICAgICB9LAotICAgIDEwNiAgICAgICAgZjM6ICgpID0+IHsKLSAgICAx
MDcgICAgICAgICAgICB2YXIgeDsKK1BBVVNFUyBBVDogMTA0OjAKKyAgICAxMDEgICAgKHgpID0+
IHsKKyAgICAxMDIgICAgICAgIHgKKyAgICAxMDMgICAgfTsKKy09PiAxMDQgICAgfCgpID0+IHsK
KyAgICAxMDUgICAgICAgIHZhciB4OworICAgIDEwNiAgICB9OworICAgIDEwNyAgICAKIAogCiBJ
TlNFUlRJTkcgQVQ6IDEwNTowCiBQQVVTRVMgQVQ6IDEwNTo0Ci0gICAgMTAyICAgICAgICBmMjog
ZnVuY3Rpb24oKQotICAgIDEwMyAgICAgICAgewotICAgIDEwNCAgICAgICAgICAgIHZhciB4Owot
LT0+IDEwNSAgICAjICAgIHx9LAotICAgIDEwNiAgICAgICAgZjM6ICgpID0+IHsKLSAgICAxMDcg
ICAgICAgICAgICB2YXIgeDsKLSAgICAxMDggICAgICAgIH0sCisgICAgMTAyICAgICAgICB4Cisg
ICAgMTAzICAgIH07CisgICAgMTA0ICAgICgpID0+IHsKKy09PiAxMDUgICAgIyAgICB8dmFyIHg7
CisgICAgMTA2ICAgIH07CisgICAgMTA3ICAgIAorICAgIDEwOCAgICB2YXIgZk9iaiA9IHsKIAog
CiBJTlNFUlRJTkcgQVQ6IDEwNjowCi1QQVVTRVMgQVQ6IDEwNzo4Ci0gICAgMTAzICAgICAgICB7
Ci0gICAgMTA0ICAgICAgICAgICAgdmFyIHg7Ci0gICAgMTA1ICAgICAgICB9LAotIC0+IDEwNiAg
ICAjICAgIGYzOiAoKSA9PiB7Ci0gPT4gMTA3ICAgICAgICAgICAgfHZhciB4OwotICAgIDEwOCAg
ICAgICAgfSwKLSAgICAxMDkgICAgICAgIGY0OiAoKSA9PgotICAgIDExMCAgICAgICAgeworUEFV
U0VTIEFUOiAxMDY6MAorICAgIDEwMyAgICB9OworICAgIDEwNCAgICAoKSA9PiB7CisgICAgMTA1
ICAgICAgICB2YXIgeDsKKy09PiAxMDYgICAgfH07CisgICAgMTA3ICAgIAorICAgIDEwOCAgICB2
YXIgZk9iaiA9IHsKKyAgICAxMDkgICAgICAgIGYxOiBmdW5jdGlvbigpIHsKIAogCiBJTlNFUlRJ
TkcgQVQ6IDEwNzowCi1QQVVTRVMgQVQ6IDEwNzo4Ci0gICAgMTA0ICAgICAgICAgICAgdmFyIHg7
Ci0gICAgMTA1ICAgICAgICB9LAotICAgIDEwNiAgICAgICAgZjM6ICgpID0+IHsKLS09PiAxMDcg
ICAgIyAgICAgICAgfHZhciB4OwotICAgIDEwOCAgICAgICAgfSwKLSAgICAxMDkgICAgICAgIGY0
OiAoKSA9PgotICAgIDExMCAgICAgICAgeworUEFVU0VTIEFUOiAxMDg6MAorICAgIDEwNCAgICAo
KSA9PiB7CisgICAgMTA1ICAgICAgICB2YXIgeDsKKyAgICAxMDYgICAgfTsKKyAtPiAxMDcgICAg
IworID0+IDEwOCAgICB8dmFyIGZPYmogPSB7CisgICAgMTA5ICAgICAgICBmMTogZnVuY3Rpb24o
KSB7CisgICAgMTEwICAgICAgICAgICAgdmFyIHg7CisgICAgMTExICAgICAgICB9LAogCiAKIElO
U0VSVElORyBBVDogMTA4OjAKLVBBVVNFUyBBVDogMTA4OjQKLSAgICAxMDUgICAgICAgIH0sCi0g
ICAgMTA2ICAgICAgICBmMzogKCkgPT4gewotICAgIDEwNyAgICAgICAgICAgIHZhciB4OwotLT0+
IDEwOCAgICAjICAgIHx9LAotICAgIDEwOSAgICAgICAgZjQ6ICgpID0+Ci0gICAgMTEwICAgICAg
ICB7Ci0gICAgMTExICAgICAgICAgICAgdmFyIHg7CitQQVVTRVMgQVQ6IDEwODowCisgICAgMTA1
ICAgICAgICB2YXIgeDsKKyAgICAxMDYgICAgfTsKKyAgICAxMDcgICAgCistPT4gMTA4ICAgIHx2
YXIgZk9iaiA9IHsKKyAgICAxMDkgICAgICAgIGYxOiBmdW5jdGlvbigpIHsKKyAgICAxMTAgICAg
ICAgICAgICB2YXIgeDsKKyAgICAxMTEgICAgICAgIH0sCiAKIAogSU5TRVJUSU5HIEFUOiAxMDk6
MAotUEFVU0VTIEFUOiAxMTE6OAotICAgIDEwNiAgICAgICAgZjM6ICgpID0+IHsKLSAgICAxMDcg
ICAgICAgICAgICB2YXIgeDsKLSAgICAxMDggICAgICAgIH0sCi0gLT4gMTA5ICAgICMgICAgZjQ6
ICgpID0+Ci0gICAgMTEwICAgICAgICB7Ci0gPT4gMTExICAgICAgICAgICAgfHZhciB4OwotICAg
IDExMiAgICAgICAgfSAgIAotICAgIDExMyAgICB9OwotICAgIDExNCAgICAKK1BBVVNFUyBBVDog
MTEwOjgKKyAgICAxMDYgICAgfTsKKyAgICAxMDcgICAgCisgICAgMTA4ICAgIHZhciBmT2JqID0g
eworIC0+IDEwOSAgICAjICAgIGYxOiBmdW5jdGlvbigpIHsKKyA9PiAxMTAgICAgICAgICAgICB8
dmFyIHg7CisgICAgMTExICAgICAgICB9LAorICAgIDExMiAgICAgICAgZjI6IGZ1bmN0aW9uKCkK
KyAgICAxMTMgICAgICAgIHsKIAogCiBJTlNFUlRJTkcgQVQ6IDExMDowCi1QQVVTRVMgQVQ6IDEx
MTo4Ci0gICAgMTA3ICAgICAgICAgICAgdmFyIHg7Ci0gICAgMTA4ICAgICAgICB9LAotICAgIDEw
OSAgICAgICAgZjQ6ICgpID0+Ci0gLT4gMTEwICAgICMgICAgewotID0+IDExMSAgICAgICAgICAg
IHx2YXIgeDsKLSAgICAxMTIgICAgICAgIH0gICAKLSAgICAxMTMgICAgfTsKLSAgICAxMTQgICAg
CitQQVVTRVMgQVQ6IDExMDo4CisgICAgMTA3ICAgIAorICAgIDEwOCAgICB2YXIgZk9iaiA9IHsK
KyAgICAxMDkgICAgICAgIGYxOiBmdW5jdGlvbigpIHsKKy09PiAxMTAgICAgIyAgICAgICAgfHZh
ciB4OworICAgIDExMSAgICAgICAgfSwKKyAgICAxMTIgICAgICAgIGYyOiBmdW5jdGlvbigpCisg
ICAgMTEzICAgICAgICB7CiAKIAogSU5TRVJUSU5HIEFUOiAxMTE6MAotUEFVU0VTIEFUOiAxMTE6
OAotICAgIDEwOCAgICAgICAgfSwKLSAgICAxMDkgICAgICAgIGY0OiAoKSA9PgotICAgIDExMCAg
ICAgICAgewotLT0+IDExMSAgICAjICAgICAgICB8dmFyIHg7Ci0gICAgMTEyICAgICAgICB9ICAg
Ci0gICAgMTEzICAgIH07Ci0gICAgMTE0ICAgIAorUEFVU0VTIEFUOiAxMTE6NAorICAgIDEwOCAg
ICB2YXIgZk9iaiA9IHsKKyAgICAxMDkgICAgICAgIGYxOiBmdW5jdGlvbigpIHsKKyAgICAxMTAg
ICAgICAgICAgICB2YXIgeDsKKy09PiAxMTEgICAgIyAgICB8fSwKKyAgICAxMTIgICAgICAgIGYy
OiBmdW5jdGlvbigpCisgICAgMTEzICAgICAgICB7CisgICAgMTE0ICAgICAgICAgICAgdmFyIHg7
CiAKIAogSU5TRVJUSU5HIEFUOiAxMTI6MAotUEFVU0VTIEFUOiAxMTI6NAotICAgIDEwOSAgICAg
ICAgZjQ6ICgpID0+Ci0gICAgMTEwICAgICAgICB7Ci0gICAgMTExICAgICAgICAgICAgdmFyIHg7
Ci0tPT4gMTEyICAgICMgICAgfH0gICAKLSAgICAxMTMgICAgfTsKLSAgICAxMTQgICAgCitQQVVT
RVMgQVQ6IDExNDo4CisgICAgMTA5ICAgICAgICBmMTogZnVuY3Rpb24oKSB7CisgICAgMTEwICAg
ICAgICAgICAgdmFyIHg7CisgICAgMTExICAgICAgICB9LAorIC0+IDExMiAgICAjICAgIGYyOiBm
dW5jdGlvbigpCisgICAgMTEzICAgICAgICB7CisgPT4gMTE0ICAgICAgICAgICAgfHZhciB4Owor
ICAgIDExNSAgICAgICAgfSwKKyAgICAxMTYgICAgICAgIGYzOiAoKSA9PiB7CisgICAgMTE3ICAg
ICAgICAgICAgdmFyIHg7CiAKIAogSU5TRVJUSU5HIEFUOiAxMTM6MAotUFJPRFVDRVM6IENvdWxk
IG5vdCByZXNvbHZlIGJyZWFrcG9pbnQKK1BBVVNFUyBBVDogMTE0OjgKKyAgICAxMTAgICAgICAg
ICAgICB2YXIgeDsKKyAgICAxMTEgICAgICAgIH0sCisgICAgMTEyICAgICAgICBmMjogZnVuY3Rp
b24oKQorIC0+IDExMyAgICAjICAgIHsKKyA9PiAxMTQgICAgICAgICAgICB8dmFyIHg7CisgICAg
MTE1ICAgICAgICB9LAorICAgIDExNiAgICAgICAgZjM6ICgpID0+IHsKKyAgICAxMTcgICAgICAg
ICAgICB2YXIgeDsKKwogCiBJTlNFUlRJTkcgQVQ6IDExNDowCitQQVVTRVMgQVQ6IDExNDo4Cisg
ICAgMTExICAgICAgICB9LAorICAgIDExMiAgICAgICAgZjI6IGZ1bmN0aW9uKCkKKyAgICAxMTMg
ICAgICAgIHsKKy09PiAxMTQgICAgIyAgICAgICAgfHZhciB4OworICAgIDExNSAgICAgICAgfSwK
KyAgICAxMTYgICAgICAgIGYzOiAoKSA9PiB7CisgICAgMTE3ICAgICAgICAgICAgdmFyIHg7CisK
KworSU5TRVJUSU5HIEFUOiAxMTU6MAorUEFVU0VTIEFUOiAxMTU6NAorICAgIDExMiAgICAgICAg
ZjI6IGZ1bmN0aW9uKCkKKyAgICAxMTMgICAgICAgIHsKKyAgICAxMTQgICAgICAgICAgICB2YXIg
eDsKKy09PiAxMTUgICAgIyAgICB8fSwKKyAgICAxMTYgICAgICAgIGYzOiAoKSA9PiB7CisgICAg
MTE3ICAgICAgICAgICAgdmFyIHg7CisgICAgMTE4ICAgICAgICB9LAorCisKK0lOU0VSVElORyBB
VDogMTE2OjAKK1BBVVNFUyBBVDogMTE3OjgKKyAgICAxMTMgICAgICAgIHsKKyAgICAxMTQgICAg
ICAgICAgICB2YXIgeDsKKyAgICAxMTUgICAgICAgIH0sCisgLT4gMTE2ICAgICMgICAgZjM6ICgp
ID0+IHsKKyA9PiAxMTcgICAgICAgICAgICB8dmFyIHg7CisgICAgMTE4ICAgICAgICB9LAorICAg
IDExOSAgICAgICAgZjQ6ICgpID0+CisgICAgMTIwICAgICAgICB7CisKKworSU5TRVJUSU5HIEFU
OiAxMTc6MAorUEFVU0VTIEFUOiAxMTc6OAorICAgIDExNCAgICAgICAgICAgIHZhciB4OworICAg
IDExNSAgICAgICAgfSwKKyAgICAxMTYgICAgICAgIGYzOiAoKSA9PiB7CistPT4gMTE3ICAgICMg
ICAgICAgIHx2YXIgeDsKKyAgICAxMTggICAgICAgIH0sCisgICAgMTE5ICAgICAgICBmNDogKCkg
PT4KKyAgICAxMjAgICAgICAgIHsKKworCitJTlNFUlRJTkcgQVQ6IDExODowCitQQVVTRVMgQVQ6
IDExODo0CisgICAgMTE1ICAgICAgICB9LAorICAgIDExNiAgICAgICAgZjM6ICgpID0+IHsKKyAg
ICAxMTcgICAgICAgICAgICB2YXIgeDsKKy09PiAxMTggICAgIyAgICB8fSwKKyAgICAxMTkgICAg
ICAgIGY0OiAoKSA9PgorICAgIDEyMCAgICAgICAgeworICAgIDEyMSAgICAgICAgICAgIHZhciB4
OworCisKK0lOU0VSVElORyBBVDogMTE5OjAKK1BBVVNFUyBBVDogMTIxOjgKKyAgICAxMTYgICAg
ICAgIGYzOiAoKSA9PiB7CisgICAgMTE3ICAgICAgICAgICAgdmFyIHg7CisgICAgMTE4ICAgICAg
ICB9LAorIC0+IDExOSAgICAjICAgIGY0OiAoKSA9PgorICAgIDEyMCAgICAgICAgeworID0+IDEy
MSAgICAgICAgICAgIHx2YXIgeDsKKyAgICAxMjIgICAgICAgIH0gICAKKyAgICAxMjMgICAgfTsK
KyAgICAxMjQgICAgCisKKworSU5TRVJUSU5HIEFUOiAxMjA6MAorUEFVU0VTIEFUOiAxMjE6OAor
ICAgIDExNyAgICAgICAgICAgIHZhciB4OworICAgIDExOCAgICAgICAgfSwKKyAgICAxMTkgICAg
ICAgIGY0OiAoKSA9PgorIC0+IDEyMCAgICAjICAgIHsKKyA9PiAxMjEgICAgICAgICAgICB8dmFy
IHg7CisgICAgMTIyICAgICAgICB9ICAgCisgICAgMTIzICAgIH07CisgICAgMTI0ICAgIAorCisK
K0lOU0VSVElORyBBVDogMTIxOjAKK1BBVVNFUyBBVDogMTIxOjgKKyAgICAxMTggICAgICAgIH0s
CisgICAgMTE5ICAgICAgICBmNDogKCkgPT4KKyAgICAxMjAgICAgICAgIHsKKy09PiAxMjEgICAg
IyAgICAgICAgfHZhciB4OworICAgIDEyMiAgICAgICAgfSAgIAorICAgIDEyMyAgICB9OworICAg
IDEyNCAgICAKKworCitJTlNFUlRJTkcgQVQ6IDEyMjowCitQQVVTRVMgQVQ6IDEyMjo0CisgICAg
MTE5ICAgICAgICBmNDogKCkgPT4KKyAgICAxMjAgICAgICAgIHsKKyAgICAxMjEgICAgICAgICAg
ICB2YXIgeDsKKy09PiAxMjIgICAgIyAgICB8fSAgIAorICAgIDEyMyAgICB9OworICAgIDEyNCAg
ICAKKworCitJTlNFUlRJTkcgQVQ6IDEyMzowCitQUk9EVUNFUzogQ291bGQgbm90IHJlc29sdmUg
YnJlYWtwb2ludAorCitJTlNFUlRJTkcgQVQ6IDEyNDowCiBQUk9EVUNFUzogQ291bGQgbm90IHJl
c29sdmUgYnJlYWtwb2ludAogCiAtLSBSdW5uaW5nIHRlc3QgY2FzZTogRGVidWdnZXIucmVzb2x2
ZWRCcmVha3BvaW50LmR1bXBFYWNoTGluZS5Vbmljb2RlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZGVidWdnZXIvYnJlYWtwb2ludHMvcmVzb3VyY2VzL2R1bXAtZnVuY3Rpb25z
LmpzIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnRzL3Jlc291cmNl
cy9kdW1wLWZ1bmN0aW9ucy5qcwppbmRleCBlZjE2NDZlMzI3OGZkODU2N2ExNmVlMTMxNTIyYmFl
YjFjZWZlYjFkLi5jZTFhMTExNTBmMTRkMmEwMGQ0YmI1MDFjYmUwYjkwNGEwZWRjM2FhIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvYnJlYWtwb2ludHMvcmVzb3Vy
Y2VzL2R1bXAtZnVuY3Rpb25zLmpzCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dl
ci9icmVha3BvaW50cy9yZXNvdXJjZXMvZHVtcC1mdW5jdGlvbnMuanMKQEAgLTQyLDYgKzQyLDE2
IEBAIGZ1bmN0aW9uIG91dGVyNygpIHsKICAgICBmdW5jdGlvbiBpbm5lcjIoKSB7IHZhciB6OyB9
CiB9CiAKK2Z1bmN0aW9uIGNvbW1hT25lTGluZSgpIHsKKyAgICBpbmxpbmUoKSwgaW5saW5lKCks
IGlubGluZSgpOworfQorCitmdW5jdGlvbiBjb21tYU11bHRpTGluZSgpIHsKKyAgICBpbmxpbmUo
KSwKKyAgICBpbmxpbmUoKSwKKyAgICBpbmxpbmUoKTsKK30KKwogKGZ1bmN0aW9uKCkgewogICAg
IHZhciB4OwogfSkoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dl
ci9icmVha3BvaW50cy9yZXNvdXJjZXMvZHVtcC1nZW5lcmFsLmpzIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnRzL3Jlc291cmNlcy9kdW1wLWdlbmVyYWwuanMKaW5k
ZXggNWE0NjY1ZWQ0M2FmOWZlYjljNzQwMmVhZDcxZWEwNDZhMThmYzRhZC4uYjBlZDUwOWI1MGNk
NGIxOTVlMDQyZTY4ZWFhZWU0ODNjMTI3NWQ2NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnRzL3Jlc291cmNlcy9kdW1wLWdlbmVyYWwuanMKKysr
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnRzL3Jlc291cmNlcy9k
dW1wLWdlbmVyYWwuanMKQEAgLTIwMCw2ICsyMDAsMTIgQEAgdmFyIHQyID0gYWAkezF9ICR7eD0x
fSAke2EoKX1gOwogCiBhKGEoKSwgYigpKTsKIAorYSgpLCBiKCksIGMoKTsKKworYSgpLAorYigp
LAorYygpOworCiBpZiAobzEucDEpCiAgICAgYSgpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcvc3RlcE92ZXItZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3N0ZXBwaW5nL3N0ZXBPdmVyLWV4cGVjdGVkLnR4
dAppbmRleCBmNTNhYWYwYzMzY2RiNzQ3NTA5NjM0ZjBkMmEzNmMzZjQ1ZDU4Y2E1Li4xZGU5MGY4
NTE3ZDY0YWU0MzYwMDlkNmViMjhiY2ViYzY4MWNhOGI0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcvc3RlcE92ZXItZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zdGVwcGluZy9zdGVwT3Zlci1leHBlY3Rl
ZC50eHQKQEAgLTEsMTE5ICsxLDEyMiBAQAotQUxFUlQ6IGxvZyAxCitBTEVSVDogZnVuY3Rpb24g
bG9nIDEKK0FMRVJUOiBjb21tYSBsb2cgMQorQUxFUlQ6IGNvbW1hIGxvZyAyCitBTEVSVDogY29t
bWEgbG9nIDMKIENoZWNraW5nIHBhdXNlIGxvY2F0aW9ucyB3aGVuIHN0ZXBwaW5nIHdpdGggInN0
ZXBPdmVyIi4KIAogCiA9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IERlYnVnZ2VyLnN0ZXBPdmVyCiAt
LSBSdW5uaW5nIHRlc3QgY2FzZTogRGVidWdnZXIuc3RlcE92ZXIuc3RhdGVtZW50cwogUEFVU0VE
IChkZWJ1Z2dlci1zdGF0ZW1lbnQpCi1QQVVTRSBBVCBlbnRyeTE6MTI6NQorUEFVU0UgQVQgdGVz
dFN0YXRlbWVudHM6MTI6NQogICAgICAgOCAgICB9CiAgICAgICA5ICAgIAotICAgICAxMCAgICBm
dW5jdGlvbiBlbnRyeTEoKSB7CisgICAgIDEwICAgIGZ1bmN0aW9uIHRlc3RTdGF0ZW1lbnRzKCkg
ewogIC0+ICAxMSAgICAgICAgfGRlYnVnZ2VyOwogICAgICAxMiAgICAgICAgbGV0IHggPSAxOwog
ICAgICAxMyAgICAgICAgbGV0IHkgPSAyOwogICAgICAxNCAgICB9CiAKLVBBVVNFIEFUIGVudHJ5
MToxMzo1CitQQVVTRSBBVCB0ZXN0U3RhdGVtZW50czoxMzo1CiAgICAgICA5ICAgIAotICAgICAx
MCAgICBmdW5jdGlvbiBlbnRyeTEoKSB7CisgICAgIDEwICAgIGZ1bmN0aW9uIHRlc3RTdGF0ZW1l
bnRzKCkgewogICAgICAxMSAgICAgICAgZGVidWdnZXI7CiAgLT4gIDEyICAgICAgICB8bGV0IHgg
PSAxOwogICAgICAxMyAgICAgICAgbGV0IHkgPSAyOwogICAgICAxNCAgICB9CiAgICAgIDE1ICAg
IAogCi1QQVVTRSBBVCBlbnRyeTE6MTQ6NQotICAgICAxMCAgICBmdW5jdGlvbiBlbnRyeTEoKSB7
CitQQVVTRSBBVCB0ZXN0U3RhdGVtZW50czoxNDo1CisgICAgIDEwICAgIGZ1bmN0aW9uIHRlc3RT
dGF0ZW1lbnRzKCkgewogICAgICAxMSAgICAgICAgZGVidWdnZXI7CiAgICAgIDEyICAgICAgICBs
ZXQgeCA9IDE7CiAgLT4gIDEzICAgICAgICB8bGV0IHkgPSAyOwogICAgICAxNCAgICB9CiAgICAg
IDE1ICAgIAotICAgICAxNiAgICBmdW5jdGlvbiBlbnRyeTIoKSB7CisgICAgIDE2ICAgIGZ1bmN0
aW9uIHRlc3RGdW5jdGlvbnMoKSB7CiAKLVBBVVNFIEFUIGVudHJ5MToxNToyCitQQVVTRSBBVCB0
ZXN0U3RhdGVtZW50czoxNToyCiAgICAgIDExICAgICAgICBkZWJ1Z2dlcjsKICAgICAgMTIgICAg
ICAgIGxldCB4ID0gMTsKICAgICAgMTMgICAgICAgIGxldCB5ID0gMjsKICAtPiAgMTQgICAgfXwK
ICAgICAgMTUgICAgCi0gICAgIDE2ICAgIGZ1bmN0aW9uIGVudHJ5MigpIHsKKyAgICAgMTYgICAg
ZnVuY3Rpb24gdGVzdEZ1bmN0aW9ucygpIHsKICAgICAgMTcgICAgICAgIGRlYnVnZ2VyOwogCiBS
RVNVTUVECiAKIC0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBEZWJ1Z2dlci5zdGVwT3Zlci5mdW5jdGlv
bgogUEFVU0VEIChkZWJ1Z2dlci1zdGF0ZW1lbnQpCi1QQVVTRSBBVCBlbnRyeTI6MTg6NQorUEFV
U0UgQVQgdGVzdEZ1bmN0aW9uczoxODo1CiAgICAgIDE0ICAgIH0KICAgICAgMTUgICAgCi0gICAg
IDE2ICAgIGZ1bmN0aW9uIGVudHJ5MigpIHsKKyAgICAgMTYgICAgZnVuY3Rpb24gdGVzdEZ1bmN0
aW9ucygpIHsKICAtPiAgMTcgICAgICAgIHxkZWJ1Z2dlcjsKICAgICAgMTggICAgICAgIGxldCBi
ZWZvcmUgPSAxOwotICAgICAxOSAgICAgICAgdGVzdEFsZXJ0KCJsb2cgMSIpOworICAgICAxOSAg
ICAgICAgdGVzdEFsZXJ0KCJmdW5jdGlvbiBsb2cgMSIpOwogICAgICAyMCAgICAgICAgbGV0IGFm
dGVyID0gMjsKIAotUEFVU0UgQVQgZW50cnkyOjE5OjUKK1BBVVNFIEFUIHRlc3RGdW5jdGlvbnM6
MTk6NQogICAgICAxNSAgICAKLSAgICAgMTYgICAgZnVuY3Rpb24gZW50cnkyKCkgeworICAgICAx
NiAgICBmdW5jdGlvbiB0ZXN0RnVuY3Rpb25zKCkgewogICAgICAxNyAgICAgICAgZGVidWdnZXI7
CiAgLT4gIDE4ICAgICAgICB8bGV0IGJlZm9yZSA9IDE7Ci0gICAgIDE5ICAgICAgICB0ZXN0QWxl
cnQoImxvZyAxIik7CisgICAgIDE5ICAgICAgICB0ZXN0QWxlcnQoImZ1bmN0aW9uIGxvZyAxIik7
CiAgICAgIDIwICAgICAgICBsZXQgYWZ0ZXIgPSAyOwogICAgICAyMSAgICB9CiAKLVBBVVNFIEFU
IGVudHJ5MjoyMDo1Ci0gICAgIDE2ICAgIGZ1bmN0aW9uIGVudHJ5MigpIHsKK1BBVVNFIEFUIHRl
c3RGdW5jdGlvbnM6MjA6NQorICAgICAxNiAgICBmdW5jdGlvbiB0ZXN0RnVuY3Rpb25zKCkgewog
ICAgICAxNyAgICAgICAgZGVidWdnZXI7CiAgICAgIDE4ICAgICAgICBsZXQgYmVmb3JlID0gMTsK
LSAtPiAgMTkgICAgICAgIHx0ZXN0QWxlcnQoImxvZyAxIik7CisgLT4gIDE5ICAgICAgICB8dGVz
dEFsZXJ0KCJmdW5jdGlvbiBsb2cgMSIpOwogICAgICAyMCAgICAgICAgbGV0IGFmdGVyID0gMjsK
ICAgICAgMjEgICAgfQogICAgICAyMiAgICAKIAotUEFVU0UgQVQgZW50cnkyOjIxOjUKK1BBVVNF
IEFUIHRlc3RGdW5jdGlvbnM6MjE6NQogICAgICAxNyAgICAgICAgZGVidWdnZXI7CiAgICAgIDE4
ICAgICAgICBsZXQgYmVmb3JlID0gMTsKLSAgICAgMTkgICAgICAgIHRlc3RBbGVydCgibG9nIDEi
KTsKKyAgICAgMTkgICAgICAgIHRlc3RBbGVydCgiZnVuY3Rpb24gbG9nIDEiKTsKICAtPiAgMjAg
ICAgICAgIHxsZXQgYWZ0ZXIgPSAyOwogICAgICAyMSAgICB9CiAgICAgIDIyICAgIAotICAgICAy
MyAgICBmdW5jdGlvbiBlbnRyeTMoKSB7CisgICAgIDIzICAgIGZ1bmN0aW9uIHRlc3RFdmFsKCkg
ewogCi1QQVVTRSBBVCBlbnRyeTI6MjI6MgorUEFVU0UgQVQgdGVzdEZ1bmN0aW9uczoyMjoyCiAg
ICAgIDE4ICAgICAgICBsZXQgYmVmb3JlID0gMTsKLSAgICAgMTkgICAgICAgIHRlc3RBbGVydCgi
bG9nIDEiKTsKKyAgICAgMTkgICAgICAgIHRlc3RBbGVydCgiZnVuY3Rpb24gbG9nIDEiKTsKICAg
ICAgMjAgICAgICAgIGxldCBhZnRlciA9IDI7CiAgLT4gIDIxICAgIH18CiAgICAgIDIyICAgIAot
ICAgICAyMyAgICBmdW5jdGlvbiBlbnRyeTMoKSB7CisgICAgIDIzICAgIGZ1bmN0aW9uIHRlc3RF
dmFsKCkgewogICAgICAyNCAgICAgICAgZGVidWdnZXI7CiAKIFJFU1VNRUQKIAogLS0gUnVubmlu
ZyB0ZXN0IGNhc2U6IERlYnVnZ2VyLnN0ZXBPdmVyLmV2YWwKIFBBVVNFRCAoZGVidWdnZXItc3Rh
dGVtZW50KQotUEFVU0UgQVQgZW50cnkzOjI1OjUKK1BBVVNFIEFUIHRlc3RFdmFsOjI1OjUKICAg
ICAgMjEgICAgfQogICAgICAyMiAgICAKLSAgICAgMjMgICAgZnVuY3Rpb24gZW50cnkzKCkgewor
ICAgICAyMyAgICBmdW5jdGlvbiB0ZXN0RXZhbCgpIHsKICAtPiAgMjQgICAgICAgIHxkZWJ1Z2dl
cjsKICAgICAgMjUgICAgICAgIGxldCBiZWZvcmUgPSAxOwogICAgICAyNiAgICAgICAgZXZhbCgi
MSArIDEiKTsKICAgICAgMjcgICAgICAgIGxldCBhZnRlciA9IDI7CiAKLVBBVVNFIEFUIGVudHJ5
MzoyNjo1CitQQVVTRSBBVCB0ZXN0RXZhbDoyNjo1CiAgICAgIDIyICAgIAotICAgICAyMyAgICBm
dW5jdGlvbiBlbnRyeTMoKSB7CisgICAgIDIzICAgIGZ1bmN0aW9uIHRlc3RFdmFsKCkgewogICAg
ICAyNCAgICAgICAgZGVidWdnZXI7CiAgLT4gIDI1ICAgICAgICB8bGV0IGJlZm9yZSA9IDE7CiAg
ICAgIDI2ICAgICAgICBldmFsKCIxICsgMSIpOwogICAgICAyNyAgICAgICAgbGV0IGFmdGVyID0g
MjsKICAgICAgMjggICAgfQogCi1QQVVTRSBBVCBlbnRyeTM6Mjc6NQotICAgICAyMyAgICBmdW5j
dGlvbiBlbnRyeTMoKSB7CitQQVVTRSBBVCB0ZXN0RXZhbDoyNzo1CisgICAgIDIzICAgIGZ1bmN0
aW9uIHRlc3RFdmFsKCkgewogICAgICAyNCAgICAgICAgZGVidWdnZXI7CiAgICAgIDI1ICAgICAg
ICBsZXQgYmVmb3JlID0gMTsKICAtPiAgMjYgICAgICAgIHxldmFsKCIxICsgMSIpOwpAQCAtMTIx
LDIyICsxMjQsMjIgQEAgUEFVU0UgQVQgZW50cnkzOjI3OjUKICAgICAgMjggICAgfQogICAgICAy
OSAgICAKIAotUEFVU0UgQVQgZW50cnkzOjI4OjUKK1BBVVNFIEFUIHRlc3RFdmFsOjI4OjUKICAg
ICAgMjQgICAgICAgIGRlYnVnZ2VyOwogICAgICAyNSAgICAgICAgbGV0IGJlZm9yZSA9IDE7CiAg
ICAgIDI2ICAgICAgICBldmFsKCIxICsgMSIpOwogIC0+ICAyNyAgICAgICAgfGxldCBhZnRlciA9
IDI7CiAgICAgIDI4ICAgIH0KICAgICAgMjkgICAgCi0gICAgIDMwICAgIGZ1bmN0aW9uIGVudHJ5
NCgpIHsKKyAgICAgMzAgICAgZnVuY3Rpb24gdGVzdExvY2FsRnVuY3Rpb24oKSB7CiAKLVBBVVNF
IEFUIGVudHJ5MzoyOToyCitQQVVTRSBBVCB0ZXN0RXZhbDoyOToyCiAgICAgIDI1ICAgICAgICBs
ZXQgYmVmb3JlID0gMTsKICAgICAgMjYgICAgICAgIGV2YWwoIjEgKyAxIik7CiAgICAgIDI3ICAg
ICAgICBsZXQgYWZ0ZXIgPSAyOwogIC0+ICAyOCAgICB9fAogICAgICAyOSAgICAKLSAgICAgMzAg
ICAgZnVuY3Rpb24gZW50cnk0KCkgeworICAgICAzMCAgICBmdW5jdGlvbiB0ZXN0TG9jYWxGdW5j
dGlvbigpIHsKICAgICAgMzEgICAgICAgIChmdW5jdGlvbigpIHsKIAogUkVTVU1FRApAQCAtMTQ1
LDcgKzE0OCw3IEBAIFJFU1VNRUQKIFBBVVNFRCAoZGVidWdnZXItc3RhdGVtZW50KQogUEFVU0Ug
QVQgPGFub255bW91cz46MzM6OQogICAgICAyOSAgICAKLSAgICAgMzAgICAgZnVuY3Rpb24gZW50
cnk0KCkgeworICAgICAzMCAgICBmdW5jdGlvbiB0ZXN0TG9jYWxGdW5jdGlvbigpIHsKICAgICAg
MzEgICAgICAgIChmdW5jdGlvbigpIHsKICAtPiAgMzIgICAgICAgICAgICB8ZGVidWdnZXI7CiAg
ICAgIDMzICAgICAgICAgICAgbGV0IGlubmVyID0gMTsKQEAgLTE1Myw3ICsxNTYsNyBAQCBQQVVT
RSBBVCA8YW5vbnltb3VzPjozMzo5CiAgICAgIDM1ICAgICAgICBsZXQgb3V0ZXIgPSAyOwogCiBQ
QVVTRSBBVCA8YW5vbnltb3VzPjozNDo5Ci0gICAgIDMwICAgIGZ1bmN0aW9uIGVudHJ5NCgpIHsK
KyAgICAgMzAgICAgZnVuY3Rpb24gdGVzdExvY2FsRnVuY3Rpb24oKSB7CiAgICAgIDMxICAgICAg
ICAoZnVuY3Rpb24oKSB7CiAgICAgIDMyICAgICAgICAgICAgZGVidWdnZXI7CiAgLT4gIDMzICAg
ICAgICAgICAgfGxldCBpbm5lciA9IDE7CkBAIC0xNzAsMjMgKzE3Myw5OSBAQCBQQVVTRSBBVCA8
YW5vbnltb3VzPjozNTo2CiAgICAgIDM2ICAgIH0KICAgICAgMzcgICAgCiAKLVBBVVNFIEFUIGVu
dHJ5NDozNjo1CitQQVVTRSBBVCB0ZXN0TG9jYWxGdW5jdGlvbjozNjo1CiAgICAgIDMyICAgICAg
ICAgICAgZGVidWdnZXI7CiAgICAgIDMzICAgICAgICAgICAgbGV0IGlubmVyID0gMTsKICAgICAg
MzQgICAgICAgIH0pKCk7CiAgLT4gIDM1ICAgICAgICB8bGV0IG91dGVyID0gMjsKICAgICAgMzYg
ICAgfQogICAgICAzNyAgICAKLSAgICAgMzggICAgLy8gLS0tLS0tLS0tCisgICAgIDM4ICAgIGZ1
bmN0aW9uIHRlc3RDb21tYXMoKSB7CiAKLVBBVVNFIEFUIGVudHJ5NDozNzoyCitQQVVTRSBBVCB0
ZXN0TG9jYWxGdW5jdGlvbjozNzoyCiAgICAgIDMzICAgICAgICAgICAgbGV0IGlubmVyID0gMTsK
ICAgICAgMzQgICAgICAgIH0pKCk7CiAgICAgIDM1ICAgICAgICBsZXQgb3V0ZXIgPSAyOwogIC0+
ICAzNiAgICB9fAogICAgICAzNyAgICAKLSAgICAgMzggICAgLy8gLS0tLS0tLS0tCi0gICAgIDM5
ICAgIAorICAgICAzOCAgICBmdW5jdGlvbiB0ZXN0Q29tbWFzKCkgeworICAgICAzOSAgICAgICAg
ZGVidWdnZXI7CisKK1JFU1VNRUQKKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IERlYnVnZ2VyLnN0
ZXBPdmVyLmNvbW1hcworUEFVU0VEIChkZWJ1Z2dlci1zdGF0ZW1lbnQpCitQQVVTRSBBVCB0ZXN0
Q29tbWFzOjQwOjUKKyAgICAgMzYgICAgfQorICAgICAzNyAgICAKKyAgICAgMzggICAgZnVuY3Rp
b24gdGVzdENvbW1hcygpIHsKKyAtPiAgMzkgICAgICAgIHxkZWJ1Z2dlcjsKKyAgICAgNDAgICAg
ICAgIGxldCBhID0gMSwKKyAgICAgNDEgICAgICAgICAgICBiID0gMiwKKyAgICAgNDIgICAgICAg
ICAgICBjID0gMzsKKworUEFVU0UgQVQgdGVzdENvbW1hczo0MTo1CisgICAgIDM3ICAgIAorICAg
ICAzOCAgICBmdW5jdGlvbiB0ZXN0Q29tbWFzKCkgeworICAgICAzOSAgICAgICAgZGVidWdnZXI7
CisgLT4gIDQwICAgICAgICB8bGV0IGEgPSAxLAorICAgICA0MSAgICAgICAgICAgIGIgPSAyLAor
ICAgICA0MiAgICAgICAgICAgIGMgPSAzOworICAgICA0MyAgICAgICAgdGVzdEFsZXJ0KCJjb21t
YSBsb2cgMSIpLCB0ZXN0QWxlcnQoImNvbW1hIGxvZyAyIiksIHRlc3RBbGVydCgiY29tbWEgbG9n
IDMiKTsKKworUEFVU0UgQVQgdGVzdENvbW1hczo0Mjo5CisgICAgIDM4ICAgIGZ1bmN0aW9uIHRl
c3RDb21tYXMoKSB7CisgICAgIDM5ICAgICAgICBkZWJ1Z2dlcjsKKyAgICAgNDAgICAgICAgIGxl
dCBhID0gMSwKKyAtPiAgNDEgICAgICAgICAgICB8YiA9IDIsCisgICAgIDQyICAgICAgICAgICAg
YyA9IDM7CisgICAgIDQzICAgICAgICB0ZXN0QWxlcnQoImNvbW1hIGxvZyAxIiksIHRlc3RBbGVy
dCgiY29tbWEgbG9nIDIiKSwgdGVzdEFsZXJ0KCJjb21tYSBsb2cgMyIpOworICAgICA0NCAgICB9
CisKK1BBVVNFIEFUIHRlc3RDb21tYXM6NDM6OQorICAgICAzOSAgICAgICAgZGVidWdnZXI7Cisg
ICAgIDQwICAgICAgICBsZXQgYSA9IDEsCisgICAgIDQxICAgICAgICAgICAgYiA9IDIsCisgLT4g
IDQyICAgICAgICAgICAgfGMgPSAzOworICAgICA0MyAgICAgICAgdGVzdEFsZXJ0KCJjb21tYSBs
b2cgMSIpLCB0ZXN0QWxlcnQoImNvbW1hIGxvZyAyIiksIHRlc3RBbGVydCgiY29tbWEgbG9nIDMi
KTsKKyAgICAgNDQgICAgfQorICAgICA0NSAgICAKKworUEFVU0UgQVQgdGVzdENvbW1hczo0NDo1
CisgICAgIDQwICAgICAgICBsZXQgYSA9IDEsCisgICAgIDQxICAgICAgICAgICAgYiA9IDIsCisg
ICAgIDQyICAgICAgICAgICAgYyA9IDM7CisgLT4gIDQzICAgICAgICB8dGVzdEFsZXJ0KCJjb21t
YSBsb2cgMSIpLCB0ZXN0QWxlcnQoImNvbW1hIGxvZyAyIiksIHRlc3RBbGVydCgiY29tbWEgbG9n
IDMiKTsKKyAgICAgNDQgICAgfQorICAgICA0NSAgICAKKyAgICAgNDYgICAgLy8gLS0tLS0tLS0t
CisKK1BBVVNFIEFUIHRlc3RDb21tYXM6NDQ6MzEKKyAgICAgNDAgICAgICAgIGxldCBhID0gMSwK
KyAgICAgNDEgICAgICAgICAgICBiID0gMiwKKyAgICAgNDIgICAgICAgICAgICBjID0gMzsKKyAt
PiAgNDMgICAgICAgIHRlc3RBbGVydCgiY29tbWEgbG9nIDEiKSwgfHRlc3RBbGVydCgiY29tbWEg
bG9nIDIiKSwgdGVzdEFsZXJ0KCJjb21tYSBsb2cgMyIpOworICAgICA0NCAgICB9CisgICAgIDQ1
ICAgIAorICAgICA0NiAgICAvLyAtLS0tLS0tLS0KKworUEFVU0UgQVQgdGVzdENvbW1hczo0NDo1
NworICAgICA0MCAgICAgICAgbGV0IGEgPSAxLAorICAgICA0MSAgICAgICAgICAgIGIgPSAyLAor
ICAgICA0MiAgICAgICAgICAgIGMgPSAzOworIC0+ICA0MyAgICAgICAgdGVzdEFsZXJ0KCJjb21t
YSBsb2cgMSIpLCB0ZXN0QWxlcnQoImNvbW1hIGxvZyAyIiksIHx0ZXN0QWxlcnQoImNvbW1hIGxv
ZyAzIik7CisgICAgIDQ0ICAgIH0KKyAgICAgNDUgICAgCisgICAgIDQ2ICAgIC8vIC0tLS0tLS0t
LQorCitQQVVTRSBBVCB0ZXN0Q29tbWFzOjQ1OjIKKyAgICAgNDEgICAgICAgICAgICBiID0gMiwK
KyAgICAgNDIgICAgICAgICAgICBjID0gMzsKKyAgICAgNDMgICAgICAgIHRlc3RBbGVydCgiY29t
bWEgbG9nIDEiKSwgdGVzdEFsZXJ0KCJjb21tYSBsb2cgMiIpLCB0ZXN0QWxlcnQoImNvbW1hIGxv
ZyAzIik7CisgLT4gIDQ0ICAgIH18CisgICAgIDQ1ICAgIAorICAgICA0NiAgICAvLyAtLS0tLS0t
LS0KKyAgICAgNDcgICAgCiAKIFJFU1VNRUQKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2RlYnVnZ2VyL3N0ZXBwaW5nL3N0ZXBPdmVyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcvc3RlcE92ZXIuaHRtbAppbmRleCA2Yjk0OTIzYjBjZTUz
YTIyMTNmNjBjY2I0NzRiNGQwODNmNjUyOGU1Li4zMjViNzdlY2YzY2NjYTI0YTdkZjZhMjc1NWEx
YzVmZjEyN2I1OWQxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIv
c3RlcHBpbmcvc3RlcE92ZXIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdn
ZXIvc3RlcHBpbmcvc3RlcE92ZXIuaHRtbApAQCAtOCwyNyArOCwyNyBAQCBmdW5jdGlvbiB0ZXN0
QWxlcnQoc3RyKSB7CiAgICAgYWxlcnQoc3RyKTsKIH0KIAotZnVuY3Rpb24gZW50cnkxKCkgewor
ZnVuY3Rpb24gdGVzdFN0YXRlbWVudHMoKSB7CiAgICAgZGVidWdnZXI7CiAgICAgbGV0IHggPSAx
OwogICAgIGxldCB5ID0gMjsKIH0KIAotZnVuY3Rpb24gZW50cnkyKCkgeworZnVuY3Rpb24gdGVz
dEZ1bmN0aW9ucygpIHsKICAgICBkZWJ1Z2dlcjsKICAgICBsZXQgYmVmb3JlID0gMTsKLSAgICB0
ZXN0QWxlcnQoImxvZyAxIik7CisgICAgdGVzdEFsZXJ0KCJmdW5jdGlvbiBsb2cgMSIpOwogICAg
IGxldCBhZnRlciA9IDI7CiB9CiAKLWZ1bmN0aW9uIGVudHJ5MygpIHsKK2Z1bmN0aW9uIHRlc3RF
dmFsKCkgewogICAgIGRlYnVnZ2VyOwogICAgIGxldCBiZWZvcmUgPSAxOwogICAgIGV2YWwoIjEg
KyAxIik7CiAgICAgbGV0IGFmdGVyID0gMjsKIH0KIAotZnVuY3Rpb24gZW50cnk0KCkgeworZnVu
Y3Rpb24gdGVzdExvY2FsRnVuY3Rpb24oKSB7CiAgICAgKGZ1bmN0aW9uKCkgewogICAgICAgICBk
ZWJ1Z2dlcjsKICAgICAgICAgbGV0IGlubmVyID0gMTsKQEAgLTM2LDYgKzM2LDE0IEBAIGZ1bmN0
aW9uIGVudHJ5NCgpIHsKICAgICBsZXQgb3V0ZXIgPSAyOwogfQogCitmdW5jdGlvbiB0ZXN0Q29t
bWFzKCkgeworICAgIGRlYnVnZ2VyOworICAgIGxldCBhID0gMSwKKyAgICAgICAgYiA9IDIsCisg
ICAgICAgIGMgPSAzOworICAgIHRlc3RBbGVydCgiY29tbWEgbG9nIDEiKSwgdGVzdEFsZXJ0KCJj
b21tYSBsb2cgMiIpLCB0ZXN0QWxlcnQoImNvbW1hIGxvZyAzIik7Cit9CisKIC8vIC0tLS0tLS0t
LQogCiBmdW5jdGlvbiB0ZXN0KCkKQEAgLTY5LDI1ICs3NywzMSBAQCBmdW5jdGlvbiB0ZXN0KCkK
ICAgICBhZGRUZXN0Q2FzZSh7CiAgICAgICAgIG5hbWU6ICJEZWJ1Z2dlci5zdGVwT3Zlci5zdGF0
ZW1lbnRzIiwKICAgICAgICAgZGVzY3JpcHRpb246ICJzdGVwLW92ZXIgc2hvdWxkIHN0ZXAgb3Zl
ciBzdGF0ZW1lbnRzLiIsCi0gICAgICAgIGV4cHJlc3Npb246ICJzZXRUaW1lb3V0KGVudHJ5MSki
LAorICAgICAgICBleHByZXNzaW9uOiAic2V0VGltZW91dCh0ZXN0U3RhdGVtZW50cykiLAogICAg
IH0pOwogCiAgICAgYWRkVGVzdENhc2UoewogICAgICAgICBuYW1lOiAiRGVidWdnZXIuc3RlcE92
ZXIuZnVuY3Rpb24iLAogICAgICAgICBkZXNjcmlwdGlvbjogInN0ZXAtb3ZlciBzaG91bGQgc3Rl
cCBvdmVyIGZ1bmN0aW9uIGNhbGxzLiIsCi0gICAgICAgIGV4cHJlc3Npb246ICJzZXRUaW1lb3V0
KGVudHJ5MikiLAorICAgICAgICBleHByZXNzaW9uOiAic2V0VGltZW91dCh0ZXN0RnVuY3Rpb25z
KSIsCiAgICAgfSk7CiAKICAgICBhZGRUZXN0Q2FzZSh7CiAgICAgICAgIG5hbWU6ICJEZWJ1Z2dl
ci5zdGVwT3Zlci5ldmFsIiwKICAgICAgICAgZGVzY3JpcHRpb246ICJzdGVwLW92ZXIgc2hvdWxk
IHN0ZXAgb3ZlciBhbiBldmFsIHByb2dyYW0uIiwKLSAgICAgICAgZXhwcmVzc2lvbjogInNldFRp
bWVvdXQoZW50cnkzKSIsCisgICAgICAgIGV4cHJlc3Npb246ICJzZXRUaW1lb3V0KHRlc3RFdmFs
KSIsCiAgICAgfSk7CiAKICAgICBhZGRUZXN0Q2FzZSh7CiAgICAgICAgIG5hbWU6ICJEZWJ1Z2dl
ci5zdGVwT3Zlci5pbm5lckZ1bmN0aW9uIiwKICAgICAgICAgZGVzY3JpcHRpb246ICJzdGVwLW92
ZXIgc2hvdWxkIHN0ZXAgb3V0IG9mIGEgZnVuY3Rpb24gdG8gaXRzIGNhbGxlci4iLAotICAgICAg
ICBleHByZXNzaW9uOiAic2V0VGltZW91dChlbnRyeTQpIiwKKyAgICAgICAgZXhwcmVzc2lvbjog
InNldFRpbWVvdXQodGVzdExvY2FsRnVuY3Rpb24pIiwKKyAgICB9KTsKKworICAgIGFkZFRlc3RD
YXNlKHsKKyAgICAgICAgbmFtZTogIkRlYnVnZ2VyLnN0ZXBPdmVyLmNvbW1hcyIsCisgICAgICAg
IGRlc2NyaXB0aW9uOiAic3RlcC1vdmVyIHNob3VsZCBzdGVwIG92ZXIgY29tbWEgZXhwcmVzc2lv
bnMsIHRyZWF0aW5nIHRoZW0gYXMgc3RhdGVtZW50cy4iLAorICAgICAgICBleHByZXNzaW9uOiAi
c2V0VGltZW91dCh0ZXN0Q29tbWFzKSIsCiAgICAgfSk7CiAKICAgICBsb2FkTWFpblBhZ2VDb250
ZW50KCkudGhlbigoKSA9PiB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVi
dWdnZXIvc3RlcHBpbmcvc3RlcHBpbmctZnVuY3Rpb24tY2FsbHMtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3N0ZXBwaW5nL3N0ZXBwaW5nLWZ1bmN0aW9uLWNh
bGxzLWV4cGVjdGVkLnR4dAppbmRleCBkZmQ3ZDQ2OWNkYzdiODI4OGQ1YjMyZjUwMjk5MTk4YWI1
YTFjNmFhLi5jODlhNmE3Y2U1Nzg1ZWEyNmI0MTU5Y2UxNjdmOTJkMTljZGQ1MjFhIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcvc3RlcHBpbmctZnVu
Y3Rpb24tY2FsbHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1
Z2dlci9zdGVwcGluZy9zdGVwcGluZy1mdW5jdGlvbi1jYWxscy1leHBlY3RlZC50eHQKQEAgLTk3
NSw3ICs5NzUsNyBAQCBQQVNTOiBTaG91bGQgaGF2ZSB1c2VkIGFsbCBzdGVwcy4KIAogLS0gUnVu
bmluZyB0ZXN0IGNhc2U6IERlYnVnZ2VyLnN0ZXBwaW5nLkNvbXBsZXhTdGF0ZW1lbnQ0CiBFWFBS
RVNTSU9OOiBzZXRUaW1lb3V0KGVudHJ5Q29tbWFFeHByZXNzaW9uKQotU1RFUFM6IG92ZXIsIG92
ZXIsIHJlc3VtZQorU1RFUFM6IG92ZXIsIG92ZXIsIG92ZXIsIG92ZXIsIHJlc3VtZQogUEFVU0VE
IChkZWJ1Z2dlci1zdGF0ZW1lbnQpCiBQQVVTRSBBVCBlbnRyeUNvbW1hRXhwcmVzc2lvbjo1MTo1
CiAgICAgIDQ3ICAgIH0KQEAgLTk5Niw2ICs5OTYsMjYgQEAgUEFVU0UgQVQgZW50cnlDb21tYUV4
cHJlc3Npb246NTI6NQogICAgICA1MyAgICAKICAgICAgNTQgICAgZnVuY3Rpb24gZW50cnlEb3RQ
cm9wZXJ0eUFjY2Vzc0NhbGwoKSB7CiAKK0FDVElPTjogc3RlcC1vdmVyCitQQVVTRSBBVCBlbnRy
eUNvbW1hRXhwcmVzc2lvbjo1MjoxMAorICAgICA0OCAgICAKKyAgICAgNDkgICAgZnVuY3Rpb24g
ZW50cnlDb21tYUV4cHJlc3Npb24oKSB7CisgICAgIDUwICAgICAgICBkZWJ1Z2dlcjsKKyAtPiAg
NTEgICAgICAgIGEoKSwgfGIoKSwgYSgpOworICAgICA1MiAgICB9CisgICAgIDUzICAgIAorICAg
ICA1NCAgICBmdW5jdGlvbiBlbnRyeURvdFByb3BlcnR5QWNjZXNzQ2FsbCgpIHsKKworQUNUSU9O
OiBzdGVwLW92ZXIKK1BBVVNFIEFUIGVudHJ5Q29tbWFFeHByZXNzaW9uOjUyOjE1CisgICAgIDQ4
ICAgIAorICAgICA0OSAgICBmdW5jdGlvbiBlbnRyeUNvbW1hRXhwcmVzc2lvbigpIHsKKyAgICAg
NTAgICAgICAgIGRlYnVnZ2VyOworIC0+ICA1MSAgICAgICAgYSgpLCBiKCksIHxhKCk7CisgICAg
IDUyICAgIH0KKyAgICAgNTMgICAgCisgICAgIDU0ICAgIGZ1bmN0aW9uIGVudHJ5RG90UHJvcGVy
dHlBY2Nlc3NDYWxsKCkgeworCiBBQ1RJT046IHN0ZXAtb3ZlcgogUEFVU0UgQVQgZW50cnlDb21t
YUV4cHJlc3Npb246NTM6MgogICAgICA0OSAgICBmdW5jdGlvbiBlbnRyeUNvbW1hRXhwcmVzc2lv
bigpIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zdGVwcGlu
Zy9zdGVwcGluZy1mdW5jdGlvbi1jYWxscy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Rl
YnVnZ2VyL3N0ZXBwaW5nL3N0ZXBwaW5nLWZ1bmN0aW9uLWNhbGxzLmh0bWwKaW5kZXggMGI0ZDM5
YzhkYzAzNmExNzIxNGEzZDQ5ZWEwMjVkM2I3NmZkNzE0NC4uMTFkY2E0MWI2YTU2YTY1Yzk0NjEx
ZDJiNmU1MmMzNWY0NTc4YmVhOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Rl
YnVnZ2VyL3N0ZXBwaW5nL3N0ZXBwaW5nLWZ1bmN0aW9uLWNhbGxzLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3N0ZXBwaW5nL3N0ZXBwaW5nLWZ1bmN0aW9uLWNhbGxz
Lmh0bWwKQEAgLTMyNyw3ICszMjcsOSBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgLy8gYSgp
LCBiKCksIGEoKTsKICAgICAgICAgc3RlcHM6IFsKICAgICAgICAgICAgICJvdmVyIiwKLSAgICAg
ICAgICAgICAgICAib3ZlciIsIC8vIGNvbXBsZXRlOiBhKCksIGIoKSwgYSgpCisgICAgICAgICAg
ICAgICAgIm92ZXIiLCAvLyBhKCkKKyAgICAgICAgICAgICAgICAib3ZlciIsIC8vIGIoKQorICAg
ICAgICAgICAgICAgICJvdmVyIiwgLy8gYSgpCiAgICAgICAgICAgICAicmVzdW1lIgogICAgICAg
ICBdCiAgICAgfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIv
c3RlcHBpbmcvc3RlcHBpbmctbWlzYy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZGVidWdnZXIvc3RlcHBpbmcvc3RlcHBpbmctbWlzYy1leHBlY3RlZC50eHQKaW5kZXggNTQ3
ZjNiY2IwNTg0MDEyZGQxYTE2ZDliMGYwZGI3MTg5YTg4NmRiNC4uYjBiNGZlZDJmOGVkYTE5N2Q1
Nzg0MTJhZTg3N2M2Zjc4YTQ4NjU2NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2RlYnVnZ2VyL3N0ZXBwaW5nL3N0ZXBwaW5nLW1pc2MtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zdGVwcGluZy9zdGVwcGluZy1taXNjLWV4cGVjdGVk
LnR4dApAQCAtMzg5LDcgKzM4OSw3IEBAIFBBU1M6IFNob3VsZCBoYXZlIHVzZWQgYWxsIHN0ZXBz
LgogCiAtLSBSdW5uaW5nIHRlc3QgY2FzZTogRGVidWdnZXIuc3RlcHBpbmcuVmFyaWFibGVEZWNs
YXJhdGlvbgogRVhQUkVTU0lPTjogc2V0VGltZW91dChlbnRyeVZhcmlhYmxlRGVjbGFyYXRpb24p
Ci1TVEVQUzogb3ZlciwgaW4sIGluLCBpbiwgcmVzdW1lCitTVEVQUzogb3ZlciwgaW4sIGluLCBp
biwgaW4sIGluLCBpbiwgcmVzdW1lCiBQQVVTRUQgKGRlYnVnZ2VyLXN0YXRlbWVudCkKIFBBVVNF
IEFUIGVudHJ5VmFyaWFibGVEZWNsYXJhdGlvbjo1ODo1CiAgICAgIDU0ICAgIH0KQEAgLTQxMCw2
ICs0MTAsMTYgQEAgUEFVU0UgQVQgZW50cnlWYXJpYWJsZURlY2xhcmF0aW9uOjU5OjUKICAgICAg
NjAgICAgICAgIGxldCBiID0gMiwKICAgICAgNjEgICAgICAgICAgICB5ID0gMjsKIAorQUNUSU9O
OiBzdGVwLWluCitQQVVTRSBBVCBlbnRyeVZhcmlhYmxlRGVjbGFyYXRpb246NjA6OQorICAgICA1
NiAgICBmdW5jdGlvbiBlbnRyeVZhcmlhYmxlRGVjbGFyYXRpb24oKSB7CisgICAgIDU3ICAgICAg
ICBkZWJ1Z2dlcjsKKyAgICAgNTggICAgICAgIHZhciBhID0gMSwKKyAtPiAgNTkgICAgICAgICAg
ICB8eCA9IDE7CisgICAgIDYwICAgICAgICBsZXQgYiA9IDIsCisgICAgIDYxICAgICAgICAgICAg
eSA9IDI7CisgICAgIDYyICAgICAgICBjb25zdCBjID0gMywKKwogQUNUSU9OOiBzdGVwLWluCiBQ
QVVTRSBBVCBlbnRyeVZhcmlhYmxlRGVjbGFyYXRpb246NjE6NQogICAgICA1NyAgICAgICAgZGVi
dWdnZXI7CkBAIC00MjAsNiArNDMwLDE2IEBAIFBBVVNFIEFUIGVudHJ5VmFyaWFibGVEZWNsYXJh
dGlvbjo2MTo1CiAgICAgIDYyICAgICAgICBjb25zdCBjID0gMywKICAgICAgNjMgICAgICAgICAg
ICB6ID0gMzsKIAorQUNUSU9OOiBzdGVwLWluCitQQVVTRSBBVCBlbnRyeVZhcmlhYmxlRGVjbGFy
YXRpb246NjI6OQorICAgICA1OCAgICAgICAgdmFyIGEgPSAxLAorICAgICA1OSAgICAgICAgICAg
IHggPSAxOworICAgICA2MCAgICAgICAgbGV0IGIgPSAyLAorIC0+ICA2MSAgICAgICAgICAgIHx5
ID0gMjsKKyAgICAgNjIgICAgICAgIGNvbnN0IGMgPSAzLAorICAgICA2MyAgICAgICAgICAgIHog
PSAzOworICAgICA2NCAgICB9CisKIEFDVElPTjogc3RlcC1pbgogUEFVU0UgQVQgZW50cnlWYXJp
YWJsZURlY2xhcmF0aW9uOjYzOjUKICAgICAgNTkgICAgICAgICAgICB4ID0gMTsKQEAgLTQzMCw2
ICs0NTAsMTYgQEAgUEFVU0UgQVQgZW50cnlWYXJpYWJsZURlY2xhcmF0aW9uOjYzOjUKICAgICAg
NjQgICAgfQogICAgICA2NSAgICAKIAorQUNUSU9OOiBzdGVwLWluCitQQVVTRSBBVCBlbnRyeVZh
cmlhYmxlRGVjbGFyYXRpb246NjQ6OQorICAgICA2MCAgICAgICAgbGV0IGIgPSAyLAorICAgICA2
MSAgICAgICAgICAgIHkgPSAyOworICAgICA2MiAgICAgICAgY29uc3QgYyA9IDMsCisgLT4gIDYz
ICAgICAgICAgICAgfHogPSAzOworICAgICA2NCAgICB9CisgICAgIDY1ICAgIAorICAgICA2NiAg
ICBmdW5jdGlvbiBlbnRyeURlc3RydWN0dXJpbmcoKSB7CisKIEFDVElPTjogc3RlcC1pbgogUEFV
U0UgQVQgZW50cnlWYXJpYWJsZURlY2xhcmF0aW9uOjY1OjIKICAgICAgNjEgICAgICAgICAgICB5
ID0gMjsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zdGVwcGlu
Zy9zdGVwcGluZy1taXNjLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc3Rl
cHBpbmcvc3RlcHBpbmctbWlzYy5odG1sCmluZGV4IDI3M2I5ZTYxODkwNGVlMTkxMThkNmU5MThh
ODJhYjgyYzYzMmI4MmUuLmY2OTBhYTZjNmVlZjU4ZThhYzE0NWRmYmM1Njk3NzU1M2M4MDhlMTcg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zdGVwcGluZy9zdGVw
cGluZy1taXNjLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3N0ZXBw
aW5nL3N0ZXBwaW5nLW1pc2MuaHRtbApAQCAtMTg0LDE0ICsxODQsMTYgQEAgZnVuY3Rpb24gdGVz
dCgpCiAKICAgICBhZGRTdGVwcGluZ1Rlc3RDYXNlKHsKICAgICAgICAgbmFtZTogIkRlYnVnZ2Vy
LnN0ZXBwaW5nLlZhcmlhYmxlRGVjbGFyYXRpb24iLAotICAgICAgICBkZXNjcmlwdGlvbjogIlNo
b3VsZCBiZSBhYmxlIHRvIHN0ZXAgdGhyb3VnaCB2YXJpYWJsZSBkZWNsYXJhdGlvbnMuIiwKKyAg
ICAgICAgZGVzY3JpcHRpb246ICJTaG91bGQgYmUgYWJsZSB0byBzdGVwIHRvIGVhY2ggaW5kaXZp
ZHVhbCB2YXJpYWJsZSBkZWNsYXJhdGlvbi4iLAogICAgICAgICBleHByZXNzaW9uOiAic2V0VGlt
ZW91dChlbnRyeVZhcmlhYmxlRGVjbGFyYXRpb24pIiwKICAgICAgICAgc3RlcHM6IFsKICAgICAg
ICAgICAgICJvdmVyIiwKLSAgICAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IE9wcG9ydHVu
aXR5IHRvIHBhdXNlIGF0IGFzc2lnbm1lbnQgZXhwcmVzc2lvbnMuCi0gICAgICAgICAgICAgICAg
ImluIiwgIC8vIGEgPSAxLCB4ID0gMQotICAgICAgICAgICAgICAgICJpbiIsICAvLyBiID0gMiwg
eSA9IDIKLSAgICAgICAgICAgICAgICAiaW4iLCAgLy8gYyA9IDMsIHogPSAzCisgICAgICAgICAg
ICAgICAgImluIiwgIC8vIGEgPSAxCisgICAgICAgICAgICAgICAgImluIiwgIC8vIHggPSAxCisg
ICAgICAgICAgICAgICAgImluIiwgIC8vIGIgPSAyCisgICAgICAgICAgICAgICAgImluIiwgIC8v
IHkgPSAyCisgICAgICAgICAgICAgICAgImluIiwgIC8vIGMgPSAzCisgICAgICAgICAgICAgICAg
ImluIiwgIC8vIHogPSAzCiAgICAgICAgICAgICAicmVzdW1lIiwKICAgICAgICAgXQogICAgIH0p
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2Vz
L2phdmFzY3JpcHQtdGVzdHMvc2FtcGxlLWpxdWVyeS1leHBlY3RlZC5qcyBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL3NhbXBsZS1q
cXVlcnktZXhwZWN0ZWQuanMKaW5kZXggNmQ1OTE3MzI5MDQ3MjNhODI3M2M0NzMyNTY3MWQyMzVl
YzQ1NjU5NS4uZTFmMWY5NzFkMDJjZDkxZTY2MTkxZWJmOTU3ZTBmNWEyODViMzYyMiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3Jp
cHQtdGVzdHMvc2FtcGxlLWpxdWVyeS1leHBlY3RlZC5qcworKysgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy9zYW1wbGUtanF1ZXJ5
LWV4cGVjdGVkLmpzCkBAIC02Miw3ICs2Miw4IEBACiAgICAgICAgICAgICAgICAgaWYgKGEgPSBv
LmdldEVsZW1lbnRCeUlkKGlbMl0pLCBhICYmIGEucGFyZW50Tm9kZSkgewogICAgICAgICAgICAg
ICAgICAgICBpZiAoYS5pZCAhPT0gaVsyXSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biByLmZpbmQoZSk7Ci0gICAgICAgICAgICAgICAgICAgIHRoaXMubGVuZ3RoID0gMSwgdGhpc1sw
XSA9IGEKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5sZW5ndGggPSAxLAorICAgICAgICAgICAg
ICAgICAgICB0aGlzWzBdID0gYQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBy
ZXR1cm4gdGhpcy5jb250ZXh0ID0gbywgdGhpcy5zZWxlY3RvciA9IGUsIHRoaXMKICAgICAgICAg
ICAgIH0KQEAgLTExNCw3ICsxMTUsOSBAQAogICAgICAgICBwdXNoOiBkLAogICAgICAgICBzb3J0
OiBbXS5zb3J0LAogICAgICAgICBzcGxpY2U6IFtdLnNwbGljZQotICAgIH0sIGIuZm4uaW5pdC5w
cm90b3R5cGUgPSBiLmZuLCBiLmV4dGVuZCA9IGIuZm4uZXh0ZW5kID0gZnVuY3Rpb24oKSB7Cisg
ICAgfSwKKyAgICBiLmZuLmluaXQucHJvdG90eXBlID0gYi5mbiwKKyAgICBiLmV4dGVuZCA9IGIu
Zm4uZXh0ZW5kID0gZnVuY3Rpb24oKSB7CiAgICAgICAgIHZhciBlLAogICAgICAgICAgICAgbiwK
ICAgICAgICAgICAgIHIsCkBAIC0xMjgsOSArMTMxLDEyIEBACiAgICAgICAgIGZvciAoImJvb2xl
YW4iID09IHR5cGVvZiBzICYmIChjID0gcywgcyA9IGFyZ3VtZW50c1sxXSB8fCB7fSwgdSA9IDIp
LCAib2JqZWN0IiA9PSB0eXBlb2YgcyB8fCBiLmlzRnVuY3Rpb24ocykgfHwgKHMgPSB7fSksIGwg
PT09IHUgJiYgKHMgPSB0aGlzLCAtLXUpOyBsID4gdTsgdSsrKQogICAgICAgICAgICAgaWYgKG51
bGwgIT0gKG8gPSBhcmd1bWVudHNbdV0pKQogICAgICAgICAgICAgICAgIGZvciAoaSBpbiBvKQot
ICAgICAgICAgICAgICAgICAgICBlID0gc1tpXSwgciA9IG9baV0sIHMgIT09IHIgJiYgKGMgJiYg
ciAmJiAoYi5pc1BsYWluT2JqZWN0KHIpIHx8IChuID0gYi5pc0FycmF5KHIpKSkgPyAobiA/IChu
ID0gITEsIGEgPSBlICYmIGIuaXNBcnJheShlKSA/IGUgOiBbXSkgOiBhID0gZSAmJiBiLmlzUGxh
aW5PYmplY3QoZSkgPyBlIDoge30sIHNbaV0gPSBiLmV4dGVuZChjLCBhLCByKSkgOiByICE9PSB0
ICYmIChzW2ldID0gcikpOworICAgICAgICAgICAgICAgICAgICBlID0gc1tpXSwKKyAgICAgICAg
ICAgICAgICAgICAgciA9IG9baV0sCisgICAgICAgICAgICAgICAgICAgIHMgIT09IHIgJiYgKGMg
JiYgciAmJiAoYi5pc1BsYWluT2JqZWN0KHIpIHx8IChuID0gYi5pc0FycmF5KHIpKSkgPyAobiA/
IChuID0gITEsIGEgPSBlICYmIGIuaXNBcnJheShlKSA/IGUgOiBbXSkgOiBhID0gZSAmJiBiLmlz
UGxhaW5PYmplY3QoZSkgPyBlIDoge30sIHNbaV0gPSBiLmV4dGVuZChjLCBhLCByKSkgOiByICE9
PSB0ICYmIChzW2ldID0gcikpOwogICAgICAgICByZXR1cm4gcwotICAgIH0sIGIuZXh0ZW5kKHsK
KyAgICB9LAorICAgIGIuZXh0ZW5kKHsKICAgICAgICAgbm9Db25mbGljdDogZnVuY3Rpb24odCkg
ewogICAgICAgICAgICAgcmV0dXJuIGUuJCA9PT0gYiAmJiAoZS4kID0gdSksIHQgJiYgZS5qUXVl
cnkgPT09IGIgJiYgKGUualF1ZXJ5ID0gcyksIGIKICAgICAgICAgfSwKQEAgLTE0Myw3ICsxNDks
OCBAQAogICAgICAgICAgICAgaWYgKGUgPT09ICEwID8gIS0tYi5yZWFkeVdhaXQgOiAhYi5pc1Jl
YWR5KSB7CiAgICAgICAgICAgICAgICAgaWYgKCFvLmJvZHkpCiAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBzZXRUaW1lb3V0KGIucmVhZHkpOwotICAgICAgICAgICAgICAgIGIuaXNSZWFkeSA9
ICEwLCBlICE9PSAhMCAmJiAtLWIucmVhZHlXYWl0ID4gMCB8fCAobi5yZXNvbHZlV2l0aChvLCBb
Yl0pLCBiLmZuLnRyaWdnZXIgJiYgYihvKS50cmlnZ2VyKCJyZWFkeSIpLm9mZigicmVhZHkiKSkK
KyAgICAgICAgICAgICAgICBiLmlzUmVhZHkgPSAhMCwKKyAgICAgICAgICAgICAgICBlICE9PSAh
MCAmJiAtLWIucmVhZHlXYWl0ID4gMCB8fCAobi5yZXNvbHZlV2l0aChvLCBbYl0pLCBiLmZuLnRy
aWdnZXIgJiYgYihvKS50cmlnZ2VyKCJyZWFkeSIpLm9mZigicmVhZHkiKSkKICAgICAgICAgICAg
IH0KICAgICAgICAgfSwKICAgICAgICAgaXNGdW5jdGlvbjogZnVuY3Rpb24oZSkgewpAQCAtMTg3
LDcgKzE5NCw4IEBACiAgICAgICAgIHBhcnNlSFRNTDogZnVuY3Rpb24oZSwgdCwgbikgewogICAg
ICAgICAgICAgaWYgKCFlIHx8ICJzdHJpbmciICE9IHR5cGVvZiBlKQogICAgICAgICAgICAgICAg
IHJldHVybiBudWxsOwotICAgICAgICAgICAgImJvb2xlYW4iID09IHR5cGVvZiB0ICYmIChuID0g
dCwgdCA9ICExKSwgdCA9IHQgfHwgbzsKKyAgICAgICAgICAgICJib29sZWFuIiA9PSB0eXBlb2Yg
dCAmJiAobiA9IHQsIHQgPSAhMSksCisgICAgICAgICAgICB0ID0gdCB8fCBvOwogICAgICAgICAg
ICAgdmFyIHIgPSBDLmV4ZWMoZSksCiAgICAgICAgICAgICAgICAgaSA9ICFuICYmIFtdOwogICAg
ICAgICAgICAgcmV0dXJuIHIgPyBbdC5jcmVhdGVFbGVtZW50KHJbMV0pXSA6IChyID0gYi5idWls
ZEZyYWdtZW50KFtlXSwgdCwgaSksIGkgJiYgYihpKS5yZW1vdmUoKSwgYi5tZXJnZShbXSwgci5j
aGlsZE5vZGVzKSkKQEAgLTI4MSw3ICsyODksOCBAQAogICAgICAgICAgICAgICAgIG8gPSAwLAog
ICAgICAgICAgICAgICAgIGEgPSBlLmxlbmd0aDsKICAgICAgICAgICAgIGZvciAobiA9ICEhbjsg
YSA+IG87IG8rKykKLSAgICAgICAgICAgICAgICByID0gISF0KGVbb10sIG8pLCBuICE9PSByICYm
IGkucHVzaChlW29dKTsKKyAgICAgICAgICAgICAgICByID0gISF0KGVbb10sIG8pLAorICAgICAg
ICAgICAgICAgIG4gIT09IHIgJiYgaS5wdXNoKGVbb10pOwogICAgICAgICAgICAgcmV0dXJuIGkK
ICAgICAgICAgfSwKICAgICAgICAgbWFwOiBmdW5jdGlvbihlLCB0LCBuKSB7CkBAIC0yOTIsMTAg
KzMwMSwxMiBAQAogICAgICAgICAgICAgICAgIHMgPSBbXTsKICAgICAgICAgICAgIGlmIChhKQog
ICAgICAgICAgICAgICAgIGZvciAoOyBvID4gaTsgaSsrKQotICAgICAgICAgICAgICAgICAgICBy
ID0gdChlW2ldLCBpLCBuKSwgbnVsbCAhPSByICYmIChzW3MubGVuZ3RoXSA9IHIpOworICAgICAg
ICAgICAgICAgICAgICByID0gdChlW2ldLCBpLCBuKSwKKyAgICAgICAgICAgICAgICAgICAgbnVs
bCAhPSByICYmIChzW3MubGVuZ3RoXSA9IHIpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgICAgIGZvciAoaSBpbiBlKQotICAgICAgICAgICAgICAgICAgICByID0gdChlW2ldLCBpLCBu
KSwgbnVsbCAhPSByICYmIChzW3MubGVuZ3RoXSA9IHIpOworICAgICAgICAgICAgICAgICAgICBy
ID0gdChlW2ldLCBpLCBuKSwKKyAgICAgICAgICAgICAgICAgICAgbnVsbCAhPSByICYmIChzW3Mu
bGVuZ3RoXSA9IHIpOwogICAgICAgICAgICAgcmV0dXJuIGYuYXBwbHkoW10sIHMpCiAgICAgICAg
IH0sCiAgICAgICAgIGd1aWQ6IDEsCkBAIC0zMjUsMTQgKzMzNiwxNyBAQAogICAgICAgICBub3c6
IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgcmV0dXJuIChuZXcgRGF0ZSkuZ2V0VGltZSgpCiAg
ICAgICAgIH0KLSAgICB9KSwgYi5yZWFkeS5wcm9taXNlID0gZnVuY3Rpb24odCkgeworICAgIH0p
LAorICAgIGIucmVhZHkucHJvbWlzZSA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgaWYgKCFuKQog
ICAgICAgICAgICAgaWYgKG4gPSBiLkRlZmVycmVkKCksICJjb21wbGV0ZSIgPT09IG8ucmVhZHlT
dGF0ZSkKICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGIucmVhZHkpOwogICAgICAgICAgICAg
ZWxzZSBpZiAoby5hZGRFdmVudExpc3RlbmVyKQotICAgICAgICAgICAgICAgIG8uYWRkRXZlbnRM
aXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIEgsICExKSwgZS5hZGRFdmVudExpc3RlbmVyKCJs
b2FkIiwgSCwgITEpOworICAgICAgICAgICAgICAgIG8uYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29u
dGVudExvYWRlZCIsIEgsICExKSwKKyAgICAgICAgICAgICAgICBlLmFkZEV2ZW50TGlzdGVuZXIo
ImxvYWQiLCBILCAhMSk7CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBvLmF0
dGFjaEV2ZW50KCJvbnJlYWR5c3RhdGVjaGFuZ2UiLCBIKSwgZS5hdHRhY2hFdmVudCgib25sb2Fk
IiwgSCk7CisgICAgICAgICAgICAgICAgby5hdHRhY2hFdmVudCgib25yZWFkeXN0YXRlY2hhbmdl
IiwgSCksCisgICAgICAgICAgICAgICAgZS5hdHRhY2hFdmVudCgib25sb2FkIiwgSCk7CiAgICAg
ICAgICAgICAgICAgdmFyIHIgPSAhMTsKICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAg
ICAgICAgICAgICByID0gbnVsbCA9PSBlLmZyYW1lRWxlbWVudCAmJiBvLmRvY3VtZW50RWxlbWVu
dApAQCAtMzQ0LDEyICszNTgsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2gg
KGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2V0VGltZW91dChhLCA1
MCkKICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIHEo
KSwgYi5yZWFkeSgpCisgICAgICAgICAgICAgICAgICAgICAgICBxKCksCisgICAgICAgICAgICAg
ICAgICAgICAgICBiLnJlYWR5KCkKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIH0oKQogICAgICAgICAgICAgfQogICAgICAgICByZXR1cm4gbi5wcm9taXNlKHQpCi0gICAg
fSwgYi5lYWNoKCJCb29sZWFuIE51bWJlciBTdHJpbmcgRnVuY3Rpb24gQXJyYXkgRGF0ZSBSZWdF
eHAgT2JqZWN0IEVycm9yIi5zcGxpdCgiICIpLCBmdW5jdGlvbihlLCB0KSB7CisgICAgfSwKKyAg
ICBiLmVhY2goIkJvb2xlYW4gTnVtYmVyIFN0cmluZyBGdW5jdGlvbiBBcnJheSBEYXRlIFJlZ0V4
cCBPYmplY3QgRXJyb3IiLnNwbGl0KCIgIiksIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgbFsi
W29iamVjdCAiICsgdCArICJdIl0gPSB0LnRvTG93ZXJDYXNlKCkKICAgICB9KTsKICAgICBmdW5j
dGlvbiBNKGUpIHsKQEAgLTM4MSw3ICszOTcsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAg
ciA9ICExOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIG4gPSAhMSwgdSAmJiAobCA/IGwubGVuZ3RoICYmIGMobC5z
aGlmdCgpKSA6IHIgPyB1ID0gW10gOiBwLmRpc2FibGUoKSkKKyAgICAgICAgICAgICAgICBuID0g
ITEsCisgICAgICAgICAgICAgICAgdSAmJiAobCA/IGwubGVuZ3RoICYmIGMobC5zaGlmdCgpKSA6
IHIgPyB1ID0gW10gOiBwLmRpc2FibGUoKSkKICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICBw
ID0gewogICAgICAgICAgICAgICAgIGFkZDogZnVuY3Rpb24oKSB7CkBAIC0zOTIsNyArNDA5LDgg
QEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBiLnR5cGUobik7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmdW5jdGlvbiIgPT09IHIgPyBlLnVuaXF1
ZSAmJiBwLmhhcyhuKSB8fCB1LnB1c2gobikgOiBuICYmIG4ubGVuZ3RoICYmICJzdHJpbmciICE9
PSByICYmIGkobikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQotICAgICAgICAgICAg
ICAgICAgICAgICAgfSkoYXJndW1lbnRzKSwgbiA/IG8gPSB1Lmxlbmd0aCA6IHIgJiYgKHMgPSB0
LCBjKHIpKQorICAgICAgICAgICAgICAgICAgICAgICAgfSkoYXJndW1lbnRzKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIG4gPyBvID0gdS5sZW5ndGggOiByICYmIChzID0gdCwgYyhyKSkKICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcwogICAg
ICAgICAgICAgICAgIH0sCkBAIC00MDAsNyArNDE4LDggQEAKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHUgJiYgYi5lYWNoKGFyZ3VtZW50cywgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAg
ICAgICAgICAgICAgICAgdmFyIHI7CiAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoKHIg
PSBiLmluQXJyYXkodCwgdSwgcikpID4gLTEpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
dS5zcGxpY2UociwgMSksIG4gJiYgKG8gPj0gciAmJiBvLS0sIGEgPj0gciAmJiBhLS0pCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdS5zcGxpY2UociwgMSksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbiAmJiAobyA+PSByICYmIG8tLSwgYSA+PSByICYmIGEtLSkKICAgICAgICAg
ICAgICAgICAgICAgfSksIHRoaXMKICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAg
IGhhczogZnVuY3Rpb24oZSkgewpAQCAtNDMyLDcgKzQ1MSw4IEBACiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfTsKICAgICAgICAgcmV0dXJuIHAKLSAgICB9LCBiLmV4dGVuZCh7Cisg
ICAgfSwKKyAgICBiLmV4dGVuZCh7CiAgICAgICAgIERlZmVycmVkOiBmdW5jdGlvbihlKSB7CiAg
ICAgICAgICAgICB2YXIgdCA9IFtbInJlc29sdmUiLCAiZG9uZSIsIGIuQ2FsbGJhY2tzKCJvbmNl
IG1lbW9yeSIpLCAicmVzb2x2ZWQiXSwgWyJyZWplY3QiLCAiZmFpbCIsIGIuQ2FsbGJhY2tzKCJv
bmNlIG1lbW9yeSIpLCAicmVqZWN0ZWQiXSwgWyJub3RpZnkiLCAicHJvZ3Jlc3MiLCBiLkNhbGxi
YWNrcygibWVtb3J5IildXSwKICAgICAgICAgICAgICAgICBuID0gInBlbmRpbmciLApAQCAtNDUz
LDcgKzQ3Myw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9
IHMgJiYgcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZSAmJiBiLmlzRnVuY3Rpb24oZS5wcm9taXNlKSA/IGUucHJvbWlzZSgpLmRv
bmUobi5yZXNvbHZlKS5mYWlsKG4ucmVqZWN0KS5wcm9ncmVzcyhuLm5vdGlmeSkgOiBuW2EgKyAi
V2l0aCJdKHRoaXMgPT09IHIgPyBuLnByb21pc2UoKSA6IHRoaXMsIHMgPyBbZV0gOiBhcmd1bWVu
dHMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfSksIGUgPSBudWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IG51bGwKICAgICAgICAgICAgICAgICAg
ICAgICAgIH0pLnByb21pc2UoKQogICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAg
ICAgICAgICBwcm9taXNlOiBmdW5jdGlvbihlKSB7CkBAIC00NjQsMTEgKzQ4NSwxNCBAQAogICAg
ICAgICAgICAgcmV0dXJuIHIucGlwZSA9IHIudGhlbiwgYi5lYWNoKHQsIGZ1bmN0aW9uKGUsIG8p
IHsKICAgICAgICAgICAgICAgICB2YXIgYSA9IG9bMl0sCiAgICAgICAgICAgICAgICAgICAgIHMg
PSBvWzNdOwotICAgICAgICAgICAgICAgIHJbb1sxXV0gPSBhLmFkZCwgcyAmJiBhLmFkZChmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgICAgICByW29bMV1dID0gYS5hZGQsCisgICAgICAgICAgICAg
ICAgcyAmJiBhLmFkZChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgbiA9IHMKLSAg
ICAgICAgICAgICAgICB9LCB0WzEgXiBlXVsyXS5kaXNhYmxlLCB0WzJdWzJdLmxvY2spLCBpW29b
MF1dID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgfSwgdFsxIF4gZV1bMl0uZGlzYWJs
ZSwgdFsyXVsyXS5sb2NrKSwKKyAgICAgICAgICAgICAgICBpW29bMF1dID0gZnVuY3Rpb24oKSB7
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpW29bMF0gKyAiV2l0aCJdKHRoaXMgPT09IGkg
PyByIDogdGhpcywgYXJndW1lbnRzKSwgdGhpcwotICAgICAgICAgICAgICAgIH0sIGlbb1swXSAr
ICJXaXRoIl0gPSBhLmZpcmVXaXRoCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAg
ICBpW29bMF0gKyAiV2l0aCJdID0gYS5maXJlV2l0aAogICAgICAgICAgICAgfSksIHIucHJvbWlz
ZShpKSwgZSAmJiBlLmNhbGwoaSwgaSksIGkKICAgICAgICAgfSwKICAgICAgICAgd2hlbjogZnVu
Y3Rpb24oZSkgewpAQCAtNDc5LDcgKzUwMyw5IEBACiAgICAgICAgICAgICAgICAgbyA9IDEgPT09
IGkgPyBlIDogYi5EZWZlcnJlZCgpLAogICAgICAgICAgICAgICAgIGEgPSBmdW5jdGlvbihlLCB0
LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihyKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICB0W2VdID0gdGhpcywgbltlXSA9IGFyZ3VtZW50cy5sZW5ndGggPiAx
ID8gaC5jYWxsKGFyZ3VtZW50cykgOiByLCBuID09PSBzID8gby5ub3RpZnlXaXRoKHQsIG4pIDog
LS1pIHx8IG8ucmVzb2x2ZVdpdGgodCwgbikKKyAgICAgICAgICAgICAgICAgICAgICAgIHRbZV0g
PSB0aGlzLAorICAgICAgICAgICAgICAgICAgICAgICAgbltlXSA9IGFyZ3VtZW50cy5sZW5ndGgg
PiAxID8gaC5jYWxsKGFyZ3VtZW50cykgOiByLAorICAgICAgICAgICAgICAgICAgICAgICAgbiA9
PT0gcyA/IG8ubm90aWZ5V2l0aCh0LCBuKSA6IC0taSB8fCBvLnJlc29sdmVXaXRoKHQsIG4pCiAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAg
IHMsCkBAIC00OTAsNyArNTE2LDggQEAKICAgICAgICAgICAgICAgICAgICAgblt0XSAmJiBiLmlz
RnVuY3Rpb24oblt0XS5wcm9taXNlKSA/IG5bdF0ucHJvbWlzZSgpLmRvbmUoYSh0LCBsLCBuKSku
ZmFpbChvLnJlamVjdCkucHJvZ3Jlc3MoYSh0LCB1LCBzKSkgOiAtLWk7CiAgICAgICAgICAgICBy
ZXR1cm4gaSB8fCBvLnJlc29sdmVXaXRoKGwsIG4pLCBvLnByb21pc2UoKQogICAgICAgICB9Ci0g
ICAgfSksIGIuc3VwcG9ydCA9IGZ1bmN0aW9uKCkgeworICAgIH0pLAorICAgIGIuc3VwcG9ydCA9
IGZ1bmN0aW9uKCkgewogICAgICAgICB2YXIgdCwKICAgICAgICAgICAgIG4sCiAgICAgICAgICAg
ICByLApAQCAtNTA0LDcgKzUzMSwxMSBAQAogICAgICAgICAgICAgZCA9IG8uY3JlYXRlRWxlbWVu
dCgiZGl2Iik7CiAgICAgICAgIGlmIChkLnNldEF0dHJpYnV0ZSgiY2xhc3NOYW1lIiwgInQiKSwg
ZC5pbm5lckhUTUwgPSAiICA8bGluay8+PHRhYmxlPjwvdGFibGU+PGEgaHJlZj0nL2EnPmE8L2E+
PGlucHV0IHR5cGU9J2NoZWNrYm94Jy8+IiwgbiA9IGQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioi
KSwgciA9IGQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImEiKVswXSwgIW4gfHwgIXIgfHwgIW4ubGVu
Z3RoKQogICAgICAgICAgICAgcmV0dXJuIHt9OwotICAgICAgICBzID0gby5jcmVhdGVFbGVtZW50
KCJzZWxlY3QiKSwgbCA9IHMuYXBwZW5kQ2hpbGQoby5jcmVhdGVFbGVtZW50KCJvcHRpb24iKSks
IGEgPSBkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIpWzBdLCByLnN0eWxlLmNzc1RleHQg
PSAidG9wOjFweDtmbG9hdDpsZWZ0O29wYWNpdHk6LjUiLCB0ID0geworICAgICAgICBzID0gby5j
cmVhdGVFbGVtZW50KCJzZWxlY3QiKSwKKyAgICAgICAgbCA9IHMuYXBwZW5kQ2hpbGQoby5jcmVh
dGVFbGVtZW50KCJvcHRpb24iKSksCisgICAgICAgIGEgPSBkLmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJpbnB1dCIpWzBdLAorICAgICAgICByLnN0eWxlLmNzc1RleHQgPSAidG9wOjFweDtmbG9hdDps
ZWZ0O29wYWNpdHk6LjUiLAorICAgICAgICB0ID0gewogICAgICAgICAgICAgZ2V0U2V0QXR0cmli
dXRlOiAidCIgIT09IGQuY2xhc3NOYW1lLAogICAgICAgICAgICAgbGVhZGluZ1doaXRlc3BhY2U6
IDMgPT09IGQuZmlyc3RDaGlsZC5ub2RlVHlwZSwKICAgICAgICAgICAgIHRib2R5OiAhZC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGJvZHkiKS5sZW5ndGgsCkBAIC01MjUsMTMgKzU1NiwyOSBAQAog
ICAgICAgICAgICAgcmVsaWFibGVNYXJnaW5SaWdodDogITAsCiAgICAgICAgICAgICBib3hTaXpp
bmdSZWxpYWJsZTogITAsCiAgICAgICAgICAgICBwaXhlbFBvc2l0aW9uOiAhMQotICAgICAgICB9
LCBhLmNoZWNrZWQgPSAhMCwgdC5ub0Nsb25lQ2hlY2tlZCA9IGEuY2xvbmVOb2RlKCEwKS5jaGVj
a2VkLCBzLmRpc2FibGVkID0gITAsIHQub3B0RGlzYWJsZWQgPSAhbC5kaXNhYmxlZDsKKyAgICAg
ICAgfSwKKyAgICAgICAgYS5jaGVja2VkID0gITAsCisgICAgICAgIHQubm9DbG9uZUNoZWNrZWQg
PSBhLmNsb25lTm9kZSghMCkuY2hlY2tlZCwKKyAgICAgICAgcy5kaXNhYmxlZCA9ICEwLAorICAg
ICAgICB0Lm9wdERpc2FibGVkID0gIWwuZGlzYWJsZWQ7CiAgICAgICAgIHRyeSB7CiAgICAgICAg
ICAgICBkZWxldGUgZC50ZXN0CiAgICAgICAgIH0gY2F0Y2ggKGgpIHsKICAgICAgICAgICAgIHQu
ZGVsZXRlRXhwYW5kbyA9ICExCiAgICAgICAgIH0KLSAgICAgICAgYSA9IG8uY3JlYXRlRWxlbWVu
dCgiaW5wdXQiKSwgYS5zZXRBdHRyaWJ1dGUoInZhbHVlIiwgIiIpLCB0LmlucHV0ID0gIiIgPT09
IGEuZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpLCBhLnZhbHVlID0gInQiLCBhLnNldEF0dHJpYnV0ZSgi
dHlwZSIsICJyYWRpbyIpLCB0LnJhZGlvVmFsdWUgPSAidCIgPT09IGEudmFsdWUsIGEuc2V0QXR0
cmlidXRlKCJjaGVja2VkIiwgInQiKSwgYS5zZXRBdHRyaWJ1dGUoIm5hbWUiLCAidCIpLCB1ID0g
by5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksIHUuYXBwZW5kQ2hpbGQoYSksIHQuYXBwZW5kQ2hl
Y2tlZCA9IGEuY2hlY2tlZCwgdC5jaGVja0Nsb25lID0gdS5jbG9uZU5vZGUoITApLmNsb25lTm9k
ZSghMCkubGFzdENoaWxkLmNoZWNrZWQsIGQuYXR0YWNoRXZlbnQgJiYgKGQuYXR0YWNoRXZlbnQo
Im9uY2xpY2siLCBmdW5jdGlvbigpIHsKKyAgICAgICAgYSA9IG8uY3JlYXRlRWxlbWVudCgiaW5w
dXQiKSwKKyAgICAgICAgYS5zZXRBdHRyaWJ1dGUoInZhbHVlIiwgIiIpLAorICAgICAgICB0Lmlu
cHV0ID0gIiIgPT09IGEuZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpLAorICAgICAgICBhLnZhbHVlID0g
InQiLAorICAgICAgICBhLnNldEF0dHJpYnV0ZSgidHlwZSIsICJyYWRpbyIpLAorICAgICAgICB0
LnJhZGlvVmFsdWUgPSAidCIgPT09IGEudmFsdWUsCisgICAgICAgIGEuc2V0QXR0cmlidXRlKCJj
aGVja2VkIiwgInQiKSwKKyAgICAgICAgYS5zZXRBdHRyaWJ1dGUoIm5hbWUiLCAidCIpLAorICAg
ICAgICB1ID0gby5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksCisgICAgICAgIHUuYXBwZW5kQ2hp
bGQoYSksCisgICAgICAgIHQuYXBwZW5kQ2hlY2tlZCA9IGEuY2hlY2tlZCwKKyAgICAgICAgdC5j
aGVja0Nsb25lID0gdS5jbG9uZU5vZGUoITApLmNsb25lTm9kZSghMCkubGFzdENoaWxkLmNoZWNr
ZWQsCisgICAgICAgIGQuYXR0YWNoRXZlbnQgJiYgKGQuYXR0YWNoRXZlbnQoIm9uY2xpY2siLCBm
dW5jdGlvbigpIHsKICAgICAgICAgICAgIHQubm9DbG9uZUV2ZW50ID0gITEKICAgICAgICAgfSks
IGQuY2xvbmVOb2RlKCEwKS5jbGljaygpKTsKICAgICAgICAgZm9yIChmIGluIHsKQEAgLTUzOSw3
ICs1ODYsOCBAQAogICAgICAgICAgICAgY2hhbmdlOiAhMCwKICAgICAgICAgICAgIGZvY3VzaW46
ICEwCiAgICAgICAgIH0pCi0gICAgICAgICAgICBkLnNldEF0dHJpYnV0ZShjID0gIm9uIiArIGYs
ICJ0IiksIHRbZiArICJCdWJibGVzIl0gPSBjIGluIGUgfHwgZC5hdHRyaWJ1dGVzW2NdLmV4cGFu
ZG8gPT09ICExOworICAgICAgICAgICAgZC5zZXRBdHRyaWJ1dGUoYyA9ICJvbiIgKyBmLCAidCIp
LAorICAgICAgICAgICAgdFtmICsgIkJ1YmJsZXMiXSA9IGMgaW4gZSB8fCBkLmF0dHJpYnV0ZXNb
Y10uZXhwYW5kbyA9PT0gITE7CiAgICAgICAgIHJldHVybiBkLnN0eWxlLmJhY2tncm91bmRDbGlw
ID0gImNvbnRlbnQtYm94IiwgZC5jbG9uZU5vZGUoITApLnN0eWxlLmJhY2tncm91bmRDbGlwID0g
IiIsIHQuY2xlYXJDbG9uZVN0eWxlID0gImNvbnRlbnQtYm94IiA9PT0gZC5zdHlsZS5iYWNrZ3Jv
dW5kQ2xpcCwgYihmdW5jdGlvbigpIHsKICAgICAgICAgICAgIHZhciBuLAogICAgICAgICAgICAg
ICAgIHIsCkBAIC02MTUsNyArNjYzLDggQEAKICAgICAgICAgICAgIHZhciB0ID0gZS5ub2RlTmFt
ZSAmJiBiLm5vRGF0YVtlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldOwogICAgICAgICAgICAgcmV0
dXJuICF0IHx8IHQgIT09ICEwICYmIGUuZ2V0QXR0cmlidXRlKCJjbGFzc2lkIikgPT09IHQKICAg
ICAgICAgfQotICAgIH0pLCBiLmZuLmV4dGVuZCh7CisgICAgfSksCisgICAgYi5mbi5leHRlbmQo
ewogICAgICAgICBkYXRhOiBmdW5jdGlvbihlLCBuKSB7CiAgICAgICAgICAgICB2YXIgciwKICAg
ICAgICAgICAgICAgICBpLApAQCAtNjI1LDcgKzY3NCw4IEBACiAgICAgICAgICAgICBpZiAoZSA9
PT0gdCkgewogICAgICAgICAgICAgICAgIGlmICh0aGlzLmxlbmd0aCAmJiAocyA9IGIuZGF0YShv
KSwgMSA9PT0gby5ub2RlVHlwZSAmJiAhYi5fZGF0YShvLCAicGFyc2VkQXR0cnMiKSkpIHsKICAg
ICAgICAgICAgICAgICAgICAgZm9yIChyID0gby5hdHRyaWJ1dGVzOyByLmxlbmd0aCA+IGE7IGEr
KykKLSAgICAgICAgICAgICAgICAgICAgICAgIGkgPSByW2FdLm5hbWUsIGkuaW5kZXhPZigiZGF0
YS0iKSB8fCAoaSA9IGIuY2FtZWxDYXNlKGkuc2xpY2UoNSkpLCBXKG8sIGksIHNbaV0pKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGkgPSByW2FdLm5hbWUsCisgICAgICAgICAgICAgICAgICAg
ICAgICBpLmluZGV4T2YoImRhdGEtIikgfHwgKGkgPSBiLmNhbWVsQ2FzZShpLnNsaWNlKDUpKSwg
VyhvLCBpLCBzW2ldKSk7CiAgICAgICAgICAgICAgICAgICAgIGIuX2RhdGEobywgInBhcnNlZEF0
dHJzIiwgITApCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHJldHVybiBzCkBA
IC02NzgsMjIgKzcyOCwyOCBAQAogICAgICAgICAgICAgICAgIGEgPSBmdW5jdGlvbigpIHsKICAg
ICAgICAgICAgICAgICAgICAgYi5kZXF1ZXVlKGUsIHQpCiAgICAgICAgICAgICAgICAgfTsKLSAg
ICAgICAgICAgICJpbnByb2dyZXNzIiA9PT0gaSAmJiAoaSA9IG4uc2hpZnQoKSwgci0tKSwgby5j
dXIgPSBpLCBpICYmICgiZngiID09PSB0ICYmIG4udW5zaGlmdCgiaW5wcm9ncmVzcyIpLCBkZWxl
dGUgby5zdG9wLCBpLmNhbGwoZSwgYSwgbykpLCAhciAmJiBvICYmIG8uZW1wdHkuZmlyZSgpCisg
ICAgICAgICAgICAiaW5wcm9ncmVzcyIgPT09IGkgJiYgKGkgPSBuLnNoaWZ0KCksIHItLSksCisg
ICAgICAgICAgICBvLmN1ciA9IGksCisgICAgICAgICAgICBpICYmICgiZngiID09PSB0ICYmIG4u
dW5zaGlmdCgiaW5wcm9ncmVzcyIpLCBkZWxldGUgby5zdG9wLCBpLmNhbGwoZSwgYSwgbykpLAor
ICAgICAgICAgICAgIXIgJiYgbyAmJiBvLmVtcHR5LmZpcmUoKQogICAgICAgICB9LAogICAgICAg
ICBfcXVldWVIb29rczogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgdmFyIG4gPSB0ICsg
InF1ZXVlSG9va3MiOwogICAgICAgICAgICAgcmV0dXJuIGIuX2RhdGEoZSwgbikgfHwgYi5fZGF0
YShlLCBuLCB7CiAgICAgICAgICAgICAgICAgICAgIGVtcHR5OiBiLkNhbGxiYWNrcygib25jZSBt
ZW1vcnkiKS5hZGQoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBiLl9yZW1v
dmVEYXRhKGUsIHQgKyAicXVldWUiKSwgYi5fcmVtb3ZlRGF0YShlLCBuKQorICAgICAgICAgICAg
ICAgICAgICAgICAgYi5fcmVtb3ZlRGF0YShlLCB0ICsgInF1ZXVlIiksCisgICAgICAgICAgICAg
ICAgICAgICAgICBiLl9yZW1vdmVEYXRhKGUsIG4pCiAgICAgICAgICAgICAgICAgICAgIH0pCiAg
ICAgICAgICAgICAgICAgfSkKICAgICAgICAgfQotICAgIH0pLCBiLmZuLmV4dGVuZCh7CisgICAg
fSksCisgICAgYi5mbi5leHRlbmQoewogICAgICAgICBxdWV1ZTogZnVuY3Rpb24oZSwgbikgewog
ICAgICAgICAgICAgdmFyIHIgPSAyOwogICAgICAgICAgICAgcmV0dXJuICJzdHJpbmciICE9IHR5
cGVvZiBlICYmIChuID0gZSwgZSA9ICJmeCIsIHItLSksIHIgPiBhcmd1bWVudHMubGVuZ3RoID8g
Yi5xdWV1ZSh0aGlzWzBdLCBlKSA6IG4gPT09IHQgPyB0aGlzIDogdGhpcy5lYWNoKGZ1bmN0aW9u
KCkgewogICAgICAgICAgICAgICAgIHZhciB0ID0gYi5xdWV1ZSh0aGlzLCBlLCBuKTsKLSAgICAg
ICAgICAgICAgICBiLl9xdWV1ZUhvb2tzKHRoaXMsIGUpLCAiZngiID09PSBlICYmICJpbnByb2dy
ZXNzIiAhPT0gdFswXSAmJiBiLmRlcXVldWUodGhpcywgZSkKKyAgICAgICAgICAgICAgICBiLl9x
dWV1ZUhvb2tzKHRoaXMsIGUpLAorICAgICAgICAgICAgICAgICJmeCIgPT09IGUgJiYgImlucHJv
Z3Jlc3MiICE9PSB0WzBdICYmIGIuZGVxdWV1ZSh0aGlzLCBlKQogICAgICAgICAgICAgfSkKICAg
ICAgICAgfSwKICAgICAgICAgZGVxdWV1ZTogZnVuY3Rpb24oZSkgewpAQCAtNzIxLDkgKzc3Nywx
MSBAQAogICAgICAgICAgICAgICAgIHUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAg
ICAgLS1pIHx8IG8ucmVzb2x2ZVdpdGgoYSwgW2FdKQogICAgICAgICAgICAgICAgIH07Ci0gICAg
ICAgICAgICAic3RyaW5nIiAhPSB0eXBlb2YgZSAmJiAobiA9IGUsIGUgPSB0KSwgZSA9IGUgfHwg
ImZ4IjsKKyAgICAgICAgICAgICJzdHJpbmciICE9IHR5cGVvZiBlICYmIChuID0gZSwgZSA9IHQp
LAorICAgICAgICAgICAgZSA9IGUgfHwgImZ4IjsKICAgICAgICAgICAgIHdoaWxlIChzLS0pCi0g
ICAgICAgICAgICAgICAgciA9IGIuX2RhdGEoYVtzXSwgZSArICJxdWV1ZUhvb2tzIiksIHIgJiYg
ci5lbXB0eSAmJiAoaSsrLCByLmVtcHR5LmFkZCh1KSk7CisgICAgICAgICAgICAgICAgciA9IGIu
X2RhdGEoYVtzXSwgZSArICJxdWV1ZUhvb2tzIiksCisgICAgICAgICAgICAgICAgciAmJiByLmVt
cHR5ICYmIChpKyssIHIuZW1wdHkuYWRkKHUpKTsKICAgICAgICAgICAgIHJldHVybiB1KCksIG8u
cHJvbWlzZShuKQogICAgICAgICB9CiAgICAgfSk7CkBAIC03NTIsNyArODEwLDggQEAKICAgICAg
ICAgcmVtb3ZlUHJvcDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgcmV0dXJuIGUgPSBiLnBy
b3BGaXhbZV0gfHwgZSwgdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgIHRy
eSB7Ci0gICAgICAgICAgICAgICAgICAgIHRoaXNbZV0gPSB0LCBkZWxldGUgdGhpc1tlXQorICAg
ICAgICAgICAgICAgICAgICB0aGlzW2VdID0gdCwKKyAgICAgICAgICAgICAgICAgICAgZGVsZXRl
IHRoaXNbZV0KICAgICAgICAgICAgICAgICB9IGNhdGNoIChuKSB7fQogICAgICAgICAgICAgfSkK
ICAgICAgICAgfSwKQEAgLTgxNiw3ICs4NzUsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAg
dSA9IHQsCiAgICAgICAgICAgICAgICAgICAgICAgICBsID0gZS5tYXRjaCh3KSB8fCBbXTsKICAg
ICAgICAgICAgICAgICAgICAgd2hpbGUgKG8gPSBsW2ErK10pCi0gICAgICAgICAgICAgICAgICAg
ICAgICB1ID0gciA/IHUgOiAhcy5oYXNDbGFzcyhvKSwgc1t1ID8gImFkZENsYXNzIiA6ICJyZW1v
dmVDbGFzcyJdKG8pCisgICAgICAgICAgICAgICAgICAgICAgICB1ID0gciA/IHUgOiAhcy5oYXND
bGFzcyhvKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNbdSA/ICJhZGRDbGFzcyIgOiAicmVt
b3ZlQ2xhc3MiXShvKQogICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAg
ICAobiA9PT0gaSB8fCAiYm9vbGVhbiIgPT09IG4pICYmICh0aGlzLmNsYXNzTmFtZSAmJiBiLl9k
YXRhKHRoaXMsICJfX2NsYXNzTmFtZV9fIiwgdGhpcy5jbGFzc05hbWUpLCB0aGlzLmNsYXNzTmFt
ZSA9IHRoaXMuY2xhc3NOYW1lIHx8IGUgPT09ICExID8gIiIgOiBiLl9kYXRhKHRoaXMsICJfX2Ns
YXNzTmFtZV9fIikgfHwgIiIpCiAgICAgICAgICAgICB9KQpAQCAtODQ4LDcgKzkwOCw4IEBACiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiByID0gYi52YWxIb29rc1tvLnR5cGVdIHx8IGIudmFs
SG9va3Nbby5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXSwgciAmJiAiZ2V0IiBpbiByICYmIChuID0g
ci5nZXQobywgInZhbHVlIikpICE9PSB0ID8gbiA6IChuID0gby52YWx1ZSwgInN0cmluZyIgPT0g
dHlwZW9mIG4gPyBuLnJlcGxhY2UoVSwgIiIpIDogbnVsbCA9PSBuID8gIiIgOiBuKQogICAgICAg
ICAgICAgfQogICAgICAgICB9Ci0gICAgfSksIGIuZXh0ZW5kKHsKKyAgICB9KSwKKyAgICBiLmV4
dGVuZCh7CiAgICAgICAgIHZhbEhvb2tzOiB7CiAgICAgICAgICAgICBvcHRpb246IHsKICAgICAg
ICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKGUpIHsKQEAgLTg5Nyw3ICs5NTgsOSBAQAogICAgICAg
ICAgICAgICAgIG8gPSB0ICYmIHQubWF0Y2godyk7CiAgICAgICAgICAgICBpZiAobyAmJiAxID09
PSBlLm5vZGVUeXBlKQogICAgICAgICAgICAgICAgIHdoaWxlIChuID0gb1tpKytdKQotICAgICAg
ICAgICAgICAgICAgICByID0gYi5wcm9wRml4W25dIHx8IG4sIEoudGVzdChuKSA/ICFRICYmIEcu
dGVzdChuKSA/IGVbYi5jYW1lbENhc2UoImRlZmF1bHQtIiArIG4pXSA9IGVbcl0gPSAhMSA6IGVb
cl0gPSAhMSA6IGIuYXR0cihlLCBuLCAiIiksIGUucmVtb3ZlQXR0cmlidXRlKFEgPyBuIDogcikK
KyAgICAgICAgICAgICAgICAgICAgciA9IGIucHJvcEZpeFtuXSB8fCBuLAorICAgICAgICAgICAg
ICAgICAgICBKLnRlc3QobikgPyAhUSAmJiBHLnRlc3QobikgPyBlW2IuY2FtZWxDYXNlKCJkZWZh
dWx0LSIgKyBuKV0gPSBlW3JdID0gITEgOiBlW3JdID0gITEgOiBiLmF0dHIoZSwgbiwgIiIpLAor
ICAgICAgICAgICAgICAgICAgICBlLnJlbW92ZUF0dHJpYnV0ZShRID8gbiA6IHIpCiAgICAgICAg
IH0sCiAgICAgICAgIGF0dHJIb29rczogewogICAgICAgICAgICAgdHlwZTogewpAQCAtOTM5LDcg
KzEwMDIsOCBAQAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQot
ICAgIH0pLCB6ID0geworICAgIH0pLAorICAgIHogPSB7CiAgICAgICAgIGdldDogZnVuY3Rpb24o
ZSwgbikgewogICAgICAgICAgICAgdmFyIHIgPSBiLnByb3AoZSwgbiksCiAgICAgICAgICAgICAg
ICAgaSA9ICJib29sZWFuIiA9PSB0eXBlb2YgciAmJiBlLmdldEF0dHJpYnV0ZShuKSwKQEAgLTk0
OSw3ICsxMDEzLDggQEAKICAgICAgICAgc2V0OiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAg
ICAgICByZXR1cm4gdCA9PT0gITEgPyBiLnJlbW92ZUF0dHIoZSwgbikgOiBLICYmIFEgfHwgIUcu
dGVzdChuKSA/IGUuc2V0QXR0cmlidXRlKCFRICYmIGIucHJvcEZpeFtuXSB8fCBuLCBuKSA6IGVb
Yi5jYW1lbENhc2UoImRlZmF1bHQtIiArIG4pXSA9IGVbbl0gPSAhMCwgbgogICAgICAgICB9Ci0g
ICAgfSwgSyAmJiBRIHx8IChiLmF0dHJIb29rcy52YWx1ZSA9IHsKKyAgICB9LAorICAgIEsgJiYg
USB8fCAoYi5hdHRySG9va3MudmFsdWUgPSB7CiAgICAgICAgIGdldDogZnVuY3Rpb24oZSwgbikg
ewogICAgICAgICAgICAgdmFyIHIgPSBlLmdldEF0dHJpYnV0ZU5vZGUobik7CiAgICAgICAgICAg
ICByZXR1cm4gYi5ub2RlTmFtZShlLCAiaW5wdXQiKSA/IGUuZGVmYXVsdFZhbHVlIDogciAmJiBy
LnNwZWNpZmllZCA/IHIudmFsdWUgOiB0CkBAIC05NTcsNyArMTAyMiw4IEBACiAgICAgICAgIHNl
dDogZnVuY3Rpb24oZSwgbiwgcikgewogICAgICAgICAgICAgcmV0dXJuIGIubm9kZU5hbWUoZSwg
ImlucHV0IikgPyAoZS5kZWZhdWx0VmFsdWUgPSBuLCB0KSA6IEkgJiYgSS5zZXQoZSwgbiwgcikK
ICAgICAgICAgfQotICAgIH0pLCBRIHx8IChJID0gYi52YWxIb29rcy5idXR0b24gPSB7CisgICAg
fSksCisgICAgUSB8fCAoSSA9IGIudmFsSG9va3MuYnV0dG9uID0gewogICAgICAgICBnZXQ6IGZ1
bmN0aW9uKGUsIG4pIHsKICAgICAgICAgICAgIHZhciByID0gZS5nZXRBdHRyaWJ1dGVOb2RlKG4p
OwogICAgICAgICAgICAgcmV0dXJuIHIgJiYgKCJpZCIgPT09IG4gfHwgIm5hbWUiID09PSBuIHx8
ICJjb29yZHMiID09PSBuID8gIiIgIT09IHIudmFsdWUgOiByLnNwZWNpZmllZCkgPyByLnZhbHVl
IDogdApAQCAtOTc3LDcgKzEwNDMsOCBAQAogICAgICAgICAgICAgICAgIHJldHVybiAiIiA9PT0g
ciA/IChlLnNldEF0dHJpYnV0ZShuLCAiYXV0byIpLCByKSA6IHQKICAgICAgICAgICAgIH0KICAg
ICAgICAgfSkKLSAgICB9KSksIGIuc3VwcG9ydC5ocmVmTm9ybWFsaXplZCB8fCAoYi5lYWNoKFsi
aHJlZiIsICJzcmMiLCAid2lkdGgiLCAiaGVpZ2h0Il0sIGZ1bmN0aW9uKGUsIG4pIHsKKyAgICB9
KSksCisgICAgYi5zdXBwb3J0LmhyZWZOb3JtYWxpemVkIHx8IChiLmVhY2goWyJocmVmIiwgInNy
YyIsICJ3aWR0aCIsICJoZWlnaHQiXSwgZnVuY3Rpb24oZSwgbikgewogICAgICAgICBiLmF0dHJI
b29rc1tuXSA9IGIuZXh0ZW5kKGIuYXR0ckhvb2tzW25dLCB7CiAgICAgICAgICAgICBnZXQ6IGZ1
bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICB2YXIgciA9IGUuZ2V0QXR0cmlidXRlKG4sIDIp
OwpAQCAtOTkwLDI1ICsxMDU3LDMwIEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIGUuZ2V0QXR0
cmlidXRlKHQsIDQpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICB9KSksIGIuc3VwcG9y
dC5zdHlsZSB8fCAoYi5hdHRySG9va3Muc3R5bGUgPSB7CisgICAgfSkpLAorICAgIGIuc3VwcG9y
dC5zdHlsZSB8fCAoYi5hdHRySG9va3Muc3R5bGUgPSB7CiAgICAgICAgIGdldDogZnVuY3Rpb24o
ZSkgewogICAgICAgICAgICAgcmV0dXJuIGUuc3R5bGUuY3NzVGV4dCB8fCB0CiAgICAgICAgIH0s
CiAgICAgICAgIHNldDogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgcmV0dXJuIGUuc3R5
bGUuY3NzVGV4dCA9IHQgKyAiIgogICAgICAgICB9Ci0gICAgfSksIGIuc3VwcG9ydC5vcHRTZWxl
Y3RlZCB8fCAoYi5wcm9wSG9va3Muc2VsZWN0ZWQgPSBiLmV4dGVuZChiLnByb3BIb29rcy5zZWxl
Y3RlZCwgeworICAgIH0pLAorICAgIGIuc3VwcG9ydC5vcHRTZWxlY3RlZCB8fCAoYi5wcm9wSG9v
a3Muc2VsZWN0ZWQgPSBiLmV4dGVuZChiLnByb3BIb29rcy5zZWxlY3RlZCwgewogICAgICAgICBn
ZXQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgIHZhciB0ID0gZS5wYXJlbnROb2RlOwogICAg
ICAgICAgICAgcmV0dXJuIHQgJiYgKHQuc2VsZWN0ZWRJbmRleCwgdC5wYXJlbnROb2RlICYmIHQu
cGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4KSwgbnVsbAogICAgICAgICB9Ci0gICAgfSkpLCBiLnN1
cHBvcnQuZW5jdHlwZSB8fCAoYi5wcm9wRml4LmVuY3R5cGUgPSAiZW5jb2RpbmciKSwgYi5zdXBw
b3J0LmNoZWNrT24gfHwgYi5lYWNoKFsicmFkaW8iLCAiY2hlY2tib3giXSwgZnVuY3Rpb24oKSB7
CisgICAgfSkpLAorICAgIGIuc3VwcG9ydC5lbmN0eXBlIHx8IChiLnByb3BGaXguZW5jdHlwZSA9
ICJlbmNvZGluZyIpLAorICAgIGIuc3VwcG9ydC5jaGVja09uIHx8IGIuZWFjaChbInJhZGlvIiwg
ImNoZWNrYm94Il0sIGZ1bmN0aW9uKCkgewogICAgICAgICBiLnZhbEhvb2tzW3RoaXNdID0gewog
ICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIG51
bGwgPT09IGUuZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpID8gIm9uIiA6IGUudmFsdWUKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQotICAgIH0pLCBiLmVhY2goWyJyYWRpbyIsICJjaGVja2JveCJdLCBm
dW5jdGlvbigpIHsKKyAgICB9KSwKKyAgICBiLmVhY2goWyJyYWRpbyIsICJjaGVja2JveCJdLCBm
dW5jdGlvbigpIHsKICAgICAgICAgYi52YWxIb29rc1t0aGlzXSA9IGIuZXh0ZW5kKGIudmFsSG9v
a3NbdGhpc10sIHsKICAgICAgICAgICAgIHNldDogZnVuY3Rpb24oZSwgbikgewogICAgICAgICAg
ICAgICAgIHJldHVybiBiLmlzQXJyYXkobikgPyBlLmNoZWNrZWQgPSBiLmluQXJyYXkoYihlKS52
YWwoKSwgbikgPj0gMCA6IHQKQEAgLTEwNDIsMTEgKzExMTQsMjIgQEAKICAgICAgICAgICAgICAg
ICB5LAogICAgICAgICAgICAgICAgIHYgPSBiLl9kYXRhKGUpOwogICAgICAgICAgICAgaWYgKHYp
IHsKLSAgICAgICAgICAgICAgICByLmhhbmRsZXIgJiYgKGMgPSByLCByID0gYy5oYW5kbGVyLCBh
ID0gYy5zZWxlY3RvciksIHIuZ3VpZCB8fCAoci5ndWlkID0gYi5ndWlkKyspLCAodSA9IHYuZXZl
bnRzKSB8fCAodSA9IHYuZXZlbnRzID0ge30pLCAoZiA9IHYuaGFuZGxlKSB8fCAoZiA9IHYuaGFu
ZGxlID0gZnVuY3Rpb24oZSkgeworICAgICAgICAgICAgICAgIHIuaGFuZGxlciAmJiAoYyA9IHIs
IHIgPSBjLmhhbmRsZXIsIGEgPSBjLnNlbGVjdG9yKSwKKyAgICAgICAgICAgICAgICByLmd1aWQg
fHwgKHIuZ3VpZCA9IGIuZ3VpZCsrKSwKKyAgICAgICAgICAgICAgICAodSA9IHYuZXZlbnRzKSB8
fCAodSA9IHYuZXZlbnRzID0ge30pLAorICAgICAgICAgICAgICAgIChmID0gdi5oYW5kbGUpIHx8
IChmID0gdi5oYW5kbGUgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgIHJldHVy
biB0eXBlb2YgYiA9PT0gaSB8fCBlICYmIGIuZXZlbnQudHJpZ2dlcmVkID09PSBlLnR5cGUgPyB0
IDogYi5ldmVudC5kaXNwYXRjaC5hcHBseShmLmVsZW0sIGFyZ3VtZW50cykKLSAgICAgICAgICAg
ICAgICB9LCBmLmVsZW0gPSBlKSwgbiA9IChuIHx8ICIiKS5tYXRjaCh3KSB8fCBbIiJdLCBsID0g
bi5sZW5ndGg7CisgICAgICAgICAgICAgICAgfSwgZi5lbGVtID0gZSksCisgICAgICAgICAgICAg
ICAgbiA9IChuIHx8ICIiKS5tYXRjaCh3KSB8fCBbIiJdLAorICAgICAgICAgICAgICAgIGwgPSBu
Lmxlbmd0aDsKICAgICAgICAgICAgICAgICB3aGlsZSAobC0tKQotICAgICAgICAgICAgICAgICAg
ICBzID0gcnQuZXhlYyhuW2xdKSB8fCBbXSwgZyA9IHkgPSBzWzFdLCBtID0gKHNbMl0gfHwgIiIp
LnNwbGl0KCIuIikuc29ydCgpLCBwID0gYi5ldmVudC5zcGVjaWFsW2ddIHx8IHt9LCBnID0gKGEg
PyBwLmRlbGVnYXRlVHlwZSA6IHAuYmluZFR5cGUpIHx8IGcsIHAgPSBiLmV2ZW50LnNwZWNpYWxb
Z10gfHwge30sIGQgPSBiLmV4dGVuZCh7CisgICAgICAgICAgICAgICAgICAgIHMgPSBydC5leGVj
KG5bbF0pIHx8IFtdLAorICAgICAgICAgICAgICAgICAgICBnID0geSA9IHNbMV0sCisgICAgICAg
ICAgICAgICAgICAgIG0gPSAoc1syXSB8fCAiIikuc3BsaXQoIi4iKS5zb3J0KCksCisgICAgICAg
ICAgICAgICAgICAgIHAgPSBiLmV2ZW50LnNwZWNpYWxbZ10gfHwge30sCisgICAgICAgICAgICAg
ICAgICAgIGcgPSAoYSA/IHAuZGVsZWdhdGVUeXBlIDogcC5iaW5kVHlwZSkgfHwgZywKKyAgICAg
ICAgICAgICAgICAgICAgcCA9IGIuZXZlbnQuc3BlY2lhbFtnXSB8fCB7fSwKKyAgICAgICAgICAg
ICAgICAgICAgZCA9IGIuZXh0ZW5kKHsKICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IGcs
CiAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnVHlwZTogeSwKICAgICAgICAgICAgICAgICAg
ICAgICAgIGRhdGE6IG8sCkBAIC0xMDU1LDcgKzExMzgsMTEgQEAKICAgICAgICAgICAgICAgICAg
ICAgICAgIHNlbGVjdG9yOiBhLAogICAgICAgICAgICAgICAgICAgICAgICAgbmVlZHNDb250ZXh0
OiBhICYmIGIuZXhwci5tYXRjaC5uZWVkc0NvbnRleHQudGVzdChhKSwKICAgICAgICAgICAgICAg
ICAgICAgICAgIG5hbWVzcGFjZTogbS5qb2luKCIuIikKLSAgICAgICAgICAgICAgICAgICAgfSwg
YyksIChoID0gdVtnXSkgfHwgKGggPSB1W2ddID0gW10sIGguZGVsZWdhdGVDb3VudCA9IDAsIHAu
c2V0dXAgJiYgcC5zZXR1cC5jYWxsKGUsIG8sIG0sIGYpICE9PSAhMSB8fCAoZS5hZGRFdmVudExp
c3RlbmVyID8gZS5hZGRFdmVudExpc3RlbmVyKGcsIGYsICExKSA6IGUuYXR0YWNoRXZlbnQgJiYg
ZS5hdHRhY2hFdmVudCgib24iICsgZywgZikpKSwgcC5hZGQgJiYgKHAuYWRkLmNhbGwoZSwgZCks
IGQuaGFuZGxlci5ndWlkIHx8IChkLmhhbmRsZXIuZ3VpZCA9IHIuZ3VpZCkpLCBhID8gaC5zcGxp
Y2UoaC5kZWxlZ2F0ZUNvdW50KyssIDAsIGQpIDogaC5wdXNoKGQpLCBiLmV2ZW50Lmdsb2JhbFtn
XSA9ICEwOworICAgICAgICAgICAgICAgICAgICB9LCBjKSwKKyAgICAgICAgICAgICAgICAgICAg
KGggPSB1W2ddKSB8fCAoaCA9IHVbZ10gPSBbXSwgaC5kZWxlZ2F0ZUNvdW50ID0gMCwgcC5zZXR1
cCAmJiBwLnNldHVwLmNhbGwoZSwgbywgbSwgZikgIT09ICExIHx8IChlLmFkZEV2ZW50TGlzdGVu
ZXIgPyBlLmFkZEV2ZW50TGlzdGVuZXIoZywgZiwgITEpIDogZS5hdHRhY2hFdmVudCAmJiBlLmF0
dGFjaEV2ZW50KCJvbiIgKyBnLCBmKSkpLAorICAgICAgICAgICAgICAgICAgICBwLmFkZCAmJiAo
cC5hZGQuY2FsbChlLCBkKSwgZC5oYW5kbGVyLmd1aWQgfHwgKGQuaGFuZGxlci5ndWlkID0gci5n
dWlkKSksCisgICAgICAgICAgICAgICAgICAgIGEgPyBoLnNwbGljZShoLmRlbGVnYXRlQ291bnQr
KywgMCwgZCkgOiBoLnB1c2goZCksCisgICAgICAgICAgICAgICAgICAgIGIuZXZlbnQuZ2xvYmFs
W2ddID0gITA7CiAgICAgICAgICAgICAgICAgZSA9IG51bGwKICAgICAgICAgICAgIH0KICAgICAg
ICAgfSwKQEAgLTEwNzMsMTIgKzExNjAsMTggQEAKICAgICAgICAgICAgICAgICBnLAogICAgICAg
ICAgICAgICAgIG0gPSBiLmhhc0RhdGEoZSkgJiYgYi5fZGF0YShlKTsKICAgICAgICAgICAgIGlm
IChtICYmIChjID0gbS5ldmVudHMpKSB7Ci0gICAgICAgICAgICAgICAgdCA9ICh0IHx8ICIiKS5t
YXRjaCh3KSB8fCBbIiJdLCBsID0gdC5sZW5ndGg7CisgICAgICAgICAgICAgICAgdCA9ICh0IHx8
ICIiKS5tYXRjaCh3KSB8fCBbIiJdLAorICAgICAgICAgICAgICAgIGwgPSB0Lmxlbmd0aDsKICAg
ICAgICAgICAgICAgICB3aGlsZSAobC0tKQogICAgICAgICAgICAgICAgICAgICBpZiAocyA9IHJ0
LmV4ZWModFtsXSkgfHwgW10sIGQgPSBnID0gc1sxXSwgaCA9IChzWzJdIHx8ICIiKS5zcGxpdCgi
LiIpLnNvcnQoKSwgZCkgewotICAgICAgICAgICAgICAgICAgICAgICAgcCA9IGIuZXZlbnQuc3Bl
Y2lhbFtkXSB8fCB7fSwgZCA9IChyID8gcC5kZWxlZ2F0ZVR5cGUgOiBwLmJpbmRUeXBlKSB8fCBk
LCBmID0gY1tkXSB8fCBbXSwgcyA9IHNbMl0gJiYgUmVnRXhwKCIoXnxcXC4pIiArIGguam9pbigi
XFwuKD86LipcXC58KSIpICsgIihcXC58JCkiKSwgdSA9IG8gPSBmLmxlbmd0aDsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHAgPSBiLmV2ZW50LnNwZWNpYWxbZF0gfHwge30sCisgICAgICAgICAg
ICAgICAgICAgICAgICBkID0gKHIgPyBwLmRlbGVnYXRlVHlwZSA6IHAuYmluZFR5cGUpIHx8IGQs
CisgICAgICAgICAgICAgICAgICAgICAgICBmID0gY1tkXSB8fCBbXSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHMgPSBzWzJdICYmIFJlZ0V4cCgiKF58XFwuKSIgKyBoLmpvaW4oIlxcLig/Oi4q
XFwufCkiKSArICIoXFwufCQpIiksCisgICAgICAgICAgICAgICAgICAgICAgICB1ID0gbyA9IGYu
bGVuZ3RoOwogICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKG8tLSkKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhID0gZltvXSwgIWkgJiYgZyAhPT0gYS5vcmlnVHlwZSB8fCBuICYm
IG4uZ3VpZCAhPT0gYS5ndWlkIHx8IHMgJiYgIXMudGVzdChhLm5hbWVzcGFjZSkgfHwgciAmJiBy
ICE9PSBhLnNlbGVjdG9yICYmICgiKioiICE9PSByIHx8ICFhLnNlbGVjdG9yKSB8fCAoZi5zcGxp
Y2UobywgMSksIGEuc2VsZWN0b3IgJiYgZi5kZWxlZ2F0ZUNvdW50LS0sIHAucmVtb3ZlICYmIHAu
cmVtb3ZlLmNhbGwoZSwgYSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBmW29d
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICFpICYmIGcgIT09IGEub3JpZ1R5cGUgfHwg
biAmJiBuLmd1aWQgIT09IGEuZ3VpZCB8fCBzICYmICFzLnRlc3QoYS5uYW1lc3BhY2UpIHx8IHIg
JiYgciAhPT0gYS5zZWxlY3RvciAmJiAoIioqIiAhPT0gciB8fCAhYS5zZWxlY3RvcikgfHwgKGYu
c3BsaWNlKG8sIDEpLCBhLnNlbGVjdG9yICYmIGYuZGVsZWdhdGVDb3VudC0tLCBwLnJlbW92ZSAm
JiBwLnJlbW92ZS5jYWxsKGUsIGEpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHUgJiYgIWYu
bGVuZ3RoICYmIChwLnRlYXJkb3duICYmIHAudGVhcmRvd24uY2FsbChlLCBoLCBtLmhhbmRsZSkg
IT09ICExIHx8IGIucmVtb3ZlRXZlbnQoZSwgZCwgbS5oYW5kbGUpLCBkZWxldGUgY1tkXSkKICAg
ICAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGQg
aW4gYykKQEAgLTExMDAsMTggKzExOTMsMjYgQEAKICAgICAgICAgICAgIGlmIChsID0gZiA9IGkg
PSBpIHx8IG8sIDMgIT09IGkubm9kZVR5cGUgJiYgOCAhPT0gaS5ub2RlVHlwZSAmJiAhbnQudGVz
dChnICsgYi5ldmVudC50cmlnZ2VyZWQpICYmIChnLmluZGV4T2YoIi4iKSA+PSAwICYmIChtID0g
Zy5zcGxpdCgiLiIpLCBnID0gbS5zaGlmdCgpLCBtLnNvcnQoKSksIHUgPSAwID4gZy5pbmRleE9m
KCI6IikgJiYgIm9uIiArIGcsIG4gPSBuW2IuZXhwYW5kb10gPyBuIDogbmV3IGIuRXZlbnQoZywg
Im9iamVjdCIgPT0gdHlwZW9mIG4gJiYgbiksIG4uaXNUcmlnZ2VyID0gITAsIG4ubmFtZXNwYWNl
ID0gbS5qb2luKCIuIiksIG4ubmFtZXNwYWNlX3JlID0gbi5uYW1lc3BhY2UgPyBSZWdFeHAoIihe
fFxcLikiICsgbS5qb2luKCJcXC4oPzouKlxcLnwpIikgKyAiKFxcLnwkKSIpIDogbnVsbCwgbi5y
ZXN1bHQgPSB0LCBuLnRhcmdldCB8fCAobi50YXJnZXQgPSBpKSwgciA9IG51bGwgPT0gciA/IFtu
XSA6IGIubWFrZUFycmF5KHIsIFtuXSksIHAgPSBiLmV2ZW50LnNwZWNpYWxbZ10gfHwge30sIGEg
fHwgIXAudHJpZ2dlciB8fCBwLnRyaWdnZXIuYXBwbHkoaSwgcikgIT09ICExKSkgewogICAgICAg
ICAgICAgICAgIGlmICghYSAmJiAhcC5ub0J1YmJsZSAmJiAhYi5pc1dpbmRvdyhpKSkgewogICAg
ICAgICAgICAgICAgICAgICBmb3IgKGMgPSBwLmRlbGVnYXRlVHlwZSB8fCBnLCBudC50ZXN0KGMg
KyBnKSB8fCAobCA9IGwucGFyZW50Tm9kZSk7IGw7IGwgPSBsLnBhcmVudE5vZGUpCi0gICAgICAg
ICAgICAgICAgICAgICAgICBoLnB1c2gobCksIGYgPSBsOworICAgICAgICAgICAgICAgICAgICAg
ICAgaC5wdXNoKGwpLAorICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGw7CiAgICAgICAgICAg
ICAgICAgICAgIGYgPT09IChpLm93bmVyRG9jdW1lbnQgfHwgbykgJiYgaC5wdXNoKGYuZGVmYXVs
dFZpZXcgfHwgZi5wYXJlbnRXaW5kb3cgfHwgZSkKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgZCA9IDA7CiAgICAgICAgICAgICAgICAgd2hpbGUgKChsID0gaFtkKytdKSAmJiAh
bi5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKQotICAgICAgICAgICAgICAgICAgICBuLnR5cGUgPSBk
ID4gMSA/IGMgOiBwLmJpbmRUeXBlIHx8IGcsIHMgPSAoYi5fZGF0YShsLCAiZXZlbnRzIikgfHwg
e30pW24udHlwZV0gJiYgYi5fZGF0YShsLCAiaGFuZGxlIiksIHMgJiYgcy5hcHBseShsLCByKSwg
cyA9IHUgJiYgbFt1XSwgcyAmJiBiLmFjY2VwdERhdGEobCkgJiYgcy5hcHBseSAmJiBzLmFwcGx5
KGwsIHIpID09PSAhMSAmJiBuLnByZXZlbnREZWZhdWx0KCk7CisgICAgICAgICAgICAgICAgICAg
IG4udHlwZSA9IGQgPiAxID8gYyA6IHAuYmluZFR5cGUgfHwgZywKKyAgICAgICAgICAgICAgICAg
ICAgcyA9IChiLl9kYXRhKGwsICJldmVudHMiKSB8fCB7fSlbbi50eXBlXSAmJiBiLl9kYXRhKGws
ICJoYW5kbGUiKSwKKyAgICAgICAgICAgICAgICAgICAgcyAmJiBzLmFwcGx5KGwsIHIpLAorICAg
ICAgICAgICAgICAgICAgICBzID0gdSAmJiBsW3VdLAorICAgICAgICAgICAgICAgICAgICBzICYm
IGIuYWNjZXB0RGF0YShsKSAmJiBzLmFwcGx5ICYmIHMuYXBwbHkobCwgcikgPT09ICExICYmIG4u
cHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgICBpZiAobi50eXBlID0gZywgIShhIHx8
IG4uaXNEZWZhdWx0UHJldmVudGVkKCkgfHwgcC5fZGVmYXVsdCAmJiBwLl9kZWZhdWx0LmFwcGx5
KGkub3duZXJEb2N1bWVudCwgcikgIT09ICExIHx8ICJjbGljayIgPT09IGcgJiYgYi5ub2RlTmFt
ZShpLCAiYSIpIHx8ICFiLmFjY2VwdERhdGEoaSkgfHwgIXUgfHwgIWlbZ10gfHwgYi5pc1dpbmRv
dyhpKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgZiA9IGlbdV0sIGYgJiYgKGlbdV0gPSBudWxs
KSwgYi5ldmVudC50cmlnZ2VyZWQgPSBnOworICAgICAgICAgICAgICAgICAgICBmID0gaVt1XSwK
KyAgICAgICAgICAgICAgICAgICAgZiAmJiAoaVt1XSA9IG51bGwpLAorICAgICAgICAgICAgICAg
ICAgICBiLmV2ZW50LnRyaWdnZXJlZCA9IGc7CiAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBpW2ddKCkKICAgICAgICAgICAgICAgICAgICAgfSBjYXRj
aCAodikge30KLSAgICAgICAgICAgICAgICAgICAgYi5ldmVudC50cmlnZ2VyZWQgPSB0LCBmICYm
IChpW3VdID0gZikKKyAgICAgICAgICAgICAgICAgICAgYi5ldmVudC50cmlnZ2VyZWQgPSB0LAor
ICAgICAgICAgICAgICAgICAgICBmICYmIChpW3VdID0gZikKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIG4ucmVzdWx0CiAgICAgICAgICAgICB9CkBAIC0xMTI4LDkg
KzEyMjksMTEgQEAKICAgICAgICAgICAgICAgICBsID0gKGIuX2RhdGEodGhpcywgImV2ZW50cyIp
IHx8IHt9KVtlLnR5cGVdIHx8IFtdLAogICAgICAgICAgICAgICAgIGMgPSBiLmV2ZW50LnNwZWNp
YWxbZS50eXBlXSB8fCB7fTsKICAgICAgICAgICAgIGlmICh1WzBdID0gZSwgZS5kZWxlZ2F0ZVRh
cmdldCA9IHRoaXMsICFjLnByZURpc3BhdGNoIHx8IGMucHJlRGlzcGF0Y2guY2FsbCh0aGlzLCBl
KSAhPT0gITEpIHsKLSAgICAgICAgICAgICAgICBzID0gYi5ldmVudC5oYW5kbGVycy5jYWxsKHRo
aXMsIGUsIGwpLCBuID0gMDsKKyAgICAgICAgICAgICAgICBzID0gYi5ldmVudC5oYW5kbGVycy5j
YWxsKHRoaXMsIGUsIGwpLAorICAgICAgICAgICAgICAgIG4gPSAwOwogICAgICAgICAgICAgICAg
IHdoaWxlICgobyA9IHNbbisrXSkgJiYgIWUuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSkgewotICAg
ICAgICAgICAgICAgICAgICBlLmN1cnJlbnRUYXJnZXQgPSBvLmVsZW0sIGEgPSAwOworICAgICAg
ICAgICAgICAgICAgICBlLmN1cnJlbnRUYXJnZXQgPSBvLmVsZW0sCisgICAgICAgICAgICAgICAg
ICAgIGEgPSAwOwogICAgICAgICAgICAgICAgICAgICB3aGlsZSAoKGkgPSBvLmhhbmRsZXJzW2Er
K10pICYmICFlLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkKCkpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAoIWUubmFtZXNwYWNlX3JlIHx8IGUubmFtZXNwYWNlX3JlLnRlc3QoaS5uYW1l
c3BhY2UpKSAmJiAoZS5oYW5kbGVPYmogPSBpLCBlLmRhdGEgPSBpLmRhdGEsIHIgPSAoKGIuZXZl
bnQuc3BlY2lhbFtpLm9yaWdUeXBlXSB8fCB7fSkuaGFuZGxlIHx8IGkuaGFuZGxlcikuYXBwbHko
by5lbGVtLCB1KSwgciAhPT0gdCAmJiAoZS5yZXN1bHQgPSByKSA9PT0gITEgJiYgKGUucHJldmVu
dERlZmF1bHQoKSwgZS5zdG9wUHJvcGFnYXRpb24oKSkpCiAgICAgICAgICAgICAgICAgfQpAQCAt
MTE0OSw3ICsxMjUyLDEwIEBACiAgICAgICAgICAgICAgICAgZm9yICg7IGwgIT0gdGhpczsgbCA9
IGwucGFyZW50Tm9kZSB8fCB0aGlzKQogICAgICAgICAgICAgICAgICAgICBpZiAoMSA9PT0gbC5u
b2RlVHlwZSAmJiAobC5kaXNhYmxlZCAhPT0gITAgfHwgImNsaWNrIiAhPT0gZS50eXBlKSkgewog
ICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChvID0gW10sIGEgPSAwOyB1ID4gYTsgYSsrKQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBuW2FdLCByID0gaS5zZWxlY3RvciArICIg
Iiwgb1tyXSA9PT0gdCAmJiAob1tyXSA9IGkubmVlZHNDb250ZXh0ID8gYihyLCB0aGlzKS5pbmRl
eChsKSA+PSAwIDogYi5maW5kKHIsIHRoaXMsIG51bGwsIFtsXSkubGVuZ3RoKSwgb1tyXSAmJiBv
LnB1c2goaSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG5bYV0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgciA9IGkuc2VsZWN0b3IgKyAiICIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgb1tyXSA9PT0gdCAmJiAob1tyXSA9IGkubmVlZHNDb250ZXh0ID8gYihy
LCB0aGlzKS5pbmRleChsKSA+PSAwIDogYi5maW5kKHIsIHRoaXMsIG51bGwsIFtsXSkubGVuZ3Ro
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvW3JdICYmIG8ucHVzaChpKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIG8ubGVuZ3RoICYmIHMucHVzaCh7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZWxlbTogbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVy
czogbwpAQCAtMTE2OSw5ICsxMjc1LDEzIEBACiAgICAgICAgICAgICAgICAgaSA9IGUudHlwZSwK
ICAgICAgICAgICAgICAgICBhID0gZSwKICAgICAgICAgICAgICAgICBzID0gdGhpcy5maXhIb29r
c1tpXTsKLSAgICAgICAgICAgIHMgfHwgKHRoaXMuZml4SG9va3NbaV0gPSBzID0gdHQudGVzdChp
KSA/IHRoaXMubW91c2VIb29rcyA6IGV0LnRlc3QoaSkgPyB0aGlzLmtleUhvb2tzIDoge30pLCBy
ID0gcy5wcm9wcyA/IHRoaXMucHJvcHMuY29uY2F0KHMucHJvcHMpIDogdGhpcy5wcm9wcywgZSA9
IG5ldyBiLkV2ZW50KGEpLCB0ID0gci5sZW5ndGg7CisgICAgICAgICAgICBzIHx8ICh0aGlzLmZp
eEhvb2tzW2ldID0gcyA9IHR0LnRlc3QoaSkgPyB0aGlzLm1vdXNlSG9va3MgOiBldC50ZXN0KGkp
ID8gdGhpcy5rZXlIb29rcyA6IHt9KSwKKyAgICAgICAgICAgIHIgPSBzLnByb3BzID8gdGhpcy5w
cm9wcy5jb25jYXQocy5wcm9wcykgOiB0aGlzLnByb3BzLAorICAgICAgICAgICAgZSA9IG5ldyBi
LkV2ZW50KGEpLAorICAgICAgICAgICAgdCA9IHIubGVuZ3RoOwogICAgICAgICAgICAgd2hpbGUg
KHQtLSkKLSAgICAgICAgICAgICAgICBuID0gclt0XSwgZVtuXSA9IGFbbl07CisgICAgICAgICAg
ICAgICAgbiA9IHJbdF0sCisgICAgICAgICAgICAgICAgZVtuXSA9IGFbbl07CiAgICAgICAgICAg
ICByZXR1cm4gZS50YXJnZXQgfHwgKGUudGFyZ2V0ID0gYS5zcmNFbGVtZW50IHx8IG8pLCAzID09
PSBlLnRhcmdldC5ub2RlVHlwZSAmJiAoZS50YXJnZXQgPSBlLnRhcmdldC5wYXJlbnROb2RlKSwg
ZS5tZXRhS2V5ID0gISFlLm1ldGFLZXksIHMuZmlsdGVyID8gcy5maWx0ZXIoZSwgYSkgOiBlCiAg
ICAgICAgIH0sCiAgICAgICAgIHByb3BzOiAiYWx0S2V5IGJ1YmJsZXMgY2FuY2VsYWJsZSBjdHJs
S2V5IGN1cnJlbnRUYXJnZXQgZXZlbnRQaGFzZSBtZXRhS2V5IHJlbGF0ZWRUYXJnZXQgc2hpZnRL
ZXkgdGFyZ2V0IHRpbWVTdGFtcCB2aWV3IHdoaWNoIi5zcGxpdCgiICIpLApAQCAtMTIyOSwzMSAr
MTMzOSwzOSBAQAogICAgICAgICAgICAgICAgIGlzU2ltdWxhdGVkOiAhMCwKICAgICAgICAgICAg
ICAgICBvcmlnaW5hbEV2ZW50OiB7fQogICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICByID8g
Yi5ldmVudC50cmlnZ2VyKGksIG51bGwsIHQpIDogYi5ldmVudC5kaXNwYXRjaC5jYWxsKHQsIGkp
LCBpLmlzRGVmYXVsdFByZXZlbnRlZCgpICYmIG4ucHJldmVudERlZmF1bHQoKQorICAgICAgICAg
ICAgciA/IGIuZXZlbnQudHJpZ2dlcihpLCBudWxsLCB0KSA6IGIuZXZlbnQuZGlzcGF0Y2guY2Fs
bCh0LCBpKSwKKyAgICAgICAgICAgIGkuaXNEZWZhdWx0UHJldmVudGVkKCkgJiYgbi5wcmV2ZW50
RGVmYXVsdCgpCiAgICAgICAgIH0KLSAgICB9LCBiLnJlbW92ZUV2ZW50ID0gby5yZW1vdmVFdmVu
dExpc3RlbmVyID8gZnVuY3Rpb24oZSwgdCwgbikgeworICAgIH0sCisgICAgYi5yZW1vdmVFdmVu
dCA9IG8ucmVtb3ZlRXZlbnRMaXN0ZW5lciA/IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAg
ZS5yZW1vdmVFdmVudExpc3RlbmVyICYmIGUucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LCBuLCAhMSkK
ICAgICB9IDogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICB2YXIgciA9ICJvbiIgKyB0Owog
ICAgICAgICBlLmRldGFjaEV2ZW50ICYmICh0eXBlb2YgZVtyXSA9PT0gaSAmJiAoZVtyXSA9IG51
bGwpLCBlLmRldGFjaEV2ZW50KHIsIG4pKQotICAgIH0sIGIuRXZlbnQgPSBmdW5jdGlvbihlLCBu
KSB7CisgICAgfSwKKyAgICBiLkV2ZW50ID0gZnVuY3Rpb24oZSwgbikgewogICAgICAgICByZXR1
cm4gdGhpcyBpbnN0YW5jZW9mIGIuRXZlbnQgPyAoZSAmJiBlLnR5cGUgPyAodGhpcy5vcmlnaW5h
bEV2ZW50ID0gZSwgdGhpcy50eXBlID0gZS50eXBlLCB0aGlzLmlzRGVmYXVsdFByZXZlbnRlZCA9
IGUuZGVmYXVsdFByZXZlbnRlZCB8fCBlLnJldHVyblZhbHVlID09PSAhMSB8fCBlLmdldFByZXZl
bnREZWZhdWx0ICYmIGUuZ2V0UHJldmVudERlZmF1bHQoKSA/IGl0IDogb3QpIDogdGhpcy50eXBl
ID0gZSwgbiAmJiBiLmV4dGVuZCh0aGlzLCBuKSwgdGhpcy50aW1lU3RhbXAgPSBlICYmIGUudGlt
ZVN0YW1wIHx8IGIubm93KCksIHRoaXNbYi5leHBhbmRvXSA9ICEwLCB0KSA6IG5ldyBiLkV2ZW50
KGUsIG4pCi0gICAgfSwgYi5FdmVudC5wcm90b3R5cGUgPSB7CisgICAgfSwKKyAgICBiLkV2ZW50
LnByb3RvdHlwZSA9IHsKICAgICAgICAgaXNEZWZhdWx0UHJldmVudGVkOiBvdCwKICAgICAgICAg
aXNQcm9wYWdhdGlvblN0b3BwZWQ6IG90LAogICAgICAgICBpc0ltbWVkaWF0ZVByb3BhZ2F0aW9u
U3RvcHBlZDogb3QsCiAgICAgICAgIHByZXZlbnREZWZhdWx0OiBmdW5jdGlvbigpIHsKICAgICAg
ICAgICAgIHZhciBlID0gdGhpcy5vcmlnaW5hbEV2ZW50OwotICAgICAgICAgICAgdGhpcy5pc0Rl
ZmF1bHRQcmV2ZW50ZWQgPSBpdCwgZSAmJiAoZS5wcmV2ZW50RGVmYXVsdCA/IGUucHJldmVudERl
ZmF1bHQoKSA6IGUucmV0dXJuVmFsdWUgPSAhMSkKKyAgICAgICAgICAgIHRoaXMuaXNEZWZhdWx0
UHJldmVudGVkID0gaXQsCisgICAgICAgICAgICBlICYmIChlLnByZXZlbnREZWZhdWx0ID8gZS5w
cmV2ZW50RGVmYXVsdCgpIDogZS5yZXR1cm5WYWx1ZSA9ICExKQogICAgICAgICB9LAogICAgICAg
ICBzdG9wUHJvcGFnYXRpb246IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgdmFyIGUgPSB0aGlz
Lm9yaWdpbmFsRXZlbnQ7Ci0gICAgICAgICAgICB0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkID0g
aXQsIGUgJiYgKGUuc3RvcFByb3BhZ2F0aW9uICYmIGUuc3RvcFByb3BhZ2F0aW9uKCksIGUuY2Fu
Y2VsQnViYmxlID0gITApCisgICAgICAgICAgICB0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkID0g
aXQsCisgICAgICAgICAgICBlICYmIChlLnN0b3BQcm9wYWdhdGlvbiAmJiBlLnN0b3BQcm9wYWdh
dGlvbigpLCBlLmNhbmNlbEJ1YmJsZSA9ICEwKQogICAgICAgICB9LAogICAgICAgICBzdG9wSW1t
ZWRpYXRlUHJvcGFnYXRpb246IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgdGhpcy5pc0ltbWVk
aWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCA9IGl0LCB0aGlzLnN0b3BQcm9wYWdhdGlvbigpCisgICAg
ICAgICAgICB0aGlzLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkID0gaXQsCisgICAgICAg
ICAgICB0aGlzLnN0b3BQcm9wYWdhdGlvbigpCiAgICAgICAgIH0KLSAgICB9LCBiLmVhY2goewor
ICAgIH0sCisgICAgYi5lYWNoKHsKICAgICAgICAgbW91c2VlbnRlcjogIm1vdXNlb3ZlciIsCiAg
ICAgICAgIG1vdXNlbGVhdmU6ICJtb3VzZW91dCIKICAgICB9LCBmdW5jdGlvbihlLCB0KSB7CkBA
IC0xMjY4LDcgKzEzODYsOCBAQAogICAgICAgICAgICAgICAgIHJldHVybiAoIWkgfHwgaSAhPT0g
ciAmJiAhYi5jb250YWlucyhyLCBpKSkgJiYgKGUudHlwZSA9IG8ub3JpZ1R5cGUsIG4gPSBvLmhh
bmRsZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSwgZS50eXBlID0gdCksIG4KICAgICAgICAgICAg
IH0KICAgICAgICAgfQotICAgIH0pLCBiLnN1cHBvcnQuc3VibWl0QnViYmxlcyB8fCAoYi5ldmVu
dC5zcGVjaWFsLnN1Ym1pdCA9IHsKKyAgICB9KSwKKyAgICBiLnN1cHBvcnQuc3VibWl0QnViYmxl
cyB8fCAoYi5ldmVudC5zcGVjaWFsLnN1Ym1pdCA9IHsKICAgICAgICAgc2V0dXA6IGZ1bmN0aW9u
KCkgewogICAgICAgICAgICAgcmV0dXJuIGIubm9kZU5hbWUodGhpcywgImZvcm0iKSA/ICExIDog
KGIuZXZlbnQuYWRkKHRoaXMsICJjbGljay5fc3VibWl0IGtleXByZXNzLl9zdWJtaXQiLCBmdW5j
dGlvbihlKSB7CiAgICAgICAgICAgICAgICAgdmFyIG4gPSBlLnRhcmdldCwKQEAgLTEyODQsMTIg
KzE0MDMsMTQgQEAKICAgICAgICAgdGVhcmRvd246IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAg
cmV0dXJuIGIubm9kZU5hbWUodGhpcywgImZvcm0iKSA/ICExIDogKGIuZXZlbnQucmVtb3ZlKHRo
aXMsICIuX3N1Ym1pdCIpLCB0KQogICAgICAgICB9Ci0gICAgfSksIGIuc3VwcG9ydC5jaGFuZ2VC
dWJibGVzIHx8IChiLmV2ZW50LnNwZWNpYWwuY2hhbmdlID0geworICAgIH0pLAorICAgIGIuc3Vw
cG9ydC5jaGFuZ2VCdWJibGVzIHx8IChiLmV2ZW50LnNwZWNpYWwuY2hhbmdlID0gewogICAgICAg
ICBzZXR1cDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICByZXR1cm4gWi50ZXN0KHRoaXMubm9k
ZU5hbWUpID8gKCgiY2hlY2tib3giID09PSB0aGlzLnR5cGUgfHwgInJhZGlvIiA9PT0gdGhpcy50
eXBlKSAmJiAoYi5ldmVudC5hZGQodGhpcywgInByb3BlcnR5Y2hhbmdlLl9jaGFuZ2UiLCBmdW5j
dGlvbihlKSB7CiAgICAgICAgICAgICAgICAgImNoZWNrZWQiID09PSBlLm9yaWdpbmFsRXZlbnQu
cHJvcGVydHlOYW1lICYmICh0aGlzLl9qdXN0X2NoYW5nZWQgPSAhMCkKICAgICAgICAgICAgIH0p
LCBiLmV2ZW50LmFkZCh0aGlzLCAiY2xpY2suX2NoYW5nZSIsIGZ1bmN0aW9uKGUpIHsKLSAgICAg
ICAgICAgICAgICB0aGlzLl9qdXN0X2NoYW5nZWQgJiYgIWUuaXNUcmlnZ2VyICYmICh0aGlzLl9q
dXN0X2NoYW5nZWQgPSAhMSksIGIuZXZlbnQuc2ltdWxhdGUoImNoYW5nZSIsIHRoaXMsIGUsICEw
KQorICAgICAgICAgICAgICAgIHRoaXMuX2p1c3RfY2hhbmdlZCAmJiAhZS5pc1RyaWdnZXIgJiYg
KHRoaXMuX2p1c3RfY2hhbmdlZCA9ICExKSwKKyAgICAgICAgICAgICAgICBiLmV2ZW50LnNpbXVs
YXRlKCJjaGFuZ2UiLCB0aGlzLCBlLCAhMCkKICAgICAgICAgICAgIH0pKSwgITEpIDogKGIuZXZl
bnQuYWRkKHRoaXMsICJiZWZvcmVhY3RpdmF0ZS5fY2hhbmdlIiwgZnVuY3Rpb24oZSkgewogICAg
ICAgICAgICAgICAgIHZhciB0ID0gZS50YXJnZXQ7CiAgICAgICAgICAgICAgICAgWi50ZXN0KHQu
bm9kZU5hbWUpICYmICFiLl9kYXRhKHQsICJjaGFuZ2VCdWJibGVzIikgJiYgKGIuZXZlbnQuYWRk
KHQsICJjaGFuZ2UuX2NoYW5nZSIsIGZ1bmN0aW9uKGUpIHsKQEAgLTEzMDQsNyArMTQyNSw4IEBA
CiAgICAgICAgIHRlYXJkb3duOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgIHJldHVybiBiLmV2
ZW50LnJlbW92ZSh0aGlzLCAiLl9jaGFuZ2UiKSwgIVoudGVzdCh0aGlzLm5vZGVOYW1lKQogICAg
ICAgICB9Ci0gICAgfSksIGIuc3VwcG9ydC5mb2N1c2luQnViYmxlcyB8fCBiLmVhY2goeworICAg
IH0pLAorICAgIGIuc3VwcG9ydC5mb2N1c2luQnViYmxlcyB8fCBiLmVhY2goewogICAgICAgICBm
b2N1czogImZvY3VzaW4iLAogICAgICAgICBibHVyOiAiZm9jdXNvdXQiCiAgICAgfSwgZnVuY3Rp
b24oZSwgdCkgewpAQCAtMTMyMCw3ICsxNDQyLDggQEAKICAgICAgICAgICAgICAgICAwID09PSAt
LW4gJiYgby5yZW1vdmVFdmVudExpc3RlbmVyKGUsIHIsICEwKQogICAgICAgICAgICAgfQogICAg
ICAgICB9Ci0gICAgfSksIGIuZm4uZXh0ZW5kKHsKKyAgICB9KSwKKyAgICBiLmZuLmV4dGVuZCh7
CiAgICAgICAgIG9uOiBmdW5jdGlvbihlLCBuLCByLCBpLCBvKSB7CiAgICAgICAgICAgICB2YXIg
YSwKICAgICAgICAgICAgICAgICBzOwpAQCAtMTM3OCw3ICsxNTAxLDggQEAKICAgICAgICAgICAg
IHZhciByID0gdGhpc1swXTsKICAgICAgICAgICAgIHJldHVybiByID8gYi5ldmVudC50cmlnZ2Vy
KGUsIG4sIHIsICEwKSA6IHQKICAgICAgICAgfQotICAgIH0pLCBmdW5jdGlvbihlLCB0KSB7Cisg
ICAgfSksCisgICAgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICB2YXIgbiwKICAgICAgICAgICAg
IHIsCiAgICAgICAgICAgICBpLApAQCAtMTUxOCwxMCArMTY0MiwxNCBAQAogICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKFQucXNhICYmICFoLnRlc3QoZSkpIHsKICAg
ICAgICAgICAgICAgICAgICAgaWYgKGYgPSAhMCwgZyA9IHgsIG0gPSB0LCB2ID0gOSA9PT0gcyAm
JiBlLCAxID09PSBzICYmICJvYmplY3QiICE9PSB0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBmdChlKSwgKGYgPSB0LmdldEF0dHJpYnV0ZSgi
aWQiKSkgPyBnID0gZi5yZXBsYWNlKEssICJcXCQmIikgOiB0LnNldEF0dHJpYnV0ZSgiaWQiLCBn
KSwgZyA9ICJbaWQ9JyIgKyBnICsgIiddICIsIHUgPSBsLmxlbmd0aDsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGwgPSBmdChlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIChmID0gdC5nZXRB
dHRyaWJ1dGUoImlkIikpID8gZyA9IGYucmVwbGFjZShLLCAiXFwkJiIpIDogdC5zZXRBdHRyaWJ1
dGUoImlkIiwgZyksCisgICAgICAgICAgICAgICAgICAgICAgICBnID0gIltpZD0nIiArIGcgKyAi
J10gIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBsLmxlbmd0aDsKICAgICAgICAgICAg
ICAgICAgICAgICAgIHdoaWxlICh1LS0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbFt1
XSA9IGcgKyBkdChsW3VdKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG0gPSBWLnRlc3QoZSkg
JiYgdC5wYXJlbnROb2RlIHx8IHQsIHYgPSBsLmpvaW4oIiwiKQorICAgICAgICAgICAgICAgICAg
ICAgICAgbSA9IFYudGVzdChlKSAmJiB0LnBhcmVudE5vZGUgfHwgdCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHYgPSBsLmpvaW4oIiwiKQogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgIGlmICh2KQogICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKQEAgLTE1
MzYsNyArMTY2NCw4IEBACiAgICAgICAgIGEgPSBzdC5pc1hNTCA9IGZ1bmN0aW9uKGUpIHsKICAg
ICAgICAgICAgIHZhciB0ID0gZSAmJiAoZS5vd25lckRvY3VtZW50IHx8IGUpLmRvY3VtZW50RWxl
bWVudDsKICAgICAgICAgICAgIHJldHVybiB0ID8gIkhUTUwiICE9PSB0Lm5vZGVOYW1lIDogITEK
LSAgICAgICAgfSwgYyA9IHN0LnNldERvY3VtZW50ID0gZnVuY3Rpb24oZSkgeworICAgICAgICB9
LAorICAgICAgICBjID0gc3Quc2V0RG9jdW1lbnQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAg
ICB2YXIgbiA9IGUgPyBlLm93bmVyRG9jdW1lbnQgfHwgZSA6IHc7CiAgICAgICAgICAgICByZXR1
cm4gbiAhPT0gcCAmJiA5ID09PSBuLm5vZGVUeXBlICYmIG4uZG9jdW1lbnRFbGVtZW50ID8gKHAg
PSBuLCBmID0gbi5kb2N1bWVudEVsZW1lbnQsIGQgPSBhKG4pLCBULnRhZ05hbWVOb0NvbW1lbnRz
ID0gYXQoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgIHJldHVybiBlLmFwcGVuZENoaWxk
KG4uY3JlYXRlQ29tbWVudCgiIikpLCAhZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpLmxlbmd0
aApAQCAtMTU0Nyw3ICsxNjc2LDkgQEAKICAgICAgICAgICAgIH0pLCBULmdldEJ5Q2xhc3NOYW1l
ID0gYXQoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgIHJldHVybiBlLmlubmVySFRNTCA9
ICI8ZGl2IGNsYXNzPSdoaWRkZW4gZSc+PC9kaXY+PGRpdiBjbGFzcz0naGlkZGVuJz48L2Rpdj4i
LCBlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUgJiYgZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJl
IikubGVuZ3RoID8gKGUubGFzdENoaWxkLmNsYXNzTmFtZSA9ICJlIiwgMiA9PT0gZS5nZXRFbGVt
ZW50c0J5Q2xhc3NOYW1lKCJlIikubGVuZ3RoKSA6ICExCiAgICAgICAgICAgICB9KSwgVC5nZXRC
eU5hbWUgPSBhdChmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICAgICAgZS5pZCA9IHggKyAwLCBl
LmlubmVySFRNTCA9ICI8YSBuYW1lPSciICsgeCArICInPjwvYT48ZGl2IG5hbWU9JyIgKyB4ICsg
Iic+PC9kaXY+IiwgZi5pbnNlcnRCZWZvcmUoZSwgZi5maXJzdENoaWxkKTsKKyAgICAgICAgICAg
ICAgICBlLmlkID0geCArIDAsCisgICAgICAgICAgICAgICAgZS5pbm5lckhUTUwgPSAiPGEgbmFt
ZT0nIiArIHggKyAiJz48L2E+PGRpdiBuYW1lPSciICsgeCArICInPjwvZGl2PiIsCisgICAgICAg
ICAgICAgICAgZi5pbnNlcnRCZWZvcmUoZSwgZi5maXJzdENoaWxkKTsKICAgICAgICAgICAgICAg
ICB2YXIgdCA9IG4uZ2V0RWxlbWVudHNCeU5hbWUgJiYgbi5nZXRFbGVtZW50c0J5TmFtZSh4KS5s
ZW5ndGggPT09IDIgKyBuLmdldEVsZW1lbnRzQnlOYW1lKHggKyAwKS5sZW5ndGg7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIFQuZ2V0SWROb3ROYW1lID0gIW4uZ2V0RWxlbWVudEJ5SWQoeCksIGYu
cmVtb3ZlQ2hpbGQoZSksIHQKICAgICAgICAgICAgIH0pLCBpLmF0dHJIYW5kbGUgPSBhdChmdW5j
dGlvbihlKSB7CkBAIC0xNTk4LDExICsxNzI5LDE5IEBACiAgICAgICAgICAgICB9LCBpLmZpbmQu
Q0xBU1MgPSBULmdldEJ5Q2xhc3NOYW1lICYmIGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgICAg
ICAgICByZXR1cm4gdHlwZW9mIG4uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSA9PT0gQSB8fCBkID8g
dCA6IG4uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShlKQogICAgICAgICAgICAgfSwgZyA9IFtdLCBo
ID0gWyI6Zm9jdXMiXSwgKFQucXNhID0gcnQobi5xdWVyeVNlbGVjdG9yQWxsKSkgJiYgKGF0KGZ1
bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAgICBlLmlubmVySFRNTCA9ICI8c2VsZWN0PjxvcHRp
b24gc2VsZWN0ZWQ9Jyc+PC9vcHRpb24+PC9zZWxlY3Q+IiwgZS5xdWVyeVNlbGVjdG9yQWxsKCJb
c2VsZWN0ZWRdIikubGVuZ3RoIHx8IGgucHVzaCgiXFxbIiArIF8gKyAiKig/OmNoZWNrZWR8ZGlz
YWJsZWR8aXNtYXB8bXVsdGlwbGV8cmVhZG9ubHl8c2VsZWN0ZWR8dmFsdWUpIiksIGUucXVlcnlT
ZWxlY3RvckFsbCgiOmNoZWNrZWQiKS5sZW5ndGggfHwgaC5wdXNoKCI6Y2hlY2tlZCIpCisgICAg
ICAgICAgICAgICAgZS5pbm5lckhUTUwgPSAiPHNlbGVjdD48b3B0aW9uIHNlbGVjdGVkPScnPjwv
b3B0aW9uPjwvc2VsZWN0PiIsCisgICAgICAgICAgICAgICAgZS5xdWVyeVNlbGVjdG9yQWxsKCJb
c2VsZWN0ZWRdIikubGVuZ3RoIHx8IGgucHVzaCgiXFxbIiArIF8gKyAiKig/OmNoZWNrZWR8ZGlz
YWJsZWR8aXNtYXB8bXVsdGlwbGV8cmVhZG9ubHl8c2VsZWN0ZWR8dmFsdWUpIiksCisgICAgICAg
ICAgICAgICAgZS5xdWVyeVNlbGVjdG9yQWxsKCI6Y2hlY2tlZCIpLmxlbmd0aCB8fCBoLnB1c2go
IjpjaGVja2VkIikKICAgICAgICAgICAgIH0pLCBhdChmdW5jdGlvbihlKSB7Ci0gICAgICAgICAg
ICAgICAgZS5pbm5lckhUTUwgPSAiPGlucHV0IHR5cGU9J2hpZGRlbicgaT0nJy8+IiwgZS5xdWVy
eVNlbGVjdG9yQWxsKCJbaV49JyddIikubGVuZ3RoICYmIGgucHVzaCgiWypeJF09IiArIF8gKyAi
Kig/OlwiXCJ8JycpIiksIGUucXVlcnlTZWxlY3RvckFsbCgiOmVuYWJsZWQiKS5sZW5ndGggfHwg
aC5wdXNoKCI6ZW5hYmxlZCIsICI6ZGlzYWJsZWQiKSwgZS5xdWVyeVNlbGVjdG9yQWxsKCIqLDp4
IiksIGgucHVzaCgiLC4qOiIpCisgICAgICAgICAgICAgICAgZS5pbm5lckhUTUwgPSAiPGlucHV0
IHR5cGU9J2hpZGRlbicgaT0nJy8+IiwKKyAgICAgICAgICAgICAgICBlLnF1ZXJ5U2VsZWN0b3JB
bGwoIltpXj0nJ10iKS5sZW5ndGggJiYgaC5wdXNoKCJbKl4kXT0iICsgXyArICIqKD86XCJcInwn
JykiKSwKKyAgICAgICAgICAgICAgICBlLnF1ZXJ5U2VsZWN0b3JBbGwoIjplbmFibGVkIikubGVu
Z3RoIHx8IGgucHVzaCgiOmVuYWJsZWQiLCAiOmRpc2FibGVkIiksCisgICAgICAgICAgICAgICAg
ZS5xdWVyeVNlbGVjdG9yQWxsKCIqLDp4IiksCisgICAgICAgICAgICAgICAgaC5wdXNoKCIsLio6
IikKICAgICAgICAgICAgIH0pKSwgKFQubWF0Y2hlc1NlbGVjdG9yID0gcnQobSA9IGYubWF0Y2hl
c1NlbGVjdG9yIHx8IGYubW96TWF0Y2hlc1NlbGVjdG9yIHx8IGYud2Via2l0TWF0Y2hlc1NlbGVj
dG9yIHx8IGYub01hdGNoZXNTZWxlY3RvciB8fCBmLm1zTWF0Y2hlc1NlbGVjdG9yKSkgJiYgYXQo
ZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgICAgIFQuZGlzY29ubmVjdGVkTWF0Y2ggPSBtLmNh
bGwoZSwgImRpdiIpLCBtLmNhbGwoZSwgIltzIT0nJ106eCIpLCBnLnB1c2goIiE9IiwgUikKKyAg
ICAgICAgICAgICAgICBULmRpc2Nvbm5lY3RlZE1hdGNoID0gbS5jYWxsKGUsICJkaXYiKSwKKyAg
ICAgICAgICAgICAgICBtLmNhbGwoZSwgIltzIT0nJ106eCIpLAorICAgICAgICAgICAgICAgIGcu
cHVzaCgiIT0iLCBSKQogICAgICAgICAgICAgfSksIGggPSBSZWdFeHAoaC5qb2luKCJ8IikpLCBn
ID0gUmVnRXhwKGcuam9pbigifCIpKSwgeSA9IHJ0KGYuY29udGFpbnMpIHx8IGYuY29tcGFyZURv
Y3VtZW50UG9zaXRpb24gPyBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgdmFyIG4g
PSA5ID09PSBlLm5vZGVUeXBlID8gZS5kb2N1bWVudEVsZW1lbnQgOiBlLAogICAgICAgICAgICAg
ICAgICAgICByID0gdCAmJiB0LnBhcmVudE5vZGU7CkBAIC0xNjM5LDkgKzE3NzgsMTEgQEAKICAg
ICAgICAgICAgICAgICAgICAgaSsrOwogICAgICAgICAgICAgICAgIHJldHVybiBpID8gdXQoc1tp
XSwgbFtpXSkgOiBzW2ldID09PSB3ID8gLTEgOiBsW2ldID09PSB3ID8gMSA6IDAKICAgICAgICAg
ICAgIH0sIHUgPSAhMSwgWzAsIDBdLnNvcnQodiksIFQuZGV0ZWN0RHVwbGljYXRlcyA9IHUsIHAp
IDogcAotICAgICAgICB9LCBzdC5tYXRjaGVzID0gZnVuY3Rpb24oZSwgdCkgeworICAgICAgICB9
LAorICAgICAgICBzdC5tYXRjaGVzID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgcmV0
dXJuIHN0KGUsIG51bGwsIG51bGwsIHQpCi0gICAgICAgIH0sIHN0Lm1hdGNoZXNTZWxlY3RvciA9
IGZ1bmN0aW9uKGUsIHQpIHsKKyAgICAgICAgfSwKKyAgICAgICAgc3QubWF0Y2hlc1NlbGVjdG9y
ID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgaWYgKChlLm93bmVyRG9jdW1lbnQgfHwg
ZSkgIT09IHAgJiYgYyhlKSwgdCA9IHQucmVwbGFjZShaLCAiPSckMSddIiksICEoIVQubWF0Y2hl
c1NlbGVjdG9yIHx8IGQgfHwgZyAmJiBnLnRlc3QodCkgfHwgaC50ZXN0KHQpKSkKICAgICAgICAg
ICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IG0uY2FsbChlLCB0KTsK
QEAgLTE2NDksMTQgKzE3OTAsMTggQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBu
CiAgICAgICAgICAgICAgICAgfSBjYXRjaCAocikge30KICAgICAgICAgICAgIHJldHVybiBzdCh0
LCBwLCBudWxsLCBbZV0pLmxlbmd0aCA+IDAKLSAgICAgICAgfSwgc3QuY29udGFpbnMgPSBmdW5j
dGlvbihlLCB0KSB7CisgICAgICAgIH0sCisgICAgICAgIHN0LmNvbnRhaW5zID0gZnVuY3Rpb24o
ZSwgdCkgewogICAgICAgICAgICAgcmV0dXJuIChlLm93bmVyRG9jdW1lbnQgfHwgZSkgIT09IHAg
JiYgYyhlKSwgeShlLCB0KQotICAgICAgICB9LCBzdC5hdHRyID0gZnVuY3Rpb24oZSwgdCkgewor
ICAgICAgICB9LAorICAgICAgICBzdC5hdHRyID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAg
ICAgdmFyIG47CiAgICAgICAgICAgICByZXR1cm4gKGUub3duZXJEb2N1bWVudCB8fCBlKSAhPT0g
cCAmJiBjKGUpLCBkIHx8ICh0ID0gdC50b0xvd2VyQ2FzZSgpKSwgKG4gPSBpLmF0dHJIYW5kbGVb
dF0pID8gbihlKSA6IGQgfHwgVC5hdHRyaWJ1dGVzID8gZS5nZXRBdHRyaWJ1dGUodCkgOiAoKG4g
PSBlLmdldEF0dHJpYnV0ZU5vZGUodCkpIHx8IGUuZ2V0QXR0cmlidXRlKHQpKSAmJiBlW3RdID09
PSAhMCA/IHQgOiBuICYmIG4uc3BlY2lmaWVkID8gbi52YWx1ZSA6IG51bGwKLSAgICAgICAgfSwg
c3QuZXJyb3IgPSBmdW5jdGlvbihlKSB7CisgICAgICAgIH0sCisgICAgICAgIHN0LmVycm9yID0g
ZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgdGhyb3cgRXJyb3IoIlN5bnRheCBlcnJvciwgdW5y
ZWNvZ25pemVkIGV4cHJlc3Npb246ICIgKyBlKQotICAgICAgICB9LCBzdC51bmlxdWVTb3J0ID0g
ZnVuY3Rpb24oZSkgeworICAgICAgICB9LAorICAgICAgICBzdC51bmlxdWVTb3J0ID0gZnVuY3Rp
b24oZSkgewogICAgICAgICAgICAgdmFyIHQsCiAgICAgICAgICAgICAgICAgbiA9IFtdLAogICAg
ICAgICAgICAgICAgIHIgPSAxLApAQCAtMTcyMCw3ICsxODY1LDggQEAKICAgICAgICAgICAgICAg
ICBmb3IgKDsgdCA9IGVbcl07IHIrKykKICAgICAgICAgICAgICAgICAgICAgbiArPSBvKHQpOwog
ICAgICAgICAgICAgcmV0dXJuIG4KLSAgICAgICAgfSwgaSA9IHN0LnNlbGVjdG9ycyA9IHsKKyAg
ICAgICAgfSwKKyAgICAgICAgaSA9IHN0LnNlbGVjdG9ycyA9IHsKICAgICAgICAgICAgIGNhY2hl
TGVuZ3RoOiA1MCwKICAgICAgICAgICAgIGNyZWF0ZVBzZXVkbzogb3QsCiAgICAgICAgICAgICBt
YXRjaDogVSwKQEAgLTE4MDMsNyArMTk0OSwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGggPSBbYSA/IG0uZmlyc3RDaGlsZCA6IG0ubGFzdENo
aWxkXSwgYSAmJiB2KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBtW3hd
IHx8IChtW3hdID0ge30pLCBsID0gY1tlXSB8fCBbXSwgZCA9IGxbMF0gPT09IE4gJiYgbFsxXSwg
ZiA9IGxbMF0gPT09IE4gJiYgbFsyXSwgcCA9IGQgJiYgbS5jaGlsZE5vZGVzW2RdOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gbVt4XSB8fCAobVt4XSA9IHt9KSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IGNbZV0gfHwgW10sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGQgPSBsWzBdID09PSBOICYmIGxbMV0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGYgPSBsWzBdID09PSBOICYmIGxbMl0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHAgPSBkICYmIG0uY2hpbGROb2Rlc1tkXTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHAgPSArK2QgJiYgcCAmJiBwW2ddIHx8IChmID0g
ZCA9IDApIHx8IGgucG9wKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoMSA9PT0gcC5ub2RlVHlwZSAmJiArK2YgJiYgcCA9PT0gdCkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNbZV0gPSBbTiwgZCwgZl07CkBAIC0xODI3LDcgKzE5
NzcsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSByKGUsIHQpLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGEgPSBvLmxlbmd0aDsKICAgICAgICAgICAgICAgICAgICAg
ICAgIHdoaWxlIChhLS0pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IE0uY2FsbChl
LCBvW2FdKSwgZVtpXSA9ICEobltpXSA9IG9bYV0pCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaSA9IE0uY2FsbChlLCBvW2FdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2ld
ID0gIShuW2ldID0gb1thXSkKICAgICAgICAgICAgICAgICAgICAgfSkgOiBmdW5jdGlvbihlKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcihlLCAwLCBuKQogICAgICAgICAgICAg
ICAgICAgICB9KSA6IHIKQEAgLTE5NzIsOSArMjEyMywxMyBAQAogICAgICAgICAgICAgICAgIGMg
PSBFW2UgKyAiICJdOwogICAgICAgICAgICAgaWYgKGMpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IHQgPyAwIDogYy5zbGljZSgwKTsKLSAgICAgICAgICAgIHMgPSBlLCB1ID0gW10sIGwgPSBpLnBy
ZUZpbHRlcjsKKyAgICAgICAgICAgIHMgPSBlLAorICAgICAgICAgICAgdSA9IFtdLAorICAgICAg
ICAgICAgbCA9IGkucHJlRmlsdGVyOwogICAgICAgICAgICAgd2hpbGUgKHMpIHsKLSAgICAgICAg
ICAgICAgICAoIW4gfHwgKHIgPSAkLmV4ZWMocykpKSAmJiAociAmJiAocyA9IHMuc2xpY2Uoclsw
XS5sZW5ndGgpIHx8IHMpLCB1LnB1c2gobyA9IFtdKSksIG4gPSAhMSwgKHIgPSBJLmV4ZWMocykp
ICYmIChuID0gci5zaGlmdCgpLCBvLnB1c2goeworICAgICAgICAgICAgICAgICghbiB8fCAociA9
ICQuZXhlYyhzKSkpICYmIChyICYmIChzID0gcy5zbGljZShyWzBdLmxlbmd0aCkgfHwgcyksIHUu
cHVzaChvID0gW10pKSwKKyAgICAgICAgICAgICAgICBuID0gITEsCisgICAgICAgICAgICAgICAg
KHIgPSBJLmV4ZWMocykpICYmIChuID0gci5zaGlmdCgpLCBvLnB1c2goewogICAgICAgICAgICAg
ICAgICAgICB2YWx1ZTogbiwKICAgICAgICAgICAgICAgICAgICAgdHlwZTogclswXS5yZXBsYWNl
KFcsICIgIikKICAgICAgICAgICAgICAgICB9KSwgcyA9IHMuc2xpY2Uobi5sZW5ndGgpKTsKQEAg
LTIwNTUsMTQgKzIyMTAsMTcgQEAKICAgICAgICAgICAgICAgICAgICAgbSA9ICFlIHx8ICFvICYm
IHQgPyBnIDogbXQoZywgZiwgZSwgcywgdSksCiAgICAgICAgICAgICAgICAgICAgIHkgPSBuID8g
aSB8fCAobyA/IGUgOiBoIHx8IHIpID8gW10gOiBhIDogbTsKICAgICAgICAgICAgICAgICBpZiAo
biAmJiBuKG0sIHksIHMsIHUpLCByKSB7Ci0gICAgICAgICAgICAgICAgICAgIGwgPSBtdCh5LCBk
KSwgcihsLCBbXSwgcywgdSksIGMgPSBsLmxlbmd0aDsKKyAgICAgICAgICAgICAgICAgICAgbCA9
IG10KHksIGQpLAorICAgICAgICAgICAgICAgICAgICByKGwsIFtdLCBzLCB1KSwKKyAgICAgICAg
ICAgICAgICAgICAgYyA9IGwubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgICB3aGlsZSAoYy0t
KQogICAgICAgICAgICAgICAgICAgICAgICAgKHAgPSBsW2NdKSAmJiAoeVtkW2NdXSA9ICEobVtk
W2NdXSA9IHApKQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAobykgewog
ICAgICAgICAgICAgICAgICAgICBpZiAoaSB8fCBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoaSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBbXSwgYyA9IHkubGVu
Z3RoOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBbXSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjID0geS5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
d2hpbGUgKGMtLSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHAgPSB5W2NdKSAm
JiBsLnB1c2gobVtjXSA9IHApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkobnVsbCwg
eSA9IFtdLCBsLCB1KQpAQCAtMjA3Miw3ICsyMjMwLDggQEAKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAocCA9IHlbY10pICYmIChsID0gaSA/IE0uY2FsbChvLCBwKSA6IGZbY10pID4gLTEg
JiYgKG9bbF0gPSAhKGFbbF0gPSBwKSkKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICB5ID0gbXQoeSA9PT0gYSA/IHkuc3Bs
aWNlKGgsIHkubGVuZ3RoKSA6IHkpLCBpID8gaShudWxsLCBhLCB5LCB1KSA6IEguYXBwbHkoYSwg
eSkKKyAgICAgICAgICAgICAgICAgICAgeSA9IG10KHkgPT09IGEgPyB5LnNwbGljZShoLCB5Lmxl
bmd0aCkgOiB5KSwKKyAgICAgICAgICAgICAgICAgICAgaSA/IGkobnVsbCwgYSwgeSwgdSkgOiBI
LmFwcGx5KGEsIHkpCiAgICAgICAgICAgICB9KQogICAgICAgICB9CiAgICAgICAgIGZ1bmN0aW9u
IHZ0KGUpIHsKQEAgLTIxNDQsNyArMjMwMyw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB4W2JdIHx8IHlbYl0gfHwgKHlbYl0gPSBMLmNhbGwoZikpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHkgPSBtdCh5KQogICAgICAgICAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgICAgICAgICAgSC5hcHBseShmLCB5KSwgdyAmJiAhcyAmJiB5Lmxlbmd0
aCA+IDAgJiYgdiArIHQubGVuZ3RoID4gMSAmJiBzdC51bmlxdWVTb3J0KGYpCisgICAgICAgICAg
ICAgICAgICAgICAgICBILmFwcGx5KGYsIHkpLAorICAgICAgICAgICAgICAgICAgICAgICAgdyAm
JiAhcyAmJiB5Lmxlbmd0aCA+IDAgJiYgdiArIHQubGVuZ3RoID4gMSAmJiBzdC51bmlxdWVTb3J0
KGYpCiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHcg
JiYgKE4gPSBrLCBsID0gVCksIHgKICAgICAgICAgICAgICAgICB9OwpAQCAtMjE1Niw5ICsyMzE2
LDExIEBACiAgICAgICAgICAgICAgICAgaSA9IFtdLAogICAgICAgICAgICAgICAgIG8gPSBTW2Ug
KyAiICJdOwogICAgICAgICAgICAgaWYgKCFvKSB7Ci0gICAgICAgICAgICAgICAgdCB8fCAodCA9
IGZ0KGUpKSwgbiA9IHQubGVuZ3RoOworICAgICAgICAgICAgICAgIHQgfHwgKHQgPSBmdChlKSks
CisgICAgICAgICAgICAgICAgbiA9IHQubGVuZ3RoOwogICAgICAgICAgICAgICAgIHdoaWxlIChu
LS0pCi0gICAgICAgICAgICAgICAgICAgIG8gPSB2dCh0W25dKSwgb1t4XSA/IHIucHVzaChvKSA6
IGkucHVzaChvKTsKKyAgICAgICAgICAgICAgICAgICAgbyA9IHZ0KHRbbl0pLAorICAgICAgICAg
ICAgICAgICAgICBvW3hdID8gci5wdXNoKG8pIDogaS5wdXNoKG8pOwogICAgICAgICAgICAgICAg
IG8gPSBTKGUsIGJ0KGksIHIpKQogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIG8K
QEAgLTIxOTgsNyArMjM2MCwxNyBAQAogICAgICAgICB9CiAgICAgICAgIGkucHNldWRvcy5udGgg
PSBpLnBzZXVkb3MuZXE7CiAgICAgICAgIGZ1bmN0aW9uIFR0KCkge30KLSAgICAgICAgaS5maWx0
ZXJzID0gVHQucHJvdG90eXBlID0gaS5wc2V1ZG9zLCBpLnNldEZpbHRlcnMgPSBuZXcgVHQsIGMo
KSwgc3QuYXR0ciA9IGIuYXR0ciwgYi5maW5kID0gc3QsIGIuZXhwciA9IHN0LnNlbGVjdG9ycywg
Yi5leHByWyI6Il0gPSBiLmV4cHIucHNldWRvcywgYi51bmlxdWUgPSBzdC51bmlxdWVTb3J0LCBi
LnRleHQgPSBzdC5nZXRUZXh0LCBiLmlzWE1MRG9jID0gc3QuaXNYTUwsIGIuY29udGFpbnMgPSBz
dC5jb250YWlucworICAgICAgICBpLmZpbHRlcnMgPSBUdC5wcm90b3R5cGUgPSBpLnBzZXVkb3Ms
CisgICAgICAgIGkuc2V0RmlsdGVycyA9IG5ldyBUdCwKKyAgICAgICAgYygpLAorICAgICAgICBz
dC5hdHRyID0gYi5hdHRyLAorICAgICAgICBiLmZpbmQgPSBzdCwKKyAgICAgICAgYi5leHByID0g
c3Quc2VsZWN0b3JzLAorICAgICAgICBiLmV4cHJbIjoiXSA9IGIuZXhwci5wc2V1ZG9zLAorICAg
ICAgICBiLnVuaXF1ZSA9IHN0LnVuaXF1ZVNvcnQsCisgICAgICAgIGIudGV4dCA9IHN0LmdldFRl
eHQsCisgICAgICAgIGIuaXNYTUxEb2MgPSBzdC5pc1hNTCwKKyAgICAgICAgYi5jb250YWlucyA9
IHN0LmNvbnRhaW5zCiAgICAgfShlKTsKICAgICB2YXIgYXQgPSAvVW50aWwkLywKICAgICAgICAg
c3QgPSAvXig/OnBhcmVudHN8cHJldig/OlVudGlsfEFsbCkpLywKQEAgLTIyNzQsNyArMjQ0Niw4
IEBACiAgICAgICAgIGFkZEJhY2s6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgIHJldHVybiB0
aGlzLmFkZChudWxsID09IGUgPyB0aGlzLnByZXZPYmplY3QgOiB0aGlzLnByZXZPYmplY3QuZmls
dGVyKGUpKQogICAgICAgICB9Ci0gICAgfSksIGIuZm4uYW5kU2VsZiA9IGIuZm4uYWRkQmFjazsK
KyAgICB9KSwKKyAgICBiLmZuLmFuZFNlbGYgPSBiLmZuLmFkZEJhY2s7CiAgICAgZnVuY3Rpb24g
cHQoZSwgdCkgewogICAgICAgICBkbyBlID0gZVt0XTsKICAgICAgICAgd2hpbGUgKGUgJiYgMSAh
PT0gZS5ub2RlVHlwZSk7CkBAIC0yMzIzLDcgKzI0OTYsOCBAQAogICAgICAgICAgICAgdmFyIGkg
PSBiLm1hcCh0aGlzLCB0LCBuKTsKICAgICAgICAgICAgIHJldHVybiBhdC50ZXN0KGUpIHx8IChy
ID0gbiksIHIgJiYgInN0cmluZyIgPT0gdHlwZW9mIHIgJiYgKGkgPSBiLmZpbHRlcihyLCBpKSks
IGkgPSB0aGlzLmxlbmd0aCA+IDEgJiYgIWN0W2VdID8gYi51bmlxdWUoaSkgOiBpLCB0aGlzLmxl
bmd0aCA+IDEgJiYgc3QudGVzdChlKSAmJiAoaSA9IGkucmV2ZXJzZSgpKSwgdGhpcy5wdXNoU3Rh
Y2soaSkKICAgICAgICAgfQotICAgIH0pLCBiLmV4dGVuZCh7CisgICAgfSksCisgICAgYi5leHRl
bmQoewogICAgICAgICBmaWx0ZXI6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgIHJl
dHVybiBuICYmIChlID0gIjpub3QoIiArIGUgKyAiKSIpLCAxID09PSB0Lmxlbmd0aCA/IGIuZmlu
ZC5tYXRjaGVzU2VsZWN0b3IodFswXSwgZSkgPyBbdFswXV0gOiBbXSA6IGIuZmluZC5tYXRjaGVz
KGUsIHQpCiAgICAgICAgIH0sCkBAIC0yMzMxLDcgKzI1MDUsOCBAQAogICAgICAgICAgICAgdmFy
IGkgPSBbXSwKICAgICAgICAgICAgICAgICBvID0gZVtuXTsKICAgICAgICAgICAgIHdoaWxlIChv
ICYmIDkgIT09IG8ubm9kZVR5cGUgJiYgKHIgPT09IHQgfHwgMSAhPT0gby5ub2RlVHlwZSB8fCAh
YihvKS5pcyhyKSkpCi0gICAgICAgICAgICAgICAgMSA9PT0gby5ub2RlVHlwZSAmJiBpLnB1c2go
byksIG8gPSBvW25dOworICAgICAgICAgICAgICAgIDEgPT09IG8ubm9kZVR5cGUgJiYgaS5wdXNo
KG8pLAorICAgICAgICAgICAgICAgIG8gPSBvW25dOwogICAgICAgICAgICAgcmV0dXJuIGkKICAg
ICAgICAgfSwKICAgICAgICAgc2libGluZzogZnVuY3Rpb24oZSwgdCkgewpAQCAtMjM5OCw3ICsy
NTczLDEwIEBACiAgICAgICAgIH0sCiAgICAgICAgIGp0ID0gZHQobyksCiAgICAgICAgIER0ID0g
anQuYXBwZW5kQ2hpbGQoby5jcmVhdGVFbGVtZW50KCJkaXYiKSk7Ci0gICAgQXQub3B0Z3JvdXAg
PSBBdC5vcHRpb24sIEF0LnRib2R5ID0gQXQudGZvb3QgPSBBdC5jb2xncm91cCA9IEF0LmNhcHRp
b24gPSBBdC50aGVhZCwgQXQudGggPSBBdC50ZCwgYi5mbi5leHRlbmQoeworICAgIEF0Lm9wdGdy
b3VwID0gQXQub3B0aW9uLAorICAgIEF0LnRib2R5ID0gQXQudGZvb3QgPSBBdC5jb2xncm91cCA9
IEF0LmNhcHRpb24gPSBBdC50aGVhZCwKKyAgICBBdC50aCA9IEF0LnRkLAorICAgIGIuZm4uZXh0
ZW5kKHsKICAgICAgICAgdGV4dDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgcmV0dXJuIGIu
YWNjZXNzKHRoaXMsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICByZXR1cm4gZSA9PT0g
dCA/IGIudGV4dCh0aGlzKSA6IHRoaXMuZW1wdHkoKS5hcHBlbmQoKHRoaXNbMF0gJiYgdGhpc1sw
XS5vd25lckRvY3VtZW50IHx8IG8pLmNyZWF0ZVRleHROb2RlKGUpKQpAQCAtMjQxMSw3ICsyNTg5
LDggQEAKICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIGlmICh0aGlzWzBdKSB7CiAg
ICAgICAgICAgICAgICAgdmFyIHQgPSBiKGUsIHRoaXNbMF0ub3duZXJEb2N1bWVudCkuZXEoMCku
Y2xvbmUoITApOwotICAgICAgICAgICAgICAgIHRoaXNbMF0ucGFyZW50Tm9kZSAmJiB0Lmluc2Vy
dEJlZm9yZSh0aGlzWzBdKSwgdC5tYXAoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgdGhp
c1swXS5wYXJlbnROb2RlICYmIHQuaW5zZXJ0QmVmb3JlKHRoaXNbMF0pLAorICAgICAgICAgICAg
ICAgIHQubWFwKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXM7
CiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChlLmZpcnN0Q2hpbGQgJiYgMSA9PT0gZS5maXJz
dENoaWxkLm5vZGVUeXBlKQogICAgICAgICAgICAgICAgICAgICAgICAgZSA9IGUuZmlyc3RDaGls
ZDsKQEAgLTI0OTQsNyArMjY3Myw4IEBACiAgICAgICAgICAgICAgICAgICAgIGUgPSBlLnJlcGxh
Y2UodnQsICI8JDE+PC8kMj4iKTsKICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAg
ICAgICAgICAgICAgICAgIGZvciAoOyBpID4gcjsgcisrKQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG4gPSB0aGlzW3JdIHx8IHt9LCAxID09PSBuLm5vZGVUeXBlICYmIChiLmNsZWFuRGF0
YShPdChuLCAhMSkpLCBuLmlubmVySFRNTCA9IGUpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG4gPSB0aGlzW3JdIHx8IHt9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgPT09
IG4ubm9kZVR5cGUgJiYgKGIuY2xlYW5EYXRhKE90KG4sICExKSksIG4uaW5uZXJIVE1MID0gZSk7
CiAgICAgICAgICAgICAgICAgICAgICAgICBuID0gMAogICAgICAgICAgICAgICAgICAgICB9IGNh
dGNoIChvKSB7fQogICAgICAgICAgICAgICAgIH0KQEAgLTI1MjksMTQgKzI3MDksMTggQEAKICAg
ICAgICAgICAgIGlmIChtIHx8ICEoMSA+PSBwIHx8ICJzdHJpbmciICE9IHR5cGVvZiBnIHx8IGIu
c3VwcG9ydC5jaGVja0Nsb25lKSAmJiBDdC50ZXN0KGcpKQogICAgICAgICAgICAgICAgIHJldHVy
biB0aGlzLmVhY2goZnVuY3Rpb24oaSkgewogICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IGQu
ZXEoaSk7Ci0gICAgICAgICAgICAgICAgICAgIG0gJiYgKGVbMF0gPSBnLmNhbGwodGhpcywgaSwg
biA/IG8uaHRtbCgpIDogdCkpLCBvLmRvbU1hbmlwKGUsIG4sIHIpCisgICAgICAgICAgICAgICAg
ICAgIG0gJiYgKGVbMF0gPSBnLmNhbGwodGhpcywgaSwgbiA/IG8uaHRtbCgpIDogdCkpLAorICAg
ICAgICAgICAgICAgICAgICBvLmRvbU1hbmlwKGUsIG4sIHIpCiAgICAgICAgICAgICAgICAgfSk7
CiAgICAgICAgICAgICBpZiAocCAmJiAobCA9IGIuYnVpbGRGcmFnbWVudChlLCB0aGlzWzBdLm93
bmVyRG9jdW1lbnQsICExLCB0aGlzKSwgaSA9IGwuZmlyc3RDaGlsZCwgMSA9PT0gbC5jaGlsZE5v
ZGVzLmxlbmd0aCAmJiAobCA9IGkpLCBpKSkgewogICAgICAgICAgICAgICAgIGZvciAobiA9IG4g
JiYgYi5ub2RlTmFtZShpLCAidHIiKSwgcyA9IGIubWFwKE90KGwsICJzY3JpcHQiKSwgSHQpLCBh
ID0gcy5sZW5ndGg7IHAgPiBjOyBjKyspCi0gICAgICAgICAgICAgICAgICAgIG8gPSBsLCBjICE9
PSBoICYmIChvID0gYi5jbG9uZShvLCAhMCwgITApLCBhICYmIGIubWVyZ2UocywgT3QobywgInNj
cmlwdCIpKSksIHIuY2FsbChuICYmIGIubm9kZU5hbWUodGhpc1tjXSwgInRhYmxlIikgPyBMdCh0
aGlzW2NdLCAidGJvZHkiKSA6IHRoaXNbY10sIG8sIGMpOworICAgICAgICAgICAgICAgICAgICBv
ID0gbCwKKyAgICAgICAgICAgICAgICAgICAgYyAhPT0gaCAmJiAobyA9IGIuY2xvbmUobywgITAs
ICEwKSwgYSAmJiBiLm1lcmdlKHMsIE90KG8sICJzY3JpcHQiKSkpLAorICAgICAgICAgICAgICAg
ICAgICByLmNhbGwobiAmJiBiLm5vZGVOYW1lKHRoaXNbY10sICJ0YWJsZSIpID8gTHQodGhpc1tj
XSwgInRib2R5IikgOiB0aGlzW2NdLCBvLCBjKTsKICAgICAgICAgICAgICAgICBpZiAoYSkKICAg
ICAgICAgICAgICAgICAgICAgZm9yICh1ID0gc1tzLmxlbmd0aCAtIDFdLm93bmVyRG9jdW1lbnQs
IGIubWFwKHMsIHF0KSwgYyA9IDA7IGEgPiBjOyBjKyspCi0gICAgICAgICAgICAgICAgICAgICAg
ICBvID0gc1tjXSwga3QudGVzdChvLnR5cGUgfHwgIiIpICYmICFiLl9kYXRhKG8sICJnbG9iYWxF
dmFsIikgJiYgYi5jb250YWlucyh1LCBvKSAmJiAoby5zcmMgPyBiLmFqYXgoeworICAgICAgICAg
ICAgICAgICAgICAgICAgbyA9IHNbY10sCisgICAgICAgICAgICAgICAgICAgICAgICBrdC50ZXN0
KG8udHlwZSB8fCAiIikgJiYgIWIuX2RhdGEobywgImdsb2JhbEV2YWwiKSAmJiBiLmNvbnRhaW5z
KHUsIG8pICYmIChvLnNyYyA/IGIuYWpheCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dXJsOiBvLnNyYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAiR0VUIiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogInNjcmlwdCIsCkBAIC0yNTc1LDcg
KzI3NTksOCBAQAogICAgICAgICAgICAgICAgIGEgPSBiLl9kYXRhKHQsIG8pLAogICAgICAgICAg
ICAgICAgIHMgPSBvLmV2ZW50czsKICAgICAgICAgICAgIGlmIChzKSB7Ci0gICAgICAgICAgICAg
ICAgZGVsZXRlIGEuaGFuZGxlLCBhLmV2ZW50cyA9IHt9OworICAgICAgICAgICAgICAgIGRlbGV0
ZSBhLmhhbmRsZSwKKyAgICAgICAgICAgICAgICBhLmV2ZW50cyA9IHt9OwogICAgICAgICAgICAg
ICAgIGZvciAobiBpbiBzKQogICAgICAgICAgICAgICAgICAgICBmb3IgKHIgPSAwLCBpID0gc1tu
XS5sZW5ndGg7IGkgPiByOyByKyspCiAgICAgICAgICAgICAgICAgICAgICAgICBiLmV2ZW50LmFk
ZCh0LCBuLCBzW25dW3JdKQpAQCAtMjYxMSw3ICsyNzk2LDkgQEAKICAgICAgICAgICAgICAgICBv
ID0gYihlKSwKICAgICAgICAgICAgICAgICBhID0gby5sZW5ndGggLSAxOwogICAgICAgICAgICAg
Zm9yICg7IGEgPj0gcjsgcisrKQotICAgICAgICAgICAgICAgIG4gPSByID09PSBhID8gdGhpcyA6
IHRoaXMuY2xvbmUoITApLCBiKG9bcl0pW3RdKG4pLCBkLmFwcGx5KGksIG4uZ2V0KCkpOworICAg
ICAgICAgICAgICAgIG4gPSByID09PSBhID8gdGhpcyA6IHRoaXMuY2xvbmUoITApLAorICAgICAg
ICAgICAgICAgIGIob1tyXSlbdF0obiksCisgICAgICAgICAgICAgICAgZC5hcHBseShpLCBuLmdl
dCgpKTsKICAgICAgICAgICAgIHJldHVybiB0aGlzLnB1c2hTdGFjayhpKQogICAgICAgICB9CiAg
ICAgfSk7CkBAIC0yNjY0LDIxICsyODUxLDI5IEBACiAgICAgICAgICAgICAgICAgICAgIGlmICgi
b2JqZWN0IiA9PT0gYi50eXBlKG8pKQogICAgICAgICAgICAgICAgICAgICAgICAgYi5tZXJnZShk
LCBvLm5vZGVUeXBlID8gW29dIDogbyk7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHd0
LnRlc3QobykpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBzIHx8IGYuYXBwZW5kQ2hp
bGQodC5jcmVhdGVFbGVtZW50KCJkaXYiKSksIHUgPSAoYnQuZXhlYyhvKSB8fCBbIiIsICIiXSlb
MV0udG9Mb3dlckNhc2UoKSwgYyA9IEF0W3VdIHx8IEF0Ll9kZWZhdWx0LCBzLmlubmVySFRNTCA9
IGNbMV0gKyBvLnJlcGxhY2UodnQsICI8JDE+PC8kMj4iKSArIGNbMl0sIGkgPSBjWzBdOworICAg
ICAgICAgICAgICAgICAgICAgICAgcyA9IHMgfHwgZi5hcHBlbmRDaGlsZCh0LmNyZWF0ZUVsZW1l
bnQoImRpdiIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHUgPSAoYnQuZXhlYyhvKSB8fCBb
IiIsICIiXSlbMV0udG9Mb3dlckNhc2UoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBB
dFt1XSB8fCBBdC5fZGVmYXVsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHMuaW5uZXJIVE1M
ID0gY1sxXSArIG8ucmVwbGFjZSh2dCwgIjwkMT48LyQyPiIpICsgY1syXSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGkgPSBjWzBdOwogICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGkt
LSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gcy5sYXN0Q2hpbGQ7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoIWIuc3VwcG9ydC5sZWFkaW5nV2hpdGVzcGFjZSAmJiB5dC50
ZXN0KG8pICYmIGQucHVzaCh0LmNyZWF0ZVRleHROb2RlKHl0LmV4ZWMobylbMF0pKSwgIWIuc3Vw
cG9ydC50Ym9keSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSAidGFibGUiICE9
PSB1IHx8IHh0LnRlc3QobykgPyAiPHRhYmxlPiIgIT09IGNbMV0gfHwgeHQudGVzdChvKSA/IDAg
OiBzIDogcy5maXJzdENoaWxkLCBpID0gbyAmJiBvLmNoaWxkTm9kZXMubGVuZ3RoOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG8gPSAidGFibGUiICE9PSB1IHx8IHh0LnRlc3QobykgPyAi
PHRhYmxlPiIgIT09IGNbMV0gfHwgeHQudGVzdChvKSA/IDAgOiBzIDogcy5maXJzdENoaWxkLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBvICYmIG8uY2hpbGROb2Rlcy5sZW5ndGg7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGktLSkKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYi5ub2RlTmFtZShsID0gby5jaGlsZE5vZGVzW2ldLCAidGJvZHki
KSAmJiAhbC5jaGlsZE5vZGVzLmxlbmd0aCAmJiBvLnJlbW92ZUNoaWxkKGwpCiAgICAgICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBiLm1lcmdlKGQsIHMuY2hp
bGROb2RlcyksIHMudGV4dENvbnRlbnQgPSAiIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGIu
bWVyZ2UoZCwgcy5jaGlsZE5vZGVzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHMudGV4dENv
bnRlbnQgPSAiIjsKICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChzLmZpcnN0Q2hpbGQp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5yZW1vdmVDaGlsZChzLmZpcnN0Q2hpbGQp
OwogICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGYubGFzdENoaWxkCiAgICAgICAgICAgICAg
ICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHQuY3JlYXRlVGV4
dE5vZGUobykpOwotICAgICAgICAgICAgcyAmJiBmLnJlbW92ZUNoaWxkKHMpLCBiLnN1cHBvcnQu
YXBwZW5kQ2hlY2tlZCB8fCBiLmdyZXAoT3QoZCwgImlucHV0IiksIEJ0KSwgaCA9IDA7CisgICAg
ICAgICAgICBzICYmIGYucmVtb3ZlQ2hpbGQocyksCisgICAgICAgICAgICBiLnN1cHBvcnQuYXBw
ZW5kQ2hlY2tlZCB8fCBiLmdyZXAoT3QoZCwgImlucHV0IiksIEJ0KSwKKyAgICAgICAgICAgIGgg
PSAwOwogICAgICAgICAgICAgd2hpbGUgKG8gPSBkW2grK10pCiAgICAgICAgICAgICAgICAgaWYg
KCghciB8fCAtMSA9PT0gYi5pbkFycmF5KG8sIHIpKSAmJiAoYSA9IGIuY29udGFpbnMoby5vd25l
ckRvY3VtZW50LCBvKSwgcyA9IE90KGYuYXBwZW5kQ2hpbGQobyksICJzY3JpcHQiKSwgYSAmJiBN
dChzKSwgbikpIHsKICAgICAgICAgICAgICAgICAgICAgaSA9IDA7CkBAIC0yNzUzLDkgKzI5NDgs
MTEgQEAKICAgICAgICAgICAgIGEgPSAwLAogICAgICAgICAgICAgcyA9IGUubGVuZ3RoOwogICAg
ICAgICBmb3IgKDsgcyA+IGE7IGErKykKLSAgICAgICAgICAgIHIgPSBlW2FdLCByLnN0eWxlICYm
IChvW2FdID0gYi5fZGF0YShyLCAib2xkZGlzcGxheSIpLCBuID0gci5zdHlsZS5kaXNwbGF5LCB0
ID8gKG9bYV0gfHwgIm5vbmUiICE9PSBuIHx8IChyLnN0eWxlLmRpc3BsYXkgPSAiIiksICIiID09
PSByLnN0eWxlLmRpc3BsYXkgJiYgbm4ocikgJiYgKG9bYV0gPSBiLl9kYXRhKHIsICJvbGRkaXNw
bGF5IiwgdW4oci5ub2RlTmFtZSkpKSkgOiBvW2FdIHx8IChpID0gbm4ociksIChuICYmICJub25l
IiAhPT0gbiB8fCAhaSkgJiYgYi5fZGF0YShyLCAib2xkZGlzcGxheSIsIGkgPyBuIDogYi5jc3Mo
ciwgImRpc3BsYXkiKSkpKTsKKyAgICAgICAgICAgIHIgPSBlW2FdLAorICAgICAgICAgICAgci5z
dHlsZSAmJiAob1thXSA9IGIuX2RhdGEociwgIm9sZGRpc3BsYXkiKSwgbiA9IHIuc3R5bGUuZGlz
cGxheSwgdCA/IChvW2FdIHx8ICJub25lIiAhPT0gbiB8fCAoci5zdHlsZS5kaXNwbGF5ID0gIiIp
LCAiIiA9PT0gci5zdHlsZS5kaXNwbGF5ICYmIG5uKHIpICYmIChvW2FdID0gYi5fZGF0YShyLCAi
b2xkZGlzcGxheSIsIHVuKHIubm9kZU5hbWUpKSkpIDogb1thXSB8fCAoaSA9IG5uKHIpLCAobiAm
JiAibm9uZSIgIT09IG4gfHwgIWkpICYmIGIuX2RhdGEociwgIm9sZGRpc3BsYXkiLCBpID8gbiA6
IGIuY3NzKHIsICJkaXNwbGF5IikpKSk7CiAgICAgICAgIGZvciAoYSA9IDA7IHMgPiBhOyBhKysp
Ci0gICAgICAgICAgICByID0gZVthXSwgci5zdHlsZSAmJiAodCAmJiAibm9uZSIgIT09IHIuc3R5
bGUuZGlzcGxheSAmJiAiIiAhPT0gci5zdHlsZS5kaXNwbGF5IHx8IChyLnN0eWxlLmRpc3BsYXkg
PSB0ID8gb1thXSB8fCAiIiA6ICJub25lIikpOworICAgICAgICAgICAgciA9IGVbYV0sCisgICAg
ICAgICAgICByLnN0eWxlICYmICh0ICYmICJub25lIiAhPT0gci5zdHlsZS5kaXNwbGF5ICYmICIi
ICE9PSByLnN0eWxlLmRpc3BsYXkgfHwgKHIuc3R5bGUuZGlzcGxheSA9IHQgPyBvW2FdIHx8ICIi
IDogIm5vbmUiKSk7CiAgICAgICAgIHJldHVybiBlCiAgICAgfQogICAgIGIuZm4uZXh0ZW5kKHsK
QEAgLTI3ODUsNyArMjk4Miw4IEBACiAgICAgICAgICAgICAgICAgKHQgPyBlIDogbm4odGhpcykp
ID8gYih0aGlzKS5zaG93KCkgOiBiKHRoaXMpLmhpZGUoKQogICAgICAgICAgICAgfSkKICAgICAg
ICAgfQotICAgIH0pLCBiLmV4dGVuZCh7CisgICAgfSksCisgICAgYi5leHRlbmQoewogICAgICAg
ICBjc3NIb29rczogewogICAgICAgICAgICAgb3BhY2l0eTogewogICAgICAgICAgICAgICAgIGdl
dDogZnVuY3Rpb24oZSwgdCkgewpAQCAtMjgzNywxMyArMzAzNSwxNSBAQAogICAgICAgICAgICAg
ICAgIG8sCiAgICAgICAgICAgICAgICAgYSA9IHt9OwogICAgICAgICAgICAgZm9yIChvIGluIHQp
Ci0gICAgICAgICAgICAgICAgYVtvXSA9IGUuc3R5bGVbb10sIGUuc3R5bGVbb10gPSB0W29dOwor
ICAgICAgICAgICAgICAgIGFbb10gPSBlLnN0eWxlW29dLAorICAgICAgICAgICAgICAgIGUuc3R5
bGVbb10gPSB0W29dOwogICAgICAgICAgICAgaSA9IG4uYXBwbHkoZSwgciB8fCBbXSk7CiAgICAg
ICAgICAgICBmb3IgKG8gaW4gdCkKICAgICAgICAgICAgICAgICBlLnN0eWxlW29dID0gYVtvXTsK
ICAgICAgICAgICAgIHJldHVybiBpCiAgICAgICAgIH0KLSAgICB9KSwgZS5nZXRDb21wdXRlZFN0
eWxlID8gKFJ0ID0gZnVuY3Rpb24odCkgeworICAgIH0pLAorICAgIGUuZ2V0Q29tcHV0ZWRTdHls
ZSA/IChSdCA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgcmV0dXJuIGUuZ2V0Q29tcHV0ZWRTdHls
ZSh0LCBudWxsKQogICAgIH0sIFd0ID0gZnVuY3Rpb24oZSwgbiwgcikgewogICAgICAgICB2YXIg
aSwKQEAgLTI4NzIsNyArMzA3Miw4IEBACiAgICAgICAgIHZhciBvID0gbiA9PT0gKHIgPyAiYm9y
ZGVyIiA6ICJjb250ZW50IikgPyA0IDogIndpZHRoIiA9PT0gdCA/IDEgOiAwLAogICAgICAgICAg
ICAgYSA9IDA7CiAgICAgICAgIGZvciAoOyA0ID4gbzsgbyArPSAyKQotICAgICAgICAgICAgIm1h
cmdpbiIgPT09IG4gJiYgKGEgKz0gYi5jc3MoZSwgbiArIFp0W29dLCAhMCwgaSkpLCByID8gKCJj
b250ZW50IiA9PT0gbiAmJiAoYSAtPSBiLmNzcyhlLCAicGFkZGluZyIgKyBadFtvXSwgITAsIGkp
KSwgIm1hcmdpbiIgIT09IG4gJiYgKGEgLT0gYi5jc3MoZSwgImJvcmRlciIgKyBadFtvXSArICJX
aWR0aCIsICEwLCBpKSkpIDogKGEgKz0gYi5jc3MoZSwgInBhZGRpbmciICsgWnRbb10sICEwLCBp
KSwgInBhZGRpbmciICE9PSBuICYmIChhICs9IGIuY3NzKGUsICJib3JkZXIiICsgWnRbb10gKyAi
V2lkdGgiLCAhMCwgaSkpKTsKKyAgICAgICAgICAgICJtYXJnaW4iID09PSBuICYmIChhICs9IGIu
Y3NzKGUsIG4gKyBadFtvXSwgITAsIGkpKSwKKyAgICAgICAgICAgIHIgPyAoImNvbnRlbnQiID09
PSBuICYmIChhIC09IGIuY3NzKGUsICJwYWRkaW5nIiArIFp0W29dLCAhMCwgaSkpLCAibWFyZ2lu
IiAhPT0gbiAmJiAoYSAtPSBiLmNzcyhlLCAiYm9yZGVyIiArIFp0W29dICsgIldpZHRoIiwgITAs
IGkpKSkgOiAoYSArPSBiLmNzcyhlLCAicGFkZGluZyIgKyBadFtvXSwgITAsIGkpLCAicGFkZGlu
ZyIgIT09IG4gJiYgKGEgKz0gYi5jc3MoZSwgImJvcmRlciIgKyBadFtvXSArICJXaWR0aCIsICEw
LCBpKSkpOwogICAgICAgICByZXR1cm4gYQogICAgIH0KICAgICBmdW5jdGlvbiBzbihlLCB0LCBu
KSB7CkBAIC0yODgzLDcgKzMwODQsOCBAQAogICAgICAgICBpZiAoMCA+PSBpIHx8IG51bGwgPT0g
aSkgewogICAgICAgICAgICAgaWYgKGkgPSBXdChlLCB0LCBvKSwgKDAgPiBpIHx8IG51bGwgPT0g
aSkgJiYgKGkgPSBlLnN0eWxlW3RdKSwgWXQudGVzdChpKSkKICAgICAgICAgICAgICAgICByZXR1
cm4gaTsKLSAgICAgICAgICAgIHIgPSBhICYmIChiLnN1cHBvcnQuYm94U2l6aW5nUmVsaWFibGUg
fHwgaSA9PT0gZS5zdHlsZVt0XSksIGkgPSBwYXJzZUZsb2F0KGkpIHx8IDAKKyAgICAgICAgICAg
IHIgPSBhICYmIChiLnN1cHBvcnQuYm94U2l6aW5nUmVsaWFibGUgfHwgaSA9PT0gZS5zdHlsZVt0
XSksCisgICAgICAgICAgICBpID0gcGFyc2VGbG9hdChpKSB8fCAwCiAgICAgICAgIH0KICAgICAg
ICAgcmV0dXJuIGkgKyBhbihlLCB0LCBuIHx8IChhID8gImJvcmRlciIgOiAiY29udGVudCIpLCBy
LCBvKSArICJweCIKICAgICB9CkBAIC0yOTA5LDcgKzMxMTEsOCBAQAogICAgICAgICAgICAgICAg
IHJldHVybiBvbihlLCB0LCByID8gYW4oZSwgbiwgciwgYi5zdXBwb3J0LmJveFNpemluZyAmJiAi
Ym9yZGVyLWJveCIgPT09IGIuY3NzKGUsICJib3hTaXppbmciLCAhMSwgaSksIGkpIDogMCkKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQotICAgIH0pLCBiLnN1cHBvcnQub3BhY2l0eSB8fCAoYi5j
c3NIb29rcy5vcGFjaXR5ID0geworICAgIH0pLAorICAgIGIuc3VwcG9ydC5vcGFjaXR5IHx8IChi
LmNzc0hvb2tzLm9wYWNpdHkgPSB7CiAgICAgICAgIGdldDogZnVuY3Rpb24oZSwgdCkgewogICAg
ICAgICAgICAgcmV0dXJuIEl0LnRlc3QoKHQgJiYgZS5jdXJyZW50U3R5bGUgPyBlLmN1cnJlbnRT
dHlsZS5maWx0ZXIgOiBlLnN0eWxlLmZpbHRlcikgfHwgIiIpID8gLjAxICogcGFyc2VGbG9hdChS
ZWdFeHAuJDEpICsgIiIgOiB0ID8gIjEiIDogIiIKICAgICAgICAgfSwKQEAgLTI5MTgsMjcgKzMx
MjEsMzIgQEAKICAgICAgICAgICAgICAgICByID0gZS5jdXJyZW50U3R5bGUsCiAgICAgICAgICAg
ICAgICAgaSA9IGIuaXNOdW1lcmljKHQpID8gImFscGhhKG9wYWNpdHk9IiArIDEwMCAqIHQgKyAi
KSIgOiAiIiwKICAgICAgICAgICAgICAgICBvID0gciAmJiByLmZpbHRlciB8fCBuLmZpbHRlciB8
fCAiIjsKLSAgICAgICAgICAgIG4uem9vbSA9IDEsICh0ID49IDEgfHwgIiIgPT09IHQpICYmICIi
ID09PSBiLnRyaW0oby5yZXBsYWNlKCR0LCAiIikpICYmIG4ucmVtb3ZlQXR0cmlidXRlICYmIChu
LnJlbW92ZUF0dHJpYnV0ZSgiZmlsdGVyIiksICIiID09PSB0IHx8IHIgJiYgIXIuZmlsdGVyKSB8
fCAobi5maWx0ZXIgPSAkdC50ZXN0KG8pID8gby5yZXBsYWNlKCR0LCBpKSA6IG8gKyAiICIgKyBp
KQorICAgICAgICAgICAgbi56b29tID0gMSwKKyAgICAgICAgICAgICh0ID49IDEgfHwgIiIgPT09
IHQpICYmICIiID09PSBiLnRyaW0oby5yZXBsYWNlKCR0LCAiIikpICYmIG4ucmVtb3ZlQXR0cmli
dXRlICYmIChuLnJlbW92ZUF0dHJpYnV0ZSgiZmlsdGVyIiksICIiID09PSB0IHx8IHIgJiYgIXIu
ZmlsdGVyKSB8fCAobi5maWx0ZXIgPSAkdC50ZXN0KG8pID8gby5yZXBsYWNlKCR0LCBpKSA6IG8g
KyAiICIgKyBpKQogICAgICAgICB9Ci0gICAgfSksIGIoZnVuY3Rpb24oKSB7CisgICAgfSksCisg
ICAgYihmdW5jdGlvbigpIHsKICAgICAgICAgYi5zdXBwb3J0LnJlbGlhYmxlTWFyZ2luUmlnaHQg
fHwgKGIuY3NzSG9va3MubWFyZ2luUmlnaHQgPSB7CiAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9u
KGUsIG4pIHsKICAgICAgICAgICAgICAgICByZXR1cm4gbiA/IGIuc3dhcChlLCB7CiAgICAgICAg
ICAgICAgICAgICAgIGRpc3BsYXk6ICJpbmxpbmUtYmxvY2siCiAgICAgICAgICAgICAgICAgfSwg
V3QsIFtlLCAibWFyZ2luUmlnaHQiXSkgOiB0CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0pLCAh
Yi5zdXBwb3J0LnBpeGVsUG9zaXRpb24gJiYgYi5mbi5wb3NpdGlvbiAmJiBiLmVhY2goWyJ0b3Ai
LCAibGVmdCJdLCBmdW5jdGlvbihlLCBuKSB7CisgICAgICAgIH0pLAorICAgICAgICAhYi5zdXBw
b3J0LnBpeGVsUG9zaXRpb24gJiYgYi5mbi5wb3NpdGlvbiAmJiBiLmVhY2goWyJ0b3AiLCAibGVm
dCJdLCBmdW5jdGlvbihlLCBuKSB7CiAgICAgICAgICAgICBiLmNzc0hvb2tzW25dID0gewogICAg
ICAgICAgICAgICAgIGdldDogZnVuY3Rpb24oZSwgcikgewogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gciA/IChyID0gV3QoZSwgbiksIFl0LnRlc3QocikgPyBiKGUpLnBvc2l0aW9uKClbbl0g
KyAicHgiIDogcikgOiB0CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAg
ICB9KQotICAgIH0pLCBiLmV4cHIgJiYgYi5leHByLmZpbHRlcnMgJiYgKGIuZXhwci5maWx0ZXJz
LmhpZGRlbiA9IGZ1bmN0aW9uKGUpIHsKKyAgICB9KSwKKyAgICBiLmV4cHIgJiYgYi5leHByLmZp
bHRlcnMgJiYgKGIuZXhwci5maWx0ZXJzLmhpZGRlbiA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAg
cmV0dXJuIDAgPj0gZS5vZmZzZXRXaWR0aCAmJiAwID49IGUub2Zmc2V0SGVpZ2h0IHx8ICFiLnN1
cHBvcnQucmVsaWFibGVIaWRkZW5PZmZzZXRzICYmICJub25lIiA9PT0gKGUuc3R5bGUgJiYgZS5z
dHlsZS5kaXNwbGF5IHx8IGIuY3NzKGUsICJkaXNwbGF5IikpCiAgICAgfSwgYi5leHByLmZpbHRl
cnMudmlzaWJsZSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgcmV0dXJuICFiLmV4cHIuZmlsdGVy
cy5oaWRkZW4oZSkKLSAgICB9KSwgYi5lYWNoKHsKKyAgICB9KSwKKyAgICBiLmVhY2goewogICAg
ICAgICBtYXJnaW46ICIiLAogICAgICAgICBwYWRkaW5nOiAiIiwKICAgICAgICAgYm9yZGVyOiAi
V2lkdGgiCkBAIC0yOTUyLDcgKzMxNjAsOCBAQAogICAgICAgICAgICAgICAgICAgICBpW2UgKyBa
dFtyXSArIHRdID0gb1tyXSB8fCBvW3IgLSAyXSB8fCBvWzBdOwogICAgICAgICAgICAgICAgIHJl
dHVybiBpCiAgICAgICAgICAgICB9Ci0gICAgICAgIH0sIFV0LnRlc3QoZSkgfHwgKGIuY3NzSG9v
a3NbZSArIHRdLnNldCA9IG9uKQorICAgICAgICB9LAorICAgICAgICBVdC50ZXN0KGUpIHx8IChi
LmNzc0hvb2tzW2UgKyB0XS5zZXQgPSBvbikKICAgICB9KTsKICAgICB2YXIgY24gPSAvJTIwL2cs
CiAgICAgICAgIHBuID0gL1xbXF0kLywKQEAgLTI5ODMsMTEgKzMxOTIsMTMgQEAKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9KS5nZXQoKQogICAgICAgICB9Ci0gICAgfSksIGIucGFy
YW0gPSBmdW5jdGlvbihlLCBuKSB7CisgICAgfSksCisgICAgYi5wYXJhbSA9IGZ1bmN0aW9uKGUs
IG4pIHsKICAgICAgICAgdmFyIHIsCiAgICAgICAgICAgICBpID0gW10sCiAgICAgICAgICAgICBv
ID0gZnVuY3Rpb24oZSwgdCkgewotICAgICAgICAgICAgICAgIHQgPSBiLmlzRnVuY3Rpb24odCkg
PyB0KCkgOiBudWxsID09IHQgPyAiIiA6IHQsIGlbaS5sZW5ndGhdID0gZW5jb2RlVVJJQ29tcG9u
ZW50KGUpICsgIj0iICsgZW5jb2RlVVJJQ29tcG9uZW50KHQpCisgICAgICAgICAgICAgICAgdCA9
IGIuaXNGdW5jdGlvbih0KSA/IHQoKSA6IG51bGwgPT0gdCA/ICIiIDogdCwKKyAgICAgICAgICAg
ICAgICBpW2kubGVuZ3RoXSA9IGVuY29kZVVSSUNvbXBvbmVudChlKSArICI9IiArIGVuY29kZVVS
SUNvbXBvbmVudCh0KQogICAgICAgICAgICAgfTsKICAgICAgICAgaWYgKG4gPT09IHQgJiYgKG4g
PSBiLmFqYXhTZXR0aW5ncyAmJiBiLmFqYXhTZXR0aW5ncy50cmFkaXRpb25hbCksIGIuaXNBcnJh
eShlKSB8fCBlLmpxdWVyeSAmJiAhYi5pc1BsYWluT2JqZWN0KGUpKQogICAgICAgICAgICAgYi5l
YWNoKGUsIGZ1bmN0aW9uKCkgewpAQCAtMzAxNCw3ICszMjI1LDggQEAKICAgICAgICAgYi5mblt0
XSA9IGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3Ro
ID4gMCA/IHRoaXMub24odCwgbnVsbCwgZSwgbikgOiB0aGlzLnRyaWdnZXIodCkKICAgICAgICAg
fQotICAgIH0pLCBiLmZuLmhvdmVyID0gZnVuY3Rpb24oZSwgdCkgeworICAgIH0pLAorICAgIGIu
Zm4uaG92ZXIgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgIHJldHVybiB0aGlzLm1vdXNlZW50
ZXIoZSkubW91c2VsZWF2ZSh0IHx8IGUpCiAgICAgfTsKICAgICB2YXIgbW4sCkBAIC0zMDM1LDcg
KzMyNDcsOSBAQAogICAgIHRyeSB7CiAgICAgICAgIHluID0gYS5ocmVmCiAgICAgfSBjYXRjaCAo
TG4pIHsKLSAgICAgICAgeW4gPSBvLmNyZWF0ZUVsZW1lbnQoImEiKSwgeW4uaHJlZiA9ICIiLCB5
biA9IHluLmhyZWYKKyAgICAgICAgeW4gPSBvLmNyZWF0ZUVsZW1lbnQoImEiKSwKKyAgICAgICAg
eW4uaHJlZiA9ICIiLAorICAgICAgICB5biA9IHluLmhyZWYKICAgICB9CiAgICAgbW4gPSBFbi5l
eGVjKHluLnRvTG93ZXJDYXNlKCkpIHx8IFtdOwogICAgIGZ1bmN0aW9uIEhuKGUpIHsKQEAgLTMw
ODMsMTUgKzMyOTcsMTggQEAKICAgICAgICAgICAgIGRhdGFUeXBlOiAiaHRtbCIsCiAgICAgICAg
ICAgICBkYXRhOiBuCiAgICAgICAgIH0pLmRvbmUoZnVuY3Rpb24oZSkgewotICAgICAgICAgICAg
byA9IGFyZ3VtZW50cywgcy5odG1sKGkgPyBiKCI8ZGl2PiIpLmFwcGVuZChiLnBhcnNlSFRNTChl
KSkuZmluZChpKSA6IGUpCisgICAgICAgICAgICBvID0gYXJndW1lbnRzLAorICAgICAgICAgICAg
cy5odG1sKGkgPyBiKCI8ZGl2PiIpLmFwcGVuZChiLnBhcnNlSFRNTChlKSkuZmluZChpKSA6IGUp
CiAgICAgICAgIH0pLmNvbXBsZXRlKHIgJiYgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAg
cy5lYWNoKHIsIG8gfHwgW2UucmVzcG9uc2VUZXh0LCB0LCBlXSkKICAgICAgICAgfSksIHRoaXMK
LSAgICB9LCBiLmVhY2goWyJhamF4U3RhcnQiLCAiYWpheFN0b3AiLCAiYWpheENvbXBsZXRlIiwg
ImFqYXhFcnJvciIsICJhamF4U3VjY2VzcyIsICJhamF4U2VuZCJdLCBmdW5jdGlvbihlLCB0KSB7
CisgICAgfSwKKyAgICBiLmVhY2goWyJhamF4U3RhcnQiLCAiYWpheFN0b3AiLCAiYWpheENvbXBs
ZXRlIiwgImFqYXhFcnJvciIsICJhamF4U3VjY2VzcyIsICJhamF4U2VuZCJdLCBmdW5jdGlvbihl
LCB0KSB7CiAgICAgICAgIGIuZm5bdF0gPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICByZXR1
cm4gdGhpcy5vbih0LCBlKQogICAgICAgICB9Ci0gICAgfSksIGIuZWFjaChbImdldCIsICJwb3N0
Il0sIGZ1bmN0aW9uKGUsIG4pIHsKKyAgICB9KSwKKyAgICBiLmVhY2goWyJnZXQiLCAicG9zdCJd
LCBmdW5jdGlvbihlLCBuKSB7CiAgICAgICAgIGJbbl0gPSBmdW5jdGlvbihlLCByLCBpLCBvKSB7
CiAgICAgICAgICAgICByZXR1cm4gYi5pc0Z1bmN0aW9uKHIpICYmIChvID0gbyB8fCBpLCBpID0g
ciwgciA9IHQpLCBiLmFqYXgoewogICAgICAgICAgICAgICAgIHVybDogZSwKQEAgLTMxMDEsNyAr
MzMxOCw4IEBACiAgICAgICAgICAgICAgICAgc3VjY2VzczogaQogICAgICAgICAgICAgfSkKICAg
ICAgICAgfQotICAgIH0pLCBiLmV4dGVuZCh7CisgICAgfSksCisgICAgYi5leHRlbmQoewogICAg
ICAgICBhY3RpdmU6IDAsCiAgICAgICAgIGxhc3RNb2RpZmllZDoge30sCiAgICAgICAgIGV0YWc6
IHt9LApAQCAtMzE0Niw3ICszMzY0LDggQEAKICAgICAgICAgYWpheFByZWZpbHRlcjogSG4oQW4p
LAogICAgICAgICBhamF4VHJhbnNwb3J0OiBIbihqbiksCiAgICAgICAgIGFqYXg6IGZ1bmN0aW9u
KGUsIG4pIHsKLSAgICAgICAgICAgICJvYmplY3QiID09IHR5cGVvZiBlICYmIChuID0gZSwgZSA9
IHQpLCBuID0gbiB8fCB7fTsKKyAgICAgICAgICAgICJvYmplY3QiID09IHR5cGVvZiBlICYmIChu
ID0gZSwgZSA9IHQpLAorICAgICAgICAgICAgbiA9IG4gfHwge307CiAgICAgICAgICAgICB2YXIg
ciwKICAgICAgICAgICAgICAgICBpLAogICAgICAgICAgICAgICAgIG8sCkBAIC0zMjA2LDcgKzM0
MjUsMTUgQEAKICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgaWYgKGgucHJvbWlzZShO
KS5jb21wbGV0ZSA9IGcuYWRkLCBOLnN1Y2Nlc3MgPSBOLmRvbmUsIE4uZXJyb3IgPSBOLmZhaWws
IHAudXJsID0gKChlIHx8IHAudXJsIHx8IHluKSArICIiKS5yZXBsYWNlKHhuLCAiIikucmVwbGFj
ZShrbiwgbW5bMV0gKyAiLy8iKSwgcC50eXBlID0gbi5tZXRob2QgfHwgbi50eXBlIHx8IHAubWV0
aG9kIHx8IHAudHlwZSwgcC5kYXRhVHlwZXMgPSBiLnRyaW0ocC5kYXRhVHlwZSB8fCAiKiIpLnRv
TG93ZXJDYXNlKCkubWF0Y2godykgfHwgWyIiXSwgbnVsbCA9PSBwLmNyb3NzRG9tYWluICYmIChy
ID0gRW4uZXhlYyhwLnVybC50b0xvd2VyQ2FzZSgpKSwgcC5jcm9zc0RvbWFpbiA9ICEoIXIgfHwg
clsxXSA9PT0gbW5bMV0gJiYgclsyXSA9PT0gbW5bMl0gJiYgKHJbM10gfHwgKCJodHRwOiIgPT09
IHJbMV0gPyA4MCA6IDQ0MykpID09IChtblszXSB8fCAoImh0dHA6IiA9PT0gbW5bMV0gPyA4MCA6
IDQ0MykpKSksIHAuZGF0YSAmJiBwLnByb2Nlc3NEYXRhICYmICJzdHJpbmciICE9IHR5cGVvZiBw
LmRhdGEgJiYgKHAuZGF0YSA9IGIucGFyYW0ocC5kYXRhLCBwLnRyYWRpdGlvbmFsKSksIHFuKEFu
LCBwLCBuLCBOKSwgMiA9PT0geCkKICAgICAgICAgICAgICAgICByZXR1cm4gTjsKLSAgICAgICAg
ICAgIHUgPSBwLmdsb2JhbCwgdSAmJiAwID09PSBiLmFjdGl2ZSsrICYmIGIuZXZlbnQudHJpZ2dl
cigiYWpheFN0YXJ0IiksIHAudHlwZSA9IHAudHlwZS50b1VwcGVyQ2FzZSgpLCBwLmhhc0NvbnRl
bnQgPSAhQ24udGVzdChwLnR5cGUpLCBvID0gcC51cmwsIHAuaGFzQ29udGVudCB8fCAocC5kYXRh
ICYmIChvID0gcC51cmwgKz0gKGJuLnRlc3QobykgPyAiJiIgOiAiPyIpICsgcC5kYXRhLCBkZWxl
dGUgcC5kYXRhKSwgcC5jYWNoZSA9PT0gITEgJiYgKHAudXJsID0gd24udGVzdChvKSA/IG8ucmVw
bGFjZSh3biwgIiQxXz0iICsgdm4rKykgOiBvICsgKGJuLnRlc3QobykgPyAiJiIgOiAiPyIpICsg
Il89IiArIHZuKyspKSwgcC5pZk1vZGlmaWVkICYmIChiLmxhc3RNb2RpZmllZFtvXSAmJiBOLnNl
dFJlcXVlc3RIZWFkZXIoIklmLU1vZGlmaWVkLVNpbmNlIiwgYi5sYXN0TW9kaWZpZWRbb10pLCBi
LmV0YWdbb10gJiYgTi5zZXRSZXF1ZXN0SGVhZGVyKCJJZi1Ob25lLU1hdGNoIiwgYi5ldGFnW29d
KSksIChwLmRhdGEgJiYgcC5oYXNDb250ZW50ICYmIHAuY29udGVudFR5cGUgIT09ICExIHx8IG4u
Y29udGVudFR5cGUpICYmIE4uc2V0UmVxdWVzdEhlYWRlcigiQ29udGVudC1UeXBlIiwgcC5jb250
ZW50VHlwZSksIE4uc2V0UmVxdWVzdEhlYWRlcigiQWNjZXB0IiwgcC5kYXRhVHlwZXNbMF0gJiYg
cC5hY2NlcHRzW3AuZGF0YVR5cGVzWzBdXSA/IHAuYWNjZXB0c1twLmRhdGFUeXBlc1swXV0gKyAo
IioiICE9PSBwLmRhdGFUeXBlc1swXSA/ICIsICIgKyBEbiArICI7IHE9MC4wMSIgOiAiIikgOiBw
LmFjY2VwdHNbIioiXSk7CisgICAgICAgICAgICB1ID0gcC5nbG9iYWwsCisgICAgICAgICAgICB1
ICYmIDAgPT09IGIuYWN0aXZlKysgJiYgYi5ldmVudC50cmlnZ2VyKCJhamF4U3RhcnQiKSwKKyAg
ICAgICAgICAgIHAudHlwZSA9IHAudHlwZS50b1VwcGVyQ2FzZSgpLAorICAgICAgICAgICAgcC5o
YXNDb250ZW50ID0gIUNuLnRlc3QocC50eXBlKSwKKyAgICAgICAgICAgIG8gPSBwLnVybCwKKyAg
ICAgICAgICAgIHAuaGFzQ29udGVudCB8fCAocC5kYXRhICYmIChvID0gcC51cmwgKz0gKGJuLnRl
c3QobykgPyAiJiIgOiAiPyIpICsgcC5kYXRhLCBkZWxldGUgcC5kYXRhKSwgcC5jYWNoZSA9PT0g
ITEgJiYgKHAudXJsID0gd24udGVzdChvKSA/IG8ucmVwbGFjZSh3biwgIiQxXz0iICsgdm4rKykg
OiBvICsgKGJuLnRlc3QobykgPyAiJiIgOiAiPyIpICsgIl89IiArIHZuKyspKSwKKyAgICAgICAg
ICAgIHAuaWZNb2RpZmllZCAmJiAoYi5sYXN0TW9kaWZpZWRbb10gJiYgTi5zZXRSZXF1ZXN0SGVh
ZGVyKCJJZi1Nb2RpZmllZC1TaW5jZSIsIGIubGFzdE1vZGlmaWVkW29dKSwgYi5ldGFnW29dICYm
IE4uc2V0UmVxdWVzdEhlYWRlcigiSWYtTm9uZS1NYXRjaCIsIGIuZXRhZ1tvXSkpLAorICAgICAg
ICAgICAgKHAuZGF0YSAmJiBwLmhhc0NvbnRlbnQgJiYgcC5jb250ZW50VHlwZSAhPT0gITEgfHwg
bi5jb250ZW50VHlwZSkgJiYgTi5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LVR5cGUiLCBwLmNv
bnRlbnRUeXBlKSwKKyAgICAgICAgICAgIE4uc2V0UmVxdWVzdEhlYWRlcigiQWNjZXB0IiwgcC5k
YXRhVHlwZXNbMF0gJiYgcC5hY2NlcHRzW3AuZGF0YVR5cGVzWzBdXSA/IHAuYWNjZXB0c1twLmRh
dGFUeXBlc1swXV0gKyAoIioiICE9PSBwLmRhdGFUeXBlc1swXSA/ICIsICIgKyBEbiArICI7IHE9
MC4wMSIgOiAiIikgOiBwLmFjY2VwdHNbIioiXSk7CiAgICAgICAgICAgICBmb3IgKGkgaW4gcC5o
ZWFkZXJzKQogICAgICAgICAgICAgICAgIE4uc2V0UmVxdWVzdEhlYWRlcihpLCBwLmhlYWRlcnNb
aV0pOwogICAgICAgICAgICAgaWYgKHAuYmVmb3JlU2VuZCAmJiAocC5iZWZvcmVTZW5kLmNhbGwo
ZiwgTiwgcCkgPT09ICExIHx8IDIgPT09IHgpKQpAQCAtMzIxOSwxMSArMzQ0NiwxNCBAQAogICAg
ICAgICAgICAgfSkKICAgICAgICAgICAgICAgICBOW2ldKHBbaV0pOwogICAgICAgICAgICAgaWYg
KGwgPSBxbihqbiwgcCwgbiwgTikpIHsKLSAgICAgICAgICAgICAgICBOLnJlYWR5U3RhdGUgPSAx
LCB1ICYmIGQudHJpZ2dlcigiYWpheFNlbmQiLCBbTiwgcF0pLCBwLmFzeW5jICYmIHAudGltZW91
dCA+IDAgJiYgKHMgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIE4u
cmVhZHlTdGF0ZSA9IDEsCisgICAgICAgICAgICAgICAgdSAmJiBkLnRyaWdnZXIoImFqYXhTZW5k
IiwgW04sIHBdKSwKKyAgICAgICAgICAgICAgICBwLmFzeW5jICYmIHAudGltZW91dCA+IDAgJiYg
KHMgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICBOLmFib3J0
KCJ0aW1lb3V0IikKICAgICAgICAgICAgICAgICB9LCBwLnRpbWVvdXQpKTsKICAgICAgICAgICAg
ICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICB4ID0gMSwgbC5zZW5kKHksIGspCisgICAg
ICAgICAgICAgICAgICAgIHggPSAxLAorICAgICAgICAgICAgICAgICAgICBsLnNlbmQoeSwgaykK
ICAgICAgICAgICAgICAgICB9IGNhdGNoIChDKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICgh
KDIgPiB4KSkKICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IEM7CkBAIC0zMjYwLDcgKzM0
OTAsOCBAQAogICAgICAgICBmb3IgKHMgaW4gYykKICAgICAgICAgICAgIHMgaW4gciAmJiAobltj
W3NdXSA9IHJbc10pOwogICAgICAgICB3aGlsZSAoIioiID09PSBsWzBdKQotICAgICAgICAgICAg
bC5zaGlmdCgpLCBvID09PSB0ICYmIChvID0gZS5taW1lVHlwZSB8fCBuLmdldFJlc3BvbnNlSGVh
ZGVyKCJDb250ZW50LVR5cGUiKSk7CisgICAgICAgICAgICBsLnNoaWZ0KCksCisgICAgICAgICAg
ICBvID09PSB0ICYmIChvID0gZS5taW1lVHlwZSB8fCBuLmdldFJlc3BvbnNlSGVhZGVyKCJDb250
ZW50LVR5cGUiKSk7CiAgICAgICAgIGlmIChvKQogICAgICAgICAgICAgZm9yIChzIGluIHUpCiAg
ICAgICAgICAgICAgICAgaWYgKHVbc10gJiYgdVtzXS50ZXN0KG8pKSB7CkBAIC0zMzM0LDE3ICsz
NTY1LDI1IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIGIuZ2xvYmFsRXZhbChlKSwgZQogICAg
ICAgICAgICAgfQogICAgICAgICB9Ci0gICAgfSksIGIuYWpheFByZWZpbHRlcigic2NyaXB0Iiwg
ZnVuY3Rpb24oZSkgewotICAgICAgICBlLmNhY2hlID09PSB0ICYmIChlLmNhY2hlID0gITEpLCBl
LmNyb3NzRG9tYWluICYmIChlLnR5cGUgPSAiR0VUIiwgZS5nbG9iYWwgPSAhMSkKLSAgICB9KSwg
Yi5hamF4VHJhbnNwb3J0KCJzY3JpcHQiLCBmdW5jdGlvbihlKSB7CisgICAgfSksCisgICAgYi5h
amF4UHJlZmlsdGVyKCJzY3JpcHQiLCBmdW5jdGlvbihlKSB7CisgICAgICAgIGUuY2FjaGUgPT09
IHQgJiYgKGUuY2FjaGUgPSAhMSksCisgICAgICAgIGUuY3Jvc3NEb21haW4gJiYgKGUudHlwZSA9
ICJHRVQiLCBlLmdsb2JhbCA9ICExKQorICAgIH0pLAorICAgIGIuYWpheFRyYW5zcG9ydCgic2Ny
aXB0IiwgZnVuY3Rpb24oZSkgewogICAgICAgICBpZiAoZS5jcm9zc0RvbWFpbikgewogICAgICAg
ICAgICAgdmFyIG4sCiAgICAgICAgICAgICAgICAgciA9IG8uaGVhZCB8fCBiKCJoZWFkIilbMF0g
fHwgby5kb2N1bWVudEVsZW1lbnQ7CiAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAg
ICAgIHNlbmQ6IGZ1bmN0aW9uKHQsIGkpIHsKLSAgICAgICAgICAgICAgICAgICAgbiA9IG8uY3Jl
YXRlRWxlbWVudCgic2NyaXB0IiksIG4uYXN5bmMgPSAhMCwgZS5zY3JpcHRDaGFyc2V0ICYmIChu
LmNoYXJzZXQgPSBlLnNjcmlwdENoYXJzZXQpLCBuLnNyYyA9IGUudXJsLCBuLm9ubG9hZCA9IG4u
b25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oZSwgdCkgeworICAgICAgICAgICAgICAgICAg
ICBuID0gby5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKSwKKyAgICAgICAgICAgICAgICAgICAgbi5h
c3luYyA9ICEwLAorICAgICAgICAgICAgICAgICAgICBlLnNjcmlwdENoYXJzZXQgJiYgKG4uY2hh
cnNldCA9IGUuc2NyaXB0Q2hhcnNldCksCisgICAgICAgICAgICAgICAgICAgIG4uc3JjID0gZS51
cmwsCisgICAgICAgICAgICAgICAgICAgIG4ub25sb2FkID0gbi5vbnJlYWR5c3RhdGVjaGFuZ2Ug
PSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAodCB8fCAhbi5yZWFk
eVN0YXRlIHx8IC9sb2FkZWR8Y29tcGxldGUvLnRlc3Qobi5yZWFkeVN0YXRlKSkgJiYgKG4ub25s
b2FkID0gbi5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBudWxsLCBuLnBhcmVudE5vZGUgJiYgbi5wYXJl
bnROb2RlLnJlbW92ZUNoaWxkKG4pLCBuID0gbnVsbCwgdCB8fCBpKDIwMCwgInN1Y2Nlc3MiKSkK
LSAgICAgICAgICAgICAgICAgICAgfSwgci5pbnNlcnRCZWZvcmUobiwgci5maXJzdENoaWxkKQor
ICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICByLmluc2VydEJlZm9y
ZShuLCByLmZpcnN0Q2hpbGQpCiAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICBh
Ym9ydDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgIG4gJiYgbi5vbmxvYWQodCwg
ITApCkBAIC0zMzYwLDcgKzM1OTksOCBAQAogICAgICAgICAgICAgdmFyIGUgPSBPbi5wb3AoKSB8
fCBiLmV4cGFuZG8gKyAiXyIgKyB2bisrOwogICAgICAgICAgICAgcmV0dXJuIHRoaXNbZV0gPSAh
MCwgZQogICAgICAgICB9Ci0gICAgfSksIGIuYWpheFByZWZpbHRlcigianNvbiBqc29ucCIsIGZ1
bmN0aW9uKG4sIHIsIGkpIHsKKyAgICB9KSwKKyAgICBiLmFqYXhQcmVmaWx0ZXIoImpzb24ganNv
bnAiLCBmdW5jdGlvbihuLCByLCBpKSB7CiAgICAgICAgIHZhciBvLAogICAgICAgICAgICAgYSwK
ICAgICAgICAgICAgIHMsCkBAIC0zMzcwLDcgKzM2MTAsMTAgQEAKICAgICAgICAgfSwgbi5kYXRh
VHlwZXNbMF0gPSAianNvbiIsIGEgPSBlW29dLCBlW29dID0gZnVuY3Rpb24oKSB7CiAgICAgICAg
ICAgICBzID0gYXJndW1lbnRzCiAgICAgICAgIH0sIGkuYWx3YXlzKGZ1bmN0aW9uKCkgewotICAg
ICAgICAgICAgZVtvXSA9IGEsIG5bb10gJiYgKG4uanNvbnBDYWxsYmFjayA9IHIuanNvbnBDYWxs
YmFjaywgT24ucHVzaChvKSksIHMgJiYgYi5pc0Z1bmN0aW9uKGEpICYmIGEoc1swXSksIHMgPSBh
ID0gdAorICAgICAgICAgICAgZVtvXSA9IGEsCisgICAgICAgICAgICBuW29dICYmIChuLmpzb25w
Q2FsbGJhY2sgPSByLmpzb25wQ2FsbGJhY2ssIE9uLnB1c2gobykpLAorICAgICAgICAgICAgcyAm
JiBiLmlzRnVuY3Rpb24oYSkgJiYgYShzWzBdKSwKKyAgICAgICAgICAgIHMgPSBhID0gdAogICAg
ICAgICB9KSwgInNjcmlwdCIpIDogdAogICAgIH0pOwogICAgIHZhciBQbiwKQEAgLTMzOTMsNyAr
MzYzNiwxMSBAQAogICAgIH0KICAgICBiLmFqYXhTZXR0aW5ncy54aHIgPSBlLkFjdGl2ZVhPYmpl
Y3QgPyBmdW5jdGlvbigpIHsKICAgICAgICAgcmV0dXJuICF0aGlzLmlzTG9jYWwgJiYgSW4oKSB8
fCB6bigpCi0gICAgfSA6IEluLCBSbiA9IGIuYWpheFNldHRpbmdzLnhocigpLCBiLnN1cHBvcnQu
Y29ycyA9ICEhUm4gJiYgIndpdGhDcmVkZW50aWFscyIgaW4gUm4sIFJuID0gYi5zdXBwb3J0LmFq
YXggPSAhIVJuLCBSbiAmJiBiLmFqYXhUcmFuc3BvcnQoZnVuY3Rpb24obikgeworICAgIH0gOiBJ
biwKKyAgICBSbiA9IGIuYWpheFNldHRpbmdzLnhocigpLAorICAgIGIuc3VwcG9ydC5jb3JzID0g
ISFSbiAmJiAid2l0aENyZWRlbnRpYWxzIiBpbiBSbiwKKyAgICBSbiA9IGIuc3VwcG9ydC5hamF4
ID0gISFSbiwKKyAgICBSbiAmJiBiLmFqYXhUcmFuc3BvcnQoZnVuY3Rpb24obikgewogICAgICAg
ICBpZiAoIW4uY3Jvc3NEb21haW4gfHwgYi5zdXBwb3J0LmNvcnMpIHsKICAgICAgICAgICAgIHZh
ciByOwogICAgICAgICAgICAgcmV0dXJuIHsKQEAgLTM0MDQsMTIgKzM2NTEsMTQgQEAKICAgICAg
ICAgICAgICAgICAgICAgaWYgKG4udXNlcm5hbWUgPyB1Lm9wZW4obi50eXBlLCBuLnVybCwgbi5h
c3luYywgbi51c2VybmFtZSwgbi5wYXNzd29yZCkgOiB1Lm9wZW4obi50eXBlLCBuLnVybCwgbi5h
c3luYyksIG4ueGhyRmllbGRzKQogICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChzIGluIG4u
eGhyRmllbGRzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVbc10gPSBuLnhockZpZWxk
c1tzXTsKLSAgICAgICAgICAgICAgICAgICAgbi5taW1lVHlwZSAmJiB1Lm92ZXJyaWRlTWltZVR5
cGUgJiYgdS5vdmVycmlkZU1pbWVUeXBlKG4ubWltZVR5cGUpLCBuLmNyb3NzRG9tYWluIHx8IGlb
IlgtUmVxdWVzdGVkLVdpdGgiXSB8fCAoaVsiWC1SZXF1ZXN0ZWQtV2l0aCJdID0gIlhNTEh0dHBS
ZXF1ZXN0Iik7CisgICAgICAgICAgICAgICAgICAgIG4ubWltZVR5cGUgJiYgdS5vdmVycmlkZU1p
bWVUeXBlICYmIHUub3ZlcnJpZGVNaW1lVHlwZShuLm1pbWVUeXBlKSwKKyAgICAgICAgICAgICAg
ICAgICAgbi5jcm9zc0RvbWFpbiB8fCBpWyJYLVJlcXVlc3RlZC1XaXRoIl0gfHwgKGlbIlgtUmVx
dWVzdGVkLVdpdGgiXSA9ICJYTUxIdHRwUmVxdWVzdCIpOwogICAgICAgICAgICAgICAgICAgICB0
cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChzIGluIGkpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdS5zZXRSZXF1ZXN0SGVhZGVyKHMsIGlbc10pCiAgICAgICAgICAgICAg
ICAgICAgIH0gY2F0Y2ggKGwpIHt9Ci0gICAgICAgICAgICAgICAgICAgIHUuc2VuZChuLmhhc0Nv
bnRlbnQgJiYgbi5kYXRhIHx8IG51bGwpLCByID0gZnVuY3Rpb24oZSwgaSkgeworICAgICAgICAg
ICAgICAgICAgICB1LnNlbmQobi5oYXNDb250ZW50ICYmIG4uZGF0YSB8fCBudWxsKSwKKyAgICAg
ICAgICAgICAgICAgICAgciA9IGZ1bmN0aW9uKGUsIGkpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgIHZhciBzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYywKQEAgLTM0MTksNyArMzY2OCwxMCBAQAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAociA9IHQsIGEgJiYgKHUub25yZWFkeXN0YXRlY2hhbmdlID0g
Yi5ub29wLCAkbiAmJiBkZWxldGUgUG5bYV0pLCBpKQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNCAhPT0gdS5yZWFkeVN0YXRlICYmIHUuYWJvcnQoKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwID0ge30sIHMgPSB1LnN0YXR1cywgbCA9IHUuZ2V0QWxsUmVzcG9uc2VIZWFkZXJz
KCksICJzdHJpbmciID09IHR5cGVvZiB1LnJlc3BvbnNlVGV4dCAmJiAocC50ZXh0ID0gdS5yZXNw
b25zZVRleHQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IHt9LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHUuc3RhdHVzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IHUuZ2V0QWxsUmVzcG9uc2VIZWFkZXJz
KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RyaW5nIiA9PSB0eXBl
b2YgdS5yZXNwb25zZVRleHQgJiYgKHAudGV4dCA9IHUucmVzcG9uc2VUZXh0KTsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYyA9IHUuc3RhdHVzVGV4dAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfSBjYXRjaCAoZikgewpAQCAtMzQzMSw3ICszNjgzLDggQEAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpIHx8IG8oLTEsIGQpCiAgICAgICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBwICYmIG8ocywgYywgcCwgbCkKLSAgICAg
ICAgICAgICAgICAgICAgfSwgbi5hc3luYyA/IDQgPT09IHUucmVhZHlTdGF0ZSA/IHNldFRpbWVv
dXQocikgOiAoYSA9ICsrV24sICRuICYmIChQbiB8fCAoUG4gPSB7fSwgYihlKS51bmxvYWQoJG4p
KSwgUG5bYV0gPSByKSwgdS5vbnJlYWR5c3RhdGVjaGFuZ2UgPSByKSA6IHIoKQorICAgICAgICAg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICBuLmFzeW5jID8gNCA9PT0gdS5yZWFk
eVN0YXRlID8gc2V0VGltZW91dChyKSA6IChhID0gKytXbiwgJG4gJiYgKFBuIHx8IChQbiA9IHt9
LCBiKGUpLnVubG9hZCgkbikpLCBQblthXSA9IHIpLCB1Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9IHIp
IDogcigpCiAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICBhYm9ydDogZnVuY3Rp
b24oKSB7CiAgICAgICAgICAgICAgICAgICAgIHIgJiYgcih0LCAhMCkKQEAgLTM0NTgsMTAgKzM3
MTEsMTQgQEAKICAgICAgICAgICAgICAgICBpZiAobykgewogICAgICAgICAgICAgICAgICAgICBp
ZiAobiA9ICtvWzJdLCByID0gb1szXSB8fCAoYi5jc3NOdW1iZXJbZV0gPyAiIiA6ICJweCIpLCAi
cHgiICE9PSByICYmIHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBiLmNzcyhpLmVs
ZW0sIGUsICEwKSB8fCBuIHx8IDE7Ci0gICAgICAgICAgICAgICAgICAgICAgICBkbyB1ID0gdSB8
fCAiLjUiLCBzIC89IHUsIGIuc3R5bGUoaS5lbGVtLCBlLCBzICsgcik7CisgICAgICAgICAgICAg
ICAgICAgICAgICBkbyB1ID0gdSB8fCAiLjUiLAorICAgICAgICAgICAgICAgICAgICAgICAgcyAv
PSB1LAorICAgICAgICAgICAgICAgICAgICAgICAgYi5zdHlsZShpLmVsZW0sIGUsIHMgKyByKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICh1ICE9PSAodSA9IGkuY3VyKCkgLyBhKSAm
JiAxICE9PSB1ICYmIC0tbCkKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
ICAgICBpLnVuaXQgPSByLCBpLnN0YXJ0ID0gcywgaS5lbmQgPSBvWzFdID8gcyArIChvWzFdICsg
MSkgKiBuIDogbgorICAgICAgICAgICAgICAgICAgICBpLnVuaXQgPSByLAorICAgICAgICAgICAg
ICAgICAgICBpLnN0YXJ0ID0gcywKKyAgICAgICAgICAgICAgICAgICAgaS5lbmQgPSBvWzFdID8g
cyArIChvWzFdICsgMSkgKiBuIDogbgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICByZXR1cm4gaQogICAgICAgICAgICAgfV0KQEAgLTM1NDUsNyArMzgwMiw4IEBACiAgICAgICAg
ICAgICBhOwogICAgICAgICBmb3IgKGkgaW4gZSkKICAgICAgICAgICAgIGlmIChyID0gYi5jYW1l
bENhc2UoaSksIG8gPSB0W3JdLCBuID0gZVtpXSwgYi5pc0FycmF5KG4pICYmIChvID0gblsxXSwg
biA9IGVbaV0gPSBuWzBdKSwgaSAhPT0gciAmJiAoZVtyXSA9IG4sIGRlbGV0ZSBlW2ldKSwgYSA9
IGIuY3NzSG9va3Nbcl0sIGEgJiYgImV4cGFuZCIgaW4gYSkgewotICAgICAgICAgICAgICAgIG4g
PSBhLmV4cGFuZChuKSwgZGVsZXRlIGVbcl07CisgICAgICAgICAgICAgICAgbiA9IGEuZXhwYW5k
KG4pLAorICAgICAgICAgICAgICAgIGRlbGV0ZSBlW3JdOwogICAgICAgICAgICAgICAgIGZvciAo
aSBpbiBuKQogICAgICAgICAgICAgICAgICAgICBpIGluIGUgfHwgKGVbaV0gPSBuW2ldLCB0W2ld
ID0gbykKICAgICAgICAgICAgIH0gZWxzZQpAQCAtMzU1OCw3ICszODE2LDkgQEAKICAgICAgICAg
ICAgICAgICByID0gMCwKICAgICAgICAgICAgICAgICBpID0gZS5sZW5ndGg7CiAgICAgICAgICAg
ICBmb3IgKDsgaSA+IHI7IHIrKykKLSAgICAgICAgICAgICAgICBuID0gZVtyXSwgUW5bbl0gPSBR
bltuXSB8fCBbXSwgUW5bbl0udW5zaGlmdCh0KQorICAgICAgICAgICAgICAgIG4gPSBlW3JdLAor
ICAgICAgICAgICAgICAgIFFuW25dID0gUW5bbl0gfHwgW10sCisgICAgICAgICAgICAgICAgUW5b
bl0udW5zaGlmdCh0KQogICAgICAgICB9LAogICAgICAgICBwcmVmaWx0ZXI6IGZ1bmN0aW9uKGUs
IHQpIHsKICAgICAgICAgICAgIHQgPyBHbi51bnNoaWZ0KGUpIDogR24ucHVzaChlKQpAQCAtMzU4
MywxMCArMzg0MywxNSBAQAogICAgICAgICAgICAgYy51bnF1ZXVlZCB8fCBwKCkKICAgICAgICAg
fSksIGMudW5xdWV1ZWQrKywgZi5hbHdheXMoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICBmLmFs
d2F5cyhmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBjLnVucXVldWVkLS0sIGIucXVldWUo
ZSwgImZ4IikubGVuZ3RoIHx8IGMuZW1wdHkuZmlyZSgpCisgICAgICAgICAgICAgICAgYy51bnF1
ZXVlZC0tLAorICAgICAgICAgICAgICAgIGIucXVldWUoZSwgImZ4IikubGVuZ3RoIHx8IGMuZW1w
dHkuZmlyZSgpCiAgICAgICAgICAgICB9KQotICAgICAgICB9KSksIDEgPT09IGUubm9kZVR5cGUg
JiYgKCJoZWlnaHQiIGluIHQgfHwgIndpZHRoIiBpbiB0KSAmJiAobi5vdmVyZmxvdyA9IFtkLm92
ZXJmbG93LCBkLm92ZXJmbG93WCwgZC5vdmVyZmxvd1ldLCAiaW5saW5lIiA9PT0gYi5jc3MoZSwg
ImRpc3BsYXkiKSAmJiAibm9uZSIgPT09IGIuY3NzKGUsICJmbG9hdCIpICYmIChiLnN1cHBvcnQu
aW5saW5lQmxvY2tOZWVkc0xheW91dCAmJiAiaW5saW5lIiAhPT0gdW4oZS5ub2RlTmFtZSkgPyBk
Lnpvb20gPSAxIDogZC5kaXNwbGF5ID0gImlubGluZS1ibG9jayIpKSwgbi5vdmVyZmxvdyAmJiAo
ZC5vdmVyZmxvdyA9ICJoaWRkZW4iLCBiLnN1cHBvcnQuc2hyaW5rV3JhcEJsb2NrcyB8fCBmLmFs
d2F5cyhmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGQub3ZlcmZsb3cgPSBuLm92ZXJmbG93WzBd
LCBkLm92ZXJmbG93WCA9IG4ub3ZlcmZsb3dbMV0sIGQub3ZlcmZsb3dZID0gbi5vdmVyZmxvd1sy
XQorICAgICAgICB9KSksCisgICAgICAgIDEgPT09IGUubm9kZVR5cGUgJiYgKCJoZWlnaHQiIGlu
IHQgfHwgIndpZHRoIiBpbiB0KSAmJiAobi5vdmVyZmxvdyA9IFtkLm92ZXJmbG93LCBkLm92ZXJm
bG93WCwgZC5vdmVyZmxvd1ldLCAiaW5saW5lIiA9PT0gYi5jc3MoZSwgImRpc3BsYXkiKSAmJiAi
bm9uZSIgPT09IGIuY3NzKGUsICJmbG9hdCIpICYmIChiLnN1cHBvcnQuaW5saW5lQmxvY2tOZWVk
c0xheW91dCAmJiAiaW5saW5lIiAhPT0gdW4oZS5ub2RlTmFtZSkgPyBkLnpvb20gPSAxIDogZC5k
aXNwbGF5ID0gImlubGluZS1ibG9jayIpKSwKKyAgICAgICAgbi5vdmVyZmxvdyAmJiAoZC5vdmVy
ZmxvdyA9ICJoaWRkZW4iLCBiLnN1cHBvcnQuc2hyaW5rV3JhcEJsb2NrcyB8fCBmLmFsd2F5cyhm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgIGQub3ZlcmZsb3cgPSBuLm92ZXJmbG93WzBdLAorICAg
ICAgICAgICAgZC5vdmVyZmxvd1ggPSBuLm92ZXJmbG93WzFdLAorICAgICAgICAgICAgZC5vdmVy
Zmxvd1kgPSBuLm92ZXJmbG93WzJdCiAgICAgICAgIH0pKTsKICAgICAgICAgZm9yIChpIGluIHQp
CiAgICAgICAgICAgICBpZiAoYSA9IHRbaV0sIFZuLmV4ZWMoYSkpIHsKQEAgLTM1OTUsMjUgKzM4
NjAsMzkgQEAKICAgICAgICAgICAgICAgICBnLnB1c2goaSkKICAgICAgICAgICAgIH0KICAgICAg
ICAgaWYgKG8gPSBnLmxlbmd0aCkgewotICAgICAgICAgICAgcyA9IGIuX2RhdGEoZSwgImZ4c2hv
dyIpIHx8IGIuX2RhdGEoZSwgImZ4c2hvdyIsIHt9KSwgImhpZGRlbiIgaW4gcyAmJiAobSA9IHMu
aGlkZGVuKSwgdSAmJiAocy5oaWRkZW4gPSAhbSksIG0gPyBiKGUpLnNob3coKSA6IGYuZG9uZShm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgIHMgPSBiLl9kYXRhKGUsICJmeHNob3ciKSB8fCBiLl9k
YXRhKGUsICJmeHNob3ciLCB7fSksCisgICAgICAgICAgICAiaGlkZGVuIiBpbiBzICYmIChtID0g
cy5oaWRkZW4pLAorICAgICAgICAgICAgdSAmJiAocy5oaWRkZW4gPSAhbSksCisgICAgICAgICAg
ICBtID8gYihlKS5zaG93KCkgOiBmLmRvbmUoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAg
YihlKS5oaWRlKCkKLSAgICAgICAgICAgIH0pLCBmLmRvbmUoZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgICB9KSwKKyAgICAgICAgICAgIGYuZG9uZShmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAg
ICB2YXIgdDsKICAgICAgICAgICAgICAgICBiLl9yZW1vdmVEYXRhKGUsICJmeHNob3ciKTsKICAg
ICAgICAgICAgICAgICBmb3IgKHQgaW4gaCkKICAgICAgICAgICAgICAgICAgICAgYi5zdHlsZShl
LCB0LCBoW3RdKQogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICBmb3IgKGkgPSAwOyBvID4g
aTsgaSsrKQotICAgICAgICAgICAgICAgIHIgPSBnW2ldLCBsID0gZi5jcmVhdGVUd2VlbihyLCBt
ID8gc1tyXSA6IDApLCBoW3JdID0gc1tyXSB8fCBiLnN0eWxlKGUsIHIpLCByIGluIHMgfHwgKHNb
cl0gPSBsLnN0YXJ0LCBtICYmIChsLmVuZCA9IGwuc3RhcnQsIGwuc3RhcnQgPSAid2lkdGgiID09
PSByIHx8ICJoZWlnaHQiID09PSByID8gMSA6IDApKQorICAgICAgICAgICAgICAgIHIgPSBnW2ld
LAorICAgICAgICAgICAgICAgIGwgPSBmLmNyZWF0ZVR3ZWVuKHIsIG0gPyBzW3JdIDogMCksCisg
ICAgICAgICAgICAgICAgaFtyXSA9IHNbcl0gfHwgYi5zdHlsZShlLCByKSwKKyAgICAgICAgICAg
ICAgICByIGluIHMgfHwgKHNbcl0gPSBsLnN0YXJ0LCBtICYmIChsLmVuZCA9IGwuc3RhcnQsIGwu
c3RhcnQgPSAid2lkdGgiID09PSByIHx8ICJoZWlnaHQiID09PSByID8gMSA6IDApKQogICAgICAg
ICB9CiAgICAgfQogICAgIGZ1bmN0aW9uIHJyKGUsIHQsIG4sIHIsIGkpIHsKICAgICAgICAgcmV0
dXJuIG5ldyByci5wcm90b3R5cGUuaW5pdChlLCB0LCBuLCByLCBpKQogICAgIH0KLSAgICBiLlR3
ZWVuID0gcnIsIHJyLnByb3RvdHlwZSA9IHsKKyAgICBiLlR3ZWVuID0gcnIsCisgICAgcnIucHJv
dG90eXBlID0gewogICAgICAgICBjb25zdHJ1Y3RvcjogcnIsCiAgICAgICAgIGluaXQ6IGZ1bmN0
aW9uKGUsIHQsIG4sIHIsIGksIG8pIHsKLSAgICAgICAgICAgIHRoaXMuZWxlbSA9IGUsIHRoaXMu
cHJvcCA9IG4sIHRoaXMuZWFzaW5nID0gaSB8fCAic3dpbmciLCB0aGlzLm9wdGlvbnMgPSB0LCB0
aGlzLnN0YXJ0ID0gdGhpcy5ub3cgPSB0aGlzLmN1cigpLCB0aGlzLmVuZCA9IHIsIHRoaXMudW5p
dCA9IG8gfHwgKGIuY3NzTnVtYmVyW25dID8gIiIgOiAicHgiKQorICAgICAgICAgICAgdGhpcy5l
bGVtID0gZSwKKyAgICAgICAgICAgIHRoaXMucHJvcCA9IG4sCisgICAgICAgICAgICB0aGlzLmVh
c2luZyA9IGkgfHwgInN3aW5nIiwKKyAgICAgICAgICAgIHRoaXMub3B0aW9ucyA9IHQsCisgICAg
ICAgICAgICB0aGlzLnN0YXJ0ID0gdGhpcy5ub3cgPSB0aGlzLmN1cigpLAorICAgICAgICAgICAg
dGhpcy5lbmQgPSByLAorICAgICAgICAgICAgdGhpcy51bml0ID0gbyB8fCAoYi5jc3NOdW1iZXJb
bl0gPyAiIiA6ICJweCIpCiAgICAgICAgIH0sCiAgICAgICAgIGN1cjogZnVuY3Rpb24oKSB7CiAg
ICAgICAgICAgICB2YXIgZSA9IHJyLnByb3BIb29rc1t0aGlzLnByb3BdOwpAQCAtMzYyNCw3ICsz
OTAzLDkgQEAKICAgICAgICAgICAgICAgICBuID0gcnIucHJvcEhvb2tzW3RoaXMucHJvcF07CiAg
ICAgICAgICAgICByZXR1cm4gdGhpcy5wb3MgPSB0ID0gdGhpcy5vcHRpb25zLmR1cmF0aW9uID8g
Yi5lYXNpbmdbdGhpcy5lYXNpbmddKGUsIHRoaXMub3B0aW9ucy5kdXJhdGlvbiAqIGUsIDAsIDEs
IHRoaXMub3B0aW9ucy5kdXJhdGlvbikgOiBlLCB0aGlzLm5vdyA9ICh0aGlzLmVuZCAtIHRoaXMu
c3RhcnQpICogdCArIHRoaXMuc3RhcnQsIHRoaXMub3B0aW9ucy5zdGVwICYmIHRoaXMub3B0aW9u
cy5zdGVwLmNhbGwodGhpcy5lbGVtLCB0aGlzLm5vdywgdGhpcyksIG4gJiYgbi5zZXQgPyBuLnNl
dCh0aGlzKSA6IHJyLnByb3BIb29rcy5fZGVmYXVsdC5zZXQodGhpcyksIHRoaXMKICAgICAgICAg
fQotICAgIH0sIHJyLnByb3RvdHlwZS5pbml0LnByb3RvdHlwZSA9IHJyLnByb3RvdHlwZSwgcnIu
cHJvcEhvb2tzID0geworICAgIH0sCisgICAgcnIucHJvdG90eXBlLmluaXQucHJvdG90eXBlID0g
cnIucHJvdG90eXBlLAorICAgIHJyLnByb3BIb29rcyA9IHsKICAgICAgICAgX2RlZmF1bHQ6IHsK
ICAgICAgICAgICAgIGdldDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgIHZhciB0OwpA
QCAtMzYzNCwxNiArMzkxNSwxOSBAQAogICAgICAgICAgICAgICAgIGIuZnguc3RlcFtlLnByb3Bd
ID8gYi5meC5zdGVwW2UucHJvcF0oZSkgOiBlLmVsZW0uc3R5bGUgJiYgKG51bGwgIT0gZS5lbGVt
LnN0eWxlW2IuY3NzUHJvcHNbZS5wcm9wXV0gfHwgYi5jc3NIb29rc1tlLnByb3BdKSA/IGIuc3R5
bGUoZS5lbGVtLCBlLnByb3AsIGUubm93ICsgZS51bml0KSA6IGUuZWxlbVtlLnByb3BdID0gZS5u
b3cKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgIH0sIHJyLnByb3BIb29rcy5zY3JvbGxU
b3AgPSByci5wcm9wSG9va3Muc2Nyb2xsTGVmdCA9IHsKKyAgICB9LAorICAgIHJyLnByb3BIb29r
cy5zY3JvbGxUb3AgPSByci5wcm9wSG9va3Muc2Nyb2xsTGVmdCA9IHsKICAgICAgICAgc2V0OiBm
dW5jdGlvbihlKSB7CiAgICAgICAgICAgICBlLmVsZW0ubm9kZVR5cGUgJiYgZS5lbGVtLnBhcmVu
dE5vZGUgJiYgKGUuZWxlbVtlLnByb3BdID0gZS5ub3cpCiAgICAgICAgIH0KLSAgICB9LCBiLmVh
Y2goWyJ0b2dnbGUiLCAic2hvdyIsICJoaWRlIl0sIGZ1bmN0aW9uKGUsIHQpIHsKKyAgICB9LAor
ICAgIGIuZWFjaChbInRvZ2dsZSIsICJzaG93IiwgImhpZGUiXSwgZnVuY3Rpb24oZSwgdCkgewog
ICAgICAgICB2YXIgbiA9IGIuZm5bdF07CiAgICAgICAgIGIuZm5bdF0gPSBmdW5jdGlvbihlLCBy
LCBpKSB7CiAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PSBlIHx8ICJib29sZWFuIiA9PSB0eXBl
b2YgZSA/IG4uYXBwbHkodGhpcywgYXJndW1lbnRzKSA6IHRoaXMuYW5pbWF0ZShpcih0LCAhMCks
IGUsIHIsIGkpCiAgICAgICAgIH0KLSAgICB9KSwgYi5mbi5leHRlbmQoeworICAgIH0pLAorICAg
IGIuZm4uZXh0ZW5kKHsKICAgICAgICAgZmFkZVRvOiBmdW5jdGlvbihlLCB0LCBuLCByKSB7CiAg
ICAgICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXIobm4pLmNzcygib3BhY2l0eSIsIDApLnNob3co
KS5lbmQoKS5hbmltYXRlKHsKICAgICAgICAgICAgICAgICBvcGFjaXR5OiB0CkBAIC0zNjU2LDE0
ICszOTQwLDE2IEBACiAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZXIodGhpcywgYi5leHRl
bmQoe30sIGUpLCBvKTsKICAgICAgICAgICAgICAgICAgICAgYS5maW5pc2ggPSBmdW5jdGlvbigp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgIHQuc3RvcCghMCkKLSAgICAgICAgICAgICAgICAg
ICAgfSwgKGkgfHwgYi5fZGF0YSh0aGlzLCAiZmluaXNoIikpICYmIHQuc3RvcCghMCkKKyAgICAg
ICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgKGkgfHwgYi5fZGF0YSh0aGlz
LCAiZmluaXNoIikpICYmIHQuc3RvcCghMCkKICAgICAgICAgICAgICAgICB9OwogICAgICAgICAg
ICAgcmV0dXJuIGEuZmluaXNoID0gYSwgaSB8fCBvLnF1ZXVlID09PSAhMSA/IHRoaXMuZWFjaChh
KSA6IHRoaXMucXVldWUoby5xdWV1ZSwgYSkKICAgICAgICAgfSwKICAgICAgICAgc3RvcDogZnVu
Y3Rpb24oZSwgbiwgcikgewogICAgICAgICAgICAgdmFyIGkgPSBmdW5jdGlvbihlKSB7CiAgICAg
ICAgICAgICAgICAgdmFyIHQgPSBlLnN0b3A7Ci0gICAgICAgICAgICAgICAgZGVsZXRlIGUuc3Rv
cCwgdChyKQorICAgICAgICAgICAgICAgIGRlbGV0ZSBlLnN0b3AsCisgICAgICAgICAgICAgICAg
dChyKQogICAgICAgICAgICAgfTsKICAgICAgICAgICAgIHJldHVybiAic3RyaW5nIiAhPSB0eXBl
b2YgZSAmJiAociA9IG4sIG4gPSBlLCBlID0gdCksIG4gJiYgZSAhPT0gITEgJiYgdGhpcy5xdWV1
ZShlIHx8ICJmeCIsIFtdKSwgdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAg
IHZhciB0ID0gITAsCkBAIC0zNzAzLDcgKzM5ODksOCBAQAogICAgICAgICAgICAgfSwKICAgICAg
ICAgICAgIGkgPSAwOwogICAgICAgICBmb3IgKHQgPSB0ID8gMSA6IDA7IDQgPiBpOyBpICs9IDIg
LSB0KQotICAgICAgICAgICAgbiA9IFp0W2ldLCByWyJtYXJnaW4iICsgbl0gPSByWyJwYWRkaW5n
IiArIG5dID0gZTsKKyAgICAgICAgICAgIG4gPSBadFtpXSwKKyAgICAgICAgICAgIHJbIm1hcmdp
biIgKyBuXSA9IHJbInBhZGRpbmciICsgbl0gPSBlOwogICAgICAgICByZXR1cm4gdCAmJiAoci5v
cGFjaXR5ID0gci53aWR0aCA9IGUpLCByCiAgICAgfQogICAgIGIuZWFjaCh7CkBAIC0zNzIzLDQ0
ICs0MDEwLDYxIEBACiAgICAgICAgIGIuZm5bZV0gPSBmdW5jdGlvbihlLCBuLCByKSB7CiAgICAg
ICAgICAgICByZXR1cm4gdGhpcy5hbmltYXRlKHQsIGUsIG4sIHIpCiAgICAgICAgIH0KLSAgICB9
KSwgYi5zcGVlZCA9IGZ1bmN0aW9uKGUsIHQsIG4pIHsKKyAgICB9KSwKKyAgICBiLnNwZWVkID0g
ZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICB2YXIgciA9IGUgJiYgIm9iamVjdCIgPT0gdHlw
ZW9mIGUgPyBiLmV4dGVuZCh7fSwgZSkgOiB7CiAgICAgICAgICAgICBjb21wbGV0ZTogbiB8fCAh
biAmJiB0IHx8IGIuaXNGdW5jdGlvbihlKSAmJiBlLAogICAgICAgICAgICAgZHVyYXRpb246IGUs
CiAgICAgICAgICAgICBlYXNpbmc6IG4gJiYgdCB8fCB0ICYmICFiLmlzRnVuY3Rpb24odCkgJiYg
dAogICAgICAgICB9OwogICAgICAgICByZXR1cm4gci5kdXJhdGlvbiA9IGIuZngub2ZmID8gMCA6
ICJudW1iZXIiID09IHR5cGVvZiByLmR1cmF0aW9uID8gci5kdXJhdGlvbiA6IHIuZHVyYXRpb24g
aW4gYi5meC5zcGVlZHMgPyBiLmZ4LnNwZWVkc1tyLmR1cmF0aW9uXSA6IGIuZnguc3BlZWRzLl9k
ZWZhdWx0LCAobnVsbCA9PSByLnF1ZXVlIHx8IHIucXVldWUgPT09ICEwKSAmJiAoci5xdWV1ZSA9
ICJmeCIpLCByLm9sZCA9IHIuY29tcGxldGUsIHIuY29tcGxldGUgPSBmdW5jdGlvbigpIHsKLSAg
ICAgICAgICAgIGIuaXNGdW5jdGlvbihyLm9sZCkgJiYgci5vbGQuY2FsbCh0aGlzKSwgci5xdWV1
ZSAmJiBiLmRlcXVldWUodGhpcywgci5xdWV1ZSkKKyAgICAgICAgICAgIGIuaXNGdW5jdGlvbihy
Lm9sZCkgJiYgci5vbGQuY2FsbCh0aGlzKSwKKyAgICAgICAgICAgIHIucXVldWUgJiYgYi5kZXF1
ZXVlKHRoaXMsIHIucXVldWUpCiAgICAgICAgIH0sIHIKLSAgICB9LCBiLmVhc2luZyA9IHsKKyAg
ICB9LAorICAgIGIuZWFzaW5nID0gewogICAgICAgICBsaW5lYXI6IGZ1bmN0aW9uKGUpIHsKICAg
ICAgICAgICAgIHJldHVybiBlCiAgICAgICAgIH0sCiAgICAgICAgIHN3aW5nOiBmdW5jdGlvbihl
KSB7CiAgICAgICAgICAgICByZXR1cm4gLjUgLSBNYXRoLmNvcyhlICogTWF0aC5QSSkgLyAyCiAg
ICAgICAgIH0KLSAgICB9LCBiLnRpbWVycyA9IFtdLCBiLmZ4ID0gcnIucHJvdG90eXBlLmluaXQs
IGIuZngudGljayA9IGZ1bmN0aW9uKCkgeworICAgIH0sCisgICAgYi50aW1lcnMgPSBbXSwKKyAg
ICBiLmZ4ID0gcnIucHJvdG90eXBlLmluaXQsCisgICAgYi5meC50aWNrID0gZnVuY3Rpb24oKSB7
CiAgICAgICAgIHZhciBlLAogICAgICAgICAgICAgbiA9IGIudGltZXJzLAogICAgICAgICAgICAg
ciA9IDA7CiAgICAgICAgIGZvciAoWG4gPSBiLm5vdygpOyBuLmxlbmd0aCA+IHI7IHIrKykKLSAg
ICAgICAgICAgIGUgPSBuW3JdLCBlKCkgfHwgbltyXSAhPT0gZSB8fCBuLnNwbGljZShyLS0sIDEp
OwotICAgICAgICBuLmxlbmd0aCB8fCBiLmZ4LnN0b3AoKSwgWG4gPSB0Ci0gICAgfSwgYi5meC50
aW1lciA9IGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgICAgIGUgPSBuW3JdLAorICAgICAgICAgICAg
ZSgpIHx8IG5bcl0gIT09IGUgfHwgbi5zcGxpY2Uoci0tLCAxKTsKKyAgICAgICAgbi5sZW5ndGgg
fHwgYi5meC5zdG9wKCksCisgICAgICAgIFhuID0gdAorICAgIH0sCisgICAgYi5meC50aW1lciA9
IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgZSgpICYmIGIudGltZXJzLnB1c2goZSkgJiYgYi5meC5z
dGFydCgpCi0gICAgfSwgYi5meC5pbnRlcnZhbCA9IDEzLCBiLmZ4LnN0YXJ0ID0gZnVuY3Rpb24o
KSB7CisgICAgfSwKKyAgICBiLmZ4LmludGVydmFsID0gMTMsCisgICAgYi5meC5zdGFydCA9IGZ1
bmN0aW9uKCkgewogICAgICAgICBVbiB8fCAoVW4gPSBzZXRJbnRlcnZhbChiLmZ4LnRpY2ssIGIu
ZnguaW50ZXJ2YWwpKQotICAgIH0sIGIuZnguc3RvcCA9IGZ1bmN0aW9uKCkgewotICAgICAgICBj
bGVhckludGVydmFsKFVuKSwgVW4gPSBudWxsCi0gICAgfSwgYi5meC5zcGVlZHMgPSB7CisgICAg
fSwKKyAgICBiLmZ4LnN0b3AgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgY2xlYXJJbnRlcnZhbChV
biksCisgICAgICAgIFVuID0gbnVsbAorICAgIH0sCisgICAgYi5meC5zcGVlZHMgPSB7CiAgICAg
ICAgIHNsb3c6IDYwMCwKICAgICAgICAgZmFzdDogMjAwLAogICAgICAgICBfZGVmYXVsdDogNDAw
Ci0gICAgfSwgYi5meC5zdGVwID0ge30sIGIuZXhwciAmJiBiLmV4cHIuZmlsdGVycyAmJiAoYi5l
eHByLmZpbHRlcnMuYW5pbWF0ZWQgPSBmdW5jdGlvbihlKSB7CisgICAgfSwKKyAgICBiLmZ4LnN0
ZXAgPSB7fSwKKyAgICBiLmV4cHIgJiYgYi5leHByLmZpbHRlcnMgJiYgKGIuZXhwci5maWx0ZXJz
LmFuaW1hdGVkID0gZnVuY3Rpb24oZSkgewogICAgICAgICByZXR1cm4gYi5ncmVwKGIudGltZXJz
LCBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICByZXR1cm4gZSA9PT0gdC5lbGVtCiAgICAgICAg
IH0pLmxlbmd0aAotICAgIH0pLCBiLmZuLm9mZnNldCA9IGZ1bmN0aW9uKGUpIHsKKyAgICB9KSwK
KyAgICBiLmZuLm9mZnNldCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgaWYgKGFyZ3VtZW50cy5s
ZW5ndGgpCiAgICAgICAgICAgICByZXR1cm4gZSA9PT0gdCA/IHRoaXMgOiB0aGlzLmVhY2goZnVu
Y3Rpb24odCkgewogICAgICAgICAgICAgICAgIGIub2Zmc2V0LnNldE9mZnNldCh0aGlzLCBlLCB0
KQpAQCAtMzc3OCw3ICs0MDgyLDggQEAKICAgICAgICAgICAgICAgICB0b3A6IG8udG9wICsgKHIu
cGFnZVlPZmZzZXQgfHwgbi5zY3JvbGxUb3ApIC0gKG4uY2xpZW50VG9wIHx8IDApLAogICAgICAg
ICAgICAgICAgIGxlZnQ6IG8ubGVmdCArIChyLnBhZ2VYT2Zmc2V0IHx8IG4uc2Nyb2xsTGVmdCkg
LSAobi5jbGllbnRMZWZ0IHx8IDApCiAgICAgICAgICAgICB9KSA6IG8KLSAgICB9LCBiLm9mZnNl
dCA9IHsKKyAgICB9LAorICAgIGIub2Zmc2V0ID0gewogICAgICAgICBzZXRPZmZzZXQ6IGZ1bmN0
aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgIHZhciByID0gYi5jc3MoZSwgInBvc2l0aW9uIik7
CiAgICAgICAgICAgICAic3RhdGljIiA9PT0gciAmJiAoZS5zdHlsZS5wb3NpdGlvbiA9ICJyZWxh
dGl2ZSIpOwpAQCAtMzc5MSw5ICs0MDk2LDE0IEBACiAgICAgICAgICAgICAgICAgYyA9IHt9LAog
ICAgICAgICAgICAgICAgIHAsCiAgICAgICAgICAgICAgICAgZjsKLSAgICAgICAgICAgIHUgPyAo
YyA9IGkucG9zaXRpb24oKSwgcCA9IGMudG9wLCBmID0gYy5sZWZ0KSA6IChwID0gcGFyc2VGbG9h
dChhKSB8fCAwLCBmID0gcGFyc2VGbG9hdChzKSB8fCAwKSwgYi5pc0Z1bmN0aW9uKHQpICYmICh0
ID0gdC5jYWxsKGUsIG4sIG8pKSwgbnVsbCAhPSB0LnRvcCAmJiAobC50b3AgPSB0LnRvcCAtIG8u
dG9wICsgcCksIG51bGwgIT0gdC5sZWZ0ICYmIChsLmxlZnQgPSB0LmxlZnQgLSBvLmxlZnQgKyBm
KSwgInVzaW5nIiBpbiB0ID8gdC51c2luZy5jYWxsKGUsIGwpIDogaS5jc3MobCkKKyAgICAgICAg
ICAgIHUgPyAoYyA9IGkucG9zaXRpb24oKSwgcCA9IGMudG9wLCBmID0gYy5sZWZ0KSA6IChwID0g
cGFyc2VGbG9hdChhKSB8fCAwLCBmID0gcGFyc2VGbG9hdChzKSB8fCAwKSwKKyAgICAgICAgICAg
IGIuaXNGdW5jdGlvbih0KSAmJiAodCA9IHQuY2FsbChlLCBuLCBvKSksCisgICAgICAgICAgICBu
dWxsICE9IHQudG9wICYmIChsLnRvcCA9IHQudG9wIC0gby50b3AgKyBwKSwKKyAgICAgICAgICAg
IG51bGwgIT0gdC5sZWZ0ICYmIChsLmxlZnQgPSB0LmxlZnQgLSBvLmxlZnQgKyBmKSwKKyAgICAg
ICAgICAgICJ1c2luZyIgaW4gdCA/IHQudXNpbmcuY2FsbChlLCBsKSA6IGkuY3NzKGwpCiAgICAg
ICAgIH0KLSAgICB9LCBiLmZuLmV4dGVuZCh7CisgICAgfSwKKyAgICBiLmZuLmV4dGVuZCh7CiAg
ICAgICAgIHBvc2l0aW9uOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgIGlmICh0aGlzWzBdKSB7
CiAgICAgICAgICAgICAgICAgdmFyIGUsCkBAIC0zODE3LDcgKzQxMjcsOCBAQAogICAgICAgICAg
ICAgICAgIHJldHVybiBlIHx8IG8uZG9jdW1lbnRFbGVtZW50CiAgICAgICAgICAgICB9KQogICAg
ICAgICB9Ci0gICAgfSksIGIuZWFjaCh7CisgICAgfSksCisgICAgYi5lYWNoKHsKICAgICAgICAg
c2Nyb2xsTGVmdDogInBhZ2VYT2Zmc2V0IiwKICAgICAgICAgc2Nyb2xsVG9wOiAicGFnZVlPZmZz
ZXQiCiAgICAgfSwgZnVuY3Rpb24oZSwgbikgewpAQCAtMzg1MCw3ICs0MTYxLDkgQEAKICAgICAg
ICAgICAgICAgICB9LCBuLCBhID8gaSA6IHQsIGEsIG51bGwpCiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0pCi0gICAgfSksIGUualF1ZXJ5ID0gZS4kID0gYiwgImZ1bmN0aW9uIiA9PSB0eXBlb2Yg
ZGVmaW5lICYmIGRlZmluZS5hbWQgJiYgZGVmaW5lLmFtZC5qUXVlcnkgJiYgZGVmaW5lKCJqcXVl
cnkiLCBbXSwgZnVuY3Rpb24oKSB7CisgICAgfSksCisgICAgZS5qUXVlcnkgPSBlLiQgPSBiLAor
ICAgICJmdW5jdGlvbiIgPT0gdHlwZW9mIGRlZmluZSAmJiBkZWZpbmUuYW1kICYmIGRlZmluZS5h
bWQualF1ZXJ5ICYmIGRlZmluZSgianF1ZXJ5IiwgW10sIGZ1bmN0aW9uKCkgewogICAgICAgICBy
ZXR1cm4gYgogICAgIH0pCiB9KSh3aW5kb3cpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395519</attachid>
            <date>2020-04-05 11:39:14 -0700</date>
            <delta_ts>2020-04-05 17:33:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209998-20200405123913.patch</filename>
            <type>text/plain</type>
            <size>198647</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDNjNTI5NTBmZGMzM2IyNTIxNWE4NGI0MDA3NTE4
OGVjMDdiY2U4ZTQuLjNhM2E4ZDM1YTk1MmM5MzA4YmU3MzQ5Y2MwYmNkMjM1YmIyNDEwYTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIwLTA0LTA1ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBE
ZWJ1Z2dlcjogdHJlYXQgY29tbWEgc3ViLWV4cHJlc3Npb25zIGFzIHNlcGFyYXRlIHN0YXRlbWVu
dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTk5
OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1pbmlm
aWVycyBzb21ldGltZXMgdXNlIGAsYCBpbnN0ZWFkIG9mIGA7YCBhcyBhIHdheSBvZiBjb21wcmVz
c2luZyBtdWx0aXBsZSBzdGF0ZW1lbnRzIGludG8KKyAgICAgICAgYSBzaW5nbGUgc3RhdGVtZW50
IChlLmcuIGluc2lkZSBhbiBgaWZgIGNvbmRpdGlvbmFsKS4gVGhpcyBtYWtlcyBzdGVwcGluZyB0
aHJvdWdoIG1pbmlmaWVkCisgICAgICAgIGNvZGUgbXVjaCBsZXNzIHVzZWZ1bCwgYXMgb3VyIGN1
cnJlbnQgc3RlcHBpbmcgbG9naWMgaXMgYmFzZWQgb24gZXhwcmVzc2lvbnMgKG5vdCBpbmNsdWRp
bmcKKyAgICAgICAgc3RlcCBpbiBvciBzdGVwIG91dCkuIEluIG1vc3QgY2FzZXMsIHdlIGRvIGFj
dHVhbGx5IHdhbnQgdG8gdHJlYXQgZWFjaCBzdWItZXhwcmVzc2lvbiBpbiBhCisgICAgICAgIGNv
bW1hIGV4cHJlc3Npb24gYXMgYSBzdGF0ZW1lbnQgc28gYXMgdG8gZW11bGF0ZSB0aGUgYmVoYXZp
b3VyIGFzIGlmIHRoZXJlIHdlcmUgYDtgIGluc3RlYWQuCisKKyAgICAgICAgKiBieXRlY29tcGls
ZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6Q29tbWFOb2RlOjplbWl0Qnl0ZWNv
ZGUpOgorCisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OlBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZVZhcmlhYmxlRGVjbGFyYXRpb25MaXN0KToKKyAgICAgICAgKFBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZUV4cHJlc3Npb24pOgorICAgICAgICBTaGlmdCB0aGUgbG9j
YXRpb24gb2Ygc3Vic2VxdWVudCBzdWItZXhwcmVzc2lvbnMgdG8gYmUgYWZ0ZXIgdGhlIGNvbW1h
LiBBZGQgYnJlYWtwb2ludCBwYXVzZQorICAgICAgICBsb2NhdGlvbnMgZm9yIGVhY2ggc3Vic2Vx
dWVudCBzdWItZXhwcmVzc2lvbi4KKwogMjAyMC0wNC0wNCAgQWxleGV5IFNodmF5a2EgIDxzaHZh
aWthbGVzaEBnbWFpbC5jb20+CiAKICAgICAgICAgJ1x1JyBzaG91bGQgdGhyb3cgYW4gZWFybHkg
U3ludGF4RXJyb3IgZXhjZXB0aW9uLCBidXQgaW5zdGVhZCBldmFsdWF0ZXMgdG8gJ3UnCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL0NoYW5nZUxvZwppbmRleCAwMDM3YzU3ZGNjMmE1MWRiNTRhYWY0ZDUwYzBmMDg5ODM1
YTFhMTA4Li5lZDhkMTViMjM4YWRjNWE1YWFjNzc0YTk4ZTZkNjAyODc3OGM2MGU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAyMC0wNC0wNSAgRGV2aW4gUm91
c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogRGVidWdn
ZXI6IHRyZWF0IGNvbW1hIHN1Yi1leHByZXNzaW9ucyBhcyBzZXBhcmF0ZSBzdGF0ZW1lbnRzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk5OTgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNaW5pZmllcnMg
c29tZXRpbWVzIHVzZSBgLGAgaW5zdGVhZCBvZiBgO2AgYXMgYSB3YXkgb2YgY29tcHJlc3Npbmcg
bXVsdGlwbGUgc3RhdGVtZW50cyBpbnRvCisgICAgICAgIGEgc2luZ2xlIHN0YXRlbWVudCAoZS5n
LiBpbnNpZGUgYW4gYGlmYCBjb25kaXRpb25hbCkuIFRoaXMgbWFrZXMgc3RlcHBpbmcgdGhyb3Vn
aCBtaW5pZmllZAorICAgICAgICBjb2RlIG11Y2ggbGVzcyB1c2VmdWwsIGFzIG91ciBjdXJyZW50
IHN0ZXBwaW5nIGxvZ2ljIGlzIGJhc2VkIG9uIGV4cHJlc3Npb25zIChub3QgaW5jbHVkaW5nCisg
ICAgICAgIHN0ZXAgaW4gb3Igc3RlcCBvdXQpLiBJbiBtb3N0IGNhc2VzLCB3ZSBkbyBhY3R1YWxs
eSB3YW50IHRvIHRyZWF0IGVhY2ggc3ViLWV4cHJlc3Npb24gaW4gYQorICAgICAgICBjb21tYSBl
eHByZXNzaW9uIGFzIGEgc3RhdGVtZW50IHNvIGFzIHRvIGVtdWxhdGUgdGhlIGJlaGF2aW91ciBh
cyBpZiB0aGVyZSB3ZXJlIGA7YCBpbnN0ZWFkLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9X
b3JrZXJzL0Zvcm1hdHRlci9KU0Zvcm1hdHRlci5qczoKKyAgICAgICAgKEpTRm9ybWF0dGVyLnBy
b3RvdHlwZS5faXNMaWtlbHlUb0hhdmVOZXdsaW5lKToKKyAgICAgICAgKEpTRm9ybWF0dGVyLnBy
b3RvdHlwZS5faGFuZGxlVG9rZW5BdE5vZGUpOgorICAgICAgICBQdXQgZWFjaCBzdWItZXhwcmVz
c2lvbiBpbiBhIGNvbW1hIGV4cHJlc3Npb24gb24gaXQncyBvd24gbGluZS4KKwogMjAyMC0wNC0w
MyAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3Bl
Y3RvcjogU291cmNlczogZGlzY2xvc3VyZSBhcnJvd3Mgc2hvdWxkIGJlIHNob3duIGlmIGEgZm9s
ZGVyIGlzIGFkZGVkIHRvIHRoZSBuYXZpZ2F0aW9uIHNpZGViYXIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCA2NDBiMjQ5
NzU1ZTEwZWNkZDlhODNiOWUxNGIwOTdhYjM5ZmQwOTRmLi4wNzU1ZDhmNDViYjg0YjljOTVmOTc3
OTZlOGMyZjM4NjE4ZTg3MTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0zMDQyLDggKzMwNDIsMTMgQEAgUmVnaXN0
ZXJJRCogUmVhZE1vZGlmeUJyYWNrZXROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwgUmUKIFJlZ2lzdGVySUQqIENvbW1hTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKICAgICBDb21t
YU5vZGUqIG5vZGUgPSB0aGlzOwotICAgIGZvciAoOyBub2RlICYmIG5vZGUtPm5leHQoKTsgbm9k
ZSA9IG5vZGUtPm5leHQoKSkKKyAgICBmb3IgKDsgbm9kZS0+bmV4dCgpOyBub2RlID0gbm9kZS0+
bmV4dCgpKSB7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShnZW5lcmF0b3IuaWdub3JlZFJl
c3VsdCgpLCBub2RlLT5tX2V4cHIpOworCisgICAgICAgIC8vIERvbid0IGVtaXQgYSBkZWJ1ZyBo
b29rIGZvciB0aGUgZmlyc3QgZXhwcmVzc2lvbiwgYXMgdGhhdCBzaG91bGQndmUgYWxyZWFkeSBo
YXBwZW5lZCBpbgorICAgICAgICAvLyB0aGUgY29udGFpbmluZyBzdGF0ZW1lbnQuCisgICAgICAg
IGdlbmVyYXRvci5lbWl0RGVidWdIb29rKG5vZGUtPm5leHQoKS0+bV9leHByKTsKKyAgICB9CiAg
ICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0Tm9kZUluVGFpbFBvc2l0aW9uKGRzdCwgbm9kZS0+bV9l
eHByKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IDg0
ODU4MjNjNGU2NDViYTZlNjMxY2E0YTJkYzA0NmE1ZjcwODNhYTcuLmM0NzM5ZTNlY2JmOWQwYWY2
MmI2ZDNiNWI2YjkyZTY2ZDI1ODQ5M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5jcHAKQEAgLTgwOSw2ICs4MDksNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVZhcmlhYmxlRGVjbAogewog
ICAgIEFTU0VSVChkZWNsYXJhdGlvblR5cGUgPT0gRGVjbGFyYXRpb25UeXBlOjpMZXREZWNsYXJh
dGlvbiB8fCBkZWNsYXJhdGlvblR5cGUgPT0gRGVjbGFyYXRpb25UeXBlOjpWYXJEZWNsYXJhdGlv
biB8fCBkZWNsYXJhdGlvblR5cGUgPT0gRGVjbGFyYXRpb25UeXBlOjpDb25zdERlY2xhcmF0aW9u
KTsKICAgICBUcmVlRXhwcmVzc2lvbiBoZWFkID0gMDsKKyAgICBKU1Rva2VuTG9jYXRpb24gaGVh
ZExvY2F0aW9uOwogICAgIFRyZWVFeHByZXNzaW9uIHRhaWwgPSAwOwogICAgIGNvbnN0IElkZW50
aWZpZXIqIGxhc3RJZGVudDsKICAgICBKU1Rva2VuIGxhc3RJZGVudFRva2VuOyAKQEAgLTgxOCw2
ICs4MTksMTAgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VWYXJpYWJsZURlY2wKICAgICAgICAgbGFzdFBhdHRlcm4g
PSBUcmVlRGVzdHJ1Y3R1cmluZ1BhdHRlcm4oMCk7CiAgICAgICAgIEpTVG9rZW5Mb2NhdGlvbiBs
b2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgICAgICBuZXh0KCk7CisgICAgICAgIGlmICho
ZWFkKSB7CisgICAgICAgICAgICAvLyBNb3ZlIHRoZSBsb2NhdGlvbiBvZiBzdWJzZXF1ZW50IGRl
Y2xhcmF0aW9ucyBhZnRlciB0aGUgY29tbWEuCisgICAgICAgICAgICBsb2NhdGlvbiA9IHRva2Vu
TG9jYXRpb24oKTsKKyAgICAgICAgfQogICAgICAgICBUcmVlRXhwcmVzc2lvbiBub2RlID0gMDsK
ICAgICAgICAgZGVjbGFyYXRpb25zKys7CiAgICAgICAgIGJvb2wgaGFzSW5pdGlhbGl6ZXIgPSBm
YWxzZTsKQEAgLTg4OCwxMyArODkzLDE1IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlVmFyaWFibGVEZWNsCiAgICAg
ICAgIH0KIAogICAgICAgICBpZiAobm9kZSkgewotICAgICAgICAgICAgaWYgKCFoZWFkKQorICAg
ICAgICAgICAgaWYgKCFoZWFkKSB7CiAgICAgICAgICAgICAgICAgaGVhZCA9IG5vZGU7Ci0gICAg
ICAgICAgICBlbHNlIGlmICghdGFpbCkgewotICAgICAgICAgICAgICAgIGhlYWQgPSBjb250ZXh0
LmNyZWF0ZUNvbW1hRXhwcihsb2NhdGlvbiwgaGVhZCk7Ci0gICAgICAgICAgICAgICAgdGFpbCA9
IGNvbnRleHQuYXBwZW5kVG9Db21tYUV4cHIobG9jYXRpb24sIGhlYWQsIGhlYWQsIG5vZGUpOwot
ICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgaGVhZExvY2F0aW9uID0gbG9jYXRp
b247CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmICghdGFpbCkKKyAg
ICAgICAgICAgICAgICAgICAgaGVhZCA9IHRhaWwgPSBjb250ZXh0LmNyZWF0ZUNvbW1hRXhwciho
ZWFkTG9jYXRpb24sIGhlYWQpOwogICAgICAgICAgICAgICAgIHRhaWwgPSBjb250ZXh0LmFwcGVu
ZFRvQ29tbWFFeHByKGxvY2F0aW9uLCBoZWFkLCB0YWlsLCBub2RlKTsKKyAgICAgICAgICAgICAg
ICByZWNvcmRQYXVzZUxvY2F0aW9uKGNvbnRleHQuYnJlYWtwb2ludExvY2F0aW9uKHRhaWwpKTsK
KyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0gd2hpbGUgKG1hdGNoKENPTU1BKSk7CiAg
ICAgaWYgKGxhc3RJZGVudCkKQEAgLTM2OTcsNyArMzcwNCw3IEBAIHRlbXBsYXRlIDx0eXBlbmFt
ZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9u
IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUV4cHJlc3Npb24oVHJlZUJ1aWxkZXImIGNvbnRleHQp
CiB7CiAgICAgZmFpbElmU3RhY2tPdmVyZmxvdygpOwotICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2Nh
dGlvbih0b2tlbkxvY2F0aW9uKCkpOworICAgIEpTVG9rZW5Mb2NhdGlvbiBoZWFkTG9jYXRpb24o
dG9rZW5Mb2NhdGlvbigpKTsKICAgICBUcmVlRXhwcmVzc2lvbiBub2RlID0gcGFyc2VBc3NpZ25t
ZW50RXhwcmVzc2lvbihjb250ZXh0KTsKICAgICBmYWlsSWZGYWxzZShub2RlLCAiQ2Fubm90IHBh
cnNlIGV4cHJlc3Npb24iKTsKICAgICBjb250ZXh0LnNldEVuZE9mZnNldChub2RlLCBtX2xhc3RU
b2tlbkVuZFBvc2l0aW9uLm9mZnNldCk7CkBAIC0zNzA2LDE3ICszNzEzLDIxIEBAIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlRXhwcmVzc2lvbihUCiAgICAgbmV4dCgpOwogICAgIG1fcGFyc2VyU3RhdGUubm9uVHJpdmlh
bEV4cHJlc3Npb25Db3VudCsrOwogICAgIG1fcGFyc2VyU3RhdGUubm9uTEhTQ291bnQrKzsKKyAg
ICBKU1Rva2VuTG9jYXRpb24gdGFpbExvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgVHJl
ZUV4cHJlc3Npb24gcmlnaHQgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQpOwog
ICAgIGZhaWxJZkZhbHNlKHJpZ2h0LCAiQ2Fubm90IHBhcnNlIGV4cHJlc3Npb24gaW4gYSBjb21t
YSBleHByZXNzaW9uIik7CiAgICAgY29udGV4dC5zZXRFbmRPZmZzZXQocmlnaHQsIG1fbGFzdFRv
a2VuRW5kUG9zaXRpb24ub2Zmc2V0KTsKLSAgICB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Q29tbWEg
aGVhZCA9IGNvbnRleHQuY3JlYXRlQ29tbWFFeHByKGxvY2F0aW9uLCBub2RlKTsKLSAgICB0eXBl
bmFtZSBUcmVlQnVpbGRlcjo6Q29tbWEgdGFpbCA9IGNvbnRleHQuYXBwZW5kVG9Db21tYUV4cHIo
bG9jYXRpb24sIGhlYWQsIGhlYWQsIHJpZ2h0KTsKKyAgICB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6
Q29tbWEgaGVhZCA9IGNvbnRleHQuY3JlYXRlQ29tbWFFeHByKGhlYWRMb2NhdGlvbiwgbm9kZSk7
CisgICAgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkNvbW1hIHRhaWwgPSBjb250ZXh0LmFwcGVuZFRv
Q29tbWFFeHByKHRhaWxMb2NhdGlvbiwgaGVhZCwgaGVhZCwgcmlnaHQpOworICAgIHJlY29yZFBh
dXNlTG9jYXRpb24oY29udGV4dC5icmVha3BvaW50TG9jYXRpb24odGFpbCkpOwogICAgIHdoaWxl
IChtYXRjaChDT01NQSkpIHsKICAgICAgICAgbmV4dChUcmVlQnVpbGRlcjo6RG9udEJ1aWxkU3Ry
aW5ncyk7CisgICAgICAgIHRhaWxMb2NhdGlvbiA9IHRva2VuTG9jYXRpb24oKTsKICAgICAgICAg
cmlnaHQgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQpOwogICAgICAgICBmYWls
SWZGYWxzZShyaWdodCwgIkNhbm5vdCBwYXJzZSBleHByZXNzaW9uIGluIGEgY29tbWEgZXhwcmVz
c2lvbiIpOwogICAgICAgICBjb250ZXh0LnNldEVuZE9mZnNldChyaWdodCwgbV9sYXN0VG9rZW5F
bmRQb3NpdGlvbi5vZmZzZXQpOwotICAgICAgICB0YWlsID0gY29udGV4dC5hcHBlbmRUb0NvbW1h
RXhwcihsb2NhdGlvbiwgaGVhZCwgdGFpbCwgcmlnaHQpOworICAgICAgICB0YWlsID0gY29udGV4
dC5hcHBlbmRUb0NvbW1hRXhwcih0YWlsTG9jYXRpb24sIGhlYWQsIHRhaWwsIHJpZ2h0KTsKKyAg
ICAgICAgcmVjb3JkUGF1c2VMb2NhdGlvbihjb250ZXh0LmJyZWFrcG9pbnRMb2NhdGlvbih0YWls
KSk7CiAgICAgfQogICAgIGNvbnRleHQuc2V0RW5kT2Zmc2V0KGhlYWQsIG1fbGFzdFRva2VuRW5k
UG9zaXRpb24ub2Zmc2V0KTsKICAgICByZXR1cm4gaGVhZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1dvcmtlcnMvRm9ybWF0dGVyL0pTRm9ybWF0dGVy
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvV29ya2Vycy9Gb3JtYXR0
ZXIvSlNGb3JtYXR0ZXIuanMKaW5kZXggZjc2YjYwMjhkNDgyMTM0ODg4ZjdhYzEzN2EzNzM5Njcy
ZTEwY2IwMS4uZGRkMWU5MTY2NTE3ZTI0ZmZmMWMyOWRjOTllODFlZjg0NzAxOWVjNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvV29ya2Vycy9Gb3JtYXR0
ZXIvSlNGb3JtYXR0ZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvV29ya2Vycy9Gb3JtYXR0ZXIvSlNGb3JtYXR0ZXIuanMKQEAgLTIwMSwxOSArMjAxLDI2IEBA
IEpTRm9ybWF0dGVyID0gY2xhc3MgSlNGb3JtYXR0ZXIKIAogICAgIF9pc0xpa2VseVRvSGF2ZU5l
d2xpbmUobm9kZSkKICAgICB7Ci0gICAgICAgIGxldCBub2RlVHlwZSA9IG5vZGUudHlwZTsKLSAg
ICAgICAgcmV0dXJuIG5vZGVUeXBlID09PSAiSWZTdGF0ZW1lbnQiCi0gICAgICAgICAgICB8fCBu
b2RlVHlwZSA9PT0gIkZvclN0YXRlbWVudCIKLSAgICAgICAgICAgIHx8IG5vZGVUeXBlID09PSAi
Rm9yT2ZTdGF0ZW1lbnQiCi0gICAgICAgICAgICB8fCBub2RlVHlwZSA9PT0gIkZvckluU3RhdGVt
ZW50IgotICAgICAgICAgICAgfHwgbm9kZVR5cGUgPT09ICJXaGlsZVN0YXRlbWVudCIKLSAgICAg
ICAgICAgIHx8IG5vZGVUeXBlID09PSAiRG9XaGlsZVN0YXRlbWVudCIKLSAgICAgICAgICAgIHx8
IG5vZGVUeXBlID09PSAiU3dpdGNoU3RhdGVtZW50IgotICAgICAgICAgICAgfHwgbm9kZVR5cGUg
PT09ICJUcnlTdGF0ZW1lbnQiCi0gICAgICAgICAgICB8fCBub2RlVHlwZSA9PT0gIkZ1bmN0aW9u
RGVjbGFyYXRpb24iCi0gICAgICAgICAgICB8fCBub2RlVHlwZSA9PT0gIkNsYXNzRGVjbGFyYXRp
b24iCi0gICAgICAgICAgICB8fCBub2RlVHlwZSA9PT0gIkJsb2NrU3RhdGVtZW50IgotICAgICAg
ICAgICAgfHwgbm9kZVR5cGUgPT09ICJXaXRoU3RhdGVtZW50IjsKKyAgICAgICAgc3dpdGNoIChu
b2RlLnR5cGUpIHsKKyAgICAgICAgY2FzZSAiQmxvY2tTdGF0ZW1lbnQiOgorICAgICAgICBjYXNl
ICJDbGFzc0RlY2xhcmF0aW9uIjoKKyAgICAgICAgY2FzZSAiRG9XaGlsZVN0YXRlbWVudCI6Cisg
ICAgICAgIGNhc2UgIkZvckluU3RhdGVtZW50IjoKKyAgICAgICAgY2FzZSAiRm9yT2ZTdGF0ZW1l
bnQiOgorICAgICAgICBjYXNlICJGb3JTdGF0ZW1lbnQiOgorICAgICAgICBjYXNlICJGdW5jdGlv
bkRlY2xhcmF0aW9uIjoKKyAgICAgICAgY2FzZSAiSWZTdGF0ZW1lbnQiOgorICAgICAgICBjYXNl
ICJTd2l0Y2hTdGF0ZW1lbnQiOgorICAgICAgICBjYXNlICJUcnlTdGF0ZW1lbnQiOgorICAgICAg
ICBjYXNlICJXaGlsZVN0YXRlbWVudCI6CisgICAgICAgIGNhc2UgIldpdGhTdGF0ZW1lbnQiOgor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgY2FzZSAiRXhwcmVzc2lvblN0YXRl
bWVudCI6CisgICAgICAgICAgICByZXR1cm4gbm9kZS5leHByZXNzaW9uLnR5cGUgPT09ICJTZXF1
ZW5jZUV4cHJlc3Npb24iOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIAogICAgIF9pc1JhbmdlV2hpdGVzcGFjZShmcm9tLCB0bykKQEAgLTI4NSw3ICsyOTIsNyBA
QCBKU0Zvcm1hdHRlciA9IGNsYXNzIEpTRm9ybWF0dGVyCiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIAotICAgICAgICBpZiAobm9kZVR5cGUgPT09ICJDYWxsRXhwcmVzc2lvbiIgfHwg
bm9kZVR5cGUgPT09ICJBcnJheUV4cHJlc3Npb24iIHx8IG5vZGVUeXBlID09PSAiQXJyYXlQYXR0
ZXJuIiB8fCBub2RlVHlwZSA9PT0gIk9iamVjdFBhdHRlcm4iIHx8IG5vZGVUeXBlID09PSAiU2Vx
dWVuY2VFeHByZXNzaW9uIikgeworICAgICAgICBpZiAobm9kZVR5cGUgPT09ICJDYWxsRXhwcmVz
c2lvbiIgfHwgbm9kZVR5cGUgPT09ICJBcnJheUV4cHJlc3Npb24iIHx8IG5vZGVUeXBlID09PSAi
QXJyYXlQYXR0ZXJuIiB8fCBub2RlVHlwZSA9PT0gIk9iamVjdFBhdHRlcm4iKSB7CiAgICAgICAg
ICAgICBpZiAodG9rZW5WYWx1ZSA9PT0gIiwiKSB7CiAgICAgICAgICAgICAgICAgYnVpbGRlci5h
cHBlbmRUb2tlbih0b2tlblZhbHVlLCB0b2tlbk9mZnNldCk7CiAgICAgICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmRTcGFjZSgpOwpAQCAtMjk1LDYgKzMwMiwxNyBAQCBKU0Zvcm1hdHRlciA9IGNs
YXNzIEpTRm9ybWF0dGVyCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAorICAgICAg
ICBpZiAobm9kZVR5cGUgPT09ICJTZXF1ZW5jZUV4cHJlc3Npb24iKSB7CisgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZFRva2VuKHRva2VuVmFsdWUsIHRva2VuT2Zmc2V0KTsKKyAgICAgICAgICAg
IGlmICh0b2tlblZhbHVlID09PSAiLCIpIHsKKyAgICAgICAgICAgICAgICBpZiAobm9kZS5wYXJl
bnQudHlwZSA9PT0gIkV4cHJlc3Npb25TdGF0ZW1lbnQiKQorICAgICAgICAgICAgICAgICAgICB0
aGlzLl9hcHBlbmROZXdsaW5lKG5vZGUpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRTcGFjZSgpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKICAgICAgICAgaWYgKG5vZGVUeXBlID09PSAiTG9n
aWNhbEV4cHJlc3Npb24iIHx8IG5vZGVUeXBlID09PSAiQmluYXJ5RXhwcmVzc2lvbiIpIHsKICAg
ICAgICAgICAgIGlmICh0b2tlblZhbHVlICE9PSAiKCIgJiYgdG9rZW5WYWx1ZSAhPT0gIikiKSB7
CiAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRTcGFjZSgpOwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDIwMWYwMGE0
NDEzNTU5NzlmYmY1NjkxZjg2ODdiNmUwYmE3NDgyYmIuLjQ3OTBkZmJhODE1NTQyMTgxOGVlMzhj
MmI0NmRiOTJkMzgzOGM4Y2YgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAyMC0wNC0wNSAgRGV2
aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
RGVidWdnZXI6IHRyZWF0IGNvbW1hIHN1Yi1leHByZXNzaW9ucyBhcyBzZXBhcmF0ZSBzdGF0ZW1l
bnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk5
OTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGlu
c3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50cy9yZXNvdXJjZXMvZHVtcC1mdW5jdGlvbnMuanM6
CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnRzL3Jlc291cmNlcy9kdW1w
LWdlbmVyYWwuanM6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnRzL3Jl
c29sdmVkLWR1bXAtYWxsLXBhdXNlLWxvY2F0aW9ucy1leHBlY3RlZC50eHQ6CisgICAgICAgICog
aW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnRzL3Jlc29sdmVkLWR1bXAtZWFjaC1saW5lLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcvc3RlcE92
ZXIuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcvc3RlcE92ZXIt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9zdGVwcGluZy9zdGVw
cGluZy1mdW5jdGlvbi1jYWxscy5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9z
dGVwcGluZy9zdGVwcGluZy1mdW5jdGlvbi1jYWxscy1leHBlY3RlZC50eHQ6CisgICAgICAgICog
aW5zcGVjdG9yL2RlYnVnZ2VyL3N0ZXBwaW5nL3N0ZXBwaW5nLWxvb3BzLmh0bWw6CisgICAgICAg
ICogaW5zcGVjdG9yL2RlYnVnZ2VyL3N0ZXBwaW5nL3N0ZXBwaW5nLWxvb3BzLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcvc3RlcHBpbmctbWlzYy5o
dG1sOgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9zdGVwcGluZy9zdGVwcGluZy1taXNj
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMv
amF2YXNjcmlwdC10ZXN0cy9mb3Itc3RhdGVtZW50cy5qczoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
Zm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy9mb3Itc3RhdGVtZW50cy1leHBl
Y3RlZC5qczoKKyAgICAgICAgKiBpbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNj
cmlwdC10ZXN0cy9pZi1zdGF0ZW1lbnRzLmpzOgorICAgICAgICAqIGluc3BlY3Rvci9mb3JtYXR0
aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL2lmLXN0YXRlbWVudHMtZXhwZWN0ZWQuanM6
CisgICAgICAgICogaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVz
dHMvc2FtcGxlLWpxdWVyeS1leHBlY3RlZC5qczoKKyAgICAgICAgKiBpbnNwZWN0b3IvZm9ybWF0
dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy9zYW1wbGUtanF1ZXJ5LWV4cGVjdGVkLmpz
OgorCiAyMDIwLTA0LTA0ICBMYXVybyBNb3VyYSAgPGxtb3VyYUBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtHVEtdIFVwZGF0ZSB0ZXN0IGJhc2VsaW5lIGFmdGVyIHIyNTk0MzggYW5kIGdhcmRlbiBj
cmFzaGVzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvYnJlYWtw
b2ludHMvcmVzb2x2ZWQtZHVtcC1hbGwtcGF1c2UtbG9jYXRpb25zLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50cy9yZXNvbHZlZC1kdW1wLWFs
bC1wYXVzZS1sb2NhdGlvbnMtZXhwZWN0ZWQudHh0CmluZGV4IGNjMDhkOTQ5Y2ViNDNmOTU5ZmUy
NzhiNmE2ZGQxMDQ5MTk4ZTA4NDMuLjAzYzg4YTdmNjkxNjExYzAwZDQ1OGY4YzFhMDVlMDZhOTgw
MzdhNGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVha3Bv
aW50cy9yZXNvbHZlZC1kdW1wLWFsbC1wYXVzZS1sb2NhdGlvbnMtZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50cy9yZXNvbHZlZC1kdW1w
LWFsbC1wYXVzZS1sb2NhdGlvbnMtZXhwZWN0ZWQudHh0CkBAIC0xMDc0LDM2ICsxMDc0LDY2IEBA
IFBBVVNFUyBBVDogMTY0OjAKICAgICAxNjcgICAgICAgIGwyID0gMjsKIAogSU5TRVJUSU5HIEFU
OiAxNjQ6MQotUEFVU0VTIEFUOiAxNjY6MAorUEFVU0VTIEFUOiAxNjU6NAogICAgIDE2MSAgICAg
ICAgYSgpOwogICAgIDE2MiAgICB9CiAgICAgMTYzICAgIAogIC0+IDE2NCAgICB2I2FyIHYxID0g
MSwKLSAgICAxNjUgICAgICAgIHYyID0gMTsKKyA9PiAxNjUgICAgICAgIHx2MiA9IDE7CisgICAg
MTY2ICAgIGxldCBsMSA9IDIsCisgICAgMTY3ICAgICAgICBsMiA9IDI7CisgICAgMTY4ICAgIGNv
bnN0IGMxID0gMywKKworSU5TRVJUSU5HIEFUOiAxNjU6NQorUEFVU0VTIEFUOiAxNjY6MAorICAg
IDE2MiAgICB9CisgICAgMTYzICAgIAorICAgIDE2NCAgICB2YXIgdjEgPSAxLAorIC0+IDE2NSAg
ICAgICAgdiMyID0gMTsKICA9PiAxNjYgICAgfGxldCBsMSA9IDIsCiAgICAgMTY3ICAgICAgICBs
MiA9IDI7CiAgICAgMTY4ICAgIGNvbnN0IGMxID0gMywKICAgICAxNjkgICAgICAgIGMyID0gMzsK
IAogSU5TRVJUSU5HIEFUOiAxNjY6MQotUEFVU0VTIEFUOiAxNjg6MAorUEFVU0VTIEFUOiAxNjc6
NAogICAgIDE2MyAgICAKICAgICAxNjQgICAgdmFyIHYxID0gMSwKICAgICAxNjUgICAgICAgIHYy
ID0gMTsKICAtPiAxNjYgICAgbCNldCBsMSA9IDIsCi0gICAgMTY3ICAgICAgICBsMiA9IDI7Cisg
PT4gMTY3ICAgICAgICB8bDIgPSAyOworICAgIDE2OCAgICBjb25zdCBjMSA9IDMsCisgICAgMTY5
ICAgICAgICBjMiA9IDM7CisgICAgMTcwICAgIAorCitJTlNFUlRJTkcgQVQ6IDE2Nzo1CitQQVVT
RVMgQVQ6IDE2ODowCisgICAgMTY0ICAgIHZhciB2MSA9IDEsCisgICAgMTY1ICAgICAgICB2MiA9
IDE7CisgICAgMTY2ICAgIGxldCBsMSA9IDIsCisgLT4gMTY3ICAgICAgICBsIzIgPSAyOwogID0+
IDE2OCAgICB8Y29uc3QgYzEgPSAzLAogICAgIDE2OSAgICAgICAgYzIgPSAzOwogICAgIDE3MCAg
ICAKICAgICAxNzEgICAgdjEgPSB2MiA9IHYxOwogCiBJTlNFUlRJTkcgQVQ6IDE2ODoxCi1QQVVT
RVMgQVQ6IDE3MTowCitQQVVTRVMgQVQ6IDE2OTo0CiAgICAgMTY1ICAgICAgICB2MiA9IDE7CiAg
ICAgMTY2ICAgIGxldCBsMSA9IDIsCiAgICAgMTY3ICAgICAgICBsMiA9IDI7CiAgLT4gMTY4ICAg
IGMjb25zdCBjMSA9IDMsCi0gICAgMTY5ICAgICAgICBjMiA9IDM7CisgPT4gMTY5ICAgICAgICB8
YzIgPSAzOworICAgIDE3MCAgICAKKyAgICAxNzEgICAgdjEgPSB2MiA9IHYxOworICAgIDE3MiAg
ICAKKworSU5TRVJUSU5HIEFUOiAxNjk6NQorUEFVU0VTIEFUOiAxNzE6MAorICAgIDE2NiAgICBs
ZXQgbDEgPSAyLAorICAgIDE2NyAgICAgICAgbDIgPSAyOworICAgIDE2OCAgICBjb25zdCBjMSA9
IDMsCisgLT4gMTY5ICAgICAgICBjIzIgPSAzOwogICAgIDE3MCAgICAKICA9PiAxNzEgICAgfHYx
ID0gdjIgPSB2MTsKICAgICAxNzIgICAgCkBAIC0xMjU2LDc0ICsxMjg2LDE0MCBAQCBQQVVTRVMg
QVQ6IDIwMDowCiAgICAgMTk5ICAgIAogID0+IDIwMCAgICB8YShhKCksIGIoKSk7CiAgICAgMjAx
ICAgIAotICAgIDIwMiAgICBpZiAobzEucDEpCi0gICAgMjAzICAgICAgICBhKCk7CisgICAgMjAy
ICAgIGEoKSwgYigpLCBjKCk7CisgICAgMjAzICAgIAogCiBJTlNFUlRJTkcgQVQ6IDIwMDoxCi1Q
QVVTRVMgQVQ6IDIwMjo0CitQQVVTRVMgQVQ6IDIwMjowCiAgICAgMTk3ICAgIHZhciB0MSA9IGAk
ezF9ICR7eD0xfSAke2EoKX1gOwogICAgIDE5OCAgICB2YXIgdDIgPSBhYCR7MX0gJHt4PTF9ICR7
YSgpfWA7CiAgICAgMTk5ICAgIAogIC0+IDIwMCAgICBhIyhhKCksIGIoKSk7CiAgICAgMjAxICAg
IAotID0+IDIwMiAgICBpZiAofG8xLnAxKQotICAgIDIwMyAgICAgICAgYSgpOwotICAgIDIwNCAg
ICAKLSAgICAyMDUgICAgaWYgKG8xWyJwMSJdKQorID0+IDIwMiAgICB8YSgpLCBiKCksIGMoKTsK
KyAgICAyMDMgICAgCisgICAgMjA0ICAgIGEoKSwKKyAgICAyMDUgICAgYigpLAogCi1JTlNFUlRJ
TkcgQVQ6IDIwMjo1Ci1QQVVTRVMgQVQ6IDIwMzo0CitJTlNFUlRJTkcgQVQ6IDIwMjoxCitQQVVT
RVMgQVQ6IDIwMjo1CiAgICAgMTk5ICAgIAogICAgIDIwMCAgICBhKGEoKSwgYigpKTsKICAgICAy
MDEgICAgCi0gLT4gMjAyICAgIGlmIChvIzEucDEpCi0gPT4gMjAzICAgICAgICB8YSgpOwotICAg
IDIwNCAgICAKLSAgICAyMDUgICAgaWYgKG8xWyJwMSJdKQotICAgIDIwNiAgICAgICAgYSgpOwor
LT0+IDIwMiAgICBhIygpLCB8YigpLCBjKCk7CisgICAgMjAzICAgIAorICAgIDIwNCAgICBhKCks
CisgICAgMjA1ICAgIGIoKSwKIAotSU5TRVJUSU5HIEFUOiAyMDM6NQotUEFVU0VTIEFUOiAyMDU6
NAorSU5TRVJUSU5HIEFUOiAyMDI6NgorUEFVU0VTIEFUOiAyMDI6MTAKKyAgICAxOTkgICAgCiAg
ICAgMjAwICAgIGEoYSgpLCBiKCkpOwogICAgIDIwMSAgICAKLSAgICAyMDIgICAgaWYgKG8xLnAx
KQotIC0+IDIwMyAgICAgICAgYSMoKTsKLSAgICAyMDQgICAgCi0gPT4gMjA1ICAgIGlmICh8bzFb
InAxIl0pCi0gICAgMjA2ICAgICAgICBhKCk7Ci0gICAgMjA3ICAgIAotICAgIDIwOCAgICBpZiAo
U3RyaW5nLnJhd2B0ZXN0YCkKKy09PiAyMDIgICAgYSgpLCBiIygpLCB8YygpOworICAgIDIwMyAg
ICAKKyAgICAyMDQgICAgYSgpLAorICAgIDIwNSAgICBiKCksCiAKLUlOU0VSVElORyBBVDogMjA1
OjUKLVBBVVNFUyBBVDogMjA2OjQKLSAgICAyMDIgICAgaWYgKG8xLnAxKQotICAgIDIwMyAgICAg
ICAgYSgpOwotICAgIDIwNCAgICAKLSAtPiAyMDUgICAgaWYgKG8jMVsicDEiXSkKLSA9PiAyMDYg
ICAgICAgIHxhKCk7CitJTlNFUlRJTkcgQVQ6IDIwMjoxMQorUEFVU0VTIEFUOiAyMDQ6MAorICAg
IDE5OSAgICAKKyAgICAyMDAgICAgYShhKCksIGIoKSk7CisgICAgMjAxICAgIAorIC0+IDIwMiAg
ICBhKCksIGIoKSwgYyMoKTsKKyAgICAyMDMgICAgCisgPT4gMjA0ICAgIHxhKCksCisgICAgMjA1
ICAgIGIoKSwKKyAgICAyMDYgICAgYygpOwogICAgIDIwNyAgICAKLSAgICAyMDggICAgaWYgKFN0
cmluZy5yYXdgdGVzdGApCisKK0lOU0VSVElORyBBVDogMjA0OjEKK1BBVVNFUyBBVDogMjA1OjAK
KyAgICAyMDEgICAgCisgICAgMjAyICAgIGEoKSwgYigpLCBjKCk7CisgICAgMjAzICAgIAorIC0+
IDIwNCAgICBhIygpLAorID0+IDIwNSAgICB8YigpLAorICAgIDIwNiAgICBjKCk7CisgICAgMjA3
ICAgIAorICAgIDIwOCAgICBpZiAobzEucDEpCisKK0lOU0VSVElORyBBVDogMjA1OjEKK1BBVVNF
UyBBVDogMjA2OjAKKyAgICAyMDIgICAgYSgpLCBiKCksIGMoKTsKKyAgICAyMDMgICAgCisgICAg
MjA0ICAgIGEoKSwKKyAtPiAyMDUgICAgYiMoKSwKKyA9PiAyMDYgICAgfGMoKTsKKyAgICAyMDcg
ICAgCisgICAgMjA4ICAgIGlmIChvMS5wMSkKICAgICAyMDkgICAgICAgIGEoKTsKIAotSU5TRVJU
SU5HIEFUOiAyMDY6NQorSU5TRVJUSU5HIEFUOiAyMDY6MQogUEFVU0VTIEFUOiAyMDg6NAotICAg
IDIwMyAgICAgICAgYSgpOwotICAgIDIwNCAgICAKLSAgICAyMDUgICAgaWYgKG8xWyJwMSJdKQot
IC0+IDIwNiAgICAgICAgYSMoKTsKKyAgICAyMDMgICAgCisgICAgMjA0ICAgIGEoKSwKKyAgICAy
MDUgICAgYigpLAorIC0+IDIwNiAgICBjIygpOwogICAgIDIwNyAgICAKLSA9PiAyMDggICAgaWYg
KHxTdHJpbmcucmF3YHRlc3RgKQorID0+IDIwOCAgICBpZiAofG8xLnAxKQogICAgIDIwOSAgICAg
ICAgYSgpOwogICAgIDIxMCAgICAKKyAgICAyMTEgICAgaWYgKG8xWyJwMSJdKQogCiBJTlNFUlRJ
TkcgQVQ6IDIwODo1CiBQQVVTRVMgQVQ6IDIwOTo0Ci0gICAgMjA1ICAgIGlmIChvMVsicDEiXSkK
LSAgICAyMDYgICAgICAgIGEoKTsKKyAgICAyMDUgICAgYigpLAorICAgIDIwNiAgICBjKCk7CiAg
ICAgMjA3ICAgIAotIC0+IDIwOCAgICBpZiAoUyN0cmluZy5yYXdgdGVzdGApCisgLT4gMjA4ICAg
IGlmIChvIzEucDEpCiAgPT4gMjA5ICAgICAgICB8YSgpOwogICAgIDIxMCAgICAKKyAgICAyMTEg
ICAgaWYgKG8xWyJwMSJdKQorICAgIDIxMiAgICAgICAgYSgpOworCitJTlNFUlRJTkcgQVQ6IDIw
OTo1CitQQVVTRVMgQVQ6IDIxMTo0CisgICAgMjA2ICAgIGMoKTsKKyAgICAyMDcgICAgCisgICAg
MjA4ICAgIGlmIChvMS5wMSkKKyAtPiAyMDkgICAgICAgIGEjKCk7CisgICAgMjEwICAgIAorID0+
IDIxMSAgICBpZiAofG8xWyJwMSJdKQorICAgIDIxMiAgICAgICAgYSgpOworICAgIDIxMyAgICAK
KyAgICAyMTQgICAgaWYgKFN0cmluZy5yYXdgdGVzdGApCisKK0lOU0VSVElORyBBVDogMjExOjUK
K1BBVVNFUyBBVDogMjEyOjQKKyAgICAyMDggICAgaWYgKG8xLnAxKQorICAgIDIwOSAgICAgICAg
YSgpOworICAgIDIxMCAgICAKKyAtPiAyMTEgICAgaWYgKG8jMVsicDEiXSkKKyA9PiAyMTIgICAg
ICAgIHxhKCk7CisgICAgMjEzICAgIAorICAgIDIxNCAgICBpZiAoU3RyaW5nLnJhd2B0ZXN0YCkK
KyAgICAyMTUgICAgICAgIGEoKTsKKworSU5TRVJUSU5HIEFUOiAyMTI6NQorUEFVU0VTIEFUOiAy
MTQ6NAorICAgIDIwOSAgICAgICAgYSgpOworICAgIDIxMCAgICAKKyAgICAyMTEgICAgaWYgKG8x
WyJwMSJdKQorIC0+IDIxMiAgICAgICAgYSMoKTsKKyAgICAyMTMgICAgCisgPT4gMjE0ICAgIGlm
ICh8U3RyaW5nLnJhd2B0ZXN0YCkKKyAgICAyMTUgICAgICAgIGEoKTsKKyAgICAyMTYgICAgCisK
K0lOU0VSVElORyBBVDogMjE0OjUKK1BBVVNFUyBBVDogMjE1OjQKKyAgICAyMTEgICAgaWYgKG8x
WyJwMSJdKQorICAgIDIxMiAgICAgICAgYSgpOworICAgIDIxMyAgICAKKyAtPiAyMTQgICAgaWYg
KFMjdHJpbmcucmF3YHRlc3RgKQorID0+IDIxNSAgICAgICAgfGEoKTsKKyAgICAyMTYgICAgCiAK
IAogLS0gUnVubmluZyB0ZXN0IGNhc2U6IERlYnVnZ2VyLnJlc29sdmVkQnJlYWtwb2ludC5kdW1w
QWxsTG9jYXRpb25zLkZ1bmN0aW9ucwpAQCAtMTMzNiw3ICsxNDMyLDcgQEAgUEFVU0VTIEFUOiAw
OjE5CiAgICAgICAzICAgIH0KIAogSU5TRVJUSU5HIEFUOiAwOjIwCi1QQVVTRVMgQVQ6IDQ0OjAK
K1BBVVNFUyBBVDogNTQ6MAogIC0+ICAgMCAgICBmdW5jdGlvbiBpbmxpbmUoKSB7fSMKICAgICAg
IDEgICAgZnVuY3Rpb24gbmFtZWQoKSB7CiAgICAgICAyICAgICAgICB2YXIgeDsKQEAgLTEzODEs
MTAgKzE0NzcsMjAgQEAgUEFVU0VTIEFUOiA0NDowCiAgICAgIDQxICAgICAgICBmdW5jdGlvbiBp
bm5lcjIoKSB7IHZhciB6OyB9CiAgICAgIDQyICAgIH0KICAgICAgNDMgICAgCi0gPT4gIDQ0ICAg
IHwoZnVuY3Rpb24oKSB7Ci0gICAgIDQ1ICAgICAgICB2YXIgeDsKLSAgICAgNDYgICAgfSkoKTsK
KyAgICAgNDQgICAgZnVuY3Rpb24gY29tbWFPbmVMaW5lKCkgeworICAgICA0NSAgICAgICAgaW5s
aW5lKCksIGlubGluZSgpLCBpbmxpbmUoKTsKKyAgICAgNDYgICAgfQogICAgICA0NyAgICAKKyAg
ICAgNDggICAgZnVuY3Rpb24gY29tbWFNdWx0aUxpbmUoKSB7CisgICAgIDQ5ICAgICAgICBpbmxp
bmUoKSwKKyAgICAgNTAgICAgICAgIGlubGluZSgpLAorICAgICA1MSAgICAgICAgaW5saW5lKCk7
CisgICAgIDUyICAgIH0KKyAgICAgNTMgICAgCisgPT4gIDU0ICAgIHwoZnVuY3Rpb24oKSB7Cisg
ICAgIDU1ICAgICAgICB2YXIgeDsKKyAgICAgNTYgICAgfSkoKTsKKyAgICAgNTcgICAgCiAKIElO
U0VSVElORyBBVDogMTowCiBQQVVTRVMgQVQ6IDI6NApAQCAtMTc2NCw4ICsxODcwLDggQEAgUEFV
U0VTIEFUOiA0MjowCiAgICAgIDQxICAgICAgICBmdW5jdGlvbiBpbm5lcjIoKSB7IHZhciB6OyB9
CiAgPT4gIDQyICAgIHx9CiAgICAgIDQzICAgIAotICAgICA0NCAgICAoZnVuY3Rpb24oKSB7Ci0g
ICAgIDQ1ICAgICAgICB2YXIgeDsKKyAgICAgNDQgICAgZnVuY3Rpb24gY29tbWFPbmVMaW5lKCkg
eworICAgICA0NSAgICAgICAgaW5saW5lKCksIGlubGluZSgpLCBpbmxpbmUoKTsKIAogSU5TRVJU
SU5HIEFUOiAzOToxNQogUEFVU0VTIEFUOiA0MDoyNApAQCAtMTc5Niw3ICsxOTAyLDcgQEAgUEFV
U0VTIEFUOiA0MToyNAogLT0+ICA0MSAgICAjICAgIGZ1bmN0aW9uIGlubmVyMigpIHsgfHZhciB6
OyB9CiAgICAgIDQyICAgIH0KICAgICAgNDMgICAgCi0gICAgIDQ0ICAgIChmdW5jdGlvbigpIHsK
KyAgICAgNDQgICAgZnVuY3Rpb24gY29tbWFPbmVMaW5lKCkgewogCiBJTlNFUlRJTkcgQVQ6IDQx
OjI1CiBQQVVTRVMgQVQ6IDQxOjMxCkBAIC0xODA2LDU2NiArMTkxMiw2NTIgQEAgUEFVU0VTIEFU
OiA0MTozMQogLT0+ICA0MSAgICAgICAgZnVuY3Rpb24gaW5uZXIyKCkgeyB2I2FyIHo7IHx9CiAg
ICAgIDQyICAgIH0KICAgICAgNDMgICAgCi0gICAgIDQ0ICAgIChmdW5jdGlvbigpIHsKKyAgICAg
NDQgICAgZnVuY3Rpb24gY29tbWFPbmVMaW5lKCkgewogCi1JTlNFUlRJTkcgQVQ6IDQ0OjEKK0lO
U0VSVElORyBBVDogNDQ6MAogUEFVU0VTIEFUOiA0NTo0CiAgICAgIDQxICAgICAgICBmdW5jdGlv
biBpbm5lcjIoKSB7IHZhciB6OyB9CiAgICAgIDQyICAgIH0KICAgICAgNDMgICAgCi0gLT4gIDQ0
ICAgICgjZnVuY3Rpb24oKSB7Ci0gPT4gIDQ1ICAgICAgICB8dmFyIHg7Ci0gICAgIDQ2ICAgIH0p
KCk7CisgLT4gIDQ0ICAgICNmdW5jdGlvbiBjb21tYU9uZUxpbmUoKSB7CisgPT4gIDQ1ICAgICAg
ICB8aW5saW5lKCksIGlubGluZSgpLCBpbmxpbmUoKTsKKyAgICAgNDYgICAgfQogICAgICA0NyAg
ICAKLSAgICAgNDggICAgKCgpID0+IHsKKyAgICAgNDggICAgZnVuY3Rpb24gY29tbWFNdWx0aUxp
bmUoKSB7CiAKIElOU0VSVElORyBBVDogNDU6NQorUEFVU0VTIEFUOiA0NToxNAorICAgICA0MiAg
ICB9CisgICAgIDQzICAgIAorICAgICA0NCAgICBmdW5jdGlvbiBjb21tYU9uZUxpbmUoKSB7Cist
PT4gIDQ1ICAgICAgICBpI25saW5lKCksIHxpbmxpbmUoKSwgaW5saW5lKCk7CisgICAgIDQ2ICAg
IH0KKyAgICAgNDcgICAgCisgICAgIDQ4ICAgIGZ1bmN0aW9uIGNvbW1hTXVsdGlMaW5lKCkgewor
CitJTlNFUlRJTkcgQVQ6IDQ1OjE1CitQQVVTRVMgQVQ6IDQ1OjI0CisgICAgIDQyICAgIH0KKyAg
ICAgNDMgICAgCisgICAgIDQ0ICAgIGZ1bmN0aW9uIGNvbW1hT25lTGluZSgpIHsKKy09PiAgNDUg
ICAgICAgIGlubGluZSgpLCBpI25saW5lKCksIHxpbmxpbmUoKTsKKyAgICAgNDYgICAgfQorICAg
ICA0NyAgICAKKyAgICAgNDggICAgZnVuY3Rpb24gY29tbWFNdWx0aUxpbmUoKSB7CisKK0lOU0VS
VElORyBBVDogNDU6MjUKIFBBVVNFUyBBVDogNDY6MAogICAgICA0MiAgICB9CiAgICAgIDQzICAg
IAotICAgICA0NCAgICAoZnVuY3Rpb24oKSB7Ci0gLT4gIDQ1ICAgICAgICB2I2FyIHg7Ci0gPT4g
IDQ2ICAgIHx9KSgpOworICAgICA0NCAgICBmdW5jdGlvbiBjb21tYU9uZUxpbmUoKSB7CisgLT4g
IDQ1ICAgICAgICBpbmxpbmUoKSwgaW5saW5lKCksIGkjbmxpbmUoKTsKKyA9PiAgNDYgICAgfH0K
ICAgICAgNDcgICAgCi0gICAgIDQ4ICAgICgoKSA9PiB7Ci0gICAgIDQ5ICAgICAgICB2YXIgeDsK
KyAgICAgNDggICAgZnVuY3Rpb24gY29tbWFNdWx0aUxpbmUoKSB7CisgICAgIDQ5ICAgICAgICBp
bmxpbmUoKSwKIAotSU5TRVJUSU5HIEFUOiA0NjoxCi1QQVVTRVMgQVQ6IDQ4OjAKLSAgICAgNDMg
ICAgCi0gICAgIDQ0ICAgIChmdW5jdGlvbigpIHsKLSAgICAgNDUgICAgICAgIHZhciB4OwotIC0+
ICA0NiAgICB9IykoKTsKLSAgICAgNDcgICAgCi0gPT4gIDQ4ICAgIHwoKCkgPT4gewotICAgICA0
OSAgICAgICAgdmFyIHg7Ci0gICAgIDUwICAgIH0pOwotICAgICA1MSAgICAKLQotSU5TRVJUSU5H
IEFUOiA0ODoxCitJTlNFUlRJTkcgQVQ6IDQ4OjAKIFBBVVNFUyBBVDogNDk6NAotICAgICA0NSAg
ICAgICAgdmFyIHg7Ci0gICAgIDQ2ICAgIH0pKCk7CisgICAgIDQ1ICAgICAgICBpbmxpbmUoKSwg
aW5saW5lKCksIGlubGluZSgpOworICAgICA0NiAgICB9CiAgICAgIDQ3ICAgIAotIC0+ICA0OCAg
ICAoIygpID0+IHsKLSA9PiAgNDkgICAgICAgIHx2YXIgeDsKLSAgICAgNTAgICAgfSk7Ci0gICAg
IDUxICAgIAotICAgICA1MiAgICBmdW5jdGlvbiogZ2VuZXJhdG9yKCkgeworIC0+ICA0OCAgICAj
ZnVuY3Rpb24gY29tbWFNdWx0aUxpbmUoKSB7CisgPT4gIDQ5ICAgICAgICB8aW5saW5lKCksCisg
ICAgIDUwICAgICAgICBpbmxpbmUoKSwKKyAgICAgNTEgICAgICAgIGlubGluZSgpOworICAgICA1
MiAgICB9CiAKIElOU0VSVElORyBBVDogNDk6NQotUEFVU0VTIEFUOiA1MDowCi0gICAgIDQ2ICAg
IH0pKCk7CitQQVVTRVMgQVQ6IDUwOjQKKyAgICAgNDYgICAgfQogICAgICA0NyAgICAKLSAgICAg
NDggICAgKCgpID0+IHsKLSAtPiAgNDkgICAgICAgIHYjYXIgeDsKLSA9PiAgNTAgICAgfH0pOwot
ICAgICA1MSAgICAKLSAgICAgNTIgICAgZnVuY3Rpb24qIGdlbmVyYXRvcigpIHsKLSAgICAgNTMg
ICAgICAgIHZhciB4OworICAgICA0OCAgICBmdW5jdGlvbiBjb21tYU11bHRpTGluZSgpIHsKKyAt
PiAgNDkgICAgICAgIGkjbmxpbmUoKSwKKyA9PiAgNTAgICAgICAgIHxpbmxpbmUoKSwKKyAgICAg
NTEgICAgICAgIGlubGluZSgpOworICAgICA1MiAgICB9CisgICAgIDUzICAgIAogCi1JTlNFUlRJ
TkcgQVQ6IDUwOjEKLVBBVVNFUyBBVDogODc6MAorSU5TRVJUSU5HIEFUOiA1MDo1CitQQVVTRVMg
QVQ6IDUxOjQKICAgICAgNDcgICAgCi0gICAgIDQ4ICAgICgoKSA9PiB7Ci0gICAgIDQ5ICAgICAg
ICB2YXIgeDsKLSAtPiAgNTAgICAgfSMpOwotICAgICA1MSAgICAKLSAgICAgNTIgICAgZnVuY3Rp
b24qIGdlbmVyYXRvcigpIHsKLSAgICAgNTMgICAgICAgIHZhciB4OwotICAgICA1NCAgICB9Ci0g
ICAgIDU1ICAgIAotICAgICA1NiAgICBjbGFzcyBDbGFzcyB7Ci0gICAgIDU3ICAgICAgICBzdGF0
aWMgc3RhdGljTWV0aG9kMSgpIHsKLSAgICAgNTggICAgICAgICAgICB2YXIgeDsKLSAgICAgNTkg
ICAgICAgIH0KLSAgICAgNjAgICAgICAgIHN0YXRpYyBzdGF0aWNNZXRob2QyKCkKLSAgICAgNjEg
ICAgICAgIHsKLSAgICAgNjIgICAgICAgICAgICB2YXIgeDsKLSAgICAgNjMgICAgICAgIH0KLSAg
ICAgNjQgICAgICAgIG1ldGhvZDEoKSB7Ci0gICAgIDY1ICAgICAgICAgICAgdmFyIHg7Ci0gICAg
IDY2ICAgICAgICB9Ci0gICAgIDY3ICAgICAgICBtZXRob2QyKCkKLSAgICAgNjggICAgICAgIHsK
LSAgICAgNjkgICAgICAgICAgICB2YXIgeDsKLSAgICAgNzAgICAgICAgIH0KLSAgICAgNzEgICAg
ICAgIGdldCBnZXR0ZXIxKCkgeworICAgICA0OCAgICBmdW5jdGlvbiBjb21tYU11bHRpTGluZSgp
IHsKKyAgICAgNDkgICAgICAgIGlubGluZSgpLAorIC0+ICA1MCAgICAgICAgaSNubGluZSgpLAor
ID0+ICA1MSAgICAgICAgfGlubGluZSgpOworICAgICA1MiAgICB9CisgICAgIDUzICAgIAorICAg
ICA1NCAgICAoZnVuY3Rpb24oKSB7CisKK0lOU0VSVElORyBBVDogNTE6NQorUEFVU0VTIEFUOiA1
MjowCisgICAgIDQ4ICAgIGZ1bmN0aW9uIGNvbW1hTXVsdGlMaW5lKCkgeworICAgICA0OSAgICAg
ICAgaW5saW5lKCksCisgICAgIDUwICAgICAgICBpbmxpbmUoKSwKKyAtPiAgNTEgICAgICAgIGkj
bmxpbmUoKTsKKyA9PiAgNTIgICAgfH0KKyAgICAgNTMgICAgCisgICAgIDU0ICAgIChmdW5jdGlv
bigpIHsKKyAgICAgNTUgICAgICAgIHZhciB4OworCitJTlNFUlRJTkcgQVQ6IDU0OjEKK1BBVVNF
UyBBVDogNTU6NAorICAgICA1MSAgICAgICAgaW5saW5lKCk7CisgICAgIDUyICAgIH0KKyAgICAg
NTMgICAgCisgLT4gIDU0ICAgICgjZnVuY3Rpb24oKSB7CisgPT4gIDU1ICAgICAgICB8dmFyIHg7
CisgICAgIDU2ICAgIH0pKCk7CisgICAgIDU3ICAgIAorICAgICA1OCAgICAoKCkgPT4geworCitJ
TlNFUlRJTkcgQVQ6IDU1OjUKK1BBVVNFUyBBVDogNTY6MAorICAgICA1MiAgICB9CisgICAgIDUz
ICAgIAorICAgICA1NCAgICAoZnVuY3Rpb24oKSB7CisgLT4gIDU1ICAgICAgICB2I2FyIHg7Cisg
PT4gIDU2ICAgIHx9KSgpOworICAgICA1NyAgICAKKyAgICAgNTggICAgKCgpID0+IHsKKyAgICAg
NTkgICAgICAgIHZhciB4OworCitJTlNFUlRJTkcgQVQ6IDU2OjEKK1BBVVNFUyBBVDogNTg6MAor
ICAgICA1MyAgICAKKyAgICAgNTQgICAgKGZ1bmN0aW9uKCkgeworICAgICA1NSAgICAgICAgdmFy
IHg7CisgLT4gIDU2ICAgIH0jKSgpOworICAgICA1NyAgICAKKyA9PiAgNTggICAgfCgoKSA9PiB7
CisgICAgIDU5ICAgICAgICB2YXIgeDsKKyAgICAgNjAgICAgfSk7CisgICAgIDYxICAgIAorCitJ
TlNFUlRJTkcgQVQ6IDU4OjEKK1BBVVNFUyBBVDogNTk6NAorICAgICA1NSAgICAgICAgdmFyIHg7
CisgICAgIDU2ICAgIH0pKCk7CisgICAgIDU3ICAgIAorIC0+ICA1OCAgICAoIygpID0+IHsKKyA9
PiAgNTkgICAgICAgIHx2YXIgeDsKKyAgICAgNjAgICAgfSk7CisgICAgIDYxICAgIAorICAgICA2
MiAgICBmdW5jdGlvbiogZ2VuZXJhdG9yKCkgeworCitJTlNFUlRJTkcgQVQ6IDU5OjUKK1BBVVNF
UyBBVDogNjA6MAorICAgICA1NiAgICB9KSgpOworICAgICA1NyAgICAKKyAgICAgNTggICAgKCgp
ID0+IHsKKyAtPiAgNTkgICAgICAgIHYjYXIgeDsKKyA9PiAgNjAgICAgfH0pOworICAgICA2MSAg
ICAKKyAgICAgNjIgICAgZnVuY3Rpb24qIGdlbmVyYXRvcigpIHsKKyAgICAgNjMgICAgICAgIHZh
ciB4OworCitJTlNFUlRJTkcgQVQ6IDYwOjEKK1BBVVNFUyBBVDogOTc6MAorICAgICA1NyAgICAK
KyAgICAgNTggICAgKCgpID0+IHsKKyAgICAgNTkgICAgICAgIHZhciB4OworIC0+ICA2MCAgICB9
Iyk7CisgICAgIDYxICAgIAorICAgICA2MiAgICBmdW5jdGlvbiogZ2VuZXJhdG9yKCkgeworICAg
ICA2MyAgICAgICAgdmFyIHg7CisgICAgIDY0ICAgIH0KKyAgICAgNjUgICAgCisgICAgIDY2ICAg
IGNsYXNzIENsYXNzIHsKKyAgICAgNjcgICAgICAgIHN0YXRpYyBzdGF0aWNNZXRob2QxKCkgewor
ICAgICA2OCAgICAgICAgICAgIHZhciB4OworICAgICA2OSAgICAgICAgfQorICAgICA3MCAgICAg
ICAgc3RhdGljIHN0YXRpY01ldGhvZDIoKQorICAgICA3MSAgICAgICAgewogICAgICA3MiAgICAg
ICAgICAgIHZhciB4OwogICAgICA3MyAgICAgICAgfQotICAgICA3NCAgICAgICAgZ2V0IGdldHRl
cjIoKQotICAgICA3NSAgICAgICAgewotICAgICA3NiAgICAgICAgICAgIHZhciB4OwotICAgICA3
NyAgICAgICAgfQotICAgICA3OCAgICAgICAgc2V0IHNldHRlcjEoeCkgewotICAgICA3OSAgICAg
ICAgICAgIHZhciBzOworICAgICA3NCAgICAgICAgbWV0aG9kMSgpIHsKKyAgICAgNzUgICAgICAg
ICAgICB2YXIgeDsKKyAgICAgNzYgICAgICAgIH0KKyAgICAgNzcgICAgICAgIG1ldGhvZDIoKQor
ICAgICA3OCAgICAgICAgeworICAgICA3OSAgICAgICAgICAgIHZhciB4OwogICAgICA4MCAgICAg
ICAgfQotICAgICA4MSAgICAgICAgc2V0IHNldHRlcjIoeCkKLSAgICAgODIgICAgICAgIHsKLSAg
ICAgODMgICAgICAgICAgICB2YXIgczsKLSAgICAgODQgICAgICAgIH0KLSAgICAgODUgICAgfQot
ICAgICA4NiAgICAKLSA9PiAgODcgICAgfHggPT4geDsKLSAgICAgODggICAgKCkgPT4gMTsKLSAg
ICAgODkgICAgKHgpID0+IHg7Ci0gICAgIDkwICAgICh4KSA9PiB7IHggfTsKKyAgICAgODEgICAg
ICAgIGdldCBnZXR0ZXIxKCkgeworICAgICA4MiAgICAgICAgICAgIHZhciB4OworICAgICA4MyAg
ICAgICAgfQorICAgICA4NCAgICAgICAgZ2V0IGdldHRlcjIoKQorICAgICA4NSAgICAgICAgewor
ICAgICA4NiAgICAgICAgICAgIHZhciB4OworICAgICA4NyAgICAgICAgfQorICAgICA4OCAgICAg
ICAgc2V0IHNldHRlcjEoeCkgeworICAgICA4OSAgICAgICAgICAgIHZhciBzOworICAgICA5MCAg
ICAgICAgfQorICAgICA5MSAgICAgICAgc2V0IHNldHRlcjIoeCkKKyAgICAgOTIgICAgICAgIHsK
KyAgICAgOTMgICAgICAgICAgICB2YXIgczsKKyAgICAgOTQgICAgICAgIH0KKyAgICAgOTUgICAg
fQorICAgICA5NiAgICAKKyA9PiAgOTcgICAgfHggPT4geDsKKyAgICAgOTggICAgKCkgPT4gMTsK
KyAgICAgOTkgICAgKHgpID0+IHg7CisgICAgMTAwICAgICh4KSA9PiB7IHggfTsKIAotSU5TRVJU
SU5HIEFUOiA1MjowCi1QQVVTRVMgQVQ6IDUzOjQKLSAgICAgNDkgICAgICAgIHZhciB4OwotICAg
ICA1MCAgICB9KTsKLSAgICAgNTEgICAgCi0gLT4gIDUyICAgICNmdW5jdGlvbiogZ2VuZXJhdG9y
KCkgewotID0+ICA1MyAgICAgICAgfHZhciB4OwotICAgICA1NCAgICB9Ci0gICAgIDU1ICAgIAot
ICAgICA1NiAgICBjbGFzcyBDbGFzcyB7Ci0KLUlOU0VSVElORyBBVDogNTM6NQotUEFVU0VTIEFU
OiA1NDowCi0gICAgIDUwICAgIH0pOwotICAgICA1MSAgICAKLSAgICAgNTIgICAgZnVuY3Rpb24q
IGdlbmVyYXRvcigpIHsKLSAtPiAgNTMgICAgICAgIHYjYXIgeDsKLSA9PiAgNTQgICAgfH0KLSAg
ICAgNTUgICAgCi0gICAgIDU2ICAgIGNsYXNzIENsYXNzIHsKLSAgICAgNTcgICAgICAgIHN0YXRp
YyBzdGF0aWNNZXRob2QxKCkgewotCi1JTlNFUlRJTkcgQVQ6IDU3OjAKLVBBVVNFUyBBVDogNTg6
OAotICAgICA1NCAgICB9Ci0gICAgIDU1ICAgIAotICAgICA1NiAgICBjbGFzcyBDbGFzcyB7Ci0g
LT4gIDU3ICAgICMgICAgc3RhdGljIHN0YXRpY01ldGhvZDEoKSB7Ci0gPT4gIDU4ICAgICAgICAg
ICAgfHZhciB4OwotICAgICA1OSAgICAgICAgfQotICAgICA2MCAgICAgICAgc3RhdGljIHN0YXRp
Y01ldGhvZDIoKQotICAgICA2MSAgICAgICAgewotCi1JTlNFUlRJTkcgQVQ6IDU4OjkKLVBBVVNF
UyBBVDogNTk6NAotICAgICA1NSAgICAKLSAgICAgNTYgICAgY2xhc3MgQ2xhc3MgewotICAgICA1
NyAgICAgICAgc3RhdGljIHN0YXRpY01ldGhvZDEoKSB7Ci0gLT4gIDU4ICAgICAgICAgICAgdiNh
ciB4OwotID0+ICA1OSAgICAgICAgfH0KLSAgICAgNjAgICAgICAgIHN0YXRpYyBzdGF0aWNNZXRo
b2QyKCkKLSAgICAgNjEgICAgICAgIHsKLSAgICAgNjIgICAgICAgICAgICB2YXIgeDsKLQotSU5T
RVJUSU5HIEFUOiA2MDowCi1QQVVTRVMgQVQ6IDYyOjgKLSAgICAgNTcgICAgICAgIHN0YXRpYyBz
dGF0aWNNZXRob2QxKCkgewotICAgICA1OCAgICAgICAgICAgIHZhciB4OwotICAgICA1OSAgICAg
ICAgfQotIC0+ICA2MCAgICAjICAgIHN0YXRpYyBzdGF0aWNNZXRob2QyKCkKLSAgICAgNjEgICAg
ICAgIHsKLSA9PiAgNjIgICAgICAgICAgICB8dmFyIHg7Ci0gICAgIDYzICAgICAgICB9Ci0gICAg
IDY0ICAgICAgICBtZXRob2QxKCkgewotICAgICA2NSAgICAgICAgICAgIHZhciB4OwotCi1JTlNF
UlRJTkcgQVQ6IDYyOjkKK0lOU0VSVElORyBBVDogNjI6MAogUEFVU0VTIEFUOiA2Mzo0Ci0gICAg
IDU5ICAgICAgICB9Ci0gICAgIDYwICAgICAgICBzdGF0aWMgc3RhdGljTWV0aG9kMigpCi0gICAg
IDYxICAgICAgICB7Ci0gLT4gIDYyICAgICAgICAgICAgdiNhciB4OwotID0+ICA2MyAgICAgICAg
fH0KLSAgICAgNjQgICAgICAgIG1ldGhvZDEoKSB7Ci0gICAgIDY1ICAgICAgICAgICAgdmFyIHg7
Ci0gICAgIDY2ICAgICAgICB9CisgICAgIDU5ICAgICAgICB2YXIgeDsKKyAgICAgNjAgICAgfSk7
CisgICAgIDYxICAgIAorIC0+ICA2MiAgICAjZnVuY3Rpb24qIGdlbmVyYXRvcigpIHsKKyA9PiAg
NjMgICAgICAgIHx2YXIgeDsKKyAgICAgNjQgICAgfQorICAgICA2NSAgICAKKyAgICAgNjYgICAg
Y2xhc3MgQ2xhc3MgewogCi1JTlNFUlRJTkcgQVQ6IDY0OjAKLVBBVVNFUyBBVDogNjU6OAotICAg
ICA2MSAgICAgICAgewotICAgICA2MiAgICAgICAgICAgIHZhciB4OwotICAgICA2MyAgICAgICAg
fQotIC0+ICA2NCAgICAjICAgIG1ldGhvZDEoKSB7Ci0gPT4gIDY1ICAgICAgICAgICAgfHZhciB4
OwotICAgICA2NiAgICAgICAgfQotICAgICA2NyAgICAgICAgbWV0aG9kMigpCi0gICAgIDY4ICAg
ICAgICB7Ci0KLUlOU0VSVElORyBBVDogNjU6OQotUEFVU0VTIEFUOiA2Njo0Ci0gICAgIDYyICAg
ICAgICAgICAgdmFyIHg7Ci0gICAgIDYzICAgICAgICB9Ci0gICAgIDY0ICAgICAgICBtZXRob2Qx
KCkgewotIC0+ICA2NSAgICAgICAgICAgIHYjYXIgeDsKLSA9PiAgNjYgICAgICAgIHx9Ci0gICAg
IDY3ICAgICAgICBtZXRob2QyKCkKLSAgICAgNjggICAgICAgIHsKLSAgICAgNjkgICAgICAgICAg
ICB2YXIgeDsKK0lOU0VSVElORyBBVDogNjM6NQorUEFVU0VTIEFUOiA2NDowCisgICAgIDYwICAg
IH0pOworICAgICA2MSAgICAKKyAgICAgNjIgICAgZnVuY3Rpb24qIGdlbmVyYXRvcigpIHsKKyAt
PiAgNjMgICAgICAgIHYjYXIgeDsKKyA9PiAgNjQgICAgfH0KKyAgICAgNjUgICAgCisgICAgIDY2
ICAgIGNsYXNzIENsYXNzIHsKKyAgICAgNjcgICAgICAgIHN0YXRpYyBzdGF0aWNNZXRob2QxKCkg
ewogCiBJTlNFUlRJTkcgQVQ6IDY3OjAKLVBBVVNFUyBBVDogNjk6OAotICAgICA2NCAgICAgICAg
bWV0aG9kMSgpIHsKLSAgICAgNjUgICAgICAgICAgICB2YXIgeDsKLSAgICAgNjYgICAgICAgIH0K
LSAtPiAgNjcgICAgIyAgICBtZXRob2QyKCkKLSAgICAgNjggICAgICAgIHsKLSA9PiAgNjkgICAg
ICAgICAgICB8dmFyIHg7Ci0gICAgIDcwICAgICAgICB9Ci0gICAgIDcxICAgICAgICBnZXQgZ2V0
dGVyMSgpIHsKK1BBVVNFUyBBVDogNjg6OAorICAgICA2NCAgICB9CisgICAgIDY1ICAgIAorICAg
ICA2NiAgICBjbGFzcyBDbGFzcyB7CisgLT4gIDY3ICAgICMgICAgc3RhdGljIHN0YXRpY01ldGhv
ZDEoKSB7CisgPT4gIDY4ICAgICAgICAgICAgfHZhciB4OworICAgICA2OSAgICAgICAgfQorICAg
ICA3MCAgICAgICAgc3RhdGljIHN0YXRpY01ldGhvZDIoKQorICAgICA3MSAgICAgICAgeworCitJ
TlNFUlRJTkcgQVQ6IDY4OjkKK1BBVVNFUyBBVDogNjk6NAorICAgICA2NSAgICAKKyAgICAgNjYg
ICAgY2xhc3MgQ2xhc3MgeworICAgICA2NyAgICAgICAgc3RhdGljIHN0YXRpY01ldGhvZDEoKSB7
CisgLT4gIDY4ICAgICAgICAgICAgdiNhciB4OworID0+ICA2OSAgICAgICAgfH0KKyAgICAgNzAg
ICAgICAgIHN0YXRpYyBzdGF0aWNNZXRob2QyKCkKKyAgICAgNzEgICAgICAgIHsKICAgICAgNzIg
ICAgICAgICAgICB2YXIgeDsKIAotSU5TRVJUSU5HIEFUOiA2OTo5Ci1QQVVTRVMgQVQ6IDcwOjQK
LSAgICAgNjYgICAgICAgIH0KLSAgICAgNjcgICAgICAgIG1ldGhvZDIoKQotICAgICA2OCAgICAg
ICAgewotIC0+ICA2OSAgICAgICAgICAgIHYjYXIgeDsKLSA9PiAgNzAgICAgICAgIHx9Ci0gICAg
IDcxICAgICAgICBnZXQgZ2V0dGVyMSgpIHsKLSAgICAgNzIgICAgICAgICAgICB2YXIgeDsKLSAg
ICAgNzMgICAgICAgIH0KLQotSU5TRVJUSU5HIEFUOiA3MTowCitJTlNFUlRJTkcgQVQ6IDcwOjAK
IFBBVVNFUyBBVDogNzI6OAotICAgICA2OCAgICAgICAgewotICAgICA2OSAgICAgICAgICAgIHZh
ciB4OwotICAgICA3MCAgICAgICAgfQotIC0+ICA3MSAgICAjICAgIGdldCBnZXR0ZXIxKCkgewor
ICAgICA2NyAgICAgICAgc3RhdGljIHN0YXRpY01ldGhvZDEoKSB7CisgICAgIDY4ICAgICAgICAg
ICAgdmFyIHg7CisgICAgIDY5ICAgICAgICB9CisgLT4gIDcwICAgICMgICAgc3RhdGljIHN0YXRp
Y01ldGhvZDIoKQorICAgICA3MSAgICAgICAgewogID0+ICA3MiAgICAgICAgICAgIHx2YXIgeDsK
ICAgICAgNzMgICAgICAgIH0KLSAgICAgNzQgICAgICAgIGdldCBnZXR0ZXIyKCkKLSAgICAgNzUg
ICAgICAgIHsKKyAgICAgNzQgICAgICAgIG1ldGhvZDEoKSB7CisgICAgIDc1ICAgICAgICAgICAg
dmFyIHg7CiAKIElOU0VSVElORyBBVDogNzI6OQogUEFVU0VTIEFUOiA3Mzo0Ci0gICAgIDY5ICAg
ICAgICAgICAgdmFyIHg7Ci0gICAgIDcwICAgICAgICB9Ci0gICAgIDcxICAgICAgICBnZXQgZ2V0
dGVyMSgpIHsKKyAgICAgNjkgICAgICAgIH0KKyAgICAgNzAgICAgICAgIHN0YXRpYyBzdGF0aWNN
ZXRob2QyKCkKKyAgICAgNzEgICAgICAgIHsKICAtPiAgNzIgICAgICAgICAgICB2I2FyIHg7CiAg
PT4gIDczICAgICAgICB8fQotICAgICA3NCAgICAgICAgZ2V0IGdldHRlcjIoKQotICAgICA3NSAg
ICAgICAgewotICAgICA3NiAgICAgICAgICAgIHZhciB4OworICAgICA3NCAgICAgICAgbWV0aG9k
MSgpIHsKKyAgICAgNzUgICAgICAgICAgICB2YXIgeDsKKyAgICAgNzYgICAgICAgIH0KIAogSU5T
RVJUSU5HIEFUOiA3NDowCi1QQVVTRVMgQVQ6IDc2OjgKLSAgICAgNzEgICAgICAgIGdldCBnZXR0
ZXIxKCkgeworUEFVU0VTIEFUOiA3NTo4CisgICAgIDcxICAgICAgICB7CiAgICAgIDcyICAgICAg
ICAgICAgdmFyIHg7CiAgICAgIDczICAgICAgICB9Ci0gLT4gIDc0ICAgICMgICAgZ2V0IGdldHRl
cjIoKQotICAgICA3NSAgICAgICAgewotID0+ICA3NiAgICAgICAgICAgIHx2YXIgeDsKLSAgICAg
NzcgICAgICAgIH0KLSAgICAgNzggICAgICAgIHNldCBzZXR0ZXIxKHgpIHsKLSAgICAgNzkgICAg
ICAgICAgICB2YXIgczsKKyAtPiAgNzQgICAgIyAgICBtZXRob2QxKCkgeworID0+ICA3NSAgICAg
ICAgICAgIHx2YXIgeDsKKyAgICAgNzYgICAgICAgIH0KKyAgICAgNzcgICAgICAgIG1ldGhvZDIo
KQorICAgICA3OCAgICAgICAgewogCi1JTlNFUlRJTkcgQVQ6IDc2OjkKLVBBVVNFUyBBVDogNzc6
NAorSU5TRVJUSU5HIEFUOiA3NTo5CitQQVVTRVMgQVQ6IDc2OjQKKyAgICAgNzIgICAgICAgICAg
ICB2YXIgeDsKICAgICAgNzMgICAgICAgIH0KLSAgICAgNzQgICAgICAgIGdldCBnZXR0ZXIyKCkK
LSAgICAgNzUgICAgICAgIHsKLSAtPiAgNzYgICAgICAgICAgICB2I2FyIHg7Ci0gPT4gIDc3ICAg
ICAgICB8fQotICAgICA3OCAgICAgICAgc2V0IHNldHRlcjEoeCkgewotICAgICA3OSAgICAgICAg
ICAgIHZhciBzOwotICAgICA4MCAgICAgICAgfQorICAgICA3NCAgICAgICAgbWV0aG9kMSgpIHsK
KyAtPiAgNzUgICAgICAgICAgICB2I2FyIHg7CisgPT4gIDc2ICAgICAgICB8fQorICAgICA3NyAg
ICAgICAgbWV0aG9kMigpCisgICAgIDc4ICAgICAgICB7CisgICAgIDc5ICAgICAgICAgICAgdmFy
IHg7CiAKLUlOU0VSVElORyBBVDogNzg6MAorSU5TRVJUSU5HIEFUOiA3NzowCiBQQVVTRVMgQVQ6
IDc5OjgKLSAgICAgNzUgICAgICAgIHsKLSAgICAgNzYgICAgICAgICAgICB2YXIgeDsKLSAgICAg
NzcgICAgICAgIH0KLSAtPiAgNzggICAgIyAgICBzZXQgc2V0dGVyMSh4KSB7Ci0gPT4gIDc5ICAg
ICAgICAgICAgfHZhciBzOworICAgICA3NCAgICAgICAgbWV0aG9kMSgpIHsKKyAgICAgNzUgICAg
ICAgICAgICB2YXIgeDsKKyAgICAgNzYgICAgICAgIH0KKyAtPiAgNzcgICAgIyAgICBtZXRob2Qy
KCkKKyAgICAgNzggICAgICAgIHsKKyA9PiAgNzkgICAgICAgICAgICB8dmFyIHg7CiAgICAgIDgw
ICAgICAgICB9Ci0gICAgIDgxICAgICAgICBzZXQgc2V0dGVyMih4KQotICAgICA4MiAgICAgICAg
eworICAgICA4MSAgICAgICAgZ2V0IGdldHRlcjEoKSB7CisgICAgIDgyICAgICAgICAgICAgdmFy
IHg7CiAKIElOU0VSVElORyBBVDogNzk6OQogUEFVU0VTIEFUOiA4MDo0Ci0gICAgIDc2ICAgICAg
ICAgICAgdmFyIHg7Ci0gICAgIDc3ICAgICAgICB9Ci0gICAgIDc4ICAgICAgICBzZXQgc2V0dGVy
MSh4KSB7Ci0gLT4gIDc5ICAgICAgICAgICAgdiNhciBzOworICAgICA3NiAgICAgICAgfQorICAg
ICA3NyAgICAgICAgbWV0aG9kMigpCisgICAgIDc4ICAgICAgICB7CisgLT4gIDc5ICAgICAgICAg
ICAgdiNhciB4OwogID0+ICA4MCAgICAgICAgfH0KLSAgICAgODEgICAgICAgIHNldCBzZXR0ZXIy
KHgpCi0gICAgIDgyICAgICAgICB7Ci0gICAgIDgzICAgICAgICAgICAgdmFyIHM7CisgICAgIDgx
ICAgICAgICBnZXQgZ2V0dGVyMSgpIHsKKyAgICAgODIgICAgICAgICAgICB2YXIgeDsKKyAgICAg
ODMgICAgICAgIH0KIAogSU5TRVJUSU5HIEFUOiA4MTowCi1QQVVTRVMgQVQ6IDgzOjgKLSAgICAg
NzggICAgICAgIHNldCBzZXR0ZXIxKHgpIHsKLSAgICAgNzkgICAgICAgICAgICB2YXIgczsKK1BB
VVNFUyBBVDogODI6OAorICAgICA3OCAgICAgICAgeworICAgICA3OSAgICAgICAgICAgIHZhciB4
OwogICAgICA4MCAgICAgICAgfQotIC0+ICA4MSAgICAjICAgIHNldCBzZXR0ZXIyKHgpCi0gICAg
IDgyICAgICAgICB7Ci0gPT4gIDgzICAgICAgICAgICAgfHZhciBzOwotICAgICA4NCAgICAgICAg
fQotICAgICA4NSAgICB9Ci0gICAgIDg2ICAgIAorIC0+ICA4MSAgICAjICAgIGdldCBnZXR0ZXIx
KCkgeworID0+ICA4MiAgICAgICAgICAgIHx2YXIgeDsKKyAgICAgODMgICAgICAgIH0KKyAgICAg
ODQgICAgICAgIGdldCBnZXR0ZXIyKCkKKyAgICAgODUgICAgICAgIHsKIAotSU5TRVJUSU5HIEFU
OiA4Mzo5Ci1QQVVTRVMgQVQ6IDg0OjQKK0lOU0VSVElORyBBVDogODI6OQorUEFVU0VTIEFUOiA4
Mzo0CisgICAgIDc5ICAgICAgICAgICAgdmFyIHg7CiAgICAgIDgwICAgICAgICB9Ci0gICAgIDgx
ICAgICAgICBzZXQgc2V0dGVyMih4KQotICAgICA4MiAgICAgICAgewotIC0+ICA4MyAgICAgICAg
ICAgIHYjYXIgczsKLSA9PiAgODQgICAgICAgIHx9Ci0gICAgIDg1ICAgIH0KLSAgICAgODYgICAg
Ci0gICAgIDg3ICAgIHggPT4geDsKKyAgICAgODEgICAgICAgIGdldCBnZXR0ZXIxKCkgeworIC0+
ICA4MiAgICAgICAgICAgIHYjYXIgeDsKKyA9PiAgODMgICAgICAgIHx9CisgICAgIDg0ICAgICAg
ICBnZXQgZ2V0dGVyMigpCisgICAgIDg1ICAgICAgICB7CisgICAgIDg2ICAgICAgICAgICAgdmFy
IHg7CiAKLUlOU0VSVElORyBBVDogODc6MQotUEFVU0VTIEFUOiA4Nzo1Ci0gICAgIDg0ICAgICAg
ICB9Ci0gICAgIDg1ICAgIH0KLSAgICAgODYgICAgCi0tPT4gIDg3ICAgIHgjID0+IHx4OwotICAg
ICA4OCAgICAoKSA9PiAxOwotICAgICA4OSAgICAoeCkgPT4geDsKLSAgICAgOTAgICAgKHgpID0+
IHsgeCB9OworSU5TRVJUSU5HIEFUOiA4NDowCitQQVVTRVMgQVQ6IDg2OjgKKyAgICAgODEgICAg
ICAgIGdldCBnZXR0ZXIxKCkgeworICAgICA4MiAgICAgICAgICAgIHZhciB4OworICAgICA4MyAg
ICAgICAgfQorIC0+ICA4NCAgICAjICAgIGdldCBnZXR0ZXIyKCkKKyAgICAgODUgICAgICAgIHsK
KyA9PiAgODYgICAgICAgICAgICB8dmFyIHg7CisgICAgIDg3ICAgICAgICB9CisgICAgIDg4ICAg
ICAgICBzZXQgc2V0dGVyMSh4KSB7CisgICAgIDg5ICAgICAgICAgICAgdmFyIHM7CiAKLUlOU0VS
VElORyBBVDogODc6NgotUEFVU0VTIEFUOiA4ODowCi0gICAgIDg0ICAgICAgICB9Ci0gICAgIDg1
ICAgIH0KLSAgICAgODYgICAgCi0gLT4gIDg3ICAgIHggPT4geCM7Ci0gPT4gIDg4ICAgIHwoKSA9
PiAxOwotICAgICA4OSAgICAoeCkgPT4geDsKLSAgICAgOTAgICAgKHgpID0+IHsgeCB9OwotICAg
ICA5MSAgICAoeCkgPT4geworSU5TRVJUSU5HIEFUOiA4Njo5CitQQVVTRVMgQVQ6IDg3OjQKKyAg
ICAgODMgICAgICAgIH0KKyAgICAgODQgICAgICAgIGdldCBnZXR0ZXIyKCkKKyAgICAgODUgICAg
ICAgIHsKKyAtPiAgODYgICAgICAgICAgICB2I2FyIHg7CisgPT4gIDg3ICAgICAgICB8fQorICAg
ICA4OCAgICAgICAgc2V0IHNldHRlcjEoeCkgeworICAgICA4OSAgICAgICAgICAgIHZhciBzOwor
ICAgICA5MCAgICAgICAgfQogCi1JTlNFUlRJTkcgQVQ6IDg4OjEKLVBBVVNFUyBBVDogODg6Ngot
ICAgICA4NSAgICB9Ci0gICAgIDg2ICAgIAotICAgICA4NyAgICB4ID0+IHg7Ci0tPT4gIDg4ICAg
ICgjKSA9PiB8MTsKLSAgICAgODkgICAgKHgpID0+IHg7Ci0gICAgIDkwICAgICh4KSA9PiB7IHgg
fTsKLSAgICAgOTEgICAgKHgpID0+IHsKK0lOU0VSVElORyBBVDogODg6MAorUEFVU0VTIEFUOiA4
OTo4CisgICAgIDg1ICAgICAgICB7CisgICAgIDg2ICAgICAgICAgICAgdmFyIHg7CisgICAgIDg3
ICAgICAgICB9CisgLT4gIDg4ICAgICMgICAgc2V0IHNldHRlcjEoeCkgeworID0+ICA4OSAgICAg
ICAgICAgIHx2YXIgczsKKyAgICAgOTAgICAgICAgIH0KKyAgICAgOTEgICAgICAgIHNldCBzZXR0
ZXIyKHgpCisgICAgIDkyICAgICAgICB7CiAKLUlOU0VSVElORyBBVDogODg6NwotUEFVU0VTIEFU
OiA4OTowCi0gICAgIDg1ICAgIH0KLSAgICAgODYgICAgCi0gICAgIDg3ICAgIHggPT4geDsKLSAt
PiAgODggICAgKCkgPT4gMSM7Ci0gPT4gIDg5ICAgIHwoeCkgPT4geDsKLSAgICAgOTAgICAgKHgp
ID0+IHsgeCB9OwotICAgICA5MSAgICAoeCkgPT4gewotICAgICA5MiAgICAgICAgeAotCi1JTlNF
UlRJTkcgQVQ6IDg5OjEKLVBBVVNFUyBBVDogODk6NwotICAgICA4NiAgICAKLSAgICAgODcgICAg
eCA9PiB4OwotICAgICA4OCAgICAoKSA9PiAxOwotLT0+ICA4OSAgICAoI3gpID0+IHx4OwotICAg
ICA5MCAgICAoeCkgPT4geyB4IH07Ci0gICAgIDkxICAgICh4KSA9PiB7Ci0gICAgIDkyICAgICAg
ICB4Ci0KLUlOU0VSVElORyBBVDogODk6OAotUEFVU0VTIEFUOiA5ODowCi0gICAgIDg2ICAgIAot
ICAgICA4NyAgICB4ID0+IHg7Ci0gICAgIDg4ICAgICgpID0+IDE7Ci0gLT4gIDg5ICAgICh4KSA9
PiB4IzsKLSAgICAgOTAgICAgKHgpID0+IHsgeCB9OwotICAgICA5MSAgICAoeCkgPT4gewotICAg
ICA5MiAgICAgICAgeAotICAgICA5MyAgICB9OwotICAgICA5NCAgICAoKSA9PiB7Ci0gICAgIDk1
ICAgICAgICB2YXIgeDsKLSAgICAgOTYgICAgfTsKLSAgICAgOTcgICAgCi0gPT4gIDk4ICAgIHx2
YXIgZk9iaiA9IHsKLSAgICAgOTkgICAgICAgIGYxOiBmdW5jdGlvbigpIHsKLSAgICAxMDAgICAg
ICAgICAgICB2YXIgeDsKLSAgICAxMDEgICAgICAgIH0sCi0KLUlOU0VSVElORyBBVDogOTA6MAot
UEFVU0VTIEFUOiA5MDowCi0gICAgIDg3ICAgIHggPT4geDsKLSAgICAgODggICAgKCkgPT4gMTsK
LSAgICAgODkgICAgKHgpID0+IHg7Ci0tPT4gIDkwICAgIHwoeCkgPT4geyB4IH07Ci0gICAgIDkx
ICAgICh4KSA9PiB7Ci0gICAgIDkyICAgICAgICB4Ci0gICAgIDkzICAgIH07Ci0KLUlOU0VSVElO
RyBBVDogOTA6MQotUEFVU0VTIEFUOiA5MDo5Ci0gICAgIDg3ICAgIHggPT4geDsKLSAgICAgODgg
ICAgKCkgPT4gMTsKLSAgICAgODkgICAgKHgpID0+IHg7Ci0tPT4gIDkwICAgICgjeCkgPT4geyB8
eCB9OwotICAgICA5MSAgICAoeCkgPT4gewotICAgICA5MiAgICAgICAgeAotICAgICA5MyAgICB9
OwotCi1JTlNFUlRJTkcgQVQ6IDkwOjEwCi1QQVVTRVMgQVQ6IDkwOjExCi0gICAgIDg3ICAgIHgg
PT4geDsKLSAgICAgODggICAgKCkgPT4gMTsKLSAgICAgODkgICAgKHgpID0+IHg7Ci0tPT4gIDkw
ICAgICh4KSA9PiB7IHgjIHx9OwotICAgICA5MSAgICAoeCkgPT4gewotICAgICA5MiAgICAgICAg
eAotICAgICA5MyAgICB9OworSU5TRVJUSU5HIEFUOiA4OTo5CitQQVVTRVMgQVQ6IDkwOjQKKyAg
ICAgODYgICAgICAgICAgICB2YXIgeDsKKyAgICAgODcgICAgICAgIH0KKyAgICAgODggICAgICAg
IHNldCBzZXR0ZXIxKHgpIHsKKyAtPiAgODkgICAgICAgICAgICB2I2FyIHM7CisgPT4gIDkwICAg
ICAgICB8fQorICAgICA5MSAgICAgICAgc2V0IHNldHRlcjIoeCkKKyAgICAgOTIgICAgICAgIHsK
KyAgICAgOTMgICAgICAgICAgICB2YXIgczsKIAogSU5TRVJUSU5HIEFUOiA5MTowCi1QQVVTRVMg
QVQ6IDkxOjAKLSAgICAgODggICAgKCkgPT4gMTsKLSAgICAgODkgICAgKHgpID0+IHg7Ci0gICAg
IDkwICAgICh4KSA9PiB7IHggfTsKLS09PiAgOTEgICAgfCh4KSA9PiB7Ci0gICAgIDkyICAgICAg
ICB4Ci0gICAgIDkzICAgIH07Ci0gICAgIDk0ICAgICgpID0+IHsKK1BBVVNFUyBBVDogOTM6OAor
ICAgICA4OCAgICAgICAgc2V0IHNldHRlcjEoeCkgeworICAgICA4OSAgICAgICAgICAgIHZhciBz
OworICAgICA5MCAgICAgICAgfQorIC0+ICA5MSAgICAjICAgIHNldCBzZXR0ZXIyKHgpCisgICAg
IDkyICAgICAgICB7CisgPT4gIDkzICAgICAgICAgICAgfHZhciBzOworICAgICA5NCAgICAgICAg
fQorICAgICA5NSAgICB9CisgICAgIDk2ICAgIAogCi1JTlNFUlRJTkcgQVQ6IDkxOjEKLVBBVVNF
UyBBVDogOTI6NAotICAgICA4OCAgICAoKSA9PiAxOwotICAgICA4OSAgICAoeCkgPT4geDsKLSAg
ICAgOTAgICAgKHgpID0+IHsgeCB9OwotIC0+ICA5MSAgICAoI3gpID0+IHsKLSA9PiAgOTIgICAg
ICAgIHx4Ci0gICAgIDkzICAgIH07Ci0gICAgIDk0ICAgICgpID0+IHsKLSAgICAgOTUgICAgICAg
IHZhciB4OworSU5TRVJUSU5HIEFUOiA5Mzo5CitQQVVTRVMgQVQ6IDk0OjQKKyAgICAgOTAgICAg
ICAgIH0KKyAgICAgOTEgICAgICAgIHNldCBzZXR0ZXIyKHgpCisgICAgIDkyICAgICAgICB7Cisg
LT4gIDkzICAgICAgICAgICAgdiNhciBzOworID0+ICA5NCAgICAgICAgfH0KKyAgICAgOTUgICAg
fQorICAgICA5NiAgICAKKyAgICAgOTcgICAgeCA9PiB4OwogCi1JTlNFUlRJTkcgQVQ6IDkyOjUK
LVBBVVNFUyBBVDogOTM6MAotICAgICA4OSAgICAoeCkgPT4geDsKLSAgICAgOTAgICAgKHgpID0+
IHsgeCB9OwotICAgICA5MSAgICAoeCkgPT4gewotIC0+ICA5MiAgICAgICAgeCMKLSA9PiAgOTMg
ICAgfH07Ci0gICAgIDk0ICAgICgpID0+IHsKLSAgICAgOTUgICAgICAgIHZhciB4OwotICAgICA5
NiAgICB9OworSU5TRVJUSU5HIEFUOiA5NzoxCitQQVVTRVMgQVQ6IDk3OjUKKyAgICAgOTQgICAg
ICAgIH0KKyAgICAgOTUgICAgfQorICAgICA5NiAgICAKKy09PiAgOTcgICAgeCMgPT4gfHg7Cisg
ICAgIDk4ICAgICgpID0+IDE7CisgICAgIDk5ICAgICh4KSA9PiB4OworICAgIDEwMCAgICAoeCkg
PT4geyB4IH07CiAKLUlOU0VSVElORyBBVDogOTQ6MAotUEFVU0VTIEFUOiA5NDowCi0gICAgIDkx
ICAgICh4KSA9PiB7Ci0gICAgIDkyICAgICAgICB4Ci0gICAgIDkzICAgIH07Ci0tPT4gIDk0ICAg
IHwoKSA9PiB7Ci0gICAgIDk1ICAgICAgICB2YXIgeDsKLSAgICAgOTYgICAgfTsKLSAgICAgOTcg
ICAgCitJTlNFUlRJTkcgQVQ6IDk3OjYKK1BBVVNFUyBBVDogOTg6MAorICAgICA5NCAgICAgICAg
fQorICAgICA5NSAgICB9CisgICAgIDk2ICAgIAorIC0+ICA5NyAgICB4ID0+IHgjOworID0+ICA5
OCAgICB8KCkgPT4gMTsKKyAgICAgOTkgICAgKHgpID0+IHg7CisgICAgMTAwICAgICh4KSA9PiB7
IHggfTsKKyAgICAxMDEgICAgKHgpID0+IHsKIAotSU5TRVJUSU5HIEFUOiA5NDoxCi1QQVVTRVMg
QVQ6IDk1OjQKLSAgICAgOTEgICAgKHgpID0+IHsKLSAgICAgOTIgICAgICAgIHgKLSAgICAgOTMg
ICAgfTsKLSAtPiAgOTQgICAgKCMpID0+IHsKLSA9PiAgOTUgICAgICAgIHx2YXIgeDsKLSAgICAg
OTYgICAgfTsKLSAgICAgOTcgICAgCi0gICAgIDk4ICAgIHZhciBmT2JqID0geworSU5TRVJUSU5H
IEFUOiA5ODoxCitQQVVTRVMgQVQ6IDk4OjYKKyAgICAgOTUgICAgfQorICAgICA5NiAgICAKKyAg
ICAgOTcgICAgeCA9PiB4OworLT0+ICA5OCAgICAoIykgPT4gfDE7CisgICAgIDk5ICAgICh4KSA9
PiB4OworICAgIDEwMCAgICAoeCkgPT4geyB4IH07CisgICAgMTAxICAgICh4KSA9PiB7CiAKLUlO
U0VSVElORyBBVDogOTU6NQotUEFVU0VTIEFUOiA5NjowCi0gICAgIDkyICAgICAgICB4Ci0gICAg
IDkzICAgIH07Ci0gICAgIDk0ICAgICgpID0+IHsKLSAtPiAgOTUgICAgICAgIHYjYXIgeDsKLSA9
PiAgOTYgICAgfH07Ci0gICAgIDk3ICAgIAotICAgICA5OCAgICB2YXIgZk9iaiA9IHsKLSAgICAg
OTkgICAgICAgIGYxOiBmdW5jdGlvbigpIHsKK0lOU0VSVElORyBBVDogOTg6NworUEFVU0VTIEFU
OiA5OTowCisgICAgIDk1ICAgIH0KKyAgICAgOTYgICAgCisgICAgIDk3ICAgIHggPT4geDsKKyAt
PiAgOTggICAgKCkgPT4gMSM7CisgPT4gIDk5ICAgIHwoeCkgPT4geDsKKyAgICAxMDAgICAgKHgp
ID0+IHsgeCB9OworICAgIDEwMSAgICAoeCkgPT4geworICAgIDEwMiAgICAgICAgeAogCi1JTlNF
UlRJTkcgQVQ6IDk5OjAKLVBBVVNFUyBBVDogMTAwOjgKLSAgICAgOTYgICAgfTsKLSAgICAgOTcg
ICAgCi0gICAgIDk4ICAgIHZhciBmT2JqID0gewotIC0+ICA5OSAgICAjICAgIGYxOiBmdW5jdGlv
bigpIHsKLSA9PiAxMDAgICAgICAgICAgICB8dmFyIHg7Ci0gICAgMTAxICAgICAgICB9LAotICAg
IDEwMiAgICAgICAgZjI6IGZ1bmN0aW9uKCkKLSAgICAxMDMgICAgICAgIHsKK0lOU0VSVElORyBB
VDogOTk6MQorUEFVU0VTIEFUOiA5OTo3CisgICAgIDk2ICAgIAorICAgICA5NyAgICB4ID0+IHg7
CisgICAgIDk4ICAgICgpID0+IDE7CistPT4gIDk5ICAgICgjeCkgPT4gfHg7CisgICAgMTAwICAg
ICh4KSA9PiB7IHggfTsKKyAgICAxMDEgICAgKHgpID0+IHsKKyAgICAxMDIgICAgICAgIHgKIAot
SU5TRVJUSU5HIEFUOiAxMDA6OQotUEFVU0VTIEFUOiAxMDE6NAotICAgICA5NyAgICAKLSAgICAg
OTggICAgdmFyIGZPYmogPSB7Ci0gICAgIDk5ICAgICAgICBmMTogZnVuY3Rpb24oKSB7Ci0gLT4g
MTAwICAgICAgICAgICAgdiNhciB4OwotID0+IDEwMSAgICAgICAgfH0sCi0gICAgMTAyICAgICAg
ICBmMjogZnVuY3Rpb24oKQotICAgIDEwMyAgICAgICAgewotICAgIDEwNCAgICAgICAgICAgIHZh
ciB4OworSU5TRVJUSU5HIEFUOiA5OTo4CitQQVVTRVMgQVQ6IDEwODowCisgICAgIDk2ICAgIAor
ICAgICA5NyAgICB4ID0+IHg7CisgICAgIDk4ICAgICgpID0+IDE7CisgLT4gIDk5ICAgICh4KSA9
PiB4IzsKKyAgICAxMDAgICAgKHgpID0+IHsgeCB9OworICAgIDEwMSAgICAoeCkgPT4geworICAg
IDEwMiAgICAgICAgeAorICAgIDEwMyAgICB9OworICAgIDEwNCAgICAoKSA9PiB7CisgICAgMTA1
ICAgICAgICB2YXIgeDsKKyAgICAxMDYgICAgfTsKKyAgICAxMDcgICAgCisgPT4gMTA4ICAgIHx2
YXIgZk9iaiA9IHsKKyAgICAxMDkgICAgICAgIGYxOiBmdW5jdGlvbigpIHsKKyAgICAxMTAgICAg
ICAgICAgICB2YXIgeDsKKyAgICAxMTEgICAgICAgIH0sCiAKLUlOU0VSVElORyBBVDogMTAyOjAK
LVBBVVNFUyBBVDogMTA0OjgKLSAgICAgOTkgICAgICAgIGYxOiBmdW5jdGlvbigpIHsKLSAgICAx
MDAgICAgICAgICAgICB2YXIgeDsKLSAgICAxMDEgICAgICAgIH0sCi0gLT4gMTAyICAgICMgICAg
ZjI6IGZ1bmN0aW9uKCkKLSAgICAxMDMgICAgICAgIHsKLSA9PiAxMDQgICAgICAgICAgICB8dmFy
IHg7Ci0gICAgMTA1ICAgICAgICB9LAotICAgIDEwNiAgICAgICAgZjM6ICgpID0+IHsKLSAgICAx
MDcgICAgICAgICAgICB2YXIgeDsKK0lOU0VSVElORyBBVDogMTAwOjAKK1BBVVNFUyBBVDogMTAw
OjAKKyAgICAgOTcgICAgeCA9PiB4OworICAgICA5OCAgICAoKSA9PiAxOworICAgICA5OSAgICAo
eCkgPT4geDsKKy09PiAxMDAgICAgfCh4KSA9PiB7IHggfTsKKyAgICAxMDEgICAgKHgpID0+IHsK
KyAgICAxMDIgICAgICAgIHgKKyAgICAxMDMgICAgfTsKIAotSU5TRVJUSU5HIEFUOiAxMDQ6OQor
SU5TRVJUSU5HIEFUOiAxMDA6MQorUEFVU0VTIEFUOiAxMDA6OQorICAgICA5NyAgICB4ID0+IHg7
CisgICAgIDk4ICAgICgpID0+IDE7CisgICAgIDk5ICAgICh4KSA9PiB4OworLT0+IDEwMCAgICAo
I3gpID0+IHsgfHggfTsKKyAgICAxMDEgICAgKHgpID0+IHsKKyAgICAxMDIgICAgICAgIHgKKyAg
ICAxMDMgICAgfTsKKworSU5TRVJUSU5HIEFUOiAxMDA6MTAKK1BBVVNFUyBBVDogMTAwOjExCisg
ICAgIDk3ICAgIHggPT4geDsKKyAgICAgOTggICAgKCkgPT4gMTsKKyAgICAgOTkgICAgKHgpID0+
IHg7CistPT4gMTAwICAgICh4KSA9PiB7IHgjIHx9OworICAgIDEwMSAgICAoeCkgPT4geworICAg
IDEwMiAgICAgICAgeAorICAgIDEwMyAgICB9OworCitJTlNFUlRJTkcgQVQ6IDEwMTowCitQQVVT
RVMgQVQ6IDEwMTowCisgICAgIDk4ICAgICgpID0+IDE7CisgICAgIDk5ICAgICh4KSA9PiB4Owor
ICAgIDEwMCAgICAoeCkgPT4geyB4IH07CistPT4gMTAxICAgIHwoeCkgPT4geworICAgIDEwMiAg
ICAgICAgeAorICAgIDEwMyAgICB9OworICAgIDEwNCAgICAoKSA9PiB7CisKK0lOU0VSVElORyBB
VDogMTAxOjEKK1BBVVNFUyBBVDogMTAyOjQKKyAgICAgOTggICAgKCkgPT4gMTsKKyAgICAgOTkg
ICAgKHgpID0+IHg7CisgICAgMTAwICAgICh4KSA9PiB7IHggfTsKKyAtPiAxMDEgICAgKCN4KSA9
PiB7CisgPT4gMTAyICAgICAgICB8eAorICAgIDEwMyAgICB9OworICAgIDEwNCAgICAoKSA9PiB7
CisgICAgMTA1ICAgICAgICB2YXIgeDsKKworSU5TRVJUSU5HIEFUOiAxMDI6NQorUEFVU0VTIEFU
OiAxMDM6MAorICAgICA5OSAgICAoeCkgPT4geDsKKyAgICAxMDAgICAgKHgpID0+IHsgeCB9Owor
ICAgIDEwMSAgICAoeCkgPT4geworIC0+IDEwMiAgICAgICAgeCMKKyA9PiAxMDMgICAgfH07Cisg
ICAgMTA0ICAgICgpID0+IHsKKyAgICAxMDUgICAgICAgIHZhciB4OworICAgIDEwNiAgICB9Owor
CitJTlNFUlRJTkcgQVQ6IDEwNDowCitQQVVTRVMgQVQ6IDEwNDowCisgICAgMTAxICAgICh4KSA9
PiB7CisgICAgMTAyICAgICAgICB4CisgICAgMTAzICAgIH07CistPT4gMTA0ICAgIHwoKSA9PiB7
CisgICAgMTA1ICAgICAgICB2YXIgeDsKKyAgICAxMDYgICAgfTsKKyAgICAxMDcgICAgCisKK0lO
U0VSVElORyBBVDogMTA0OjEKIFBBVVNFUyBBVDogMTA1OjQKLSAgICAxMDEgICAgICAgIH0sCi0g
ICAgMTAyICAgICAgICBmMjogZnVuY3Rpb24oKQotICAgIDEwMyAgICAgICAgewotIC0+IDEwNCAg
ICAgICAgICAgIHYjYXIgeDsKLSA9PiAxMDUgICAgICAgIHx9LAotICAgIDEwNiAgICAgICAgZjM6
ICgpID0+IHsKLSAgICAxMDcgICAgICAgICAgICB2YXIgeDsKLSAgICAxMDggICAgICAgIH0sCisg
ICAgMTAxICAgICh4KSA9PiB7CisgICAgMTAyICAgICAgICB4CisgICAgMTAzICAgIH07CisgLT4g
MTA0ICAgICgjKSA9PiB7CisgPT4gMTA1ICAgICAgICB8dmFyIHg7CisgICAgMTA2ICAgIH07Cisg
ICAgMTA3ICAgIAorICAgIDEwOCAgICB2YXIgZk9iaiA9IHsKIAotSU5TRVJUSU5HIEFUOiAxMDY6
MAotUEFVU0VTIEFUOiAxMDc6OAotICAgIDEwMyAgICAgICAgewotICAgIDEwNCAgICAgICAgICAg
IHZhciB4OwotICAgIDEwNSAgICAgICAgfSwKLSAtPiAxMDYgICAgIyAgICBmMzogKCkgPT4gewot
ID0+IDEwNyAgICAgICAgICAgIHx2YXIgeDsKLSAgICAxMDggICAgICAgIH0sCi0gICAgMTA5ICAg
ICAgICBmNDogKCkgPT4KLSAgICAxMTAgICAgICAgIHsKLQotSU5TRVJUSU5HIEFUOiAxMDc6OQot
UEFVU0VTIEFUOiAxMDg6NAotICAgIDEwNCAgICAgICAgICAgIHZhciB4OwotICAgIDEwNSAgICAg
ICAgfSwKLSAgICAxMDYgICAgICAgIGYzOiAoKSA9PiB7Ci0gLT4gMTA3ICAgICAgICAgICAgdiNh
ciB4OwotID0+IDEwOCAgICAgICAgfH0sCi0gICAgMTA5ICAgICAgICBmNDogKCkgPT4KLSAgICAx
MTAgICAgICAgIHsKLSAgICAxMTEgICAgICAgICAgICB2YXIgeDsKK0lOU0VSVElORyBBVDogMTA1
OjUKK1BBVVNFUyBBVDogMTA2OjAKKyAgICAxMDIgICAgICAgIHgKKyAgICAxMDMgICAgfTsKKyAg
ICAxMDQgICAgKCkgPT4geworIC0+IDEwNSAgICAgICAgdiNhciB4OworID0+IDEwNiAgICB8fTsK
KyAgICAxMDcgICAgCisgICAgMTA4ICAgIHZhciBmT2JqID0geworICAgIDEwOSAgICAgICAgZjE6
IGZ1bmN0aW9uKCkgewogCiBJTlNFUlRJTkcgQVQ6IDEwOTowCi1QQVVTRVMgQVQ6IDExMTo4Ci0g
ICAgMTA2ICAgICAgICBmMzogKCkgPT4gewotICAgIDEwNyAgICAgICAgICAgIHZhciB4OwotICAg
IDEwOCAgICAgICAgfSwKLSAtPiAxMDkgICAgIyAgICBmNDogKCkgPT4KLSAgICAxMTAgICAgICAg
IHsKLSA9PiAxMTEgICAgICAgICAgICB8dmFyIHg7Ci0gICAgMTEyICAgICAgICB9ICAgCi0gICAg
MTEzICAgIH07Ci0gICAgMTE0ICAgIAorUEFVU0VTIEFUOiAxMTA6OAorICAgIDEwNiAgICB9Owor
ICAgIDEwNyAgICAKKyAgICAxMDggICAgdmFyIGZPYmogPSB7CisgLT4gMTA5ICAgICMgICAgZjE6
IGZ1bmN0aW9uKCkgeworID0+IDExMCAgICAgICAgICAgIHx2YXIgeDsKKyAgICAxMTEgICAgICAg
IH0sCisgICAgMTEyICAgICAgICBmMjogZnVuY3Rpb24oKQorICAgIDExMyAgICAgICAgewogCi1J
TlNFUlRJTkcgQVQ6IDExMTo5Ci1QQVVTRVMgQVQ6IDExMjo0Ci0gICAgMTA4ICAgICAgICB9LAot
ICAgIDEwOSAgICAgICAgZjQ6ICgpID0+Ci0gICAgMTEwICAgICAgICB7Ci0gLT4gMTExICAgICAg
ICAgICAgdiNhciB4OwotID0+IDExMiAgICAgICAgfH0gICAKLSAgICAxMTMgICAgfTsKLSAgICAx
MTQgICAgCitJTlNFUlRJTkcgQVQ6IDExMDo5CitQQVVTRVMgQVQ6IDExMTo0CisgICAgMTA3ICAg
IAorICAgIDEwOCAgICB2YXIgZk9iaiA9IHsKKyAgICAxMDkgICAgICAgIGYxOiBmdW5jdGlvbigp
IHsKKyAtPiAxMTAgICAgICAgICAgICB2I2FyIHg7CisgPT4gMTExICAgICAgICB8fSwKKyAgICAx
MTIgICAgICAgIGYyOiBmdW5jdGlvbigpCisgICAgMTEzICAgICAgICB7CisgICAgMTE0ICAgICAg
ICAgICAgdmFyIHg7CisKK0lOU0VSVElORyBBVDogMTEyOjAKK1BBVVNFUyBBVDogMTE0OjgKKyAg
ICAxMDkgICAgICAgIGYxOiBmdW5jdGlvbigpIHsKKyAgICAxMTAgICAgICAgICAgICB2YXIgeDsK
KyAgICAxMTEgICAgICAgIH0sCisgLT4gMTEyICAgICMgICAgZjI6IGZ1bmN0aW9uKCkKKyAgICAx
MTMgICAgICAgIHsKKyA9PiAxMTQgICAgICAgICAgICB8dmFyIHg7CisgICAgMTE1ICAgICAgICB9
LAorICAgIDExNiAgICAgICAgZjM6ICgpID0+IHsKKyAgICAxMTcgICAgICAgICAgICB2YXIgeDsK
KworSU5TRVJUSU5HIEFUOiAxMTQ6OQorUEFVU0VTIEFUOiAxMTU6NAorICAgIDExMSAgICAgICAg
fSwKKyAgICAxMTIgICAgICAgIGYyOiBmdW5jdGlvbigpCisgICAgMTEzICAgICAgICB7CisgLT4g
MTE0ICAgICAgICAgICAgdiNhciB4OworID0+IDExNSAgICAgICAgfH0sCisgICAgMTE2ICAgICAg
ICBmMzogKCkgPT4geworICAgIDExNyAgICAgICAgICAgIHZhciB4OworICAgIDExOCAgICAgICAg
fSwKKworSU5TRVJUSU5HIEFUOiAxMTY6MAorUEFVU0VTIEFUOiAxMTc6OAorICAgIDExMyAgICAg
ICAgeworICAgIDExNCAgICAgICAgICAgIHZhciB4OworICAgIDExNSAgICAgICAgfSwKKyAtPiAx
MTYgICAgIyAgICBmMzogKCkgPT4geworID0+IDExNyAgICAgICAgICAgIHx2YXIgeDsKKyAgICAx
MTggICAgICAgIH0sCisgICAgMTE5ICAgICAgICBmNDogKCkgPT4KKyAgICAxMjAgICAgICAgIHsK
KworSU5TRVJUSU5HIEFUOiAxMTc6OQorUEFVU0VTIEFUOiAxMTg6NAorICAgIDExNCAgICAgICAg
ICAgIHZhciB4OworICAgIDExNSAgICAgICAgfSwKKyAgICAxMTYgICAgICAgIGYzOiAoKSA9PiB7
CisgLT4gMTE3ICAgICAgICAgICAgdiNhciB4OworID0+IDExOCAgICAgICAgfH0sCisgICAgMTE5
ICAgICAgICBmNDogKCkgPT4KKyAgICAxMjAgICAgICAgIHsKKyAgICAxMjEgICAgICAgICAgICB2
YXIgeDsKKworSU5TRVJUSU5HIEFUOiAxMTk6MAorUEFVU0VTIEFUOiAxMjE6OAorICAgIDExNiAg
ICAgICAgZjM6ICgpID0+IHsKKyAgICAxMTcgICAgICAgICAgICB2YXIgeDsKKyAgICAxMTggICAg
ICAgIH0sCisgLT4gMTE5ICAgICMgICAgZjQ6ICgpID0+CisgICAgMTIwICAgICAgICB7CisgPT4g
MTIxICAgICAgICAgICAgfHZhciB4OworICAgIDEyMiAgICAgICAgfSAgIAorICAgIDEyMyAgICB9
OworICAgIDEyNCAgICAKKworSU5TRVJUSU5HIEFUOiAxMjE6OQorUEFVU0VTIEFUOiAxMjI6NAor
ICAgIDExOCAgICAgICAgfSwKKyAgICAxMTkgICAgICAgIGY0OiAoKSA9PgorICAgIDEyMCAgICAg
ICAgeworIC0+IDEyMSAgICAgICAgICAgIHYjYXIgeDsKKyA9PiAxMjIgICAgICAgIHx9ICAgCisg
ICAgMTIzICAgIH07CisgICAgMTI0ICAgIAogCiAKIC0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBEZWJ1
Z2dlci5yZXNvbHZlZEJyZWFrcG9pbnQuZHVtcEFsbExvY2F0aW9ucy5Vbmljb2RlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvYnJlYWtwb2ludHMvcmVzb2x2ZWQt
ZHVtcC1lYWNoLWxpbmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVn
Z2VyL2JyZWFrcG9pbnRzL3Jlc29sdmVkLWR1bXAtZWFjaC1saW5lLWV4cGVjdGVkLnR4dAppbmRl
eCBmMDBmMjk3MGIwY2I5MmFkODViOWQ4OWY4NzMwZGY5NzU2ZTBiMzIyLi41ZWJmMGJhODQyZGUw
ZDIyMWVkODBiNDFlNzJhZDhjNDRmMDJmNjdlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZGVidWdnZXIvYnJlYWtwb2ludHMvcmVzb2x2ZWQtZHVtcC1lYWNoLWxpbmUtZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50cy9y
ZXNvbHZlZC1kdW1wLWVhY2gtbGluZS1leHBlY3RlZC50eHQKQEAgLTI0ODgsMTUgKzI0ODgsMTQg
QEAgUEFVU0VTIEFUOiAxNjQ6MAogCiAKIElOU0VSVElORyBBVDogMTY1OjAKLVBBVVNFUyBBVDog
MTY2OjAKK1BBVVNFUyBBVDogMTY1OjQKICAgICAxNjIgICAgfQogICAgIDE2MyAgICAKICAgICAx
NjQgICAgdmFyIHYxID0gMSwKLSAtPiAxNjUgICAgIyAgICB2MiA9IDE7Ci0gPT4gMTY2ICAgIHxs
ZXQgbDEgPSAyLAorLT0+IDE2NSAgICAjICAgIHx2MiA9IDE7CisgICAgMTY2ICAgIGxldCBsMSA9
IDIsCiAgICAgMTY3ICAgICAgICBsMiA9IDI7CiAgICAgMTY4ICAgIGNvbnN0IGMxID0gMywKLSAg
ICAxNjkgICAgICAgIGMyID0gMzsKIAogCiBJTlNFUlRJTkcgQVQ6IDE2NjowCkBAIC0yNTExLDE1
ICsyNTEwLDE0IEBAIFBBVVNFUyBBVDogMTY2OjAKIAogCiBJTlNFUlRJTkcgQVQ6IDE2NzowCi1Q
QVVTRVMgQVQ6IDE2ODowCitQQVVTRVMgQVQ6IDE2Nzo0CiAgICAgMTY0ICAgIHZhciB2MSA9IDEs
CiAgICAgMTY1ICAgICAgICB2MiA9IDE7CiAgICAgMTY2ICAgIGxldCBsMSA9IDIsCi0gLT4gMTY3
ICAgICMgICAgbDIgPSAyOwotID0+IDE2OCAgICB8Y29uc3QgYzEgPSAzLAorLT0+IDE2NyAgICAj
ICAgIHxsMiA9IDI7CisgICAgMTY4ICAgIGNvbnN0IGMxID0gMywKICAgICAxNjkgICAgICAgIGMy
ID0gMzsKICAgICAxNzAgICAgCi0gICAgMTcxICAgIHYxID0gdjIgPSB2MTsKIAogCiBJTlNFUlRJ
TkcgQVQ6IDE2ODowCkBAIC0yNTM0LDE2ICsyNTMyLDE0IEBAIFBBVVNFUyBBVDogMTY4OjAKIAog
CiBJTlNFUlRJTkcgQVQ6IDE2OTowCi1QQVVTRVMgQVQ6IDE3MTowCitQQVVTRVMgQVQ6IDE2OTo0
CiAgICAgMTY2ICAgIGxldCBsMSA9IDIsCiAgICAgMTY3ICAgICAgICBsMiA9IDI7CiAgICAgMTY4
ICAgIGNvbnN0IGMxID0gMywKLSAtPiAxNjkgICAgIyAgICBjMiA9IDM7CistPT4gMTY5ICAgICMg
ICAgfGMyID0gMzsKICAgICAxNzAgICAgCi0gPT4gMTcxICAgIHx2MSA9IHYyID0gdjE7CisgICAg
MTcxICAgIHYxID0gdjIgPSB2MTsKICAgICAxNzIgICAgCi0gICAgMTczICAgIHZhciB7eCwgeX0g
PSBvYmo7Ci0gICAgMTc0ICAgIHZhciBbdywgel0gPSBhcnI7CiAKIAogSU5TRVJUSU5HIEFUOiAx
NzA6MApAQCAtMjkyNiw4ICsyOTIyLDggQEAgUEFVU0VTIEFUOiAyMDA6MAogIC0+IDE5OSAgICAj
CiAgPT4gMjAwICAgIHxhKGEoKSwgYigpKTsKICAgICAyMDEgICAgCi0gICAgMjAyICAgIGlmIChv
MS5wMSkKLSAgICAyMDMgICAgICAgIGEoKTsKKyAgICAyMDIgICAgYSgpLCBiKCksIGMoKTsKKyAg
ICAyMDMgICAgCiAKIAogSU5TRVJUSU5HIEFUOiAyMDA6MApAQCAtMjkzNywxMDkgKzI5MzMsMTc3
IEBAIFBBVVNFUyBBVDogMjAwOjAKICAgICAxOTkgICAgCiAtPT4gMjAwICAgIHxhKGEoKSwgYigp
KTsKICAgICAyMDEgICAgCi0gICAgMjAyICAgIGlmIChvMS5wMSkKLSAgICAyMDMgICAgICAgIGEo
KTsKKyAgICAyMDIgICAgYSgpLCBiKCksIGMoKTsKKyAgICAyMDMgICAgCiAKIAogSU5TRVJUSU5H
IEFUOiAyMDE6MAotUEFVU0VTIEFUOiAyMDI6NAorUEFVU0VTIEFUOiAyMDI6MAogICAgIDE5OCAg
ICB2YXIgdDIgPSBhYCR7MX0gJHt4PTF9ICR7YSgpfWA7CiAgICAgMTk5ICAgIAogICAgIDIwMCAg
ICBhKGEoKSwgYigpKTsKICAtPiAyMDEgICAgIwotID0+IDIwMiAgICBpZiAofG8xLnAxKQotICAg
IDIwMyAgICAgICAgYSgpOwotICAgIDIwNCAgICAKLSAgICAyMDUgICAgaWYgKG8xWyJwMSJdKQor
ID0+IDIwMiAgICB8YSgpLCBiKCksIGMoKTsKKyAgICAyMDMgICAgCisgICAgMjA0ICAgIGEoKSwK
KyAgICAyMDUgICAgYigpLAogCiAKIElOU0VSVElORyBBVDogMjAyOjAKLVBBVVNFUyBBVDogMjAy
OjQKK1BBVVNFUyBBVDogMjAyOjAKICAgICAxOTkgICAgCiAgICAgMjAwICAgIGEoYSgpLCBiKCkp
OwogICAgIDIwMSAgICAKLS09PiAyMDIgICAgI2lmICh8bzEucDEpCi0gICAgMjAzICAgICAgICBh
KCk7Ci0gICAgMjA0ICAgIAotICAgIDIwNSAgICBpZiAobzFbInAxIl0pCistPT4gMjAyICAgIHxh
KCksIGIoKSwgYygpOworICAgIDIwMyAgICAKKyAgICAyMDQgICAgYSgpLAorICAgIDIwNSAgICBi
KCksCiAKIAogSU5TRVJUSU5HIEFUOiAyMDM6MAotUEFVU0VTIEFUOiAyMDM6NAorUEFVU0VTIEFU
OiAyMDQ6MAogICAgIDIwMCAgICBhKGEoKSwgYigpKTsKICAgICAyMDEgICAgCi0gICAgMjAyICAg
IGlmIChvMS5wMSkKLS09PiAyMDMgICAgIyAgICB8YSgpOwotICAgIDIwNCAgICAKLSAgICAyMDUg
ICAgaWYgKG8xWyJwMSJdKQotICAgIDIwNiAgICAgICAgYSgpOworICAgIDIwMiAgICBhKCksIGIo
KSwgYygpOworIC0+IDIwMyAgICAjCisgPT4gMjA0ICAgIHxhKCksCisgICAgMjA1ICAgIGIoKSwK
KyAgICAyMDYgICAgYygpOworICAgIDIwNyAgICAKIAogCiBJTlNFUlRJTkcgQVQ6IDIwNDowCi1Q
QVVTRVMgQVQ6IDIwNTo0CitQQVVTRVMgQVQ6IDIwNDowCiAgICAgMjAxICAgIAotICAgIDIwMiAg
ICBpZiAobzEucDEpCi0gICAgMjAzICAgICAgICBhKCk7Ci0gLT4gMjA0ICAgICMKLSA9PiAyMDUg
ICAgaWYgKHxvMVsicDEiXSkKLSAgICAyMDYgICAgICAgIGEoKTsKKyAgICAyMDIgICAgYSgpLCBi
KCksIGMoKTsKKyAgICAyMDMgICAgCistPT4gMjA0ICAgIHxhKCksCisgICAgMjA1ICAgIGIoKSwK
KyAgICAyMDYgICAgYygpOwogICAgIDIwNyAgICAKLSAgICAyMDggICAgaWYgKFN0cmluZy5yYXdg
dGVzdGApCiAKIAogSU5TRVJUSU5HIEFUOiAyMDU6MAotUEFVU0VTIEFUOiAyMDU6NAotICAgIDIw
MiAgICBpZiAobzEucDEpCi0gICAgMjAzICAgICAgICBhKCk7Ci0gICAgMjA0ICAgIAotLT0+IDIw
NSAgICAjaWYgKHxvMVsicDEiXSkKLSAgICAyMDYgICAgICAgIGEoKTsKK1BBVVNFUyBBVDogMjA1
OjAKKyAgICAyMDIgICAgYSgpLCBiKCksIGMoKTsKKyAgICAyMDMgICAgCisgICAgMjA0ICAgIGEo
KSwKKy09PiAyMDUgICAgfGIoKSwKKyAgICAyMDYgICAgYygpOwogICAgIDIwNyAgICAKLSAgICAy
MDggICAgaWYgKFN0cmluZy5yYXdgdGVzdGApCisgICAgMjA4ICAgIGlmIChvMS5wMSkKIAogCiBJ
TlNFUlRJTkcgQVQ6IDIwNjowCi1QQVVTRVMgQVQ6IDIwNjo0Ci0gICAgMjAzICAgICAgICBhKCk7
Ci0gICAgMjA0ICAgIAotICAgIDIwNSAgICBpZiAobzFbInAxIl0pCi0tPT4gMjA2ICAgICMgICAg
fGEoKTsKK1BBVVNFUyBBVDogMjA2OjAKKyAgICAyMDMgICAgCisgICAgMjA0ICAgIGEoKSwKKyAg
ICAyMDUgICAgYigpLAorLT0+IDIwNiAgICB8YygpOwogICAgIDIwNyAgICAKLSAgICAyMDggICAg
aWYgKFN0cmluZy5yYXdgdGVzdGApCisgICAgMjA4ICAgIGlmIChvMS5wMSkKICAgICAyMDkgICAg
ICAgIGEoKTsKIAogCiBJTlNFUlRJTkcgQVQ6IDIwNzowCiBQQVVTRVMgQVQ6IDIwODo0Ci0gICAg
MjA0ICAgIAotICAgIDIwNSAgICBpZiAobzFbInAxIl0pCi0gICAgMjA2ICAgICAgICBhKCk7Cisg
ICAgMjA0ICAgIGEoKSwKKyAgICAyMDUgICAgYigpLAorICAgIDIwNiAgICBjKCk7CiAgLT4gMjA3
ICAgICMKLSA9PiAyMDggICAgaWYgKHxTdHJpbmcucmF3YHRlc3RgKQorID0+IDIwOCAgICBpZiAo
fG8xLnAxKQogICAgIDIwOSAgICAgICAgYSgpOwogICAgIDIxMCAgICAKKyAgICAyMTEgICAgaWYg
KG8xWyJwMSJdKQogCiAKIElOU0VSVElORyBBVDogMjA4OjAKIFBBVVNFUyBBVDogMjA4OjQKLSAg
ICAyMDUgICAgaWYgKG8xWyJwMSJdKQotICAgIDIwNiAgICAgICAgYSgpOworICAgIDIwNSAgICBi
KCksCisgICAgMjA2ICAgIGMoKTsKICAgICAyMDcgICAgCi0tPT4gMjA4ICAgICNpZiAofFN0cmlu
Zy5yYXdgdGVzdGApCistPT4gMjA4ICAgICNpZiAofG8xLnAxKQogICAgIDIwOSAgICAgICAgYSgp
OwogICAgIDIxMCAgICAKKyAgICAyMTEgICAgaWYgKG8xWyJwMSJdKQogCiAKIElOU0VSVElORyBB
VDogMjA5OjAKIFBBVVNFUyBBVDogMjA5OjQKLSAgICAyMDYgICAgICAgIGEoKTsKKyAgICAyMDYg
ICAgYygpOwogICAgIDIwNyAgICAKLSAgICAyMDggICAgaWYgKFN0cmluZy5yYXdgdGVzdGApCisg
ICAgMjA4ICAgIGlmIChvMS5wMSkKIC09PiAyMDkgICAgIyAgICB8YSgpOwogICAgIDIxMCAgICAK
KyAgICAyMTEgICAgaWYgKG8xWyJwMSJdKQorICAgIDIxMiAgICAgICAgYSgpOwogCiAKIElOU0VS
VElORyBBVDogMjEwOjAKK1BBVVNFUyBBVDogMjExOjQKKyAgICAyMDcgICAgCisgICAgMjA4ICAg
IGlmIChvMS5wMSkKKyAgICAyMDkgICAgICAgIGEoKTsKKyAtPiAyMTAgICAgIworID0+IDIxMSAg
ICBpZiAofG8xWyJwMSJdKQorICAgIDIxMiAgICAgICAgYSgpOworICAgIDIxMyAgICAKKyAgICAy
MTQgICAgaWYgKFN0cmluZy5yYXdgdGVzdGApCisKKworSU5TRVJUSU5HIEFUOiAyMTE6MAorUEFV
U0VTIEFUOiAyMTE6NAorICAgIDIwOCAgICBpZiAobzEucDEpCisgICAgMjA5ICAgICAgICBhKCk7
CisgICAgMjEwICAgIAorLT0+IDIxMSAgICAjaWYgKHxvMVsicDEiXSkKKyAgICAyMTIgICAgICAg
IGEoKTsKKyAgICAyMTMgICAgCisgICAgMjE0ICAgIGlmIChTdHJpbmcucmF3YHRlc3RgKQorCisK
K0lOU0VSVElORyBBVDogMjEyOjAKK1BBVVNFUyBBVDogMjEyOjQKKyAgICAyMDkgICAgICAgIGEo
KTsKKyAgICAyMTAgICAgCisgICAgMjExICAgIGlmIChvMVsicDEiXSkKKy09PiAyMTIgICAgIyAg
ICB8YSgpOworICAgIDIxMyAgICAKKyAgICAyMTQgICAgaWYgKFN0cmluZy5yYXdgdGVzdGApCisg
ICAgMjE1ICAgICAgICBhKCk7CisKKworSU5TRVJUSU5HIEFUOiAyMTM6MAorUEFVU0VTIEFUOiAy
MTQ6NAorICAgIDIxMCAgICAKKyAgICAyMTEgICAgaWYgKG8xWyJwMSJdKQorICAgIDIxMiAgICAg
ICAgYSgpOworIC0+IDIxMyAgICAjCisgPT4gMjE0ICAgIGlmICh8U3RyaW5nLnJhd2B0ZXN0YCkK
KyAgICAyMTUgICAgICAgIGEoKTsKKyAgICAyMTYgICAgCisKKworSU5TRVJUSU5HIEFUOiAyMTQ6
MAorUEFVU0VTIEFUOiAyMTQ6NAorICAgIDIxMSAgICBpZiAobzFbInAxIl0pCisgICAgMjEyICAg
ICAgICBhKCk7CisgICAgMjEzICAgIAorLT0+IDIxNCAgICAjaWYgKHxTdHJpbmcucmF3YHRlc3Rg
KQorICAgIDIxNSAgICAgICAgYSgpOworICAgIDIxNiAgICAKKworCitJTlNFUlRJTkcgQVQ6IDIx
NTowCitQQVVTRVMgQVQ6IDIxNTo0CisgICAgMjEyICAgICAgICBhKCk7CisgICAgMjEzICAgIAor
ICAgIDIxNCAgICBpZiAoU3RyaW5nLnJhd2B0ZXN0YCkKKy09PiAyMTUgICAgIyAgICB8YSgpOwor
ICAgIDIxNiAgICAKKworCitJTlNFUlRJTkcgQVQ6IDIxNjowCiBQUk9EVUNFUzogQ291bGQgbm90
IHJlc29sdmUgYnJlYWtwb2ludAogCiAtLSBSdW5uaW5nIHRlc3QgY2FzZTogRGVidWdnZXIucmVz
b2x2ZWRCcmVha3BvaW50LmR1bXBFYWNoTGluZS5GdW5jdGlvbnMKQEAgLTM1MDYsOCArMzU3MCw4
IEBAIFBBVVNFUyBBVDogNDI6MAogICAgICA0MSAgICAgICAgZnVuY3Rpb24gaW5uZXIyKCkgeyB2
YXIgejsgfQogID0+ICA0MiAgICB8fQogICAgICA0MyAgICAKLSAgICAgNDQgICAgKGZ1bmN0aW9u
KCkgewotICAgICA0NSAgICAgICAgdmFyIHg7CisgICAgIDQ0ICAgIGZ1bmN0aW9uIGNvbW1hT25l
TGluZSgpIHsKKyAgICAgNDUgICAgICAgIGlubGluZSgpLCBpbmxpbmUoKSwgaW5saW5lKCk7CiAK
IAogSU5TRVJUSU5HIEFUOiA0MDowCkBAIC0zNTI5LDcgKzM1OTMsNyBAQCBQQVVTRVMgQVQ6IDQx
OjI0CiAtPT4gIDQxICAgICMgICAgZnVuY3Rpb24gaW5uZXIyKCkgeyB8dmFyIHo7IH0KICAgICAg
NDIgICAgfQogICAgICA0MyAgICAKLSAgICAgNDQgICAgKGZ1bmN0aW9uKCkgeworICAgICA0NCAg
ICBmdW5jdGlvbiBjb21tYU9uZUxpbmUoKSB7CiAKIAogSU5TRVJUSU5HIEFUOiA0MjowCkBAIC0z
NTM5LDkxMyArMzYwMywxMDQzIEBAIFBBVVNFUyBBVDogNDI6MAogICAgICA0MSAgICAgICAgZnVu
Y3Rpb24gaW5uZXIyKCkgeyB2YXIgejsgfQogLT0+ICA0MiAgICB8fQogICAgICA0MyAgICAKLSAg
ICAgNDQgICAgKGZ1bmN0aW9uKCkgewotICAgICA0NSAgICAgICAgdmFyIHg7CisgICAgIDQ0ICAg
IGZ1bmN0aW9uIGNvbW1hT25lTGluZSgpIHsKKyAgICAgNDUgICAgICAgIGlubGluZSgpLCBpbmxp
bmUoKSwgaW5saW5lKCk7CiAKIAogSU5TRVJUSU5HIEFUOiA0MzowCi1QQVVTRVMgQVQ6IDQ0OjAK
K1BBVVNFUyBBVDogNTQ6MAogICAgICA0MCAgICAgICAgZnVuY3Rpb24gaW5uZXIxKCkgeyB2YXIg
eTsgfQogICAgICA0MSAgICAgICAgZnVuY3Rpb24gaW5uZXIyKCkgeyB2YXIgejsgfQogICAgICA0
MiAgICB9CiAgLT4gIDQzICAgICMKLSA9PiAgNDQgICAgfChmdW5jdGlvbigpIHsKLSAgICAgNDUg
ICAgICAgIHZhciB4OwotICAgICA0NiAgICB9KSgpOworICAgICA0NCAgICBmdW5jdGlvbiBjb21t
YU9uZUxpbmUoKSB7CisgICAgIDQ1ICAgICAgICBpbmxpbmUoKSwgaW5saW5lKCksIGlubGluZSgp
OworICAgICA0NiAgICB9CiAgICAgIDQ3ICAgIAorICAgICA0OCAgICBmdW5jdGlvbiBjb21tYU11
bHRpTGluZSgpIHsKKyAgICAgNDkgICAgICAgIGlubGluZSgpLAorICAgICA1MCAgICAgICAgaW5s
aW5lKCksCisgICAgIDUxICAgICAgICBpbmxpbmUoKTsKKyAgICAgNTIgICAgfQorICAgICA1MyAg
ICAKKyA9PiAgNTQgICAgfChmdW5jdGlvbigpIHsKKyAgICAgNTUgICAgICAgIHZhciB4OworICAg
ICA1NiAgICB9KSgpOworICAgICA1NyAgICAKIAogCiBJTlNFUlRJTkcgQVQ6IDQ0OjAKLVBBVVNF
UyBBVDogNDQ6MAorUEFVU0VTIEFUOiA0NTo0CiAgICAgIDQxICAgICAgICBmdW5jdGlvbiBpbm5l
cjIoKSB7IHZhciB6OyB9CiAgICAgIDQyICAgIH0KICAgICAgNDMgICAgCi0tPT4gIDQ0ICAgIHwo
ZnVuY3Rpb24oKSB7Ci0gICAgIDQ1ICAgICAgICB2YXIgeDsKLSAgICAgNDYgICAgfSkoKTsKKyAt
PiAgNDQgICAgI2Z1bmN0aW9uIGNvbW1hT25lTGluZSgpIHsKKyA9PiAgNDUgICAgICAgIHxpbmxp
bmUoKSwgaW5saW5lKCksIGlubGluZSgpOworICAgICA0NiAgICB9CiAgICAgIDQ3ICAgIAorICAg
ICA0OCAgICBmdW5jdGlvbiBjb21tYU11bHRpTGluZSgpIHsKIAogCiBJTlNFUlRJTkcgQVQ6IDQ1
OjAKIFBBVVNFUyBBVDogNDU6NAogICAgICA0MiAgICB9CiAgICAgIDQzICAgIAotICAgICA0NCAg
ICAoZnVuY3Rpb24oKSB7Ci0tPT4gIDQ1ICAgICMgICAgfHZhciB4OwotICAgICA0NiAgICB9KSgp
OworICAgICA0NCAgICBmdW5jdGlvbiBjb21tYU9uZUxpbmUoKSB7CistPT4gIDQ1ICAgICMgICAg
fGlubGluZSgpLCBpbmxpbmUoKSwgaW5saW5lKCk7CisgICAgIDQ2ICAgIH0KICAgICAgNDcgICAg
Ci0gICAgIDQ4ICAgICgoKSA9PiB7CisgICAgIDQ4ICAgIGZ1bmN0aW9uIGNvbW1hTXVsdGlMaW5l
KCkgewogCiAKIElOU0VSVElORyBBVDogNDY6MAogUEFVU0VTIEFUOiA0NjowCiAgICAgIDQzICAg
IAotICAgICA0NCAgICAoZnVuY3Rpb24oKSB7Ci0gICAgIDQ1ICAgICAgICB2YXIgeDsKLS09PiAg
NDYgICAgfH0pKCk7CisgICAgIDQ0ICAgIGZ1bmN0aW9uIGNvbW1hT25lTGluZSgpIHsKKyAgICAg
NDUgICAgICAgIGlubGluZSgpLCBpbmxpbmUoKSwgaW5saW5lKCk7CistPT4gIDQ2ICAgIHx9CiAg
ICAgIDQ3ICAgIAotICAgICA0OCAgICAoKCkgPT4gewotICAgICA0OSAgICAgICAgdmFyIHg7Cisg
ICAgIDQ4ICAgIGZ1bmN0aW9uIGNvbW1hTXVsdGlMaW5lKCkgeworICAgICA0OSAgICAgICAgaW5s
aW5lKCksCiAKIAogSU5TRVJUSU5HIEFUOiA0NzowCi1QQVVTRVMgQVQ6IDQ4OjAKLSAgICAgNDQg
ICAgKGZ1bmN0aW9uKCkgewotICAgICA0NSAgICAgICAgdmFyIHg7Ci0gICAgIDQ2ICAgIH0pKCk7
CitQQVVTRVMgQVQ6IDU0OjAKKyAgICAgNDQgICAgZnVuY3Rpb24gY29tbWFPbmVMaW5lKCkgewor
ICAgICA0NSAgICAgICAgaW5saW5lKCksIGlubGluZSgpLCBpbmxpbmUoKTsKKyAgICAgNDYgICAg
fQogIC0+ICA0NyAgICAjCi0gPT4gIDQ4ICAgIHwoKCkgPT4gewotICAgICA0OSAgICAgICAgdmFy
IHg7Ci0gICAgIDUwICAgIH0pOwotICAgICA1MSAgICAKKyAgICAgNDggICAgZnVuY3Rpb24gY29t
bWFNdWx0aUxpbmUoKSB7CisgICAgIDQ5ICAgICAgICBpbmxpbmUoKSwKKyAgICAgNTAgICAgICAg
IGlubGluZSgpLAorICAgICA1MSAgICAgICAgaW5saW5lKCk7CisgICAgIDUyICAgIH0KKyAgICAg
NTMgICAgCisgPT4gIDU0ICAgIHwoZnVuY3Rpb24oKSB7CisgICAgIDU1ICAgICAgICB2YXIgeDsK
KyAgICAgNTYgICAgfSkoKTsKKyAgICAgNTcgICAgCiAKIAogSU5TRVJUSU5HIEFUOiA0ODowCi1Q
QVVTRVMgQVQ6IDQ4OjAKLSAgICAgNDUgICAgICAgIHZhciB4OwotICAgICA0NiAgICB9KSgpOwor
UEFVU0VTIEFUOiA0OTo0CisgICAgIDQ1ICAgICAgICBpbmxpbmUoKSwgaW5saW5lKCksIGlubGlu
ZSgpOworICAgICA0NiAgICB9CiAgICAgIDQ3ICAgIAotLT0+ICA0OCAgICB8KCgpID0+IHsKLSAg
ICAgNDkgICAgICAgIHZhciB4OwotICAgICA1MCAgICB9KTsKLSAgICAgNTEgICAgCisgLT4gIDQ4
ICAgICNmdW5jdGlvbiBjb21tYU11bHRpTGluZSgpIHsKKyA9PiAgNDkgICAgICAgIHxpbmxpbmUo
KSwKKyAgICAgNTAgICAgICAgIGlubGluZSgpLAorICAgICA1MSAgICAgICAgaW5saW5lKCk7Cisg
ICAgIDUyICAgIH0KIAogCiBJTlNFUlRJTkcgQVQ6IDQ5OjAKIFBBVVNFUyBBVDogNDk6NAotICAg
ICA0NiAgICB9KSgpOworICAgICA0NiAgICB9CiAgICAgIDQ3ICAgIAotICAgICA0OCAgICAoKCkg
PT4gewotLT0+ICA0OSAgICAjICAgIHx2YXIgeDsKLSAgICAgNTAgICAgfSk7Ci0gICAgIDUxICAg
IAotICAgICA1MiAgICBmdW5jdGlvbiogZ2VuZXJhdG9yKCkgeworICAgICA0OCAgICBmdW5jdGlv
biBjb21tYU11bHRpTGluZSgpIHsKKy09PiAgNDkgICAgIyAgICB8aW5saW5lKCksCisgICAgIDUw
ICAgICAgICBpbmxpbmUoKSwKKyAgICAgNTEgICAgICAgIGlubGluZSgpOworICAgICA1MiAgICB9
CiAKIAogSU5TRVJUSU5HIEFUOiA1MDowCi1QQVVTRVMgQVQ6IDUwOjAKK1BBVVNFUyBBVDogNTA6
NAogICAgICA0NyAgICAKLSAgICAgNDggICAgKCgpID0+IHsKLSAgICAgNDkgICAgICAgIHZhciB4
OwotLT0+ICA1MCAgICB8fSk7Ci0gICAgIDUxICAgIAotICAgICA1MiAgICBmdW5jdGlvbiogZ2Vu
ZXJhdG9yKCkgewotICAgICA1MyAgICAgICAgdmFyIHg7CisgICAgIDQ4ICAgIGZ1bmN0aW9uIGNv
bW1hTXVsdGlMaW5lKCkgeworICAgICA0OSAgICAgICAgaW5saW5lKCksCistPT4gIDUwICAgICMg
ICAgfGlubGluZSgpLAorICAgICA1MSAgICAgICAgaW5saW5lKCk7CisgICAgIDUyICAgIH0KKyAg
ICAgNTMgICAgCiAKIAogSU5TRVJUSU5HIEFUOiA1MTowCi1QQVVTRVMgQVQ6IDg3OjAKLSAgICAg
NDggICAgKCgpID0+IHsKLSAgICAgNDkgICAgICAgIHZhciB4OwotICAgICA1MCAgICB9KTsKLSAt
PiAgNTEgICAgIwotICAgICA1MiAgICBmdW5jdGlvbiogZ2VuZXJhdG9yKCkgewotICAgICA1MyAg
ICAgICAgdmFyIHg7Ci0gICAgIDU0ICAgIH0KLSAgICAgNTUgICAgCi0gICAgIDU2ICAgIGNsYXNz
IENsYXNzIHsKLSAgICAgNTcgICAgICAgIHN0YXRpYyBzdGF0aWNNZXRob2QxKCkgewotICAgICA1
OCAgICAgICAgICAgIHZhciB4OwotICAgICA1OSAgICAgICAgfQotICAgICA2MCAgICAgICAgc3Rh
dGljIHN0YXRpY01ldGhvZDIoKQotICAgICA2MSAgICAgICAgewotICAgICA2MiAgICAgICAgICAg
IHZhciB4OwotICAgICA2MyAgICAgICAgfQotICAgICA2NCAgICAgICAgbWV0aG9kMSgpIHsKLSAg
ICAgNjUgICAgICAgICAgICB2YXIgeDsKLSAgICAgNjYgICAgICAgIH0KLSAgICAgNjcgICAgICAg
IG1ldGhvZDIoKQotICAgICA2OCAgICAgICAgewotICAgICA2OSAgICAgICAgICAgIHZhciB4Owot
ICAgICA3MCAgICAgICAgfQotICAgICA3MSAgICAgICAgZ2V0IGdldHRlcjEoKSB7Ci0gICAgIDcy
ICAgICAgICAgICAgdmFyIHg7Ci0gICAgIDczICAgICAgICB9Ci0gICAgIDc0ICAgICAgICBnZXQg
Z2V0dGVyMigpCi0gICAgIDc1ICAgICAgICB7Ci0gICAgIDc2ICAgICAgICAgICAgdmFyIHg7Ci0g
ICAgIDc3ICAgICAgICB9Ci0gICAgIDc4ICAgICAgICBzZXQgc2V0dGVyMSh4KSB7Ci0gICAgIDc5
ICAgICAgICAgICAgdmFyIHM7Ci0gICAgIDgwICAgICAgICB9Ci0gICAgIDgxICAgICAgICBzZXQg
c2V0dGVyMih4KQotICAgICA4MiAgICAgICAgewotICAgICA4MyAgICAgICAgICAgIHZhciBzOwot
ICAgICA4NCAgICAgICAgfQotICAgICA4NSAgICB9Ci0gICAgIDg2ICAgIAotID0+ICA4NyAgICB8
eCA9PiB4OwotICAgICA4OCAgICAoKSA9PiAxOwotICAgICA4OSAgICAoeCkgPT4geDsKLSAgICAg
OTAgICAgKHgpID0+IHsgeCB9OworUEFVU0VTIEFUOiA1MTo0CisgICAgIDQ4ICAgIGZ1bmN0aW9u
IGNvbW1hTXVsdGlMaW5lKCkgeworICAgICA0OSAgICAgICAgaW5saW5lKCksCisgICAgIDUwICAg
ICAgICBpbmxpbmUoKSwKKy09PiAgNTEgICAgIyAgICB8aW5saW5lKCk7CisgICAgIDUyICAgIH0K
KyAgICAgNTMgICAgCisgICAgIDU0ICAgIChmdW5jdGlvbigpIHsKIAogCiBJTlNFUlRJTkcgQVQ6
IDUyOjAKLVBBVVNFUyBBVDogNTM6NAotICAgICA0OSAgICAgICAgdmFyIHg7Ci0gICAgIDUwICAg
IH0pOwotICAgICA1MSAgICAKLSAtPiAgNTIgICAgI2Z1bmN0aW9uKiBnZW5lcmF0b3IoKSB7Ci0g
PT4gIDUzICAgICAgICB8dmFyIHg7Ci0gICAgIDU0ICAgIH0KLSAgICAgNTUgICAgCi0gICAgIDU2
ICAgIGNsYXNzIENsYXNzIHsKK1BBVVNFUyBBVDogNTI6MAorICAgICA0OSAgICAgICAgaW5saW5l
KCksCisgICAgIDUwICAgICAgICBpbmxpbmUoKSwKKyAgICAgNTEgICAgICAgIGlubGluZSgpOwor
LT0+ICA1MiAgICB8fQorICAgICA1MyAgICAKKyAgICAgNTQgICAgKGZ1bmN0aW9uKCkgeworICAg
ICA1NSAgICAgICAgdmFyIHg7CiAKIAogSU5TRVJUSU5HIEFUOiA1MzowCi1QQVVTRVMgQVQ6IDUz
OjQKLSAgICAgNTAgICAgfSk7Ci0gICAgIDUxICAgIAotICAgICA1MiAgICBmdW5jdGlvbiogZ2Vu
ZXJhdG9yKCkgewotLT0+ICA1MyAgICAjICAgIHx2YXIgeDsKLSAgICAgNTQgICAgfQotICAgICA1
NSAgICAKLSAgICAgNTYgICAgY2xhc3MgQ2xhc3MgeworUEFVU0VTIEFUOiA1NDowCisgICAgIDUw
ICAgICAgICBpbmxpbmUoKSwKKyAgICAgNTEgICAgICAgIGlubGluZSgpOworICAgICA1MiAgICB9
CisgLT4gIDUzICAgICMKKyA9PiAgNTQgICAgfChmdW5jdGlvbigpIHsKKyAgICAgNTUgICAgICAg
IHZhciB4OworICAgICA1NiAgICB9KSgpOworICAgICA1NyAgICAKIAogCiBJTlNFUlRJTkcgQVQ6
IDU0OjAKIFBBVVNFUyBBVDogNTQ6MAotICAgICA1MSAgICAKLSAgICAgNTIgICAgZnVuY3Rpb24q
IGdlbmVyYXRvcigpIHsKLSAgICAgNTMgICAgICAgIHZhciB4OwotLT0+ICA1NCAgICB8fQotICAg
ICA1NSAgICAKLSAgICAgNTYgICAgY2xhc3MgQ2xhc3MgewotICAgICA1NyAgICAgICAgc3RhdGlj
IHN0YXRpY01ldGhvZDEoKSB7CisgICAgIDUxICAgICAgICBpbmxpbmUoKTsKKyAgICAgNTIgICAg
fQorICAgICA1MyAgICAKKy09PiAgNTQgICAgfChmdW5jdGlvbigpIHsKKyAgICAgNTUgICAgICAg
IHZhciB4OworICAgICA1NiAgICB9KSgpOworICAgICA1NyAgICAKIAogCiBJTlNFUlRJTkcgQVQ6
IDU1OjAKLVBBVVNFUyBBVDogODc6MAotICAgICA1MiAgICBmdW5jdGlvbiogZ2VuZXJhdG9yKCkg
ewotICAgICA1MyAgICAgICAgdmFyIHg7Ci0gICAgIDU0ICAgIH0KLSAtPiAgNTUgICAgIwotICAg
ICA1NiAgICBjbGFzcyBDbGFzcyB7Ci0gICAgIDU3ICAgICAgICBzdGF0aWMgc3RhdGljTWV0aG9k
MSgpIHsKLSAgICAgNTggICAgICAgICAgICB2YXIgeDsKLSAgICAgNTkgICAgICAgIH0KLSAgICAg
NjAgICAgICAgIHN0YXRpYyBzdGF0aWNNZXRob2QyKCkKLSAgICAgNjEgICAgICAgIHsKLSAgICAg
NjIgICAgICAgICAgICB2YXIgeDsKLSAgICAgNjMgICAgICAgIH0KLSAgICAgNjQgICAgICAgIG1l
dGhvZDEoKSB7Ci0gICAgIDY1ICAgICAgICAgICAgdmFyIHg7Ci0gICAgIDY2ICAgICAgICB9Ci0g
ICAgIDY3ICAgICAgICBtZXRob2QyKCkKLSAgICAgNjggICAgICAgIHsKLSAgICAgNjkgICAgICAg
ICAgICB2YXIgeDsKLSAgICAgNzAgICAgICAgIH0KLSAgICAgNzEgICAgICAgIGdldCBnZXR0ZXIx
KCkgewotICAgICA3MiAgICAgICAgICAgIHZhciB4OwotICAgICA3MyAgICAgICAgfQotICAgICA3
NCAgICAgICAgZ2V0IGdldHRlcjIoKQotICAgICA3NSAgICAgICAgewotICAgICA3NiAgICAgICAg
ICAgIHZhciB4OwotICAgICA3NyAgICAgICAgfQotICAgICA3OCAgICAgICAgc2V0IHNldHRlcjEo
eCkgewotICAgICA3OSAgICAgICAgICAgIHZhciBzOwotICAgICA4MCAgICAgICAgfQotICAgICA4
MSAgICAgICAgc2V0IHNldHRlcjIoeCkKLSAgICAgODIgICAgICAgIHsKLSAgICAgODMgICAgICAg
ICAgICB2YXIgczsKLSAgICAgODQgICAgICAgIH0KLSAgICAgODUgICAgfQotICAgICA4NiAgICAK
LSA9PiAgODcgICAgfHggPT4geDsKLSAgICAgODggICAgKCkgPT4gMTsKLSAgICAgODkgICAgKHgp
ID0+IHg7Ci0gICAgIDkwICAgICh4KSA9PiB7IHggfTsKK1BBVVNFUyBBVDogNTU6NAorICAgICA1
MiAgICB9CisgICAgIDUzICAgIAorICAgICA1NCAgICAoZnVuY3Rpb24oKSB7CistPT4gIDU1ICAg
ICMgICAgfHZhciB4OworICAgICA1NiAgICB9KSgpOworICAgICA1NyAgICAKKyAgICAgNTggICAg
KCgpID0+IHsKIAogCiBJTlNFUlRJTkcgQVQ6IDU2OjAKLVBBVVNFUyBBVDogODc6MAotICAgICA1
MyAgICAgICAgdmFyIHg7Ci0gICAgIDU0ICAgIH0KLSAgICAgNTUgICAgCi0gLT4gIDU2ICAgICNj
bGFzcyBDbGFzcyB7Ci0gICAgIDU3ICAgICAgICBzdGF0aWMgc3RhdGljTWV0aG9kMSgpIHsKLSAg
ICAgNTggICAgICAgICAgICB2YXIgeDsKLSAgICAgNTkgICAgICAgIH0KLSAgICAgNjAgICAgICAg
IHN0YXRpYyBzdGF0aWNNZXRob2QyKCkKLSAgICAgNjEgICAgICAgIHsKLSAgICAgNjIgICAgICAg
ICAgICB2YXIgeDsKLSAgICAgNjMgICAgICAgIH0KLSAgICAgNjQgICAgICAgIG1ldGhvZDEoKSB7
Ci0gICAgIDY1ICAgICAgICAgICAgdmFyIHg7Ci0gICAgIDY2ICAgICAgICB9Ci0gICAgIDY3ICAg
ICAgICBtZXRob2QyKCkKLSAgICAgNjggICAgICAgIHsKLSAgICAgNjkgICAgICAgICAgICB2YXIg
eDsKLSAgICAgNzAgICAgICAgIH0KLSAgICAgNzEgICAgICAgIGdldCBnZXR0ZXIxKCkgewotICAg
ICA3MiAgICAgICAgICAgIHZhciB4OwotICAgICA3MyAgICAgICAgfQotICAgICA3NCAgICAgICAg
Z2V0IGdldHRlcjIoKQotICAgICA3NSAgICAgICAgewotICAgICA3NiAgICAgICAgICAgIHZhciB4
OwotICAgICA3NyAgICAgICAgfQotICAgICA3OCAgICAgICAgc2V0IHNldHRlcjEoeCkgewotICAg
ICA3OSAgICAgICAgICAgIHZhciBzOwotICAgICA4MCAgICAgICAgfQotICAgICA4MSAgICAgICAg
c2V0IHNldHRlcjIoeCkKLSAgICAgODIgICAgICAgIHsKLSAgICAgODMgICAgICAgICAgICB2YXIg
czsKLSAgICAgODQgICAgICAgIH0KLSAgICAgODUgICAgfQotICAgICA4NiAgICAKLSA9PiAgODcg
ICAgfHggPT4geDsKLSAgICAgODggICAgKCkgPT4gMTsKLSAgICAgODkgICAgKHgpID0+IHg7Ci0g
ICAgIDkwICAgICh4KSA9PiB7IHggfTsKK1BBVVNFUyBBVDogNTY6MAorICAgICA1MyAgICAKKyAg
ICAgNTQgICAgKGZ1bmN0aW9uKCkgeworICAgICA1NSAgICAgICAgdmFyIHg7CistPT4gIDU2ICAg
IHx9KSgpOworICAgICA1NyAgICAKKyAgICAgNTggICAgKCgpID0+IHsKKyAgICAgNTkgICAgICAg
IHZhciB4OwogCiAKIElOU0VSVElORyBBVDogNTc6MAotUEFVU0VTIEFUOiA1ODo4Ci0gICAgIDU0
ICAgIH0KLSAgICAgNTUgICAgCi0gICAgIDU2ICAgIGNsYXNzIENsYXNzIHsKLSAtPiAgNTcgICAg
IyAgICBzdGF0aWMgc3RhdGljTWV0aG9kMSgpIHsKLSA9PiAgNTggICAgICAgICAgICB8dmFyIHg7
Ci0gICAgIDU5ICAgICAgICB9Ci0gICAgIDYwICAgICAgICBzdGF0aWMgc3RhdGljTWV0aG9kMigp
Ci0gICAgIDYxICAgICAgICB7CitQQVVTRVMgQVQ6IDU4OjAKKyAgICAgNTQgICAgKGZ1bmN0aW9u
KCkgeworICAgICA1NSAgICAgICAgdmFyIHg7CisgICAgIDU2ICAgIH0pKCk7CisgLT4gIDU3ICAg
ICMKKyA9PiAgNTggICAgfCgoKSA9PiB7CisgICAgIDU5ICAgICAgICB2YXIgeDsKKyAgICAgNjAg
ICAgfSk7CisgICAgIDYxICAgIAogCiAKIElOU0VSVElORyBBVDogNTg6MAotUEFVU0VTIEFUOiA1
ODo4Ci0gICAgIDU1ICAgIAotICAgICA1NiAgICBjbGFzcyBDbGFzcyB7Ci0gICAgIDU3ICAgICAg
ICBzdGF0aWMgc3RhdGljTWV0aG9kMSgpIHsKLS09PiAgNTggICAgIyAgICAgICAgfHZhciB4Owot
ICAgICA1OSAgICAgICAgfQotICAgICA2MCAgICAgICAgc3RhdGljIHN0YXRpY01ldGhvZDIoKQot
ICAgICA2MSAgICAgICAgeworUEFVU0VTIEFUOiA1ODowCisgICAgIDU1ICAgICAgICB2YXIgeDsK
KyAgICAgNTYgICAgfSkoKTsKKyAgICAgNTcgICAgCistPT4gIDU4ICAgIHwoKCkgPT4geworICAg
ICA1OSAgICAgICAgdmFyIHg7CisgICAgIDYwICAgIH0pOworICAgICA2MSAgICAKIAogCiBJTlNF
UlRJTkcgQVQ6IDU5OjAKIFBBVVNFUyBBVDogNTk6NAotICAgICA1NiAgICBjbGFzcyBDbGFzcyB7
Ci0gICAgIDU3ICAgICAgICBzdGF0aWMgc3RhdGljTWV0aG9kMSgpIHsKLSAgICAgNTggICAgICAg
ICAgICB2YXIgeDsKLS09PiAgNTkgICAgIyAgICB8fQotICAgICA2MCAgICAgICAgc3RhdGljIHN0
YXRpY01ldGhvZDIoKQotICAgICA2MSAgICAgICAgewotICAgICA2MiAgICAgICAgICAgIHZhciB4
OworICAgICA1NiAgICB9KSgpOworICAgICA1NyAgICAKKyAgICAgNTggICAgKCgpID0+IHsKKy09
PiAgNTkgICAgIyAgICB8dmFyIHg7CisgICAgIDYwICAgIH0pOworICAgICA2MSAgICAKKyAgICAg
NjIgICAgZnVuY3Rpb24qIGdlbmVyYXRvcigpIHsKIAogCiBJTlNFUlRJTkcgQVQ6IDYwOjAKLVBB
VVNFUyBBVDogNjI6OAotICAgICA1NyAgICAgICAgc3RhdGljIHN0YXRpY01ldGhvZDEoKSB7Ci0g
ICAgIDU4ICAgICAgICAgICAgdmFyIHg7Ci0gICAgIDU5ICAgICAgICB9Ci0gLT4gIDYwICAgICMg
ICAgc3RhdGljIHN0YXRpY01ldGhvZDIoKQotICAgICA2MSAgICAgICAgewotID0+ICA2MiAgICAg
ICAgICAgIHx2YXIgeDsKLSAgICAgNjMgICAgICAgIH0KLSAgICAgNjQgICAgICAgIG1ldGhvZDEo
KSB7Ci0gICAgIDY1ICAgICAgICAgICAgdmFyIHg7CitQQVVTRVMgQVQ6IDYwOjAKKyAgICAgNTcg
ICAgCisgICAgIDU4ICAgICgoKSA9PiB7CisgICAgIDU5ICAgICAgICB2YXIgeDsKKy09PiAgNjAg
ICAgfH0pOworICAgICA2MSAgICAKKyAgICAgNjIgICAgZnVuY3Rpb24qIGdlbmVyYXRvcigpIHsK
KyAgICAgNjMgICAgICAgIHZhciB4OwogCiAKIElOU0VSVElORyBBVDogNjE6MAotUEFVU0VTIEFU
OiA2Mjo4Ci0gICAgIDU4ICAgICAgICAgICAgdmFyIHg7Ci0gICAgIDU5ICAgICAgICB9Ci0gICAg
IDYwICAgICAgICBzdGF0aWMgc3RhdGljTWV0aG9kMigpCi0gLT4gIDYxICAgICMgICAgewotID0+
ICA2MiAgICAgICAgICAgIHx2YXIgeDsKLSAgICAgNjMgICAgICAgIH0KLSAgICAgNjQgICAgICAg
IG1ldGhvZDEoKSB7Ci0gICAgIDY1ICAgICAgICAgICAgdmFyIHg7CitQQVVTRVMgQVQ6IDk3OjAK
KyAgICAgNTggICAgKCgpID0+IHsKKyAgICAgNTkgICAgICAgIHZhciB4OworICAgICA2MCAgICB9
KTsKKyAtPiAgNjEgICAgIworICAgICA2MiAgICBmdW5jdGlvbiogZ2VuZXJhdG9yKCkgeworICAg
ICA2MyAgICAgICAgdmFyIHg7CisgICAgIDY0ICAgIH0KKyAgICAgNjUgICAgCisgICAgIDY2ICAg
IGNsYXNzIENsYXNzIHsKKyAgICAgNjcgICAgICAgIHN0YXRpYyBzdGF0aWNNZXRob2QxKCkgewor
ICAgICA2OCAgICAgICAgICAgIHZhciB4OworICAgICA2OSAgICAgICAgfQorICAgICA3MCAgICAg
ICAgc3RhdGljIHN0YXRpY01ldGhvZDIoKQorICAgICA3MSAgICAgICAgeworICAgICA3MiAgICAg
ICAgICAgIHZhciB4OworICAgICA3MyAgICAgICAgfQorICAgICA3NCAgICAgICAgbWV0aG9kMSgp
IHsKKyAgICAgNzUgICAgICAgICAgICB2YXIgeDsKKyAgICAgNzYgICAgICAgIH0KKyAgICAgNzcg
ICAgICAgIG1ldGhvZDIoKQorICAgICA3OCAgICAgICAgeworICAgICA3OSAgICAgICAgICAgIHZh
ciB4OworICAgICA4MCAgICAgICAgfQorICAgICA4MSAgICAgICAgZ2V0IGdldHRlcjEoKSB7Cisg
ICAgIDgyICAgICAgICAgICAgdmFyIHg7CisgICAgIDgzICAgICAgICB9CisgICAgIDg0ICAgICAg
ICBnZXQgZ2V0dGVyMigpCisgICAgIDg1ICAgICAgICB7CisgICAgIDg2ICAgICAgICAgICAgdmFy
IHg7CisgICAgIDg3ICAgICAgICB9CisgICAgIDg4ICAgICAgICBzZXQgc2V0dGVyMSh4KSB7Cisg
ICAgIDg5ICAgICAgICAgICAgdmFyIHM7CisgICAgIDkwICAgICAgICB9CisgICAgIDkxICAgICAg
ICBzZXQgc2V0dGVyMih4KQorICAgICA5MiAgICAgICAgeworICAgICA5MyAgICAgICAgICAgIHZh
ciBzOworICAgICA5NCAgICAgICAgfQorICAgICA5NSAgICB9CisgICAgIDk2ICAgIAorID0+ICA5
NyAgICB8eCA9PiB4OworICAgICA5OCAgICAoKSA9PiAxOworICAgICA5OSAgICAoeCkgPT4geDsK
KyAgICAxMDAgICAgKHgpID0+IHsgeCB9OwogCiAKIElOU0VSVElORyBBVDogNjI6MAotUEFVU0VT
IEFUOiA2Mjo4Ci0gICAgIDU5ICAgICAgICB9Ci0gICAgIDYwICAgICAgICBzdGF0aWMgc3RhdGlj
TWV0aG9kMigpCi0gICAgIDYxICAgICAgICB7Ci0tPT4gIDYyICAgICMgICAgICAgIHx2YXIgeDsK
LSAgICAgNjMgICAgICAgIH0KLSAgICAgNjQgICAgICAgIG1ldGhvZDEoKSB7Ci0gICAgIDY1ICAg
ICAgICAgICAgdmFyIHg7CitQQVVTRVMgQVQ6IDYzOjQKKyAgICAgNTkgICAgICAgIHZhciB4Owor
ICAgICA2MCAgICB9KTsKKyAgICAgNjEgICAgCisgLT4gIDYyICAgICNmdW5jdGlvbiogZ2VuZXJh
dG9yKCkgeworID0+ICA2MyAgICAgICAgfHZhciB4OworICAgICA2NCAgICB9CisgICAgIDY1ICAg
IAorICAgICA2NiAgICBjbGFzcyBDbGFzcyB7CiAKIAogSU5TRVJUSU5HIEFUOiA2MzowCiBQQVVT
RVMgQVQ6IDYzOjQKLSAgICAgNjAgICAgICAgIHN0YXRpYyBzdGF0aWNNZXRob2QyKCkKLSAgICAg
NjEgICAgICAgIHsKLSAgICAgNjIgICAgICAgICAgICB2YXIgeDsKLS09PiAgNjMgICAgIyAgICB8
fQotICAgICA2NCAgICAgICAgbWV0aG9kMSgpIHsKLSAgICAgNjUgICAgICAgICAgICB2YXIgeDsK
LSAgICAgNjYgICAgICAgIH0KKyAgICAgNjAgICAgfSk7CisgICAgIDYxICAgIAorICAgICA2MiAg
ICBmdW5jdGlvbiogZ2VuZXJhdG9yKCkgeworLT0+ICA2MyAgICAjICAgIHx2YXIgeDsKKyAgICAg
NjQgICAgfQorICAgICA2NSAgICAKKyAgICAgNjYgICAgY2xhc3MgQ2xhc3MgewogCiAKIElOU0VS
VElORyBBVDogNjQ6MAotUEFVU0VTIEFUOiA2NTo4Ci0gICAgIDYxICAgICAgICB7Ci0gICAgIDYy
ICAgICAgICAgICAgdmFyIHg7Ci0gICAgIDYzICAgICAgICB9Ci0gLT4gIDY0ICAgICMgICAgbWV0
aG9kMSgpIHsKLSA9PiAgNjUgICAgICAgICAgICB8dmFyIHg7Ci0gICAgIDY2ICAgICAgICB9Ci0g
ICAgIDY3ICAgICAgICBtZXRob2QyKCkKLSAgICAgNjggICAgICAgIHsKK1BBVVNFUyBBVDogNjQ6
MAorICAgICA2MSAgICAKKyAgICAgNjIgICAgZnVuY3Rpb24qIGdlbmVyYXRvcigpIHsKKyAgICAg
NjMgICAgICAgIHZhciB4OworLT0+ICA2NCAgICB8fQorICAgICA2NSAgICAKKyAgICAgNjYgICAg
Y2xhc3MgQ2xhc3MgeworICAgICA2NyAgICAgICAgc3RhdGljIHN0YXRpY01ldGhvZDEoKSB7CiAK
IAogSU5TRVJUSU5HIEFUOiA2NTowCi1QQVVTRVMgQVQ6IDY1OjgKLSAgICAgNjIgICAgICAgICAg
ICB2YXIgeDsKLSAgICAgNjMgICAgICAgIH0KLSAgICAgNjQgICAgICAgIG1ldGhvZDEoKSB7Ci0t
PT4gIDY1ICAgICMgICAgICAgIHx2YXIgeDsKLSAgICAgNjYgICAgICAgIH0KLSAgICAgNjcgICAg
ICAgIG1ldGhvZDIoKQotICAgICA2OCAgICAgICAgeworUEFVU0VTIEFUOiA5NzowCisgICAgIDYy
ICAgIGZ1bmN0aW9uKiBnZW5lcmF0b3IoKSB7CisgICAgIDYzICAgICAgICB2YXIgeDsKKyAgICAg
NjQgICAgfQorIC0+ICA2NSAgICAjCisgICAgIDY2ICAgIGNsYXNzIENsYXNzIHsKKyAgICAgNjcg
ICAgICAgIHN0YXRpYyBzdGF0aWNNZXRob2QxKCkgeworICAgICA2OCAgICAgICAgICAgIHZhciB4
OworICAgICA2OSAgICAgICAgfQorICAgICA3MCAgICAgICAgc3RhdGljIHN0YXRpY01ldGhvZDIo
KQorICAgICA3MSAgICAgICAgeworICAgICA3MiAgICAgICAgICAgIHZhciB4OworICAgICA3MyAg
ICAgICAgfQorICAgICA3NCAgICAgICAgbWV0aG9kMSgpIHsKKyAgICAgNzUgICAgICAgICAgICB2
YXIgeDsKKyAgICAgNzYgICAgICAgIH0KKyAgICAgNzcgICAgICAgIG1ldGhvZDIoKQorICAgICA3
OCAgICAgICAgeworICAgICA3OSAgICAgICAgICAgIHZhciB4OworICAgICA4MCAgICAgICAgfQor
ICAgICA4MSAgICAgICAgZ2V0IGdldHRlcjEoKSB7CisgICAgIDgyICAgICAgICAgICAgdmFyIHg7
CisgICAgIDgzICAgICAgICB9CisgICAgIDg0ICAgICAgICBnZXQgZ2V0dGVyMigpCisgICAgIDg1
ICAgICAgICB7CisgICAgIDg2ICAgICAgICAgICAgdmFyIHg7CisgICAgIDg3ICAgICAgICB9Cisg
ICAgIDg4ICAgICAgICBzZXQgc2V0dGVyMSh4KSB7CisgICAgIDg5ICAgICAgICAgICAgdmFyIHM7
CisgICAgIDkwICAgICAgICB9CisgICAgIDkxICAgICAgICBzZXQgc2V0dGVyMih4KQorICAgICA5
MiAgICAgICAgeworICAgICA5MyAgICAgICAgICAgIHZhciBzOworICAgICA5NCAgICAgICAgfQor
ICAgICA5NSAgICB9CisgICAgIDk2ICAgIAorID0+ICA5NyAgICB8eCA9PiB4OworICAgICA5OCAg
ICAoKSA9PiAxOworICAgICA5OSAgICAoeCkgPT4geDsKKyAgICAxMDAgICAgKHgpID0+IHsgeCB9
OwogCiAKIElOU0VSVElORyBBVDogNjY6MAotUEFVU0VTIEFUOiA2Njo0Ci0gICAgIDYzICAgICAg
ICB9Ci0gICAgIDY0ICAgICAgICBtZXRob2QxKCkgewotICAgICA2NSAgICAgICAgICAgIHZhciB4
OwotLT0+ICA2NiAgICAjICAgIHx9Ci0gICAgIDY3ICAgICAgICBtZXRob2QyKCkKLSAgICAgNjgg
ICAgICAgIHsKLSAgICAgNjkgICAgICAgICAgICB2YXIgeDsKK1BBVVNFUyBBVDogOTc6MAorICAg
ICA2MyAgICAgICAgdmFyIHg7CisgICAgIDY0ICAgIH0KKyAgICAgNjUgICAgCisgLT4gIDY2ICAg
ICNjbGFzcyBDbGFzcyB7CisgICAgIDY3ICAgICAgICBzdGF0aWMgc3RhdGljTWV0aG9kMSgpIHsK
KyAgICAgNjggICAgICAgICAgICB2YXIgeDsKKyAgICAgNjkgICAgICAgIH0KKyAgICAgNzAgICAg
ICAgIHN0YXRpYyBzdGF0aWNNZXRob2QyKCkKKyAgICAgNzEgICAgICAgIHsKKyAgICAgNzIgICAg
ICAgICAgICB2YXIgeDsKKyAgICAgNzMgICAgICAgIH0KKyAgICAgNzQgICAgICAgIG1ldGhvZDEo
KSB7CisgICAgIDc1ICAgICAgICAgICAgdmFyIHg7CisgICAgIDc2ICAgICAgICB9CisgICAgIDc3
ICAgICAgICBtZXRob2QyKCkKKyAgICAgNzggICAgICAgIHsKKyAgICAgNzkgICAgICAgICAgICB2
YXIgeDsKKyAgICAgODAgICAgICAgIH0KKyAgICAgODEgICAgICAgIGdldCBnZXR0ZXIxKCkgewor
ICAgICA4MiAgICAgICAgICAgIHZhciB4OworICAgICA4MyAgICAgICAgfQorICAgICA4NCAgICAg
ICAgZ2V0IGdldHRlcjIoKQorICAgICA4NSAgICAgICAgeworICAgICA4NiAgICAgICAgICAgIHZh
ciB4OworICAgICA4NyAgICAgICAgfQorICAgICA4OCAgICAgICAgc2V0IHNldHRlcjEoeCkgewor
ICAgICA4OSAgICAgICAgICAgIHZhciBzOworICAgICA5MCAgICAgICAgfQorICAgICA5MSAgICAg
ICAgc2V0IHNldHRlcjIoeCkKKyAgICAgOTIgICAgICAgIHsKKyAgICAgOTMgICAgICAgICAgICB2
YXIgczsKKyAgICAgOTQgICAgICAgIH0KKyAgICAgOTUgICAgfQorICAgICA5NiAgICAKKyA9PiAg
OTcgICAgfHggPT4geDsKKyAgICAgOTggICAgKCkgPT4gMTsKKyAgICAgOTkgICAgKHgpID0+IHg7
CisgICAgMTAwICAgICh4KSA9PiB7IHggfTsKIAogCiBJTlNFUlRJTkcgQVQ6IDY3OjAKLVBBVVNF
UyBBVDogNjk6OAotICAgICA2NCAgICAgICAgbWV0aG9kMSgpIHsKLSAgICAgNjUgICAgICAgICAg
ICB2YXIgeDsKLSAgICAgNjYgICAgICAgIH0KLSAtPiAgNjcgICAgIyAgICBtZXRob2QyKCkKLSAg
ICAgNjggICAgICAgIHsKLSA9PiAgNjkgICAgICAgICAgICB8dmFyIHg7Ci0gICAgIDcwICAgICAg
ICB9Ci0gICAgIDcxICAgICAgICBnZXQgZ2V0dGVyMSgpIHsKLSAgICAgNzIgICAgICAgICAgICB2
YXIgeDsKK1BBVVNFUyBBVDogNjg6OAorICAgICA2NCAgICB9CisgICAgIDY1ICAgIAorICAgICA2
NiAgICBjbGFzcyBDbGFzcyB7CisgLT4gIDY3ICAgICMgICAgc3RhdGljIHN0YXRpY01ldGhvZDEo
KSB7CisgPT4gIDY4ICAgICAgICAgICAgfHZhciB4OworICAgICA2OSAgICAgICAgfQorICAgICA3
MCAgICAgICAgc3RhdGljIHN0YXRpY01ldGhvZDIoKQorICAgICA3MSAgICAgICAgewogCiAKIElO
U0VSVElORyBBVDogNjg6MAotUEFVU0VTIEFUOiA2OTo4Ci0gICAgIDY1ICAgICAgICAgICAgdmFy
IHg7Ci0gICAgIDY2ICAgICAgICB9Ci0gICAgIDY3ICAgICAgICBtZXRob2QyKCkKLSAtPiAgNjgg
ICAgIyAgICB7Ci0gPT4gIDY5ICAgICAgICAgICAgfHZhciB4OwotICAgICA3MCAgICAgICAgfQot
ICAgICA3MSAgICAgICAgZ2V0IGdldHRlcjEoKSB7Ci0gICAgIDcyICAgICAgICAgICAgdmFyIHg7
CitQQVVTRVMgQVQ6IDY4OjgKKyAgICAgNjUgICAgCisgICAgIDY2ICAgIGNsYXNzIENsYXNzIHsK
KyAgICAgNjcgICAgICAgIHN0YXRpYyBzdGF0aWNNZXRob2QxKCkgeworLT0+ICA2OCAgICAjICAg
ICAgICB8dmFyIHg7CisgICAgIDY5ICAgICAgICB9CisgICAgIDcwICAgICAgICBzdGF0aWMgc3Rh
dGljTWV0aG9kMigpCisgICAgIDcxICAgICAgICB7CiAKIAogSU5TRVJUSU5HIEFUOiA2OTowCi1Q
QVVTRVMgQVQ6IDY5OjgKLSAgICAgNjYgICAgICAgIH0KLSAgICAgNjcgICAgICAgIG1ldGhvZDIo
KQotICAgICA2OCAgICAgICAgewotLT0+ICA2OSAgICAjICAgICAgICB8dmFyIHg7Ci0gICAgIDcw
ICAgICAgICB9Ci0gICAgIDcxICAgICAgICBnZXQgZ2V0dGVyMSgpIHsKK1BBVVNFUyBBVDogNjk6
NAorICAgICA2NiAgICBjbGFzcyBDbGFzcyB7CisgICAgIDY3ICAgICAgICBzdGF0aWMgc3RhdGlj
TWV0aG9kMSgpIHsKKyAgICAgNjggICAgICAgICAgICB2YXIgeDsKKy09PiAgNjkgICAgIyAgICB8
fQorICAgICA3MCAgICAgICAgc3RhdGljIHN0YXRpY01ldGhvZDIoKQorICAgICA3MSAgICAgICAg
ewogICAgICA3MiAgICAgICAgICAgIHZhciB4OwogCiAKIElOU0VSVElORyBBVDogNzA6MAotUEFV
U0VTIEFUOiA3MDo0Ci0gICAgIDY3ICAgICAgICBtZXRob2QyKCkKLSAgICAgNjggICAgICAgIHsK
LSAgICAgNjkgICAgICAgICAgICB2YXIgeDsKLS09PiAgNzAgICAgIyAgICB8fQotICAgICA3MSAg
ICAgICAgZ2V0IGdldHRlcjEoKSB7Ci0gICAgIDcyICAgICAgICAgICAgdmFyIHg7CitQQVVTRVMg
QVQ6IDcyOjgKKyAgICAgNjcgICAgICAgIHN0YXRpYyBzdGF0aWNNZXRob2QxKCkgeworICAgICA2
OCAgICAgICAgICAgIHZhciB4OworICAgICA2OSAgICAgICAgfQorIC0+ICA3MCAgICAjICAgIHN0
YXRpYyBzdGF0aWNNZXRob2QyKCkKKyAgICAgNzEgICAgICAgIHsKKyA9PiAgNzIgICAgICAgICAg
ICB8dmFyIHg7CiAgICAgIDczICAgICAgICB9CisgICAgIDc0ICAgICAgICBtZXRob2QxKCkgewor
ICAgICA3NSAgICAgICAgICAgIHZhciB4OwogCiAKIElOU0VSVElORyBBVDogNzE6MAogUEFVU0VT
IEFUOiA3Mjo4Ci0gICAgIDY4ICAgICAgICB7Ci0gICAgIDY5ICAgICAgICAgICAgdmFyIHg7Ci0g
ICAgIDcwICAgICAgICB9Ci0gLT4gIDcxICAgICMgICAgZ2V0IGdldHRlcjEoKSB7CisgICAgIDY4
ICAgICAgICAgICAgdmFyIHg7CisgICAgIDY5ICAgICAgICB9CisgICAgIDcwICAgICAgICBzdGF0
aWMgc3RhdGljTWV0aG9kMigpCisgLT4gIDcxICAgICMgICAgewogID0+ICA3MiAgICAgICAgICAg
IHx2YXIgeDsKICAgICAgNzMgICAgICAgIH0KLSAgICAgNzQgICAgICAgIGdldCBnZXR0ZXIyKCkK
LSAgICAgNzUgICAgICAgIHsKKyAgICAgNzQgICAgICAgIG1ldGhvZDEoKSB7CisgICAgIDc1ICAg
ICAgICAgICAgdmFyIHg7CiAKIAogSU5TRVJUSU5HIEFUOiA3MjowCiBQQVVTRVMgQVQ6IDcyOjgK
LSAgICAgNjkgICAgICAgICAgICB2YXIgeDsKLSAgICAgNzAgICAgICAgIH0KLSAgICAgNzEgICAg
ICAgIGdldCBnZXR0ZXIxKCkgeworICAgICA2OSAgICAgICAgfQorICAgICA3MCAgICAgICAgc3Rh
dGljIHN0YXRpY01ldGhvZDIoKQorICAgICA3MSAgICAgICAgewogLT0+ICA3MiAgICAjICAgICAg
ICB8dmFyIHg7CiAgICAgIDczICAgICAgICB9Ci0gICAgIDc0ICAgICAgICBnZXQgZ2V0dGVyMigp
Ci0gICAgIDc1ICAgICAgICB7CisgICAgIDc0ICAgICAgICBtZXRob2QxKCkgeworICAgICA3NSAg
ICAgICAgICAgIHZhciB4OwogCiAKIElOU0VSVElORyBBVDogNzM6MAogUEFVU0VTIEFUOiA3Mzo0
Ci0gICAgIDcwICAgICAgICB9Ci0gICAgIDcxICAgICAgICBnZXQgZ2V0dGVyMSgpIHsKKyAgICAg
NzAgICAgICAgIHN0YXRpYyBzdGF0aWNNZXRob2QyKCkKKyAgICAgNzEgICAgICAgIHsKICAgICAg
NzIgICAgICAgICAgICB2YXIgeDsKIC09PiAgNzMgICAgIyAgICB8fQotICAgICA3NCAgICAgICAg
Z2V0IGdldHRlcjIoKQotICAgICA3NSAgICAgICAgewotICAgICA3NiAgICAgICAgICAgIHZhciB4
OworICAgICA3NCAgICAgICAgbWV0aG9kMSgpIHsKKyAgICAgNzUgICAgICAgICAgICB2YXIgeDsK
KyAgICAgNzYgICAgICAgIH0KIAogCiBJTlNFUlRJTkcgQVQ6IDc0OjAKLVBBVVNFUyBBVDogNzY6
OAotICAgICA3MSAgICAgICAgZ2V0IGdldHRlcjEoKSB7CitQQVVTRVMgQVQ6IDc1OjgKKyAgICAg
NzEgICAgICAgIHsKICAgICAgNzIgICAgICAgICAgICB2YXIgeDsKICAgICAgNzMgICAgICAgIH0K
LSAtPiAgNzQgICAgIyAgICBnZXQgZ2V0dGVyMigpCi0gICAgIDc1ICAgICAgICB7Ci0gPT4gIDc2
ICAgICAgICAgICAgfHZhciB4OwotICAgICA3NyAgICAgICAgfQotICAgICA3OCAgICAgICAgc2V0
IHNldHRlcjEoeCkgewotICAgICA3OSAgICAgICAgICAgIHZhciBzOworIC0+ICA3NCAgICAjICAg
IG1ldGhvZDEoKSB7CisgPT4gIDc1ICAgICAgICAgICAgfHZhciB4OworICAgICA3NiAgICAgICAg
fQorICAgICA3NyAgICAgICAgbWV0aG9kMigpCisgICAgIDc4ICAgICAgICB7CiAKIAogSU5TRVJU
SU5HIEFUOiA3NTowCi1QQVVTRVMgQVQ6IDc2OjgKK1BBVVNFUyBBVDogNzU6OAogICAgICA3MiAg
ICAgICAgICAgIHZhciB4OwogICAgICA3MyAgICAgICAgfQotICAgICA3NCAgICAgICAgZ2V0IGdl
dHRlcjIoKQotIC0+ICA3NSAgICAjICAgIHsKLSA9PiAgNzYgICAgICAgICAgICB8dmFyIHg7Ci0g
ICAgIDc3ICAgICAgICB9Ci0gICAgIDc4ICAgICAgICBzZXQgc2V0dGVyMSh4KSB7Ci0gICAgIDc5
ICAgICAgICAgICAgdmFyIHM7CisgICAgIDc0ICAgICAgICBtZXRob2QxKCkgeworLT0+ICA3NSAg
ICAjICAgICAgICB8dmFyIHg7CisgICAgIDc2ICAgICAgICB9CisgICAgIDc3ICAgICAgICBtZXRo
b2QyKCkKKyAgICAgNzggICAgICAgIHsKIAogCiBJTlNFUlRJTkcgQVQ6IDc2OjAKLVBBVVNFUyBB
VDogNzY6OAorUEFVU0VTIEFUOiA3Njo0CiAgICAgIDczICAgICAgICB9Ci0gICAgIDc0ICAgICAg
ICBnZXQgZ2V0dGVyMigpCi0gICAgIDc1ICAgICAgICB7Ci0tPT4gIDc2ICAgICMgICAgICAgIHx2
YXIgeDsKLSAgICAgNzcgICAgICAgIH0KLSAgICAgNzggICAgICAgIHNldCBzZXR0ZXIxKHgpIHsK
LSAgICAgNzkgICAgICAgICAgICB2YXIgczsKKyAgICAgNzQgICAgICAgIG1ldGhvZDEoKSB7Cisg
ICAgIDc1ICAgICAgICAgICAgdmFyIHg7CistPT4gIDc2ICAgICMgICAgfH0KKyAgICAgNzcgICAg
ICAgIG1ldGhvZDIoKQorICAgICA3OCAgICAgICAgeworICAgICA3OSAgICAgICAgICAgIHZhciB4
OwogCiAKIElOU0VSVElORyBBVDogNzc6MAotUEFVU0VTIEFUOiA3Nzo0Ci0gICAgIDc0ICAgICAg
ICBnZXQgZ2V0dGVyMigpCi0gICAgIDc1ICAgICAgICB7Ci0gICAgIDc2ICAgICAgICAgICAgdmFy
IHg7Ci0tPT4gIDc3ICAgICMgICAgfH0KLSAgICAgNzggICAgICAgIHNldCBzZXR0ZXIxKHgpIHsK
LSAgICAgNzkgICAgICAgICAgICB2YXIgczsKK1BBVVNFUyBBVDogNzk6OAorICAgICA3NCAgICAg
ICAgbWV0aG9kMSgpIHsKKyAgICAgNzUgICAgICAgICAgICB2YXIgeDsKKyAgICAgNzYgICAgICAg
IH0KKyAtPiAgNzcgICAgIyAgICBtZXRob2QyKCkKKyAgICAgNzggICAgICAgIHsKKyA9PiAgNzkg
ICAgICAgICAgICB8dmFyIHg7CiAgICAgIDgwICAgICAgICB9CisgICAgIDgxICAgICAgICBnZXQg
Z2V0dGVyMSgpIHsKKyAgICAgODIgICAgICAgICAgICB2YXIgeDsKIAogCiBJTlNFUlRJTkcgQVQ6
IDc4OjAKIFBBVVNFUyBBVDogNzk6OAotICAgICA3NSAgICAgICAgewotICAgICA3NiAgICAgICAg
ICAgIHZhciB4OwotICAgICA3NyAgICAgICAgfQotIC0+ICA3OCAgICAjICAgIHNldCBzZXR0ZXIx
KHgpIHsKLSA9PiAgNzkgICAgICAgICAgICB8dmFyIHM7CisgICAgIDc1ICAgICAgICAgICAgdmFy
IHg7CisgICAgIDc2ICAgICAgICB9CisgICAgIDc3ICAgICAgICBtZXRob2QyKCkKKyAtPiAgNzgg
ICAgIyAgICB7CisgPT4gIDc5ICAgICAgICAgICAgfHZhciB4OwogICAgICA4MCAgICAgICAgfQot
ICAgICA4MSAgICAgICAgc2V0IHNldHRlcjIoeCkKLSAgICAgODIgICAgICAgIHsKKyAgICAgODEg
ICAgICAgIGdldCBnZXR0ZXIxKCkgeworICAgICA4MiAgICAgICAgICAgIHZhciB4OwogCiAKIElO
U0VSVElORyBBVDogNzk6MAogUEFVU0VTIEFUOiA3OTo4Ci0gICAgIDc2ICAgICAgICAgICAgdmFy
IHg7Ci0gICAgIDc3ICAgICAgICB9Ci0gICAgIDc4ICAgICAgICBzZXQgc2V0dGVyMSh4KSB7Ci0t
PT4gIDc5ICAgICMgICAgICAgIHx2YXIgczsKKyAgICAgNzYgICAgICAgIH0KKyAgICAgNzcgICAg
ICAgIG1ldGhvZDIoKQorICAgICA3OCAgICAgICAgeworLT0+ICA3OSAgICAjICAgICAgICB8dmFy
IHg7CiAgICAgIDgwICAgICAgICB9Ci0gICAgIDgxICAgICAgICBzZXQgc2V0dGVyMih4KQotICAg
ICA4MiAgICAgICAgeworICAgICA4MSAgICAgICAgZ2V0IGdldHRlcjEoKSB7CisgICAgIDgyICAg
ICAgICAgICAgdmFyIHg7CiAKIAogSU5TRVJUSU5HIEFUOiA4MDowCiBQQVVTRVMgQVQ6IDgwOjQK
LSAgICAgNzcgICAgICAgIH0KLSAgICAgNzggICAgICAgIHNldCBzZXR0ZXIxKHgpIHsKLSAgICAg
NzkgICAgICAgICAgICB2YXIgczsKKyAgICAgNzcgICAgICAgIG1ldGhvZDIoKQorICAgICA3OCAg
ICAgICAgeworICAgICA3OSAgICAgICAgICAgIHZhciB4OwogLT0+ICA4MCAgICAjICAgIHx9Ci0g
ICAgIDgxICAgICAgICBzZXQgc2V0dGVyMih4KQotICAgICA4MiAgICAgICAgewotICAgICA4MyAg
ICAgICAgICAgIHZhciBzOworICAgICA4MSAgICAgICAgZ2V0IGdldHRlcjEoKSB7CisgICAgIDgy
ICAgICAgICAgICAgdmFyIHg7CisgICAgIDgzICAgICAgICB9CiAKIAogSU5TRVJUSU5HIEFUOiA4
MTowCi1QQVVTRVMgQVQ6IDgzOjgKLSAgICAgNzggICAgICAgIHNldCBzZXR0ZXIxKHgpIHsKLSAg
ICAgNzkgICAgICAgICAgICB2YXIgczsKK1BBVVNFUyBBVDogODI6OAorICAgICA3OCAgICAgICAg
eworICAgICA3OSAgICAgICAgICAgIHZhciB4OwogICAgICA4MCAgICAgICAgfQotIC0+ICA4MSAg
ICAjICAgIHNldCBzZXR0ZXIyKHgpCi0gICAgIDgyICAgICAgICB7Ci0gPT4gIDgzICAgICAgICAg
ICAgfHZhciBzOwotICAgICA4NCAgICAgICAgfQotICAgICA4NSAgICB9Ci0gICAgIDg2ICAgIAor
IC0+ICA4MSAgICAjICAgIGdldCBnZXR0ZXIxKCkgeworID0+ICA4MiAgICAgICAgICAgIHx2YXIg
eDsKKyAgICAgODMgICAgICAgIH0KKyAgICAgODQgICAgICAgIGdldCBnZXR0ZXIyKCkKKyAgICAg
ODUgICAgICAgIHsKIAogCiBJTlNFUlRJTkcgQVQ6IDgyOjAKLVBBVVNFUyBBVDogODM6OAotICAg
ICA3OSAgICAgICAgICAgIHZhciBzOworUEFVU0VTIEFUOiA4Mjo4CisgICAgIDc5ICAgICAgICAg
ICAgdmFyIHg7CiAgICAgIDgwICAgICAgICB9Ci0gICAgIDgxICAgICAgICBzZXQgc2V0dGVyMih4
KQotIC0+ICA4MiAgICAjICAgIHsKLSA9PiAgODMgICAgICAgICAgICB8dmFyIHM7Ci0gICAgIDg0
ICAgICAgICB9Ci0gICAgIDg1ICAgIH0KLSAgICAgODYgICAgCisgICAgIDgxICAgICAgICBnZXQg
Z2V0dGVyMSgpIHsKKy09PiAgODIgICAgIyAgICAgICAgfHZhciB4OworICAgICA4MyAgICAgICAg
fQorICAgICA4NCAgICAgICAgZ2V0IGdldHRlcjIoKQorICAgICA4NSAgICAgICAgewogCiAKIElO
U0VSVElORyBBVDogODM6MAotUEFVU0VTIEFUOiA4Mzo4CitQQVVTRVMgQVQ6IDgzOjQKICAgICAg
ODAgICAgICAgIH0KLSAgICAgODEgICAgICAgIHNldCBzZXR0ZXIyKHgpCi0gICAgIDgyICAgICAg
ICB7Ci0tPT4gIDgzICAgICMgICAgICAgIHx2YXIgczsKLSAgICAgODQgICAgICAgIH0KLSAgICAg
ODUgICAgfQotICAgICA4NiAgICAKKyAgICAgODEgICAgICAgIGdldCBnZXR0ZXIxKCkgeworICAg
ICA4MiAgICAgICAgICAgIHZhciB4OworLT0+ICA4MyAgICAjICAgIHx9CisgICAgIDg0ICAgICAg
ICBnZXQgZ2V0dGVyMigpCisgICAgIDg1ICAgICAgICB7CisgICAgIDg2ICAgICAgICAgICAgdmFy
IHg7CiAKIAogSU5TRVJUSU5HIEFUOiA4NDowCi1QQVVTRVMgQVQ6IDg0OjQKLSAgICAgODEgICAg
ICAgIHNldCBzZXR0ZXIyKHgpCi0gICAgIDgyICAgICAgICB7Ci0gICAgIDgzICAgICAgICAgICAg
dmFyIHM7Ci0tPT4gIDg0ICAgICMgICAgfH0KLSAgICAgODUgICAgfQotICAgICA4NiAgICAKLSAg
ICAgODcgICAgeCA9PiB4OworUEFVU0VTIEFUOiA4Njo4CisgICAgIDgxICAgICAgICBnZXQgZ2V0
dGVyMSgpIHsKKyAgICAgODIgICAgICAgICAgICB2YXIgeDsKKyAgICAgODMgICAgICAgIH0KKyAt
PiAgODQgICAgIyAgICBnZXQgZ2V0dGVyMigpCisgICAgIDg1ICAgICAgICB7CisgPT4gIDg2ICAg
ICAgICAgICAgfHZhciB4OworICAgICA4NyAgICAgICAgfQorICAgICA4OCAgICAgICAgc2V0IHNl
dHRlcjEoeCkgeworICAgICA4OSAgICAgICAgICAgIHZhciBzOwogCiAKIElOU0VSVElORyBBVDog
ODU6MAotUEFVU0VTIEFUOiA4NzowCi0gICAgIDgyICAgICAgICB7Ci0gICAgIDgzICAgICAgICAg
ICAgdmFyIHM7Ci0gICAgIDg0ICAgICAgICB9Ci0gLT4gIDg1ICAgICN9Ci0gICAgIDg2ICAgIAot
ID0+ICA4NyAgICB8eCA9PiB4OwotICAgICA4OCAgICAoKSA9PiAxOwotICAgICA4OSAgICAoeCkg
PT4geDsKLSAgICAgOTAgICAgKHgpID0+IHsgeCB9OworUEFVU0VTIEFUOiA4Njo4CisgICAgIDgy
ICAgICAgICAgICAgdmFyIHg7CisgICAgIDgzICAgICAgICB9CisgICAgIDg0ICAgICAgICBnZXQg
Z2V0dGVyMigpCisgLT4gIDg1ICAgICMgICAgeworID0+ICA4NiAgICAgICAgICAgIHx2YXIgeDsK
KyAgICAgODcgICAgICAgIH0KKyAgICAgODggICAgICAgIHNldCBzZXR0ZXIxKHgpIHsKKyAgICAg
ODkgICAgICAgICAgICB2YXIgczsKIAogCiBJTlNFUlRJTkcgQVQ6IDg2OjAKLVBBVVNFUyBBVDog
ODc6MAotICAgICA4MyAgICAgICAgICAgIHZhciBzOwotICAgICA4NCAgICAgICAgfQotICAgICA4
NSAgICB9Ci0gLT4gIDg2ICAgICMKLSA9PiAgODcgICAgfHggPT4geDsKLSAgICAgODggICAgKCkg
PT4gMTsKLSAgICAgODkgICAgKHgpID0+IHg7Ci0gICAgIDkwICAgICh4KSA9PiB7IHggfTsKK1BB
VVNFUyBBVDogODY6OAorICAgICA4MyAgICAgICAgfQorICAgICA4NCAgICAgICAgZ2V0IGdldHRl
cjIoKQorICAgICA4NSAgICAgICAgeworLT0+ICA4NiAgICAjICAgICAgICB8dmFyIHg7CisgICAg
IDg3ICAgICAgICB9CisgICAgIDg4ICAgICAgICBzZXQgc2V0dGVyMSh4KSB7CisgICAgIDg5ICAg
ICAgICAgICAgdmFyIHM7CiAKIAogSU5TRVJUSU5HIEFUOiA4NzowCi1QQVVTRVMgQVQ6IDg3OjAK
LSAgICAgODQgICAgICAgIH0KLSAgICAgODUgICAgfQotICAgICA4NiAgICAKLS09PiAgODcgICAg
fHggPT4geDsKLSAgICAgODggICAgKCkgPT4gMTsKLSAgICAgODkgICAgKHgpID0+IHg7Ci0gICAg
IDkwICAgICh4KSA9PiB7IHggfTsKK1BBVVNFUyBBVDogODc6NAorICAgICA4NCAgICAgICAgZ2V0
IGdldHRlcjIoKQorICAgICA4NSAgICAgICAgeworICAgICA4NiAgICAgICAgICAgIHZhciB4Owor
LT0+ICA4NyAgICAjICAgIHx9CisgICAgIDg4ICAgICAgICBzZXQgc2V0dGVyMSh4KSB7CisgICAg
IDg5ICAgICAgICAgICAgdmFyIHM7CisgICAgIDkwICAgICAgICB9CiAKIAogSU5TRVJUSU5HIEFU
OiA4ODowCi1QQVVTRVMgQVQ6IDg4OjAKLSAgICAgODUgICAgfQotICAgICA4NiAgICAKLSAgICAg
ODcgICAgeCA9PiB4OwotLT0+ICA4OCAgICB8KCkgPT4gMTsKLSAgICAgODkgICAgKHgpID0+IHg7
Ci0gICAgIDkwICAgICh4KSA9PiB7IHggfTsKLSAgICAgOTEgICAgKHgpID0+IHsKK1BBVVNFUyBB
VDogODk6OAorICAgICA4NSAgICAgICAgeworICAgICA4NiAgICAgICAgICAgIHZhciB4OworICAg
ICA4NyAgICAgICAgfQorIC0+ICA4OCAgICAjICAgIHNldCBzZXR0ZXIxKHgpIHsKKyA9PiAgODkg
ICAgICAgICAgICB8dmFyIHM7CisgICAgIDkwICAgICAgICB9CisgICAgIDkxICAgICAgICBzZXQg
c2V0dGVyMih4KQorICAgICA5MiAgICAgICAgewogCiAKIElOU0VSVElORyBBVDogODk6MAotUEFV
U0VTIEFUOiA4OTowCi0gICAgIDg2ICAgIAotICAgICA4NyAgICB4ID0+IHg7Ci0gICAgIDg4ICAg
ICgpID0+IDE7Ci0tPT4gIDg5ICAgIHwoeCkgPT4geDsKLSAgICAgOTAgICAgKHgpID0+IHsgeCB9
OwotICAgICA5MSAgICAoeCkgPT4gewotICAgICA5MiAgICAgICAgeAorUEFVU0VTIEFUOiA4OTo4
CisgICAgIDg2ICAgICAgICAgICAgdmFyIHg7CisgICAgIDg3ICAgICAgICB9CisgICAgIDg4ICAg
ICAgICBzZXQgc2V0dGVyMSh4KSB7CistPT4gIDg5ICAgICMgICAgICAgIHx2YXIgczsKKyAgICAg
OTAgICAgICAgIH0KKyAgICAgOTEgICAgICAgIHNldCBzZXR0ZXIyKHgpCisgICAgIDkyICAgICAg
ICB7CiAKIAogSU5TRVJUSU5HIEFUOiA5MDowCi1QQVVTRVMgQVQ6IDkwOjAKLSAgICAgODcgICAg
eCA9PiB4OwotICAgICA4OCAgICAoKSA9PiAxOwotICAgICA4OSAgICAoeCkgPT4geDsKLS09PiAg
OTAgICAgfCh4KSA9PiB7IHggfTsKLSAgICAgOTEgICAgKHgpID0+IHsKLSAgICAgOTIgICAgICAg
IHgKLSAgICAgOTMgICAgfTsKK1BBVVNFUyBBVDogOTA6NAorICAgICA4NyAgICAgICAgfQorICAg
ICA4OCAgICAgICAgc2V0IHNldHRlcjEoeCkgeworICAgICA4OSAgICAgICAgICAgIHZhciBzOwor
LT0+ICA5MCAgICAjICAgIHx9CisgICAgIDkxICAgICAgICBzZXQgc2V0dGVyMih4KQorICAgICA5
MiAgICAgICAgeworICAgICA5MyAgICAgICAgICAgIHZhciBzOwogCiAKIElOU0VSVElORyBBVDog
OTE6MAotUEFVU0VTIEFUOiA5MTowCi0gICAgIDg4ICAgICgpID0+IDE7Ci0gICAgIDg5ICAgICh4
KSA9PiB4OwotICAgICA5MCAgICAoeCkgPT4geyB4IH07Ci0tPT4gIDkxICAgIHwoeCkgPT4gewot
ICAgICA5MiAgICAgICAgeAotICAgICA5MyAgICB9OwotICAgICA5NCAgICAoKSA9PiB7CitQQVVT
RVMgQVQ6IDkzOjgKKyAgICAgODggICAgICAgIHNldCBzZXR0ZXIxKHgpIHsKKyAgICAgODkgICAg
ICAgICAgICB2YXIgczsKKyAgICAgOTAgICAgICAgIH0KKyAtPiAgOTEgICAgIyAgICBzZXQgc2V0
dGVyMih4KQorICAgICA5MiAgICAgICAgeworID0+ICA5MyAgICAgICAgICAgIHx2YXIgczsKKyAg
ICAgOTQgICAgICAgIH0KKyAgICAgOTUgICAgfQorICAgICA5NiAgICAKIAogCiBJTlNFUlRJTkcg
QVQ6IDkyOjAKLVBBVVNFUyBBVDogOTI6NAotICAgICA4OSAgICAoeCkgPT4geDsKLSAgICAgOTAg
ICAgKHgpID0+IHsgeCB9OwotICAgICA5MSAgICAoeCkgPT4gewotLT0+ICA5MiAgICAjICAgIHx4
Ci0gICAgIDkzICAgIH07Ci0gICAgIDk0ICAgICgpID0+IHsKLSAgICAgOTUgICAgICAgIHZhciB4
OworUEFVU0VTIEFUOiA5Mzo4CisgICAgIDg5ICAgICAgICAgICAgdmFyIHM7CisgICAgIDkwICAg
ICAgICB9CisgICAgIDkxICAgICAgICBzZXQgc2V0dGVyMih4KQorIC0+ICA5MiAgICAjICAgIHsK
KyA9PiAgOTMgICAgICAgICAgICB8dmFyIHM7CisgICAgIDk0ICAgICAgICB9CisgICAgIDk1ICAg
IH0KKyAgICAgOTYgICAgCiAKIAogSU5TRVJUSU5HIEFUOiA5MzowCi1QQVVTRVMgQVQ6IDkzOjAK
LSAgICAgOTAgICAgKHgpID0+IHsgeCB9OwotICAgICA5MSAgICAoeCkgPT4gewotICAgICA5MiAg
ICAgICAgeAotLT0+ICA5MyAgICB8fTsKLSAgICAgOTQgICAgKCkgPT4gewotICAgICA5NSAgICAg
ICAgdmFyIHg7Ci0gICAgIDk2ICAgIH07CitQQVVTRVMgQVQ6IDkzOjgKKyAgICAgOTAgICAgICAg
IH0KKyAgICAgOTEgICAgICAgIHNldCBzZXR0ZXIyKHgpCisgICAgIDkyICAgICAgICB7CistPT4g
IDkzICAgICMgICAgICAgIHx2YXIgczsKKyAgICAgOTQgICAgICAgIH0KKyAgICAgOTUgICAgfQor
ICAgICA5NiAgICAKIAogCiBJTlNFUlRJTkcgQVQ6IDk0OjAKLVBBVVNFUyBBVDogOTQ6MAotICAg
ICA5MSAgICAoeCkgPT4gewotICAgICA5MiAgICAgICAgeAotICAgICA5MyAgICB9OwotLT0+ICA5
NCAgICB8KCkgPT4gewotICAgICA5NSAgICAgICAgdmFyIHg7Ci0gICAgIDk2ICAgIH07Ci0gICAg
IDk3ICAgIAorUEFVU0VTIEFUOiA5NDo0CisgICAgIDkxICAgICAgICBzZXQgc2V0dGVyMih4KQor
ICAgICA5MiAgICAgICAgeworICAgICA5MyAgICAgICAgICAgIHZhciBzOworLT0+ICA5NCAgICAj
ICAgIHx9CisgICAgIDk1ICAgIH0KKyAgICAgOTYgICAgCisgICAgIDk3ICAgIHggPT4geDsKIAog
CiBJTlNFUlRJTkcgQVQ6IDk1OjAKLVBBVVNFUyBBVDogOTU6NAotICAgICA5MiAgICAgICAgeAot
ICAgICA5MyAgICB9OwotICAgICA5NCAgICAoKSA9PiB7Ci0tPT4gIDk1ICAgICMgICAgfHZhciB4
OwotICAgICA5NiAgICB9OwotICAgICA5NyAgICAKLSAgICAgOTggICAgdmFyIGZPYmogPSB7CitQ
QVVTRVMgQVQ6IDk3OjAKKyAgICAgOTIgICAgICAgIHsKKyAgICAgOTMgICAgICAgICAgICB2YXIg
czsKKyAgICAgOTQgICAgICAgIH0KKyAtPiAgOTUgICAgI30KKyAgICAgOTYgICAgCisgPT4gIDk3
ICAgIHx4ID0+IHg7CisgICAgIDk4ICAgICgpID0+IDE7CisgICAgIDk5ICAgICh4KSA9PiB4Owor
ICAgIDEwMCAgICAoeCkgPT4geyB4IH07CiAKIAogSU5TRVJUSU5HIEFUOiA5NjowCi1QQVVTRVMg
QVQ6IDk2OjAKLSAgICAgOTMgICAgfTsKLSAgICAgOTQgICAgKCkgPT4gewotICAgICA5NSAgICAg
ICAgdmFyIHg7Ci0tPT4gIDk2ICAgIHx9OwotICAgICA5NyAgICAKLSAgICAgOTggICAgdmFyIGZP
YmogPSB7Ci0gICAgIDk5ICAgICAgICBmMTogZnVuY3Rpb24oKSB7CitQQVVTRVMgQVQ6IDk3OjAK
KyAgICAgOTMgICAgICAgICAgICB2YXIgczsKKyAgICAgOTQgICAgICAgIH0KKyAgICAgOTUgICAg
fQorIC0+ICA5NiAgICAjCisgPT4gIDk3ICAgIHx4ID0+IHg7CisgICAgIDk4ICAgICgpID0+IDE7
CisgICAgIDk5ICAgICh4KSA9PiB4OworICAgIDEwMCAgICAoeCkgPT4geyB4IH07CiAKIAogSU5T
RVJUSU5HIEFUOiA5NzowCi1QQVVTRVMgQVQ6IDk4OjAKLSAgICAgOTQgICAgKCkgPT4gewotICAg
ICA5NSAgICAgICAgdmFyIHg7Ci0gICAgIDk2ICAgIH07Ci0gLT4gIDk3ICAgICMKLSA9PiAgOTgg
ICAgfHZhciBmT2JqID0gewotICAgICA5OSAgICAgICAgZjE6IGZ1bmN0aW9uKCkgewotICAgIDEw
MCAgICAgICAgICAgIHZhciB4OwotICAgIDEwMSAgICAgICAgfSwKK1BBVVNFUyBBVDogOTc6MAor
ICAgICA5NCAgICAgICAgfQorICAgICA5NSAgICB9CisgICAgIDk2ICAgIAorLT0+ICA5NyAgICB8
eCA9PiB4OworICAgICA5OCAgICAoKSA9PiAxOworICAgICA5OSAgICAoeCkgPT4geDsKKyAgICAx
MDAgICAgKHgpID0+IHsgeCB9OwogCiAKIElOU0VSVElORyBBVDogOTg6MAogUEFVU0VTIEFUOiA5
ODowCi0gICAgIDk1ICAgICAgICB2YXIgeDsKLSAgICAgOTYgICAgfTsKLSAgICAgOTcgICAgCi0t
PT4gIDk4ICAgIHx2YXIgZk9iaiA9IHsKLSAgICAgOTkgICAgICAgIGYxOiBmdW5jdGlvbigpIHsK
LSAgICAxMDAgICAgICAgICAgICB2YXIgeDsKLSAgICAxMDEgICAgICAgIH0sCisgICAgIDk1ICAg
IH0KKyAgICAgOTYgICAgCisgICAgIDk3ICAgIHggPT4geDsKKy09PiAgOTggICAgfCgpID0+IDE7
CisgICAgIDk5ICAgICh4KSA9PiB4OworICAgIDEwMCAgICAoeCkgPT4geyB4IH07CisgICAgMTAx
ICAgICh4KSA9PiB7CiAKIAogSU5TRVJUSU5HIEFUOiA5OTowCi1QQVVTRVMgQVQ6IDEwMDo4Ci0g
ICAgIDk2ICAgIH07Ci0gICAgIDk3ICAgIAotICAgICA5OCAgICB2YXIgZk9iaiA9IHsKLSAtPiAg
OTkgICAgIyAgICBmMTogZnVuY3Rpb24oKSB7Ci0gPT4gMTAwICAgICAgICAgICAgfHZhciB4Owot
ICAgIDEwMSAgICAgICAgfSwKLSAgICAxMDIgICAgICAgIGYyOiBmdW5jdGlvbigpCi0gICAgMTAz
ICAgICAgICB7CitQQVVTRVMgQVQ6IDk5OjAKKyAgICAgOTYgICAgCisgICAgIDk3ICAgIHggPT4g
eDsKKyAgICAgOTggICAgKCkgPT4gMTsKKy09PiAgOTkgICAgfCh4KSA9PiB4OworICAgIDEwMCAg
ICAoeCkgPT4geyB4IH07CisgICAgMTAxICAgICh4KSA9PiB7CisgICAgMTAyICAgICAgICB4CiAK
IAogSU5TRVJUSU5HIEFUOiAxMDA6MAotUEFVU0VTIEFUOiAxMDA6OAotICAgICA5NyAgICAKLSAg
ICAgOTggICAgdmFyIGZPYmogPSB7Ci0gICAgIDk5ICAgICAgICBmMTogZnVuY3Rpb24oKSB7Ci0t
PT4gMTAwICAgICMgICAgICAgIHx2YXIgeDsKLSAgICAxMDEgICAgICAgIH0sCi0gICAgMTAyICAg
ICAgICBmMjogZnVuY3Rpb24oKQotICAgIDEwMyAgICAgICAgeworUEFVU0VTIEFUOiAxMDA6MAor
ICAgICA5NyAgICB4ID0+IHg7CisgICAgIDk4ICAgICgpID0+IDE7CisgICAgIDk5ICAgICh4KSA9
PiB4OworLT0+IDEwMCAgICB8KHgpID0+IHsgeCB9OworICAgIDEwMSAgICAoeCkgPT4geworICAg
IDEwMiAgICAgICAgeAorICAgIDEwMyAgICB9OwogCiAKIElOU0VSVElORyBBVDogMTAxOjAKLVBB
VVNFUyBBVDogMTAxOjQKLSAgICAgOTggICAgdmFyIGZPYmogPSB7Ci0gICAgIDk5ICAgICAgICBm
MTogZnVuY3Rpb24oKSB7Ci0gICAgMTAwICAgICAgICAgICAgdmFyIHg7Ci0tPT4gMTAxICAgICMg
ICAgfH0sCi0gICAgMTAyICAgICAgICBmMjogZnVuY3Rpb24oKQotICAgIDEwMyAgICAgICAgewot
ICAgIDEwNCAgICAgICAgICAgIHZhciB4OworUEFVU0VTIEFUOiAxMDE6MAorICAgICA5OCAgICAo
KSA9PiAxOworICAgICA5OSAgICAoeCkgPT4geDsKKyAgICAxMDAgICAgKHgpID0+IHsgeCB9Owor
LT0+IDEwMSAgICB8KHgpID0+IHsKKyAgICAxMDIgICAgICAgIHgKKyAgICAxMDMgICAgfTsKKyAg
ICAxMDQgICAgKCkgPT4gewogCiAKIElOU0VSVElORyBBVDogMTAyOjAKLVBBVVNFUyBBVDogMTA0
OjgKLSAgICAgOTkgICAgICAgIGYxOiBmdW5jdGlvbigpIHsKLSAgICAxMDAgICAgICAgICAgICB2
YXIgeDsKLSAgICAxMDEgICAgICAgIH0sCi0gLT4gMTAyICAgICMgICAgZjI6IGZ1bmN0aW9uKCkK
LSAgICAxMDMgICAgICAgIHsKLSA9PiAxMDQgICAgICAgICAgICB8dmFyIHg7Ci0gICAgMTA1ICAg
ICAgICB9LAotICAgIDEwNiAgICAgICAgZjM6ICgpID0+IHsKLSAgICAxMDcgICAgICAgICAgICB2
YXIgeDsKK1BBVVNFUyBBVDogMTAyOjQKKyAgICAgOTkgICAgKHgpID0+IHg7CisgICAgMTAwICAg
ICh4KSA9PiB7IHggfTsKKyAgICAxMDEgICAgKHgpID0+IHsKKy09PiAxMDIgICAgIyAgICB8eAor
ICAgIDEwMyAgICB9OworICAgIDEwNCAgICAoKSA9PiB7CisgICAgMTA1ICAgICAgICB2YXIgeDsK
IAogCiBJTlNFUlRJTkcgQVQ6IDEwMzowCi1QQVVTRVMgQVQ6IDEwNDo4Ci0gICAgMTAwICAgICAg
ICAgICAgdmFyIHg7Ci0gICAgMTAxICAgICAgICB9LAotICAgIDEwMiAgICAgICAgZjI6IGZ1bmN0
aW9uKCkKLSAtPiAxMDMgICAgIyAgICB7Ci0gPT4gMTA0ICAgICAgICAgICAgfHZhciB4OwotICAg
IDEwNSAgICAgICAgfSwKLSAgICAxMDYgICAgICAgIGYzOiAoKSA9PiB7Ci0gICAgMTA3ICAgICAg
ICAgICAgdmFyIHg7CitQQVVTRVMgQVQ6IDEwMzowCisgICAgMTAwICAgICh4KSA9PiB7IHggfTsK
KyAgICAxMDEgICAgKHgpID0+IHsKKyAgICAxMDIgICAgICAgIHgKKy09PiAxMDMgICAgfH07Cisg
ICAgMTA0ICAgICgpID0+IHsKKyAgICAxMDUgICAgICAgIHZhciB4OworICAgIDEwNiAgICB9Owog
CiAKIElOU0VSVElORyBBVDogMTA0OjAKLVBBVVNFUyBBVDogMTA0OjgKLSAgICAxMDEgICAgICAg
IH0sCi0gICAgMTAyICAgICAgICBmMjogZnVuY3Rpb24oKQotICAgIDEwMyAgICAgICAgewotLT0+
IDEwNCAgICAjICAgICAgICB8dmFyIHg7Ci0gICAgMTA1ICAgICAgICB9LAotICAgIDEwNiAgICAg
ICAgZjM6ICgpID0+IHsKLSAgICAxMDcgICAgICAgICAgICB2YXIgeDsKK1BBVVNFUyBBVDogMTA0
OjAKKyAgICAxMDEgICAgKHgpID0+IHsKKyAgICAxMDIgICAgICAgIHgKKyAgICAxMDMgICAgfTsK
Ky09PiAxMDQgICAgfCgpID0+IHsKKyAgICAxMDUgICAgICAgIHZhciB4OworICAgIDEwNiAgICB9
OworICAgIDEwNyAgICAKIAogCiBJTlNFUlRJTkcgQVQ6IDEwNTowCiBQQVVTRVMgQVQ6IDEwNTo0
Ci0gICAgMTAyICAgICAgICBmMjogZnVuY3Rpb24oKQotICAgIDEwMyAgICAgICAgewotICAgIDEw
NCAgICAgICAgICAgIHZhciB4OwotLT0+IDEwNSAgICAjICAgIHx9LAotICAgIDEwNiAgICAgICAg
ZjM6ICgpID0+IHsKLSAgICAxMDcgICAgICAgICAgICB2YXIgeDsKLSAgICAxMDggICAgICAgIH0s
CisgICAgMTAyICAgICAgICB4CisgICAgMTAzICAgIH07CisgICAgMTA0ICAgICgpID0+IHsKKy09
PiAxMDUgICAgIyAgICB8dmFyIHg7CisgICAgMTA2ICAgIH07CisgICAgMTA3ICAgIAorICAgIDEw
OCAgICB2YXIgZk9iaiA9IHsKIAogCiBJTlNFUlRJTkcgQVQ6IDEwNjowCi1QQVVTRVMgQVQ6IDEw
Nzo4Ci0gICAgMTAzICAgICAgICB7Ci0gICAgMTA0ICAgICAgICAgICAgdmFyIHg7Ci0gICAgMTA1
ICAgICAgICB9LAotIC0+IDEwNiAgICAjICAgIGYzOiAoKSA9PiB7Ci0gPT4gMTA3ICAgICAgICAg
ICAgfHZhciB4OwotICAgIDEwOCAgICAgICAgfSwKLSAgICAxMDkgICAgICAgIGY0OiAoKSA9Pgot
ICAgIDExMCAgICAgICAgeworUEFVU0VTIEFUOiAxMDY6MAorICAgIDEwMyAgICB9OworICAgIDEw
NCAgICAoKSA9PiB7CisgICAgMTA1ICAgICAgICB2YXIgeDsKKy09PiAxMDYgICAgfH07CisgICAg
MTA3ICAgIAorICAgIDEwOCAgICB2YXIgZk9iaiA9IHsKKyAgICAxMDkgICAgICAgIGYxOiBmdW5j
dGlvbigpIHsKIAogCiBJTlNFUlRJTkcgQVQ6IDEwNzowCi1QQVVTRVMgQVQ6IDEwNzo4Ci0gICAg
MTA0ICAgICAgICAgICAgdmFyIHg7Ci0gICAgMTA1ICAgICAgICB9LAotICAgIDEwNiAgICAgICAg
ZjM6ICgpID0+IHsKLS09PiAxMDcgICAgIyAgICAgICAgfHZhciB4OwotICAgIDEwOCAgICAgICAg
fSwKLSAgICAxMDkgICAgICAgIGY0OiAoKSA9PgotICAgIDExMCAgICAgICAgeworUEFVU0VTIEFU
OiAxMDg6MAorICAgIDEwNCAgICAoKSA9PiB7CisgICAgMTA1ICAgICAgICB2YXIgeDsKKyAgICAx
MDYgICAgfTsKKyAtPiAxMDcgICAgIworID0+IDEwOCAgICB8dmFyIGZPYmogPSB7CisgICAgMTA5
ICAgICAgICBmMTogZnVuY3Rpb24oKSB7CisgICAgMTEwICAgICAgICAgICAgdmFyIHg7CisgICAg
MTExICAgICAgICB9LAogCiAKIElOU0VSVElORyBBVDogMTA4OjAKLVBBVVNFUyBBVDogMTA4OjQK
LSAgICAxMDUgICAgICAgIH0sCi0gICAgMTA2ICAgICAgICBmMzogKCkgPT4gewotICAgIDEwNyAg
ICAgICAgICAgIHZhciB4OwotLT0+IDEwOCAgICAjICAgIHx9LAotICAgIDEwOSAgICAgICAgZjQ6
ICgpID0+Ci0gICAgMTEwICAgICAgICB7Ci0gICAgMTExICAgICAgICAgICAgdmFyIHg7CitQQVVT
RVMgQVQ6IDEwODowCisgICAgMTA1ICAgICAgICB2YXIgeDsKKyAgICAxMDYgICAgfTsKKyAgICAx
MDcgICAgCistPT4gMTA4ICAgIHx2YXIgZk9iaiA9IHsKKyAgICAxMDkgICAgICAgIGYxOiBmdW5j
dGlvbigpIHsKKyAgICAxMTAgICAgICAgICAgICB2YXIgeDsKKyAgICAxMTEgICAgICAgIH0sCiAK
IAogSU5TRVJUSU5HIEFUOiAxMDk6MAotUEFVU0VTIEFUOiAxMTE6OAotICAgIDEwNiAgICAgICAg
ZjM6ICgpID0+IHsKLSAgICAxMDcgICAgICAgICAgICB2YXIgeDsKLSAgICAxMDggICAgICAgIH0s
Ci0gLT4gMTA5ICAgICMgICAgZjQ6ICgpID0+Ci0gICAgMTEwICAgICAgICB7Ci0gPT4gMTExICAg
ICAgICAgICAgfHZhciB4OwotICAgIDExMiAgICAgICAgfSAgIAotICAgIDExMyAgICB9OwotICAg
IDExNCAgICAKK1BBVVNFUyBBVDogMTEwOjgKKyAgICAxMDYgICAgfTsKKyAgICAxMDcgICAgCisg
ICAgMTA4ICAgIHZhciBmT2JqID0geworIC0+IDEwOSAgICAjICAgIGYxOiBmdW5jdGlvbigpIHsK
KyA9PiAxMTAgICAgICAgICAgICB8dmFyIHg7CisgICAgMTExICAgICAgICB9LAorICAgIDExMiAg
ICAgICAgZjI6IGZ1bmN0aW9uKCkKKyAgICAxMTMgICAgICAgIHsKIAogCiBJTlNFUlRJTkcgQVQ6
IDExMDowCi1QQVVTRVMgQVQ6IDExMTo4Ci0gICAgMTA3ICAgICAgICAgICAgdmFyIHg7Ci0gICAg
MTA4ICAgICAgICB9LAotICAgIDEwOSAgICAgICAgZjQ6ICgpID0+Ci0gLT4gMTEwICAgICMgICAg
ewotID0+IDExMSAgICAgICAgICAgIHx2YXIgeDsKLSAgICAxMTIgICAgICAgIH0gICAKLSAgICAx
MTMgICAgfTsKLSAgICAxMTQgICAgCitQQVVTRVMgQVQ6IDExMDo4CisgICAgMTA3ICAgIAorICAg
IDEwOCAgICB2YXIgZk9iaiA9IHsKKyAgICAxMDkgICAgICAgIGYxOiBmdW5jdGlvbigpIHsKKy09
PiAxMTAgICAgIyAgICAgICAgfHZhciB4OworICAgIDExMSAgICAgICAgfSwKKyAgICAxMTIgICAg
ICAgIGYyOiBmdW5jdGlvbigpCisgICAgMTEzICAgICAgICB7CiAKIAogSU5TRVJUSU5HIEFUOiAx
MTE6MAotUEFVU0VTIEFUOiAxMTE6OAotICAgIDEwOCAgICAgICAgfSwKLSAgICAxMDkgICAgICAg
IGY0OiAoKSA9PgotICAgIDExMCAgICAgICAgewotLT0+IDExMSAgICAjICAgICAgICB8dmFyIHg7
Ci0gICAgMTEyICAgICAgICB9ICAgCi0gICAgMTEzICAgIH07Ci0gICAgMTE0ICAgIAorUEFVU0VT
IEFUOiAxMTE6NAorICAgIDEwOCAgICB2YXIgZk9iaiA9IHsKKyAgICAxMDkgICAgICAgIGYxOiBm
dW5jdGlvbigpIHsKKyAgICAxMTAgICAgICAgICAgICB2YXIgeDsKKy09PiAxMTEgICAgIyAgICB8
fSwKKyAgICAxMTIgICAgICAgIGYyOiBmdW5jdGlvbigpCisgICAgMTEzICAgICAgICB7CisgICAg
MTE0ICAgICAgICAgICAgdmFyIHg7CiAKIAogSU5TRVJUSU5HIEFUOiAxMTI6MAotUEFVU0VTIEFU
OiAxMTI6NAotICAgIDEwOSAgICAgICAgZjQ6ICgpID0+Ci0gICAgMTEwICAgICAgICB7Ci0gICAg
MTExICAgICAgICAgICAgdmFyIHg7Ci0tPT4gMTEyICAgICMgICAgfH0gICAKLSAgICAxMTMgICAg
fTsKLSAgICAxMTQgICAgCitQQVVTRVMgQVQ6IDExNDo4CisgICAgMTA5ICAgICAgICBmMTogZnVu
Y3Rpb24oKSB7CisgICAgMTEwICAgICAgICAgICAgdmFyIHg7CisgICAgMTExICAgICAgICB9LAor
IC0+IDExMiAgICAjICAgIGYyOiBmdW5jdGlvbigpCisgICAgMTEzICAgICAgICB7CisgPT4gMTE0
ICAgICAgICAgICAgfHZhciB4OworICAgIDExNSAgICAgICAgfSwKKyAgICAxMTYgICAgICAgIGYz
OiAoKSA9PiB7CisgICAgMTE3ICAgICAgICAgICAgdmFyIHg7CiAKIAogSU5TRVJUSU5HIEFUOiAx
MTM6MAotUFJPRFVDRVM6IENvdWxkIG5vdCByZXNvbHZlIGJyZWFrcG9pbnQKK1BBVVNFUyBBVDog
MTE0OjgKKyAgICAxMTAgICAgICAgICAgICB2YXIgeDsKKyAgICAxMTEgICAgICAgIH0sCisgICAg
MTEyICAgICAgICBmMjogZnVuY3Rpb24oKQorIC0+IDExMyAgICAjICAgIHsKKyA9PiAxMTQgICAg
ICAgICAgICB8dmFyIHg7CisgICAgMTE1ICAgICAgICB9LAorICAgIDExNiAgICAgICAgZjM6ICgp
ID0+IHsKKyAgICAxMTcgICAgICAgICAgICB2YXIgeDsKKwogCiBJTlNFUlRJTkcgQVQ6IDExNDow
CitQQVVTRVMgQVQ6IDExNDo4CisgICAgMTExICAgICAgICB9LAorICAgIDExMiAgICAgICAgZjI6
IGZ1bmN0aW9uKCkKKyAgICAxMTMgICAgICAgIHsKKy09PiAxMTQgICAgIyAgICAgICAgfHZhciB4
OworICAgIDExNSAgICAgICAgfSwKKyAgICAxMTYgICAgICAgIGYzOiAoKSA9PiB7CisgICAgMTE3
ICAgICAgICAgICAgdmFyIHg7CisKKworSU5TRVJUSU5HIEFUOiAxMTU6MAorUEFVU0VTIEFUOiAx
MTU6NAorICAgIDExMiAgICAgICAgZjI6IGZ1bmN0aW9uKCkKKyAgICAxMTMgICAgICAgIHsKKyAg
ICAxMTQgICAgICAgICAgICB2YXIgeDsKKy09PiAxMTUgICAgIyAgICB8fSwKKyAgICAxMTYgICAg
ICAgIGYzOiAoKSA9PiB7CisgICAgMTE3ICAgICAgICAgICAgdmFyIHg7CisgICAgMTE4ICAgICAg
ICB9LAorCisKK0lOU0VSVElORyBBVDogMTE2OjAKK1BBVVNFUyBBVDogMTE3OjgKKyAgICAxMTMg
ICAgICAgIHsKKyAgICAxMTQgICAgICAgICAgICB2YXIgeDsKKyAgICAxMTUgICAgICAgIH0sCisg
LT4gMTE2ICAgICMgICAgZjM6ICgpID0+IHsKKyA9PiAxMTcgICAgICAgICAgICB8dmFyIHg7Cisg
ICAgMTE4ICAgICAgICB9LAorICAgIDExOSAgICAgICAgZjQ6ICgpID0+CisgICAgMTIwICAgICAg
ICB7CisKKworSU5TRVJUSU5HIEFUOiAxMTc6MAorUEFVU0VTIEFUOiAxMTc6OAorICAgIDExNCAg
ICAgICAgICAgIHZhciB4OworICAgIDExNSAgICAgICAgfSwKKyAgICAxMTYgICAgICAgIGYzOiAo
KSA9PiB7CistPT4gMTE3ICAgICMgICAgICAgIHx2YXIgeDsKKyAgICAxMTggICAgICAgIH0sCisg
ICAgMTE5ICAgICAgICBmNDogKCkgPT4KKyAgICAxMjAgICAgICAgIHsKKworCitJTlNFUlRJTkcg
QVQ6IDExODowCitQQVVTRVMgQVQ6IDExODo0CisgICAgMTE1ICAgICAgICB9LAorICAgIDExNiAg
ICAgICAgZjM6ICgpID0+IHsKKyAgICAxMTcgICAgICAgICAgICB2YXIgeDsKKy09PiAxMTggICAg
IyAgICB8fSwKKyAgICAxMTkgICAgICAgIGY0OiAoKSA9PgorICAgIDEyMCAgICAgICAgeworICAg
IDEyMSAgICAgICAgICAgIHZhciB4OworCisKK0lOU0VSVElORyBBVDogMTE5OjAKK1BBVVNFUyBB
VDogMTIxOjgKKyAgICAxMTYgICAgICAgIGYzOiAoKSA9PiB7CisgICAgMTE3ICAgICAgICAgICAg
dmFyIHg7CisgICAgMTE4ICAgICAgICB9LAorIC0+IDExOSAgICAjICAgIGY0OiAoKSA9PgorICAg
IDEyMCAgICAgICAgeworID0+IDEyMSAgICAgICAgICAgIHx2YXIgeDsKKyAgICAxMjIgICAgICAg
IH0gICAKKyAgICAxMjMgICAgfTsKKyAgICAxMjQgICAgCisKKworSU5TRVJUSU5HIEFUOiAxMjA6
MAorUEFVU0VTIEFUOiAxMjE6OAorICAgIDExNyAgICAgICAgICAgIHZhciB4OworICAgIDExOCAg
ICAgICAgfSwKKyAgICAxMTkgICAgICAgIGY0OiAoKSA9PgorIC0+IDEyMCAgICAjICAgIHsKKyA9
PiAxMjEgICAgICAgICAgICB8dmFyIHg7CisgICAgMTIyICAgICAgICB9ICAgCisgICAgMTIzICAg
IH07CisgICAgMTI0ICAgIAorCisKK0lOU0VSVElORyBBVDogMTIxOjAKK1BBVVNFUyBBVDogMTIx
OjgKKyAgICAxMTggICAgICAgIH0sCisgICAgMTE5ICAgICAgICBmNDogKCkgPT4KKyAgICAxMjAg
ICAgICAgIHsKKy09PiAxMjEgICAgIyAgICAgICAgfHZhciB4OworICAgIDEyMiAgICAgICAgfSAg
IAorICAgIDEyMyAgICB9OworICAgIDEyNCAgICAKKworCitJTlNFUlRJTkcgQVQ6IDEyMjowCitQ
QVVTRVMgQVQ6IDEyMjo0CisgICAgMTE5ICAgICAgICBmNDogKCkgPT4KKyAgICAxMjAgICAgICAg
IHsKKyAgICAxMjEgICAgICAgICAgICB2YXIgeDsKKy09PiAxMjIgICAgIyAgICB8fSAgIAorICAg
IDEyMyAgICB9OworICAgIDEyNCAgICAKKworCitJTlNFUlRJTkcgQVQ6IDEyMzowCitQUk9EVUNF
UzogQ291bGQgbm90IHJlc29sdmUgYnJlYWtwb2ludAorCitJTlNFUlRJTkcgQVQ6IDEyNDowCiBQ
Uk9EVUNFUzogQ291bGQgbm90IHJlc29sdmUgYnJlYWtwb2ludAogCiAtLSBSdW5uaW5nIHRlc3Qg
Y2FzZTogRGVidWdnZXIucmVzb2x2ZWRCcmVha3BvaW50LmR1bXBFYWNoTGluZS5Vbmljb2RlCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvYnJlYWtwb2ludHMvcmVz
b3VyY2VzL2R1bXAtZnVuY3Rpb25zLmpzIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2Vy
L2JyZWFrcG9pbnRzL3Jlc291cmNlcy9kdW1wLWZ1bmN0aW9ucy5qcwppbmRleCBlZjE2NDZlMzI3
OGZkODU2N2ExNmVlMTMxNTIyYmFlYjFjZWZlYjFkLi43YjQ3ODhjMGI5ZGE4MTYyZmE1OGMyZTMz
ODNiYmIzMjA0YjkxMWUxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdn
ZXIvYnJlYWtwb2ludHMvcmVzb3VyY2VzL2R1bXAtZnVuY3Rpb25zLmpzCisrKyBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50cy9yZXNvdXJjZXMvZHVtcC1mdW5jdGlv
bnMuanMKQEAgLTExMiwzICsxMTIsMTMgQEAgdmFyIGZPYmogPSB7CiAgICAgICAgIHZhciB4Owog
ICAgIH0gICAKIH07CisKK2Z1bmN0aW9uIGNvbW1hT25lTGluZSgpIHsKKyAgICBpbmxpbmUoKSwg
aW5saW5lKCksIGlubGluZSgpOworfQorCitmdW5jdGlvbiBjb21tYU11bHRpTGluZSgpIHsKKyAg
ICBpbmxpbmUoKSwKKyAgICBpbmxpbmUoKSwKKyAgICBpbmxpbmUoKTsKK30KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50cy9yZXNvdXJjZXMvZHVt
cC1nZW5lcmFsLmpzIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnRz
L3Jlc291cmNlcy9kdW1wLWdlbmVyYWwuanMKaW5kZXggNWE0NjY1ZWQ0M2FmOWZlYjljNzQwMmVh
ZDcxZWEwNDZhMThmYzRhZC4uZmFmNGUxODIzNjgzZTk1YjdjNjg1YjhiNzM1MGNhYTQyMzhjNzQ2
ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnRz
L3Jlc291cmNlcy9kdW1wLWdlbmVyYWwuanMKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Rl
YnVnZ2VyL2JyZWFrcG9pbnRzL3Jlc291cmNlcy9kdW1wLWdlbmVyYWwuanMKQEAgLTE5OCw4ICsx
OTgsNiBAQCBpMi5tZXRob2QoKTsKIHZhciB0MSA9IGAkezF9ICR7eD0xfSAke2EoKX1gOwogdmFy
IHQyID0gYWAkezF9ICR7eD0xfSAke2EoKX1gOwogCi1hKGEoKSwgYigpKTsKLQogaWYgKG8xLnAx
KQogICAgIGEoKTsKIApAQCAtMjA4LDMgKzIwNiwxMSBAQCBpZiAobzFbInAxIl0pCiAKIGlmIChT
dHJpbmcucmF3YHRlc3RgKQogICAgIGEoKTsKKworYShhKCksIGIoKSk7CisKK2EoKSwgYigpLCBj
KCk7CisKK2EoKSwKK2IoKSwKK2MoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kZWJ1Z2dlci9zdGVwcGluZy9zdGVwT3Zlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcvc3RlcE92ZXItZXhwZWN0ZWQudHh0CmluZGV4IGY1
M2FhZjBjMzNjZGI3NDc1MDk2MzRmMGQyYTM2YzNmNDVkNThjYTUuLjFkZTkwZjg1MTdkNjRhZTQz
NjAwOWQ2ZWIyOGJjZWJjNjgxY2E4YjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kZWJ1Z2dlci9zdGVwcGluZy9zdGVwT3Zlci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3N0ZXBwaW5nL3N0ZXBPdmVyLWV4cGVjdGVkLnR4dApAQCAt
MSwxMTkgKzEsMTIyIEBACi1BTEVSVDogbG9nIDEKK0FMRVJUOiBmdW5jdGlvbiBsb2cgMQorQUxF
UlQ6IGNvbW1hIGxvZyAxCitBTEVSVDogY29tbWEgbG9nIDIKK0FMRVJUOiBjb21tYSBsb2cgMwog
Q2hlY2tpbmcgcGF1c2UgbG9jYXRpb25zIHdoZW4gc3RlcHBpbmcgd2l0aCAic3RlcE92ZXIiLgog
CiAKID09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogRGVidWdnZXIuc3RlcE92ZXIKIC0tIFJ1bm5pbmcg
dGVzdCBjYXNlOiBEZWJ1Z2dlci5zdGVwT3Zlci5zdGF0ZW1lbnRzCiBQQVVTRUQgKGRlYnVnZ2Vy
LXN0YXRlbWVudCkKLVBBVVNFIEFUIGVudHJ5MToxMjo1CitQQVVTRSBBVCB0ZXN0U3RhdGVtZW50
czoxMjo1CiAgICAgICA4ICAgIH0KICAgICAgIDkgICAgCi0gICAgIDEwICAgIGZ1bmN0aW9uIGVu
dHJ5MSgpIHsKKyAgICAgMTAgICAgZnVuY3Rpb24gdGVzdFN0YXRlbWVudHMoKSB7CiAgLT4gIDEx
ICAgICAgICB8ZGVidWdnZXI7CiAgICAgIDEyICAgICAgICBsZXQgeCA9IDE7CiAgICAgIDEzICAg
ICAgICBsZXQgeSA9IDI7CiAgICAgIDE0ICAgIH0KIAotUEFVU0UgQVQgZW50cnkxOjEzOjUKK1BB
VVNFIEFUIHRlc3RTdGF0ZW1lbnRzOjEzOjUKICAgICAgIDkgICAgCi0gICAgIDEwICAgIGZ1bmN0
aW9uIGVudHJ5MSgpIHsKKyAgICAgMTAgICAgZnVuY3Rpb24gdGVzdFN0YXRlbWVudHMoKSB7CiAg
ICAgIDExICAgICAgICBkZWJ1Z2dlcjsKICAtPiAgMTIgICAgICAgIHxsZXQgeCA9IDE7CiAgICAg
IDEzICAgICAgICBsZXQgeSA9IDI7CiAgICAgIDE0ICAgIH0KICAgICAgMTUgICAgCiAKLVBBVVNF
IEFUIGVudHJ5MToxNDo1Ci0gICAgIDEwICAgIGZ1bmN0aW9uIGVudHJ5MSgpIHsKK1BBVVNFIEFU
IHRlc3RTdGF0ZW1lbnRzOjE0OjUKKyAgICAgMTAgICAgZnVuY3Rpb24gdGVzdFN0YXRlbWVudHMo
KSB7CiAgICAgIDExICAgICAgICBkZWJ1Z2dlcjsKICAgICAgMTIgICAgICAgIGxldCB4ID0gMTsK
ICAtPiAgMTMgICAgICAgIHxsZXQgeSA9IDI7CiAgICAgIDE0ICAgIH0KICAgICAgMTUgICAgCi0g
ICAgIDE2ICAgIGZ1bmN0aW9uIGVudHJ5MigpIHsKKyAgICAgMTYgICAgZnVuY3Rpb24gdGVzdEZ1
bmN0aW9ucygpIHsKIAotUEFVU0UgQVQgZW50cnkxOjE1OjIKK1BBVVNFIEFUIHRlc3RTdGF0ZW1l
bnRzOjE1OjIKICAgICAgMTEgICAgICAgIGRlYnVnZ2VyOwogICAgICAxMiAgICAgICAgbGV0IHgg
PSAxOwogICAgICAxMyAgICAgICAgbGV0IHkgPSAyOwogIC0+ICAxNCAgICB9fAogICAgICAxNSAg
ICAKLSAgICAgMTYgICAgZnVuY3Rpb24gZW50cnkyKCkgeworICAgICAxNiAgICBmdW5jdGlvbiB0
ZXN0RnVuY3Rpb25zKCkgewogICAgICAxNyAgICAgICAgZGVidWdnZXI7CiAKIFJFU1VNRUQKIAog
LS0gUnVubmluZyB0ZXN0IGNhc2U6IERlYnVnZ2VyLnN0ZXBPdmVyLmZ1bmN0aW9uCiBQQVVTRUQg
KGRlYnVnZ2VyLXN0YXRlbWVudCkKLVBBVVNFIEFUIGVudHJ5MjoxODo1CitQQVVTRSBBVCB0ZXN0
RnVuY3Rpb25zOjE4OjUKICAgICAgMTQgICAgfQogICAgICAxNSAgICAKLSAgICAgMTYgICAgZnVu
Y3Rpb24gZW50cnkyKCkgeworICAgICAxNiAgICBmdW5jdGlvbiB0ZXN0RnVuY3Rpb25zKCkgewog
IC0+ICAxNyAgICAgICAgfGRlYnVnZ2VyOwogICAgICAxOCAgICAgICAgbGV0IGJlZm9yZSA9IDE7
Ci0gICAgIDE5ICAgICAgICB0ZXN0QWxlcnQoImxvZyAxIik7CisgICAgIDE5ICAgICAgICB0ZXN0
QWxlcnQoImZ1bmN0aW9uIGxvZyAxIik7CiAgICAgIDIwICAgICAgICBsZXQgYWZ0ZXIgPSAyOwog
Ci1QQVVTRSBBVCBlbnRyeTI6MTk6NQorUEFVU0UgQVQgdGVzdEZ1bmN0aW9uczoxOTo1CiAgICAg
IDE1ICAgIAotICAgICAxNiAgICBmdW5jdGlvbiBlbnRyeTIoKSB7CisgICAgIDE2ICAgIGZ1bmN0
aW9uIHRlc3RGdW5jdGlvbnMoKSB7CiAgICAgIDE3ICAgICAgICBkZWJ1Z2dlcjsKICAtPiAgMTgg
ICAgICAgIHxsZXQgYmVmb3JlID0gMTsKLSAgICAgMTkgICAgICAgIHRlc3RBbGVydCgibG9nIDEi
KTsKKyAgICAgMTkgICAgICAgIHRlc3RBbGVydCgiZnVuY3Rpb24gbG9nIDEiKTsKICAgICAgMjAg
ICAgICAgIGxldCBhZnRlciA9IDI7CiAgICAgIDIxICAgIH0KIAotUEFVU0UgQVQgZW50cnkyOjIw
OjUKLSAgICAgMTYgICAgZnVuY3Rpb24gZW50cnkyKCkgeworUEFVU0UgQVQgdGVzdEZ1bmN0aW9u
czoyMDo1CisgICAgIDE2ICAgIGZ1bmN0aW9uIHRlc3RGdW5jdGlvbnMoKSB7CiAgICAgIDE3ICAg
ICAgICBkZWJ1Z2dlcjsKICAgICAgMTggICAgICAgIGxldCBiZWZvcmUgPSAxOwotIC0+ICAxOSAg
ICAgICAgfHRlc3RBbGVydCgibG9nIDEiKTsKKyAtPiAgMTkgICAgICAgIHx0ZXN0QWxlcnQoImZ1
bmN0aW9uIGxvZyAxIik7CiAgICAgIDIwICAgICAgICBsZXQgYWZ0ZXIgPSAyOwogICAgICAyMSAg
ICB9CiAgICAgIDIyICAgIAogCi1QQVVTRSBBVCBlbnRyeTI6MjE6NQorUEFVU0UgQVQgdGVzdEZ1
bmN0aW9uczoyMTo1CiAgICAgIDE3ICAgICAgICBkZWJ1Z2dlcjsKICAgICAgMTggICAgICAgIGxl
dCBiZWZvcmUgPSAxOwotICAgICAxOSAgICAgICAgdGVzdEFsZXJ0KCJsb2cgMSIpOworICAgICAx
OSAgICAgICAgdGVzdEFsZXJ0KCJmdW5jdGlvbiBsb2cgMSIpOwogIC0+ICAyMCAgICAgICAgfGxl
dCBhZnRlciA9IDI7CiAgICAgIDIxICAgIH0KICAgICAgMjIgICAgCi0gICAgIDIzICAgIGZ1bmN0
aW9uIGVudHJ5MygpIHsKKyAgICAgMjMgICAgZnVuY3Rpb24gdGVzdEV2YWwoKSB7CiAKLVBBVVNF
IEFUIGVudHJ5MjoyMjoyCitQQVVTRSBBVCB0ZXN0RnVuY3Rpb25zOjIyOjIKICAgICAgMTggICAg
ICAgIGxldCBiZWZvcmUgPSAxOwotICAgICAxOSAgICAgICAgdGVzdEFsZXJ0KCJsb2cgMSIpOwor
ICAgICAxOSAgICAgICAgdGVzdEFsZXJ0KCJmdW5jdGlvbiBsb2cgMSIpOwogICAgICAyMCAgICAg
ICAgbGV0IGFmdGVyID0gMjsKICAtPiAgMjEgICAgfXwKICAgICAgMjIgICAgCi0gICAgIDIzICAg
IGZ1bmN0aW9uIGVudHJ5MygpIHsKKyAgICAgMjMgICAgZnVuY3Rpb24gdGVzdEV2YWwoKSB7CiAg
ICAgIDI0ICAgICAgICBkZWJ1Z2dlcjsKIAogUkVTVU1FRAogCiAtLSBSdW5uaW5nIHRlc3QgY2Fz
ZTogRGVidWdnZXIuc3RlcE92ZXIuZXZhbAogUEFVU0VEIChkZWJ1Z2dlci1zdGF0ZW1lbnQpCi1Q
QVVTRSBBVCBlbnRyeTM6MjU6NQorUEFVU0UgQVQgdGVzdEV2YWw6MjU6NQogICAgICAyMSAgICB9
CiAgICAgIDIyICAgIAotICAgICAyMyAgICBmdW5jdGlvbiBlbnRyeTMoKSB7CisgICAgIDIzICAg
IGZ1bmN0aW9uIHRlc3RFdmFsKCkgewogIC0+ICAyNCAgICAgICAgfGRlYnVnZ2VyOwogICAgICAy
NSAgICAgICAgbGV0IGJlZm9yZSA9IDE7CiAgICAgIDI2ICAgICAgICBldmFsKCIxICsgMSIpOwog
ICAgICAyNyAgICAgICAgbGV0IGFmdGVyID0gMjsKIAotUEFVU0UgQVQgZW50cnkzOjI2OjUKK1BB
VVNFIEFUIHRlc3RFdmFsOjI2OjUKICAgICAgMjIgICAgCi0gICAgIDIzICAgIGZ1bmN0aW9uIGVu
dHJ5MygpIHsKKyAgICAgMjMgICAgZnVuY3Rpb24gdGVzdEV2YWwoKSB7CiAgICAgIDI0ICAgICAg
ICBkZWJ1Z2dlcjsKICAtPiAgMjUgICAgICAgIHxsZXQgYmVmb3JlID0gMTsKICAgICAgMjYgICAg
ICAgIGV2YWwoIjEgKyAxIik7CiAgICAgIDI3ICAgICAgICBsZXQgYWZ0ZXIgPSAyOwogICAgICAy
OCAgICB9CiAKLVBBVVNFIEFUIGVudHJ5MzoyNzo1Ci0gICAgIDIzICAgIGZ1bmN0aW9uIGVudHJ5
MygpIHsKK1BBVVNFIEFUIHRlc3RFdmFsOjI3OjUKKyAgICAgMjMgICAgZnVuY3Rpb24gdGVzdEV2
YWwoKSB7CiAgICAgIDI0ICAgICAgICBkZWJ1Z2dlcjsKICAgICAgMjUgICAgICAgIGxldCBiZWZv
cmUgPSAxOwogIC0+ICAyNiAgICAgICAgfGV2YWwoIjEgKyAxIik7CkBAIC0xMjEsMjIgKzEyNCwy
MiBAQCBQQVVTRSBBVCBlbnRyeTM6Mjc6NQogICAgICAyOCAgICB9CiAgICAgIDI5ICAgIAogCi1Q
QVVTRSBBVCBlbnRyeTM6Mjg6NQorUEFVU0UgQVQgdGVzdEV2YWw6Mjg6NQogICAgICAyNCAgICAg
ICAgZGVidWdnZXI7CiAgICAgIDI1ICAgICAgICBsZXQgYmVmb3JlID0gMTsKICAgICAgMjYgICAg
ICAgIGV2YWwoIjEgKyAxIik7CiAgLT4gIDI3ICAgICAgICB8bGV0IGFmdGVyID0gMjsKICAgICAg
MjggICAgfQogICAgICAyOSAgICAKLSAgICAgMzAgICAgZnVuY3Rpb24gZW50cnk0KCkgeworICAg
ICAzMCAgICBmdW5jdGlvbiB0ZXN0TG9jYWxGdW5jdGlvbigpIHsKIAotUEFVU0UgQVQgZW50cnkz
OjI5OjIKK1BBVVNFIEFUIHRlc3RFdmFsOjI5OjIKICAgICAgMjUgICAgICAgIGxldCBiZWZvcmUg
PSAxOwogICAgICAyNiAgICAgICAgZXZhbCgiMSArIDEiKTsKICAgICAgMjcgICAgICAgIGxldCBh
ZnRlciA9IDI7CiAgLT4gIDI4ICAgIH18CiAgICAgIDI5ICAgIAotICAgICAzMCAgICBmdW5jdGlv
biBlbnRyeTQoKSB7CisgICAgIDMwICAgIGZ1bmN0aW9uIHRlc3RMb2NhbEZ1bmN0aW9uKCkgewog
ICAgICAzMSAgICAgICAgKGZ1bmN0aW9uKCkgewogCiBSRVNVTUVECkBAIC0xNDUsNyArMTQ4LDcg
QEAgUkVTVU1FRAogUEFVU0VEIChkZWJ1Z2dlci1zdGF0ZW1lbnQpCiBQQVVTRSBBVCA8YW5vbnlt
b3VzPjozMzo5CiAgICAgIDI5ICAgIAotICAgICAzMCAgICBmdW5jdGlvbiBlbnRyeTQoKSB7Cisg
ICAgIDMwICAgIGZ1bmN0aW9uIHRlc3RMb2NhbEZ1bmN0aW9uKCkgewogICAgICAzMSAgICAgICAg
KGZ1bmN0aW9uKCkgewogIC0+ICAzMiAgICAgICAgICAgIHxkZWJ1Z2dlcjsKICAgICAgMzMgICAg
ICAgICAgICBsZXQgaW5uZXIgPSAxOwpAQCAtMTUzLDcgKzE1Niw3IEBAIFBBVVNFIEFUIDxhbm9u
eW1vdXM+OjMzOjkKICAgICAgMzUgICAgICAgIGxldCBvdXRlciA9IDI7CiAKIFBBVVNFIEFUIDxh
bm9ueW1vdXM+OjM0OjkKLSAgICAgMzAgICAgZnVuY3Rpb24gZW50cnk0KCkgeworICAgICAzMCAg
ICBmdW5jdGlvbiB0ZXN0TG9jYWxGdW5jdGlvbigpIHsKICAgICAgMzEgICAgICAgIChmdW5jdGlv
bigpIHsKICAgICAgMzIgICAgICAgICAgICBkZWJ1Z2dlcjsKICAtPiAgMzMgICAgICAgICAgICB8
bGV0IGlubmVyID0gMTsKQEAgLTE3MCwyMyArMTczLDk5IEBAIFBBVVNFIEFUIDxhbm9ueW1vdXM+
OjM1OjYKICAgICAgMzYgICAgfQogICAgICAzNyAgICAKIAotUEFVU0UgQVQgZW50cnk0OjM2OjUK
K1BBVVNFIEFUIHRlc3RMb2NhbEZ1bmN0aW9uOjM2OjUKICAgICAgMzIgICAgICAgICAgICBkZWJ1
Z2dlcjsKICAgICAgMzMgICAgICAgICAgICBsZXQgaW5uZXIgPSAxOwogICAgICAzNCAgICAgICAg
fSkoKTsKICAtPiAgMzUgICAgICAgIHxsZXQgb3V0ZXIgPSAyOwogICAgICAzNiAgICB9CiAgICAg
IDM3ICAgIAotICAgICAzOCAgICAvLyAtLS0tLS0tLS0KKyAgICAgMzggICAgZnVuY3Rpb24gdGVz
dENvbW1hcygpIHsKIAotUEFVU0UgQVQgZW50cnk0OjM3OjIKK1BBVVNFIEFUIHRlc3RMb2NhbEZ1
bmN0aW9uOjM3OjIKICAgICAgMzMgICAgICAgICAgICBsZXQgaW5uZXIgPSAxOwogICAgICAzNCAg
ICAgICAgfSkoKTsKICAgICAgMzUgICAgICAgIGxldCBvdXRlciA9IDI7CiAgLT4gIDM2ICAgIH18
CiAgICAgIDM3ICAgIAotICAgICAzOCAgICAvLyAtLS0tLS0tLS0KLSAgICAgMzkgICAgCisgICAg
IDM4ICAgIGZ1bmN0aW9uIHRlc3RDb21tYXMoKSB7CisgICAgIDM5ICAgICAgICBkZWJ1Z2dlcjsK
KworUkVTVU1FRAorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRGVidWdnZXIuc3RlcE92ZXIuY29t
bWFzCitQQVVTRUQgKGRlYnVnZ2VyLXN0YXRlbWVudCkKK1BBVVNFIEFUIHRlc3RDb21tYXM6NDA6
NQorICAgICAzNiAgICB9CisgICAgIDM3ICAgIAorICAgICAzOCAgICBmdW5jdGlvbiB0ZXN0Q29t
bWFzKCkgeworIC0+ICAzOSAgICAgICAgfGRlYnVnZ2VyOworICAgICA0MCAgICAgICAgbGV0IGEg
PSAxLAorICAgICA0MSAgICAgICAgICAgIGIgPSAyLAorICAgICA0MiAgICAgICAgICAgIGMgPSAz
OworCitQQVVTRSBBVCB0ZXN0Q29tbWFzOjQxOjUKKyAgICAgMzcgICAgCisgICAgIDM4ICAgIGZ1
bmN0aW9uIHRlc3RDb21tYXMoKSB7CisgICAgIDM5ICAgICAgICBkZWJ1Z2dlcjsKKyAtPiAgNDAg
ICAgICAgIHxsZXQgYSA9IDEsCisgICAgIDQxICAgICAgICAgICAgYiA9IDIsCisgICAgIDQyICAg
ICAgICAgICAgYyA9IDM7CisgICAgIDQzICAgICAgICB0ZXN0QWxlcnQoImNvbW1hIGxvZyAxIiks
IHRlc3RBbGVydCgiY29tbWEgbG9nIDIiKSwgdGVzdEFsZXJ0KCJjb21tYSBsb2cgMyIpOworCitQ
QVVTRSBBVCB0ZXN0Q29tbWFzOjQyOjkKKyAgICAgMzggICAgZnVuY3Rpb24gdGVzdENvbW1hcygp
IHsKKyAgICAgMzkgICAgICAgIGRlYnVnZ2VyOworICAgICA0MCAgICAgICAgbGV0IGEgPSAxLAor
IC0+ICA0MSAgICAgICAgICAgIHxiID0gMiwKKyAgICAgNDIgICAgICAgICAgICBjID0gMzsKKyAg
ICAgNDMgICAgICAgIHRlc3RBbGVydCgiY29tbWEgbG9nIDEiKSwgdGVzdEFsZXJ0KCJjb21tYSBs
b2cgMiIpLCB0ZXN0QWxlcnQoImNvbW1hIGxvZyAzIik7CisgICAgIDQ0ICAgIH0KKworUEFVU0Ug
QVQgdGVzdENvbW1hczo0Mzo5CisgICAgIDM5ICAgICAgICBkZWJ1Z2dlcjsKKyAgICAgNDAgICAg
ICAgIGxldCBhID0gMSwKKyAgICAgNDEgICAgICAgICAgICBiID0gMiwKKyAtPiAgNDIgICAgICAg
ICAgICB8YyA9IDM7CisgICAgIDQzICAgICAgICB0ZXN0QWxlcnQoImNvbW1hIGxvZyAxIiksIHRl
c3RBbGVydCgiY29tbWEgbG9nIDIiKSwgdGVzdEFsZXJ0KCJjb21tYSBsb2cgMyIpOworICAgICA0
NCAgICB9CisgICAgIDQ1ICAgIAorCitQQVVTRSBBVCB0ZXN0Q29tbWFzOjQ0OjUKKyAgICAgNDAg
ICAgICAgIGxldCBhID0gMSwKKyAgICAgNDEgICAgICAgICAgICBiID0gMiwKKyAgICAgNDIgICAg
ICAgICAgICBjID0gMzsKKyAtPiAgNDMgICAgICAgIHx0ZXN0QWxlcnQoImNvbW1hIGxvZyAxIiks
IHRlc3RBbGVydCgiY29tbWEgbG9nIDIiKSwgdGVzdEFsZXJ0KCJjb21tYSBsb2cgMyIpOworICAg
ICA0NCAgICB9CisgICAgIDQ1ICAgIAorICAgICA0NiAgICAvLyAtLS0tLS0tLS0KKworUEFVU0Ug
QVQgdGVzdENvbW1hczo0NDozMQorICAgICA0MCAgICAgICAgbGV0IGEgPSAxLAorICAgICA0MSAg
ICAgICAgICAgIGIgPSAyLAorICAgICA0MiAgICAgICAgICAgIGMgPSAzOworIC0+ICA0MyAgICAg
ICAgdGVzdEFsZXJ0KCJjb21tYSBsb2cgMSIpLCB8dGVzdEFsZXJ0KCJjb21tYSBsb2cgMiIpLCB0
ZXN0QWxlcnQoImNvbW1hIGxvZyAzIik7CisgICAgIDQ0ICAgIH0KKyAgICAgNDUgICAgCisgICAg
IDQ2ICAgIC8vIC0tLS0tLS0tLQorCitQQVVTRSBBVCB0ZXN0Q29tbWFzOjQ0OjU3CisgICAgIDQw
ICAgICAgICBsZXQgYSA9IDEsCisgICAgIDQxICAgICAgICAgICAgYiA9IDIsCisgICAgIDQyICAg
ICAgICAgICAgYyA9IDM7CisgLT4gIDQzICAgICAgICB0ZXN0QWxlcnQoImNvbW1hIGxvZyAxIiks
IHRlc3RBbGVydCgiY29tbWEgbG9nIDIiKSwgfHRlc3RBbGVydCgiY29tbWEgbG9nIDMiKTsKKyAg
ICAgNDQgICAgfQorICAgICA0NSAgICAKKyAgICAgNDYgICAgLy8gLS0tLS0tLS0tCisKK1BBVVNF
IEFUIHRlc3RDb21tYXM6NDU6MgorICAgICA0MSAgICAgICAgICAgIGIgPSAyLAorICAgICA0MiAg
ICAgICAgICAgIGMgPSAzOworICAgICA0MyAgICAgICAgdGVzdEFsZXJ0KCJjb21tYSBsb2cgMSIp
LCB0ZXN0QWxlcnQoImNvbW1hIGxvZyAyIiksIHRlc3RBbGVydCgiY29tbWEgbG9nIDMiKTsKKyAt
PiAgNDQgICAgfXwKKyAgICAgNDUgICAgCisgICAgIDQ2ICAgIC8vIC0tLS0tLS0tLQorICAgICA0
NyAgICAKIAogUkVTVU1FRAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVi
dWdnZXIvc3RlcHBpbmcvc3RlcE92ZXIuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1
Z2dlci9zdGVwcGluZy9zdGVwT3Zlci5odG1sCmluZGV4IDZiOTQ5MjNiMGNlNTNhMjIxM2Y2MGNj
YjQ3NGI0ZDA4M2Y2NTI4ZTUuLjMyNWI3N2VjZjNjY2NhMjRhN2RmNmEyNzU1YTFjNWZmMTI3YjU5
ZDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zdGVwcGluZy9z
dGVwT3Zlci5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zdGVwcGlu
Zy9zdGVwT3Zlci5odG1sCkBAIC04LDI3ICs4LDI3IEBAIGZ1bmN0aW9uIHRlc3RBbGVydChzdHIp
IHsKICAgICBhbGVydChzdHIpOwogfQogCi1mdW5jdGlvbiBlbnRyeTEoKSB7CitmdW5jdGlvbiB0
ZXN0U3RhdGVtZW50cygpIHsKICAgICBkZWJ1Z2dlcjsKICAgICBsZXQgeCA9IDE7CiAgICAgbGV0
IHkgPSAyOwogfQogCi1mdW5jdGlvbiBlbnRyeTIoKSB7CitmdW5jdGlvbiB0ZXN0RnVuY3Rpb25z
KCkgewogICAgIGRlYnVnZ2VyOwogICAgIGxldCBiZWZvcmUgPSAxOwotICAgIHRlc3RBbGVydCgi
bG9nIDEiKTsKKyAgICB0ZXN0QWxlcnQoImZ1bmN0aW9uIGxvZyAxIik7CiAgICAgbGV0IGFmdGVy
ID0gMjsKIH0KIAotZnVuY3Rpb24gZW50cnkzKCkgeworZnVuY3Rpb24gdGVzdEV2YWwoKSB7CiAg
ICAgZGVidWdnZXI7CiAgICAgbGV0IGJlZm9yZSA9IDE7CiAgICAgZXZhbCgiMSArIDEiKTsKICAg
ICBsZXQgYWZ0ZXIgPSAyOwogfQogCi1mdW5jdGlvbiBlbnRyeTQoKSB7CitmdW5jdGlvbiB0ZXN0
TG9jYWxGdW5jdGlvbigpIHsKICAgICAoZnVuY3Rpb24oKSB7CiAgICAgICAgIGRlYnVnZ2VyOwog
ICAgICAgICBsZXQgaW5uZXIgPSAxOwpAQCAtMzYsNiArMzYsMTQgQEAgZnVuY3Rpb24gZW50cnk0
KCkgewogICAgIGxldCBvdXRlciA9IDI7CiB9CiAKK2Z1bmN0aW9uIHRlc3RDb21tYXMoKSB7Cisg
ICAgZGVidWdnZXI7CisgICAgbGV0IGEgPSAxLAorICAgICAgICBiID0gMiwKKyAgICAgICAgYyA9
IDM7CisgICAgdGVzdEFsZXJ0KCJjb21tYSBsb2cgMSIpLCB0ZXN0QWxlcnQoImNvbW1hIGxvZyAy
IiksIHRlc3RBbGVydCgiY29tbWEgbG9nIDMiKTsKK30KKwogLy8gLS0tLS0tLS0tCiAKIGZ1bmN0
aW9uIHRlc3QoKQpAQCAtNjksMjUgKzc3LDMxIEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgIGFkZFRl
c3RDYXNlKHsKICAgICAgICAgbmFtZTogIkRlYnVnZ2VyLnN0ZXBPdmVyLnN0YXRlbWVudHMiLAog
ICAgICAgICBkZXNjcmlwdGlvbjogInN0ZXAtb3ZlciBzaG91bGQgc3RlcCBvdmVyIHN0YXRlbWVu
dHMuIiwKLSAgICAgICAgZXhwcmVzc2lvbjogInNldFRpbWVvdXQoZW50cnkxKSIsCisgICAgICAg
IGV4cHJlc3Npb246ICJzZXRUaW1lb3V0KHRlc3RTdGF0ZW1lbnRzKSIsCiAgICAgfSk7CiAKICAg
ICBhZGRUZXN0Q2FzZSh7CiAgICAgICAgIG5hbWU6ICJEZWJ1Z2dlci5zdGVwT3Zlci5mdW5jdGlv
biIsCiAgICAgICAgIGRlc2NyaXB0aW9uOiAic3RlcC1vdmVyIHNob3VsZCBzdGVwIG92ZXIgZnVu
Y3Rpb24gY2FsbHMuIiwKLSAgICAgICAgZXhwcmVzc2lvbjogInNldFRpbWVvdXQoZW50cnkyKSIs
CisgICAgICAgIGV4cHJlc3Npb246ICJzZXRUaW1lb3V0KHRlc3RGdW5jdGlvbnMpIiwKICAgICB9
KTsKIAogICAgIGFkZFRlc3RDYXNlKHsKICAgICAgICAgbmFtZTogIkRlYnVnZ2VyLnN0ZXBPdmVy
LmV2YWwiLAogICAgICAgICBkZXNjcmlwdGlvbjogInN0ZXAtb3ZlciBzaG91bGQgc3RlcCBvdmVy
IGFuIGV2YWwgcHJvZ3JhbS4iLAotICAgICAgICBleHByZXNzaW9uOiAic2V0VGltZW91dChlbnRy
eTMpIiwKKyAgICAgICAgZXhwcmVzc2lvbjogInNldFRpbWVvdXQodGVzdEV2YWwpIiwKICAgICB9
KTsKIAogICAgIGFkZFRlc3RDYXNlKHsKICAgICAgICAgbmFtZTogIkRlYnVnZ2VyLnN0ZXBPdmVy
LmlubmVyRnVuY3Rpb24iLAogICAgICAgICBkZXNjcmlwdGlvbjogInN0ZXAtb3ZlciBzaG91bGQg
c3RlcCBvdXQgb2YgYSBmdW5jdGlvbiB0byBpdHMgY2FsbGVyLiIsCi0gICAgICAgIGV4cHJlc3Np
b246ICJzZXRUaW1lb3V0KGVudHJ5NCkiLAorICAgICAgICBleHByZXNzaW9uOiAic2V0VGltZW91
dCh0ZXN0TG9jYWxGdW5jdGlvbikiLAorICAgIH0pOworCisgICAgYWRkVGVzdENhc2UoeworICAg
ICAgICBuYW1lOiAiRGVidWdnZXIuc3RlcE92ZXIuY29tbWFzIiwKKyAgICAgICAgZGVzY3JpcHRp
b246ICJzdGVwLW92ZXIgc2hvdWxkIHN0ZXAgb3ZlciBjb21tYSBleHByZXNzaW9ucywgdHJlYXRp
bmcgdGhlbSBhcyBzdGF0ZW1lbnRzLiIsCisgICAgICAgIGV4cHJlc3Npb246ICJzZXRUaW1lb3V0
KHRlc3RDb21tYXMpIiwKICAgICB9KTsKIAogICAgIGxvYWRNYWluUGFnZUNvbnRlbnQoKS50aGVu
KCgpID0+IHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zdGVw
cGluZy9zdGVwcGluZy1jb250cm9sLWZsb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2RlYnVnZ2VyL3N0ZXBwaW5nL3N0ZXBwaW5nLWNvbnRyb2wtZmxvdy1leHBlY3RlZC50
eHQKaW5kZXggMjI3YWYwNGNlMmY2MjIwNmUzZDRiNWFkNTdhYjFmNzRiNDZmNmU4Ny4uMTBhNmVm
YjI0OTVkYzA4YzA5YjZjYzQwYzIyNmQ3ZGNkODIxZTNiYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3N0ZXBwaW5nL3N0ZXBwaW5nLWNvbnRyb2wtZmxvdy1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3N0ZXBwaW5nL3N0
ZXBwaW5nLWNvbnRyb2wtZmxvdy1leHBlY3RlZC50eHQKQEAgLTgxMCw3ICs4MTAsNyBAQCBQQVVT
RSBBVCBlbnRyeUlmV2l0aE5vdE9wZXJhdGlvbjoxMDg6OQogIC0+IDEwNyAgICAgICAgICAgIHxh
KCk7CiAgICAgMTA4ICAgIH0KICAgICAxMDkgICAgCi0gICAgMTEwICAgIC8vIC0tLS0tLS0tLQor
ICAgIDExMCAgICBmdW5jdGlvbiBlbnRyeUlmV2l0aENvbW1hcygpIHsKIAogQUNUSU9OOiBzdGVw
LW92ZXIKIFBBVVNFIEFUIGVudHJ5SWZXaXRoTm90T3BlcmF0aW9uOjEwOToyCkBAIC04MTksOCAr
ODE5LDc1IEBAIFBBVVNFIEFUIGVudHJ5SWZXaXRoTm90T3BlcmF0aW9uOjEwOToyCiAgICAgMTA3
ICAgICAgICAgICAgYSgpOwogIC0+IDEwOCAgICB9fAogICAgIDEwOSAgICAKLSAgICAxMTAgICAg
Ly8gLS0tLS0tLS0tCi0gICAgMTExICAgIAorICAgIDExMCAgICBmdW5jdGlvbiBlbnRyeUlmV2l0
aENvbW1hcygpIHsKKyAgICAxMTEgICAgICAgIGRlYnVnZ2VyOworCitBQ1RJT046IHJlc3VtZQor
UkVTVU1FRAorUEFTUzogU2hvdWxkIGhhdmUgdXNlZCBhbGwgc3RlcHMuCisKKy0tIFJ1bm5pbmcg
dGVzdCBjYXNlOiBEZWJ1Z2dlci5zdGVwcGluZy5JZldpdGhDb21tYXMKK0VYUFJFU1NJT046IHNl
dFRpbWVvdXQoZW50cnlJZldpdGhDb21tYXMpCitTVEVQUzogb3Zlciwgb3Zlciwgb3Zlciwgb3Zl
ciwgb3ZlciwgcmVzdW1lCitQQVVTRUQgKGRlYnVnZ2VyLXN0YXRlbWVudCkKK1BBVVNFIEFUIGVu
dHJ5SWZXaXRoQ29tbWFzOjExMjo1CisgICAgMTA4ICAgIH0KKyAgICAxMDkgICAgCisgICAgMTEw
ICAgIGZ1bmN0aW9uIGVudHJ5SWZXaXRoQ29tbWFzKCkgeworIC0+IDExMSAgICAgICAgfGRlYnVn
Z2VyOworICAgIDExMiAgICAgICAgaWYgKGEoKSwgYigpLCBhKCkpCisgICAgMTEzICAgICAgICAg
ICAgYigpOworICAgIDExNCAgICB9CisKK0FDVElPTjogc3RlcC1vdmVyCitQQVVTRSBBVCBlbnRy
eUlmV2l0aENvbW1hczoxMTM6OQorICAgIDEwOSAgICAKKyAgICAxMTAgICAgZnVuY3Rpb24gZW50
cnlJZldpdGhDb21tYXMoKSB7CisgICAgMTExICAgICAgICBkZWJ1Z2dlcjsKKyAtPiAxMTIgICAg
ICAgIGlmICh8YSgpLCBiKCksIGEoKSkKKyAgICAxMTMgICAgICAgICAgICBiKCk7CisgICAgMTE0
ICAgIH0KKyAgICAxMTUgICAgCisKK0FDVElPTjogc3RlcC1vdmVyCitQQVVTRSBBVCBlbnRyeUlm
V2l0aENvbW1hczoxMTM6MTQKKyAgICAxMDkgICAgCisgICAgMTEwICAgIGZ1bmN0aW9uIGVudHJ5
SWZXaXRoQ29tbWFzKCkgeworICAgIDExMSAgICAgICAgZGVidWdnZXI7CisgLT4gMTEyICAgICAg
ICBpZiAoYSgpLCB8YigpLCBhKCkpCisgICAgMTEzICAgICAgICAgICAgYigpOworICAgIDExNCAg
ICB9CisgICAgMTE1ICAgIAorCitBQ1RJT046IHN0ZXAtb3ZlcgorUEFVU0UgQVQgZW50cnlJZldp
dGhDb21tYXM6MTEzOjE5CisgICAgMTA5ICAgIAorICAgIDExMCAgICBmdW5jdGlvbiBlbnRyeUlm
V2l0aENvbW1hcygpIHsKKyAgICAxMTEgICAgICAgIGRlYnVnZ2VyOworIC0+IDExMiAgICAgICAg
aWYgKGEoKSwgYigpLCB8YSgpKQorICAgIDExMyAgICAgICAgICAgIGIoKTsKKyAgICAxMTQgICAg
fQorICAgIDExNSAgICAKKworQUNUSU9OOiBzdGVwLW92ZXIKK1BBVVNFIEFUIGVudHJ5SWZXaXRo
Q29tbWFzOjExNDo5CisgICAgMTEwICAgIGZ1bmN0aW9uIGVudHJ5SWZXaXRoQ29tbWFzKCkgewor
ICAgIDExMSAgICAgICAgZGVidWdnZXI7CisgICAgMTEyICAgICAgICBpZiAoYSgpLCBiKCksIGEo
KSkKKyAtPiAxMTMgICAgICAgICAgICB8YigpOworICAgIDExNCAgICB9CisgICAgMTE1ICAgIAor
ICAgIDExNiAgICAvLyAtLS0tLS0tLS0KKworQUNUSU9OOiBzdGVwLW92ZXIKK1BBVVNFIEFUIGVu
dHJ5SWZXaXRoQ29tbWFzOjExNToyCisgICAgMTExICAgICAgICBkZWJ1Z2dlcjsKKyAgICAxMTIg
ICAgICAgIGlmIChhKCksIGIoKSwgYSgpKQorICAgIDExMyAgICAgICAgICAgIGIoKTsKKyAtPiAx
MTQgICAgfXwKKyAgICAxMTUgICAgCisgICAgMTE2ICAgIC8vIC0tLS0tLS0tLQorICAgIDExNyAg
ICAKIAogQUNUSU9OOiByZXN1bWUKIFJFU1VNRUQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9kZWJ1Z2dlci9zdGVwcGluZy9zdGVwcGluZy1jb250cm9sLWZsb3cuaHRtbCBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zdGVwcGluZy9zdGVwcGluZy1jb250cm9sLWZs
b3cuaHRtbAppbmRleCBmZjA3NjJlMDg5Yjg3NTEyYzQ2ZmUwMTBkMDMyMTlmYzc0MjYwMTY2Li40
Y2M4N2RmMWE0NmM1M2Y1MTZhZjI4NTlkNjJmZGRiMjM4ZjFmNjdiIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcvc3RlcHBpbmctY29udHJvbC1mbG93
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3N0ZXBwaW5nL3N0ZXBw
aW5nLWNvbnRyb2wtZmxvdy5odG1sCkBAIC0xMDgsNiArMTA4LDEyIEBAIGZ1bmN0aW9uIGVudHJ5
SWZXaXRoTm90T3BlcmF0aW9uKCkgewogICAgICAgICBhKCk7CiB9CiAKK2Z1bmN0aW9uIGVudHJ5
SWZXaXRoQ29tbWFzKCkgeworICAgIGRlYnVnZ2VyOworICAgIGlmIChhKCksIGIoKSwgYSgpKQor
ICAgICAgICBiKCk7Cit9CisKIC8vIC0tLS0tLS0tLQogCiBmdW5jdGlvbiB0ZXN0KCkKQEAgLTI4
Niw2ICsyOTIsMjAgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIF0KICAgICB9KTsKIAorICAg
IGFkZFN0ZXBwaW5nVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiRGVidWdnZXIuc3RlcHBpbmcu
SWZXaXRoQ29tbWFzIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJTaG91bGQgcGF1c2UgYmVmb3Jl
IGVhY2ggY29tbWEgc3ViLWV4cHJlc3Npb24uIiwKKyAgICAgICAgZXhwcmVzc2lvbjogInNldFRp
bWVvdXQoZW50cnlJZldpdGhDb21tYXMpIiwKKyAgICAgICAgc3RlcHM6IFsKKyAgICAgICAgICAg
ICJvdmVyIiwKKyAgICAgICAgICAgICAgICAib3ZlciIsIC8vIGEoKQorICAgICAgICAgICAgICAg
ICJvdmVyIiwgLy8gYigpCisgICAgICAgICAgICAgICAgIm92ZXIiLCAvLyBhKCkKKyAgICAgICAg
ICAgICAgICAib3ZlciIsIC8vIGEoKSAtIGxlYXZpbmcgZW50cnkKKyAgICAgICAgICAgICJyZXN1
bWUiLAorICAgICAgICBdCisgICAgfSk7CisKICAgICBsb2FkTWFpblBhZ2VDb250ZW50KCkudGhl
bigoKSA9PiB7CiAgICAgICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOwogICAgIH0p
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3N0ZXBwaW5nL3N0
ZXBwaW5nLWZ1bmN0aW9uLWNhbGxzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kZWJ1Z2dlci9zdGVwcGluZy9zdGVwcGluZy1mdW5jdGlvbi1jYWxscy1leHBlY3RlZC50eHQK
aW5kZXggZGZkN2Q0NjljZGM3YjgyODhkNWIzMmY1MDI5OTE5OGFiNWExYzZhYS4uYzg5YTZhN2Nl
NTc4NWVhMjZiNDE1OWNlMTY3ZjkyZDE5Y2RkNTIxYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RlYnVnZ2VyL3N0ZXBwaW5nL3N0ZXBwaW5nLWZ1bmN0aW9uLWNhbGxzLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcvc3Rl
cHBpbmctZnVuY3Rpb24tY2FsbHMtZXhwZWN0ZWQudHh0CkBAIC05NzUsNyArOTc1LDcgQEAgUEFT
UzogU2hvdWxkIGhhdmUgdXNlZCBhbGwgc3RlcHMuCiAKIC0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBE
ZWJ1Z2dlci5zdGVwcGluZy5Db21wbGV4U3RhdGVtZW50NAogRVhQUkVTU0lPTjogc2V0VGltZW91
dChlbnRyeUNvbW1hRXhwcmVzc2lvbikKLVNURVBTOiBvdmVyLCBvdmVyLCByZXN1bWUKK1NURVBT
OiBvdmVyLCBvdmVyLCBvdmVyLCBvdmVyLCByZXN1bWUKIFBBVVNFRCAoZGVidWdnZXItc3RhdGVt
ZW50KQogUEFVU0UgQVQgZW50cnlDb21tYUV4cHJlc3Npb246NTE6NQogICAgICA0NyAgICB9CkBA
IC05OTYsNiArOTk2LDI2IEBAIFBBVVNFIEFUIGVudHJ5Q29tbWFFeHByZXNzaW9uOjUyOjUKICAg
ICAgNTMgICAgCiAgICAgIDU0ICAgIGZ1bmN0aW9uIGVudHJ5RG90UHJvcGVydHlBY2Nlc3NDYWxs
KCkgewogCitBQ1RJT046IHN0ZXAtb3ZlcgorUEFVU0UgQVQgZW50cnlDb21tYUV4cHJlc3Npb246
NTI6MTAKKyAgICAgNDggICAgCisgICAgIDQ5ICAgIGZ1bmN0aW9uIGVudHJ5Q29tbWFFeHByZXNz
aW9uKCkgeworICAgICA1MCAgICAgICAgZGVidWdnZXI7CisgLT4gIDUxICAgICAgICBhKCksIHxi
KCksIGEoKTsKKyAgICAgNTIgICAgfQorICAgICA1MyAgICAKKyAgICAgNTQgICAgZnVuY3Rpb24g
ZW50cnlEb3RQcm9wZXJ0eUFjY2Vzc0NhbGwoKSB7CisKK0FDVElPTjogc3RlcC1vdmVyCitQQVVT
RSBBVCBlbnRyeUNvbW1hRXhwcmVzc2lvbjo1MjoxNQorICAgICA0OCAgICAKKyAgICAgNDkgICAg
ZnVuY3Rpb24gZW50cnlDb21tYUV4cHJlc3Npb24oKSB7CisgICAgIDUwICAgICAgICBkZWJ1Z2dl
cjsKKyAtPiAgNTEgICAgICAgIGEoKSwgYigpLCB8YSgpOworICAgICA1MiAgICB9CisgICAgIDUz
ICAgIAorICAgICA1NCAgICBmdW5jdGlvbiBlbnRyeURvdFByb3BlcnR5QWNjZXNzQ2FsbCgpIHsK
KwogQUNUSU9OOiBzdGVwLW92ZXIKIFBBVVNFIEFUIGVudHJ5Q29tbWFFeHByZXNzaW9uOjUzOjIK
ICAgICAgNDkgICAgZnVuY3Rpb24gZW50cnlDb21tYUV4cHJlc3Npb24oKSB7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcvc3RlcHBpbmctZnVuY3Rp
b24tY2FsbHMuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zdGVwcGluZy9z
dGVwcGluZy1mdW5jdGlvbi1jYWxscy5odG1sCmluZGV4IDBiNGQzOWM4ZGMwMzZhMTcyMTRhM2Q0
OWVhMDI1ZDNiNzZmZDcxNDQuLjExZGNhNDFiNmE1NmE2NWM5NDYxMWQyYjZlNTJjMzVmNDU3OGJl
YTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zdGVwcGluZy9z
dGVwcGluZy1mdW5jdGlvbi1jYWxscy5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci9zdGVwcGluZy9zdGVwcGluZy1mdW5jdGlvbi1jYWxscy5odG1sCkBAIC0zMjcsNyAr
MzI3LDkgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIC8vIGEoKSwgYigpLCBhKCk7CiAgICAg
ICAgIHN0ZXBzOiBbCiAgICAgICAgICAgICAib3ZlciIsCi0gICAgICAgICAgICAgICAgIm92ZXIi
LCAvLyBjb21wbGV0ZTogYSgpLCBiKCksIGEoKQorICAgICAgICAgICAgICAgICJvdmVyIiwgLy8g
YSgpCisgICAgICAgICAgICAgICAgIm92ZXIiLCAvLyBiKCkKKyAgICAgICAgICAgICAgICAib3Zl
ciIsIC8vIGEoKQogICAgICAgICAgICAgInJlc3VtZSIKICAgICAgICAgXQogICAgIH0pOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3N0ZXBwaW5nL3N0ZXBwaW5n
LWxvb3BzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zdGVw
cGluZy9zdGVwcGluZy1sb29wcy1leHBlY3RlZC50eHQKaW5kZXggYWIwMjk3ZTQ1MTE4ZDQxMjk4
M2IwY2M0NTRhN2YyOGUyZjI5YjFkNi4uY2ViM2I4OTYyNDY1MjhjYTAxNDBhM2M5ZmIwNzJkM2Nl
ZjgxMmQ2NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3N0ZXBw
aW5nL3N0ZXBwaW5nLWxvb3BzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZGVidWdnZXIvc3RlcHBpbmcvc3RlcHBpbmctbG9vcHMtZXhwZWN0ZWQudHh0CkBAIC04Mzgs
OCArODM4LDE3NSBAQCBQQVVTRSBBVCBlbnRyeUZvckJyZWFrQ29udGludWU6NzU6MgogICAgICA3
MyAgICAgICAgfQogIC0+ICA3NCAgICB9fAogICAgICA3NSAgICAKLSAgICAgNzYgICAgLy8gLS0t
LS0tLS0tCi0gICAgIDc3ICAgIAorICAgICA3NiAgICBmdW5jdGlvbiBlbnRyeUZvcldpdGhDb21t
YXMoKSB7CisgICAgIDc3ICAgICAgICBkZWJ1Z2dlcjsKKworQUNUSU9OOiByZXN1bWUKK1JFU1VN
RUQKK1BBU1M6IFNob3VsZCBoYXZlIHVzZWQgYWxsIHN0ZXBzLgorCistLSBSdW5uaW5nIHRlc3Qg
Y2FzZTogRGVidWdnZXIuc3RlcHBpbmcuRm9yV2l0aENvbW1hc1N0ZXBPdmVyCitFWFBSRVNTSU9O
OiBzZXRUaW1lb3V0KGVudHJ5Rm9yV2l0aENvbW1hcykKK1NURVBTOiBvdmVyLCBvdmVyLCBvdmVy
LCBvdmVyLCBvdmVyLCBvdmVyLCBvdmVyLCBvdmVyLCBvdmVyLCBvdmVyLCBvdmVyLCBvdmVyLCBv
dmVyLCBvdmVyLCBvdmVyLCByZXN1bWUKK1BBVVNFRCAoZGVidWdnZXItc3RhdGVtZW50KQorUEFV
U0UgQVQgZW50cnlGb3JXaXRoQ29tbWFzOjc4OjUKKyAgICAgNzQgICAgfQorICAgICA3NSAgICAK
KyAgICAgNzYgICAgZnVuY3Rpb24gZW50cnlGb3JXaXRoQ29tbWFzKCkgeworIC0+ICA3NyAgICAg
ICAgfGRlYnVnZ2VyOworICAgICA3OCAgICAgICAgZm9yIChsZXQgaSA9IDAsIGxlbmd0aCA9IDA7
IGxlbmd0aCA9IDIsIGkgPCBsZW5ndGg7IGxlbmd0aCA9IDEsICsraSkKKyAgICAgNzkgICAgICAg
ICAgICBhKCk7CisgICAgIDgwICAgIH0KKworQUNUSU9OOiBzdGVwLW92ZXIKK1BBVVNFIEFUIGVu
dHJ5Rm9yV2l0aENvbW1hczo3OToxMAorICAgICA3NSAgICAKKyAgICAgNzYgICAgZnVuY3Rpb24g
ZW50cnlGb3JXaXRoQ29tbWFzKCkgeworICAgICA3NyAgICAgICAgZGVidWdnZXI7CisgLT4gIDc4
ICAgICAgICBmb3IgKHxsZXQgaSA9IDAsIGxlbmd0aCA9IDA7IGxlbmd0aCA9IDIsIGkgPCBsZW5n
dGg7IGxlbmd0aCA9IDEsICsraSkKKyAgICAgNzkgICAgICAgICAgICBhKCk7CisgICAgIDgwICAg
IH0KKyAgICAgODEgICAgCisKK0FDVElPTjogc3RlcC1vdmVyCitQQVVTRSBBVCBlbnRyeUZvcldp
dGhDb21tYXM6Nzk6MjEKKyAgICAgNzUgICAgCisgICAgIDc2ICAgIGZ1bmN0aW9uIGVudHJ5Rm9y
V2l0aENvbW1hcygpIHsKKyAgICAgNzcgICAgICAgIGRlYnVnZ2VyOworIC0+ICA3OCAgICAgICAg
Zm9yIChsZXQgaSA9IDAsIHxsZW5ndGggPSAwOyBsZW5ndGggPSAyLCBpIDwgbGVuZ3RoOyBsZW5n
dGggPSAxLCArK2kpCisgICAgIDc5ICAgICAgICAgICAgYSgpOworICAgICA4MCAgICB9CisgICAg
IDgxICAgIAorCitBQ1RJT046IHN0ZXAtb3ZlcgorUEFVU0UgQVQgZW50cnlGb3JXaXRoQ29tbWFz
Ojc5OjMzCisgICAgIDc1ICAgIAorICAgICA3NiAgICBmdW5jdGlvbiBlbnRyeUZvcldpdGhDb21t
YXMoKSB7CisgICAgIDc3ICAgICAgICBkZWJ1Z2dlcjsKKyAtPiAgNzggICAgICAgIGZvciAobGV0
IGkgPSAwLCBsZW5ndGggPSAwOyB8bGVuZ3RoID0gMiwgaSA8IGxlbmd0aDsgbGVuZ3RoID0gMSwg
KytpKQorICAgICA3OSAgICAgICAgICAgIGEoKTsKKyAgICAgODAgICAgfQorICAgICA4MSAgICAK
KworQUNUSU9OOiBzdGVwLW92ZXIKK1BBVVNFIEFUIGVudHJ5Rm9yV2l0aENvbW1hczo3OTo0NQor
ICAgICA3NSAgICAKKyAgICAgNzYgICAgZnVuY3Rpb24gZW50cnlGb3JXaXRoQ29tbWFzKCkgewor
ICAgICA3NyAgICAgICAgZGVidWdnZXI7CisgLT4gIDc4ICAgICAgICBmb3IgKGxldCBpID0gMCwg
bGVuZ3RoID0gMDsgbGVuZ3RoID0gMiwgfGkgPCBsZW5ndGg7IGxlbmd0aCA9IDEsICsraSkKKyAg
ICAgNzkgICAgICAgICAgICBhKCk7CisgICAgIDgwICAgIH0KKyAgICAgODEgICAgCisKK0FDVElP
Tjogc3RlcC1vdmVyCitQQVVTRSBBVCBlbnRyeUZvcldpdGhDb21tYXM6ODA6OQorICAgICA3NiAg
ICBmdW5jdGlvbiBlbnRyeUZvcldpdGhDb21tYXMoKSB7CisgICAgIDc3ICAgICAgICBkZWJ1Z2dl
cjsKKyAgICAgNzggICAgICAgIGZvciAobGV0IGkgPSAwLCBsZW5ndGggPSAwOyBsZW5ndGggPSAy
LCBpIDwgbGVuZ3RoOyBsZW5ndGggPSAxLCArK2kpCisgLT4gIDc5ICAgICAgICAgICAgfGEoKTsK
KyAgICAgODAgICAgfQorICAgICA4MSAgICAKKyAgICAgODIgICAgLy8gLS0tLS0tLS0tCisKK0FD
VElPTjogc3RlcC1vdmVyCitQQVVTRSBBVCBlbnRyeUZvcldpdGhDb21tYXM6Nzk6NTcKKyAgICAg
NzUgICAgCisgICAgIDc2ICAgIGZ1bmN0aW9uIGVudHJ5Rm9yV2l0aENvbW1hcygpIHsKKyAgICAg
NzcgICAgICAgIGRlYnVnZ2VyOworIC0+ICA3OCAgICAgICAgZm9yIChsZXQgaSA9IDAsIGxlbmd0
aCA9IDA7IGxlbmd0aCA9IDIsIGkgPCBsZW5ndGg7IHxsZW5ndGggPSAxLCArK2kpCisgICAgIDc5
ICAgICAgICAgICAgYSgpOworICAgICA4MCAgICB9CisgICAgIDgxICAgIAorCitBQ1RJT046IHN0
ZXAtb3ZlcgorUEFVU0UgQVQgZW50cnlGb3JXaXRoQ29tbWFzOjc5OjY5CisgICAgIDc1ICAgIAor
ICAgICA3NiAgICBmdW5jdGlvbiBlbnRyeUZvcldpdGhDb21tYXMoKSB7CisgICAgIDc3ICAgICAg
ICBkZWJ1Z2dlcjsKKyAtPiAgNzggICAgICAgIGZvciAobGV0IGkgPSAwLCBsZW5ndGggPSAwOyBs
ZW5ndGggPSAyLCBpIDwgbGVuZ3RoOyBsZW5ndGggPSAxLCB8KytpKQorICAgICA3OSAgICAgICAg
ICAgIGEoKTsKKyAgICAgODAgICAgfQorICAgICA4MSAgICAKKworQUNUSU9OOiBzdGVwLW92ZXIK
K1BBVVNFIEFUIGVudHJ5Rm9yV2l0aENvbW1hczo3OTozMworICAgICA3NSAgICAKKyAgICAgNzYg
ICAgZnVuY3Rpb24gZW50cnlGb3JXaXRoQ29tbWFzKCkgeworICAgICA3NyAgICAgICAgZGVidWdn
ZXI7CisgLT4gIDc4ICAgICAgICBmb3IgKGxldCBpID0gMCwgbGVuZ3RoID0gMDsgfGxlbmd0aCA9
IDIsIGkgPCBsZW5ndGg7IGxlbmd0aCA9IDEsICsraSkKKyAgICAgNzkgICAgICAgICAgICBhKCk7
CisgICAgIDgwICAgIH0KKyAgICAgODEgICAgCisKK0FDVElPTjogc3RlcC1vdmVyCitQQVVTRSBB
VCBlbnRyeUZvcldpdGhDb21tYXM6Nzk6NDUKKyAgICAgNzUgICAgCisgICAgIDc2ICAgIGZ1bmN0
aW9uIGVudHJ5Rm9yV2l0aENvbW1hcygpIHsKKyAgICAgNzcgICAgICAgIGRlYnVnZ2VyOworIC0+
ICA3OCAgICAgICAgZm9yIChsZXQgaSA9IDAsIGxlbmd0aCA9IDA7IGxlbmd0aCA9IDIsIHxpIDwg
bGVuZ3RoOyBsZW5ndGggPSAxLCArK2kpCisgICAgIDc5ICAgICAgICAgICAgYSgpOworICAgICA4
MCAgICB9CisgICAgIDgxICAgIAorCitBQ1RJT046IHN0ZXAtb3ZlcgorUEFVU0UgQVQgZW50cnlG
b3JXaXRoQ29tbWFzOjgwOjkKKyAgICAgNzYgICAgZnVuY3Rpb24gZW50cnlGb3JXaXRoQ29tbWFz
KCkgeworICAgICA3NyAgICAgICAgZGVidWdnZXI7CisgICAgIDc4ICAgICAgICBmb3IgKGxldCBp
ID0gMCwgbGVuZ3RoID0gMDsgbGVuZ3RoID0gMiwgaSA8IGxlbmd0aDsgbGVuZ3RoID0gMSwgKytp
KQorIC0+ICA3OSAgICAgICAgICAgIHxhKCk7CisgICAgIDgwICAgIH0KKyAgICAgODEgICAgCisg
ICAgIDgyICAgIC8vIC0tLS0tLS0tLQorCitBQ1RJT046IHN0ZXAtb3ZlcgorUEFVU0UgQVQgZW50
cnlGb3JXaXRoQ29tbWFzOjc5OjU3CisgICAgIDc1ICAgIAorICAgICA3NiAgICBmdW5jdGlvbiBl
bnRyeUZvcldpdGhDb21tYXMoKSB7CisgICAgIDc3ICAgICAgICBkZWJ1Z2dlcjsKKyAtPiAgNzgg
ICAgICAgIGZvciAobGV0IGkgPSAwLCBsZW5ndGggPSAwOyBsZW5ndGggPSAyLCBpIDwgbGVuZ3Ro
OyB8bGVuZ3RoID0gMSwgKytpKQorICAgICA3OSAgICAgICAgICAgIGEoKTsKKyAgICAgODAgICAg
fQorICAgICA4MSAgICAKKworQUNUSU9OOiBzdGVwLW92ZXIKK1BBVVNFIEFUIGVudHJ5Rm9yV2l0
aENvbW1hczo3OTo2OQorICAgICA3NSAgICAKKyAgICAgNzYgICAgZnVuY3Rpb24gZW50cnlGb3JX
aXRoQ29tbWFzKCkgeworICAgICA3NyAgICAgICAgZGVidWdnZXI7CisgLT4gIDc4ICAgICAgICBm
b3IgKGxldCBpID0gMCwgbGVuZ3RoID0gMDsgbGVuZ3RoID0gMiwgaSA8IGxlbmd0aDsgbGVuZ3Ro
ID0gMSwgfCsraSkKKyAgICAgNzkgICAgICAgICAgICBhKCk7CisgICAgIDgwICAgIH0KKyAgICAg
ODEgICAgCisKK0FDVElPTjogc3RlcC1vdmVyCitQQVVTRSBBVCBlbnRyeUZvcldpdGhDb21tYXM6
Nzk6MzMKKyAgICAgNzUgICAgCisgICAgIDc2ICAgIGZ1bmN0aW9uIGVudHJ5Rm9yV2l0aENvbW1h
cygpIHsKKyAgICAgNzcgICAgICAgIGRlYnVnZ2VyOworIC0+ICA3OCAgICAgICAgZm9yIChsZXQg
aSA9IDAsIGxlbmd0aCA9IDA7IHxsZW5ndGggPSAyLCBpIDwgbGVuZ3RoOyBsZW5ndGggPSAxLCAr
K2kpCisgICAgIDc5ICAgICAgICAgICAgYSgpOworICAgICA4MCAgICB9CisgICAgIDgxICAgIAor
CitBQ1RJT046IHN0ZXAtb3ZlcgorUEFVU0UgQVQgZW50cnlGb3JXaXRoQ29tbWFzOjc5OjQ1Cisg
ICAgIDc1ICAgIAorICAgICA3NiAgICBmdW5jdGlvbiBlbnRyeUZvcldpdGhDb21tYXMoKSB7Cisg
ICAgIDc3ICAgICAgICBkZWJ1Z2dlcjsKKyAtPiAgNzggICAgICAgIGZvciAobGV0IGkgPSAwLCBs
ZW5ndGggPSAwOyBsZW5ndGggPSAyLCB8aSA8IGxlbmd0aDsgbGVuZ3RoID0gMSwgKytpKQorICAg
ICA3OSAgICAgICAgICAgIGEoKTsKKyAgICAgODAgICAgfQorICAgICA4MSAgICAKKworQUNUSU9O
OiBzdGVwLW92ZXIKK1BBVVNFIEFUIGVudHJ5Rm9yV2l0aENvbW1hczo4MToyCisgICAgIDc3ICAg
ICAgICBkZWJ1Z2dlcjsKKyAgICAgNzggICAgICAgIGZvciAobGV0IGkgPSAwLCBsZW5ndGggPSAw
OyBsZW5ndGggPSAyLCBpIDwgbGVuZ3RoOyBsZW5ndGggPSAxLCArK2kpCisgICAgIDc5ICAgICAg
ICAgICAgYSgpOworIC0+ICA4MCAgICB9fAorICAgICA4MSAgICAKKyAgICAgODIgICAgLy8gLS0t
LS0tLS0tCisgICAgIDgzICAgIAogCiBBQ1RJT046IHJlc3VtZQogUkVTVU1FRApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3N0ZXBwaW5nL3N0ZXBwaW5nLWxvb3Bz
Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcvc3RlcHBpbmct
bG9vcHMuaHRtbAppbmRleCAzMmQ4NDMwMzJmOWViNDYyZTRiMDgwY2JmZDIwMDNkMWJmMGQzOWJh
Li4xZmNiN2Y3ZDVkMTliZjEwYzk0MzJmMzZiMTFlYzg0NDA0NmNkMGUzIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcvc3RlcHBpbmctbG9vcHMuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcvc3RlcHBpbmct
bG9vcHMuaHRtbApAQCAtNzQsNiArNzQsMTIgQEAgZnVuY3Rpb24gZW50cnlGb3JCcmVha0NvbnRp
bnVlKCkgewogICAgIH0KIH0KIAorZnVuY3Rpb24gZW50cnlGb3JXaXRoQ29tbWFzKCkgeworICAg
IGRlYnVnZ2VyOworICAgIGZvciAobGV0IGkgPSAwLCBsZW5ndGggPSAwOyBsZW5ndGggPSAyLCBp
IDwgbGVuZ3RoOyBsZW5ndGggPSAxLCArK2kpCisgICAgICAgIGEoKTsKK30KKwogLy8gLS0tLS0t
LS0tCiAKIGZ1bmN0aW9uIHRlc3QoKQpAQCAtMjM0LDYgKzI0MCwzMCBAQCBmdW5jdGlvbiB0ZXN0
KCkKICAgICAgICAgXQogICAgIH0pOwogCisgICAgYWRkU3RlcHBpbmdUZXN0Q2FzZSh7CisgICAg
ICAgIG5hbWU6ICJEZWJ1Z2dlci5zdGVwcGluZy5Gb3JXaXRoQ29tbWFzU3RlcE92ZXIiLAorICAg
ICAgICBkZXNjcmlwdGlvbjogIlNob3VsZCBiZSBhYmxlIHRvIHN0ZXAgb3ZlciBldmVyeSBjb21t
YSBzZXBhcmF0ZWQgaW5pdCBhbmQgY29uZGl0aW9uIGluIHRyYWRpdGlvbmFsIGZvciBsb29wcy4i
LAorICAgICAgICBleHByZXNzaW9uOiAic2V0VGltZW91dChlbnRyeUZvcldpdGhDb21tYXMpIiwK
KyAgICAgICAgc3RlcHM6IFsKKyAgICAgICAgICAgICJvdmVyIiwKKyAgICAgICAgICAgICAgICAi
b3ZlciIsIC8vIGNvbXBsZXRlOiBsZXQgaSA9IDAKKyAgICAgICAgICAgICAgICAib3ZlciIsIC8v
IGNvbXBsZXRlOiBsZW5ndGggPSAwCisgICAgICAgICAgICAgICAgIm92ZXIiLCAvLyBjb21wbGV0
ZTogbGVuZ3RoID0gMgorICAgICAgICAgICAgICAgICJvdmVyIiwgLy8gY29tcGxldGU6IGkgPCBs
ZW5ndGgKKyAgICAgICAgICAgICAgICAib3ZlciIsIC8vIGNvbXBsZXRlOiBhKCkKKyAgICAgICAg
ICAgICAgICAib3ZlciIsIC8vIGNvbXBsZXRlOiBsZW5ndGggPSAxCisgICAgICAgICAgICAgICAg
Im92ZXIiLCAvLyBjb21wbGV0ZTogKytpCisgICAgICAgICAgICAgICAgIm92ZXIiLCAvLyBjb21w
bGV0ZTogbGVuZ3RoID0gMgorICAgICAgICAgICAgICAgICJvdmVyIiwgLy8gY29tcGxldGU6IGkg
PCBsZW5ndGggW2k9MV0KKyAgICAgICAgICAgICAgICAib3ZlciIsIC8vIGNvbXBsZXRlOiBhKCkK
KyAgICAgICAgICAgICAgICAib3ZlciIsIC8vIGNvbXBsZXRlOiBsZW5ndGggPSAxCisgICAgICAg
ICAgICAgICAgIm92ZXIiLCAvLyBjb21wbGV0ZTogKytpCisgICAgICAgICAgICAgICAgIm92ZXIi
LCAvLyBjb21wbGV0ZTogbGVuZ3RoID0gMgorICAgICAgICAgICAgICAgICJvdmVyIiwgLy8gY29t
cGxldGU6IGkgPCBsZW5ndGggW2k9Ml0gLSBsZWF2aW5nIGVudHJ5CisgICAgICAgICAgICAicmVz
dW1lIiwKKyAgICAgICAgXQorICAgIH0pOworCiAgICAgbG9hZE1haW5QYWdlQ29udGVudCgpLnRo
ZW4oKCkgPT4gewogICAgICAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKICAgICB9
KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zdGVwcGluZy9z
dGVwcGluZy1taXNjLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dl
ci9zdGVwcGluZy9zdGVwcGluZy1taXNjLWV4cGVjdGVkLnR4dAppbmRleCA1NDdmM2JjYjA1ODQw
MTJkZDFhMTZkOWIwZjBkYjcxODlhODg2ZGI0Li5iMGI0ZmVkMmY4ZWRhMTk3ZDU3ODQxMmFlODc3
YzZmNzhhNDg2NTY1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIv
c3RlcHBpbmcvc3RlcHBpbmctbWlzYy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2RlYnVnZ2VyL3N0ZXBwaW5nL3N0ZXBwaW5nLW1pc2MtZXhwZWN0ZWQudHh0CkBAIC0z
ODksNyArMzg5LDcgQEAgUEFTUzogU2hvdWxkIGhhdmUgdXNlZCBhbGwgc3RlcHMuCiAKIC0tIFJ1
bm5pbmcgdGVzdCBjYXNlOiBEZWJ1Z2dlci5zdGVwcGluZy5WYXJpYWJsZURlY2xhcmF0aW9uCiBF
WFBSRVNTSU9OOiBzZXRUaW1lb3V0KGVudHJ5VmFyaWFibGVEZWNsYXJhdGlvbikKLVNURVBTOiBv
dmVyLCBpbiwgaW4sIGluLCByZXN1bWUKK1NURVBTOiBvdmVyLCBpbiwgaW4sIGluLCBpbiwgaW4s
IGluLCByZXN1bWUKIFBBVVNFRCAoZGVidWdnZXItc3RhdGVtZW50KQogUEFVU0UgQVQgZW50cnlW
YXJpYWJsZURlY2xhcmF0aW9uOjU4OjUKICAgICAgNTQgICAgfQpAQCAtNDEwLDYgKzQxMCwxNiBA
QCBQQVVTRSBBVCBlbnRyeVZhcmlhYmxlRGVjbGFyYXRpb246NTk6NQogICAgICA2MCAgICAgICAg
bGV0IGIgPSAyLAogICAgICA2MSAgICAgICAgICAgIHkgPSAyOwogCitBQ1RJT046IHN0ZXAtaW4K
K1BBVVNFIEFUIGVudHJ5VmFyaWFibGVEZWNsYXJhdGlvbjo2MDo5CisgICAgIDU2ICAgIGZ1bmN0
aW9uIGVudHJ5VmFyaWFibGVEZWNsYXJhdGlvbigpIHsKKyAgICAgNTcgICAgICAgIGRlYnVnZ2Vy
OworICAgICA1OCAgICAgICAgdmFyIGEgPSAxLAorIC0+ICA1OSAgICAgICAgICAgIHx4ID0gMTsK
KyAgICAgNjAgICAgICAgIGxldCBiID0gMiwKKyAgICAgNjEgICAgICAgICAgICB5ID0gMjsKKyAg
ICAgNjIgICAgICAgIGNvbnN0IGMgPSAzLAorCiBBQ1RJT046IHN0ZXAtaW4KIFBBVVNFIEFUIGVu
dHJ5VmFyaWFibGVEZWNsYXJhdGlvbjo2MTo1CiAgICAgIDU3ICAgICAgICBkZWJ1Z2dlcjsKQEAg
LTQyMCw2ICs0MzAsMTYgQEAgUEFVU0UgQVQgZW50cnlWYXJpYWJsZURlY2xhcmF0aW9uOjYxOjUK
ICAgICAgNjIgICAgICAgIGNvbnN0IGMgPSAzLAogICAgICA2MyAgICAgICAgICAgIHogPSAzOwog
CitBQ1RJT046IHN0ZXAtaW4KK1BBVVNFIEFUIGVudHJ5VmFyaWFibGVEZWNsYXJhdGlvbjo2Mjo5
CisgICAgIDU4ICAgICAgICB2YXIgYSA9IDEsCisgICAgIDU5ICAgICAgICAgICAgeCA9IDE7Cisg
ICAgIDYwICAgICAgICBsZXQgYiA9IDIsCisgLT4gIDYxICAgICAgICAgICAgfHkgPSAyOworICAg
ICA2MiAgICAgICAgY29uc3QgYyA9IDMsCisgICAgIDYzICAgICAgICAgICAgeiA9IDM7CisgICAg
IDY0ICAgIH0KKwogQUNUSU9OOiBzdGVwLWluCiBQQVVTRSBBVCBlbnRyeVZhcmlhYmxlRGVjbGFy
YXRpb246NjM6NQogICAgICA1OSAgICAgICAgICAgIHggPSAxOwpAQCAtNDMwLDYgKzQ1MCwxNiBA
QCBQQVVTRSBBVCBlbnRyeVZhcmlhYmxlRGVjbGFyYXRpb246NjM6NQogICAgICA2NCAgICB9CiAg
ICAgIDY1ICAgIAogCitBQ1RJT046IHN0ZXAtaW4KK1BBVVNFIEFUIGVudHJ5VmFyaWFibGVEZWNs
YXJhdGlvbjo2NDo5CisgICAgIDYwICAgICAgICBsZXQgYiA9IDIsCisgICAgIDYxICAgICAgICAg
ICAgeSA9IDI7CisgICAgIDYyICAgICAgICBjb25zdCBjID0gMywKKyAtPiAgNjMgICAgICAgICAg
ICB8eiA9IDM7CisgICAgIDY0ICAgIH0KKyAgICAgNjUgICAgCisgICAgIDY2ICAgIGZ1bmN0aW9u
IGVudHJ5RGVzdHJ1Y3R1cmluZygpIHsKKwogQUNUSU9OOiBzdGVwLWluCiBQQVVTRSBBVCBlbnRy
eVZhcmlhYmxlRGVjbGFyYXRpb246NjU6MgogICAgICA2MSAgICAgICAgICAgIHkgPSAyOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3N0ZXBwaW5nL3N0ZXBwaW5n
LW1pc2MuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zdGVwcGluZy9zdGVw
cGluZy1taXNjLmh0bWwKaW5kZXggMjczYjllNjE4OTA0ZWUxOTExOGQ2ZTkxOGE4MmFiODJjNjMy
YjgyZS4uZjY5MGFhNmM2ZWVmNThlOGFjMTQ1ZGZiYzU2OTc3NTUzYzgwOGUxNyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3N0ZXBwaW5nL3N0ZXBwaW5nLW1pc2Mu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcvc3RlcHBp
bmctbWlzYy5odG1sCkBAIC0xODQsMTQgKzE4NCwxNiBAQCBmdW5jdGlvbiB0ZXN0KCkKIAogICAg
IGFkZFN0ZXBwaW5nVGVzdENhc2UoewogICAgICAgICBuYW1lOiAiRGVidWdnZXIuc3RlcHBpbmcu
VmFyaWFibGVEZWNsYXJhdGlvbiIsCi0gICAgICAgIGRlc2NyaXB0aW9uOiAiU2hvdWxkIGJlIGFi
bGUgdG8gc3RlcCB0aHJvdWdoIHZhcmlhYmxlIGRlY2xhcmF0aW9ucy4iLAorICAgICAgICBkZXNj
cmlwdGlvbjogIlNob3VsZCBiZSBhYmxlIHRvIHN0ZXAgdG8gZWFjaCBpbmRpdmlkdWFsIHZhcmlh
YmxlIGRlY2xhcmF0aW9uLiIsCiAgICAgICAgIGV4cHJlc3Npb246ICJzZXRUaW1lb3V0KGVudHJ5
VmFyaWFibGVEZWNsYXJhdGlvbikiLAogICAgICAgICBzdGVwczogWwogICAgICAgICAgICAgIm92
ZXIiLAotICAgICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogT3Bwb3J0dW5pdHkgdG8gcGF1
c2UgYXQgYXNzaWdubWVudCBleHByZXNzaW9ucy4KLSAgICAgICAgICAgICAgICAiaW4iLCAgLy8g
YSA9IDEsIHggPSAxCi0gICAgICAgICAgICAgICAgImluIiwgIC8vIGIgPSAyLCB5ID0gMgotICAg
ICAgICAgICAgICAgICJpbiIsICAvLyBjID0gMywgeiA9IDMKKyAgICAgICAgICAgICAgICAiaW4i
LCAgLy8gYSA9IDEKKyAgICAgICAgICAgICAgICAiaW4iLCAgLy8geCA9IDEKKyAgICAgICAgICAg
ICAgICAiaW4iLCAgLy8gYiA9IDIKKyAgICAgICAgICAgICAgICAiaW4iLCAgLy8geSA9IDIKKyAg
ICAgICAgICAgICAgICAiaW4iLCAgLy8gYyA9IDMKKyAgICAgICAgICAgICAgICAiaW4iLCAgLy8g
eiA9IDMKICAgICAgICAgICAgICJyZXN1bWUiLAogICAgICAgICBdCiAgICAgfSk7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlw
dC10ZXN0cy9mb3Itc3RhdGVtZW50cy1leHBlY3RlZC5qcyBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL2Zvci1zdGF0ZW1lbnRzLWV4
cGVjdGVkLmpzCmluZGV4IGZmZTRiZDA4YzQ4MWI5NzAyZWMzMDNkNTZhNjc5YzQ3N2JjYTQ5NTMu
LjgyNjMwMDYxNTdjZGFhMWYxZDQxYjUwMGRlNTIxMzkyNmU3YWRhNDMgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3Rz
L2Zvci1zdGF0ZW1lbnRzLWV4cGVjdGVkLmpzCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9m
b3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL2Zvci1zdGF0ZW1lbnRzLWV4cGVj
dGVkLmpzCkBAIC02OCwyNyArNjgsMjAgQEAgZm9yICgxOyAyOyAzKSB7CiAKIGZvciAodmFyIHgg
PSAxOyB4IDwgbGVuOyArK3gpCiAgICAgMTsKLWZvciAodmFyIHggPSAxLCBsZW4gPSAxMDsgeCA8
IGxlbjsgKyt4KQorZm9yICh2YXIgeCA9IDEsIGxlbiA9IDE7IGxlbiA9IDEwLCB4IDwgbGVuOyBs
ZW4gPSA1LCArK3gpCiAgICAgMTsKIAogZm9yICh4ID0gMTsgeCA8IGxlbjsgKyt4KSB7CiAgICAg
MQogfQotZm9yICh4ID0gMSwgbGVuID0gMTA7IHggPCBsZW47ICsreCkgeworZm9yICh4ID0gMSwg
bGVuID0gMTsgbGVuID0gMTAsIHggPCBsZW47IGxlbiA9IDUsICsreCkgewogICAgIDEKIH0KIAog
Zm9yICh2YXIgeCA9IDE7IHggPCBsZW47ICsreCkgewogICAgIDEKIH0KLWZvciAodmFyIHggPSAx
LCBsZW4gPSAxMDsgeCA8IGxlbjsgKyt4KSB7Ci0gICAgMQotfQotCi1mb3IgKHZhciB4ID0gMTsg
eCA8IGxlbjsgKyt4KSB7Ci0gICAgMQotfQotZm9yICh2YXIgeCA9IDEsIGxlbiA9IDEwOyB4IDwg
bGVuOyArK3gpIHsKK2ZvciAodmFyIHggPSAxLCBsZW4gPSAxOyBsZW4gPSAxMCwgeCA8IGxlbjsg
bGVuID0gNSwgKyt4KSB7CiAgICAgMQogfQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy9mb3Itc3RhdGVtZW50
cy5qcyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2Ny
aXB0LXRlc3RzL2Zvci1zdGF0ZW1lbnRzLmpzCmluZGV4IDFiNDJkM2QwN2I3Nzk2MzFjNWZkOGI1
NjczZmJiNmM4MTg1ODViOGIuLmVmNzI5NDVlYzE0ZTk4MDg2OWU2NzIyYzg2YWJjNDQxNTNmYTYx
NTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNl
cy9qYXZhc2NyaXB0LXRlc3RzL2Zvci1zdGF0ZW1lbnRzLmpzCisrKyBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL2Zvci1zdGF0ZW1l
bnRzLmpzCkBAIC0zNSwxNiArMzUsMTMgQEAgZm9yICggMSA7IDIgOyAzICkgMQogZm9yICggMSA7
IDIgOyAzICkgezF9CiAKIGZvcih2YXIgeD0xO3g8bGVuOysreCkxOwotZm9yKHZhciB4PTEsbGVu
PTEwO3g8bGVuOysreCkxOworZm9yKHZhciB4PTEsbGVuPTE7bGVuPTEwLHg8bGVuO2xlbj01LCsr
eCkxOwogCiBmb3IoeD0xO3g8bGVuOysreCl7MX0KLWZvcih4PTEsbGVuPTEwO3g8bGVuOysreCl7
MX0KK2Zvcih4PTEsbGVuPTE7bGVuPTEwLHg8bGVuO2xlbj01LCsreCl7MX0KIAogZm9yKHZhciB4
PTE7eDxsZW47Kyt4KXsxfQotZm9yKHZhciB4PTEsbGVuPTEwO3g8bGVuOysreCl7MX0KLQotZm9y
KHZhciB4PTE7eDxsZW47Kyt4KXsxfQotZm9yKHZhciB4PTEsbGVuPTEwO3g8bGVuOysreCl7MX0K
K2Zvcih2YXIgeD0xLGxlbj0xO2xlbj0xMCx4PGxlbjtsZW49NSwrK3gpezF9CiAKIGZvcigxOzI7
Mylmb3IoNDs1OzYpZm9yKDc7ODs5KTsKIGZvcigxOzI7Myl7aWYodHJ1ZSl7Zm9yKDQ7NTs2KTB9
Zm9yKDc7ODs5KTt9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGlu
Zy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy9pZi1zdGF0ZW1lbnQtZXhwZWN0ZWQuanMgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0
cy9pZi1zdGF0ZW1lbnQtZXhwZWN0ZWQuanMKaW5kZXggM2QyYTlkOWU5N2VmYzc3NTI2OTM2YjYz
MWE2MjhlMjA5YTEwZDdkYy4uYzYyMGRlNmY0MjI3Y2RkM2FmZjAwOTMzOWFjY2MzOTZhYzkxNjk2
MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2Vz
L2phdmFzY3JpcHQtdGVzdHMvaWYtc3RhdGVtZW50LWV4cGVjdGVkLmpzCisrKyBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL2lmLXN0
YXRlbWVudC1leHBlY3RlZC5qcwpAQCAtMTY1LDMgKzE2NSw2IEBAIGlmICh0cnVlKSB7CiBpZiAo
dHJ1ZSkKICAgICBpZiAodHJ1ZSkKICAgICAgICAgMTsKKworaWYgKDEsIDIsIDMpIHt9CitpZiAo
MSwgMiwgMykge30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5n
L3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL2lmLXN0YXRlbWVudC5qcyBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL2lmLXN0YXRl
bWVudC5qcwppbmRleCAyNjU1MjZjYTNjNmEzM2VkYmNmNDRkNTMzOWIyZjI4OWE5ODZmMDUyLi44
MzdkMTUxNmUxZTkzNjJmYjBhOTk3NDFjNmU1YzcxYzFjZGI0NzA4IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy9p
Zi1zdGF0ZW1lbnQuanMKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVz
b3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvaWYtc3RhdGVtZW50LmpzCkBAIC00NywzICs0Nyw2IEBA
IGlmKHRydWUpe2lmKGZhbHNlKWlmKHRydWUpdHJ1ZTtlbHNlIGZhbHNlO2Vsc2UgaWYodHJ1ZSl0
cnVlO2Vsc2UgZmFsc2U7fQogaWYgKHRydWUpCiBpZiAodHJ1ZSkKIDE7CisKK2lmKDEsMiwzKXt9
CitpZiAgKCAgMSAgLCAgMiAgLCAgMyAgKSAgeyAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvc2FtcGxlLWpx
dWVyeS1leHBlY3RlZC5qcyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291
cmNlcy9qYXZhc2NyaXB0LXRlc3RzL3NhbXBsZS1qcXVlcnktZXhwZWN0ZWQuanMKaW5kZXggNmQ1
OTE3MzI5MDQ3MjNhODI3M2M0NzMyNTY3MWQyMzVlYzQ1NjU5NS4uZTFmMWY5NzFkMDJjZDkxZTY2
MTkxZWJmOTU3ZTBmNWEyODViMzYyMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvc2FtcGxlLWpxdWVyeS1leHBl
Y3RlZC5qcworKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMv
amF2YXNjcmlwdC10ZXN0cy9zYW1wbGUtanF1ZXJ5LWV4cGVjdGVkLmpzCkBAIC02Miw3ICs2Miw4
IEBACiAgICAgICAgICAgICAgICAgaWYgKGEgPSBvLmdldEVsZW1lbnRCeUlkKGlbMl0pLCBhICYm
IGEucGFyZW50Tm9kZSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoYS5pZCAhPT0gaVsyXSkK
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByLmZpbmQoZSk7Ci0gICAgICAgICAgICAg
ICAgICAgIHRoaXMubGVuZ3RoID0gMSwgdGhpc1swXSA9IGEKKyAgICAgICAgICAgICAgICAgICAg
dGhpcy5sZW5ndGggPSAxLAorICAgICAgICAgICAgICAgICAgICB0aGlzWzBdID0gYQogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb250ZXh0ID0gbywgdGhp
cy5zZWxlY3RvciA9IGUsIHRoaXMKICAgICAgICAgICAgIH0KQEAgLTExNCw3ICsxMTUsOSBAQAog
ICAgICAgICBwdXNoOiBkLAogICAgICAgICBzb3J0OiBbXS5zb3J0LAogICAgICAgICBzcGxpY2U6
IFtdLnNwbGljZQotICAgIH0sIGIuZm4uaW5pdC5wcm90b3R5cGUgPSBiLmZuLCBiLmV4dGVuZCA9
IGIuZm4uZXh0ZW5kID0gZnVuY3Rpb24oKSB7CisgICAgfSwKKyAgICBiLmZuLmluaXQucHJvdG90
eXBlID0gYi5mbiwKKyAgICBiLmV4dGVuZCA9IGIuZm4uZXh0ZW5kID0gZnVuY3Rpb24oKSB7CiAg
ICAgICAgIHZhciBlLAogICAgICAgICAgICAgbiwKICAgICAgICAgICAgIHIsCkBAIC0xMjgsOSAr
MTMxLDEyIEBACiAgICAgICAgIGZvciAoImJvb2xlYW4iID09IHR5cGVvZiBzICYmIChjID0gcywg
cyA9IGFyZ3VtZW50c1sxXSB8fCB7fSwgdSA9IDIpLCAib2JqZWN0IiA9PSB0eXBlb2YgcyB8fCBi
LmlzRnVuY3Rpb24ocykgfHwgKHMgPSB7fSksIGwgPT09IHUgJiYgKHMgPSB0aGlzLCAtLXUpOyBs
ID4gdTsgdSsrKQogICAgICAgICAgICAgaWYgKG51bGwgIT0gKG8gPSBhcmd1bWVudHNbdV0pKQog
ICAgICAgICAgICAgICAgIGZvciAoaSBpbiBvKQotICAgICAgICAgICAgICAgICAgICBlID0gc1tp
XSwgciA9IG9baV0sIHMgIT09IHIgJiYgKGMgJiYgciAmJiAoYi5pc1BsYWluT2JqZWN0KHIpIHx8
IChuID0gYi5pc0FycmF5KHIpKSkgPyAobiA/IChuID0gITEsIGEgPSBlICYmIGIuaXNBcnJheShl
KSA/IGUgOiBbXSkgOiBhID0gZSAmJiBiLmlzUGxhaW5PYmplY3QoZSkgPyBlIDoge30sIHNbaV0g
PSBiLmV4dGVuZChjLCBhLCByKSkgOiByICE9PSB0ICYmIChzW2ldID0gcikpOworICAgICAgICAg
ICAgICAgICAgICBlID0gc1tpXSwKKyAgICAgICAgICAgICAgICAgICAgciA9IG9baV0sCisgICAg
ICAgICAgICAgICAgICAgIHMgIT09IHIgJiYgKGMgJiYgciAmJiAoYi5pc1BsYWluT2JqZWN0KHIp
IHx8IChuID0gYi5pc0FycmF5KHIpKSkgPyAobiA/IChuID0gITEsIGEgPSBlICYmIGIuaXNBcnJh
eShlKSA/IGUgOiBbXSkgOiBhID0gZSAmJiBiLmlzUGxhaW5PYmplY3QoZSkgPyBlIDoge30sIHNb
aV0gPSBiLmV4dGVuZChjLCBhLCByKSkgOiByICE9PSB0ICYmIChzW2ldID0gcikpOwogICAgICAg
ICByZXR1cm4gcwotICAgIH0sIGIuZXh0ZW5kKHsKKyAgICB9LAorICAgIGIuZXh0ZW5kKHsKICAg
ICAgICAgbm9Db25mbGljdDogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgcmV0dXJuIGUuJCA9
PT0gYiAmJiAoZS4kID0gdSksIHQgJiYgZS5qUXVlcnkgPT09IGIgJiYgKGUualF1ZXJ5ID0gcyks
IGIKICAgICAgICAgfSwKQEAgLTE0Myw3ICsxNDksOCBAQAogICAgICAgICAgICAgaWYgKGUgPT09
ICEwID8gIS0tYi5yZWFkeVdhaXQgOiAhYi5pc1JlYWR5KSB7CiAgICAgICAgICAgICAgICAgaWYg
KCFvLmJvZHkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZXRUaW1lb3V0KGIucmVhZHkp
OwotICAgICAgICAgICAgICAgIGIuaXNSZWFkeSA9ICEwLCBlICE9PSAhMCAmJiAtLWIucmVhZHlX
YWl0ID4gMCB8fCAobi5yZXNvbHZlV2l0aChvLCBbYl0pLCBiLmZuLnRyaWdnZXIgJiYgYihvKS50
cmlnZ2VyKCJyZWFkeSIpLm9mZigicmVhZHkiKSkKKyAgICAgICAgICAgICAgICBiLmlzUmVhZHkg
PSAhMCwKKyAgICAgICAgICAgICAgICBlICE9PSAhMCAmJiAtLWIucmVhZHlXYWl0ID4gMCB8fCAo
bi5yZXNvbHZlV2l0aChvLCBbYl0pLCBiLmZuLnRyaWdnZXIgJiYgYihvKS50cmlnZ2VyKCJyZWFk
eSIpLm9mZigicmVhZHkiKSkKICAgICAgICAgICAgIH0KICAgICAgICAgfSwKICAgICAgICAgaXNG
dW5jdGlvbjogZnVuY3Rpb24oZSkgewpAQCAtMTg3LDcgKzE5NCw4IEBACiAgICAgICAgIHBhcnNl
SFRNTDogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgaWYgKCFlIHx8ICJzdHJpbmci
ICE9IHR5cGVvZiBlKQogICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICAgICAg
ImJvb2xlYW4iID09IHR5cGVvZiB0ICYmIChuID0gdCwgdCA9ICExKSwgdCA9IHQgfHwgbzsKKyAg
ICAgICAgICAgICJib29sZWFuIiA9PSB0eXBlb2YgdCAmJiAobiA9IHQsIHQgPSAhMSksCisgICAg
ICAgICAgICB0ID0gdCB8fCBvOwogICAgICAgICAgICAgdmFyIHIgPSBDLmV4ZWMoZSksCiAgICAg
ICAgICAgICAgICAgaSA9ICFuICYmIFtdOwogICAgICAgICAgICAgcmV0dXJuIHIgPyBbdC5jcmVh
dGVFbGVtZW50KHJbMV0pXSA6IChyID0gYi5idWlsZEZyYWdtZW50KFtlXSwgdCwgaSksIGkgJiYg
YihpKS5yZW1vdmUoKSwgYi5tZXJnZShbXSwgci5jaGlsZE5vZGVzKSkKQEAgLTI4MSw3ICsyODks
OCBAQAogICAgICAgICAgICAgICAgIG8gPSAwLAogICAgICAgICAgICAgICAgIGEgPSBlLmxlbmd0
aDsKICAgICAgICAgICAgIGZvciAobiA9ICEhbjsgYSA+IG87IG8rKykKLSAgICAgICAgICAgICAg
ICByID0gISF0KGVbb10sIG8pLCBuICE9PSByICYmIGkucHVzaChlW29dKTsKKyAgICAgICAgICAg
ICAgICByID0gISF0KGVbb10sIG8pLAorICAgICAgICAgICAgICAgIG4gIT09IHIgJiYgaS5wdXNo
KGVbb10pOwogICAgICAgICAgICAgcmV0dXJuIGkKICAgICAgICAgfSwKICAgICAgICAgbWFwOiBm
dW5jdGlvbihlLCB0LCBuKSB7CkBAIC0yOTIsMTAgKzMwMSwxMiBAQAogICAgICAgICAgICAgICAg
IHMgPSBbXTsKICAgICAgICAgICAgIGlmIChhKQogICAgICAgICAgICAgICAgIGZvciAoOyBvID4g
aTsgaSsrKQotICAgICAgICAgICAgICAgICAgICByID0gdChlW2ldLCBpLCBuKSwgbnVsbCAhPSBy
ICYmIChzW3MubGVuZ3RoXSA9IHIpOworICAgICAgICAgICAgICAgICAgICByID0gdChlW2ldLCBp
LCBuKSwKKyAgICAgICAgICAgICAgICAgICAgbnVsbCAhPSByICYmIChzW3MubGVuZ3RoXSA9IHIp
OwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGZvciAoaSBpbiBlKQotICAgICAg
ICAgICAgICAgICAgICByID0gdChlW2ldLCBpLCBuKSwgbnVsbCAhPSByICYmIChzW3MubGVuZ3Ro
XSA9IHIpOworICAgICAgICAgICAgICAgICAgICByID0gdChlW2ldLCBpLCBuKSwKKyAgICAgICAg
ICAgICAgICAgICAgbnVsbCAhPSByICYmIChzW3MubGVuZ3RoXSA9IHIpOwogICAgICAgICAgICAg
cmV0dXJuIGYuYXBwbHkoW10sIHMpCiAgICAgICAgIH0sCiAgICAgICAgIGd1aWQ6IDEsCkBAIC0z
MjUsMTQgKzMzNiwxNyBAQAogICAgICAgICBub3c6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAg
cmV0dXJuIChuZXcgRGF0ZSkuZ2V0VGltZSgpCiAgICAgICAgIH0KLSAgICB9KSwgYi5yZWFkeS5w
cm9taXNlID0gZnVuY3Rpb24odCkgeworICAgIH0pLAorICAgIGIucmVhZHkucHJvbWlzZSA9IGZ1
bmN0aW9uKHQpIHsKICAgICAgICAgaWYgKCFuKQogICAgICAgICAgICAgaWYgKG4gPSBiLkRlZmVy
cmVkKCksICJjb21wbGV0ZSIgPT09IG8ucmVhZHlTdGF0ZSkKICAgICAgICAgICAgICAgICBzZXRU
aW1lb3V0KGIucmVhZHkpOwogICAgICAgICAgICAgZWxzZSBpZiAoby5hZGRFdmVudExpc3RlbmVy
KQotICAgICAgICAgICAgICAgIG8uYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIs
IEgsICExKSwgZS5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgSCwgITEpOworICAgICAgICAgICAg
ICAgIG8uYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIEgsICExKSwKKyAgICAg
ICAgICAgICAgICBlLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBILCAhMSk7CiAgICAgICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgICAgICBvLmF0dGFjaEV2ZW50KCJvbnJlYWR5c3RhdGVjaGFu
Z2UiLCBIKSwgZS5hdHRhY2hFdmVudCgib25sb2FkIiwgSCk7CisgICAgICAgICAgICAgICAgby5h
dHRhY2hFdmVudCgib25yZWFkeXN0YXRlY2hhbmdlIiwgSCksCisgICAgICAgICAgICAgICAgZS5h
dHRhY2hFdmVudCgib25sb2FkIiwgSCk7CiAgICAgICAgICAgICAgICAgdmFyIHIgPSAhMTsKICAg
ICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICByID0gbnVsbCA9PSBlLmZy
YW1lRWxlbWVudCAmJiBvLmRvY3VtZW50RWxlbWVudApAQCAtMzQ0LDEyICszNTgsMTQgQEAKICAg
ICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gc2V0VGltZW91dChhLCA1MCkKICAgICAgICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICAgICAgICAgIHEoKSwgYi5yZWFkeSgpCisgICAgICAgICAgICAg
ICAgICAgICAgICBxKCksCisgICAgICAgICAgICAgICAgICAgICAgICBiLnJlYWR5KCkKICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0oKQogICAgICAgICAgICAgfQogICAg
ICAgICByZXR1cm4gbi5wcm9taXNlKHQpCi0gICAgfSwgYi5lYWNoKCJCb29sZWFuIE51bWJlciBT
dHJpbmcgRnVuY3Rpb24gQXJyYXkgRGF0ZSBSZWdFeHAgT2JqZWN0IEVycm9yIi5zcGxpdCgiICIp
LCBmdW5jdGlvbihlLCB0KSB7CisgICAgfSwKKyAgICBiLmVhY2goIkJvb2xlYW4gTnVtYmVyIFN0
cmluZyBGdW5jdGlvbiBBcnJheSBEYXRlIFJlZ0V4cCBPYmplY3QgRXJyb3IiLnNwbGl0KCIgIiks
IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgbFsiW29iamVjdCAiICsgdCArICJdIl0gPSB0LnRv
TG93ZXJDYXNlKCkKICAgICB9KTsKICAgICBmdW5jdGlvbiBNKGUpIHsKQEAgLTM4MSw3ICszOTcs
OCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgciA9ICExOwogICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIG4gPSAh
MSwgdSAmJiAobCA/IGwubGVuZ3RoICYmIGMobC5zaGlmdCgpKSA6IHIgPyB1ID0gW10gOiBwLmRp
c2FibGUoKSkKKyAgICAgICAgICAgICAgICBuID0gITEsCisgICAgICAgICAgICAgICAgdSAmJiAo
bCA/IGwubGVuZ3RoICYmIGMobC5zaGlmdCgpKSA6IHIgPyB1ID0gW10gOiBwLmRpc2FibGUoKSkK
ICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICBwID0gewogICAgICAgICAgICAgICAgIGFkZDog
ZnVuY3Rpb24oKSB7CkBAIC0zOTIsNyArNDA5LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyIHIgPSBiLnR5cGUobik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJmdW5jdGlvbiIgPT09IHIgPyBlLnVuaXF1ZSAmJiBwLmhhcyhuKSB8fCB1LnB1c2gobikg
OiBuICYmIG4ubGVuZ3RoICYmICJzdHJpbmciICE9PSByICYmIGkobikKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9KQotICAgICAgICAgICAgICAgICAgICAgICAgfSkoYXJndW1lbnRzKSwg
biA/IG8gPSB1Lmxlbmd0aCA6IHIgJiYgKHMgPSB0LCBjKHIpKQorICAgICAgICAgICAgICAgICAg
ICAgICAgfSkoYXJndW1lbnRzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG4gPyBvID0gdS5s
ZW5ndGggOiByICYmIChzID0gdCwgYyhyKSkKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdGhpcwogICAgICAgICAgICAgICAgIH0sCkBAIC00MDAsNyAr
NDE4LDggQEAKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHUgJiYgYi5lYWNoKGFyZ3VtZW50
cywgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHI7CiAgICAg
ICAgICAgICAgICAgICAgICAgICB3aGlsZSAoKHIgPSBiLmluQXJyYXkodCwgdSwgcikpID4gLTEp
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdS5zcGxpY2UociwgMSksIG4gJiYgKG8gPj0g
ciAmJiBvLS0sIGEgPj0gciAmJiBhLS0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdS5z
cGxpY2UociwgMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiAmJiAobyA+PSByICYm
IG8tLSwgYSA+PSByICYmIGEtLSkKICAgICAgICAgICAgICAgICAgICAgfSksIHRoaXMKICAgICAg
ICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgIGhhczogZnVuY3Rpb24oZSkgewpAQCAtNDMy
LDcgKzQ1MSw4IEBACiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfTsKICAgICAgICAg
cmV0dXJuIHAKLSAgICB9LCBiLmV4dGVuZCh7CisgICAgfSwKKyAgICBiLmV4dGVuZCh7CiAgICAg
ICAgIERlZmVycmVkOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICB2YXIgdCA9IFtbInJlc29s
dmUiLCAiZG9uZSIsIGIuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLCAicmVzb2x2ZWQiXSwgWyJy
ZWplY3QiLCAiZmFpbCIsIGIuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLCAicmVqZWN0ZWQiXSwg
WyJub3RpZnkiLCAicHJvZ3Jlc3MiLCBiLkNhbGxiYWNrcygibWVtb3J5IildXSwKICAgICAgICAg
ICAgICAgICBuID0gInBlbmRpbmciLApAQCAtNDUzLDcgKzQ3Myw4IEBACiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHMgJiYgcy5hcHBseSh0aGlzLCBhcmd1bWVu
dHMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSAmJiBiLmlzRnVuY3Rp
b24oZS5wcm9taXNlKSA/IGUucHJvbWlzZSgpLmRvbmUobi5yZXNvbHZlKS5mYWlsKG4ucmVqZWN0
KS5wcm9ncmVzcyhuLm5vdGlmeSkgOiBuW2EgKyAiV2l0aCJdKHRoaXMgPT09IHIgPyBuLnByb21p
c2UoKSA6IHRoaXMsIHMgPyBbZV0gOiBhcmd1bWVudHMpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIGUgPSBudWxsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZSA9IG51bGwKICAgICAgICAgICAgICAgICAgICAgICAgIH0pLnByb21pc2UoKQogICAgICAg
ICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICBwcm9taXNlOiBmdW5jdGlvbihl
KSB7CkBAIC00NjQsMTEgKzQ4NSwxNCBAQAogICAgICAgICAgICAgcmV0dXJuIHIucGlwZSA9IHIu
dGhlbiwgYi5lYWNoKHQsIGZ1bmN0aW9uKGUsIG8pIHsKICAgICAgICAgICAgICAgICB2YXIgYSA9
IG9bMl0sCiAgICAgICAgICAgICAgICAgICAgIHMgPSBvWzNdOwotICAgICAgICAgICAgICAgIHJb
b1sxXV0gPSBhLmFkZCwgcyAmJiBhLmFkZChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBy
W29bMV1dID0gYS5hZGQsCisgICAgICAgICAgICAgICAgcyAmJiBhLmFkZChmdW5jdGlvbigpIHsK
ICAgICAgICAgICAgICAgICAgICAgbiA9IHMKLSAgICAgICAgICAgICAgICB9LCB0WzEgXiBlXVsy
XS5kaXNhYmxlLCB0WzJdWzJdLmxvY2spLCBpW29bMF1dID0gZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgICAgICAgfSwgdFsxIF4gZV1bMl0uZGlzYWJsZSwgdFsyXVsyXS5sb2NrKSwKKyAgICAgICAg
ICAgICAgICBpW29bMF1dID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBpW29bMF0gKyAiV2l0aCJdKHRoaXMgPT09IGkgPyByIDogdGhpcywgYXJndW1lbnRzKSwgdGhp
cwotICAgICAgICAgICAgICAgIH0sIGlbb1swXSArICJXaXRoIl0gPSBhLmZpcmVXaXRoCisgICAg
ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBpW29bMF0gKyAiV2l0aCJdID0gYS5maXJl
V2l0aAogICAgICAgICAgICAgfSksIHIucHJvbWlzZShpKSwgZSAmJiBlLmNhbGwoaSwgaSksIGkK
ICAgICAgICAgfSwKICAgICAgICAgd2hlbjogZnVuY3Rpb24oZSkgewpAQCAtNDc5LDcgKzUwMyw5
IEBACiAgICAgICAgICAgICAgICAgbyA9IDEgPT09IGkgPyBlIDogYi5EZWZlcnJlZCgpLAogICAg
ICAgICAgICAgICAgIGEgPSBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBmdW5jdGlvbihyKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0W2VdID0gdGhp
cywgbltlXSA9IGFyZ3VtZW50cy5sZW5ndGggPiAxID8gaC5jYWxsKGFyZ3VtZW50cykgOiByLCBu
ID09PSBzID8gby5ub3RpZnlXaXRoKHQsIG4pIDogLS1pIHx8IG8ucmVzb2x2ZVdpdGgodCwgbikK
KyAgICAgICAgICAgICAgICAgICAgICAgIHRbZV0gPSB0aGlzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgbltlXSA9IGFyZ3VtZW50cy5sZW5ndGggPiAxID8gaC5jYWxsKGFyZ3VtZW50cykgOiBy
LAorICAgICAgICAgICAgICAgICAgICAgICAgbiA9PT0gcyA/IG8ubm90aWZ5V2l0aCh0LCBuKSA6
IC0taSB8fCBvLnJlc29sdmVXaXRoKHQsIG4pCiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgIHMsCkBAIC00OTAsNyArNTE2LDggQEAKICAg
ICAgICAgICAgICAgICAgICAgblt0XSAmJiBiLmlzRnVuY3Rpb24oblt0XS5wcm9taXNlKSA/IG5b
dF0ucHJvbWlzZSgpLmRvbmUoYSh0LCBsLCBuKSkuZmFpbChvLnJlamVjdCkucHJvZ3Jlc3MoYSh0
LCB1LCBzKSkgOiAtLWk7CiAgICAgICAgICAgICByZXR1cm4gaSB8fCBvLnJlc29sdmVXaXRoKGws
IG4pLCBvLnByb21pc2UoKQogICAgICAgICB9Ci0gICAgfSksIGIuc3VwcG9ydCA9IGZ1bmN0aW9u
KCkgeworICAgIH0pLAorICAgIGIuc3VwcG9ydCA9IGZ1bmN0aW9uKCkgewogICAgICAgICB2YXIg
dCwKICAgICAgICAgICAgIG4sCiAgICAgICAgICAgICByLApAQCAtNTA0LDcgKzUzMSwxMSBAQAog
ICAgICAgICAgICAgZCA9IG8uY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgICAgIGlmIChkLnNl
dEF0dHJpYnV0ZSgiY2xhc3NOYW1lIiwgInQiKSwgZC5pbm5lckhUTUwgPSAiICA8bGluay8+PHRh
YmxlPjwvdGFibGU+PGEgaHJlZj0nL2EnPmE8L2E+PGlucHV0IHR5cGU9J2NoZWNrYm94Jy8+Iiwg
biA9IGQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKSwgciA9IGQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoImEiKVswXSwgIW4gfHwgIXIgfHwgIW4ubGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJuIHt9
OwotICAgICAgICBzID0gby5jcmVhdGVFbGVtZW50KCJzZWxlY3QiKSwgbCA9IHMuYXBwZW5kQ2hp
bGQoby5jcmVhdGVFbGVtZW50KCJvcHRpb24iKSksIGEgPSBkLmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJpbnB1dCIpWzBdLCByLnN0eWxlLmNzc1RleHQgPSAidG9wOjFweDtmbG9hdDpsZWZ0O29wYWNp
dHk6LjUiLCB0ID0geworICAgICAgICBzID0gby5jcmVhdGVFbGVtZW50KCJzZWxlY3QiKSwKKyAg
ICAgICAgbCA9IHMuYXBwZW5kQ2hpbGQoby5jcmVhdGVFbGVtZW50KCJvcHRpb24iKSksCisgICAg
ICAgIGEgPSBkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIpWzBdLAorICAgICAgICByLnN0
eWxlLmNzc1RleHQgPSAidG9wOjFweDtmbG9hdDpsZWZ0O29wYWNpdHk6LjUiLAorICAgICAgICB0
ID0gewogICAgICAgICAgICAgZ2V0U2V0QXR0cmlidXRlOiAidCIgIT09IGQuY2xhc3NOYW1lLAog
ICAgICAgICAgICAgbGVhZGluZ1doaXRlc3BhY2U6IDMgPT09IGQuZmlyc3RDaGlsZC5ub2RlVHlw
ZSwKICAgICAgICAgICAgIHRib2R5OiAhZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGJvZHkiKS5s
ZW5ndGgsCkBAIC01MjUsMTMgKzU1NiwyOSBAQAogICAgICAgICAgICAgcmVsaWFibGVNYXJnaW5S
aWdodDogITAsCiAgICAgICAgICAgICBib3hTaXppbmdSZWxpYWJsZTogITAsCiAgICAgICAgICAg
ICBwaXhlbFBvc2l0aW9uOiAhMQotICAgICAgICB9LCBhLmNoZWNrZWQgPSAhMCwgdC5ub0Nsb25l
Q2hlY2tlZCA9IGEuY2xvbmVOb2RlKCEwKS5jaGVja2VkLCBzLmRpc2FibGVkID0gITAsIHQub3B0
RGlzYWJsZWQgPSAhbC5kaXNhYmxlZDsKKyAgICAgICAgfSwKKyAgICAgICAgYS5jaGVja2VkID0g
ITAsCisgICAgICAgIHQubm9DbG9uZUNoZWNrZWQgPSBhLmNsb25lTm9kZSghMCkuY2hlY2tlZCwK
KyAgICAgICAgcy5kaXNhYmxlZCA9ICEwLAorICAgICAgICB0Lm9wdERpc2FibGVkID0gIWwuZGlz
YWJsZWQ7CiAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICBkZWxldGUgZC50ZXN0CiAgICAgICAg
IH0gY2F0Y2ggKGgpIHsKICAgICAgICAgICAgIHQuZGVsZXRlRXhwYW5kbyA9ICExCiAgICAgICAg
IH0KLSAgICAgICAgYSA9IG8uY3JlYXRlRWxlbWVudCgiaW5wdXQiKSwgYS5zZXRBdHRyaWJ1dGUo
InZhbHVlIiwgIiIpLCB0LmlucHV0ID0gIiIgPT09IGEuZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpLCBh
LnZhbHVlID0gInQiLCBhLnNldEF0dHJpYnV0ZSgidHlwZSIsICJyYWRpbyIpLCB0LnJhZGlvVmFs
dWUgPSAidCIgPT09IGEudmFsdWUsIGEuc2V0QXR0cmlidXRlKCJjaGVja2VkIiwgInQiKSwgYS5z
ZXRBdHRyaWJ1dGUoIm5hbWUiLCAidCIpLCB1ID0gby5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCks
IHUuYXBwZW5kQ2hpbGQoYSksIHQuYXBwZW5kQ2hlY2tlZCA9IGEuY2hlY2tlZCwgdC5jaGVja0Ns
b25lID0gdS5jbG9uZU5vZGUoITApLmNsb25lTm9kZSghMCkubGFzdENoaWxkLmNoZWNrZWQsIGQu
YXR0YWNoRXZlbnQgJiYgKGQuYXR0YWNoRXZlbnQoIm9uY2xpY2siLCBmdW5jdGlvbigpIHsKKyAg
ICAgICAgYSA9IG8uY3JlYXRlRWxlbWVudCgiaW5wdXQiKSwKKyAgICAgICAgYS5zZXRBdHRyaWJ1
dGUoInZhbHVlIiwgIiIpLAorICAgICAgICB0LmlucHV0ID0gIiIgPT09IGEuZ2V0QXR0cmlidXRl
KCJ2YWx1ZSIpLAorICAgICAgICBhLnZhbHVlID0gInQiLAorICAgICAgICBhLnNldEF0dHJpYnV0
ZSgidHlwZSIsICJyYWRpbyIpLAorICAgICAgICB0LnJhZGlvVmFsdWUgPSAidCIgPT09IGEudmFs
dWUsCisgICAgICAgIGEuc2V0QXR0cmlidXRlKCJjaGVja2VkIiwgInQiKSwKKyAgICAgICAgYS5z
ZXRBdHRyaWJ1dGUoIm5hbWUiLCAidCIpLAorICAgICAgICB1ID0gby5jcmVhdGVEb2N1bWVudEZy
YWdtZW50KCksCisgICAgICAgIHUuYXBwZW5kQ2hpbGQoYSksCisgICAgICAgIHQuYXBwZW5kQ2hl
Y2tlZCA9IGEuY2hlY2tlZCwKKyAgICAgICAgdC5jaGVja0Nsb25lID0gdS5jbG9uZU5vZGUoITAp
LmNsb25lTm9kZSghMCkubGFzdENoaWxkLmNoZWNrZWQsCisgICAgICAgIGQuYXR0YWNoRXZlbnQg
JiYgKGQuYXR0YWNoRXZlbnQoIm9uY2xpY2siLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgIHQu
bm9DbG9uZUV2ZW50ID0gITEKICAgICAgICAgfSksIGQuY2xvbmVOb2RlKCEwKS5jbGljaygpKTsK
ICAgICAgICAgZm9yIChmIGluIHsKQEAgLTUzOSw3ICs1ODYsOCBAQAogICAgICAgICAgICAgY2hh
bmdlOiAhMCwKICAgICAgICAgICAgIGZvY3VzaW46ICEwCiAgICAgICAgIH0pCi0gICAgICAgICAg
ICBkLnNldEF0dHJpYnV0ZShjID0gIm9uIiArIGYsICJ0IiksIHRbZiArICJCdWJibGVzIl0gPSBj
IGluIGUgfHwgZC5hdHRyaWJ1dGVzW2NdLmV4cGFuZG8gPT09ICExOworICAgICAgICAgICAgZC5z
ZXRBdHRyaWJ1dGUoYyA9ICJvbiIgKyBmLCAidCIpLAorICAgICAgICAgICAgdFtmICsgIkJ1YmJs
ZXMiXSA9IGMgaW4gZSB8fCBkLmF0dHJpYnV0ZXNbY10uZXhwYW5kbyA9PT0gITE7CiAgICAgICAg
IHJldHVybiBkLnN0eWxlLmJhY2tncm91bmRDbGlwID0gImNvbnRlbnQtYm94IiwgZC5jbG9uZU5v
ZGUoITApLnN0eWxlLmJhY2tncm91bmRDbGlwID0gIiIsIHQuY2xlYXJDbG9uZVN0eWxlID0gImNv
bnRlbnQtYm94IiA9PT0gZC5zdHlsZS5iYWNrZ3JvdW5kQ2xpcCwgYihmdW5jdGlvbigpIHsKICAg
ICAgICAgICAgIHZhciBuLAogICAgICAgICAgICAgICAgIHIsCkBAIC02MTUsNyArNjYzLDggQEAK
ICAgICAgICAgICAgIHZhciB0ID0gZS5ub2RlTmFtZSAmJiBiLm5vRGF0YVtlLm5vZGVOYW1lLnRv
TG93ZXJDYXNlKCldOwogICAgICAgICAgICAgcmV0dXJuICF0IHx8IHQgIT09ICEwICYmIGUuZ2V0
QXR0cmlidXRlKCJjbGFzc2lkIikgPT09IHQKICAgICAgICAgfQotICAgIH0pLCBiLmZuLmV4dGVu
ZCh7CisgICAgfSksCisgICAgYi5mbi5leHRlbmQoewogICAgICAgICBkYXRhOiBmdW5jdGlvbihl
LCBuKSB7CiAgICAgICAgICAgICB2YXIgciwKICAgICAgICAgICAgICAgICBpLApAQCAtNjI1LDcg
KzY3NCw4IEBACiAgICAgICAgICAgICBpZiAoZSA9PT0gdCkgewogICAgICAgICAgICAgICAgIGlm
ICh0aGlzLmxlbmd0aCAmJiAocyA9IGIuZGF0YShvKSwgMSA9PT0gby5ub2RlVHlwZSAmJiAhYi5f
ZGF0YShvLCAicGFyc2VkQXR0cnMiKSkpIHsKICAgICAgICAgICAgICAgICAgICAgZm9yIChyID0g
by5hdHRyaWJ1dGVzOyByLmxlbmd0aCA+IGE7IGErKykKLSAgICAgICAgICAgICAgICAgICAgICAg
IGkgPSByW2FdLm5hbWUsIGkuaW5kZXhPZigiZGF0YS0iKSB8fCAoaSA9IGIuY2FtZWxDYXNlKGku
c2xpY2UoNSkpLCBXKG8sIGksIHNbaV0pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBy
W2FdLm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICBpLmluZGV4T2YoImRhdGEtIikgfHwg
KGkgPSBiLmNhbWVsQ2FzZShpLnNsaWNlKDUpKSwgVyhvLCBpLCBzW2ldKSk7CiAgICAgICAgICAg
ICAgICAgICAgIGIuX2RhdGEobywgInBhcnNlZEF0dHJzIiwgITApCiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIHJldHVybiBzCkBAIC02NzgsMjIgKzcyOCwyOCBAQAogICAgICAg
ICAgICAgICAgIGEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgYi5kZXF1ZXVl
KGUsIHQpCiAgICAgICAgICAgICAgICAgfTsKLSAgICAgICAgICAgICJpbnByb2dyZXNzIiA9PT0g
aSAmJiAoaSA9IG4uc2hpZnQoKSwgci0tKSwgby5jdXIgPSBpLCBpICYmICgiZngiID09PSB0ICYm
IG4udW5zaGlmdCgiaW5wcm9ncmVzcyIpLCBkZWxldGUgby5zdG9wLCBpLmNhbGwoZSwgYSwgbykp
LCAhciAmJiBvICYmIG8uZW1wdHkuZmlyZSgpCisgICAgICAgICAgICAiaW5wcm9ncmVzcyIgPT09
IGkgJiYgKGkgPSBuLnNoaWZ0KCksIHItLSksCisgICAgICAgICAgICBvLmN1ciA9IGksCisgICAg
ICAgICAgICBpICYmICgiZngiID09PSB0ICYmIG4udW5zaGlmdCgiaW5wcm9ncmVzcyIpLCBkZWxl
dGUgby5zdG9wLCBpLmNhbGwoZSwgYSwgbykpLAorICAgICAgICAgICAgIXIgJiYgbyAmJiBvLmVt
cHR5LmZpcmUoKQogICAgICAgICB9LAogICAgICAgICBfcXVldWVIb29rczogZnVuY3Rpb24oZSwg
dCkgewogICAgICAgICAgICAgdmFyIG4gPSB0ICsgInF1ZXVlSG9va3MiOwogICAgICAgICAgICAg
cmV0dXJuIGIuX2RhdGEoZSwgbikgfHwgYi5fZGF0YShlLCBuLCB7CiAgICAgICAgICAgICAgICAg
ICAgIGVtcHR5OiBiLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKS5hZGQoZnVuY3Rpb24oKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBiLl9yZW1vdmVEYXRhKGUsIHQgKyAicXVldWUiKSwgYi5f
cmVtb3ZlRGF0YShlLCBuKQorICAgICAgICAgICAgICAgICAgICAgICAgYi5fcmVtb3ZlRGF0YShl
LCB0ICsgInF1ZXVlIiksCisgICAgICAgICAgICAgICAgICAgICAgICBiLl9yZW1vdmVEYXRhKGUs
IG4pCiAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgfSkKICAgICAgICAg
fQotICAgIH0pLCBiLmZuLmV4dGVuZCh7CisgICAgfSksCisgICAgYi5mbi5leHRlbmQoewogICAg
ICAgICBxdWV1ZTogZnVuY3Rpb24oZSwgbikgewogICAgICAgICAgICAgdmFyIHIgPSAyOwogICAg
ICAgICAgICAgcmV0dXJuICJzdHJpbmciICE9IHR5cGVvZiBlICYmIChuID0gZSwgZSA9ICJmeCIs
IHItLSksIHIgPiBhcmd1bWVudHMubGVuZ3RoID8gYi5xdWV1ZSh0aGlzWzBdLCBlKSA6IG4gPT09
IHQgPyB0aGlzIDogdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgIHZhciB0
ID0gYi5xdWV1ZSh0aGlzLCBlLCBuKTsKLSAgICAgICAgICAgICAgICBiLl9xdWV1ZUhvb2tzKHRo
aXMsIGUpLCAiZngiID09PSBlICYmICJpbnByb2dyZXNzIiAhPT0gdFswXSAmJiBiLmRlcXVldWUo
dGhpcywgZSkKKyAgICAgICAgICAgICAgICBiLl9xdWV1ZUhvb2tzKHRoaXMsIGUpLAorICAgICAg
ICAgICAgICAgICJmeCIgPT09IGUgJiYgImlucHJvZ3Jlc3MiICE9PSB0WzBdICYmIGIuZGVxdWV1
ZSh0aGlzLCBlKQogICAgICAgICAgICAgfSkKICAgICAgICAgfSwKICAgICAgICAgZGVxdWV1ZTog
ZnVuY3Rpb24oZSkgewpAQCAtNzIxLDkgKzc3NywxMSBAQAogICAgICAgICAgICAgICAgIHUgPSBm
dW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgLS1pIHx8IG8ucmVzb2x2ZVdpdGgoYSwg
W2FdKQogICAgICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICAic3RyaW5nIiAhPSB0eXBlb2Yg
ZSAmJiAobiA9IGUsIGUgPSB0KSwgZSA9IGUgfHwgImZ4IjsKKyAgICAgICAgICAgICJzdHJpbmci
ICE9IHR5cGVvZiBlICYmIChuID0gZSwgZSA9IHQpLAorICAgICAgICAgICAgZSA9IGUgfHwgImZ4
IjsKICAgICAgICAgICAgIHdoaWxlIChzLS0pCi0gICAgICAgICAgICAgICAgciA9IGIuX2RhdGEo
YVtzXSwgZSArICJxdWV1ZUhvb2tzIiksIHIgJiYgci5lbXB0eSAmJiAoaSsrLCByLmVtcHR5LmFk
ZCh1KSk7CisgICAgICAgICAgICAgICAgciA9IGIuX2RhdGEoYVtzXSwgZSArICJxdWV1ZUhvb2tz
IiksCisgICAgICAgICAgICAgICAgciAmJiByLmVtcHR5ICYmIChpKyssIHIuZW1wdHkuYWRkKHUp
KTsKICAgICAgICAgICAgIHJldHVybiB1KCksIG8ucHJvbWlzZShuKQogICAgICAgICB9CiAgICAg
fSk7CkBAIC03NTIsNyArODEwLDggQEAKICAgICAgICAgcmVtb3ZlUHJvcDogZnVuY3Rpb24oZSkg
ewogICAgICAgICAgICAgcmV0dXJuIGUgPSBiLnByb3BGaXhbZV0gfHwgZSwgdGhpcy5lYWNoKGZ1
bmN0aW9uKCkgewogICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgIHRo
aXNbZV0gPSB0LCBkZWxldGUgdGhpc1tlXQorICAgICAgICAgICAgICAgICAgICB0aGlzW2VdID0g
dCwKKyAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHRoaXNbZV0KICAgICAgICAgICAgICAgICB9
IGNhdGNoIChuKSB7fQogICAgICAgICAgICAgfSkKICAgICAgICAgfSwKQEAgLTgxNiw3ICs4NzUs
OCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgdSA9IHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICBsID0gZS5tYXRjaCh3KSB8fCBbXTsKICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKG8g
PSBsW2ErK10pCi0gICAgICAgICAgICAgICAgICAgICAgICB1ID0gciA/IHUgOiAhcy5oYXNDbGFz
cyhvKSwgc1t1ID8gImFkZENsYXNzIiA6ICJyZW1vdmVDbGFzcyJdKG8pCisgICAgICAgICAgICAg
ICAgICAgICAgICB1ID0gciA/IHUgOiAhcy5oYXNDbGFzcyhvKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHNbdSA/ICJhZGRDbGFzcyIgOiAicmVtb3ZlQ2xhc3MiXShvKQogICAgICAgICAgICAg
ICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICAobiA9PT0gaSB8fCAiYm9vbGVhbiIgPT09
IG4pICYmICh0aGlzLmNsYXNzTmFtZSAmJiBiLl9kYXRhKHRoaXMsICJfX2NsYXNzTmFtZV9fIiwg
dGhpcy5jbGFzc05hbWUpLCB0aGlzLmNsYXNzTmFtZSA9IHRoaXMuY2xhc3NOYW1lIHx8IGUgPT09
ICExID8gIiIgOiBiLl9kYXRhKHRoaXMsICJfX2NsYXNzTmFtZV9fIikgfHwgIiIpCiAgICAgICAg
ICAgICB9KQpAQCAtODQ4LDcgKzkwOCw4IEBACiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBy
ID0gYi52YWxIb29rc1tvLnR5cGVdIHx8IGIudmFsSG9va3Nbby5ub2RlTmFtZS50b0xvd2VyQ2Fz
ZSgpXSwgciAmJiAiZ2V0IiBpbiByICYmIChuID0gci5nZXQobywgInZhbHVlIikpICE9PSB0ID8g
biA6IChuID0gby52YWx1ZSwgInN0cmluZyIgPT0gdHlwZW9mIG4gPyBuLnJlcGxhY2UoVSwgIiIp
IDogbnVsbCA9PSBuID8gIiIgOiBuKQogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgfSks
IGIuZXh0ZW5kKHsKKyAgICB9KSwKKyAgICBiLmV4dGVuZCh7CiAgICAgICAgIHZhbEhvb2tzOiB7
CiAgICAgICAgICAgICBvcHRpb246IHsKICAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKGUp
IHsKQEAgLTg5Nyw3ICs5NTgsOSBAQAogICAgICAgICAgICAgICAgIG8gPSB0ICYmIHQubWF0Y2go
dyk7CiAgICAgICAgICAgICBpZiAobyAmJiAxID09PSBlLm5vZGVUeXBlKQogICAgICAgICAgICAg
ICAgIHdoaWxlIChuID0gb1tpKytdKQotICAgICAgICAgICAgICAgICAgICByID0gYi5wcm9wRml4
W25dIHx8IG4sIEoudGVzdChuKSA/ICFRICYmIEcudGVzdChuKSA/IGVbYi5jYW1lbENhc2UoImRl
ZmF1bHQtIiArIG4pXSA9IGVbcl0gPSAhMSA6IGVbcl0gPSAhMSA6IGIuYXR0cihlLCBuLCAiIiks
IGUucmVtb3ZlQXR0cmlidXRlKFEgPyBuIDogcikKKyAgICAgICAgICAgICAgICAgICAgciA9IGIu
cHJvcEZpeFtuXSB8fCBuLAorICAgICAgICAgICAgICAgICAgICBKLnRlc3QobikgPyAhUSAmJiBH
LnRlc3QobikgPyBlW2IuY2FtZWxDYXNlKCJkZWZhdWx0LSIgKyBuKV0gPSBlW3JdID0gITEgOiBl
W3JdID0gITEgOiBiLmF0dHIoZSwgbiwgIiIpLAorICAgICAgICAgICAgICAgICAgICBlLnJlbW92
ZUF0dHJpYnV0ZShRID8gbiA6IHIpCiAgICAgICAgIH0sCiAgICAgICAgIGF0dHJIb29rczogewog
ICAgICAgICAgICAgdHlwZTogewpAQCAtOTM5LDcgKzEwMDIsOCBAQAogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgIH0pLCB6ID0geworICAgIH0pLAorICAg
IHogPSB7CiAgICAgICAgIGdldDogZnVuY3Rpb24oZSwgbikgewogICAgICAgICAgICAgdmFyIHIg
PSBiLnByb3AoZSwgbiksCiAgICAgICAgICAgICAgICAgaSA9ICJib29sZWFuIiA9PSB0eXBlb2Yg
ciAmJiBlLmdldEF0dHJpYnV0ZShuKSwKQEAgLTk0OSw3ICsxMDEzLDggQEAKICAgICAgICAgc2V0
OiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICByZXR1cm4gdCA9PT0gITEgPyBiLnJl
bW92ZUF0dHIoZSwgbikgOiBLICYmIFEgfHwgIUcudGVzdChuKSA/IGUuc2V0QXR0cmlidXRlKCFR
ICYmIGIucHJvcEZpeFtuXSB8fCBuLCBuKSA6IGVbYi5jYW1lbENhc2UoImRlZmF1bHQtIiArIG4p
XSA9IGVbbl0gPSAhMCwgbgogICAgICAgICB9Ci0gICAgfSwgSyAmJiBRIHx8IChiLmF0dHJIb29r
cy52YWx1ZSA9IHsKKyAgICB9LAorICAgIEsgJiYgUSB8fCAoYi5hdHRySG9va3MudmFsdWUgPSB7
CiAgICAgICAgIGdldDogZnVuY3Rpb24oZSwgbikgewogICAgICAgICAgICAgdmFyIHIgPSBlLmdl
dEF0dHJpYnV0ZU5vZGUobik7CiAgICAgICAgICAgICByZXR1cm4gYi5ub2RlTmFtZShlLCAiaW5w
dXQiKSA/IGUuZGVmYXVsdFZhbHVlIDogciAmJiByLnNwZWNpZmllZCA/IHIudmFsdWUgOiB0CkBA
IC05NTcsNyArMTAyMiw4IEBACiAgICAgICAgIHNldDogZnVuY3Rpb24oZSwgbiwgcikgewogICAg
ICAgICAgICAgcmV0dXJuIGIubm9kZU5hbWUoZSwgImlucHV0IikgPyAoZS5kZWZhdWx0VmFsdWUg
PSBuLCB0KSA6IEkgJiYgSS5zZXQoZSwgbiwgcikKICAgICAgICAgfQotICAgIH0pLCBRIHx8IChJ
ID0gYi52YWxIb29rcy5idXR0b24gPSB7CisgICAgfSksCisgICAgUSB8fCAoSSA9IGIudmFsSG9v
a3MuYnV0dG9uID0gewogICAgICAgICBnZXQ6IGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgICAg
IHZhciByID0gZS5nZXRBdHRyaWJ1dGVOb2RlKG4pOwogICAgICAgICAgICAgcmV0dXJuIHIgJiYg
KCJpZCIgPT09IG4gfHwgIm5hbWUiID09PSBuIHx8ICJjb29yZHMiID09PSBuID8gIiIgIT09IHIu
dmFsdWUgOiByLnNwZWNpZmllZCkgPyByLnZhbHVlIDogdApAQCAtOTc3LDcgKzEwNDMsOCBAQAog
ICAgICAgICAgICAgICAgIHJldHVybiAiIiA9PT0gciA/IChlLnNldEF0dHJpYnV0ZShuLCAiYXV0
byIpLCByKSA6IHQKICAgICAgICAgICAgIH0KICAgICAgICAgfSkKLSAgICB9KSksIGIuc3VwcG9y
dC5ocmVmTm9ybWFsaXplZCB8fCAoYi5lYWNoKFsiaHJlZiIsICJzcmMiLCAid2lkdGgiLCAiaGVp
Z2h0Il0sIGZ1bmN0aW9uKGUsIG4pIHsKKyAgICB9KSksCisgICAgYi5zdXBwb3J0LmhyZWZOb3Jt
YWxpemVkIHx8IChiLmVhY2goWyJocmVmIiwgInNyYyIsICJ3aWR0aCIsICJoZWlnaHQiXSwgZnVu
Y3Rpb24oZSwgbikgewogICAgICAgICBiLmF0dHJIb29rc1tuXSA9IGIuZXh0ZW5kKGIuYXR0ckhv
b2tzW25dLCB7CiAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAg
ICB2YXIgciA9IGUuZ2V0QXR0cmlidXRlKG4sIDIpOwpAQCAtOTkwLDI1ICsxMDU3LDMwIEBACiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGUuZ2V0QXR0cmlidXRlKHQsIDQpCiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KLSAgICB9KSksIGIuc3VwcG9ydC5zdHlsZSB8fCAoYi5hdHRySG9va3Muc3R5
bGUgPSB7CisgICAgfSkpLAorICAgIGIuc3VwcG9ydC5zdHlsZSB8fCAoYi5hdHRySG9va3Muc3R5
bGUgPSB7CiAgICAgICAgIGdldDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgcmV0dXJuIGUu
c3R5bGUuY3NzVGV4dCB8fCB0CiAgICAgICAgIH0sCiAgICAgICAgIHNldDogZnVuY3Rpb24oZSwg
dCkgewogICAgICAgICAgICAgcmV0dXJuIGUuc3R5bGUuY3NzVGV4dCA9IHQgKyAiIgogICAgICAg
ICB9Ci0gICAgfSksIGIuc3VwcG9ydC5vcHRTZWxlY3RlZCB8fCAoYi5wcm9wSG9va3Muc2VsZWN0
ZWQgPSBiLmV4dGVuZChiLnByb3BIb29rcy5zZWxlY3RlZCwgeworICAgIH0pLAorICAgIGIuc3Vw
cG9ydC5vcHRTZWxlY3RlZCB8fCAoYi5wcm9wSG9va3Muc2VsZWN0ZWQgPSBiLmV4dGVuZChiLnBy
b3BIb29rcy5zZWxlY3RlZCwgewogICAgICAgICBnZXQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAg
ICAgIHZhciB0ID0gZS5wYXJlbnROb2RlOwogICAgICAgICAgICAgcmV0dXJuIHQgJiYgKHQuc2Vs
ZWN0ZWRJbmRleCwgdC5wYXJlbnROb2RlICYmIHQucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4KSwg
bnVsbAogICAgICAgICB9Ci0gICAgfSkpLCBiLnN1cHBvcnQuZW5jdHlwZSB8fCAoYi5wcm9wRml4
LmVuY3R5cGUgPSAiZW5jb2RpbmciKSwgYi5zdXBwb3J0LmNoZWNrT24gfHwgYi5lYWNoKFsicmFk
aW8iLCAiY2hlY2tib3giXSwgZnVuY3Rpb24oKSB7CisgICAgfSkpLAorICAgIGIuc3VwcG9ydC5l
bmN0eXBlIHx8IChiLnByb3BGaXguZW5jdHlwZSA9ICJlbmNvZGluZyIpLAorICAgIGIuc3VwcG9y
dC5jaGVja09uIHx8IGIuZWFjaChbInJhZGlvIiwgImNoZWNrYm94Il0sIGZ1bmN0aW9uKCkgewog
ICAgICAgICBiLnZhbEhvb2tzW3RoaXNdID0gewogICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbihl
KSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgPT09IGUuZ2V0QXR0cmlidXRlKCJ2YWx1
ZSIpID8gIm9uIiA6IGUudmFsdWUKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgIH0pLCBi
LmVhY2goWyJyYWRpbyIsICJjaGVja2JveCJdLCBmdW5jdGlvbigpIHsKKyAgICB9KSwKKyAgICBi
LmVhY2goWyJyYWRpbyIsICJjaGVja2JveCJdLCBmdW5jdGlvbigpIHsKICAgICAgICAgYi52YWxI
b29rc1t0aGlzXSA9IGIuZXh0ZW5kKGIudmFsSG9va3NbdGhpc10sIHsKICAgICAgICAgICAgIHNl
dDogZnVuY3Rpb24oZSwgbikgewogICAgICAgICAgICAgICAgIHJldHVybiBiLmlzQXJyYXkobikg
PyBlLmNoZWNrZWQgPSBiLmluQXJyYXkoYihlKS52YWwoKSwgbikgPj0gMCA6IHQKQEAgLTEwNDIs
MTEgKzExMTQsMjIgQEAKICAgICAgICAgICAgICAgICB5LAogICAgICAgICAgICAgICAgIHYgPSBi
Ll9kYXRhKGUpOwogICAgICAgICAgICAgaWYgKHYpIHsKLSAgICAgICAgICAgICAgICByLmhhbmRs
ZXIgJiYgKGMgPSByLCByID0gYy5oYW5kbGVyLCBhID0gYy5zZWxlY3RvciksIHIuZ3VpZCB8fCAo
ci5ndWlkID0gYi5ndWlkKyspLCAodSA9IHYuZXZlbnRzKSB8fCAodSA9IHYuZXZlbnRzID0ge30p
LCAoZiA9IHYuaGFuZGxlKSB8fCAoZiA9IHYuaGFuZGxlID0gZnVuY3Rpb24oZSkgeworICAgICAg
ICAgICAgICAgIHIuaGFuZGxlciAmJiAoYyA9IHIsIHIgPSBjLmhhbmRsZXIsIGEgPSBjLnNlbGVj
dG9yKSwKKyAgICAgICAgICAgICAgICByLmd1aWQgfHwgKHIuZ3VpZCA9IGIuZ3VpZCsrKSwKKyAg
ICAgICAgICAgICAgICAodSA9IHYuZXZlbnRzKSB8fCAodSA9IHYuZXZlbnRzID0ge30pLAorICAg
ICAgICAgICAgICAgIChmID0gdi5oYW5kbGUpIHx8IChmID0gdi5oYW5kbGUgPSBmdW5jdGlvbihl
KSB7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0eXBlb2YgYiA9PT0gaSB8fCBlICYmIGIu
ZXZlbnQudHJpZ2dlcmVkID09PSBlLnR5cGUgPyB0IDogYi5ldmVudC5kaXNwYXRjaC5hcHBseShm
LmVsZW0sIGFyZ3VtZW50cykKLSAgICAgICAgICAgICAgICB9LCBmLmVsZW0gPSBlKSwgbiA9IChu
IHx8ICIiKS5tYXRjaCh3KSB8fCBbIiJdLCBsID0gbi5sZW5ndGg7CisgICAgICAgICAgICAgICAg
fSwgZi5lbGVtID0gZSksCisgICAgICAgICAgICAgICAgbiA9IChuIHx8ICIiKS5tYXRjaCh3KSB8
fCBbIiJdLAorICAgICAgICAgICAgICAgIGwgPSBuLmxlbmd0aDsKICAgICAgICAgICAgICAgICB3
aGlsZSAobC0tKQotICAgICAgICAgICAgICAgICAgICBzID0gcnQuZXhlYyhuW2xdKSB8fCBbXSwg
ZyA9IHkgPSBzWzFdLCBtID0gKHNbMl0gfHwgIiIpLnNwbGl0KCIuIikuc29ydCgpLCBwID0gYi5l
dmVudC5zcGVjaWFsW2ddIHx8IHt9LCBnID0gKGEgPyBwLmRlbGVnYXRlVHlwZSA6IHAuYmluZFR5
cGUpIHx8IGcsIHAgPSBiLmV2ZW50LnNwZWNpYWxbZ10gfHwge30sIGQgPSBiLmV4dGVuZCh7Cisg
ICAgICAgICAgICAgICAgICAgIHMgPSBydC5leGVjKG5bbF0pIHx8IFtdLAorICAgICAgICAgICAg
ICAgICAgICBnID0geSA9IHNbMV0sCisgICAgICAgICAgICAgICAgICAgIG0gPSAoc1syXSB8fCAi
Iikuc3BsaXQoIi4iKS5zb3J0KCksCisgICAgICAgICAgICAgICAgICAgIHAgPSBiLmV2ZW50LnNw
ZWNpYWxbZ10gfHwge30sCisgICAgICAgICAgICAgICAgICAgIGcgPSAoYSA/IHAuZGVsZWdhdGVU
eXBlIDogcC5iaW5kVHlwZSkgfHwgZywKKyAgICAgICAgICAgICAgICAgICAgcCA9IGIuZXZlbnQu
c3BlY2lhbFtnXSB8fCB7fSwKKyAgICAgICAgICAgICAgICAgICAgZCA9IGIuZXh0ZW5kKHsKICAg
ICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IGcsCiAgICAgICAgICAgICAgICAgICAgICAgICBv
cmlnVHlwZTogeSwKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IG8sCkBAIC0xMDU1LDcg
KzExMzgsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yOiBhLAogICAgICAg
ICAgICAgICAgICAgICAgICAgbmVlZHNDb250ZXh0OiBhICYmIGIuZXhwci5tYXRjaC5uZWVkc0Nv
bnRleHQudGVzdChhKSwKICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVzcGFjZTogbS5qb2lu
KCIuIikKLSAgICAgICAgICAgICAgICAgICAgfSwgYyksIChoID0gdVtnXSkgfHwgKGggPSB1W2dd
ID0gW10sIGguZGVsZWdhdGVDb3VudCA9IDAsIHAuc2V0dXAgJiYgcC5zZXR1cC5jYWxsKGUsIG8s
IG0sIGYpICE9PSAhMSB8fCAoZS5hZGRFdmVudExpc3RlbmVyID8gZS5hZGRFdmVudExpc3RlbmVy
KGcsIGYsICExKSA6IGUuYXR0YWNoRXZlbnQgJiYgZS5hdHRhY2hFdmVudCgib24iICsgZywgZikp
KSwgcC5hZGQgJiYgKHAuYWRkLmNhbGwoZSwgZCksIGQuaGFuZGxlci5ndWlkIHx8IChkLmhhbmRs
ZXIuZ3VpZCA9IHIuZ3VpZCkpLCBhID8gaC5zcGxpY2UoaC5kZWxlZ2F0ZUNvdW50KyssIDAsIGQp
IDogaC5wdXNoKGQpLCBiLmV2ZW50Lmdsb2JhbFtnXSA9ICEwOworICAgICAgICAgICAgICAgICAg
ICB9LCBjKSwKKyAgICAgICAgICAgICAgICAgICAgKGggPSB1W2ddKSB8fCAoaCA9IHVbZ10gPSBb
XSwgaC5kZWxlZ2F0ZUNvdW50ID0gMCwgcC5zZXR1cCAmJiBwLnNldHVwLmNhbGwoZSwgbywgbSwg
ZikgIT09ICExIHx8IChlLmFkZEV2ZW50TGlzdGVuZXIgPyBlLmFkZEV2ZW50TGlzdGVuZXIoZywg
ZiwgITEpIDogZS5hdHRhY2hFdmVudCAmJiBlLmF0dGFjaEV2ZW50KCJvbiIgKyBnLCBmKSkpLAor
ICAgICAgICAgICAgICAgICAgICBwLmFkZCAmJiAocC5hZGQuY2FsbChlLCBkKSwgZC5oYW5kbGVy
Lmd1aWQgfHwgKGQuaGFuZGxlci5ndWlkID0gci5ndWlkKSksCisgICAgICAgICAgICAgICAgICAg
IGEgPyBoLnNwbGljZShoLmRlbGVnYXRlQ291bnQrKywgMCwgZCkgOiBoLnB1c2goZCksCisgICAg
ICAgICAgICAgICAgICAgIGIuZXZlbnQuZ2xvYmFsW2ddID0gITA7CiAgICAgICAgICAgICAgICAg
ZSA9IG51bGwKICAgICAgICAgICAgIH0KICAgICAgICAgfSwKQEAgLTEwNzMsMTIgKzExNjAsMTgg
QEAKICAgICAgICAgICAgICAgICBnLAogICAgICAgICAgICAgICAgIG0gPSBiLmhhc0RhdGEoZSkg
JiYgYi5fZGF0YShlKTsKICAgICAgICAgICAgIGlmIChtICYmIChjID0gbS5ldmVudHMpKSB7Ci0g
ICAgICAgICAgICAgICAgdCA9ICh0IHx8ICIiKS5tYXRjaCh3KSB8fCBbIiJdLCBsID0gdC5sZW5n
dGg7CisgICAgICAgICAgICAgICAgdCA9ICh0IHx8ICIiKS5tYXRjaCh3KSB8fCBbIiJdLAorICAg
ICAgICAgICAgICAgIGwgPSB0Lmxlbmd0aDsKICAgICAgICAgICAgICAgICB3aGlsZSAobC0tKQog
ICAgICAgICAgICAgICAgICAgICBpZiAocyA9IHJ0LmV4ZWModFtsXSkgfHwgW10sIGQgPSBnID0g
c1sxXSwgaCA9IChzWzJdIHx8ICIiKS5zcGxpdCgiLiIpLnNvcnQoKSwgZCkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgcCA9IGIuZXZlbnQuc3BlY2lhbFtkXSB8fCB7fSwgZCA9IChyID8gcC5k
ZWxlZ2F0ZVR5cGUgOiBwLmJpbmRUeXBlKSB8fCBkLCBmID0gY1tkXSB8fCBbXSwgcyA9IHNbMl0g
JiYgUmVnRXhwKCIoXnxcXC4pIiArIGguam9pbigiXFwuKD86LipcXC58KSIpICsgIihcXC58JCki
KSwgdSA9IG8gPSBmLmxlbmd0aDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBiLmV2ZW50
LnNwZWNpYWxbZF0gfHwge30sCisgICAgICAgICAgICAgICAgICAgICAgICBkID0gKHIgPyBwLmRl
bGVnYXRlVHlwZSA6IHAuYmluZFR5cGUpIHx8IGQsCisgICAgICAgICAgICAgICAgICAgICAgICBm
ID0gY1tkXSB8fCBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBzWzJdICYmIFJlZ0V4
cCgiKF58XFwuKSIgKyBoLmpvaW4oIlxcLig/Oi4qXFwufCkiKSArICIoXFwufCQpIiksCisgICAg
ICAgICAgICAgICAgICAgICAgICB1ID0gbyA9IGYubGVuZ3RoOwogICAgICAgICAgICAgICAgICAg
ICAgICAgd2hpbGUgKG8tLSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gZltvXSwg
IWkgJiYgZyAhPT0gYS5vcmlnVHlwZSB8fCBuICYmIG4uZ3VpZCAhPT0gYS5ndWlkIHx8IHMgJiYg
IXMudGVzdChhLm5hbWVzcGFjZSkgfHwgciAmJiByICE9PSBhLnNlbGVjdG9yICYmICgiKioiICE9
PSByIHx8ICFhLnNlbGVjdG9yKSB8fCAoZi5zcGxpY2UobywgMSksIGEuc2VsZWN0b3IgJiYgZi5k
ZWxlZ2F0ZUNvdW50LS0sIHAucmVtb3ZlICYmIHAucmVtb3ZlLmNhbGwoZSwgYSkpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGEgPSBmW29dLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICFpICYmIGcgIT09IGEub3JpZ1R5cGUgfHwgbiAmJiBuLmd1aWQgIT09IGEuZ3VpZCB8fCBz
ICYmICFzLnRlc3QoYS5uYW1lc3BhY2UpIHx8IHIgJiYgciAhPT0gYS5zZWxlY3RvciAmJiAoIioq
IiAhPT0gciB8fCAhYS5zZWxlY3RvcikgfHwgKGYuc3BsaWNlKG8sIDEpLCBhLnNlbGVjdG9yICYm
IGYuZGVsZWdhdGVDb3VudC0tLCBwLnJlbW92ZSAmJiBwLnJlbW92ZS5jYWxsKGUsIGEpKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIHUgJiYgIWYubGVuZ3RoICYmIChwLnRlYXJkb3duICYmIHAu
dGVhcmRvd24uY2FsbChlLCBoLCBtLmhhbmRsZSkgIT09ICExIHx8IGIucmVtb3ZlRXZlbnQoZSwg
ZCwgbS5oYW5kbGUpLCBkZWxldGUgY1tkXSkKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlCiAg
ICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGQgaW4gYykKQEAgLTExMDAsMTggKzExOTMsMjYg
QEAKICAgICAgICAgICAgIGlmIChsID0gZiA9IGkgPSBpIHx8IG8sIDMgIT09IGkubm9kZVR5cGUg
JiYgOCAhPT0gaS5ub2RlVHlwZSAmJiAhbnQudGVzdChnICsgYi5ldmVudC50cmlnZ2VyZWQpICYm
IChnLmluZGV4T2YoIi4iKSA+PSAwICYmIChtID0gZy5zcGxpdCgiLiIpLCBnID0gbS5zaGlmdCgp
LCBtLnNvcnQoKSksIHUgPSAwID4gZy5pbmRleE9mKCI6IikgJiYgIm9uIiArIGcsIG4gPSBuW2Iu
ZXhwYW5kb10gPyBuIDogbmV3IGIuRXZlbnQoZywgIm9iamVjdCIgPT0gdHlwZW9mIG4gJiYgbiks
IG4uaXNUcmlnZ2VyID0gITAsIG4ubmFtZXNwYWNlID0gbS5qb2luKCIuIiksIG4ubmFtZXNwYWNl
X3JlID0gbi5uYW1lc3BhY2UgPyBSZWdFeHAoIihefFxcLikiICsgbS5qb2luKCJcXC4oPzouKlxc
LnwpIikgKyAiKFxcLnwkKSIpIDogbnVsbCwgbi5yZXN1bHQgPSB0LCBuLnRhcmdldCB8fCAobi50
YXJnZXQgPSBpKSwgciA9IG51bGwgPT0gciA/IFtuXSA6IGIubWFrZUFycmF5KHIsIFtuXSksIHAg
PSBiLmV2ZW50LnNwZWNpYWxbZ10gfHwge30sIGEgfHwgIXAudHJpZ2dlciB8fCBwLnRyaWdnZXIu
YXBwbHkoaSwgcikgIT09ICExKSkgewogICAgICAgICAgICAgICAgIGlmICghYSAmJiAhcC5ub0J1
YmJsZSAmJiAhYi5pc1dpbmRvdyhpKSkgewogICAgICAgICAgICAgICAgICAgICBmb3IgKGMgPSBw
LmRlbGVnYXRlVHlwZSB8fCBnLCBudC50ZXN0KGMgKyBnKSB8fCAobCA9IGwucGFyZW50Tm9kZSk7
IGw7IGwgPSBsLnBhcmVudE5vZGUpCi0gICAgICAgICAgICAgICAgICAgICAgICBoLnB1c2gobCks
IGYgPSBsOworICAgICAgICAgICAgICAgICAgICAgICAgaC5wdXNoKGwpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgZiA9IGw7CiAgICAgICAgICAgICAgICAgICAgIGYgPT09IChpLm93bmVyRG9j
dW1lbnQgfHwgbykgJiYgaC5wdXNoKGYuZGVmYXVsdFZpZXcgfHwgZi5wYXJlbnRXaW5kb3cgfHwg
ZSkKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZCA9IDA7CiAgICAgICAgICAg
ICAgICAgd2hpbGUgKChsID0gaFtkKytdKSAmJiAhbi5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKQot
ICAgICAgICAgICAgICAgICAgICBuLnR5cGUgPSBkID4gMSA/IGMgOiBwLmJpbmRUeXBlIHx8IGcs
IHMgPSAoYi5fZGF0YShsLCAiZXZlbnRzIikgfHwge30pW24udHlwZV0gJiYgYi5fZGF0YShsLCAi
aGFuZGxlIiksIHMgJiYgcy5hcHBseShsLCByKSwgcyA9IHUgJiYgbFt1XSwgcyAmJiBiLmFjY2Vw
dERhdGEobCkgJiYgcy5hcHBseSAmJiBzLmFwcGx5KGwsIHIpID09PSAhMSAmJiBuLnByZXZlbnRE
ZWZhdWx0KCk7CisgICAgICAgICAgICAgICAgICAgIG4udHlwZSA9IGQgPiAxID8gYyA6IHAuYmlu
ZFR5cGUgfHwgZywKKyAgICAgICAgICAgICAgICAgICAgcyA9IChiLl9kYXRhKGwsICJldmVudHMi
KSB8fCB7fSlbbi50eXBlXSAmJiBiLl9kYXRhKGwsICJoYW5kbGUiKSwKKyAgICAgICAgICAgICAg
ICAgICAgcyAmJiBzLmFwcGx5KGwsIHIpLAorICAgICAgICAgICAgICAgICAgICBzID0gdSAmJiBs
W3VdLAorICAgICAgICAgICAgICAgICAgICBzICYmIGIuYWNjZXB0RGF0YShsKSAmJiBzLmFwcGx5
ICYmIHMuYXBwbHkobCwgcikgPT09ICExICYmIG4ucHJldmVudERlZmF1bHQoKTsKICAgICAgICAg
ICAgICAgICBpZiAobi50eXBlID0gZywgIShhIHx8IG4uaXNEZWZhdWx0UHJldmVudGVkKCkgfHwg
cC5fZGVmYXVsdCAmJiBwLl9kZWZhdWx0LmFwcGx5KGkub3duZXJEb2N1bWVudCwgcikgIT09ICEx
IHx8ICJjbGljayIgPT09IGcgJiYgYi5ub2RlTmFtZShpLCAiYSIpIHx8ICFiLmFjY2VwdERhdGEo
aSkgfHwgIXUgfHwgIWlbZ10gfHwgYi5pc1dpbmRvdyhpKSkpIHsKLSAgICAgICAgICAgICAgICAg
ICAgZiA9IGlbdV0sIGYgJiYgKGlbdV0gPSBudWxsKSwgYi5ldmVudC50cmlnZ2VyZWQgPSBnOwor
ICAgICAgICAgICAgICAgICAgICBmID0gaVt1XSwKKyAgICAgICAgICAgICAgICAgICAgZiAmJiAo
aVt1XSA9IG51bGwpLAorICAgICAgICAgICAgICAgICAgICBiLmV2ZW50LnRyaWdnZXJlZCA9IGc7
CiAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpW2dd
KCkKICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAodikge30KLSAgICAgICAgICAgICAgICAg
ICAgYi5ldmVudC50cmlnZ2VyZWQgPSB0LCBmICYmIChpW3VdID0gZikKKyAgICAgICAgICAgICAg
ICAgICAgYi5ldmVudC50cmlnZ2VyZWQgPSB0LAorICAgICAgICAgICAgICAgICAgICBmICYmIChp
W3VdID0gZikKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgcmV0dXJuIG4ucmVz
dWx0CiAgICAgICAgICAgICB9CkBAIC0xMTI4LDkgKzEyMjksMTEgQEAKICAgICAgICAgICAgICAg
ICBsID0gKGIuX2RhdGEodGhpcywgImV2ZW50cyIpIHx8IHt9KVtlLnR5cGVdIHx8IFtdLAogICAg
ICAgICAgICAgICAgIGMgPSBiLmV2ZW50LnNwZWNpYWxbZS50eXBlXSB8fCB7fTsKICAgICAgICAg
ICAgIGlmICh1WzBdID0gZSwgZS5kZWxlZ2F0ZVRhcmdldCA9IHRoaXMsICFjLnByZURpc3BhdGNo
IHx8IGMucHJlRGlzcGF0Y2guY2FsbCh0aGlzLCBlKSAhPT0gITEpIHsKLSAgICAgICAgICAgICAg
ICBzID0gYi5ldmVudC5oYW5kbGVycy5jYWxsKHRoaXMsIGUsIGwpLCBuID0gMDsKKyAgICAgICAg
ICAgICAgICBzID0gYi5ldmVudC5oYW5kbGVycy5jYWxsKHRoaXMsIGUsIGwpLAorICAgICAgICAg
ICAgICAgIG4gPSAwOwogICAgICAgICAgICAgICAgIHdoaWxlICgobyA9IHNbbisrXSkgJiYgIWUu
aXNQcm9wYWdhdGlvblN0b3BwZWQoKSkgewotICAgICAgICAgICAgICAgICAgICBlLmN1cnJlbnRU
YXJnZXQgPSBvLmVsZW0sIGEgPSAwOworICAgICAgICAgICAgICAgICAgICBlLmN1cnJlbnRUYXJn
ZXQgPSBvLmVsZW0sCisgICAgICAgICAgICAgICAgICAgIGEgPSAwOwogICAgICAgICAgICAgICAg
ICAgICB3aGlsZSAoKGkgPSBvLmhhbmRsZXJzW2ErK10pICYmICFlLmlzSW1tZWRpYXRlUHJvcGFn
YXRpb25TdG9wcGVkKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAoIWUubmFtZXNwYWNlX3Jl
IHx8IGUubmFtZXNwYWNlX3JlLnRlc3QoaS5uYW1lc3BhY2UpKSAmJiAoZS5oYW5kbGVPYmogPSBp
LCBlLmRhdGEgPSBpLmRhdGEsIHIgPSAoKGIuZXZlbnQuc3BlY2lhbFtpLm9yaWdUeXBlXSB8fCB7
fSkuaGFuZGxlIHx8IGkuaGFuZGxlcikuYXBwbHkoby5lbGVtLCB1KSwgciAhPT0gdCAmJiAoZS5y
ZXN1bHQgPSByKSA9PT0gITEgJiYgKGUucHJldmVudERlZmF1bHQoKSwgZS5zdG9wUHJvcGFnYXRp
b24oKSkpCiAgICAgICAgICAgICAgICAgfQpAQCAtMTE0OSw3ICsxMjUyLDEwIEBACiAgICAgICAg
ICAgICAgICAgZm9yICg7IGwgIT0gdGhpczsgbCA9IGwucGFyZW50Tm9kZSB8fCB0aGlzKQogICAg
ICAgICAgICAgICAgICAgICBpZiAoMSA9PT0gbC5ub2RlVHlwZSAmJiAobC5kaXNhYmxlZCAhPT0g
ITAgfHwgImNsaWNrIiAhPT0gZS50eXBlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgZm9y
IChvID0gW10sIGEgPSAwOyB1ID4gYTsgYSsrKQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGkgPSBuW2FdLCByID0gaS5zZWxlY3RvciArICIgIiwgb1tyXSA9PT0gdCAmJiAob1tyXSA9IGku
bmVlZHNDb250ZXh0ID8gYihyLCB0aGlzKS5pbmRleChsKSA+PSAwIDogYi5maW5kKHIsIHRoaXMs
IG51bGwsIFtsXSkubGVuZ3RoKSwgb1tyXSAmJiBvLnB1c2goaSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaSA9IG5bYV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IGku
c2VsZWN0b3IgKyAiICIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb1tyXSA9PT0gdCAm
JiAob1tyXSA9IGkubmVlZHNDb250ZXh0ID8gYihyLCB0aGlzKS5pbmRleChsKSA+PSAwIDogYi5m
aW5kKHIsIHRoaXMsIG51bGwsIFtsXSkubGVuZ3RoKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBvW3JdICYmIG8ucHVzaChpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIG8ubGVuZ3Ro
ICYmIHMucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbTogbCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVyczogbwpAQCAtMTE2OSw5ICsxMjc1LDEzIEBA
CiAgICAgICAgICAgICAgICAgaSA9IGUudHlwZSwKICAgICAgICAgICAgICAgICBhID0gZSwKICAg
ICAgICAgICAgICAgICBzID0gdGhpcy5maXhIb29rc1tpXTsKLSAgICAgICAgICAgIHMgfHwgKHRo
aXMuZml4SG9va3NbaV0gPSBzID0gdHQudGVzdChpKSA/IHRoaXMubW91c2VIb29rcyA6IGV0LnRl
c3QoaSkgPyB0aGlzLmtleUhvb2tzIDoge30pLCByID0gcy5wcm9wcyA/IHRoaXMucHJvcHMuY29u
Y2F0KHMucHJvcHMpIDogdGhpcy5wcm9wcywgZSA9IG5ldyBiLkV2ZW50KGEpLCB0ID0gci5sZW5n
dGg7CisgICAgICAgICAgICBzIHx8ICh0aGlzLmZpeEhvb2tzW2ldID0gcyA9IHR0LnRlc3QoaSkg
PyB0aGlzLm1vdXNlSG9va3MgOiBldC50ZXN0KGkpID8gdGhpcy5rZXlIb29rcyA6IHt9KSwKKyAg
ICAgICAgICAgIHIgPSBzLnByb3BzID8gdGhpcy5wcm9wcy5jb25jYXQocy5wcm9wcykgOiB0aGlz
LnByb3BzLAorICAgICAgICAgICAgZSA9IG5ldyBiLkV2ZW50KGEpLAorICAgICAgICAgICAgdCA9
IHIubGVuZ3RoOwogICAgICAgICAgICAgd2hpbGUgKHQtLSkKLSAgICAgICAgICAgICAgICBuID0g
clt0XSwgZVtuXSA9IGFbbl07CisgICAgICAgICAgICAgICAgbiA9IHJbdF0sCisgICAgICAgICAg
ICAgICAgZVtuXSA9IGFbbl07CiAgICAgICAgICAgICByZXR1cm4gZS50YXJnZXQgfHwgKGUudGFy
Z2V0ID0gYS5zcmNFbGVtZW50IHx8IG8pLCAzID09PSBlLnRhcmdldC5ub2RlVHlwZSAmJiAoZS50
YXJnZXQgPSBlLnRhcmdldC5wYXJlbnROb2RlKSwgZS5tZXRhS2V5ID0gISFlLm1ldGFLZXksIHMu
ZmlsdGVyID8gcy5maWx0ZXIoZSwgYSkgOiBlCiAgICAgICAgIH0sCiAgICAgICAgIHByb3BzOiAi
YWx0S2V5IGJ1YmJsZXMgY2FuY2VsYWJsZSBjdHJsS2V5IGN1cnJlbnRUYXJnZXQgZXZlbnRQaGFz
ZSBtZXRhS2V5IHJlbGF0ZWRUYXJnZXQgc2hpZnRLZXkgdGFyZ2V0IHRpbWVTdGFtcCB2aWV3IHdo
aWNoIi5zcGxpdCgiICIpLApAQCAtMTIyOSwzMSArMTMzOSwzOSBAQAogICAgICAgICAgICAgICAg
IGlzU2ltdWxhdGVkOiAhMCwKICAgICAgICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiB7fQogICAg
ICAgICAgICAgfSk7Ci0gICAgICAgICAgICByID8gYi5ldmVudC50cmlnZ2VyKGksIG51bGwsIHQp
IDogYi5ldmVudC5kaXNwYXRjaC5jYWxsKHQsIGkpLCBpLmlzRGVmYXVsdFByZXZlbnRlZCgpICYm
IG4ucHJldmVudERlZmF1bHQoKQorICAgICAgICAgICAgciA/IGIuZXZlbnQudHJpZ2dlcihpLCBu
dWxsLCB0KSA6IGIuZXZlbnQuZGlzcGF0Y2guY2FsbCh0LCBpKSwKKyAgICAgICAgICAgIGkuaXNE
ZWZhdWx0UHJldmVudGVkKCkgJiYgbi5wcmV2ZW50RGVmYXVsdCgpCiAgICAgICAgIH0KLSAgICB9
LCBiLnJlbW92ZUV2ZW50ID0gby5yZW1vdmVFdmVudExpc3RlbmVyID8gZnVuY3Rpb24oZSwgdCwg
bikgeworICAgIH0sCisgICAgYi5yZW1vdmVFdmVudCA9IG8ucmVtb3ZlRXZlbnRMaXN0ZW5lciA/
IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgZS5yZW1vdmVFdmVudExpc3RlbmVyICYmIGUu
cmVtb3ZlRXZlbnRMaXN0ZW5lcih0LCBuLCAhMSkKICAgICB9IDogZnVuY3Rpb24oZSwgdCwgbikg
ewogICAgICAgICB2YXIgciA9ICJvbiIgKyB0OwogICAgICAgICBlLmRldGFjaEV2ZW50ICYmICh0
eXBlb2YgZVtyXSA9PT0gaSAmJiAoZVtyXSA9IG51bGwpLCBlLmRldGFjaEV2ZW50KHIsIG4pKQot
ICAgIH0sIGIuRXZlbnQgPSBmdW5jdGlvbihlLCBuKSB7CisgICAgfSwKKyAgICBiLkV2ZW50ID0g
ZnVuY3Rpb24oZSwgbikgewogICAgICAgICByZXR1cm4gdGhpcyBpbnN0YW5jZW9mIGIuRXZlbnQg
PyAoZSAmJiBlLnR5cGUgPyAodGhpcy5vcmlnaW5hbEV2ZW50ID0gZSwgdGhpcy50eXBlID0gZS50
eXBlLCB0aGlzLmlzRGVmYXVsdFByZXZlbnRlZCA9IGUuZGVmYXVsdFByZXZlbnRlZCB8fCBlLnJl
dHVyblZhbHVlID09PSAhMSB8fCBlLmdldFByZXZlbnREZWZhdWx0ICYmIGUuZ2V0UHJldmVudERl
ZmF1bHQoKSA/IGl0IDogb3QpIDogdGhpcy50eXBlID0gZSwgbiAmJiBiLmV4dGVuZCh0aGlzLCBu
KSwgdGhpcy50aW1lU3RhbXAgPSBlICYmIGUudGltZVN0YW1wIHx8IGIubm93KCksIHRoaXNbYi5l
eHBhbmRvXSA9ICEwLCB0KSA6IG5ldyBiLkV2ZW50KGUsIG4pCi0gICAgfSwgYi5FdmVudC5wcm90
b3R5cGUgPSB7CisgICAgfSwKKyAgICBiLkV2ZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgaXNE
ZWZhdWx0UHJldmVudGVkOiBvdCwKICAgICAgICAgaXNQcm9wYWdhdGlvblN0b3BwZWQ6IG90LAog
ICAgICAgICBpc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZDogb3QsCiAgICAgICAgIHByZXZl
bnREZWZhdWx0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgIHZhciBlID0gdGhpcy5vcmlnaW5h
bEV2ZW50OwotICAgICAgICAgICAgdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQgPSBpdCwgZSAmJiAo
ZS5wcmV2ZW50RGVmYXVsdCA/IGUucHJldmVudERlZmF1bHQoKSA6IGUucmV0dXJuVmFsdWUgPSAh
MSkKKyAgICAgICAgICAgIHRoaXMuaXNEZWZhdWx0UHJldmVudGVkID0gaXQsCisgICAgICAgICAg
ICBlICYmIChlLnByZXZlbnREZWZhdWx0ID8gZS5wcmV2ZW50RGVmYXVsdCgpIDogZS5yZXR1cm5W
YWx1ZSA9ICExKQogICAgICAgICB9LAogICAgICAgICBzdG9wUHJvcGFnYXRpb246IGZ1bmN0aW9u
KCkgewogICAgICAgICAgICAgdmFyIGUgPSB0aGlzLm9yaWdpbmFsRXZlbnQ7Ci0gICAgICAgICAg
ICB0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkID0gaXQsIGUgJiYgKGUuc3RvcFByb3BhZ2F0aW9u
ICYmIGUuc3RvcFByb3BhZ2F0aW9uKCksIGUuY2FuY2VsQnViYmxlID0gITApCisgICAgICAgICAg
ICB0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkID0gaXQsCisgICAgICAgICAgICBlICYmIChlLnN0
b3BQcm9wYWdhdGlvbiAmJiBlLnN0b3BQcm9wYWdhdGlvbigpLCBlLmNhbmNlbEJ1YmJsZSA9ICEw
KQogICAgICAgICB9LAogICAgICAgICBzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb246IGZ1bmN0aW9u
KCkgewotICAgICAgICAgICAgdGhpcy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCA9IGl0
LCB0aGlzLnN0b3BQcm9wYWdhdGlvbigpCisgICAgICAgICAgICB0aGlzLmlzSW1tZWRpYXRlUHJv
cGFnYXRpb25TdG9wcGVkID0gaXQsCisgICAgICAgICAgICB0aGlzLnN0b3BQcm9wYWdhdGlvbigp
CiAgICAgICAgIH0KLSAgICB9LCBiLmVhY2goeworICAgIH0sCisgICAgYi5lYWNoKHsKICAgICAg
ICAgbW91c2VlbnRlcjogIm1vdXNlb3ZlciIsCiAgICAgICAgIG1vdXNlbGVhdmU6ICJtb3VzZW91
dCIKICAgICB9LCBmdW5jdGlvbihlLCB0KSB7CkBAIC0xMjY4LDcgKzEzODYsOCBAQAogICAgICAg
ICAgICAgICAgIHJldHVybiAoIWkgfHwgaSAhPT0gciAmJiAhYi5jb250YWlucyhyLCBpKSkgJiYg
KGUudHlwZSA9IG8ub3JpZ1R5cGUsIG4gPSBvLmhhbmRsZXIuYXBwbHkodGhpcywgYXJndW1lbnRz
KSwgZS50eXBlID0gdCksIG4KICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgIH0pLCBiLnN1
cHBvcnQuc3VibWl0QnViYmxlcyB8fCAoYi5ldmVudC5zcGVjaWFsLnN1Ym1pdCA9IHsKKyAgICB9
KSwKKyAgICBiLnN1cHBvcnQuc3VibWl0QnViYmxlcyB8fCAoYi5ldmVudC5zcGVjaWFsLnN1Ym1p
dCA9IHsKICAgICAgICAgc2V0dXA6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgcmV0dXJuIGIu
bm9kZU5hbWUodGhpcywgImZvcm0iKSA/ICExIDogKGIuZXZlbnQuYWRkKHRoaXMsICJjbGljay5f
c3VibWl0IGtleXByZXNzLl9zdWJtaXQiLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAg
dmFyIG4gPSBlLnRhcmdldCwKQEAgLTEyODQsMTIgKzE0MDMsMTQgQEAKICAgICAgICAgdGVhcmRv
d246IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgcmV0dXJuIGIubm9kZU5hbWUodGhpcywgImZv
cm0iKSA/ICExIDogKGIuZXZlbnQucmVtb3ZlKHRoaXMsICIuX3N1Ym1pdCIpLCB0KQogICAgICAg
ICB9Ci0gICAgfSksIGIuc3VwcG9ydC5jaGFuZ2VCdWJibGVzIHx8IChiLmV2ZW50LnNwZWNpYWwu
Y2hhbmdlID0geworICAgIH0pLAorICAgIGIuc3VwcG9ydC5jaGFuZ2VCdWJibGVzIHx8IChiLmV2
ZW50LnNwZWNpYWwuY2hhbmdlID0gewogICAgICAgICBzZXR1cDogZnVuY3Rpb24oKSB7CiAgICAg
ICAgICAgICByZXR1cm4gWi50ZXN0KHRoaXMubm9kZU5hbWUpID8gKCgiY2hlY2tib3giID09PSB0
aGlzLnR5cGUgfHwgInJhZGlvIiA9PT0gdGhpcy50eXBlKSAmJiAoYi5ldmVudC5hZGQodGhpcywg
InByb3BlcnR5Y2hhbmdlLl9jaGFuZ2UiLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAg
ImNoZWNrZWQiID09PSBlLm9yaWdpbmFsRXZlbnQucHJvcGVydHlOYW1lICYmICh0aGlzLl9qdXN0
X2NoYW5nZWQgPSAhMCkKICAgICAgICAgICAgIH0pLCBiLmV2ZW50LmFkZCh0aGlzLCAiY2xpY2su
X2NoYW5nZSIsIGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAgICB0aGlzLl9qdXN0X2NoYW5n
ZWQgJiYgIWUuaXNUcmlnZ2VyICYmICh0aGlzLl9qdXN0X2NoYW5nZWQgPSAhMSksIGIuZXZlbnQu
c2ltdWxhdGUoImNoYW5nZSIsIHRoaXMsIGUsICEwKQorICAgICAgICAgICAgICAgIHRoaXMuX2p1
c3RfY2hhbmdlZCAmJiAhZS5pc1RyaWdnZXIgJiYgKHRoaXMuX2p1c3RfY2hhbmdlZCA9ICExKSwK
KyAgICAgICAgICAgICAgICBiLmV2ZW50LnNpbXVsYXRlKCJjaGFuZ2UiLCB0aGlzLCBlLCAhMCkK
ICAgICAgICAgICAgIH0pKSwgITEpIDogKGIuZXZlbnQuYWRkKHRoaXMsICJiZWZvcmVhY3RpdmF0
ZS5fY2hhbmdlIiwgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgIHZhciB0ID0gZS50YXJn
ZXQ7CiAgICAgICAgICAgICAgICAgWi50ZXN0KHQubm9kZU5hbWUpICYmICFiLl9kYXRhKHQsICJj
aGFuZ2VCdWJibGVzIikgJiYgKGIuZXZlbnQuYWRkKHQsICJjaGFuZ2UuX2NoYW5nZSIsIGZ1bmN0
aW9uKGUpIHsKQEAgLTEzMDQsNyArMTQyNSw4IEBACiAgICAgICAgIHRlYXJkb3duOiBmdW5jdGlv
bigpIHsKICAgICAgICAgICAgIHJldHVybiBiLmV2ZW50LnJlbW92ZSh0aGlzLCAiLl9jaGFuZ2Ui
KSwgIVoudGVzdCh0aGlzLm5vZGVOYW1lKQogICAgICAgICB9Ci0gICAgfSksIGIuc3VwcG9ydC5m
b2N1c2luQnViYmxlcyB8fCBiLmVhY2goeworICAgIH0pLAorICAgIGIuc3VwcG9ydC5mb2N1c2lu
QnViYmxlcyB8fCBiLmVhY2goewogICAgICAgICBmb2N1czogImZvY3VzaW4iLAogICAgICAgICBi
bHVyOiAiZm9jdXNvdXQiCiAgICAgfSwgZnVuY3Rpb24oZSwgdCkgewpAQCAtMTMyMCw3ICsxNDQy
LDggQEAKICAgICAgICAgICAgICAgICAwID09PSAtLW4gJiYgby5yZW1vdmVFdmVudExpc3RlbmVy
KGUsIHIsICEwKQogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgfSksIGIuZm4uZXh0ZW5k
KHsKKyAgICB9KSwKKyAgICBiLmZuLmV4dGVuZCh7CiAgICAgICAgIG9uOiBmdW5jdGlvbihlLCBu
LCByLCBpLCBvKSB7CiAgICAgICAgICAgICB2YXIgYSwKICAgICAgICAgICAgICAgICBzOwpAQCAt
MTM3OCw3ICsxNTAxLDggQEAKICAgICAgICAgICAgIHZhciByID0gdGhpc1swXTsKICAgICAgICAg
ICAgIHJldHVybiByID8gYi5ldmVudC50cmlnZ2VyKGUsIG4sIHIsICEwKSA6IHQKICAgICAgICAg
fQotICAgIH0pLCBmdW5jdGlvbihlLCB0KSB7CisgICAgfSksCisgICAgZnVuY3Rpb24oZSwgdCkg
ewogICAgICAgICB2YXIgbiwKICAgICAgICAgICAgIHIsCiAgICAgICAgICAgICBpLApAQCAtMTUx
OCwxMCArMTY0MiwxNCBAQAogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
aWYgKFQucXNhICYmICFoLnRlc3QoZSkpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKGYgPSAh
MCwgZyA9IHgsIG0gPSB0LCB2ID0gOSA9PT0gcyAmJiBlLCAxID09PSBzICYmICJvYmplY3QiICE9
PSB0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGwg
PSBmdChlKSwgKGYgPSB0LmdldEF0dHJpYnV0ZSgiaWQiKSkgPyBnID0gZi5yZXBsYWNlKEssICJc
XCQmIikgOiB0LnNldEF0dHJpYnV0ZSgiaWQiLCBnKSwgZyA9ICJbaWQ9JyIgKyBnICsgIiddICIs
IHUgPSBsLmxlbmd0aDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBmdChlKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIChmID0gdC5nZXRBdHRyaWJ1dGUoImlkIikpID8gZyA9IGYucmVw
bGFjZShLLCAiXFwkJiIpIDogdC5zZXRBdHRyaWJ1dGUoImlkIiwgZyksCisgICAgICAgICAgICAg
ICAgICAgICAgICBnID0gIltpZD0nIiArIGcgKyAiJ10gIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHUgPSBsLmxlbmd0aDsKICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICh1LS0pCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbFt1XSA9IGcgKyBkdChsW3VdKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIG0gPSBWLnRlc3QoZSkgJiYgdC5wYXJlbnROb2RlIHx8IHQsIHYgPSBs
LmpvaW4oIiwiKQorICAgICAgICAgICAgICAgICAgICAgICAgbSA9IFYudGVzdChlKSAmJiB0LnBh
cmVudE5vZGUgfHwgdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHYgPSBsLmpvaW4oIiwiKQog
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGlmICh2KQogICAgICAg
ICAgICAgICAgICAgICAgICAgdHJ5IHsKQEAgLTE1MzYsNyArMTY2NCw4IEBACiAgICAgICAgIGEg
PSBzdC5pc1hNTCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgIHZhciB0ID0gZSAmJiAoZS5v
d25lckRvY3VtZW50IHx8IGUpLmRvY3VtZW50RWxlbWVudDsKICAgICAgICAgICAgIHJldHVybiB0
ID8gIkhUTUwiICE9PSB0Lm5vZGVOYW1lIDogITEKLSAgICAgICAgfSwgYyA9IHN0LnNldERvY3Vt
ZW50ID0gZnVuY3Rpb24oZSkgeworICAgICAgICB9LAorICAgICAgICBjID0gc3Quc2V0RG9jdW1l
bnQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICB2YXIgbiA9IGUgPyBlLm93bmVyRG9jdW1l
bnQgfHwgZSA6IHc7CiAgICAgICAgICAgICByZXR1cm4gbiAhPT0gcCAmJiA5ID09PSBuLm5vZGVU
eXBlICYmIG4uZG9jdW1lbnRFbGVtZW50ID8gKHAgPSBuLCBmID0gbi5kb2N1bWVudEVsZW1lbnQs
IGQgPSBhKG4pLCBULnRhZ05hbWVOb0NvbW1lbnRzID0gYXQoZnVuY3Rpb24oZSkgewogICAgICAg
ICAgICAgICAgIHJldHVybiBlLmFwcGVuZENoaWxkKG4uY3JlYXRlQ29tbWVudCgiIikpLCAhZS5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpLmxlbmd0aApAQCAtMTU0Nyw3ICsxNjc2LDkgQEAKICAg
ICAgICAgICAgIH0pLCBULmdldEJ5Q2xhc3NOYW1lID0gYXQoZnVuY3Rpb24oZSkgewogICAgICAg
ICAgICAgICAgIHJldHVybiBlLmlubmVySFRNTCA9ICI8ZGl2IGNsYXNzPSdoaWRkZW4gZSc+PC9k
aXY+PGRpdiBjbGFzcz0naGlkZGVuJz48L2Rpdj4iLCBlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUg
JiYgZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJlIikubGVuZ3RoID8gKGUubGFzdENoaWxkLmNs
YXNzTmFtZSA9ICJlIiwgMiA9PT0gZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJlIikubGVuZ3Ro
KSA6ICExCiAgICAgICAgICAgICB9KSwgVC5nZXRCeU5hbWUgPSBhdChmdW5jdGlvbihlKSB7Ci0g
ICAgICAgICAgICAgICAgZS5pZCA9IHggKyAwLCBlLmlubmVySFRNTCA9ICI8YSBuYW1lPSciICsg
eCArICInPjwvYT48ZGl2IG5hbWU9JyIgKyB4ICsgIic+PC9kaXY+IiwgZi5pbnNlcnRCZWZvcmUo
ZSwgZi5maXJzdENoaWxkKTsKKyAgICAgICAgICAgICAgICBlLmlkID0geCArIDAsCisgICAgICAg
ICAgICAgICAgZS5pbm5lckhUTUwgPSAiPGEgbmFtZT0nIiArIHggKyAiJz48L2E+PGRpdiBuYW1l
PSciICsgeCArICInPjwvZGl2PiIsCisgICAgICAgICAgICAgICAgZi5pbnNlcnRCZWZvcmUoZSwg
Zi5maXJzdENoaWxkKTsKICAgICAgICAgICAgICAgICB2YXIgdCA9IG4uZ2V0RWxlbWVudHNCeU5h
bWUgJiYgbi5nZXRFbGVtZW50c0J5TmFtZSh4KS5sZW5ndGggPT09IDIgKyBuLmdldEVsZW1lbnRz
QnlOYW1lKHggKyAwKS5sZW5ndGg7CiAgICAgICAgICAgICAgICAgcmV0dXJuIFQuZ2V0SWROb3RO
YW1lID0gIW4uZ2V0RWxlbWVudEJ5SWQoeCksIGYucmVtb3ZlQ2hpbGQoZSksIHQKICAgICAgICAg
ICAgIH0pLCBpLmF0dHJIYW5kbGUgPSBhdChmdW5jdGlvbihlKSB7CkBAIC0xNTk4LDExICsxNzI5
LDE5IEBACiAgICAgICAgICAgICB9LCBpLmZpbmQuQ0xBU1MgPSBULmdldEJ5Q2xhc3NOYW1lICYm
IGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgICAgICAgICByZXR1cm4gdHlwZW9mIG4uZ2V0RWxl
bWVudHNCeUNsYXNzTmFtZSA9PT0gQSB8fCBkID8gdCA6IG4uZ2V0RWxlbWVudHNCeUNsYXNzTmFt
ZShlKQogICAgICAgICAgICAgfSwgZyA9IFtdLCBoID0gWyI6Zm9jdXMiXSwgKFQucXNhID0gcnQo
bi5xdWVyeVNlbGVjdG9yQWxsKSkgJiYgKGF0KGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAg
ICBlLmlubmVySFRNTCA9ICI8c2VsZWN0PjxvcHRpb24gc2VsZWN0ZWQ9Jyc+PC9vcHRpb24+PC9z
ZWxlY3Q+IiwgZS5xdWVyeVNlbGVjdG9yQWxsKCJbc2VsZWN0ZWRdIikubGVuZ3RoIHx8IGgucHVz
aCgiXFxbIiArIF8gKyAiKig/OmNoZWNrZWR8ZGlzYWJsZWR8aXNtYXB8bXVsdGlwbGV8cmVhZG9u
bHl8c2VsZWN0ZWR8dmFsdWUpIiksIGUucXVlcnlTZWxlY3RvckFsbCgiOmNoZWNrZWQiKS5sZW5n
dGggfHwgaC5wdXNoKCI6Y2hlY2tlZCIpCisgICAgICAgICAgICAgICAgZS5pbm5lckhUTUwgPSAi
PHNlbGVjdD48b3B0aW9uIHNlbGVjdGVkPScnPjwvb3B0aW9uPjwvc2VsZWN0PiIsCisgICAgICAg
ICAgICAgICAgZS5xdWVyeVNlbGVjdG9yQWxsKCJbc2VsZWN0ZWRdIikubGVuZ3RoIHx8IGgucHVz
aCgiXFxbIiArIF8gKyAiKig/OmNoZWNrZWR8ZGlzYWJsZWR8aXNtYXB8bXVsdGlwbGV8cmVhZG9u
bHl8c2VsZWN0ZWR8dmFsdWUpIiksCisgICAgICAgICAgICAgICAgZS5xdWVyeVNlbGVjdG9yQWxs
KCI6Y2hlY2tlZCIpLmxlbmd0aCB8fCBoLnB1c2goIjpjaGVja2VkIikKICAgICAgICAgICAgIH0p
LCBhdChmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICAgICAgZS5pbm5lckhUTUwgPSAiPGlucHV0
IHR5cGU9J2hpZGRlbicgaT0nJy8+IiwgZS5xdWVyeVNlbGVjdG9yQWxsKCJbaV49JyddIikubGVu
Z3RoICYmIGgucHVzaCgiWypeJF09IiArIF8gKyAiKig/OlwiXCJ8JycpIiksIGUucXVlcnlTZWxl
Y3RvckFsbCgiOmVuYWJsZWQiKS5sZW5ndGggfHwgaC5wdXNoKCI6ZW5hYmxlZCIsICI6ZGlzYWJs
ZWQiKSwgZS5xdWVyeVNlbGVjdG9yQWxsKCIqLDp4IiksIGgucHVzaCgiLC4qOiIpCisgICAgICAg
ICAgICAgICAgZS5pbm5lckhUTUwgPSAiPGlucHV0IHR5cGU9J2hpZGRlbicgaT0nJy8+IiwKKyAg
ICAgICAgICAgICAgICBlLnF1ZXJ5U2VsZWN0b3JBbGwoIltpXj0nJ10iKS5sZW5ndGggJiYgaC5w
dXNoKCJbKl4kXT0iICsgXyArICIqKD86XCJcInwnJykiKSwKKyAgICAgICAgICAgICAgICBlLnF1
ZXJ5U2VsZWN0b3JBbGwoIjplbmFibGVkIikubGVuZ3RoIHx8IGgucHVzaCgiOmVuYWJsZWQiLCAi
OmRpc2FibGVkIiksCisgICAgICAgICAgICAgICAgZS5xdWVyeVNlbGVjdG9yQWxsKCIqLDp4Iiks
CisgICAgICAgICAgICAgICAgaC5wdXNoKCIsLio6IikKICAgICAgICAgICAgIH0pKSwgKFQubWF0
Y2hlc1NlbGVjdG9yID0gcnQobSA9IGYubWF0Y2hlc1NlbGVjdG9yIHx8IGYubW96TWF0Y2hlc1Nl
bGVjdG9yIHx8IGYud2Via2l0TWF0Y2hlc1NlbGVjdG9yIHx8IGYub01hdGNoZXNTZWxlY3RvciB8
fCBmLm1zTWF0Y2hlc1NlbGVjdG9yKSkgJiYgYXQoZnVuY3Rpb24oZSkgewotICAgICAgICAgICAg
ICAgIFQuZGlzY29ubmVjdGVkTWF0Y2ggPSBtLmNhbGwoZSwgImRpdiIpLCBtLmNhbGwoZSwgIltz
IT0nJ106eCIpLCBnLnB1c2goIiE9IiwgUikKKyAgICAgICAgICAgICAgICBULmRpc2Nvbm5lY3Rl
ZE1hdGNoID0gbS5jYWxsKGUsICJkaXYiKSwKKyAgICAgICAgICAgICAgICBtLmNhbGwoZSwgIltz
IT0nJ106eCIpLAorICAgICAgICAgICAgICAgIGcucHVzaCgiIT0iLCBSKQogICAgICAgICAgICAg
fSksIGggPSBSZWdFeHAoaC5qb2luKCJ8IikpLCBnID0gUmVnRXhwKGcuam9pbigifCIpKSwgeSA9
IHJ0KGYuY29udGFpbnMpIHx8IGYuY29tcGFyZURvY3VtZW50UG9zaXRpb24gPyBmdW5jdGlvbihl
LCB0KSB7CiAgICAgICAgICAgICAgICAgdmFyIG4gPSA5ID09PSBlLm5vZGVUeXBlID8gZS5kb2N1
bWVudEVsZW1lbnQgOiBlLAogICAgICAgICAgICAgICAgICAgICByID0gdCAmJiB0LnBhcmVudE5v
ZGU7CkBAIC0xNjM5LDkgKzE3NzgsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgaSsrOwogICAg
ICAgICAgICAgICAgIHJldHVybiBpID8gdXQoc1tpXSwgbFtpXSkgOiBzW2ldID09PSB3ID8gLTEg
OiBsW2ldID09PSB3ID8gMSA6IDAKICAgICAgICAgICAgIH0sIHUgPSAhMSwgWzAsIDBdLnNvcnQo
diksIFQuZGV0ZWN0RHVwbGljYXRlcyA9IHUsIHApIDogcAotICAgICAgICB9LCBzdC5tYXRjaGVz
ID0gZnVuY3Rpb24oZSwgdCkgeworICAgICAgICB9LAorICAgICAgICBzdC5tYXRjaGVzID0gZnVu
Y3Rpb24oZSwgdCkgewogICAgICAgICAgICAgcmV0dXJuIHN0KGUsIG51bGwsIG51bGwsIHQpCi0g
ICAgICAgIH0sIHN0Lm1hdGNoZXNTZWxlY3RvciA9IGZ1bmN0aW9uKGUsIHQpIHsKKyAgICAgICAg
fSwKKyAgICAgICAgc3QubWF0Y2hlc1NlbGVjdG9yID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAg
ICAgICAgaWYgKChlLm93bmVyRG9jdW1lbnQgfHwgZSkgIT09IHAgJiYgYyhlKSwgdCA9IHQucmVw
bGFjZShaLCAiPSckMSddIiksICEoIVQubWF0Y2hlc1NlbGVjdG9yIHx8IGQgfHwgZyAmJiBnLnRl
c3QodCkgfHwgaC50ZXN0KHQpKSkKICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAg
ICAgICAgICB2YXIgbiA9IG0uY2FsbChlLCB0KTsKQEAgLTE2NDksMTQgKzE3OTAsMTggQEAKICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuCiAgICAgICAgICAgICAgICAgfSBjYXRjaCAo
cikge30KICAgICAgICAgICAgIHJldHVybiBzdCh0LCBwLCBudWxsLCBbZV0pLmxlbmd0aCA+IDAK
LSAgICAgICAgfSwgc3QuY29udGFpbnMgPSBmdW5jdGlvbihlLCB0KSB7CisgICAgICAgIH0sCisg
ICAgICAgIHN0LmNvbnRhaW5zID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgcmV0dXJu
IChlLm93bmVyRG9jdW1lbnQgfHwgZSkgIT09IHAgJiYgYyhlKSwgeShlLCB0KQotICAgICAgICB9
LCBzdC5hdHRyID0gZnVuY3Rpb24oZSwgdCkgeworICAgICAgICB9LAorICAgICAgICBzdC5hdHRy
ID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgdmFyIG47CiAgICAgICAgICAgICByZXR1
cm4gKGUub3duZXJEb2N1bWVudCB8fCBlKSAhPT0gcCAmJiBjKGUpLCBkIHx8ICh0ID0gdC50b0xv
d2VyQ2FzZSgpKSwgKG4gPSBpLmF0dHJIYW5kbGVbdF0pID8gbihlKSA6IGQgfHwgVC5hdHRyaWJ1
dGVzID8gZS5nZXRBdHRyaWJ1dGUodCkgOiAoKG4gPSBlLmdldEF0dHJpYnV0ZU5vZGUodCkpIHx8
IGUuZ2V0QXR0cmlidXRlKHQpKSAmJiBlW3RdID09PSAhMCA/IHQgOiBuICYmIG4uc3BlY2lmaWVk
ID8gbi52YWx1ZSA6IG51bGwKLSAgICAgICAgfSwgc3QuZXJyb3IgPSBmdW5jdGlvbihlKSB7Cisg
ICAgICAgIH0sCisgICAgICAgIHN0LmVycm9yID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAg
dGhyb3cgRXJyb3IoIlN5bnRheCBlcnJvciwgdW5yZWNvZ25pemVkIGV4cHJlc3Npb246ICIgKyBl
KQotICAgICAgICB9LCBzdC51bmlxdWVTb3J0ID0gZnVuY3Rpb24oZSkgeworICAgICAgICB9LAor
ICAgICAgICBzdC51bmlxdWVTb3J0ID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgdmFyIHQs
CiAgICAgICAgICAgICAgICAgbiA9IFtdLAogICAgICAgICAgICAgICAgIHIgPSAxLApAQCAtMTcy
MCw3ICsxODY1LDggQEAKICAgICAgICAgICAgICAgICBmb3IgKDsgdCA9IGVbcl07IHIrKykKICAg
ICAgICAgICAgICAgICAgICAgbiArPSBvKHQpOwogICAgICAgICAgICAgcmV0dXJuIG4KLSAgICAg
ICAgfSwgaSA9IHN0LnNlbGVjdG9ycyA9IHsKKyAgICAgICAgfSwKKyAgICAgICAgaSA9IHN0LnNl
bGVjdG9ycyA9IHsKICAgICAgICAgICAgIGNhY2hlTGVuZ3RoOiA1MCwKICAgICAgICAgICAgIGNy
ZWF0ZVBzZXVkbzogb3QsCiAgICAgICAgICAgICBtYXRjaDogVSwKQEAgLTE4MDMsNyArMTk0OSwx
MSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gITAKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGgg
PSBbYSA/IG0uZmlyc3RDaGlsZCA6IG0ubGFzdENoaWxkXSwgYSAmJiB2KSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGMgPSBtW3hdIHx8IChtW3hdID0ge30pLCBsID0gY1tlXSB8
fCBbXSwgZCA9IGxbMF0gPT09IE4gJiYgbFsxXSwgZiA9IGxbMF0gPT09IE4gJiYgbFsyXSwgcCA9
IGQgJiYgbS5jaGlsZE5vZGVzW2RdOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
ID0gbVt4XSB8fCAobVt4XSA9IHt9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bCA9IGNbZV0gfHwgW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBsWzBd
ID09PSBOICYmIGxbMV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBsWzBd
ID09PSBOICYmIGxbMl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBkICYm
IG0uY2hpbGROb2Rlc1tkXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUg
KHAgPSArK2QgJiYgcCAmJiBwW2ddIHx8IChmID0gZCA9IDApIHx8IGgucG9wKCkpCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoMSA9PT0gcC5ub2RlVHlwZSAmJiArK2Yg
JiYgcCA9PT0gdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNb
ZV0gPSBbTiwgZCwgZl07CkBAIC0xODI3LDcgKzE5NzcsOCBAQAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG8gPSByKGUsIHQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBv
Lmxlbmd0aDsKICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChhLS0pCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaSA9IE0uY2FsbChlLCBvW2FdKSwgZVtpXSA9ICEobltpXSA9IG9b
YV0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IE0uY2FsbChlLCBvW2FdKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBlW2ldID0gIShuW2ldID0gb1thXSkKICAgICAgICAg
ICAgICAgICAgICAgfSkgOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gcihlLCAwLCBuKQogICAgICAgICAgICAgICAgICAgICB9KSA6IHIKQEAgLTE5NzIsOSAr
MjEyMywxMyBAQAogICAgICAgICAgICAgICAgIGMgPSBFW2UgKyAiICJdOwogICAgICAgICAgICAg
aWYgKGMpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHQgPyAwIDogYy5zbGljZSgwKTsKLSAgICAg
ICAgICAgIHMgPSBlLCB1ID0gW10sIGwgPSBpLnByZUZpbHRlcjsKKyAgICAgICAgICAgIHMgPSBl
LAorICAgICAgICAgICAgdSA9IFtdLAorICAgICAgICAgICAgbCA9IGkucHJlRmlsdGVyOwogICAg
ICAgICAgICAgd2hpbGUgKHMpIHsKLSAgICAgICAgICAgICAgICAoIW4gfHwgKHIgPSAkLmV4ZWMo
cykpKSAmJiAociAmJiAocyA9IHMuc2xpY2UoclswXS5sZW5ndGgpIHx8IHMpLCB1LnB1c2gobyA9
IFtdKSksIG4gPSAhMSwgKHIgPSBJLmV4ZWMocykpICYmIChuID0gci5zaGlmdCgpLCBvLnB1c2go
eworICAgICAgICAgICAgICAgICghbiB8fCAociA9ICQuZXhlYyhzKSkpICYmIChyICYmIChzID0g
cy5zbGljZShyWzBdLmxlbmd0aCkgfHwgcyksIHUucHVzaChvID0gW10pKSwKKyAgICAgICAgICAg
ICAgICBuID0gITEsCisgICAgICAgICAgICAgICAgKHIgPSBJLmV4ZWMocykpICYmIChuID0gci5z
aGlmdCgpLCBvLnB1c2goewogICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbiwKICAgICAgICAg
ICAgICAgICAgICAgdHlwZTogclswXS5yZXBsYWNlKFcsICIgIikKICAgICAgICAgICAgICAgICB9
KSwgcyA9IHMuc2xpY2Uobi5sZW5ndGgpKTsKQEAgLTIwNTUsMTQgKzIyMTAsMTcgQEAKICAgICAg
ICAgICAgICAgICAgICAgbSA9ICFlIHx8ICFvICYmIHQgPyBnIDogbXQoZywgZiwgZSwgcywgdSks
CiAgICAgICAgICAgICAgICAgICAgIHkgPSBuID8gaSB8fCAobyA/IGUgOiBoIHx8IHIpID8gW10g
OiBhIDogbTsKICAgICAgICAgICAgICAgICBpZiAobiAmJiBuKG0sIHksIHMsIHUpLCByKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGwgPSBtdCh5LCBkKSwgcihsLCBbXSwgcywgdSksIGMgPSBsLmxl
bmd0aDsKKyAgICAgICAgICAgICAgICAgICAgbCA9IG10KHksIGQpLAorICAgICAgICAgICAgICAg
ICAgICByKGwsIFtdLCBzLCB1KSwKKyAgICAgICAgICAgICAgICAgICAgYyA9IGwubGVuZ3RoOwog
ICAgICAgICAgICAgICAgICAgICB3aGlsZSAoYy0tKQogICAgICAgICAgICAgICAgICAgICAgICAg
KHAgPSBsW2NdKSAmJiAoeVtkW2NdXSA9ICEobVtkW2NdXSA9IHApKQogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICBpZiAobykgewogICAgICAgICAgICAgICAgICAgICBpZiAoaSB8
fCBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGwgPSBbXSwgYyA9IHkubGVuZ3RoOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGwgPSBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0geS5sZW5ndGg7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGMtLSkKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKHAgPSB5W2NdKSAmJiBsLnB1c2gobVtjXSA9IHApOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGkobnVsbCwgeSA9IFtdLCBsLCB1KQpAQCAtMjA3Miw3ICsy
MjMwLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocCA9IHlbY10pICYmIChsID0g
aSA/IE0uY2FsbChvLCBwKSA6IGZbY10pID4gLTEgJiYgKG9bbF0gPSAhKGFbbF0gPSBwKSkKICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAg
ICAgICAgICB5ID0gbXQoeSA9PT0gYSA/IHkuc3BsaWNlKGgsIHkubGVuZ3RoKSA6IHkpLCBpID8g
aShudWxsLCBhLCB5LCB1KSA6IEguYXBwbHkoYSwgeSkKKyAgICAgICAgICAgICAgICAgICAgeSA9
IG10KHkgPT09IGEgPyB5LnNwbGljZShoLCB5Lmxlbmd0aCkgOiB5KSwKKyAgICAgICAgICAgICAg
ICAgICAgaSA/IGkobnVsbCwgYSwgeSwgdSkgOiBILmFwcGx5KGEsIHkpCiAgICAgICAgICAgICB9
KQogICAgICAgICB9CiAgICAgICAgIGZ1bmN0aW9uIHZ0KGUpIHsKQEAgLTIxNDQsNyArMjMwMyw4
IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4W2JdIHx8IHlbYl0gfHwg
KHlbYl0gPSBMLmNhbGwoZikpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgPSBtdCh5
KQogICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgSC5h
cHBseShmLCB5KSwgdyAmJiAhcyAmJiB5Lmxlbmd0aCA+IDAgJiYgdiArIHQubGVuZ3RoID4gMSAm
JiBzdC51bmlxdWVTb3J0KGYpCisgICAgICAgICAgICAgICAgICAgICAgICBILmFwcGx5KGYsIHkp
LAorICAgICAgICAgICAgICAgICAgICAgICAgdyAmJiAhcyAmJiB5Lmxlbmd0aCA+IDAgJiYgdiAr
IHQubGVuZ3RoID4gMSAmJiBzdC51bmlxdWVTb3J0KGYpCiAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHcgJiYgKE4gPSBrLCBsID0gVCksIHgKICAgICAg
ICAgICAgICAgICB9OwpAQCAtMjE1Niw5ICsyMzE2LDExIEBACiAgICAgICAgICAgICAgICAgaSA9
IFtdLAogICAgICAgICAgICAgICAgIG8gPSBTW2UgKyAiICJdOwogICAgICAgICAgICAgaWYgKCFv
KSB7Ci0gICAgICAgICAgICAgICAgdCB8fCAodCA9IGZ0KGUpKSwgbiA9IHQubGVuZ3RoOworICAg
ICAgICAgICAgICAgIHQgfHwgKHQgPSBmdChlKSksCisgICAgICAgICAgICAgICAgbiA9IHQubGVu
Z3RoOwogICAgICAgICAgICAgICAgIHdoaWxlIChuLS0pCi0gICAgICAgICAgICAgICAgICAgIG8g
PSB2dCh0W25dKSwgb1t4XSA/IHIucHVzaChvKSA6IGkucHVzaChvKTsKKyAgICAgICAgICAgICAg
ICAgICAgbyA9IHZ0KHRbbl0pLAorICAgICAgICAgICAgICAgICAgICBvW3hdID8gci5wdXNoKG8p
IDogaS5wdXNoKG8pOwogICAgICAgICAgICAgICAgIG8gPSBTKGUsIGJ0KGksIHIpKQogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIG8KQEAgLTIxOTgsNyArMjM2MCwxNyBAQAogICAg
ICAgICB9CiAgICAgICAgIGkucHNldWRvcy5udGggPSBpLnBzZXVkb3MuZXE7CiAgICAgICAgIGZ1
bmN0aW9uIFR0KCkge30KLSAgICAgICAgaS5maWx0ZXJzID0gVHQucHJvdG90eXBlID0gaS5wc2V1
ZG9zLCBpLnNldEZpbHRlcnMgPSBuZXcgVHQsIGMoKSwgc3QuYXR0ciA9IGIuYXR0ciwgYi5maW5k
ID0gc3QsIGIuZXhwciA9IHN0LnNlbGVjdG9ycywgYi5leHByWyI6Il0gPSBiLmV4cHIucHNldWRv
cywgYi51bmlxdWUgPSBzdC51bmlxdWVTb3J0LCBiLnRleHQgPSBzdC5nZXRUZXh0LCBiLmlzWE1M
RG9jID0gc3QuaXNYTUwsIGIuY29udGFpbnMgPSBzdC5jb250YWlucworICAgICAgICBpLmZpbHRl
cnMgPSBUdC5wcm90b3R5cGUgPSBpLnBzZXVkb3MsCisgICAgICAgIGkuc2V0RmlsdGVycyA9IG5l
dyBUdCwKKyAgICAgICAgYygpLAorICAgICAgICBzdC5hdHRyID0gYi5hdHRyLAorICAgICAgICBi
LmZpbmQgPSBzdCwKKyAgICAgICAgYi5leHByID0gc3Quc2VsZWN0b3JzLAorICAgICAgICBiLmV4
cHJbIjoiXSA9IGIuZXhwci5wc2V1ZG9zLAorICAgICAgICBiLnVuaXF1ZSA9IHN0LnVuaXF1ZVNv
cnQsCisgICAgICAgIGIudGV4dCA9IHN0LmdldFRleHQsCisgICAgICAgIGIuaXNYTUxEb2MgPSBz
dC5pc1hNTCwKKyAgICAgICAgYi5jb250YWlucyA9IHN0LmNvbnRhaW5zCiAgICAgfShlKTsKICAg
ICB2YXIgYXQgPSAvVW50aWwkLywKICAgICAgICAgc3QgPSAvXig/OnBhcmVudHN8cHJldig/OlVu
dGlsfEFsbCkpLywKQEAgLTIyNzQsNyArMjQ0Niw4IEBACiAgICAgICAgIGFkZEJhY2s6IGZ1bmN0
aW9uKGUpIHsKICAgICAgICAgICAgIHJldHVybiB0aGlzLmFkZChudWxsID09IGUgPyB0aGlzLnBy
ZXZPYmplY3QgOiB0aGlzLnByZXZPYmplY3QuZmlsdGVyKGUpKQogICAgICAgICB9Ci0gICAgfSks
IGIuZm4uYW5kU2VsZiA9IGIuZm4uYWRkQmFjazsKKyAgICB9KSwKKyAgICBiLmZuLmFuZFNlbGYg
PSBiLmZuLmFkZEJhY2s7CiAgICAgZnVuY3Rpb24gcHQoZSwgdCkgewogICAgICAgICBkbyBlID0g
ZVt0XTsKICAgICAgICAgd2hpbGUgKGUgJiYgMSAhPT0gZS5ub2RlVHlwZSk7CkBAIC0yMzIzLDcg
KzI0OTYsOCBAQAogICAgICAgICAgICAgdmFyIGkgPSBiLm1hcCh0aGlzLCB0LCBuKTsKICAgICAg
ICAgICAgIHJldHVybiBhdC50ZXN0KGUpIHx8IChyID0gbiksIHIgJiYgInN0cmluZyIgPT0gdHlw
ZW9mIHIgJiYgKGkgPSBiLmZpbHRlcihyLCBpKSksIGkgPSB0aGlzLmxlbmd0aCA+IDEgJiYgIWN0
W2VdID8gYi51bmlxdWUoaSkgOiBpLCB0aGlzLmxlbmd0aCA+IDEgJiYgc3QudGVzdChlKSAmJiAo
aSA9IGkucmV2ZXJzZSgpKSwgdGhpcy5wdXNoU3RhY2soaSkKICAgICAgICAgfQotICAgIH0pLCBi
LmV4dGVuZCh7CisgICAgfSksCisgICAgYi5leHRlbmQoewogICAgICAgICBmaWx0ZXI6IGZ1bmN0
aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgIHJldHVybiBuICYmIChlID0gIjpub3QoIiArIGUg
KyAiKSIpLCAxID09PSB0Lmxlbmd0aCA/IGIuZmluZC5tYXRjaGVzU2VsZWN0b3IodFswXSwgZSkg
PyBbdFswXV0gOiBbXSA6IGIuZmluZC5tYXRjaGVzKGUsIHQpCiAgICAgICAgIH0sCkBAIC0yMzMx
LDcgKzI1MDUsOCBAQAogICAgICAgICAgICAgdmFyIGkgPSBbXSwKICAgICAgICAgICAgICAgICBv
ID0gZVtuXTsKICAgICAgICAgICAgIHdoaWxlIChvICYmIDkgIT09IG8ubm9kZVR5cGUgJiYgKHIg
PT09IHQgfHwgMSAhPT0gby5ub2RlVHlwZSB8fCAhYihvKS5pcyhyKSkpCi0gICAgICAgICAgICAg
ICAgMSA9PT0gby5ub2RlVHlwZSAmJiBpLnB1c2gobyksIG8gPSBvW25dOworICAgICAgICAgICAg
ICAgIDEgPT09IG8ubm9kZVR5cGUgJiYgaS5wdXNoKG8pLAorICAgICAgICAgICAgICAgIG8gPSBv
W25dOwogICAgICAgICAgICAgcmV0dXJuIGkKICAgICAgICAgfSwKICAgICAgICAgc2libGluZzog
ZnVuY3Rpb24oZSwgdCkgewpAQCAtMjM5OCw3ICsyNTczLDEwIEBACiAgICAgICAgIH0sCiAgICAg
ICAgIGp0ID0gZHQobyksCiAgICAgICAgIER0ID0ganQuYXBwZW5kQ2hpbGQoby5jcmVhdGVFbGVt
ZW50KCJkaXYiKSk7Ci0gICAgQXQub3B0Z3JvdXAgPSBBdC5vcHRpb24sIEF0LnRib2R5ID0gQXQu
dGZvb3QgPSBBdC5jb2xncm91cCA9IEF0LmNhcHRpb24gPSBBdC50aGVhZCwgQXQudGggPSBBdC50
ZCwgYi5mbi5leHRlbmQoeworICAgIEF0Lm9wdGdyb3VwID0gQXQub3B0aW9uLAorICAgIEF0LnRi
b2R5ID0gQXQudGZvb3QgPSBBdC5jb2xncm91cCA9IEF0LmNhcHRpb24gPSBBdC50aGVhZCwKKyAg
ICBBdC50aCA9IEF0LnRkLAorICAgIGIuZm4uZXh0ZW5kKHsKICAgICAgICAgdGV4dDogZnVuY3Rp
b24oZSkgewogICAgICAgICAgICAgcmV0dXJuIGIuYWNjZXNzKHRoaXMsIGZ1bmN0aW9uKGUpIHsK
ICAgICAgICAgICAgICAgICByZXR1cm4gZSA9PT0gdCA/IGIudGV4dCh0aGlzKSA6IHRoaXMuZW1w
dHkoKS5hcHBlbmQoKHRoaXNbMF0gJiYgdGhpc1swXS5vd25lckRvY3VtZW50IHx8IG8pLmNyZWF0
ZVRleHROb2RlKGUpKQpAQCAtMjQxMSw3ICsyNTg5LDggQEAKICAgICAgICAgICAgICAgICB9KTsK
ICAgICAgICAgICAgIGlmICh0aGlzWzBdKSB7CiAgICAgICAgICAgICAgICAgdmFyIHQgPSBiKGUs
IHRoaXNbMF0ub3duZXJEb2N1bWVudCkuZXEoMCkuY2xvbmUoITApOwotICAgICAgICAgICAgICAg
IHRoaXNbMF0ucGFyZW50Tm9kZSAmJiB0Lmluc2VydEJlZm9yZSh0aGlzWzBdKSwgdC5tYXAoZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICAgICAgdGhpc1swXS5wYXJlbnROb2RlICYmIHQuaW5zZXJ0
QmVmb3JlKHRoaXNbMF0pLAorICAgICAgICAgICAgICAgIHQubWFwKGZ1bmN0aW9uKCkgewogICAg
ICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXM7CiAgICAgICAgICAgICAgICAgICAgIHdoaWxl
IChlLmZpcnN0Q2hpbGQgJiYgMSA9PT0gZS5maXJzdENoaWxkLm5vZGVUeXBlKQogICAgICAgICAg
ICAgICAgICAgICAgICAgZSA9IGUuZmlyc3RDaGlsZDsKQEAgLTI0OTQsNyArMjY3Myw4IEBACiAg
ICAgICAgICAgICAgICAgICAgIGUgPSBlLnJlcGxhY2UodnQsICI8JDE+PC8kMj4iKTsKICAgICAg
ICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBpID4g
cjsgcisrKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0aGlzW3JdIHx8IHt9LCAx
ID09PSBuLm5vZGVUeXBlICYmIChiLmNsZWFuRGF0YShPdChuLCAhMSkpLCBuLmlubmVySFRNTCA9
IGUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0aGlzW3JdIHx8IHt9LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDEgPT09IG4ubm9kZVR5cGUgJiYgKGIuY2xlYW5EYXRh
KE90KG4sICExKSksIG4uaW5uZXJIVE1MID0gZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBu
ID0gMAogICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChvKSB7fQogICAgICAgICAgICAgICAg
IH0KQEAgLTI1MjksMTQgKzI3MDksMTggQEAKICAgICAgICAgICAgIGlmIChtIHx8ICEoMSA+PSBw
IHx8ICJzdHJpbmciICE9IHR5cGVvZiBnIHx8IGIuc3VwcG9ydC5jaGVja0Nsb25lKSAmJiBDdC50
ZXN0KGcpKQogICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oaSkgewog
ICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IGQuZXEoaSk7Ci0gICAgICAgICAgICAgICAgICAg
IG0gJiYgKGVbMF0gPSBnLmNhbGwodGhpcywgaSwgbiA/IG8uaHRtbCgpIDogdCkpLCBvLmRvbU1h
bmlwKGUsIG4sIHIpCisgICAgICAgICAgICAgICAgICAgIG0gJiYgKGVbMF0gPSBnLmNhbGwodGhp
cywgaSwgbiA/IG8uaHRtbCgpIDogdCkpLAorICAgICAgICAgICAgICAgICAgICBvLmRvbU1hbmlw
KGUsIG4sIHIpCiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICBpZiAocCAmJiAobCA9
IGIuYnVpbGRGcmFnbWVudChlLCB0aGlzWzBdLm93bmVyRG9jdW1lbnQsICExLCB0aGlzKSwgaSA9
IGwuZmlyc3RDaGlsZCwgMSA9PT0gbC5jaGlsZE5vZGVzLmxlbmd0aCAmJiAobCA9IGkpLCBpKSkg
ewogICAgICAgICAgICAgICAgIGZvciAobiA9IG4gJiYgYi5ub2RlTmFtZShpLCAidHIiKSwgcyA9
IGIubWFwKE90KGwsICJzY3JpcHQiKSwgSHQpLCBhID0gcy5sZW5ndGg7IHAgPiBjOyBjKyspCi0g
ICAgICAgICAgICAgICAgICAgIG8gPSBsLCBjICE9PSBoICYmIChvID0gYi5jbG9uZShvLCAhMCwg
ITApLCBhICYmIGIubWVyZ2UocywgT3QobywgInNjcmlwdCIpKSksIHIuY2FsbChuICYmIGIubm9k
ZU5hbWUodGhpc1tjXSwgInRhYmxlIikgPyBMdCh0aGlzW2NdLCAidGJvZHkiKSA6IHRoaXNbY10s
IG8sIGMpOworICAgICAgICAgICAgICAgICAgICBvID0gbCwKKyAgICAgICAgICAgICAgICAgICAg
YyAhPT0gaCAmJiAobyA9IGIuY2xvbmUobywgITAsICEwKSwgYSAmJiBiLm1lcmdlKHMsIE90KG8s
ICJzY3JpcHQiKSkpLAorICAgICAgICAgICAgICAgICAgICByLmNhbGwobiAmJiBiLm5vZGVOYW1l
KHRoaXNbY10sICJ0YWJsZSIpID8gTHQodGhpc1tjXSwgInRib2R5IikgOiB0aGlzW2NdLCBvLCBj
KTsKICAgICAgICAgICAgICAgICBpZiAoYSkKICAgICAgICAgICAgICAgICAgICAgZm9yICh1ID0g
c1tzLmxlbmd0aCAtIDFdLm93bmVyRG9jdW1lbnQsIGIubWFwKHMsIHF0KSwgYyA9IDA7IGEgPiBj
OyBjKyspCi0gICAgICAgICAgICAgICAgICAgICAgICBvID0gc1tjXSwga3QudGVzdChvLnR5cGUg
fHwgIiIpICYmICFiLl9kYXRhKG8sICJnbG9iYWxFdmFsIikgJiYgYi5jb250YWlucyh1LCBvKSAm
JiAoby5zcmMgPyBiLmFqYXgoeworICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHNbY10sCisg
ICAgICAgICAgICAgICAgICAgICAgICBrdC50ZXN0KG8udHlwZSB8fCAiIikgJiYgIWIuX2RhdGEo
bywgImdsb2JhbEV2YWwiKSAmJiBiLmNvbnRhaW5zKHUsIG8pICYmIChvLnNyYyA/IGIuYWpheCh7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBvLnNyYywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0eXBlOiAiR0VUIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
YXRhVHlwZTogInNjcmlwdCIsCkBAIC0yNTc1LDcgKzI3NTksOCBAQAogICAgICAgICAgICAgICAg
IGEgPSBiLl9kYXRhKHQsIG8pLAogICAgICAgICAgICAgICAgIHMgPSBvLmV2ZW50czsKICAgICAg
ICAgICAgIGlmIChzKSB7Ci0gICAgICAgICAgICAgICAgZGVsZXRlIGEuaGFuZGxlLCBhLmV2ZW50
cyA9IHt9OworICAgICAgICAgICAgICAgIGRlbGV0ZSBhLmhhbmRsZSwKKyAgICAgICAgICAgICAg
ICBhLmV2ZW50cyA9IHt9OwogICAgICAgICAgICAgICAgIGZvciAobiBpbiBzKQogICAgICAgICAg
ICAgICAgICAgICBmb3IgKHIgPSAwLCBpID0gc1tuXS5sZW5ndGg7IGkgPiByOyByKyspCiAgICAg
ICAgICAgICAgICAgICAgICAgICBiLmV2ZW50LmFkZCh0LCBuLCBzW25dW3JdKQpAQCAtMjYxMSw3
ICsyNzk2LDkgQEAKICAgICAgICAgICAgICAgICBvID0gYihlKSwKICAgICAgICAgICAgICAgICBh
ID0gby5sZW5ndGggLSAxOwogICAgICAgICAgICAgZm9yICg7IGEgPj0gcjsgcisrKQotICAgICAg
ICAgICAgICAgIG4gPSByID09PSBhID8gdGhpcyA6IHRoaXMuY2xvbmUoITApLCBiKG9bcl0pW3Rd
KG4pLCBkLmFwcGx5KGksIG4uZ2V0KCkpOworICAgICAgICAgICAgICAgIG4gPSByID09PSBhID8g
dGhpcyA6IHRoaXMuY2xvbmUoITApLAorICAgICAgICAgICAgICAgIGIob1tyXSlbdF0obiksCisg
ICAgICAgICAgICAgICAgZC5hcHBseShpLCBuLmdldCgpKTsKICAgICAgICAgICAgIHJldHVybiB0
aGlzLnB1c2hTdGFjayhpKQogICAgICAgICB9CiAgICAgfSk7CkBAIC0yNjY0LDIxICsyODUxLDI5
IEBACiAgICAgICAgICAgICAgICAgICAgIGlmICgib2JqZWN0IiA9PT0gYi50eXBlKG8pKQogICAg
ICAgICAgICAgICAgICAgICAgICAgYi5tZXJnZShkLCBvLm5vZGVUeXBlID8gW29dIDogbyk7CiAg
ICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHd0LnRlc3QobykpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHMgPSBzIHx8IGYuYXBwZW5kQ2hpbGQodC5jcmVhdGVFbGVtZW50KCJkaXYiKSks
IHUgPSAoYnQuZXhlYyhvKSB8fCBbIiIsICIiXSlbMV0udG9Mb3dlckNhc2UoKSwgYyA9IEF0W3Vd
IHx8IEF0Ll9kZWZhdWx0LCBzLmlubmVySFRNTCA9IGNbMV0gKyBvLnJlcGxhY2UodnQsICI8JDE+
PC8kMj4iKSArIGNbMl0sIGkgPSBjWzBdOworICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHMg
fHwgZi5hcHBlbmRDaGlsZCh0LmNyZWF0ZUVsZW1lbnQoImRpdiIpKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHUgPSAoYnQuZXhlYyhvKSB8fCBbIiIsICIiXSlbMV0udG9Mb3dlckNhc2UoKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBBdFt1XSB8fCBBdC5fZGVmYXVsdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHMuaW5uZXJIVE1MID0gY1sxXSArIG8ucmVwbGFjZSh2dCwgIjwk
MT48LyQyPiIpICsgY1syXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBjWzBdOwogICAg
ICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGktLSkKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzID0gcy5sYXN0Q2hpbGQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWIuc3Vw
cG9ydC5sZWFkaW5nV2hpdGVzcGFjZSAmJiB5dC50ZXN0KG8pICYmIGQucHVzaCh0LmNyZWF0ZVRl
eHROb2RlKHl0LmV4ZWMobylbMF0pKSwgIWIuc3VwcG9ydC50Ym9keSkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG8gPSAidGFibGUiICE9PSB1IHx8IHh0LnRlc3QobykgPyAiPHRhYmxl
PiIgIT09IGNbMV0gfHwgeHQudGVzdChvKSA/IDAgOiBzIDogcy5maXJzdENoaWxkLCBpID0gbyAm
JiBvLmNoaWxkTm9kZXMubGVuZ3RoOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSAi
dGFibGUiICE9PSB1IHx8IHh0LnRlc3QobykgPyAiPHRhYmxlPiIgIT09IGNbMV0gfHwgeHQudGVz
dChvKSA/IDAgOiBzIDogcy5maXJzdENoaWxkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGkgPSBvICYmIG8uY2hpbGROb2Rlcy5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgd2hpbGUgKGktLSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYi5ub2RlTmFt
ZShsID0gby5jaGlsZE5vZGVzW2ldLCAidGJvZHkiKSAmJiAhbC5jaGlsZE5vZGVzLmxlbmd0aCAm
JiBvLnJlbW92ZUNoaWxkKGwpCiAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBiLm1lcmdlKGQsIHMuY2hpbGROb2RlcyksIHMudGV4dENvbnRlbnQgPSAi
IjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGIubWVyZ2UoZCwgcy5jaGlsZE5vZGVzKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHMudGV4dENvbnRlbnQgPSAiIjsKICAgICAgICAgICAgICAg
ICAgICAgICAgIHdoaWxlIChzLmZpcnN0Q2hpbGQpCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcy5yZW1vdmVDaGlsZChzLmZpcnN0Q2hpbGQpOwogICAgICAgICAgICAgICAgICAgICAgICAg
cyA9IGYubGFzdENoaWxkCiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAg
ICAgICAgICAgICAgZC5wdXNoKHQuY3JlYXRlVGV4dE5vZGUobykpOwotICAgICAgICAgICAgcyAm
JiBmLnJlbW92ZUNoaWxkKHMpLCBiLnN1cHBvcnQuYXBwZW5kQ2hlY2tlZCB8fCBiLmdyZXAoT3Qo
ZCwgImlucHV0IiksIEJ0KSwgaCA9IDA7CisgICAgICAgICAgICBzICYmIGYucmVtb3ZlQ2hpbGQo
cyksCisgICAgICAgICAgICBiLnN1cHBvcnQuYXBwZW5kQ2hlY2tlZCB8fCBiLmdyZXAoT3QoZCwg
ImlucHV0IiksIEJ0KSwKKyAgICAgICAgICAgIGggPSAwOwogICAgICAgICAgICAgd2hpbGUgKG8g
PSBkW2grK10pCiAgICAgICAgICAgICAgICAgaWYgKCghciB8fCAtMSA9PT0gYi5pbkFycmF5KG8s
IHIpKSAmJiAoYSA9IGIuY29udGFpbnMoby5vd25lckRvY3VtZW50LCBvKSwgcyA9IE90KGYuYXBw
ZW5kQ2hpbGQobyksICJzY3JpcHQiKSwgYSAmJiBNdChzKSwgbikpIHsKICAgICAgICAgICAgICAg
ICAgICAgaSA9IDA7CkBAIC0yNzUzLDkgKzI5NDgsMTEgQEAKICAgICAgICAgICAgIGEgPSAwLAog
ICAgICAgICAgICAgcyA9IGUubGVuZ3RoOwogICAgICAgICBmb3IgKDsgcyA+IGE7IGErKykKLSAg
ICAgICAgICAgIHIgPSBlW2FdLCByLnN0eWxlICYmIChvW2FdID0gYi5fZGF0YShyLCAib2xkZGlz
cGxheSIpLCBuID0gci5zdHlsZS5kaXNwbGF5LCB0ID8gKG9bYV0gfHwgIm5vbmUiICE9PSBuIHx8
IChyLnN0eWxlLmRpc3BsYXkgPSAiIiksICIiID09PSByLnN0eWxlLmRpc3BsYXkgJiYgbm4ocikg
JiYgKG9bYV0gPSBiLl9kYXRhKHIsICJvbGRkaXNwbGF5IiwgdW4oci5ub2RlTmFtZSkpKSkgOiBv
W2FdIHx8IChpID0gbm4ociksIChuICYmICJub25lIiAhPT0gbiB8fCAhaSkgJiYgYi5fZGF0YShy
LCAib2xkZGlzcGxheSIsIGkgPyBuIDogYi5jc3MociwgImRpc3BsYXkiKSkpKTsKKyAgICAgICAg
ICAgIHIgPSBlW2FdLAorICAgICAgICAgICAgci5zdHlsZSAmJiAob1thXSA9IGIuX2RhdGEociwg
Im9sZGRpc3BsYXkiKSwgbiA9IHIuc3R5bGUuZGlzcGxheSwgdCA/IChvW2FdIHx8ICJub25lIiAh
PT0gbiB8fCAoci5zdHlsZS5kaXNwbGF5ID0gIiIpLCAiIiA9PT0gci5zdHlsZS5kaXNwbGF5ICYm
IG5uKHIpICYmIChvW2FdID0gYi5fZGF0YShyLCAib2xkZGlzcGxheSIsIHVuKHIubm9kZU5hbWUp
KSkpIDogb1thXSB8fCAoaSA9IG5uKHIpLCAobiAmJiAibm9uZSIgIT09IG4gfHwgIWkpICYmIGIu
X2RhdGEociwgIm9sZGRpc3BsYXkiLCBpID8gbiA6IGIuY3NzKHIsICJkaXNwbGF5IikpKSk7CiAg
ICAgICAgIGZvciAoYSA9IDA7IHMgPiBhOyBhKyspCi0gICAgICAgICAgICByID0gZVthXSwgci5z
dHlsZSAmJiAodCAmJiAibm9uZSIgIT09IHIuc3R5bGUuZGlzcGxheSAmJiAiIiAhPT0gci5zdHls
ZS5kaXNwbGF5IHx8IChyLnN0eWxlLmRpc3BsYXkgPSB0ID8gb1thXSB8fCAiIiA6ICJub25lIikp
OworICAgICAgICAgICAgciA9IGVbYV0sCisgICAgICAgICAgICByLnN0eWxlICYmICh0ICYmICJu
b25lIiAhPT0gci5zdHlsZS5kaXNwbGF5ICYmICIiICE9PSByLnN0eWxlLmRpc3BsYXkgfHwgKHIu
c3R5bGUuZGlzcGxheSA9IHQgPyBvW2FdIHx8ICIiIDogIm5vbmUiKSk7CiAgICAgICAgIHJldHVy
biBlCiAgICAgfQogICAgIGIuZm4uZXh0ZW5kKHsKQEAgLTI3ODUsNyArMjk4Miw4IEBACiAgICAg
ICAgICAgICAgICAgKHQgPyBlIDogbm4odGhpcykpID8gYih0aGlzKS5zaG93KCkgOiBiKHRoaXMp
LmhpZGUoKQogICAgICAgICAgICAgfSkKICAgICAgICAgfQotICAgIH0pLCBiLmV4dGVuZCh7Cisg
ICAgfSksCisgICAgYi5leHRlbmQoewogICAgICAgICBjc3NIb29rczogewogICAgICAgICAgICAg
b3BhY2l0eTogewogICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24oZSwgdCkgewpAQCAtMjgz
NywxMyArMzAzNSwxNSBAQAogICAgICAgICAgICAgICAgIG8sCiAgICAgICAgICAgICAgICAgYSA9
IHt9OwogICAgICAgICAgICAgZm9yIChvIGluIHQpCi0gICAgICAgICAgICAgICAgYVtvXSA9IGUu
c3R5bGVbb10sIGUuc3R5bGVbb10gPSB0W29dOworICAgICAgICAgICAgICAgIGFbb10gPSBlLnN0
eWxlW29dLAorICAgICAgICAgICAgICAgIGUuc3R5bGVbb10gPSB0W29dOwogICAgICAgICAgICAg
aSA9IG4uYXBwbHkoZSwgciB8fCBbXSk7CiAgICAgICAgICAgICBmb3IgKG8gaW4gdCkKICAgICAg
ICAgICAgICAgICBlLnN0eWxlW29dID0gYVtvXTsKICAgICAgICAgICAgIHJldHVybiBpCiAgICAg
ICAgIH0KLSAgICB9KSwgZS5nZXRDb21wdXRlZFN0eWxlID8gKFJ0ID0gZnVuY3Rpb24odCkgewor
ICAgIH0pLAorICAgIGUuZ2V0Q29tcHV0ZWRTdHlsZSA/IChSdCA9IGZ1bmN0aW9uKHQpIHsKICAg
ICAgICAgcmV0dXJuIGUuZ2V0Q29tcHV0ZWRTdHlsZSh0LCBudWxsKQogICAgIH0sIFd0ID0gZnVu
Y3Rpb24oZSwgbiwgcikgewogICAgICAgICB2YXIgaSwKQEAgLTI4NzIsNyArMzA3Miw4IEBACiAg
ICAgICAgIHZhciBvID0gbiA9PT0gKHIgPyAiYm9yZGVyIiA6ICJjb250ZW50IikgPyA0IDogIndp
ZHRoIiA9PT0gdCA/IDEgOiAwLAogICAgICAgICAgICAgYSA9IDA7CiAgICAgICAgIGZvciAoOyA0
ID4gbzsgbyArPSAyKQotICAgICAgICAgICAgIm1hcmdpbiIgPT09IG4gJiYgKGEgKz0gYi5jc3Mo
ZSwgbiArIFp0W29dLCAhMCwgaSkpLCByID8gKCJjb250ZW50IiA9PT0gbiAmJiAoYSAtPSBiLmNz
cyhlLCAicGFkZGluZyIgKyBadFtvXSwgITAsIGkpKSwgIm1hcmdpbiIgIT09IG4gJiYgKGEgLT0g
Yi5jc3MoZSwgImJvcmRlciIgKyBadFtvXSArICJXaWR0aCIsICEwLCBpKSkpIDogKGEgKz0gYi5j
c3MoZSwgInBhZGRpbmciICsgWnRbb10sICEwLCBpKSwgInBhZGRpbmciICE9PSBuICYmIChhICs9
IGIuY3NzKGUsICJib3JkZXIiICsgWnRbb10gKyAiV2lkdGgiLCAhMCwgaSkpKTsKKyAgICAgICAg
ICAgICJtYXJnaW4iID09PSBuICYmIChhICs9IGIuY3NzKGUsIG4gKyBadFtvXSwgITAsIGkpKSwK
KyAgICAgICAgICAgIHIgPyAoImNvbnRlbnQiID09PSBuICYmIChhIC09IGIuY3NzKGUsICJwYWRk
aW5nIiArIFp0W29dLCAhMCwgaSkpLCAibWFyZ2luIiAhPT0gbiAmJiAoYSAtPSBiLmNzcyhlLCAi
Ym9yZGVyIiArIFp0W29dICsgIldpZHRoIiwgITAsIGkpKSkgOiAoYSArPSBiLmNzcyhlLCAicGFk
ZGluZyIgKyBadFtvXSwgITAsIGkpLCAicGFkZGluZyIgIT09IG4gJiYgKGEgKz0gYi5jc3MoZSwg
ImJvcmRlciIgKyBadFtvXSArICJXaWR0aCIsICEwLCBpKSkpOwogICAgICAgICByZXR1cm4gYQog
ICAgIH0KICAgICBmdW5jdGlvbiBzbihlLCB0LCBuKSB7CkBAIC0yODgzLDcgKzMwODQsOCBAQAog
ICAgICAgICBpZiAoMCA+PSBpIHx8IG51bGwgPT0gaSkgewogICAgICAgICAgICAgaWYgKGkgPSBX
dChlLCB0LCBvKSwgKDAgPiBpIHx8IG51bGwgPT0gaSkgJiYgKGkgPSBlLnN0eWxlW3RdKSwgWXQu
dGVzdChpKSkKICAgICAgICAgICAgICAgICByZXR1cm4gaTsKLSAgICAgICAgICAgIHIgPSBhICYm
IChiLnN1cHBvcnQuYm94U2l6aW5nUmVsaWFibGUgfHwgaSA9PT0gZS5zdHlsZVt0XSksIGkgPSBw
YXJzZUZsb2F0KGkpIHx8IDAKKyAgICAgICAgICAgIHIgPSBhICYmIChiLnN1cHBvcnQuYm94U2l6
aW5nUmVsaWFibGUgfHwgaSA9PT0gZS5zdHlsZVt0XSksCisgICAgICAgICAgICBpID0gcGFyc2VG
bG9hdChpKSB8fCAwCiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGkgKyBhbihlLCB0LCBuIHx8
IChhID8gImJvcmRlciIgOiAiY29udGVudCIpLCByLCBvKSArICJweCIKICAgICB9CkBAIC0yOTA5
LDcgKzMxMTEsOCBAQAogICAgICAgICAgICAgICAgIHJldHVybiBvbihlLCB0LCByID8gYW4oZSwg
biwgciwgYi5zdXBwb3J0LmJveFNpemluZyAmJiAiYm9yZGVyLWJveCIgPT09IGIuY3NzKGUsICJi
b3hTaXppbmciLCAhMSwgaSksIGkpIDogMCkKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAg
IH0pLCBiLnN1cHBvcnQub3BhY2l0eSB8fCAoYi5jc3NIb29rcy5vcGFjaXR5ID0geworICAgIH0p
LAorICAgIGIuc3VwcG9ydC5vcGFjaXR5IHx8IChiLmNzc0hvb2tzLm9wYWNpdHkgPSB7CiAgICAg
ICAgIGdldDogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgcmV0dXJuIEl0LnRlc3QoKHQg
JiYgZS5jdXJyZW50U3R5bGUgPyBlLmN1cnJlbnRTdHlsZS5maWx0ZXIgOiBlLnN0eWxlLmZpbHRl
cikgfHwgIiIpID8gLjAxICogcGFyc2VGbG9hdChSZWdFeHAuJDEpICsgIiIgOiB0ID8gIjEiIDog
IiIKICAgICAgICAgfSwKQEAgLTI5MTgsMjcgKzMxMjEsMzIgQEAKICAgICAgICAgICAgICAgICBy
ID0gZS5jdXJyZW50U3R5bGUsCiAgICAgICAgICAgICAgICAgaSA9IGIuaXNOdW1lcmljKHQpID8g
ImFscGhhKG9wYWNpdHk9IiArIDEwMCAqIHQgKyAiKSIgOiAiIiwKICAgICAgICAgICAgICAgICBv
ID0gciAmJiByLmZpbHRlciB8fCBuLmZpbHRlciB8fCAiIjsKLSAgICAgICAgICAgIG4uem9vbSA9
IDEsICh0ID49IDEgfHwgIiIgPT09IHQpICYmICIiID09PSBiLnRyaW0oby5yZXBsYWNlKCR0LCAi
IikpICYmIG4ucmVtb3ZlQXR0cmlidXRlICYmIChuLnJlbW92ZUF0dHJpYnV0ZSgiZmlsdGVyIiks
ICIiID09PSB0IHx8IHIgJiYgIXIuZmlsdGVyKSB8fCAobi5maWx0ZXIgPSAkdC50ZXN0KG8pID8g
by5yZXBsYWNlKCR0LCBpKSA6IG8gKyAiICIgKyBpKQorICAgICAgICAgICAgbi56b29tID0gMSwK
KyAgICAgICAgICAgICh0ID49IDEgfHwgIiIgPT09IHQpICYmICIiID09PSBiLnRyaW0oby5yZXBs
YWNlKCR0LCAiIikpICYmIG4ucmVtb3ZlQXR0cmlidXRlICYmIChuLnJlbW92ZUF0dHJpYnV0ZSgi
ZmlsdGVyIiksICIiID09PSB0IHx8IHIgJiYgIXIuZmlsdGVyKSB8fCAobi5maWx0ZXIgPSAkdC50
ZXN0KG8pID8gby5yZXBsYWNlKCR0LCBpKSA6IG8gKyAiICIgKyBpKQogICAgICAgICB9Ci0gICAg
fSksIGIoZnVuY3Rpb24oKSB7CisgICAgfSksCisgICAgYihmdW5jdGlvbigpIHsKICAgICAgICAg
Yi5zdXBwb3J0LnJlbGlhYmxlTWFyZ2luUmlnaHQgfHwgKGIuY3NzSG9va3MubWFyZ2luUmlnaHQg
PSB7CiAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgICAgICAgICBy
ZXR1cm4gbiA/IGIuc3dhcChlLCB7CiAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICJpbmxp
bmUtYmxvY2siCiAgICAgICAgICAgICAgICAgfSwgV3QsIFtlLCAibWFyZ2luUmlnaHQiXSkgOiB0
CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0pLCAhYi5zdXBwb3J0LnBpeGVsUG9zaXRpb24gJiYg
Yi5mbi5wb3NpdGlvbiAmJiBiLmVhY2goWyJ0b3AiLCAibGVmdCJdLCBmdW5jdGlvbihlLCBuKSB7
CisgICAgICAgIH0pLAorICAgICAgICAhYi5zdXBwb3J0LnBpeGVsUG9zaXRpb24gJiYgYi5mbi5w
b3NpdGlvbiAmJiBiLmVhY2goWyJ0b3AiLCAibGVmdCJdLCBmdW5jdGlvbihlLCBuKSB7CiAgICAg
ICAgICAgICBiLmNzc0hvb2tzW25dID0gewogICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24o
ZSwgcikgewogICAgICAgICAgICAgICAgICAgICByZXR1cm4gciA/IChyID0gV3QoZSwgbiksIFl0
LnRlc3QocikgPyBiKGUpLnBvc2l0aW9uKClbbl0gKyAicHgiIDogcikgOiB0CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9KQotICAgIH0pLCBiLmV4cHIgJiYgYi5l
eHByLmZpbHRlcnMgJiYgKGIuZXhwci5maWx0ZXJzLmhpZGRlbiA9IGZ1bmN0aW9uKGUpIHsKKyAg
ICB9KSwKKyAgICBiLmV4cHIgJiYgYi5leHByLmZpbHRlcnMgJiYgKGIuZXhwci5maWx0ZXJzLmhp
ZGRlbiA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgcmV0dXJuIDAgPj0gZS5vZmZzZXRXaWR0aCAm
JiAwID49IGUub2Zmc2V0SGVpZ2h0IHx8ICFiLnN1cHBvcnQucmVsaWFibGVIaWRkZW5PZmZzZXRz
ICYmICJub25lIiA9PT0gKGUuc3R5bGUgJiYgZS5zdHlsZS5kaXNwbGF5IHx8IGIuY3NzKGUsICJk
aXNwbGF5IikpCiAgICAgfSwgYi5leHByLmZpbHRlcnMudmlzaWJsZSA9IGZ1bmN0aW9uKGUpIHsK
ICAgICAgICAgcmV0dXJuICFiLmV4cHIuZmlsdGVycy5oaWRkZW4oZSkKLSAgICB9KSwgYi5lYWNo
KHsKKyAgICB9KSwKKyAgICBiLmVhY2goewogICAgICAgICBtYXJnaW46ICIiLAogICAgICAgICBw
YWRkaW5nOiAiIiwKICAgICAgICAgYm9yZGVyOiAiV2lkdGgiCkBAIC0yOTUyLDcgKzMxNjAsOCBA
QAogICAgICAgICAgICAgICAgICAgICBpW2UgKyBadFtyXSArIHRdID0gb1tyXSB8fCBvW3IgLSAy
XSB8fCBvWzBdOwogICAgICAgICAgICAgICAgIHJldHVybiBpCiAgICAgICAgICAgICB9Ci0gICAg
ICAgIH0sIFV0LnRlc3QoZSkgfHwgKGIuY3NzSG9va3NbZSArIHRdLnNldCA9IG9uKQorICAgICAg
ICB9LAorICAgICAgICBVdC50ZXN0KGUpIHx8IChiLmNzc0hvb2tzW2UgKyB0XS5zZXQgPSBvbikK
ICAgICB9KTsKICAgICB2YXIgY24gPSAvJTIwL2csCiAgICAgICAgIHBuID0gL1xbXF0kLywKQEAg
LTI5ODMsMTEgKzMxOTIsMTMgQEAKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9KS5n
ZXQoKQogICAgICAgICB9Ci0gICAgfSksIGIucGFyYW0gPSBmdW5jdGlvbihlLCBuKSB7CisgICAg
fSksCisgICAgYi5wYXJhbSA9IGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgdmFyIHIsCiAgICAg
ICAgICAgICBpID0gW10sCiAgICAgICAgICAgICBvID0gZnVuY3Rpb24oZSwgdCkgewotICAgICAg
ICAgICAgICAgIHQgPSBiLmlzRnVuY3Rpb24odCkgPyB0KCkgOiBudWxsID09IHQgPyAiIiA6IHQs
IGlbaS5sZW5ndGhdID0gZW5jb2RlVVJJQ29tcG9uZW50KGUpICsgIj0iICsgZW5jb2RlVVJJQ29t
cG9uZW50KHQpCisgICAgICAgICAgICAgICAgdCA9IGIuaXNGdW5jdGlvbih0KSA/IHQoKSA6IG51
bGwgPT0gdCA/ICIiIDogdCwKKyAgICAgICAgICAgICAgICBpW2kubGVuZ3RoXSA9IGVuY29kZVVS
SUNvbXBvbmVudChlKSArICI9IiArIGVuY29kZVVSSUNvbXBvbmVudCh0KQogICAgICAgICAgICAg
fTsKICAgICAgICAgaWYgKG4gPT09IHQgJiYgKG4gPSBiLmFqYXhTZXR0aW5ncyAmJiBiLmFqYXhT
ZXR0aW5ncy50cmFkaXRpb25hbCksIGIuaXNBcnJheShlKSB8fCBlLmpxdWVyeSAmJiAhYi5pc1Bs
YWluT2JqZWN0KGUpKQogICAgICAgICAgICAgYi5lYWNoKGUsIGZ1bmN0aW9uKCkgewpAQCAtMzAx
NCw3ICszMjI1LDggQEAKICAgICAgICAgYi5mblt0XSA9IGZ1bmN0aW9uKGUsIG4pIHsKICAgICAg
ICAgICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID4gMCA/IHRoaXMub24odCwgbnVsbCwgZSwg
bikgOiB0aGlzLnRyaWdnZXIodCkKICAgICAgICAgfQotICAgIH0pLCBiLmZuLmhvdmVyID0gZnVu
Y3Rpb24oZSwgdCkgeworICAgIH0pLAorICAgIGIuZm4uaG92ZXIgPSBmdW5jdGlvbihlLCB0KSB7
CiAgICAgICAgIHJldHVybiB0aGlzLm1vdXNlZW50ZXIoZSkubW91c2VsZWF2ZSh0IHx8IGUpCiAg
ICAgfTsKICAgICB2YXIgbW4sCkBAIC0zMDM1LDcgKzMyNDcsOSBAQAogICAgIHRyeSB7CiAgICAg
ICAgIHluID0gYS5ocmVmCiAgICAgfSBjYXRjaCAoTG4pIHsKLSAgICAgICAgeW4gPSBvLmNyZWF0
ZUVsZW1lbnQoImEiKSwgeW4uaHJlZiA9ICIiLCB5biA9IHluLmhyZWYKKyAgICAgICAgeW4gPSBv
LmNyZWF0ZUVsZW1lbnQoImEiKSwKKyAgICAgICAgeW4uaHJlZiA9ICIiLAorICAgICAgICB5biA9
IHluLmhyZWYKICAgICB9CiAgICAgbW4gPSBFbi5leGVjKHluLnRvTG93ZXJDYXNlKCkpIHx8IFtd
OwogICAgIGZ1bmN0aW9uIEhuKGUpIHsKQEAgLTMwODMsMTUgKzMyOTcsMTggQEAKICAgICAgICAg
ICAgIGRhdGFUeXBlOiAiaHRtbCIsCiAgICAgICAgICAgICBkYXRhOiBuCiAgICAgICAgIH0pLmRv
bmUoZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgbyA9IGFyZ3VtZW50cywgcy5odG1sKGkgPyBi
KCI8ZGl2PiIpLmFwcGVuZChiLnBhcnNlSFRNTChlKSkuZmluZChpKSA6IGUpCisgICAgICAgICAg
ICBvID0gYXJndW1lbnRzLAorICAgICAgICAgICAgcy5odG1sKGkgPyBiKCI8ZGl2PiIpLmFwcGVu
ZChiLnBhcnNlSFRNTChlKSkuZmluZChpKSA6IGUpCiAgICAgICAgIH0pLmNvbXBsZXRlKHIgJiYg
ZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgcy5lYWNoKHIsIG8gfHwgW2UucmVzcG9uc2VU
ZXh0LCB0LCBlXSkKICAgICAgICAgfSksIHRoaXMKLSAgICB9LCBiLmVhY2goWyJhamF4U3RhcnQi
LCAiYWpheFN0b3AiLCAiYWpheENvbXBsZXRlIiwgImFqYXhFcnJvciIsICJhamF4U3VjY2VzcyIs
ICJhamF4U2VuZCJdLCBmdW5jdGlvbihlLCB0KSB7CisgICAgfSwKKyAgICBiLmVhY2goWyJhamF4
U3RhcnQiLCAiYWpheFN0b3AiLCAiYWpheENvbXBsZXRlIiwgImFqYXhFcnJvciIsICJhamF4U3Vj
Y2VzcyIsICJhamF4U2VuZCJdLCBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgIGIuZm5bdF0gPSBm
dW5jdGlvbihlKSB7CiAgICAgICAgICAgICByZXR1cm4gdGhpcy5vbih0LCBlKQogICAgICAgICB9
Ci0gICAgfSksIGIuZWFjaChbImdldCIsICJwb3N0Il0sIGZ1bmN0aW9uKGUsIG4pIHsKKyAgICB9
KSwKKyAgICBiLmVhY2goWyJnZXQiLCAicG9zdCJdLCBmdW5jdGlvbihlLCBuKSB7CiAgICAgICAg
IGJbbl0gPSBmdW5jdGlvbihlLCByLCBpLCBvKSB7CiAgICAgICAgICAgICByZXR1cm4gYi5pc0Z1
bmN0aW9uKHIpICYmIChvID0gbyB8fCBpLCBpID0gciwgciA9IHQpLCBiLmFqYXgoewogICAgICAg
ICAgICAgICAgIHVybDogZSwKQEAgLTMxMDEsNyArMzMxOCw4IEBACiAgICAgICAgICAgICAgICAg
c3VjY2VzczogaQogICAgICAgICAgICAgfSkKICAgICAgICAgfQotICAgIH0pLCBiLmV4dGVuZCh7
CisgICAgfSksCisgICAgYi5leHRlbmQoewogICAgICAgICBhY3RpdmU6IDAsCiAgICAgICAgIGxh
c3RNb2RpZmllZDoge30sCiAgICAgICAgIGV0YWc6IHt9LApAQCAtMzE0Niw3ICszMzY0LDggQEAK
ICAgICAgICAgYWpheFByZWZpbHRlcjogSG4oQW4pLAogICAgICAgICBhamF4VHJhbnNwb3J0OiBI
bihqbiksCiAgICAgICAgIGFqYXg6IGZ1bmN0aW9uKGUsIG4pIHsKLSAgICAgICAgICAgICJvYmpl
Y3QiID09IHR5cGVvZiBlICYmIChuID0gZSwgZSA9IHQpLCBuID0gbiB8fCB7fTsKKyAgICAgICAg
ICAgICJvYmplY3QiID09IHR5cGVvZiBlICYmIChuID0gZSwgZSA9IHQpLAorICAgICAgICAgICAg
biA9IG4gfHwge307CiAgICAgICAgICAgICB2YXIgciwKICAgICAgICAgICAgICAgICBpLAogICAg
ICAgICAgICAgICAgIG8sCkBAIC0zMjA2LDcgKzM0MjUsMTUgQEAKICAgICAgICAgICAgICAgICB9
OwogICAgICAgICAgICAgaWYgKGgucHJvbWlzZShOKS5jb21wbGV0ZSA9IGcuYWRkLCBOLnN1Y2Nl
c3MgPSBOLmRvbmUsIE4uZXJyb3IgPSBOLmZhaWwsIHAudXJsID0gKChlIHx8IHAudXJsIHx8IHlu
KSArICIiKS5yZXBsYWNlKHhuLCAiIikucmVwbGFjZShrbiwgbW5bMV0gKyAiLy8iKSwgcC50eXBl
ID0gbi5tZXRob2QgfHwgbi50eXBlIHx8IHAubWV0aG9kIHx8IHAudHlwZSwgcC5kYXRhVHlwZXMg
PSBiLnRyaW0ocC5kYXRhVHlwZSB8fCAiKiIpLnRvTG93ZXJDYXNlKCkubWF0Y2godykgfHwgWyIi
XSwgbnVsbCA9PSBwLmNyb3NzRG9tYWluICYmIChyID0gRW4uZXhlYyhwLnVybC50b0xvd2VyQ2Fz
ZSgpKSwgcC5jcm9zc0RvbWFpbiA9ICEoIXIgfHwgclsxXSA9PT0gbW5bMV0gJiYgclsyXSA9PT0g
bW5bMl0gJiYgKHJbM10gfHwgKCJodHRwOiIgPT09IHJbMV0gPyA4MCA6IDQ0MykpID09IChtblsz
XSB8fCAoImh0dHA6IiA9PT0gbW5bMV0gPyA4MCA6IDQ0MykpKSksIHAuZGF0YSAmJiBwLnByb2Nl
c3NEYXRhICYmICJzdHJpbmciICE9IHR5cGVvZiBwLmRhdGEgJiYgKHAuZGF0YSA9IGIucGFyYW0o
cC5kYXRhLCBwLnRyYWRpdGlvbmFsKSksIHFuKEFuLCBwLCBuLCBOKSwgMiA9PT0geCkKICAgICAg
ICAgICAgICAgICByZXR1cm4gTjsKLSAgICAgICAgICAgIHUgPSBwLmdsb2JhbCwgdSAmJiAwID09
PSBiLmFjdGl2ZSsrICYmIGIuZXZlbnQudHJpZ2dlcigiYWpheFN0YXJ0IiksIHAudHlwZSA9IHAu
dHlwZS50b1VwcGVyQ2FzZSgpLCBwLmhhc0NvbnRlbnQgPSAhQ24udGVzdChwLnR5cGUpLCBvID0g
cC51cmwsIHAuaGFzQ29udGVudCB8fCAocC5kYXRhICYmIChvID0gcC51cmwgKz0gKGJuLnRlc3Qo
bykgPyAiJiIgOiAiPyIpICsgcC5kYXRhLCBkZWxldGUgcC5kYXRhKSwgcC5jYWNoZSA9PT0gITEg
JiYgKHAudXJsID0gd24udGVzdChvKSA/IG8ucmVwbGFjZSh3biwgIiQxXz0iICsgdm4rKykgOiBv
ICsgKGJuLnRlc3QobykgPyAiJiIgOiAiPyIpICsgIl89IiArIHZuKyspKSwgcC5pZk1vZGlmaWVk
ICYmIChiLmxhc3RNb2RpZmllZFtvXSAmJiBOLnNldFJlcXVlc3RIZWFkZXIoIklmLU1vZGlmaWVk
LVNpbmNlIiwgYi5sYXN0TW9kaWZpZWRbb10pLCBiLmV0YWdbb10gJiYgTi5zZXRSZXF1ZXN0SGVh
ZGVyKCJJZi1Ob25lLU1hdGNoIiwgYi5ldGFnW29dKSksIChwLmRhdGEgJiYgcC5oYXNDb250ZW50
ICYmIHAuY29udGVudFR5cGUgIT09ICExIHx8IG4uY29udGVudFR5cGUpICYmIE4uc2V0UmVxdWVz
dEhlYWRlcigiQ29udGVudC1UeXBlIiwgcC5jb250ZW50VHlwZSksIE4uc2V0UmVxdWVzdEhlYWRl
cigiQWNjZXB0IiwgcC5kYXRhVHlwZXNbMF0gJiYgcC5hY2NlcHRzW3AuZGF0YVR5cGVzWzBdXSA/
IHAuYWNjZXB0c1twLmRhdGFUeXBlc1swXV0gKyAoIioiICE9PSBwLmRhdGFUeXBlc1swXSA/ICIs
ICIgKyBEbiArICI7IHE9MC4wMSIgOiAiIikgOiBwLmFjY2VwdHNbIioiXSk7CisgICAgICAgICAg
ICB1ID0gcC5nbG9iYWwsCisgICAgICAgICAgICB1ICYmIDAgPT09IGIuYWN0aXZlKysgJiYgYi5l
dmVudC50cmlnZ2VyKCJhamF4U3RhcnQiKSwKKyAgICAgICAgICAgIHAudHlwZSA9IHAudHlwZS50
b1VwcGVyQ2FzZSgpLAorICAgICAgICAgICAgcC5oYXNDb250ZW50ID0gIUNuLnRlc3QocC50eXBl
KSwKKyAgICAgICAgICAgIG8gPSBwLnVybCwKKyAgICAgICAgICAgIHAuaGFzQ29udGVudCB8fCAo
cC5kYXRhICYmIChvID0gcC51cmwgKz0gKGJuLnRlc3QobykgPyAiJiIgOiAiPyIpICsgcC5kYXRh
LCBkZWxldGUgcC5kYXRhKSwgcC5jYWNoZSA9PT0gITEgJiYgKHAudXJsID0gd24udGVzdChvKSA/
IG8ucmVwbGFjZSh3biwgIiQxXz0iICsgdm4rKykgOiBvICsgKGJuLnRlc3QobykgPyAiJiIgOiAi
PyIpICsgIl89IiArIHZuKyspKSwKKyAgICAgICAgICAgIHAuaWZNb2RpZmllZCAmJiAoYi5sYXN0
TW9kaWZpZWRbb10gJiYgTi5zZXRSZXF1ZXN0SGVhZGVyKCJJZi1Nb2RpZmllZC1TaW5jZSIsIGIu
bGFzdE1vZGlmaWVkW29dKSwgYi5ldGFnW29dICYmIE4uc2V0UmVxdWVzdEhlYWRlcigiSWYtTm9u
ZS1NYXRjaCIsIGIuZXRhZ1tvXSkpLAorICAgICAgICAgICAgKHAuZGF0YSAmJiBwLmhhc0NvbnRl
bnQgJiYgcC5jb250ZW50VHlwZSAhPT0gITEgfHwgbi5jb250ZW50VHlwZSkgJiYgTi5zZXRSZXF1
ZXN0SGVhZGVyKCJDb250ZW50LVR5cGUiLCBwLmNvbnRlbnRUeXBlKSwKKyAgICAgICAgICAgIE4u
c2V0UmVxdWVzdEhlYWRlcigiQWNjZXB0IiwgcC5kYXRhVHlwZXNbMF0gJiYgcC5hY2NlcHRzW3Au
ZGF0YVR5cGVzWzBdXSA/IHAuYWNjZXB0c1twLmRhdGFUeXBlc1swXV0gKyAoIioiICE9PSBwLmRh
dGFUeXBlc1swXSA/ICIsICIgKyBEbiArICI7IHE9MC4wMSIgOiAiIikgOiBwLmFjY2VwdHNbIioi
XSk7CiAgICAgICAgICAgICBmb3IgKGkgaW4gcC5oZWFkZXJzKQogICAgICAgICAgICAgICAgIE4u
c2V0UmVxdWVzdEhlYWRlcihpLCBwLmhlYWRlcnNbaV0pOwogICAgICAgICAgICAgaWYgKHAuYmVm
b3JlU2VuZCAmJiAocC5iZWZvcmVTZW5kLmNhbGwoZiwgTiwgcCkgPT09ICExIHx8IDIgPT09IHgp
KQpAQCAtMzIxOSwxMSArMzQ0NiwxNCBAQAogICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAg
ICBOW2ldKHBbaV0pOwogICAgICAgICAgICAgaWYgKGwgPSBxbihqbiwgcCwgbiwgTikpIHsKLSAg
ICAgICAgICAgICAgICBOLnJlYWR5U3RhdGUgPSAxLCB1ICYmIGQudHJpZ2dlcigiYWpheFNlbmQi
LCBbTiwgcF0pLCBwLmFzeW5jICYmIHAudGltZW91dCA+IDAgJiYgKHMgPSBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIE4ucmVhZHlTdGF0ZSA9IDEsCisgICAgICAgICAg
ICAgICAgdSAmJiBkLnRyaWdnZXIoImFqYXhTZW5kIiwgW04sIHBdKSwKKyAgICAgICAgICAgICAg
ICBwLmFzeW5jICYmIHAudGltZW91dCA+IDAgJiYgKHMgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
ewogICAgICAgICAgICAgICAgICAgICBOLmFib3J0KCJ0aW1lb3V0IikKICAgICAgICAgICAgICAg
ICB9LCBwLnRpbWVvdXQpKTsKICAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAg
ICAgICB4ID0gMSwgbC5zZW5kKHksIGspCisgICAgICAgICAgICAgICAgICAgIHggPSAxLAorICAg
ICAgICAgICAgICAgICAgICBsLnNlbmQoeSwgaykKICAgICAgICAgICAgICAgICB9IGNhdGNoIChD
KSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICghKDIgPiB4KSkKICAgICAgICAgICAgICAgICAg
ICAgICAgIHRocm93IEM7CkBAIC0zMjYwLDcgKzM0OTAsOCBAQAogICAgICAgICBmb3IgKHMgaW4g
YykKICAgICAgICAgICAgIHMgaW4gciAmJiAobltjW3NdXSA9IHJbc10pOwogICAgICAgICB3aGls
ZSAoIioiID09PSBsWzBdKQotICAgICAgICAgICAgbC5zaGlmdCgpLCBvID09PSB0ICYmIChvID0g
ZS5taW1lVHlwZSB8fCBuLmdldFJlc3BvbnNlSGVhZGVyKCJDb250ZW50LVR5cGUiKSk7CisgICAg
ICAgICAgICBsLnNoaWZ0KCksCisgICAgICAgICAgICBvID09PSB0ICYmIChvID0gZS5taW1lVHlw
ZSB8fCBuLmdldFJlc3BvbnNlSGVhZGVyKCJDb250ZW50LVR5cGUiKSk7CiAgICAgICAgIGlmIChv
KQogICAgICAgICAgICAgZm9yIChzIGluIHUpCiAgICAgICAgICAgICAgICAgaWYgKHVbc10gJiYg
dVtzXS50ZXN0KG8pKSB7CkBAIC0zMzM0LDE3ICszNTY1LDI1IEBACiAgICAgICAgICAgICAgICAg
cmV0dXJuIGIuZ2xvYmFsRXZhbChlKSwgZQogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAg
fSksIGIuYWpheFByZWZpbHRlcigic2NyaXB0IiwgZnVuY3Rpb24oZSkgewotICAgICAgICBlLmNh
Y2hlID09PSB0ICYmIChlLmNhY2hlID0gITEpLCBlLmNyb3NzRG9tYWluICYmIChlLnR5cGUgPSAi
R0VUIiwgZS5nbG9iYWwgPSAhMSkKLSAgICB9KSwgYi5hamF4VHJhbnNwb3J0KCJzY3JpcHQiLCBm
dW5jdGlvbihlKSB7CisgICAgfSksCisgICAgYi5hamF4UHJlZmlsdGVyKCJzY3JpcHQiLCBmdW5j
dGlvbihlKSB7CisgICAgICAgIGUuY2FjaGUgPT09IHQgJiYgKGUuY2FjaGUgPSAhMSksCisgICAg
ICAgIGUuY3Jvc3NEb21haW4gJiYgKGUudHlwZSA9ICJHRVQiLCBlLmdsb2JhbCA9ICExKQorICAg
IH0pLAorICAgIGIuYWpheFRyYW5zcG9ydCgic2NyaXB0IiwgZnVuY3Rpb24oZSkgewogICAgICAg
ICBpZiAoZS5jcm9zc0RvbWFpbikgewogICAgICAgICAgICAgdmFyIG4sCiAgICAgICAgICAgICAg
ICAgciA9IG8uaGVhZCB8fCBiKCJoZWFkIilbMF0gfHwgby5kb2N1bWVudEVsZW1lbnQ7CiAgICAg
ICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgIHNlbmQ6IGZ1bmN0aW9uKHQsIGkpIHsK
LSAgICAgICAgICAgICAgICAgICAgbiA9IG8uY3JlYXRlRWxlbWVudCgic2NyaXB0IiksIG4uYXN5
bmMgPSAhMCwgZS5zY3JpcHRDaGFyc2V0ICYmIChuLmNoYXJzZXQgPSBlLnNjcmlwdENoYXJzZXQp
LCBuLnNyYyA9IGUudXJsLCBuLm9ubG9hZCA9IG4ub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rp
b24oZSwgdCkgeworICAgICAgICAgICAgICAgICAgICBuID0gby5jcmVhdGVFbGVtZW50KCJzY3Jp
cHQiKSwKKyAgICAgICAgICAgICAgICAgICAgbi5hc3luYyA9ICEwLAorICAgICAgICAgICAgICAg
ICAgICBlLnNjcmlwdENoYXJzZXQgJiYgKG4uY2hhcnNldCA9IGUuc2NyaXB0Q2hhcnNldCksCisg
ICAgICAgICAgICAgICAgICAgIG4uc3JjID0gZS51cmwsCisgICAgICAgICAgICAgICAgICAgIG4u
b25sb2FkID0gbi5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAodCB8fCAhbi5yZWFkeVN0YXRlIHx8IC9sb2FkZWR8Y29tcGxldGUv
LnRlc3Qobi5yZWFkeVN0YXRlKSkgJiYgKG4ub25sb2FkID0gbi5vbnJlYWR5c3RhdGVjaGFuZ2Ug
PSBudWxsLCBuLnBhcmVudE5vZGUgJiYgbi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG4pLCBuID0g
bnVsbCwgdCB8fCBpKDIwMCwgInN1Y2Nlc3MiKSkKLSAgICAgICAgICAgICAgICAgICAgfSwgci5p
bnNlcnRCZWZvcmUobiwgci5maXJzdENoaWxkKQorICAgICAgICAgICAgICAgICAgICB9LAorICAg
ICAgICAgICAgICAgICAgICByLmluc2VydEJlZm9yZShuLCByLmZpcnN0Q2hpbGQpCiAgICAgICAg
ICAgICAgICAgfSwKICAgICAgICAgICAgICAgICBhYm9ydDogZnVuY3Rpb24oKSB7CiAgICAgICAg
ICAgICAgICAgICAgIG4gJiYgbi5vbmxvYWQodCwgITApCkBAIC0zMzYwLDcgKzM1OTksOCBAQAog
ICAgICAgICAgICAgdmFyIGUgPSBPbi5wb3AoKSB8fCBiLmV4cGFuZG8gKyAiXyIgKyB2bisrOwog
ICAgICAgICAgICAgcmV0dXJuIHRoaXNbZV0gPSAhMCwgZQogICAgICAgICB9Ci0gICAgfSksIGIu
YWpheFByZWZpbHRlcigianNvbiBqc29ucCIsIGZ1bmN0aW9uKG4sIHIsIGkpIHsKKyAgICB9KSwK
KyAgICBiLmFqYXhQcmVmaWx0ZXIoImpzb24ganNvbnAiLCBmdW5jdGlvbihuLCByLCBpKSB7CiAg
ICAgICAgIHZhciBvLAogICAgICAgICAgICAgYSwKICAgICAgICAgICAgIHMsCkBAIC0zMzcwLDcg
KzM2MTAsMTAgQEAKICAgICAgICAgfSwgbi5kYXRhVHlwZXNbMF0gPSAianNvbiIsIGEgPSBlW29d
LCBlW29dID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICBzID0gYXJndW1lbnRzCiAgICAgICAg
IH0sIGkuYWx3YXlzKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgZVtvXSA9IGEsIG5bb10gJiYg
KG4uanNvbnBDYWxsYmFjayA9IHIuanNvbnBDYWxsYmFjaywgT24ucHVzaChvKSksIHMgJiYgYi5p
c0Z1bmN0aW9uKGEpICYmIGEoc1swXSksIHMgPSBhID0gdAorICAgICAgICAgICAgZVtvXSA9IGEs
CisgICAgICAgICAgICBuW29dICYmIChuLmpzb25wQ2FsbGJhY2sgPSByLmpzb25wQ2FsbGJhY2ss
IE9uLnB1c2gobykpLAorICAgICAgICAgICAgcyAmJiBiLmlzRnVuY3Rpb24oYSkgJiYgYShzWzBd
KSwKKyAgICAgICAgICAgIHMgPSBhID0gdAogICAgICAgICB9KSwgInNjcmlwdCIpIDogdAogICAg
IH0pOwogICAgIHZhciBQbiwKQEAgLTMzOTMsNyArMzYzNiwxMSBAQAogICAgIH0KICAgICBiLmFq
YXhTZXR0aW5ncy54aHIgPSBlLkFjdGl2ZVhPYmplY3QgPyBmdW5jdGlvbigpIHsKICAgICAgICAg
cmV0dXJuICF0aGlzLmlzTG9jYWwgJiYgSW4oKSB8fCB6bigpCi0gICAgfSA6IEluLCBSbiA9IGIu
YWpheFNldHRpbmdzLnhocigpLCBiLnN1cHBvcnQuY29ycyA9ICEhUm4gJiYgIndpdGhDcmVkZW50
aWFscyIgaW4gUm4sIFJuID0gYi5zdXBwb3J0LmFqYXggPSAhIVJuLCBSbiAmJiBiLmFqYXhUcmFu
c3BvcnQoZnVuY3Rpb24obikgeworICAgIH0gOiBJbiwKKyAgICBSbiA9IGIuYWpheFNldHRpbmdz
LnhocigpLAorICAgIGIuc3VwcG9ydC5jb3JzID0gISFSbiAmJiAid2l0aENyZWRlbnRpYWxzIiBp
biBSbiwKKyAgICBSbiA9IGIuc3VwcG9ydC5hamF4ID0gISFSbiwKKyAgICBSbiAmJiBiLmFqYXhU
cmFuc3BvcnQoZnVuY3Rpb24obikgewogICAgICAgICBpZiAoIW4uY3Jvc3NEb21haW4gfHwgYi5z
dXBwb3J0LmNvcnMpIHsKICAgICAgICAgICAgIHZhciByOwogICAgICAgICAgICAgcmV0dXJuIHsK
QEAgLTM0MDQsMTIgKzM2NTEsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgaWYgKG4udXNlcm5h
bWUgPyB1Lm9wZW4obi50eXBlLCBuLnVybCwgbi5hc3luYywgbi51c2VybmFtZSwgbi5wYXNzd29y
ZCkgOiB1Lm9wZW4obi50eXBlLCBuLnVybCwgbi5hc3luYyksIG4ueGhyRmllbGRzKQogICAgICAg
ICAgICAgICAgICAgICAgICAgZm9yIChzIGluIG4ueGhyRmllbGRzKQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVbc10gPSBuLnhockZpZWxkc1tzXTsKLSAgICAgICAgICAgICAgICAgICAg
bi5taW1lVHlwZSAmJiB1Lm92ZXJyaWRlTWltZVR5cGUgJiYgdS5vdmVycmlkZU1pbWVUeXBlKG4u
bWltZVR5cGUpLCBuLmNyb3NzRG9tYWluIHx8IGlbIlgtUmVxdWVzdGVkLVdpdGgiXSB8fCAoaVsi
WC1SZXF1ZXN0ZWQtV2l0aCJdID0gIlhNTEh0dHBSZXF1ZXN0Iik7CisgICAgICAgICAgICAgICAg
ICAgIG4ubWltZVR5cGUgJiYgdS5vdmVycmlkZU1pbWVUeXBlICYmIHUub3ZlcnJpZGVNaW1lVHlw
ZShuLm1pbWVUeXBlKSwKKyAgICAgICAgICAgICAgICAgICAgbi5jcm9zc0RvbWFpbiB8fCBpWyJY
LVJlcXVlc3RlZC1XaXRoIl0gfHwgKGlbIlgtUmVxdWVzdGVkLVdpdGgiXSA9ICJYTUxIdHRwUmVx
dWVzdCIpOwogICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAg
ICAgZm9yIChzIGluIGkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdS5zZXRSZXF1ZXN0
SGVhZGVyKHMsIGlbc10pCiAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGwpIHt9Ci0gICAg
ICAgICAgICAgICAgICAgIHUuc2VuZChuLmhhc0NvbnRlbnQgJiYgbi5kYXRhIHx8IG51bGwpLCBy
ID0gZnVuY3Rpb24oZSwgaSkgeworICAgICAgICAgICAgICAgICAgICB1LnNlbmQobi5oYXNDb250
ZW50ICYmIG4uZGF0YSB8fCBudWxsKSwKKyAgICAgICAgICAgICAgICAgICAgciA9IGZ1bmN0aW9u
KGUsIGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYywKQEAgLTM0MTks
NyArMzY2OCwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9IHQs
IGEgJiYgKHUub25yZWFkeXN0YXRlY2hhbmdlID0gYi5ub29wLCAkbiAmJiBkZWxldGUgUG5bYV0p
LCBpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNCAhPT0gdS5yZWFkeVN0
YXRlICYmIHUuYWJvcnQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0ge30sIHMgPSB1LnN0YXR1
cywgbCA9IHUuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCksICJzdHJpbmciID09IHR5cGVvZiB1LnJl
c3BvbnNlVGV4dCAmJiAocC50ZXh0ID0gdS5yZXNwb25zZVRleHQpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcCA9IHt9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcyA9IHUuc3RhdHVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbCA9IHUuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAic3RyaW5nIiA9PSB0eXBlb2YgdS5yZXNwb25zZVRleHQgJiYgKHAudGV4
dCA9IHUucmVzcG9uc2VUZXh0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHUuc3Rh
dHVzVGV4dAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZikg
ewpAQCAtMzQzMSw3ICszNjgzLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpIHx8
IG8oLTEsIGQpCiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg
ICAgICBwICYmIG8ocywgYywgcCwgbCkKLSAgICAgICAgICAgICAgICAgICAgfSwgbi5hc3luYyA/
IDQgPT09IHUucmVhZHlTdGF0ZSA/IHNldFRpbWVvdXQocikgOiAoYSA9ICsrV24sICRuICYmIChQ
biB8fCAoUG4gPSB7fSwgYihlKS51bmxvYWQoJG4pKSwgUG5bYV0gPSByKSwgdS5vbnJlYWR5c3Rh
dGVjaGFuZ2UgPSByKSA6IHIoKQorICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAg
ICAgICAgICBuLmFzeW5jID8gNCA9PT0gdS5yZWFkeVN0YXRlID8gc2V0VGltZW91dChyKSA6IChh
ID0gKytXbiwgJG4gJiYgKFBuIHx8IChQbiA9IHt9LCBiKGUpLnVubG9hZCgkbikpLCBQblthXSA9
IHIpLCB1Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9IHIpIDogcigpCiAgICAgICAgICAgICAgICAgfSwK
ICAgICAgICAgICAgICAgICBhYm9ydDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAg
IHIgJiYgcih0LCAhMCkKQEAgLTM0NTgsMTAgKzM3MTEsMTQgQEAKICAgICAgICAgICAgICAgICBp
ZiAobykgewogICAgICAgICAgICAgICAgICAgICBpZiAobiA9ICtvWzJdLCByID0gb1szXSB8fCAo
Yi5jc3NOdW1iZXJbZV0gPyAiIiA6ICJweCIpLCAicHgiICE9PSByICYmIHMpIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgIHMgPSBiLmNzcyhpLmVsZW0sIGUsICEwKSB8fCBuIHx8IDE7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBkbyB1ID0gdSB8fCAiLjUiLCBzIC89IHUsIGIuc3R5bGUoaS5l
bGVtLCBlLCBzICsgcik7CisgICAgICAgICAgICAgICAgICAgICAgICBkbyB1ID0gdSB8fCAiLjUi
LAorICAgICAgICAgICAgICAgICAgICAgICAgcyAvPSB1LAorICAgICAgICAgICAgICAgICAgICAg
ICAgYi5zdHlsZShpLmVsZW0sIGUsIHMgKyByKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHdo
aWxlICh1ICE9PSAodSA9IGkuY3VyKCkgLyBhKSAmJiAxICE9PSB1ICYmIC0tbCkKICAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBpLnVuaXQgPSByLCBpLnN0YXJ0ID0g
cywgaS5lbmQgPSBvWzFdID8gcyArIChvWzFdICsgMSkgKiBuIDogbgorICAgICAgICAgICAgICAg
ICAgICBpLnVuaXQgPSByLAorICAgICAgICAgICAgICAgICAgICBpLnN0YXJ0ID0gcywKKyAgICAg
ICAgICAgICAgICAgICAgaS5lbmQgPSBvWzFdID8gcyArIChvWzFdICsgMSkgKiBuIDogbgogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICByZXR1cm4gaQogICAgICAgICAgICAgfV0K
QEAgLTM1NDUsNyArMzgwMiw4IEBACiAgICAgICAgICAgICBhOwogICAgICAgICBmb3IgKGkgaW4g
ZSkKICAgICAgICAgICAgIGlmIChyID0gYi5jYW1lbENhc2UoaSksIG8gPSB0W3JdLCBuID0gZVtp
XSwgYi5pc0FycmF5KG4pICYmIChvID0gblsxXSwgbiA9IGVbaV0gPSBuWzBdKSwgaSAhPT0gciAm
JiAoZVtyXSA9IG4sIGRlbGV0ZSBlW2ldKSwgYSA9IGIuY3NzSG9va3Nbcl0sIGEgJiYgImV4cGFu
ZCIgaW4gYSkgewotICAgICAgICAgICAgICAgIG4gPSBhLmV4cGFuZChuKSwgZGVsZXRlIGVbcl07
CisgICAgICAgICAgICAgICAgbiA9IGEuZXhwYW5kKG4pLAorICAgICAgICAgICAgICAgIGRlbGV0
ZSBlW3JdOwogICAgICAgICAgICAgICAgIGZvciAoaSBpbiBuKQogICAgICAgICAgICAgICAgICAg
ICBpIGluIGUgfHwgKGVbaV0gPSBuW2ldLCB0W2ldID0gbykKICAgICAgICAgICAgIH0gZWxzZQpA
QCAtMzU1OCw3ICszODE2LDkgQEAKICAgICAgICAgICAgICAgICByID0gMCwKICAgICAgICAgICAg
ICAgICBpID0gZS5sZW5ndGg7CiAgICAgICAgICAgICBmb3IgKDsgaSA+IHI7IHIrKykKLSAgICAg
ICAgICAgICAgICBuID0gZVtyXSwgUW5bbl0gPSBRbltuXSB8fCBbXSwgUW5bbl0udW5zaGlmdCh0
KQorICAgICAgICAgICAgICAgIG4gPSBlW3JdLAorICAgICAgICAgICAgICAgIFFuW25dID0gUW5b
bl0gfHwgW10sCisgICAgICAgICAgICAgICAgUW5bbl0udW5zaGlmdCh0KQogICAgICAgICB9LAog
ICAgICAgICBwcmVmaWx0ZXI6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgIHQgPyBHbi51
bnNoaWZ0KGUpIDogR24ucHVzaChlKQpAQCAtMzU4MywxMCArMzg0MywxNSBAQAogICAgICAgICAg
ICAgYy51bnF1ZXVlZCB8fCBwKCkKICAgICAgICAgfSksIGMudW5xdWV1ZWQrKywgZi5hbHdheXMo
ZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICBmLmFsd2F5cyhmdW5jdGlvbigpIHsKLSAgICAgICAg
ICAgICAgICBjLnVucXVldWVkLS0sIGIucXVldWUoZSwgImZ4IikubGVuZ3RoIHx8IGMuZW1wdHku
ZmlyZSgpCisgICAgICAgICAgICAgICAgYy51bnF1ZXVlZC0tLAorICAgICAgICAgICAgICAgIGIu
cXVldWUoZSwgImZ4IikubGVuZ3RoIHx8IGMuZW1wdHkuZmlyZSgpCiAgICAgICAgICAgICB9KQot
ICAgICAgICB9KSksIDEgPT09IGUubm9kZVR5cGUgJiYgKCJoZWlnaHQiIGluIHQgfHwgIndpZHRo
IiBpbiB0KSAmJiAobi5vdmVyZmxvdyA9IFtkLm92ZXJmbG93LCBkLm92ZXJmbG93WCwgZC5vdmVy
Zmxvd1ldLCAiaW5saW5lIiA9PT0gYi5jc3MoZSwgImRpc3BsYXkiKSAmJiAibm9uZSIgPT09IGIu
Y3NzKGUsICJmbG9hdCIpICYmIChiLnN1cHBvcnQuaW5saW5lQmxvY2tOZWVkc0xheW91dCAmJiAi
aW5saW5lIiAhPT0gdW4oZS5ub2RlTmFtZSkgPyBkLnpvb20gPSAxIDogZC5kaXNwbGF5ID0gImlu
bGluZS1ibG9jayIpKSwgbi5vdmVyZmxvdyAmJiAoZC5vdmVyZmxvdyA9ICJoaWRkZW4iLCBiLnN1
cHBvcnQuc2hyaW5rV3JhcEJsb2NrcyB8fCBmLmFsd2F5cyhmdW5jdGlvbigpIHsKLSAgICAgICAg
ICAgIGQub3ZlcmZsb3cgPSBuLm92ZXJmbG93WzBdLCBkLm92ZXJmbG93WCA9IG4ub3ZlcmZsb3db
MV0sIGQub3ZlcmZsb3dZID0gbi5vdmVyZmxvd1syXQorICAgICAgICB9KSksCisgICAgICAgIDEg
PT09IGUubm9kZVR5cGUgJiYgKCJoZWlnaHQiIGluIHQgfHwgIndpZHRoIiBpbiB0KSAmJiAobi5v
dmVyZmxvdyA9IFtkLm92ZXJmbG93LCBkLm92ZXJmbG93WCwgZC5vdmVyZmxvd1ldLCAiaW5saW5l
IiA9PT0gYi5jc3MoZSwgImRpc3BsYXkiKSAmJiAibm9uZSIgPT09IGIuY3NzKGUsICJmbG9hdCIp
ICYmIChiLnN1cHBvcnQuaW5saW5lQmxvY2tOZWVkc0xheW91dCAmJiAiaW5saW5lIiAhPT0gdW4o
ZS5ub2RlTmFtZSkgPyBkLnpvb20gPSAxIDogZC5kaXNwbGF5ID0gImlubGluZS1ibG9jayIpKSwK
KyAgICAgICAgbi5vdmVyZmxvdyAmJiAoZC5vdmVyZmxvdyA9ICJoaWRkZW4iLCBiLnN1cHBvcnQu
c2hyaW5rV3JhcEJsb2NrcyB8fCBmLmFsd2F5cyhmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGQu
b3ZlcmZsb3cgPSBuLm92ZXJmbG93WzBdLAorICAgICAgICAgICAgZC5vdmVyZmxvd1ggPSBuLm92
ZXJmbG93WzFdLAorICAgICAgICAgICAgZC5vdmVyZmxvd1kgPSBuLm92ZXJmbG93WzJdCiAgICAg
ICAgIH0pKTsKICAgICAgICAgZm9yIChpIGluIHQpCiAgICAgICAgICAgICBpZiAoYSA9IHRbaV0s
IFZuLmV4ZWMoYSkpIHsKQEAgLTM1OTUsMjUgKzM4NjAsMzkgQEAKICAgICAgICAgICAgICAgICBn
LnB1c2goaSkKICAgICAgICAgICAgIH0KICAgICAgICAgaWYgKG8gPSBnLmxlbmd0aCkgewotICAg
ICAgICAgICAgcyA9IGIuX2RhdGEoZSwgImZ4c2hvdyIpIHx8IGIuX2RhdGEoZSwgImZ4c2hvdyIs
IHt9KSwgImhpZGRlbiIgaW4gcyAmJiAobSA9IHMuaGlkZGVuKSwgdSAmJiAocy5oaWRkZW4gPSAh
bSksIG0gPyBiKGUpLnNob3coKSA6IGYuZG9uZShmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHMg
PSBiLl9kYXRhKGUsICJmeHNob3ciKSB8fCBiLl9kYXRhKGUsICJmeHNob3ciLCB7fSksCisgICAg
ICAgICAgICAiaGlkZGVuIiBpbiBzICYmIChtID0gcy5oaWRkZW4pLAorICAgICAgICAgICAgdSAm
JiAocy5oaWRkZW4gPSAhbSksCisgICAgICAgICAgICBtID8gYihlKS5zaG93KCkgOiBmLmRvbmUo
ZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgYihlKS5oaWRlKCkKLSAgICAgICAgICAgIH0p
LCBmLmRvbmUoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB9KSwKKyAgICAgICAgICAgIGYuZG9u
ZShmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICB2YXIgdDsKICAgICAgICAgICAgICAgICBi
Ll9yZW1vdmVEYXRhKGUsICJmeHNob3ciKTsKICAgICAgICAgICAgICAgICBmb3IgKHQgaW4gaCkK
ICAgICAgICAgICAgICAgICAgICAgYi5zdHlsZShlLCB0LCBoW3RdKQogICAgICAgICAgICAgfSk7
CiAgICAgICAgICAgICBmb3IgKGkgPSAwOyBvID4gaTsgaSsrKQotICAgICAgICAgICAgICAgIHIg
PSBnW2ldLCBsID0gZi5jcmVhdGVUd2VlbihyLCBtID8gc1tyXSA6IDApLCBoW3JdID0gc1tyXSB8
fCBiLnN0eWxlKGUsIHIpLCByIGluIHMgfHwgKHNbcl0gPSBsLnN0YXJ0LCBtICYmIChsLmVuZCA9
IGwuc3RhcnQsIGwuc3RhcnQgPSAid2lkdGgiID09PSByIHx8ICJoZWlnaHQiID09PSByID8gMSA6
IDApKQorICAgICAgICAgICAgICAgIHIgPSBnW2ldLAorICAgICAgICAgICAgICAgIGwgPSBmLmNy
ZWF0ZVR3ZWVuKHIsIG0gPyBzW3JdIDogMCksCisgICAgICAgICAgICAgICAgaFtyXSA9IHNbcl0g
fHwgYi5zdHlsZShlLCByKSwKKyAgICAgICAgICAgICAgICByIGluIHMgfHwgKHNbcl0gPSBsLnN0
YXJ0LCBtICYmIChsLmVuZCA9IGwuc3RhcnQsIGwuc3RhcnQgPSAid2lkdGgiID09PSByIHx8ICJo
ZWlnaHQiID09PSByID8gMSA6IDApKQogICAgICAgICB9CiAgICAgfQogICAgIGZ1bmN0aW9uIHJy
KGUsIHQsIG4sIHIsIGkpIHsKICAgICAgICAgcmV0dXJuIG5ldyByci5wcm90b3R5cGUuaW5pdChl
LCB0LCBuLCByLCBpKQogICAgIH0KLSAgICBiLlR3ZWVuID0gcnIsIHJyLnByb3RvdHlwZSA9IHsK
KyAgICBiLlR3ZWVuID0gcnIsCisgICAgcnIucHJvdG90eXBlID0gewogICAgICAgICBjb25zdHJ1
Y3RvcjogcnIsCiAgICAgICAgIGluaXQ6IGZ1bmN0aW9uKGUsIHQsIG4sIHIsIGksIG8pIHsKLSAg
ICAgICAgICAgIHRoaXMuZWxlbSA9IGUsIHRoaXMucHJvcCA9IG4sIHRoaXMuZWFzaW5nID0gaSB8
fCAic3dpbmciLCB0aGlzLm9wdGlvbnMgPSB0LCB0aGlzLnN0YXJ0ID0gdGhpcy5ub3cgPSB0aGlz
LmN1cigpLCB0aGlzLmVuZCA9IHIsIHRoaXMudW5pdCA9IG8gfHwgKGIuY3NzTnVtYmVyW25dID8g
IiIgOiAicHgiKQorICAgICAgICAgICAgdGhpcy5lbGVtID0gZSwKKyAgICAgICAgICAgIHRoaXMu
cHJvcCA9IG4sCisgICAgICAgICAgICB0aGlzLmVhc2luZyA9IGkgfHwgInN3aW5nIiwKKyAgICAg
ICAgICAgIHRoaXMub3B0aW9ucyA9IHQsCisgICAgICAgICAgICB0aGlzLnN0YXJ0ID0gdGhpcy5u
b3cgPSB0aGlzLmN1cigpLAorICAgICAgICAgICAgdGhpcy5lbmQgPSByLAorICAgICAgICAgICAg
dGhpcy51bml0ID0gbyB8fCAoYi5jc3NOdW1iZXJbbl0gPyAiIiA6ICJweCIpCiAgICAgICAgIH0s
CiAgICAgICAgIGN1cjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICB2YXIgZSA9IHJyLnByb3BI
b29rc1t0aGlzLnByb3BdOwpAQCAtMzYyNCw3ICszOTAzLDkgQEAKICAgICAgICAgICAgICAgICBu
ID0gcnIucHJvcEhvb2tzW3RoaXMucHJvcF07CiAgICAgICAgICAgICByZXR1cm4gdGhpcy5wb3Mg
PSB0ID0gdGhpcy5vcHRpb25zLmR1cmF0aW9uID8gYi5lYXNpbmdbdGhpcy5lYXNpbmddKGUsIHRo
aXMub3B0aW9ucy5kdXJhdGlvbiAqIGUsIDAsIDEsIHRoaXMub3B0aW9ucy5kdXJhdGlvbikgOiBl
LCB0aGlzLm5vdyA9ICh0aGlzLmVuZCAtIHRoaXMuc3RhcnQpICogdCArIHRoaXMuc3RhcnQsIHRo
aXMub3B0aW9ucy5zdGVwICYmIHRoaXMub3B0aW9ucy5zdGVwLmNhbGwodGhpcy5lbGVtLCB0aGlz
Lm5vdywgdGhpcyksIG4gJiYgbi5zZXQgPyBuLnNldCh0aGlzKSA6IHJyLnByb3BIb29rcy5fZGVm
YXVsdC5zZXQodGhpcyksIHRoaXMKICAgICAgICAgfQotICAgIH0sIHJyLnByb3RvdHlwZS5pbml0
LnByb3RvdHlwZSA9IHJyLnByb3RvdHlwZSwgcnIucHJvcEhvb2tzID0geworICAgIH0sCisgICAg
cnIucHJvdG90eXBlLmluaXQucHJvdG90eXBlID0gcnIucHJvdG90eXBlLAorICAgIHJyLnByb3BI
b29rcyA9IHsKICAgICAgICAgX2RlZmF1bHQ6IHsKICAgICAgICAgICAgIGdldDogZnVuY3Rpb24o
ZSkgewogICAgICAgICAgICAgICAgIHZhciB0OwpAQCAtMzYzNCwxNiArMzkxNSwxOSBAQAogICAg
ICAgICAgICAgICAgIGIuZnguc3RlcFtlLnByb3BdID8gYi5meC5zdGVwW2UucHJvcF0oZSkgOiBl
LmVsZW0uc3R5bGUgJiYgKG51bGwgIT0gZS5lbGVtLnN0eWxlW2IuY3NzUHJvcHNbZS5wcm9wXV0g
fHwgYi5jc3NIb29rc1tlLnByb3BdKSA/IGIuc3R5bGUoZS5lbGVtLCBlLnByb3AsIGUubm93ICsg
ZS51bml0KSA6IGUuZWxlbVtlLnByb3BdID0gZS5ub3cKICAgICAgICAgICAgIH0KICAgICAgICAg
fQotICAgIH0sIHJyLnByb3BIb29rcy5zY3JvbGxUb3AgPSByci5wcm9wSG9va3Muc2Nyb2xsTGVm
dCA9IHsKKyAgICB9LAorICAgIHJyLnByb3BIb29rcy5zY3JvbGxUb3AgPSByci5wcm9wSG9va3Mu
c2Nyb2xsTGVmdCA9IHsKICAgICAgICAgc2V0OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICBl
LmVsZW0ubm9kZVR5cGUgJiYgZS5lbGVtLnBhcmVudE5vZGUgJiYgKGUuZWxlbVtlLnByb3BdID0g
ZS5ub3cpCiAgICAgICAgIH0KLSAgICB9LCBiLmVhY2goWyJ0b2dnbGUiLCAic2hvdyIsICJoaWRl
Il0sIGZ1bmN0aW9uKGUsIHQpIHsKKyAgICB9LAorICAgIGIuZWFjaChbInRvZ2dsZSIsICJzaG93
IiwgImhpZGUiXSwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICB2YXIgbiA9IGIuZm5bdF07CiAg
ICAgICAgIGIuZm5bdF0gPSBmdW5jdGlvbihlLCByLCBpKSB7CiAgICAgICAgICAgICByZXR1cm4g
bnVsbCA9PSBlIHx8ICJib29sZWFuIiA9PSB0eXBlb2YgZSA/IG4uYXBwbHkodGhpcywgYXJndW1l
bnRzKSA6IHRoaXMuYW5pbWF0ZShpcih0LCAhMCksIGUsIHIsIGkpCiAgICAgICAgIH0KLSAgICB9
KSwgYi5mbi5leHRlbmQoeworICAgIH0pLAorICAgIGIuZm4uZXh0ZW5kKHsKICAgICAgICAgZmFk
ZVRvOiBmdW5jdGlvbihlLCB0LCBuLCByKSB7CiAgICAgICAgICAgICByZXR1cm4gdGhpcy5maWx0
ZXIobm4pLmNzcygib3BhY2l0eSIsIDApLnNob3coKS5lbmQoKS5hbmltYXRlKHsKICAgICAgICAg
ICAgICAgICBvcGFjaXR5OiB0CkBAIC0zNjU2LDE0ICszOTQwLDE2IEBACiAgICAgICAgICAgICAg
ICAgICAgIHZhciB0ID0gZXIodGhpcywgYi5leHRlbmQoe30sIGUpLCBvKTsKICAgICAgICAgICAg
ICAgICAgICAgYS5maW5pc2ggPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
IHQuc3RvcCghMCkKLSAgICAgICAgICAgICAgICAgICAgfSwgKGkgfHwgYi5fZGF0YSh0aGlzLCAi
ZmluaXNoIikpICYmIHQuc3RvcCghMCkKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgICAgICAgICAgKGkgfHwgYi5fZGF0YSh0aGlzLCAiZmluaXNoIikpICYmIHQuc3RvcCghMCkK
ICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgcmV0dXJuIGEuZmluaXNoID0gYSwgaSB8
fCBvLnF1ZXVlID09PSAhMSA/IHRoaXMuZWFjaChhKSA6IHRoaXMucXVldWUoby5xdWV1ZSwgYSkK
ICAgICAgICAgfSwKICAgICAgICAgc3RvcDogZnVuY3Rpb24oZSwgbiwgcikgewogICAgICAgICAg
ICAgdmFyIGkgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgdmFyIHQgPSBlLnN0b3A7
Ci0gICAgICAgICAgICAgICAgZGVsZXRlIGUuc3RvcCwgdChyKQorICAgICAgICAgICAgICAgIGRl
bGV0ZSBlLnN0b3AsCisgICAgICAgICAgICAgICAgdChyKQogICAgICAgICAgICAgfTsKICAgICAg
ICAgICAgIHJldHVybiAic3RyaW5nIiAhPSB0eXBlb2YgZSAmJiAociA9IG4sIG4gPSBlLCBlID0g
dCksIG4gJiYgZSAhPT0gITEgJiYgdGhpcy5xdWV1ZShlIHx8ICJmeCIsIFtdKSwgdGhpcy5lYWNo
KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgIHZhciB0ID0gITAsCkBAIC0zNzAzLDcgKzM5
ODksOCBAQAogICAgICAgICAgICAgfSwKICAgICAgICAgICAgIGkgPSAwOwogICAgICAgICBmb3Ig
KHQgPSB0ID8gMSA6IDA7IDQgPiBpOyBpICs9IDIgLSB0KQotICAgICAgICAgICAgbiA9IFp0W2ld
LCByWyJtYXJnaW4iICsgbl0gPSByWyJwYWRkaW5nIiArIG5dID0gZTsKKyAgICAgICAgICAgIG4g
PSBadFtpXSwKKyAgICAgICAgICAgIHJbIm1hcmdpbiIgKyBuXSA9IHJbInBhZGRpbmciICsgbl0g
PSBlOwogICAgICAgICByZXR1cm4gdCAmJiAoci5vcGFjaXR5ID0gci53aWR0aCA9IGUpLCByCiAg
ICAgfQogICAgIGIuZWFjaCh7CkBAIC0zNzIzLDQ0ICs0MDEwLDYxIEBACiAgICAgICAgIGIuZm5b
ZV0gPSBmdW5jdGlvbihlLCBuLCByKSB7CiAgICAgICAgICAgICByZXR1cm4gdGhpcy5hbmltYXRl
KHQsIGUsIG4sIHIpCiAgICAgICAgIH0KLSAgICB9KSwgYi5zcGVlZCA9IGZ1bmN0aW9uKGUsIHQs
IG4pIHsKKyAgICB9KSwKKyAgICBiLnNwZWVkID0gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAg
ICB2YXIgciA9IGUgJiYgIm9iamVjdCIgPT0gdHlwZW9mIGUgPyBiLmV4dGVuZCh7fSwgZSkgOiB7
CiAgICAgICAgICAgICBjb21wbGV0ZTogbiB8fCAhbiAmJiB0IHx8IGIuaXNGdW5jdGlvbihlKSAm
JiBlLAogICAgICAgICAgICAgZHVyYXRpb246IGUsCiAgICAgICAgICAgICBlYXNpbmc6IG4gJiYg
dCB8fCB0ICYmICFiLmlzRnVuY3Rpb24odCkgJiYgdAogICAgICAgICB9OwogICAgICAgICByZXR1
cm4gci5kdXJhdGlvbiA9IGIuZngub2ZmID8gMCA6ICJudW1iZXIiID09IHR5cGVvZiByLmR1cmF0
aW9uID8gci5kdXJhdGlvbiA6IHIuZHVyYXRpb24gaW4gYi5meC5zcGVlZHMgPyBiLmZ4LnNwZWVk
c1tyLmR1cmF0aW9uXSA6IGIuZnguc3BlZWRzLl9kZWZhdWx0LCAobnVsbCA9PSByLnF1ZXVlIHx8
IHIucXVldWUgPT09ICEwKSAmJiAoci5xdWV1ZSA9ICJmeCIpLCByLm9sZCA9IHIuY29tcGxldGUs
IHIuY29tcGxldGUgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGIuaXNGdW5jdGlvbihyLm9s
ZCkgJiYgci5vbGQuY2FsbCh0aGlzKSwgci5xdWV1ZSAmJiBiLmRlcXVldWUodGhpcywgci5xdWV1
ZSkKKyAgICAgICAgICAgIGIuaXNGdW5jdGlvbihyLm9sZCkgJiYgci5vbGQuY2FsbCh0aGlzKSwK
KyAgICAgICAgICAgIHIucXVldWUgJiYgYi5kZXF1ZXVlKHRoaXMsIHIucXVldWUpCiAgICAgICAg
IH0sIHIKLSAgICB9LCBiLmVhc2luZyA9IHsKKyAgICB9LAorICAgIGIuZWFzaW5nID0gewogICAg
ICAgICBsaW5lYXI6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAg
IH0sCiAgICAgICAgIHN3aW5nOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICByZXR1cm4gLjUg
LSBNYXRoLmNvcyhlICogTWF0aC5QSSkgLyAyCiAgICAgICAgIH0KLSAgICB9LCBiLnRpbWVycyA9
IFtdLCBiLmZ4ID0gcnIucHJvdG90eXBlLmluaXQsIGIuZngudGljayA9IGZ1bmN0aW9uKCkgewor
ICAgIH0sCisgICAgYi50aW1lcnMgPSBbXSwKKyAgICBiLmZ4ID0gcnIucHJvdG90eXBlLmluaXQs
CisgICAgYi5meC50aWNrID0gZnVuY3Rpb24oKSB7CiAgICAgICAgIHZhciBlLAogICAgICAgICAg
ICAgbiA9IGIudGltZXJzLAogICAgICAgICAgICAgciA9IDA7CiAgICAgICAgIGZvciAoWG4gPSBi
Lm5vdygpOyBuLmxlbmd0aCA+IHI7IHIrKykKLSAgICAgICAgICAgIGUgPSBuW3JdLCBlKCkgfHwg
bltyXSAhPT0gZSB8fCBuLnNwbGljZShyLS0sIDEpOwotICAgICAgICBuLmxlbmd0aCB8fCBiLmZ4
LnN0b3AoKSwgWG4gPSB0Ci0gICAgfSwgYi5meC50aW1lciA9IGZ1bmN0aW9uKGUpIHsKKyAgICAg
ICAgICAgIGUgPSBuW3JdLAorICAgICAgICAgICAgZSgpIHx8IG5bcl0gIT09IGUgfHwgbi5zcGxp
Y2Uoci0tLCAxKTsKKyAgICAgICAgbi5sZW5ndGggfHwgYi5meC5zdG9wKCksCisgICAgICAgIFhu
ID0gdAorICAgIH0sCisgICAgYi5meC50aW1lciA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgZSgp
ICYmIGIudGltZXJzLnB1c2goZSkgJiYgYi5meC5zdGFydCgpCi0gICAgfSwgYi5meC5pbnRlcnZh
bCA9IDEzLCBiLmZ4LnN0YXJ0ID0gZnVuY3Rpb24oKSB7CisgICAgfSwKKyAgICBiLmZ4LmludGVy
dmFsID0gMTMsCisgICAgYi5meC5zdGFydCA9IGZ1bmN0aW9uKCkgewogICAgICAgICBVbiB8fCAo
VW4gPSBzZXRJbnRlcnZhbChiLmZ4LnRpY2ssIGIuZnguaW50ZXJ2YWwpKQotICAgIH0sIGIuZngu
c3RvcCA9IGZ1bmN0aW9uKCkgewotICAgICAgICBjbGVhckludGVydmFsKFVuKSwgVW4gPSBudWxs
Ci0gICAgfSwgYi5meC5zcGVlZHMgPSB7CisgICAgfSwKKyAgICBiLmZ4LnN0b3AgPSBmdW5jdGlv
bigpIHsKKyAgICAgICAgY2xlYXJJbnRlcnZhbChVbiksCisgICAgICAgIFVuID0gbnVsbAorICAg
IH0sCisgICAgYi5meC5zcGVlZHMgPSB7CiAgICAgICAgIHNsb3c6IDYwMCwKICAgICAgICAgZmFz
dDogMjAwLAogICAgICAgICBfZGVmYXVsdDogNDAwCi0gICAgfSwgYi5meC5zdGVwID0ge30sIGIu
ZXhwciAmJiBiLmV4cHIuZmlsdGVycyAmJiAoYi5leHByLmZpbHRlcnMuYW5pbWF0ZWQgPSBmdW5j
dGlvbihlKSB7CisgICAgfSwKKyAgICBiLmZ4LnN0ZXAgPSB7fSwKKyAgICBiLmV4cHIgJiYgYi5l
eHByLmZpbHRlcnMgJiYgKGIuZXhwci5maWx0ZXJzLmFuaW1hdGVkID0gZnVuY3Rpb24oZSkgewog
ICAgICAgICByZXR1cm4gYi5ncmVwKGIudGltZXJzLCBmdW5jdGlvbih0KSB7CiAgICAgICAgICAg
ICByZXR1cm4gZSA9PT0gdC5lbGVtCiAgICAgICAgIH0pLmxlbmd0aAotICAgIH0pLCBiLmZuLm9m
ZnNldCA9IGZ1bmN0aW9uKGUpIHsKKyAgICB9KSwKKyAgICBiLmZuLm9mZnNldCA9IGZ1bmN0aW9u
KGUpIHsKICAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGgpCiAgICAgICAgICAgICByZXR1cm4g
ZSA9PT0gdCA/IHRoaXMgOiB0aGlzLmVhY2goZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAg
IGIub2Zmc2V0LnNldE9mZnNldCh0aGlzLCBlLCB0KQpAQCAtMzc3OCw3ICs0MDgyLDggQEAKICAg
ICAgICAgICAgICAgICB0b3A6IG8udG9wICsgKHIucGFnZVlPZmZzZXQgfHwgbi5zY3JvbGxUb3Ap
IC0gKG4uY2xpZW50VG9wIHx8IDApLAogICAgICAgICAgICAgICAgIGxlZnQ6IG8ubGVmdCArIChy
LnBhZ2VYT2Zmc2V0IHx8IG4uc2Nyb2xsTGVmdCkgLSAobi5jbGllbnRMZWZ0IHx8IDApCiAgICAg
ICAgICAgICB9KSA6IG8KLSAgICB9LCBiLm9mZnNldCA9IHsKKyAgICB9LAorICAgIGIub2Zmc2V0
ID0gewogICAgICAgICBzZXRPZmZzZXQ6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAg
IHZhciByID0gYi5jc3MoZSwgInBvc2l0aW9uIik7CiAgICAgICAgICAgICAic3RhdGljIiA9PT0g
ciAmJiAoZS5zdHlsZS5wb3NpdGlvbiA9ICJyZWxhdGl2ZSIpOwpAQCAtMzc5MSw5ICs0MDk2LDE0
IEBACiAgICAgICAgICAgICAgICAgYyA9IHt9LAogICAgICAgICAgICAgICAgIHAsCiAgICAgICAg
ICAgICAgICAgZjsKLSAgICAgICAgICAgIHUgPyAoYyA9IGkucG9zaXRpb24oKSwgcCA9IGMudG9w
LCBmID0gYy5sZWZ0KSA6IChwID0gcGFyc2VGbG9hdChhKSB8fCAwLCBmID0gcGFyc2VGbG9hdChz
KSB8fCAwKSwgYi5pc0Z1bmN0aW9uKHQpICYmICh0ID0gdC5jYWxsKGUsIG4sIG8pKSwgbnVsbCAh
PSB0LnRvcCAmJiAobC50b3AgPSB0LnRvcCAtIG8udG9wICsgcCksIG51bGwgIT0gdC5sZWZ0ICYm
IChsLmxlZnQgPSB0LmxlZnQgLSBvLmxlZnQgKyBmKSwgInVzaW5nIiBpbiB0ID8gdC51c2luZy5j
YWxsKGUsIGwpIDogaS5jc3MobCkKKyAgICAgICAgICAgIHUgPyAoYyA9IGkucG9zaXRpb24oKSwg
cCA9IGMudG9wLCBmID0gYy5sZWZ0KSA6IChwID0gcGFyc2VGbG9hdChhKSB8fCAwLCBmID0gcGFy
c2VGbG9hdChzKSB8fCAwKSwKKyAgICAgICAgICAgIGIuaXNGdW5jdGlvbih0KSAmJiAodCA9IHQu
Y2FsbChlLCBuLCBvKSksCisgICAgICAgICAgICBudWxsICE9IHQudG9wICYmIChsLnRvcCA9IHQu
dG9wIC0gby50b3AgKyBwKSwKKyAgICAgICAgICAgIG51bGwgIT0gdC5sZWZ0ICYmIChsLmxlZnQg
PSB0LmxlZnQgLSBvLmxlZnQgKyBmKSwKKyAgICAgICAgICAgICJ1c2luZyIgaW4gdCA/IHQudXNp
bmcuY2FsbChlLCBsKSA6IGkuY3NzKGwpCiAgICAgICAgIH0KLSAgICB9LCBiLmZuLmV4dGVuZCh7
CisgICAgfSwKKyAgICBiLmZuLmV4dGVuZCh7CiAgICAgICAgIHBvc2l0aW9uOiBmdW5jdGlvbigp
IHsKICAgICAgICAgICAgIGlmICh0aGlzWzBdKSB7CiAgICAgICAgICAgICAgICAgdmFyIGUsCkBA
IC0zODE3LDcgKzQxMjcsOCBAQAogICAgICAgICAgICAgICAgIHJldHVybiBlIHx8IG8uZG9jdW1l
bnRFbGVtZW50CiAgICAgICAgICAgICB9KQogICAgICAgICB9Ci0gICAgfSksIGIuZWFjaCh7Cisg
ICAgfSksCisgICAgYi5lYWNoKHsKICAgICAgICAgc2Nyb2xsTGVmdDogInBhZ2VYT2Zmc2V0IiwK
ICAgICAgICAgc2Nyb2xsVG9wOiAicGFnZVlPZmZzZXQiCiAgICAgfSwgZnVuY3Rpb24oZSwgbikg
ewpAQCAtMzg1MCw3ICs0MTYxLDkgQEAKICAgICAgICAgICAgICAgICB9LCBuLCBhID8gaSA6IHQs
IGEsIG51bGwpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0pCi0gICAgfSksIGUualF1ZXJ5ID0g
ZS4kID0gYiwgImZ1bmN0aW9uIiA9PSB0eXBlb2YgZGVmaW5lICYmIGRlZmluZS5hbWQgJiYgZGVm
aW5lLmFtZC5qUXVlcnkgJiYgZGVmaW5lKCJqcXVlcnkiLCBbXSwgZnVuY3Rpb24oKSB7CisgICAg
fSksCisgICAgZS5qUXVlcnkgPSBlLiQgPSBiLAorICAgICJmdW5jdGlvbiIgPT0gdHlwZW9mIGRl
ZmluZSAmJiBkZWZpbmUuYW1kICYmIGRlZmluZS5hbWQualF1ZXJ5ICYmIGRlZmluZSgianF1ZXJ5
IiwgW10sIGZ1bmN0aW9uKCkgewogICAgICAgICByZXR1cm4gYgogICAgIH0pCiB9KSh3aW5kb3cp
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395537</attachid>
            <date>2020-04-05 17:33:17 -0700</date>
            <delta_ts>2020-04-08 21:40:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209998-20200405183316.patch</filename>
            <type>text/plain</type>
            <size>138312</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDNjNTI5NTBmZGMzM2IyNTIxNWE4NGI0MDA3NTE4
OGVjMDdiY2U4ZTQuLjNhM2E4ZDM1YTk1MmM5MzA4YmU3MzQ5Y2MwYmNkMjM1YmIyNDEwYTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIwLTA0LTA1ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBE
ZWJ1Z2dlcjogdHJlYXQgY29tbWEgc3ViLWV4cHJlc3Npb25zIGFzIHNlcGFyYXRlIHN0YXRlbWVu
dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTk5
OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1pbmlm
aWVycyBzb21ldGltZXMgdXNlIGAsYCBpbnN0ZWFkIG9mIGA7YCBhcyBhIHdheSBvZiBjb21wcmVz
c2luZyBtdWx0aXBsZSBzdGF0ZW1lbnRzIGludG8KKyAgICAgICAgYSBzaW5nbGUgc3RhdGVtZW50
IChlLmcuIGluc2lkZSBhbiBgaWZgIGNvbmRpdGlvbmFsKS4gVGhpcyBtYWtlcyBzdGVwcGluZyB0
aHJvdWdoIG1pbmlmaWVkCisgICAgICAgIGNvZGUgbXVjaCBsZXNzIHVzZWZ1bCwgYXMgb3VyIGN1
cnJlbnQgc3RlcHBpbmcgbG9naWMgaXMgYmFzZWQgb24gZXhwcmVzc2lvbnMgKG5vdCBpbmNsdWRp
bmcKKyAgICAgICAgc3RlcCBpbiBvciBzdGVwIG91dCkuIEluIG1vc3QgY2FzZXMsIHdlIGRvIGFj
dHVhbGx5IHdhbnQgdG8gdHJlYXQgZWFjaCBzdWItZXhwcmVzc2lvbiBpbiBhCisgICAgICAgIGNv
bW1hIGV4cHJlc3Npb24gYXMgYSBzdGF0ZW1lbnQgc28gYXMgdG8gZW11bGF0ZSB0aGUgYmVoYXZp
b3VyIGFzIGlmIHRoZXJlIHdlcmUgYDtgIGluc3RlYWQuCisKKyAgICAgICAgKiBieXRlY29tcGls
ZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6Q29tbWFOb2RlOjplbWl0Qnl0ZWNv
ZGUpOgorCisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OlBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZVZhcmlhYmxlRGVjbGFyYXRpb25MaXN0KToKKyAgICAgICAgKFBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZUV4cHJlc3Npb24pOgorICAgICAgICBTaGlmdCB0aGUgbG9j
YXRpb24gb2Ygc3Vic2VxdWVudCBzdWItZXhwcmVzc2lvbnMgdG8gYmUgYWZ0ZXIgdGhlIGNvbW1h
LiBBZGQgYnJlYWtwb2ludCBwYXVzZQorICAgICAgICBsb2NhdGlvbnMgZm9yIGVhY2ggc3Vic2Vx
dWVudCBzdWItZXhwcmVzc2lvbi4KKwogMjAyMC0wNC0wNCAgQWxleGV5IFNodmF5a2EgIDxzaHZh
aWthbGVzaEBnbWFpbC5jb20+CiAKICAgICAgICAgJ1x1JyBzaG91bGQgdGhyb3cgYW4gZWFybHkg
U3ludGF4RXJyb3IgZXhjZXB0aW9uLCBidXQgaW5zdGVhZCBldmFsdWF0ZXMgdG8gJ3UnCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL0NoYW5nZUxvZwppbmRleCAwMDM3YzU3ZGNjMmE1MWRiNTRhYWY0ZDUwYzBmMDg5ODM1
YTFhMTA4Li5lZDhkMTViMjM4YWRjNWE1YWFjNzc0YTk4ZTZkNjAyODc3OGM2MGU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAyMC0wNC0wNSAgRGV2aW4gUm91
c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogRGVidWdn
ZXI6IHRyZWF0IGNvbW1hIHN1Yi1leHByZXNzaW9ucyBhcyBzZXBhcmF0ZSBzdGF0ZW1lbnRzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk5OTgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNaW5pZmllcnMg
c29tZXRpbWVzIHVzZSBgLGAgaW5zdGVhZCBvZiBgO2AgYXMgYSB3YXkgb2YgY29tcHJlc3Npbmcg
bXVsdGlwbGUgc3RhdGVtZW50cyBpbnRvCisgICAgICAgIGEgc2luZ2xlIHN0YXRlbWVudCAoZS5n
LiBpbnNpZGUgYW4gYGlmYCBjb25kaXRpb25hbCkuIFRoaXMgbWFrZXMgc3RlcHBpbmcgdGhyb3Vn
aCBtaW5pZmllZAorICAgICAgICBjb2RlIG11Y2ggbGVzcyB1c2VmdWwsIGFzIG91ciBjdXJyZW50
IHN0ZXBwaW5nIGxvZ2ljIGlzIGJhc2VkIG9uIGV4cHJlc3Npb25zIChub3QgaW5jbHVkaW5nCisg
ICAgICAgIHN0ZXAgaW4gb3Igc3RlcCBvdXQpLiBJbiBtb3N0IGNhc2VzLCB3ZSBkbyBhY3R1YWxs
eSB3YW50IHRvIHRyZWF0IGVhY2ggc3ViLWV4cHJlc3Npb24gaW4gYQorICAgICAgICBjb21tYSBl
eHByZXNzaW9uIGFzIGEgc3RhdGVtZW50IHNvIGFzIHRvIGVtdWxhdGUgdGhlIGJlaGF2aW91ciBh
cyBpZiB0aGVyZSB3ZXJlIGA7YCBpbnN0ZWFkLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9X
b3JrZXJzL0Zvcm1hdHRlci9KU0Zvcm1hdHRlci5qczoKKyAgICAgICAgKEpTRm9ybWF0dGVyLnBy
b3RvdHlwZS5faXNMaWtlbHlUb0hhdmVOZXdsaW5lKToKKyAgICAgICAgKEpTRm9ybWF0dGVyLnBy
b3RvdHlwZS5faGFuZGxlVG9rZW5BdE5vZGUpOgorICAgICAgICBQdXQgZWFjaCBzdWItZXhwcmVz
c2lvbiBpbiBhIGNvbW1hIGV4cHJlc3Npb24gb24gaXQncyBvd24gbGluZS4KKwogMjAyMC0wNC0w
MyAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3Bl
Y3RvcjogU291cmNlczogZGlzY2xvc3VyZSBhcnJvd3Mgc2hvdWxkIGJlIHNob3duIGlmIGEgZm9s
ZGVyIGlzIGFkZGVkIHRvIHRoZSBuYXZpZ2F0aW9uIHNpZGViYXIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCA2NDBiMjQ5
NzU1ZTEwZWNkZDlhODNiOWUxNGIwOTdhYjM5ZmQwOTRmLi4wNzU1ZDhmNDViYjg0YjljOTVmOTc3
OTZlOGMyZjM4NjE4ZTg3MTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0zMDQyLDggKzMwNDIsMTMgQEAgUmVnaXN0
ZXJJRCogUmVhZE1vZGlmeUJyYWNrZXROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwgUmUKIFJlZ2lzdGVySUQqIENvbW1hTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKICAgICBDb21t
YU5vZGUqIG5vZGUgPSB0aGlzOwotICAgIGZvciAoOyBub2RlICYmIG5vZGUtPm5leHQoKTsgbm9k
ZSA9IG5vZGUtPm5leHQoKSkKKyAgICBmb3IgKDsgbm9kZS0+bmV4dCgpOyBub2RlID0gbm9kZS0+
bmV4dCgpKSB7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShnZW5lcmF0b3IuaWdub3JlZFJl
c3VsdCgpLCBub2RlLT5tX2V4cHIpOworCisgICAgICAgIC8vIERvbid0IGVtaXQgYSBkZWJ1ZyBo
b29rIGZvciB0aGUgZmlyc3QgZXhwcmVzc2lvbiwgYXMgdGhhdCBzaG91bGQndmUgYWxyZWFkeSBo
YXBwZW5lZCBpbgorICAgICAgICAvLyB0aGUgY29udGFpbmluZyBzdGF0ZW1lbnQuCisgICAgICAg
IGdlbmVyYXRvci5lbWl0RGVidWdIb29rKG5vZGUtPm5leHQoKS0+bV9leHByKTsKKyAgICB9CiAg
ICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0Tm9kZUluVGFpbFBvc2l0aW9uKGRzdCwgbm9kZS0+bV9l
eHByKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IDg0
ODU4MjNjNGU2NDViYTZlNjMxY2E0YTJkYzA0NmE1ZjcwODNhYTcuLmM0NzM5ZTNlY2JmOWQwYWY2
MmI2ZDNiNWI2YjkyZTY2ZDI1ODQ5M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5jcHAKQEAgLTgwOSw2ICs4MDksNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVZhcmlhYmxlRGVjbAogewog
ICAgIEFTU0VSVChkZWNsYXJhdGlvblR5cGUgPT0gRGVjbGFyYXRpb25UeXBlOjpMZXREZWNsYXJh
dGlvbiB8fCBkZWNsYXJhdGlvblR5cGUgPT0gRGVjbGFyYXRpb25UeXBlOjpWYXJEZWNsYXJhdGlv
biB8fCBkZWNsYXJhdGlvblR5cGUgPT0gRGVjbGFyYXRpb25UeXBlOjpDb25zdERlY2xhcmF0aW9u
KTsKICAgICBUcmVlRXhwcmVzc2lvbiBoZWFkID0gMDsKKyAgICBKU1Rva2VuTG9jYXRpb24gaGVh
ZExvY2F0aW9uOwogICAgIFRyZWVFeHByZXNzaW9uIHRhaWwgPSAwOwogICAgIGNvbnN0IElkZW50
aWZpZXIqIGxhc3RJZGVudDsKICAgICBKU1Rva2VuIGxhc3RJZGVudFRva2VuOyAKQEAgLTgxOCw2
ICs4MTksMTAgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VWYXJpYWJsZURlY2wKICAgICAgICAgbGFzdFBhdHRlcm4g
PSBUcmVlRGVzdHJ1Y3R1cmluZ1BhdHRlcm4oMCk7CiAgICAgICAgIEpTVG9rZW5Mb2NhdGlvbiBs
b2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgICAgICBuZXh0KCk7CisgICAgICAgIGlmICho
ZWFkKSB7CisgICAgICAgICAgICAvLyBNb3ZlIHRoZSBsb2NhdGlvbiBvZiBzdWJzZXF1ZW50IGRl
Y2xhcmF0aW9ucyBhZnRlciB0aGUgY29tbWEuCisgICAgICAgICAgICBsb2NhdGlvbiA9IHRva2Vu
TG9jYXRpb24oKTsKKyAgICAgICAgfQogICAgICAgICBUcmVlRXhwcmVzc2lvbiBub2RlID0gMDsK
ICAgICAgICAgZGVjbGFyYXRpb25zKys7CiAgICAgICAgIGJvb2wgaGFzSW5pdGlhbGl6ZXIgPSBm
YWxzZTsKQEAgLTg4OCwxMyArODkzLDE1IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlVmFyaWFibGVEZWNsCiAgICAg
ICAgIH0KIAogICAgICAgICBpZiAobm9kZSkgewotICAgICAgICAgICAgaWYgKCFoZWFkKQorICAg
ICAgICAgICAgaWYgKCFoZWFkKSB7CiAgICAgICAgICAgICAgICAgaGVhZCA9IG5vZGU7Ci0gICAg
ICAgICAgICBlbHNlIGlmICghdGFpbCkgewotICAgICAgICAgICAgICAgIGhlYWQgPSBjb250ZXh0
LmNyZWF0ZUNvbW1hRXhwcihsb2NhdGlvbiwgaGVhZCk7Ci0gICAgICAgICAgICAgICAgdGFpbCA9
IGNvbnRleHQuYXBwZW5kVG9Db21tYUV4cHIobG9jYXRpb24sIGhlYWQsIGhlYWQsIG5vZGUpOwot
ICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgaGVhZExvY2F0aW9uID0gbG9jYXRp
b247CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmICghdGFpbCkKKyAg
ICAgICAgICAgICAgICAgICAgaGVhZCA9IHRhaWwgPSBjb250ZXh0LmNyZWF0ZUNvbW1hRXhwciho
ZWFkTG9jYXRpb24sIGhlYWQpOwogICAgICAgICAgICAgICAgIHRhaWwgPSBjb250ZXh0LmFwcGVu
ZFRvQ29tbWFFeHByKGxvY2F0aW9uLCBoZWFkLCB0YWlsLCBub2RlKTsKKyAgICAgICAgICAgICAg
ICByZWNvcmRQYXVzZUxvY2F0aW9uKGNvbnRleHQuYnJlYWtwb2ludExvY2F0aW9uKHRhaWwpKTsK
KyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0gd2hpbGUgKG1hdGNoKENPTU1BKSk7CiAg
ICAgaWYgKGxhc3RJZGVudCkKQEAgLTM2OTcsNyArMzcwNCw3IEBAIHRlbXBsYXRlIDx0eXBlbmFt
ZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9u
IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUV4cHJlc3Npb24oVHJlZUJ1aWxkZXImIGNvbnRleHQp
CiB7CiAgICAgZmFpbElmU3RhY2tPdmVyZmxvdygpOwotICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2Nh
dGlvbih0b2tlbkxvY2F0aW9uKCkpOworICAgIEpTVG9rZW5Mb2NhdGlvbiBoZWFkTG9jYXRpb24o
dG9rZW5Mb2NhdGlvbigpKTsKICAgICBUcmVlRXhwcmVzc2lvbiBub2RlID0gcGFyc2VBc3NpZ25t
ZW50RXhwcmVzc2lvbihjb250ZXh0KTsKICAgICBmYWlsSWZGYWxzZShub2RlLCAiQ2Fubm90IHBh
cnNlIGV4cHJlc3Npb24iKTsKICAgICBjb250ZXh0LnNldEVuZE9mZnNldChub2RlLCBtX2xhc3RU
b2tlbkVuZFBvc2l0aW9uLm9mZnNldCk7CkBAIC0zNzA2LDE3ICszNzEzLDIxIEBAIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlRXhwcmVzc2lvbihUCiAgICAgbmV4dCgpOwogICAgIG1fcGFyc2VyU3RhdGUubm9uVHJpdmlh
bEV4cHJlc3Npb25Db3VudCsrOwogICAgIG1fcGFyc2VyU3RhdGUubm9uTEhTQ291bnQrKzsKKyAg
ICBKU1Rva2VuTG9jYXRpb24gdGFpbExvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgVHJl
ZUV4cHJlc3Npb24gcmlnaHQgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQpOwog
ICAgIGZhaWxJZkZhbHNlKHJpZ2h0LCAiQ2Fubm90IHBhcnNlIGV4cHJlc3Npb24gaW4gYSBjb21t
YSBleHByZXNzaW9uIik7CiAgICAgY29udGV4dC5zZXRFbmRPZmZzZXQocmlnaHQsIG1fbGFzdFRv
a2VuRW5kUG9zaXRpb24ub2Zmc2V0KTsKLSAgICB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Q29tbWEg
aGVhZCA9IGNvbnRleHQuY3JlYXRlQ29tbWFFeHByKGxvY2F0aW9uLCBub2RlKTsKLSAgICB0eXBl
bmFtZSBUcmVlQnVpbGRlcjo6Q29tbWEgdGFpbCA9IGNvbnRleHQuYXBwZW5kVG9Db21tYUV4cHIo
bG9jYXRpb24sIGhlYWQsIGhlYWQsIHJpZ2h0KTsKKyAgICB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6
Q29tbWEgaGVhZCA9IGNvbnRleHQuY3JlYXRlQ29tbWFFeHByKGhlYWRMb2NhdGlvbiwgbm9kZSk7
CisgICAgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkNvbW1hIHRhaWwgPSBjb250ZXh0LmFwcGVuZFRv
Q29tbWFFeHByKHRhaWxMb2NhdGlvbiwgaGVhZCwgaGVhZCwgcmlnaHQpOworICAgIHJlY29yZFBh
dXNlTG9jYXRpb24oY29udGV4dC5icmVha3BvaW50TG9jYXRpb24odGFpbCkpOwogICAgIHdoaWxl
IChtYXRjaChDT01NQSkpIHsKICAgICAgICAgbmV4dChUcmVlQnVpbGRlcjo6RG9udEJ1aWxkU3Ry
aW5ncyk7CisgICAgICAgIHRhaWxMb2NhdGlvbiA9IHRva2VuTG9jYXRpb24oKTsKICAgICAgICAg
cmlnaHQgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQpOwogICAgICAgICBmYWls
SWZGYWxzZShyaWdodCwgIkNhbm5vdCBwYXJzZSBleHByZXNzaW9uIGluIGEgY29tbWEgZXhwcmVz
c2lvbiIpOwogICAgICAgICBjb250ZXh0LnNldEVuZE9mZnNldChyaWdodCwgbV9sYXN0VG9rZW5F
bmRQb3NpdGlvbi5vZmZzZXQpOwotICAgICAgICB0YWlsID0gY29udGV4dC5hcHBlbmRUb0NvbW1h
RXhwcihsb2NhdGlvbiwgaGVhZCwgdGFpbCwgcmlnaHQpOworICAgICAgICB0YWlsID0gY29udGV4
dC5hcHBlbmRUb0NvbW1hRXhwcih0YWlsTG9jYXRpb24sIGhlYWQsIHRhaWwsIHJpZ2h0KTsKKyAg
ICAgICAgcmVjb3JkUGF1c2VMb2NhdGlvbihjb250ZXh0LmJyZWFrcG9pbnRMb2NhdGlvbih0YWls
KSk7CiAgICAgfQogICAgIGNvbnRleHQuc2V0RW5kT2Zmc2V0KGhlYWQsIG1fbGFzdFRva2VuRW5k
UG9zaXRpb24ub2Zmc2V0KTsKICAgICByZXR1cm4gaGVhZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1dvcmtlcnMvRm9ybWF0dGVyL0pTRm9ybWF0dGVy
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvV29ya2Vycy9Gb3JtYXR0
ZXIvSlNGb3JtYXR0ZXIuanMKaW5kZXggZjc2YjYwMjhkNDgyMTM0ODg4ZjdhYzEzN2EzNzM5Njcy
ZTEwY2IwMS4uZGRkMWU5MTY2NTE3ZTI0ZmZmMWMyOWRjOTllODFlZjg0NzAxOWVjNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvV29ya2Vycy9Gb3JtYXR0
ZXIvSlNGb3JtYXR0ZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvV29ya2Vycy9Gb3JtYXR0ZXIvSlNGb3JtYXR0ZXIuanMKQEAgLTIwMSwxOSArMjAxLDI2IEBA
IEpTRm9ybWF0dGVyID0gY2xhc3MgSlNGb3JtYXR0ZXIKIAogICAgIF9pc0xpa2VseVRvSGF2ZU5l
d2xpbmUobm9kZSkKICAgICB7Ci0gICAgICAgIGxldCBub2RlVHlwZSA9IG5vZGUudHlwZTsKLSAg
ICAgICAgcmV0dXJuIG5vZGVUeXBlID09PSAiSWZTdGF0ZW1lbnQiCi0gICAgICAgICAgICB8fCBu
b2RlVHlwZSA9PT0gIkZvclN0YXRlbWVudCIKLSAgICAgICAgICAgIHx8IG5vZGVUeXBlID09PSAi
Rm9yT2ZTdGF0ZW1lbnQiCi0gICAgICAgICAgICB8fCBub2RlVHlwZSA9PT0gIkZvckluU3RhdGVt
ZW50IgotICAgICAgICAgICAgfHwgbm9kZVR5cGUgPT09ICJXaGlsZVN0YXRlbWVudCIKLSAgICAg
ICAgICAgIHx8IG5vZGVUeXBlID09PSAiRG9XaGlsZVN0YXRlbWVudCIKLSAgICAgICAgICAgIHx8
IG5vZGVUeXBlID09PSAiU3dpdGNoU3RhdGVtZW50IgotICAgICAgICAgICAgfHwgbm9kZVR5cGUg
PT09ICJUcnlTdGF0ZW1lbnQiCi0gICAgICAgICAgICB8fCBub2RlVHlwZSA9PT0gIkZ1bmN0aW9u
RGVjbGFyYXRpb24iCi0gICAgICAgICAgICB8fCBub2RlVHlwZSA9PT0gIkNsYXNzRGVjbGFyYXRp
b24iCi0gICAgICAgICAgICB8fCBub2RlVHlwZSA9PT0gIkJsb2NrU3RhdGVtZW50IgotICAgICAg
ICAgICAgfHwgbm9kZVR5cGUgPT09ICJXaXRoU3RhdGVtZW50IjsKKyAgICAgICAgc3dpdGNoIChu
b2RlLnR5cGUpIHsKKyAgICAgICAgY2FzZSAiQmxvY2tTdGF0ZW1lbnQiOgorICAgICAgICBjYXNl
ICJDbGFzc0RlY2xhcmF0aW9uIjoKKyAgICAgICAgY2FzZSAiRG9XaGlsZVN0YXRlbWVudCI6Cisg
ICAgICAgIGNhc2UgIkZvckluU3RhdGVtZW50IjoKKyAgICAgICAgY2FzZSAiRm9yT2ZTdGF0ZW1l
bnQiOgorICAgICAgICBjYXNlICJGb3JTdGF0ZW1lbnQiOgorICAgICAgICBjYXNlICJGdW5jdGlv
bkRlY2xhcmF0aW9uIjoKKyAgICAgICAgY2FzZSAiSWZTdGF0ZW1lbnQiOgorICAgICAgICBjYXNl
ICJTd2l0Y2hTdGF0ZW1lbnQiOgorICAgICAgICBjYXNlICJUcnlTdGF0ZW1lbnQiOgorICAgICAg
ICBjYXNlICJXaGlsZVN0YXRlbWVudCI6CisgICAgICAgIGNhc2UgIldpdGhTdGF0ZW1lbnQiOgor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgY2FzZSAiRXhwcmVzc2lvblN0YXRl
bWVudCI6CisgICAgICAgICAgICByZXR1cm4gbm9kZS5leHByZXNzaW9uLnR5cGUgPT09ICJTZXF1
ZW5jZUV4cHJlc3Npb24iOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIAogICAgIF9pc1JhbmdlV2hpdGVzcGFjZShmcm9tLCB0bykKQEAgLTI4NSw3ICsyOTIsNyBA
QCBKU0Zvcm1hdHRlciA9IGNsYXNzIEpTRm9ybWF0dGVyCiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIAotICAgICAgICBpZiAobm9kZVR5cGUgPT09ICJDYWxsRXhwcmVzc2lvbiIgfHwg
bm9kZVR5cGUgPT09ICJBcnJheUV4cHJlc3Npb24iIHx8IG5vZGVUeXBlID09PSAiQXJyYXlQYXR0
ZXJuIiB8fCBub2RlVHlwZSA9PT0gIk9iamVjdFBhdHRlcm4iIHx8IG5vZGVUeXBlID09PSAiU2Vx
dWVuY2VFeHByZXNzaW9uIikgeworICAgICAgICBpZiAobm9kZVR5cGUgPT09ICJDYWxsRXhwcmVz
c2lvbiIgfHwgbm9kZVR5cGUgPT09ICJBcnJheUV4cHJlc3Npb24iIHx8IG5vZGVUeXBlID09PSAi
QXJyYXlQYXR0ZXJuIiB8fCBub2RlVHlwZSA9PT0gIk9iamVjdFBhdHRlcm4iKSB7CiAgICAgICAg
ICAgICBpZiAodG9rZW5WYWx1ZSA9PT0gIiwiKSB7CiAgICAgICAgICAgICAgICAgYnVpbGRlci5h
cHBlbmRUb2tlbih0b2tlblZhbHVlLCB0b2tlbk9mZnNldCk7CiAgICAgICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmRTcGFjZSgpOwpAQCAtMjk1LDYgKzMwMiwxNyBAQCBKU0Zvcm1hdHRlciA9IGNs
YXNzIEpTRm9ybWF0dGVyCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAorICAgICAg
ICBpZiAobm9kZVR5cGUgPT09ICJTZXF1ZW5jZUV4cHJlc3Npb24iKSB7CisgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZFRva2VuKHRva2VuVmFsdWUsIHRva2VuT2Zmc2V0KTsKKyAgICAgICAgICAg
IGlmICh0b2tlblZhbHVlID09PSAiLCIpIHsKKyAgICAgICAgICAgICAgICBpZiAobm9kZS5wYXJl
bnQudHlwZSA9PT0gIkV4cHJlc3Npb25TdGF0ZW1lbnQiKQorICAgICAgICAgICAgICAgICAgICB0
aGlzLl9hcHBlbmROZXdsaW5lKG5vZGUpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRTcGFjZSgpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKICAgICAgICAgaWYgKG5vZGVUeXBlID09PSAiTG9n
aWNhbEV4cHJlc3Npb24iIHx8IG5vZGVUeXBlID09PSAiQmluYXJ5RXhwcmVzc2lvbiIpIHsKICAg
ICAgICAgICAgIGlmICh0b2tlblZhbHVlICE9PSAiKCIgJiYgdG9rZW5WYWx1ZSAhPT0gIikiKSB7
CiAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRTcGFjZSgpOwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDIwMWYwMGE0
NDEzNTU5NzlmYmY1NjkxZjg2ODdiNmUwYmE3NDgyYmIuLjQ3OTBkZmJhODE1NTQyMTgxOGVlMzhj
MmI0NmRiOTJkMzgzOGM4Y2YgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAyMC0wNC0wNSAgRGV2
aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
RGVidWdnZXI6IHRyZWF0IGNvbW1hIHN1Yi1leHByZXNzaW9ucyBhcyBzZXBhcmF0ZSBzdGF0ZW1l
bnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk5
OTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGlu
c3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50cy9yZXNvdXJjZXMvZHVtcC1mdW5jdGlvbnMuanM6
CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnRzL3Jlc291cmNlcy9kdW1w
LWdlbmVyYWwuanM6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnRzL3Jl
c29sdmVkLWR1bXAtYWxsLXBhdXNlLWxvY2F0aW9ucy1leHBlY3RlZC50eHQ6CisgICAgICAgICog
aW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnRzL3Jlc29sdmVkLWR1bXAtZWFjaC1saW5lLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcvc3RlcE92
ZXIuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcvc3RlcE92ZXIt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9zdGVwcGluZy9zdGVw
cGluZy1mdW5jdGlvbi1jYWxscy5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9z
dGVwcGluZy9zdGVwcGluZy1mdW5jdGlvbi1jYWxscy1leHBlY3RlZC50eHQ6CisgICAgICAgICog
aW5zcGVjdG9yL2RlYnVnZ2VyL3N0ZXBwaW5nL3N0ZXBwaW5nLWxvb3BzLmh0bWw6CisgICAgICAg
ICogaW5zcGVjdG9yL2RlYnVnZ2VyL3N0ZXBwaW5nL3N0ZXBwaW5nLWxvb3BzLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcvc3RlcHBpbmctbWlzYy5o
dG1sOgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9zdGVwcGluZy9zdGVwcGluZy1taXNj
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMv
amF2YXNjcmlwdC10ZXN0cy9mb3Itc3RhdGVtZW50cy5qczoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
Zm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy9mb3Itc3RhdGVtZW50cy1leHBl
Y3RlZC5qczoKKyAgICAgICAgKiBpbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNj
cmlwdC10ZXN0cy9pZi1zdGF0ZW1lbnRzLmpzOgorICAgICAgICAqIGluc3BlY3Rvci9mb3JtYXR0
aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL2lmLXN0YXRlbWVudHMtZXhwZWN0ZWQuanM6
CisgICAgICAgICogaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVz
dHMvc2FtcGxlLWpxdWVyeS1leHBlY3RlZC5qczoKKyAgICAgICAgKiBpbnNwZWN0b3IvZm9ybWF0
dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy9zYW1wbGUtanF1ZXJ5LWV4cGVjdGVkLmpz
OgorCiAyMDIwLTA0LTA0ICBMYXVybyBNb3VyYSAgPGxtb3VyYUBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtHVEtdIFVwZGF0ZSB0ZXN0IGJhc2VsaW5lIGFmdGVyIHIyNTk0MzggYW5kIGdhcmRlbiBj
cmFzaGVzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvYnJlYWtw
b2ludHMvcmVzb2x2ZWQtZHVtcC1hbGwtcGF1c2UtbG9jYXRpb25zLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50cy9yZXNvbHZlZC1kdW1wLWFs
bC1wYXVzZS1sb2NhdGlvbnMtZXhwZWN0ZWQudHh0CmluZGV4IGNjMDhkOTQ5Y2ViNDNmOTU5ZmUy
NzhiNmE2ZGQxMDQ5MTk4ZTA4NDMuLjJlZGYwNDlmZWRiMzk2MjUwOThhY2MzNzEzNmEwMThlM2Rj
NTMyYjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVha3Bv
aW50cy9yZXNvbHZlZC1kdW1wLWFsbC1wYXVzZS1sb2NhdGlvbnMtZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50cy9yZXNvbHZlZC1kdW1w
LWFsbC1wYXVzZS1sb2NhdGlvbnMtZXhwZWN0ZWQudHh0CkBAIC0xMDc0LDM2ICsxMDc0LDY2IEBA
IFBBVVNFUyBBVDogMTY0OjAKICAgICAxNjcgICAgICAgIGwyID0gMjsKIAogSU5TRVJUSU5HIEFU
OiAxNjQ6MQotUEFVU0VTIEFUOiAxNjY6MAorUEFVU0VTIEFUOiAxNjU6NAogICAgIDE2MSAgICAg
ICAgYSgpOwogICAgIDE2MiAgICB9CiAgICAgMTYzICAgIAogIC0+IDE2NCAgICB2I2FyIHYxID0g
MSwKLSAgICAxNjUgICAgICAgIHYyID0gMTsKKyA9PiAxNjUgICAgICAgIHx2MiA9IDE7CisgICAg
MTY2ICAgIGxldCBsMSA9IDIsCisgICAgMTY3ICAgICAgICBsMiA9IDI7CisgICAgMTY4ICAgIGNv
bnN0IGMxID0gMywKKworSU5TRVJUSU5HIEFUOiAxNjU6NQorUEFVU0VTIEFUOiAxNjY6MAorICAg
IDE2MiAgICB9CisgICAgMTYzICAgIAorICAgIDE2NCAgICB2YXIgdjEgPSAxLAorIC0+IDE2NSAg
ICAgICAgdiMyID0gMTsKICA9PiAxNjYgICAgfGxldCBsMSA9IDIsCiAgICAgMTY3ICAgICAgICBs
MiA9IDI7CiAgICAgMTY4ICAgIGNvbnN0IGMxID0gMywKICAgICAxNjkgICAgICAgIGMyID0gMzsK
IAogSU5TRVJUSU5HIEFUOiAxNjY6MQotUEFVU0VTIEFUOiAxNjg6MAorUEFVU0VTIEFUOiAxNjc6
NAogICAgIDE2MyAgICAKICAgICAxNjQgICAgdmFyIHYxID0gMSwKICAgICAxNjUgICAgICAgIHYy
ID0gMTsKICAtPiAxNjYgICAgbCNldCBsMSA9IDIsCi0gICAgMTY3ICAgICAgICBsMiA9IDI7Cisg
PT4gMTY3ICAgICAgICB8bDIgPSAyOworICAgIDE2OCAgICBjb25zdCBjMSA9IDMsCisgICAgMTY5
ICAgICAgICBjMiA9IDM7CisgICAgMTcwICAgIAorCitJTlNFUlRJTkcgQVQ6IDE2Nzo1CitQQVVT
RVMgQVQ6IDE2ODowCisgICAgMTY0ICAgIHZhciB2MSA9IDEsCisgICAgMTY1ICAgICAgICB2MiA9
IDE7CisgICAgMTY2ICAgIGxldCBsMSA9IDIsCisgLT4gMTY3ICAgICAgICBsIzIgPSAyOwogID0+
IDE2OCAgICB8Y29uc3QgYzEgPSAzLAogICAgIDE2OSAgICAgICAgYzIgPSAzOwogICAgIDE3MCAg
ICAKICAgICAxNzEgICAgdjEgPSB2MiA9IHYxOwogCiBJTlNFUlRJTkcgQVQ6IDE2ODoxCi1QQVVT
RVMgQVQ6IDE3MTowCitQQVVTRVMgQVQ6IDE2OTo0CiAgICAgMTY1ICAgICAgICB2MiA9IDE7CiAg
ICAgMTY2ICAgIGxldCBsMSA9IDIsCiAgICAgMTY3ICAgICAgICBsMiA9IDI7CiAgLT4gMTY4ICAg
IGMjb25zdCBjMSA9IDMsCi0gICAgMTY5ICAgICAgICBjMiA9IDM7CisgPT4gMTY5ICAgICAgICB8
YzIgPSAzOworICAgIDE3MCAgICAKKyAgICAxNzEgICAgdjEgPSB2MiA9IHYxOworICAgIDE3MiAg
ICAKKworSU5TRVJUSU5HIEFUOiAxNjk6NQorUEFVU0VTIEFUOiAxNzE6MAorICAgIDE2NiAgICBs
ZXQgbDEgPSAyLAorICAgIDE2NyAgICAgICAgbDIgPSAyOworICAgIDE2OCAgICBjb25zdCBjMSA9
IDMsCisgLT4gMTY5ICAgICAgICBjIzIgPSAzOwogICAgIDE3MCAgICAKICA9PiAxNzEgICAgfHYx
ID0gdjIgPSB2MTsKICAgICAxNzIgICAgCkBAIC0xMzE1LDYgKzEzNDUsNyBAQCBQQVVTRVMgQVQ6
IDIwODo0CiAgPT4gMjA4ICAgIGlmICh8U3RyaW5nLnJhd2B0ZXN0YCkKICAgICAyMDkgICAgICAg
IGEoKTsKICAgICAyMTAgICAgCisgICAgMjExICAgIGEoKSwgYigpLCBjKCk7CiAKIElOU0VSVElO
RyBBVDogMjA4OjUKIFBBVVNFUyBBVDogMjA5OjQKQEAgLTEzMjQsNiArMTM1NSw3MSBAQCBQQVVT
RVMgQVQ6IDIwOTo0CiAgLT4gMjA4ICAgIGlmIChTI3RyaW5nLnJhd2B0ZXN0YCkKICA9PiAyMDkg
ICAgICAgIHxhKCk7CiAgICAgMjEwICAgIAorICAgIDIxMSAgICBhKCksIGIoKSwgYygpOworICAg
IDIxMiAgICAKKworSU5TRVJUSU5HIEFUOiAyMDk6NQorUEFVU0VTIEFUOiAyMTE6MAorICAgIDIw
NiAgICAgICAgYSgpOworICAgIDIwNyAgICAKKyAgICAyMDggICAgaWYgKFN0cmluZy5yYXdgdGVz
dGApCisgLT4gMjA5ICAgICAgICBhIygpOworICAgIDIxMCAgICAKKyA9PiAyMTEgICAgfGEoKSwg
YigpLCBjKCk7CisgICAgMjEyICAgIAorICAgIDIxMyAgICBhKCksCisgICAgMjE0ICAgIGIoKSwK
KworSU5TRVJUSU5HIEFUOiAyMTE6MQorUEFVU0VTIEFUOiAyMTE6NQorICAgIDIwOCAgICBpZiAo
U3RyaW5nLnJhd2B0ZXN0YCkKKyAgICAyMDkgICAgICAgIGEoKTsKKyAgICAyMTAgICAgCistPT4g
MjExICAgIGEjKCksIHxiKCksIGMoKTsKKyAgICAyMTIgICAgCisgICAgMjEzICAgIGEoKSwKKyAg
ICAyMTQgICAgYigpLAorCitJTlNFUlRJTkcgQVQ6IDIxMTo2CitQQVVTRVMgQVQ6IDIxMToxMAor
ICAgIDIwOCAgICBpZiAoU3RyaW5nLnJhd2B0ZXN0YCkKKyAgICAyMDkgICAgICAgIGEoKTsKKyAg
ICAyMTAgICAgCistPT4gMjExICAgIGEoKSwgYiMoKSwgfGMoKTsKKyAgICAyMTIgICAgCisgICAg
MjEzICAgIGEoKSwKKyAgICAyMTQgICAgYigpLAorCitJTlNFUlRJTkcgQVQ6IDIxMToxMQorUEFV
U0VTIEFUOiAyMTM6MAorICAgIDIwOCAgICBpZiAoU3RyaW5nLnJhd2B0ZXN0YCkKKyAgICAyMDkg
ICAgICAgIGEoKTsKKyAgICAyMTAgICAgCisgLT4gMjExICAgIGEoKSwgYigpLCBjIygpOworICAg
IDIxMiAgICAKKyA9PiAyMTMgICAgfGEoKSwKKyAgICAyMTQgICAgYigpLAorICAgIDIxNSAgICBj
KCk7CisgICAgMjE2ICAgIAorCitJTlNFUlRJTkcgQVQ6IDIxMzoxCitQQVVTRVMgQVQ6IDIxNDow
CisgICAgMjEwICAgIAorICAgIDIxMSAgICBhKCksIGIoKSwgYygpOworICAgIDIxMiAgICAKKyAt
PiAyMTMgICAgYSMoKSwKKyA9PiAyMTQgICAgfGIoKSwKKyAgICAyMTUgICAgYygpOworICAgIDIx
NiAgICAKKworSU5TRVJUSU5HIEFUOiAyMTQ6MQorUEFVU0VTIEFUOiAyMTU6MAorICAgIDIxMSAg
ICBhKCksIGIoKSwgYygpOworICAgIDIxMiAgICAKKyAgICAyMTMgICAgYSgpLAorIC0+IDIxNCAg
ICBiIygpLAorID0+IDIxNSAgICB8YygpOworICAgIDIxNiAgICAKIAogCiAtLSBSdW5uaW5nIHRl
c3QgY2FzZTogRGVidWdnZXIucmVzb2x2ZWRCcmVha3BvaW50LmR1bXBBbGxMb2NhdGlvbnMuRnVu
Y3Rpb25zCkBAIC0yMzY2LDYgKzI0NjIsOTAgQEAgUEFVU0VTIEFUOiAxMTI6NAogID0+IDExMiAg
ICAgICAgfH0gICAKICAgICAxMTMgICAgfTsKICAgICAxMTQgICAgCisgICAgMTE1ICAgIGZ1bmN0
aW9uIGNvbW1hT25lTGluZSgpIHsKKworSU5TRVJUSU5HIEFUOiAxMTU6MAorUEFVU0VTIEFUOiAx
MTY6NAorICAgIDExMiAgICAgICAgfSAgIAorICAgIDExMyAgICB9OworICAgIDExNCAgICAKKyAt
PiAxMTUgICAgI2Z1bmN0aW9uIGNvbW1hT25lTGluZSgpIHsKKyA9PiAxMTYgICAgICAgIHxpbmxp
bmUoKSwgaW5saW5lKCksIGlubGluZSgpOworICAgIDExNyAgICB9CisgICAgMTE4ICAgIAorICAg
IDExOSAgICBmdW5jdGlvbiBjb21tYU11bHRpTGluZSgpIHsKKworSU5TRVJUSU5HIEFUOiAxMTY6
NQorUEFVU0VTIEFUOiAxMTY6MTQKKyAgICAxMTMgICAgfTsKKyAgICAxMTQgICAgCisgICAgMTE1
ICAgIGZ1bmN0aW9uIGNvbW1hT25lTGluZSgpIHsKKy09PiAxMTYgICAgICAgIGkjbmxpbmUoKSwg
fGlubGluZSgpLCBpbmxpbmUoKTsKKyAgICAxMTcgICAgfQorICAgIDExOCAgICAKKyAgICAxMTkg
ICAgZnVuY3Rpb24gY29tbWFNdWx0aUxpbmUoKSB7CisKK0lOU0VSVElORyBBVDogMTE2OjE1CitQ
QVVTRVMgQVQ6IDExNjoyNAorICAgIDExMyAgICB9OworICAgIDExNCAgICAKKyAgICAxMTUgICAg
ZnVuY3Rpb24gY29tbWFPbmVMaW5lKCkgeworLT0+IDExNiAgICAgICAgaW5saW5lKCksIGkjbmxp
bmUoKSwgfGlubGluZSgpOworICAgIDExNyAgICB9CisgICAgMTE4ICAgIAorICAgIDExOSAgICBm
dW5jdGlvbiBjb21tYU11bHRpTGluZSgpIHsKKworSU5TRVJUSU5HIEFUOiAxMTY6MjUKK1BBVVNF
UyBBVDogMTE3OjAKKyAgICAxMTMgICAgfTsKKyAgICAxMTQgICAgCisgICAgMTE1ICAgIGZ1bmN0
aW9uIGNvbW1hT25lTGluZSgpIHsKKyAtPiAxMTYgICAgICAgIGlubGluZSgpLCBpbmxpbmUoKSwg
aSNubGluZSgpOworID0+IDExNyAgICB8fQorICAgIDExOCAgICAKKyAgICAxMTkgICAgZnVuY3Rp
b24gY29tbWFNdWx0aUxpbmUoKSB7CisgICAgMTIwICAgICAgICBpbmxpbmUoKSwKKworSU5TRVJU
SU5HIEFUOiAxMTk6MAorUEFVU0VTIEFUOiAxMjA6NAorICAgIDExNiAgICAgICAgaW5saW5lKCks
IGlubGluZSgpLCBpbmxpbmUoKTsKKyAgICAxMTcgICAgfQorICAgIDExOCAgICAKKyAtPiAxMTkg
ICAgI2Z1bmN0aW9uIGNvbW1hTXVsdGlMaW5lKCkgeworID0+IDEyMCAgICAgICAgfGlubGluZSgp
LAorICAgIDEyMSAgICAgICAgaW5saW5lKCksCisgICAgMTIyICAgICAgICBpbmxpbmUoKTsKKyAg
ICAxMjMgICAgfQorCitJTlNFUlRJTkcgQVQ6IDEyMDo1CitQQVVTRVMgQVQ6IDEyMTo0CisgICAg
MTE3ICAgIH0KKyAgICAxMTggICAgCisgICAgMTE5ICAgIGZ1bmN0aW9uIGNvbW1hTXVsdGlMaW5l
KCkgeworIC0+IDEyMCAgICAgICAgaSNubGluZSgpLAorID0+IDEyMSAgICAgICAgfGlubGluZSgp
LAorICAgIDEyMiAgICAgICAgaW5saW5lKCk7CisgICAgMTIzICAgIH0KKyAgICAxMjQgICAgCisK
K0lOU0VSVElORyBBVDogMTIxOjUKK1BBVVNFUyBBVDogMTIyOjQKKyAgICAxMTggICAgCisgICAg
MTE5ICAgIGZ1bmN0aW9uIGNvbW1hTXVsdGlMaW5lKCkgeworICAgIDEyMCAgICAgICAgaW5saW5l
KCksCisgLT4gMTIxICAgICAgICBpI25saW5lKCksCisgPT4gMTIyICAgICAgICB8aW5saW5lKCk7
CisgICAgMTIzICAgIH0KKyAgICAxMjQgICAgCisKK0lOU0VSVElORyBBVDogMTIyOjUKK1BBVVNF
UyBBVDogMTIzOjAKKyAgICAxMTkgICAgZnVuY3Rpb24gY29tbWFNdWx0aUxpbmUoKSB7CisgICAg
MTIwICAgICAgICBpbmxpbmUoKSwKKyAgICAxMjEgICAgICAgIGlubGluZSgpLAorIC0+IDEyMiAg
ICAgICAgaSNubGluZSgpOworID0+IDEyMyAgICB8fQorICAgIDEyNCAgICAKIAogCiAtLSBSdW5u
aW5nIHRlc3QgY2FzZTogRGVidWdnZXIucmVzb2x2ZWRCcmVha3BvaW50LmR1bXBBbGxMb2NhdGlv
bnMuVW5pY29kZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2Jy
ZWFrcG9pbnRzL3Jlc29sdmVkLWR1bXAtZWFjaC1saW5lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50cy9yZXNvbHZlZC1kdW1wLWVhY2gtbGlu
ZS1leHBlY3RlZC50eHQKaW5kZXggZjAwZjI5NzBiMGNiOTJhZDg1YjlkODlmODczMGRmOTc1NmUw
YjMyMi4uMzE2NjU4NGRmNzc0MzlkZjJiNDUyZTY0OWQ0ZDE2MjA0Zjc3NGU5YSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnRzL3Jlc29sdmVkLWR1
bXAtZWFjaC1saW5lLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVi
dWdnZXIvYnJlYWtwb2ludHMvcmVzb2x2ZWQtZHVtcC1lYWNoLWxpbmUtZXhwZWN0ZWQudHh0CkBA
IC0yNDg4LDE1ICsyNDg4LDE0IEBAIFBBVVNFUyBBVDogMTY0OjAKIAogCiBJTlNFUlRJTkcgQVQ6
IDE2NTowCi1QQVVTRVMgQVQ6IDE2NjowCitQQVVTRVMgQVQ6IDE2NTo0CiAgICAgMTYyICAgIH0K
ICAgICAxNjMgICAgCiAgICAgMTY0ICAgIHZhciB2MSA9IDEsCi0gLT4gMTY1ICAgICMgICAgdjIg
PSAxOwotID0+IDE2NiAgICB8bGV0IGwxID0gMiwKKy09PiAxNjUgICAgIyAgICB8djIgPSAxOwor
ICAgIDE2NiAgICBsZXQgbDEgPSAyLAogICAgIDE2NyAgICAgICAgbDIgPSAyOwogICAgIDE2OCAg
ICBjb25zdCBjMSA9IDMsCi0gICAgMTY5ICAgICAgICBjMiA9IDM7CiAKIAogSU5TRVJUSU5HIEFU
OiAxNjY6MApAQCAtMjUxMSwxNSArMjUxMCwxNCBAQCBQQVVTRVMgQVQ6IDE2NjowCiAKIAogSU5T
RVJUSU5HIEFUOiAxNjc6MAotUEFVU0VTIEFUOiAxNjg6MAorUEFVU0VTIEFUOiAxNjc6NAogICAg
IDE2NCAgICB2YXIgdjEgPSAxLAogICAgIDE2NSAgICAgICAgdjIgPSAxOwogICAgIDE2NiAgICBs
ZXQgbDEgPSAyLAotIC0+IDE2NyAgICAjICAgIGwyID0gMjsKLSA9PiAxNjggICAgfGNvbnN0IGMx
ID0gMywKKy09PiAxNjcgICAgIyAgICB8bDIgPSAyOworICAgIDE2OCAgICBjb25zdCBjMSA9IDMs
CiAgICAgMTY5ICAgICAgICBjMiA9IDM7CiAgICAgMTcwICAgIAotICAgIDE3MSAgICB2MSA9IHYy
ID0gdjE7CiAKIAogSU5TRVJUSU5HIEFUOiAxNjg6MApAQCAtMjUzNCwxNiArMjUzMiwxNCBAQCBQ
QVVTRVMgQVQ6IDE2ODowCiAKIAogSU5TRVJUSU5HIEFUOiAxNjk6MAotUEFVU0VTIEFUOiAxNzE6
MAorUEFVU0VTIEFUOiAxNjk6NAogICAgIDE2NiAgICBsZXQgbDEgPSAyLAogICAgIDE2NyAgICAg
ICAgbDIgPSAyOwogICAgIDE2OCAgICBjb25zdCBjMSA9IDMsCi0gLT4gMTY5ICAgICMgICAgYzIg
PSAzOworLT0+IDE2OSAgICAjICAgIHxjMiA9IDM7CiAgICAgMTcwICAgIAotID0+IDE3MSAgICB8
djEgPSB2MiA9IHYxOworICAgIDE3MSAgICB2MSA9IHYyID0gdjE7CiAgICAgMTcyICAgIAotICAg
IDE3MyAgICB2YXIge3gsIHl9ID0gb2JqOwotICAgIDE3NCAgICB2YXIgW3csIHpdID0gYXJyOwog
CiAKIElOU0VSVElORyBBVDogMTcwOjAKQEAgLTMwMTgsNiArMzAxNCw3IEBAIFBBVVNFUyBBVDog
MjA4OjQKICA9PiAyMDggICAgaWYgKHxTdHJpbmcucmF3YHRlc3RgKQogICAgIDIwOSAgICAgICAg
YSgpOwogICAgIDIxMCAgICAKKyAgICAyMTEgICAgYSgpLCBiKCksIGMoKTsKIAogCiBJTlNFUlRJ
TkcgQVQ6IDIwODowCkBAIC0zMDI4LDYgKzMwMjUsNyBAQCBQQVVTRVMgQVQ6IDIwODo0CiAtPT4g
MjA4ICAgICNpZiAofFN0cmluZy5yYXdgdGVzdGApCiAgICAgMjA5ICAgICAgICBhKCk7CiAgICAg
MjEwICAgIAorICAgIDIxMSAgICBhKCksIGIoKSwgYygpOwogCiAKIElOU0VSVElORyBBVDogMjA5
OjAKQEAgLTMwMzcsOSArMzAzNSw3NiBAQCBQQVVTRVMgQVQ6IDIwOTo0CiAgICAgMjA4ICAgIGlm
IChTdHJpbmcucmF3YHRlc3RgKQogLT0+IDIwOSAgICAjICAgIHxhKCk7CiAgICAgMjEwICAgIAor
ICAgIDIxMSAgICBhKCksIGIoKSwgYygpOworICAgIDIxMiAgICAKIAogCiBJTlNFUlRJTkcgQVQ6
IDIxMDowCitQQVVTRVMgQVQ6IDIxMTowCisgICAgMjA3ICAgIAorICAgIDIwOCAgICBpZiAoU3Ry
aW5nLnJhd2B0ZXN0YCkKKyAgICAyMDkgICAgICAgIGEoKTsKKyAtPiAyMTAgICAgIworID0+IDIx
MSAgICB8YSgpLCBiKCksIGMoKTsKKyAgICAyMTIgICAgCisgICAgMjEzICAgIGEoKSwKKyAgICAy
MTQgICAgYigpLAorCisKK0lOU0VSVElORyBBVDogMjExOjAKK1BBVVNFUyBBVDogMjExOjAKKyAg
ICAyMDggICAgaWYgKFN0cmluZy5yYXdgdGVzdGApCisgICAgMjA5ICAgICAgICBhKCk7CisgICAg
MjEwICAgIAorLT0+IDIxMSAgICB8YSgpLCBiKCksIGMoKTsKKyAgICAyMTIgICAgCisgICAgMjEz
ICAgIGEoKSwKKyAgICAyMTQgICAgYigpLAorCisKK0lOU0VSVElORyBBVDogMjEyOjAKK1BBVVNF
UyBBVDogMjEzOjAKKyAgICAyMDkgICAgICAgIGEoKTsKKyAgICAyMTAgICAgCisgICAgMjExICAg
IGEoKSwgYigpLCBjKCk7CisgLT4gMjEyICAgICMKKyA9PiAyMTMgICAgfGEoKSwKKyAgICAyMTQg
ICAgYigpLAorICAgIDIxNSAgICBjKCk7CisgICAgMjE2ICAgIAorCisKK0lOU0VSVElORyBBVDog
MjEzOjAKK1BBVVNFUyBBVDogMjEzOjAKKyAgICAyMTAgICAgCisgICAgMjExICAgIGEoKSwgYigp
LCBjKCk7CisgICAgMjEyICAgIAorLT0+IDIxMyAgICB8YSgpLAorICAgIDIxNCAgICBiKCksCisg
ICAgMjE1ICAgIGMoKTsKKyAgICAyMTYgICAgCisKKworSU5TRVJUSU5HIEFUOiAyMTQ6MAorUEFV
U0VTIEFUOiAyMTQ6MAorICAgIDIxMSAgICBhKCksIGIoKSwgYygpOworICAgIDIxMiAgICAKKyAg
ICAyMTMgICAgYSgpLAorLT0+IDIxNCAgICB8YigpLAorICAgIDIxNSAgICBjKCk7CisgICAgMjE2
ICAgIAorCisKK0lOU0VSVElORyBBVDogMjE1OjAKK1BBVVNFUyBBVDogMjE1OjAKKyAgICAyMTIg
ICAgCisgICAgMjEzICAgIGEoKSwKKyAgICAyMTQgICAgYigpLAorLT0+IDIxNSAgICB8YygpOwor
ICAgIDIxNiAgICAKKworCitJTlNFUlRJTkcgQVQ6IDIxNjowCiBQUk9EVUNFUzogQ291bGQgbm90
IHJlc29sdmUgYnJlYWtwb2ludAogCiAtLSBSdW5uaW5nIHRlc3QgY2FzZTogRGVidWdnZXIucmVz
b2x2ZWRCcmVha3BvaW50LmR1bXBFYWNoTGluZS5GdW5jdGlvbnMKQEAgLTQ0NDAsNiArNDUwNSw3
IEBAIFBBVVNFUyBBVDogMTEyOjQKIC09PiAxMTIgICAgIyAgICB8fSAgIAogICAgIDExMyAgICB9
OwogICAgIDExNCAgICAKKyAgICAxMTUgICAgZnVuY3Rpb24gY29tbWFPbmVMaW5lKCkgewogCiAK
IElOU0VSVElORyBBVDogMTEzOjAKQEAgLTQ0NDgsNiArNDUxNCw5OSBAQCBQUk9EVUNFUzogQ291
bGQgbm90IHJlc29sdmUgYnJlYWtwb2ludAogSU5TRVJUSU5HIEFUOiAxMTQ6MAogUFJPRFVDRVM6
IENvdWxkIG5vdCByZXNvbHZlIGJyZWFrcG9pbnQKIAorSU5TRVJUSU5HIEFUOiAxMTU6MAorUEFV
U0VTIEFUOiAxMTY6NAorICAgIDExMiAgICAgICAgfSAgIAorICAgIDExMyAgICB9OworICAgIDEx
NCAgICAKKyAtPiAxMTUgICAgI2Z1bmN0aW9uIGNvbW1hT25lTGluZSgpIHsKKyA9PiAxMTYgICAg
ICAgIHxpbmxpbmUoKSwgaW5saW5lKCksIGlubGluZSgpOworICAgIDExNyAgICB9CisgICAgMTE4
ICAgIAorICAgIDExOSAgICBmdW5jdGlvbiBjb21tYU11bHRpTGluZSgpIHsKKworCitJTlNFUlRJ
TkcgQVQ6IDExNjowCitQQVVTRVMgQVQ6IDExNjo0CisgICAgMTEzICAgIH07CisgICAgMTE0ICAg
IAorICAgIDExNSAgICBmdW5jdGlvbiBjb21tYU9uZUxpbmUoKSB7CistPT4gMTE2ICAgICMgICAg
fGlubGluZSgpLCBpbmxpbmUoKSwgaW5saW5lKCk7CisgICAgMTE3ICAgIH0KKyAgICAxMTggICAg
CisgICAgMTE5ICAgIGZ1bmN0aW9uIGNvbW1hTXVsdGlMaW5lKCkgeworCisKK0lOU0VSVElORyBB
VDogMTE3OjAKK1BBVVNFUyBBVDogMTE3OjAKKyAgICAxMTQgICAgCisgICAgMTE1ICAgIGZ1bmN0
aW9uIGNvbW1hT25lTGluZSgpIHsKKyAgICAxMTYgICAgICAgIGlubGluZSgpLCBpbmxpbmUoKSwg
aW5saW5lKCk7CistPT4gMTE3ICAgIHx9CisgICAgMTE4ICAgIAorICAgIDExOSAgICBmdW5jdGlv
biBjb21tYU11bHRpTGluZSgpIHsKKyAgICAxMjAgICAgICAgIGlubGluZSgpLAorCisKK0lOU0VS
VElORyBBVDogMTE4OjAKK1BST0RVQ0VTOiBDb3VsZCBub3QgcmVzb2x2ZSBicmVha3BvaW50CisK
K0lOU0VSVElORyBBVDogMTE5OjAKK1BBVVNFUyBBVDogMTIwOjQKKyAgICAxMTYgICAgICAgIGlu
bGluZSgpLCBpbmxpbmUoKSwgaW5saW5lKCk7CisgICAgMTE3ICAgIH0KKyAgICAxMTggICAgCisg
LT4gMTE5ICAgICNmdW5jdGlvbiBjb21tYU11bHRpTGluZSgpIHsKKyA9PiAxMjAgICAgICAgIHxp
bmxpbmUoKSwKKyAgICAxMjEgICAgICAgIGlubGluZSgpLAorICAgIDEyMiAgICAgICAgaW5saW5l
KCk7CisgICAgMTIzICAgIH0KKworCitJTlNFUlRJTkcgQVQ6IDEyMDowCitQQVVTRVMgQVQ6IDEy
MDo0CisgICAgMTE3ICAgIH0KKyAgICAxMTggICAgCisgICAgMTE5ICAgIGZ1bmN0aW9uIGNvbW1h
TXVsdGlMaW5lKCkgeworLT0+IDEyMCAgICAjICAgIHxpbmxpbmUoKSwKKyAgICAxMjEgICAgICAg
IGlubGluZSgpLAorICAgIDEyMiAgICAgICAgaW5saW5lKCk7CisgICAgMTIzICAgIH0KKworCitJ
TlNFUlRJTkcgQVQ6IDEyMTowCitQQVVTRVMgQVQ6IDEyMTo0CisgICAgMTE4ICAgIAorICAgIDEx
OSAgICBmdW5jdGlvbiBjb21tYU11bHRpTGluZSgpIHsKKyAgICAxMjAgICAgICAgIGlubGluZSgp
LAorLT0+IDEyMSAgICAjICAgIHxpbmxpbmUoKSwKKyAgICAxMjIgICAgICAgIGlubGluZSgpOwor
ICAgIDEyMyAgICB9CisgICAgMTI0ICAgIAorCisKK0lOU0VSVElORyBBVDogMTIyOjAKK1BBVVNF
UyBBVDogMTIyOjQKKyAgICAxMTkgICAgZnVuY3Rpb24gY29tbWFNdWx0aUxpbmUoKSB7CisgICAg
MTIwICAgICAgICBpbmxpbmUoKSwKKyAgICAxMjEgICAgICAgIGlubGluZSgpLAorLT0+IDEyMiAg
ICAjICAgIHxpbmxpbmUoKTsKKyAgICAxMjMgICAgfQorICAgIDEyNCAgICAKKworCitJTlNFUlRJ
TkcgQVQ6IDEyMzowCitQQVVTRVMgQVQ6IDEyMzowCisgICAgMTIwICAgICAgICBpbmxpbmUoKSwK
KyAgICAxMjEgICAgICAgIGlubGluZSgpLAorICAgIDEyMiAgICAgICAgaW5saW5lKCk7CistPT4g
MTIzICAgIHx9CisgICAgMTI0ICAgIAorCisKK0lOU0VSVElORyBBVDogMTI0OjAKK1BST0RVQ0VT
OiBDb3VsZCBub3QgcmVzb2x2ZSBicmVha3BvaW50CisKIC0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBE
ZWJ1Z2dlci5yZXNvbHZlZEJyZWFrcG9pbnQuZHVtcEVhY2hMaW5lLlVuaWNvZGUKIAogSU5TRVJU
SU5HIEFUOiAwOjAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9i
cmVha3BvaW50cy9yZXNvdXJjZXMvZHVtcC1mdW5jdGlvbnMuanMgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZGVidWdnZXIvYnJlYWtwb2ludHMvcmVzb3VyY2VzL2R1bXAtZnVuY3Rpb25zLmpzCmlu
ZGV4IGVmMTY0NmUzMjc4ZmQ4NTY3YTE2ZWUxMzE1MjJiYWViMWNlZmViMWQuLjdiNDc4OGMwYjlk
YTgxNjJmYTU4YzJlMzM4M2JiYjMyMDRiOTExZTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50cy9yZXNvdXJjZXMvZHVtcC1mdW5jdGlvbnMuanMK
KysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnRzL3Jlc291cmNl
cy9kdW1wLWZ1bmN0aW9ucy5qcwpAQCAtMTEyLDMgKzExMiwxMyBAQCB2YXIgZk9iaiA9IHsKICAg
ICAgICAgdmFyIHg7CiAgICAgfSAgIAogfTsKKworZnVuY3Rpb24gY29tbWFPbmVMaW5lKCkgewor
ICAgIGlubGluZSgpLCBpbmxpbmUoKSwgaW5saW5lKCk7Cit9CisKK2Z1bmN0aW9uIGNvbW1hTXVs
dGlMaW5lKCkgeworICAgIGlubGluZSgpLAorICAgIGlubGluZSgpLAorICAgIGlubGluZSgpOwor
fQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnRz
L3Jlc291cmNlcy9kdW1wLWdlbmVyYWwuanMgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdn
ZXIvYnJlYWtwb2ludHMvcmVzb3VyY2VzL2R1bXAtZ2VuZXJhbC5qcwppbmRleCA1YTQ2NjVlZDQz
YWY5ZmViOWM3NDAyZWFkNzFlYTA0NmExOGZjNGFkLi43MmM4NzAwMTYxMzRmNDAzYmI0ZDE3Zjc5
YjliZDgxZjc1YmRjMzMxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdn
ZXIvYnJlYWtwb2ludHMvcmVzb3VyY2VzL2R1bXAtZ2VuZXJhbC5qcworKysgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZGVidWdnZXIvYnJlYWtwb2ludHMvcmVzb3VyY2VzL2R1bXAtZ2VuZXJhbC5q
cwpAQCAtMjA4LDMgKzIwOCw5IEBAIGlmIChvMVsicDEiXSkKIAogaWYgKFN0cmluZy5yYXdgdGVz
dGApCiAgICAgYSgpOworCithKCksIGIoKSwgYygpOworCithKCksCitiKCksCitjKCk7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcvc3RlcE92ZXIt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3N0ZXBwaW5nL3N0
ZXBPdmVyLWV4cGVjdGVkLnR4dAppbmRleCBmNTNhYWYwYzMzY2RiNzQ3NTA5NjM0ZjBkMmEzNmMz
ZjQ1ZDU4Y2E1Li4xZGU5MGY4NTE3ZDY0YWU0MzYwMDlkNmViMjhiY2ViYzY4MWNhOGI0IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcvc3RlcE92ZXIt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zdGVwcGlu
Zy9zdGVwT3Zlci1leHBlY3RlZC50eHQKQEAgLTEsMTE5ICsxLDEyMiBAQAotQUxFUlQ6IGxvZyAx
CitBTEVSVDogZnVuY3Rpb24gbG9nIDEKK0FMRVJUOiBjb21tYSBsb2cgMQorQUxFUlQ6IGNvbW1h
IGxvZyAyCitBTEVSVDogY29tbWEgbG9nIDMKIENoZWNraW5nIHBhdXNlIGxvY2F0aW9ucyB3aGVu
IHN0ZXBwaW5nIHdpdGggInN0ZXBPdmVyIi4KIAogCiA9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IERl
YnVnZ2VyLnN0ZXBPdmVyCiAtLSBSdW5uaW5nIHRlc3QgY2FzZTogRGVidWdnZXIuc3RlcE92ZXIu
c3RhdGVtZW50cwogUEFVU0VEIChkZWJ1Z2dlci1zdGF0ZW1lbnQpCi1QQVVTRSBBVCBlbnRyeTE6
MTI6NQorUEFVU0UgQVQgdGVzdFN0YXRlbWVudHM6MTI6NQogICAgICAgOCAgICB9CiAgICAgICA5
ICAgIAotICAgICAxMCAgICBmdW5jdGlvbiBlbnRyeTEoKSB7CisgICAgIDEwICAgIGZ1bmN0aW9u
IHRlc3RTdGF0ZW1lbnRzKCkgewogIC0+ICAxMSAgICAgICAgfGRlYnVnZ2VyOwogICAgICAxMiAg
ICAgICAgbGV0IHggPSAxOwogICAgICAxMyAgICAgICAgbGV0IHkgPSAyOwogICAgICAxNCAgICB9
CiAKLVBBVVNFIEFUIGVudHJ5MToxMzo1CitQQVVTRSBBVCB0ZXN0U3RhdGVtZW50czoxMzo1CiAg
ICAgICA5ICAgIAotICAgICAxMCAgICBmdW5jdGlvbiBlbnRyeTEoKSB7CisgICAgIDEwICAgIGZ1
bmN0aW9uIHRlc3RTdGF0ZW1lbnRzKCkgewogICAgICAxMSAgICAgICAgZGVidWdnZXI7CiAgLT4g
IDEyICAgICAgICB8bGV0IHggPSAxOwogICAgICAxMyAgICAgICAgbGV0IHkgPSAyOwogICAgICAx
NCAgICB9CiAgICAgIDE1ICAgIAogCi1QQVVTRSBBVCBlbnRyeTE6MTQ6NQotICAgICAxMCAgICBm
dW5jdGlvbiBlbnRyeTEoKSB7CitQQVVTRSBBVCB0ZXN0U3RhdGVtZW50czoxNDo1CisgICAgIDEw
ICAgIGZ1bmN0aW9uIHRlc3RTdGF0ZW1lbnRzKCkgewogICAgICAxMSAgICAgICAgZGVidWdnZXI7
CiAgICAgIDEyICAgICAgICBsZXQgeCA9IDE7CiAgLT4gIDEzICAgICAgICB8bGV0IHkgPSAyOwog
ICAgICAxNCAgICB9CiAgICAgIDE1ICAgIAotICAgICAxNiAgICBmdW5jdGlvbiBlbnRyeTIoKSB7
CisgICAgIDE2ICAgIGZ1bmN0aW9uIHRlc3RGdW5jdGlvbnMoKSB7CiAKLVBBVVNFIEFUIGVudHJ5
MToxNToyCitQQVVTRSBBVCB0ZXN0U3RhdGVtZW50czoxNToyCiAgICAgIDExICAgICAgICBkZWJ1
Z2dlcjsKICAgICAgMTIgICAgICAgIGxldCB4ID0gMTsKICAgICAgMTMgICAgICAgIGxldCB5ID0g
MjsKICAtPiAgMTQgICAgfXwKICAgICAgMTUgICAgCi0gICAgIDE2ICAgIGZ1bmN0aW9uIGVudHJ5
MigpIHsKKyAgICAgMTYgICAgZnVuY3Rpb24gdGVzdEZ1bmN0aW9ucygpIHsKICAgICAgMTcgICAg
ICAgIGRlYnVnZ2VyOwogCiBSRVNVTUVECiAKIC0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBEZWJ1Z2dl
ci5zdGVwT3Zlci5mdW5jdGlvbgogUEFVU0VEIChkZWJ1Z2dlci1zdGF0ZW1lbnQpCi1QQVVTRSBB
VCBlbnRyeTI6MTg6NQorUEFVU0UgQVQgdGVzdEZ1bmN0aW9uczoxODo1CiAgICAgIDE0ICAgIH0K
ICAgICAgMTUgICAgCi0gICAgIDE2ICAgIGZ1bmN0aW9uIGVudHJ5MigpIHsKKyAgICAgMTYgICAg
ZnVuY3Rpb24gdGVzdEZ1bmN0aW9ucygpIHsKICAtPiAgMTcgICAgICAgIHxkZWJ1Z2dlcjsKICAg
ICAgMTggICAgICAgIGxldCBiZWZvcmUgPSAxOwotICAgICAxOSAgICAgICAgdGVzdEFsZXJ0KCJs
b2cgMSIpOworICAgICAxOSAgICAgICAgdGVzdEFsZXJ0KCJmdW5jdGlvbiBsb2cgMSIpOwogICAg
ICAyMCAgICAgICAgbGV0IGFmdGVyID0gMjsKIAotUEFVU0UgQVQgZW50cnkyOjE5OjUKK1BBVVNF
IEFUIHRlc3RGdW5jdGlvbnM6MTk6NQogICAgICAxNSAgICAKLSAgICAgMTYgICAgZnVuY3Rpb24g
ZW50cnkyKCkgeworICAgICAxNiAgICBmdW5jdGlvbiB0ZXN0RnVuY3Rpb25zKCkgewogICAgICAx
NyAgICAgICAgZGVidWdnZXI7CiAgLT4gIDE4ICAgICAgICB8bGV0IGJlZm9yZSA9IDE7Ci0gICAg
IDE5ICAgICAgICB0ZXN0QWxlcnQoImxvZyAxIik7CisgICAgIDE5ICAgICAgICB0ZXN0QWxlcnQo
ImZ1bmN0aW9uIGxvZyAxIik7CiAgICAgIDIwICAgICAgICBsZXQgYWZ0ZXIgPSAyOwogICAgICAy
MSAgICB9CiAKLVBBVVNFIEFUIGVudHJ5MjoyMDo1Ci0gICAgIDE2ICAgIGZ1bmN0aW9uIGVudHJ5
MigpIHsKK1BBVVNFIEFUIHRlc3RGdW5jdGlvbnM6MjA6NQorICAgICAxNiAgICBmdW5jdGlvbiB0
ZXN0RnVuY3Rpb25zKCkgewogICAgICAxNyAgICAgICAgZGVidWdnZXI7CiAgICAgIDE4ICAgICAg
ICBsZXQgYmVmb3JlID0gMTsKLSAtPiAgMTkgICAgICAgIHx0ZXN0QWxlcnQoImxvZyAxIik7Cisg
LT4gIDE5ICAgICAgICB8dGVzdEFsZXJ0KCJmdW5jdGlvbiBsb2cgMSIpOwogICAgICAyMCAgICAg
ICAgbGV0IGFmdGVyID0gMjsKICAgICAgMjEgICAgfQogICAgICAyMiAgICAKIAotUEFVU0UgQVQg
ZW50cnkyOjIxOjUKK1BBVVNFIEFUIHRlc3RGdW5jdGlvbnM6MjE6NQogICAgICAxNyAgICAgICAg
ZGVidWdnZXI7CiAgICAgIDE4ICAgICAgICBsZXQgYmVmb3JlID0gMTsKLSAgICAgMTkgICAgICAg
IHRlc3RBbGVydCgibG9nIDEiKTsKKyAgICAgMTkgICAgICAgIHRlc3RBbGVydCgiZnVuY3Rpb24g
bG9nIDEiKTsKICAtPiAgMjAgICAgICAgIHxsZXQgYWZ0ZXIgPSAyOwogICAgICAyMSAgICB9CiAg
ICAgIDIyICAgIAotICAgICAyMyAgICBmdW5jdGlvbiBlbnRyeTMoKSB7CisgICAgIDIzICAgIGZ1
bmN0aW9uIHRlc3RFdmFsKCkgewogCi1QQVVTRSBBVCBlbnRyeTI6MjI6MgorUEFVU0UgQVQgdGVz
dEZ1bmN0aW9uczoyMjoyCiAgICAgIDE4ICAgICAgICBsZXQgYmVmb3JlID0gMTsKLSAgICAgMTkg
ICAgICAgIHRlc3RBbGVydCgibG9nIDEiKTsKKyAgICAgMTkgICAgICAgIHRlc3RBbGVydCgiZnVu
Y3Rpb24gbG9nIDEiKTsKICAgICAgMjAgICAgICAgIGxldCBhZnRlciA9IDI7CiAgLT4gIDIxICAg
IH18CiAgICAgIDIyICAgIAotICAgICAyMyAgICBmdW5jdGlvbiBlbnRyeTMoKSB7CisgICAgIDIz
ICAgIGZ1bmN0aW9uIHRlc3RFdmFsKCkgewogICAgICAyNCAgICAgICAgZGVidWdnZXI7CiAKIFJF
U1VNRUQKIAogLS0gUnVubmluZyB0ZXN0IGNhc2U6IERlYnVnZ2VyLnN0ZXBPdmVyLmV2YWwKIFBB
VVNFRCAoZGVidWdnZXItc3RhdGVtZW50KQotUEFVU0UgQVQgZW50cnkzOjI1OjUKK1BBVVNFIEFU
IHRlc3RFdmFsOjI1OjUKICAgICAgMjEgICAgfQogICAgICAyMiAgICAKLSAgICAgMjMgICAgZnVu
Y3Rpb24gZW50cnkzKCkgeworICAgICAyMyAgICBmdW5jdGlvbiB0ZXN0RXZhbCgpIHsKICAtPiAg
MjQgICAgICAgIHxkZWJ1Z2dlcjsKICAgICAgMjUgICAgICAgIGxldCBiZWZvcmUgPSAxOwogICAg
ICAyNiAgICAgICAgZXZhbCgiMSArIDEiKTsKICAgICAgMjcgICAgICAgIGxldCBhZnRlciA9IDI7
CiAKLVBBVVNFIEFUIGVudHJ5MzoyNjo1CitQQVVTRSBBVCB0ZXN0RXZhbDoyNjo1CiAgICAgIDIy
ICAgIAotICAgICAyMyAgICBmdW5jdGlvbiBlbnRyeTMoKSB7CisgICAgIDIzICAgIGZ1bmN0aW9u
IHRlc3RFdmFsKCkgewogICAgICAyNCAgICAgICAgZGVidWdnZXI7CiAgLT4gIDI1ICAgICAgICB8
bGV0IGJlZm9yZSA9IDE7CiAgICAgIDI2ICAgICAgICBldmFsKCIxICsgMSIpOwogICAgICAyNyAg
ICAgICAgbGV0IGFmdGVyID0gMjsKICAgICAgMjggICAgfQogCi1QQVVTRSBBVCBlbnRyeTM6Mjc6
NQotICAgICAyMyAgICBmdW5jdGlvbiBlbnRyeTMoKSB7CitQQVVTRSBBVCB0ZXN0RXZhbDoyNzo1
CisgICAgIDIzICAgIGZ1bmN0aW9uIHRlc3RFdmFsKCkgewogICAgICAyNCAgICAgICAgZGVidWdn
ZXI7CiAgICAgIDI1ICAgICAgICBsZXQgYmVmb3JlID0gMTsKICAtPiAgMjYgICAgICAgIHxldmFs
KCIxICsgMSIpOwpAQCAtMTIxLDIyICsxMjQsMjIgQEAgUEFVU0UgQVQgZW50cnkzOjI3OjUKICAg
ICAgMjggICAgfQogICAgICAyOSAgICAKIAotUEFVU0UgQVQgZW50cnkzOjI4OjUKK1BBVVNFIEFU
IHRlc3RFdmFsOjI4OjUKICAgICAgMjQgICAgICAgIGRlYnVnZ2VyOwogICAgICAyNSAgICAgICAg
bGV0IGJlZm9yZSA9IDE7CiAgICAgIDI2ICAgICAgICBldmFsKCIxICsgMSIpOwogIC0+ICAyNyAg
ICAgICAgfGxldCBhZnRlciA9IDI7CiAgICAgIDI4ICAgIH0KICAgICAgMjkgICAgCi0gICAgIDMw
ICAgIGZ1bmN0aW9uIGVudHJ5NCgpIHsKKyAgICAgMzAgICAgZnVuY3Rpb24gdGVzdExvY2FsRnVu
Y3Rpb24oKSB7CiAKLVBBVVNFIEFUIGVudHJ5MzoyOToyCitQQVVTRSBBVCB0ZXN0RXZhbDoyOToy
CiAgICAgIDI1ICAgICAgICBsZXQgYmVmb3JlID0gMTsKICAgICAgMjYgICAgICAgIGV2YWwoIjEg
KyAxIik7CiAgICAgIDI3ICAgICAgICBsZXQgYWZ0ZXIgPSAyOwogIC0+ICAyOCAgICB9fAogICAg
ICAyOSAgICAKLSAgICAgMzAgICAgZnVuY3Rpb24gZW50cnk0KCkgeworICAgICAzMCAgICBmdW5j
dGlvbiB0ZXN0TG9jYWxGdW5jdGlvbigpIHsKICAgICAgMzEgICAgICAgIChmdW5jdGlvbigpIHsK
IAogUkVTVU1FRApAQCAtMTQ1LDcgKzE0OCw3IEBAIFJFU1VNRUQKIFBBVVNFRCAoZGVidWdnZXIt
c3RhdGVtZW50KQogUEFVU0UgQVQgPGFub255bW91cz46MzM6OQogICAgICAyOSAgICAKLSAgICAg
MzAgICAgZnVuY3Rpb24gZW50cnk0KCkgeworICAgICAzMCAgICBmdW5jdGlvbiB0ZXN0TG9jYWxG
dW5jdGlvbigpIHsKICAgICAgMzEgICAgICAgIChmdW5jdGlvbigpIHsKICAtPiAgMzIgICAgICAg
ICAgICB8ZGVidWdnZXI7CiAgICAgIDMzICAgICAgICAgICAgbGV0IGlubmVyID0gMTsKQEAgLTE1
Myw3ICsxNTYsNyBAQCBQQVVTRSBBVCA8YW5vbnltb3VzPjozMzo5CiAgICAgIDM1ICAgICAgICBs
ZXQgb3V0ZXIgPSAyOwogCiBQQVVTRSBBVCA8YW5vbnltb3VzPjozNDo5Ci0gICAgIDMwICAgIGZ1
bmN0aW9uIGVudHJ5NCgpIHsKKyAgICAgMzAgICAgZnVuY3Rpb24gdGVzdExvY2FsRnVuY3Rpb24o
KSB7CiAgICAgIDMxICAgICAgICAoZnVuY3Rpb24oKSB7CiAgICAgIDMyICAgICAgICAgICAgZGVi
dWdnZXI7CiAgLT4gIDMzICAgICAgICAgICAgfGxldCBpbm5lciA9IDE7CkBAIC0xNzAsMjMgKzE3
Myw5OSBAQCBQQVVTRSBBVCA8YW5vbnltb3VzPjozNTo2CiAgICAgIDM2ICAgIH0KICAgICAgMzcg
ICAgCiAKLVBBVVNFIEFUIGVudHJ5NDozNjo1CitQQVVTRSBBVCB0ZXN0TG9jYWxGdW5jdGlvbjoz
Njo1CiAgICAgIDMyICAgICAgICAgICAgZGVidWdnZXI7CiAgICAgIDMzICAgICAgICAgICAgbGV0
IGlubmVyID0gMTsKICAgICAgMzQgICAgICAgIH0pKCk7CiAgLT4gIDM1ICAgICAgICB8bGV0IG91
dGVyID0gMjsKICAgICAgMzYgICAgfQogICAgICAzNyAgICAKLSAgICAgMzggICAgLy8gLS0tLS0t
LS0tCisgICAgIDM4ICAgIGZ1bmN0aW9uIHRlc3RDb21tYXMoKSB7CiAKLVBBVVNFIEFUIGVudHJ5
NDozNzoyCitQQVVTRSBBVCB0ZXN0TG9jYWxGdW5jdGlvbjozNzoyCiAgICAgIDMzICAgICAgICAg
ICAgbGV0IGlubmVyID0gMTsKICAgICAgMzQgICAgICAgIH0pKCk7CiAgICAgIDM1ICAgICAgICBs
ZXQgb3V0ZXIgPSAyOwogIC0+ICAzNiAgICB9fAogICAgICAzNyAgICAKLSAgICAgMzggICAgLy8g
LS0tLS0tLS0tCi0gICAgIDM5ICAgIAorICAgICAzOCAgICBmdW5jdGlvbiB0ZXN0Q29tbWFzKCkg
eworICAgICAzOSAgICAgICAgZGVidWdnZXI7CisKK1JFU1VNRUQKKworLS0gUnVubmluZyB0ZXN0
IGNhc2U6IERlYnVnZ2VyLnN0ZXBPdmVyLmNvbW1hcworUEFVU0VEIChkZWJ1Z2dlci1zdGF0ZW1l
bnQpCitQQVVTRSBBVCB0ZXN0Q29tbWFzOjQwOjUKKyAgICAgMzYgICAgfQorICAgICAzNyAgICAK
KyAgICAgMzggICAgZnVuY3Rpb24gdGVzdENvbW1hcygpIHsKKyAtPiAgMzkgICAgICAgIHxkZWJ1
Z2dlcjsKKyAgICAgNDAgICAgICAgIGxldCBhID0gMSwKKyAgICAgNDEgICAgICAgICAgICBiID0g
MiwKKyAgICAgNDIgICAgICAgICAgICBjID0gMzsKKworUEFVU0UgQVQgdGVzdENvbW1hczo0MTo1
CisgICAgIDM3ICAgIAorICAgICAzOCAgICBmdW5jdGlvbiB0ZXN0Q29tbWFzKCkgeworICAgICAz
OSAgICAgICAgZGVidWdnZXI7CisgLT4gIDQwICAgICAgICB8bGV0IGEgPSAxLAorICAgICA0MSAg
ICAgICAgICAgIGIgPSAyLAorICAgICA0MiAgICAgICAgICAgIGMgPSAzOworICAgICA0MyAgICAg
ICAgdGVzdEFsZXJ0KCJjb21tYSBsb2cgMSIpLCB0ZXN0QWxlcnQoImNvbW1hIGxvZyAyIiksIHRl
c3RBbGVydCgiY29tbWEgbG9nIDMiKTsKKworUEFVU0UgQVQgdGVzdENvbW1hczo0Mjo5CisgICAg
IDM4ICAgIGZ1bmN0aW9uIHRlc3RDb21tYXMoKSB7CisgICAgIDM5ICAgICAgICBkZWJ1Z2dlcjsK
KyAgICAgNDAgICAgICAgIGxldCBhID0gMSwKKyAtPiAgNDEgICAgICAgICAgICB8YiA9IDIsCisg
ICAgIDQyICAgICAgICAgICAgYyA9IDM7CisgICAgIDQzICAgICAgICB0ZXN0QWxlcnQoImNvbW1h
IGxvZyAxIiksIHRlc3RBbGVydCgiY29tbWEgbG9nIDIiKSwgdGVzdEFsZXJ0KCJjb21tYSBsb2cg
MyIpOworICAgICA0NCAgICB9CisKK1BBVVNFIEFUIHRlc3RDb21tYXM6NDM6OQorICAgICAzOSAg
ICAgICAgZGVidWdnZXI7CisgICAgIDQwICAgICAgICBsZXQgYSA9IDEsCisgICAgIDQxICAgICAg
ICAgICAgYiA9IDIsCisgLT4gIDQyICAgICAgICAgICAgfGMgPSAzOworICAgICA0MyAgICAgICAg
dGVzdEFsZXJ0KCJjb21tYSBsb2cgMSIpLCB0ZXN0QWxlcnQoImNvbW1hIGxvZyAyIiksIHRlc3RB
bGVydCgiY29tbWEgbG9nIDMiKTsKKyAgICAgNDQgICAgfQorICAgICA0NSAgICAKKworUEFVU0Ug
QVQgdGVzdENvbW1hczo0NDo1CisgICAgIDQwICAgICAgICBsZXQgYSA9IDEsCisgICAgIDQxICAg
ICAgICAgICAgYiA9IDIsCisgICAgIDQyICAgICAgICAgICAgYyA9IDM7CisgLT4gIDQzICAgICAg
ICB8dGVzdEFsZXJ0KCJjb21tYSBsb2cgMSIpLCB0ZXN0QWxlcnQoImNvbW1hIGxvZyAyIiksIHRl
c3RBbGVydCgiY29tbWEgbG9nIDMiKTsKKyAgICAgNDQgICAgfQorICAgICA0NSAgICAKKyAgICAg
NDYgICAgLy8gLS0tLS0tLS0tCisKK1BBVVNFIEFUIHRlc3RDb21tYXM6NDQ6MzEKKyAgICAgNDAg
ICAgICAgIGxldCBhID0gMSwKKyAgICAgNDEgICAgICAgICAgICBiID0gMiwKKyAgICAgNDIgICAg
ICAgICAgICBjID0gMzsKKyAtPiAgNDMgICAgICAgIHRlc3RBbGVydCgiY29tbWEgbG9nIDEiKSwg
fHRlc3RBbGVydCgiY29tbWEgbG9nIDIiKSwgdGVzdEFsZXJ0KCJjb21tYSBsb2cgMyIpOworICAg
ICA0NCAgICB9CisgICAgIDQ1ICAgIAorICAgICA0NiAgICAvLyAtLS0tLS0tLS0KKworUEFVU0Ug
QVQgdGVzdENvbW1hczo0NDo1NworICAgICA0MCAgICAgICAgbGV0IGEgPSAxLAorICAgICA0MSAg
ICAgICAgICAgIGIgPSAyLAorICAgICA0MiAgICAgICAgICAgIGMgPSAzOworIC0+ICA0MyAgICAg
ICAgdGVzdEFsZXJ0KCJjb21tYSBsb2cgMSIpLCB0ZXN0QWxlcnQoImNvbW1hIGxvZyAyIiksIHx0
ZXN0QWxlcnQoImNvbW1hIGxvZyAzIik7CisgICAgIDQ0ICAgIH0KKyAgICAgNDUgICAgCisgICAg
IDQ2ICAgIC8vIC0tLS0tLS0tLQorCitQQVVTRSBBVCB0ZXN0Q29tbWFzOjQ1OjIKKyAgICAgNDEg
ICAgICAgICAgICBiID0gMiwKKyAgICAgNDIgICAgICAgICAgICBjID0gMzsKKyAgICAgNDMgICAg
ICAgIHRlc3RBbGVydCgiY29tbWEgbG9nIDEiKSwgdGVzdEFsZXJ0KCJjb21tYSBsb2cgMiIpLCB0
ZXN0QWxlcnQoImNvbW1hIGxvZyAzIik7CisgLT4gIDQ0ICAgIH18CisgICAgIDQ1ICAgIAorICAg
ICA0NiAgICAvLyAtLS0tLS0tLS0KKyAgICAgNDcgICAgCiAKIFJFU1VNRUQKIApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3N0ZXBwaW5nL3N0ZXBPdmVyLmh0bWwg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcvc3RlcE92ZXIuaHRtbApp
bmRleCA2Yjk0OTIzYjBjZTUzYTIyMTNmNjBjY2I0NzRiNGQwODNmNjUyOGU1Li4zMjViNzdlY2Yz
Y2NjYTI0YTdkZjZhMjc1NWExYzVmZjEyN2I1OWQxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcvc3RlcE92ZXIuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcvc3RlcE92ZXIuaHRtbApAQCAtOCwyNyArOCwy
NyBAQCBmdW5jdGlvbiB0ZXN0QWxlcnQoc3RyKSB7CiAgICAgYWxlcnQoc3RyKTsKIH0KIAotZnVu
Y3Rpb24gZW50cnkxKCkgeworZnVuY3Rpb24gdGVzdFN0YXRlbWVudHMoKSB7CiAgICAgZGVidWdn
ZXI7CiAgICAgbGV0IHggPSAxOwogICAgIGxldCB5ID0gMjsKIH0KIAotZnVuY3Rpb24gZW50cnky
KCkgeworZnVuY3Rpb24gdGVzdEZ1bmN0aW9ucygpIHsKICAgICBkZWJ1Z2dlcjsKICAgICBsZXQg
YmVmb3JlID0gMTsKLSAgICB0ZXN0QWxlcnQoImxvZyAxIik7CisgICAgdGVzdEFsZXJ0KCJmdW5j
dGlvbiBsb2cgMSIpOwogICAgIGxldCBhZnRlciA9IDI7CiB9CiAKLWZ1bmN0aW9uIGVudHJ5Mygp
IHsKK2Z1bmN0aW9uIHRlc3RFdmFsKCkgewogICAgIGRlYnVnZ2VyOwogICAgIGxldCBiZWZvcmUg
PSAxOwogICAgIGV2YWwoIjEgKyAxIik7CiAgICAgbGV0IGFmdGVyID0gMjsKIH0KIAotZnVuY3Rp
b24gZW50cnk0KCkgeworZnVuY3Rpb24gdGVzdExvY2FsRnVuY3Rpb24oKSB7CiAgICAgKGZ1bmN0
aW9uKCkgewogICAgICAgICBkZWJ1Z2dlcjsKICAgICAgICAgbGV0IGlubmVyID0gMTsKQEAgLTM2
LDYgKzM2LDE0IEBAIGZ1bmN0aW9uIGVudHJ5NCgpIHsKICAgICBsZXQgb3V0ZXIgPSAyOwogfQog
CitmdW5jdGlvbiB0ZXN0Q29tbWFzKCkgeworICAgIGRlYnVnZ2VyOworICAgIGxldCBhID0gMSwK
KyAgICAgICAgYiA9IDIsCisgICAgICAgIGMgPSAzOworICAgIHRlc3RBbGVydCgiY29tbWEgbG9n
IDEiKSwgdGVzdEFsZXJ0KCJjb21tYSBsb2cgMiIpLCB0ZXN0QWxlcnQoImNvbW1hIGxvZyAzIik7
Cit9CisKIC8vIC0tLS0tLS0tLQogCiBmdW5jdGlvbiB0ZXN0KCkKQEAgLTY5LDI1ICs3NywzMSBA
QCBmdW5jdGlvbiB0ZXN0KCkKICAgICBhZGRUZXN0Q2FzZSh7CiAgICAgICAgIG5hbWU6ICJEZWJ1
Z2dlci5zdGVwT3Zlci5zdGF0ZW1lbnRzIiwKICAgICAgICAgZGVzY3JpcHRpb246ICJzdGVwLW92
ZXIgc2hvdWxkIHN0ZXAgb3ZlciBzdGF0ZW1lbnRzLiIsCi0gICAgICAgIGV4cHJlc3Npb246ICJz
ZXRUaW1lb3V0KGVudHJ5MSkiLAorICAgICAgICBleHByZXNzaW9uOiAic2V0VGltZW91dCh0ZXN0
U3RhdGVtZW50cykiLAogICAgIH0pOwogCiAgICAgYWRkVGVzdENhc2UoewogICAgICAgICBuYW1l
OiAiRGVidWdnZXIuc3RlcE92ZXIuZnVuY3Rpb24iLAogICAgICAgICBkZXNjcmlwdGlvbjogInN0
ZXAtb3ZlciBzaG91bGQgc3RlcCBvdmVyIGZ1bmN0aW9uIGNhbGxzLiIsCi0gICAgICAgIGV4cHJl
c3Npb246ICJzZXRUaW1lb3V0KGVudHJ5MikiLAorICAgICAgICBleHByZXNzaW9uOiAic2V0VGlt
ZW91dCh0ZXN0RnVuY3Rpb25zKSIsCiAgICAgfSk7CiAKICAgICBhZGRUZXN0Q2FzZSh7CiAgICAg
ICAgIG5hbWU6ICJEZWJ1Z2dlci5zdGVwT3Zlci5ldmFsIiwKICAgICAgICAgZGVzY3JpcHRpb246
ICJzdGVwLW92ZXIgc2hvdWxkIHN0ZXAgb3ZlciBhbiBldmFsIHByb2dyYW0uIiwKLSAgICAgICAg
ZXhwcmVzc2lvbjogInNldFRpbWVvdXQoZW50cnkzKSIsCisgICAgICAgIGV4cHJlc3Npb246ICJz
ZXRUaW1lb3V0KHRlc3RFdmFsKSIsCiAgICAgfSk7CiAKICAgICBhZGRUZXN0Q2FzZSh7CiAgICAg
ICAgIG5hbWU6ICJEZWJ1Z2dlci5zdGVwT3Zlci5pbm5lckZ1bmN0aW9uIiwKICAgICAgICAgZGVz
Y3JpcHRpb246ICJzdGVwLW92ZXIgc2hvdWxkIHN0ZXAgb3V0IG9mIGEgZnVuY3Rpb24gdG8gaXRz
IGNhbGxlci4iLAotICAgICAgICBleHByZXNzaW9uOiAic2V0VGltZW91dChlbnRyeTQpIiwKKyAg
ICAgICAgZXhwcmVzc2lvbjogInNldFRpbWVvdXQodGVzdExvY2FsRnVuY3Rpb24pIiwKKyAgICB9
KTsKKworICAgIGFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIkRlYnVnZ2VyLnN0ZXBPdmVy
LmNvbW1hcyIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAic3RlcC1vdmVyIHNob3VsZCBzdGVwIG92
ZXIgY29tbWEgZXhwcmVzc2lvbnMsIHRyZWF0aW5nIHRoZW0gYXMgc3RhdGVtZW50cy4iLAorICAg
ICAgICBleHByZXNzaW9uOiAic2V0VGltZW91dCh0ZXN0Q29tbWFzKSIsCiAgICAgfSk7CiAKICAg
ICBsb2FkTWFpblBhZ2VDb250ZW50KCkudGhlbigoKSA9PiB7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcvc3RlcHBpbmctY29udHJvbC1mbG93LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zdGVwcGluZy9zdGVw
cGluZy1jb250cm9sLWZsb3ctZXhwZWN0ZWQudHh0CmluZGV4IDIyN2FmMDRjZTJmNjIyMDZlM2Q0
YjVhZDU3YWIxZjc0YjQ2ZjZlODcuLjEwYTZlZmIyNDk1ZGMwOGMwOWI2Y2M0MGMyMjZkN2RjZDgy
MWUzYmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zdGVwcGlu
Zy9zdGVwcGluZy1jb250cm9sLWZsb3ctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9kZWJ1Z2dlci9zdGVwcGluZy9zdGVwcGluZy1jb250cm9sLWZsb3ctZXhwZWN0ZWQu
dHh0CkBAIC04MTAsNyArODEwLDcgQEAgUEFVU0UgQVQgZW50cnlJZldpdGhOb3RPcGVyYXRpb246
MTA4OjkKICAtPiAxMDcgICAgICAgICAgICB8YSgpOwogICAgIDEwOCAgICB9CiAgICAgMTA5ICAg
IAotICAgIDExMCAgICAvLyAtLS0tLS0tLS0KKyAgICAxMTAgICAgZnVuY3Rpb24gZW50cnlJZldp
dGhDb21tYXMoKSB7CiAKIEFDVElPTjogc3RlcC1vdmVyCiBQQVVTRSBBVCBlbnRyeUlmV2l0aE5v
dE9wZXJhdGlvbjoxMDk6MgpAQCAtODE5LDggKzgxOSw3NSBAQCBQQVVTRSBBVCBlbnRyeUlmV2l0
aE5vdE9wZXJhdGlvbjoxMDk6MgogICAgIDEwNyAgICAgICAgICAgIGEoKTsKICAtPiAxMDggICAg
fXwKICAgICAxMDkgICAgCi0gICAgMTEwICAgIC8vIC0tLS0tLS0tLQotICAgIDExMSAgICAKKyAg
ICAxMTAgICAgZnVuY3Rpb24gZW50cnlJZldpdGhDb21tYXMoKSB7CisgICAgMTExICAgICAgICBk
ZWJ1Z2dlcjsKKworQUNUSU9OOiByZXN1bWUKK1JFU1VNRUQKK1BBU1M6IFNob3VsZCBoYXZlIHVz
ZWQgYWxsIHN0ZXBzLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRGVidWdnZXIuc3RlcHBpbmcu
SWZXaXRoQ29tbWFzCitFWFBSRVNTSU9OOiBzZXRUaW1lb3V0KGVudHJ5SWZXaXRoQ29tbWFzKQor
U1RFUFM6IG92ZXIsIG92ZXIsIG92ZXIsIG92ZXIsIG92ZXIsIHJlc3VtZQorUEFVU0VEIChkZWJ1
Z2dlci1zdGF0ZW1lbnQpCitQQVVTRSBBVCBlbnRyeUlmV2l0aENvbW1hczoxMTI6NQorICAgIDEw
OCAgICB9CisgICAgMTA5ICAgIAorICAgIDExMCAgICBmdW5jdGlvbiBlbnRyeUlmV2l0aENvbW1h
cygpIHsKKyAtPiAxMTEgICAgICAgIHxkZWJ1Z2dlcjsKKyAgICAxMTIgICAgICAgIGlmIChhKCks
IGIoKSwgYSgpKQorICAgIDExMyAgICAgICAgICAgIGIoKTsKKyAgICAxMTQgICAgfQorCitBQ1RJ
T046IHN0ZXAtb3ZlcgorUEFVU0UgQVQgZW50cnlJZldpdGhDb21tYXM6MTEzOjkKKyAgICAxMDkg
ICAgCisgICAgMTEwICAgIGZ1bmN0aW9uIGVudHJ5SWZXaXRoQ29tbWFzKCkgeworICAgIDExMSAg
ICAgICAgZGVidWdnZXI7CisgLT4gMTEyICAgICAgICBpZiAofGEoKSwgYigpLCBhKCkpCisgICAg
MTEzICAgICAgICAgICAgYigpOworICAgIDExNCAgICB9CisgICAgMTE1ICAgIAorCitBQ1RJT046
IHN0ZXAtb3ZlcgorUEFVU0UgQVQgZW50cnlJZldpdGhDb21tYXM6MTEzOjE0CisgICAgMTA5ICAg
IAorICAgIDExMCAgICBmdW5jdGlvbiBlbnRyeUlmV2l0aENvbW1hcygpIHsKKyAgICAxMTEgICAg
ICAgIGRlYnVnZ2VyOworIC0+IDExMiAgICAgICAgaWYgKGEoKSwgfGIoKSwgYSgpKQorICAgIDEx
MyAgICAgICAgICAgIGIoKTsKKyAgICAxMTQgICAgfQorICAgIDExNSAgICAKKworQUNUSU9OOiBz
dGVwLW92ZXIKK1BBVVNFIEFUIGVudHJ5SWZXaXRoQ29tbWFzOjExMzoxOQorICAgIDEwOSAgICAK
KyAgICAxMTAgICAgZnVuY3Rpb24gZW50cnlJZldpdGhDb21tYXMoKSB7CisgICAgMTExICAgICAg
ICBkZWJ1Z2dlcjsKKyAtPiAxMTIgICAgICAgIGlmIChhKCksIGIoKSwgfGEoKSkKKyAgICAxMTMg
ICAgICAgICAgICBiKCk7CisgICAgMTE0ICAgIH0KKyAgICAxMTUgICAgCisKK0FDVElPTjogc3Rl
cC1vdmVyCitQQVVTRSBBVCBlbnRyeUlmV2l0aENvbW1hczoxMTQ6OQorICAgIDExMCAgICBmdW5j
dGlvbiBlbnRyeUlmV2l0aENvbW1hcygpIHsKKyAgICAxMTEgICAgICAgIGRlYnVnZ2VyOworICAg
IDExMiAgICAgICAgaWYgKGEoKSwgYigpLCBhKCkpCisgLT4gMTEzICAgICAgICAgICAgfGIoKTsK
KyAgICAxMTQgICAgfQorICAgIDExNSAgICAKKyAgICAxMTYgICAgLy8gLS0tLS0tLS0tCisKK0FD
VElPTjogc3RlcC1vdmVyCitQQVVTRSBBVCBlbnRyeUlmV2l0aENvbW1hczoxMTU6MgorICAgIDEx
MSAgICAgICAgZGVidWdnZXI7CisgICAgMTEyICAgICAgICBpZiAoYSgpLCBiKCksIGEoKSkKKyAg
ICAxMTMgICAgICAgICAgICBiKCk7CisgLT4gMTE0ICAgIH18CisgICAgMTE1ICAgIAorICAgIDEx
NiAgICAvLyAtLS0tLS0tLS0KKyAgICAxMTcgICAgCiAKIEFDVElPTjogcmVzdW1lCiBSRVNVTUVE
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcvc3Rl
cHBpbmctY29udHJvbC1mbG93Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIv
c3RlcHBpbmcvc3RlcHBpbmctY29udHJvbC1mbG93Lmh0bWwKaW5kZXggZmYwNzYyZTA4OWI4NzUx
MmM0NmZlMDEwZDAzMjE5ZmM3NDI2MDE2Ni4uNGNjODdkZjFhNDZjNTNmNTE2YWYyODU5ZDYyZmRk
YjIzOGYxZjY3YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3N0
ZXBwaW5nL3N0ZXBwaW5nLWNvbnRyb2wtZmxvdy5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kZWJ1Z2dlci9zdGVwcGluZy9zdGVwcGluZy1jb250cm9sLWZsb3cuaHRtbApAQCAtMTA4
LDYgKzEwOCwxMiBAQCBmdW5jdGlvbiBlbnRyeUlmV2l0aE5vdE9wZXJhdGlvbigpIHsKICAgICAg
ICAgYSgpOwogfQogCitmdW5jdGlvbiBlbnRyeUlmV2l0aENvbW1hcygpIHsKKyAgICBkZWJ1Z2dl
cjsKKyAgICBpZiAoYSgpLCBiKCksIGEoKSkKKyAgICAgICAgYigpOworfQorCiAvLyAtLS0tLS0t
LS0KIAogZnVuY3Rpb24gdGVzdCgpCkBAIC0yODYsNiArMjkyLDIwIEBAIGZ1bmN0aW9uIHRlc3Qo
KQogICAgICAgICBdCiAgICAgfSk7CiAKKyAgICBhZGRTdGVwcGluZ1Rlc3RDYXNlKHsKKyAgICAg
ICAgbmFtZTogIkRlYnVnZ2VyLnN0ZXBwaW5nLklmV2l0aENvbW1hcyIsCisgICAgICAgIGRlc2Ny
aXB0aW9uOiAiU2hvdWxkIHBhdXNlIGJlZm9yZSBlYWNoIGNvbW1hIHN1Yi1leHByZXNzaW9uLiIs
CisgICAgICAgIGV4cHJlc3Npb246ICJzZXRUaW1lb3V0KGVudHJ5SWZXaXRoQ29tbWFzKSIsCisg
ICAgICAgIHN0ZXBzOiBbCisgICAgICAgICAgICAib3ZlciIsCisgICAgICAgICAgICAgICAgIm92
ZXIiLCAvLyBhKCkKKyAgICAgICAgICAgICAgICAib3ZlciIsIC8vIGIoKQorICAgICAgICAgICAg
ICAgICJvdmVyIiwgLy8gYSgpCisgICAgICAgICAgICAgICAgIm92ZXIiLCAvLyBhKCkgLSBsZWF2
aW5nIGVudHJ5CisgICAgICAgICAgICAicmVzdW1lIiwKKyAgICAgICAgXQorICAgIH0pOworCiAg
ICAgbG9hZE1haW5QYWdlQ29udGVudCgpLnRoZW4oKCkgPT4gewogICAgICAgICBzdWl0ZS5ydW5U
ZXN0Q2FzZXNBbmRGaW5pc2goKTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9kZWJ1Z2dlci9zdGVwcGluZy9zdGVwcGluZy1mdW5jdGlvbi1jYWxscy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcvc3RlcHBpbmct
ZnVuY3Rpb24tY2FsbHMtZXhwZWN0ZWQudHh0CmluZGV4IGRmZDdkNDY5Y2RjN2I4Mjg4ZDViMzJm
NTAyOTkxOThhYjVhMWM2YWEuLmM4OWE2YTdjZTU3ODVlYTI2YjQxNTljZTE2N2Y5MmQxOWNkZDUy
MWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zdGVwcGluZy9z
dGVwcGluZy1mdW5jdGlvbi1jYWxscy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2RlYnVnZ2VyL3N0ZXBwaW5nL3N0ZXBwaW5nLWZ1bmN0aW9uLWNhbGxzLWV4cGVjdGVk
LnR4dApAQCAtOTc1LDcgKzk3NSw3IEBAIFBBU1M6IFNob3VsZCBoYXZlIHVzZWQgYWxsIHN0ZXBz
LgogCiAtLSBSdW5uaW5nIHRlc3QgY2FzZTogRGVidWdnZXIuc3RlcHBpbmcuQ29tcGxleFN0YXRl
bWVudDQKIEVYUFJFU1NJT046IHNldFRpbWVvdXQoZW50cnlDb21tYUV4cHJlc3Npb24pCi1TVEVQ
Uzogb3Zlciwgb3ZlciwgcmVzdW1lCitTVEVQUzogb3Zlciwgb3Zlciwgb3Zlciwgb3ZlciwgcmVz
dW1lCiBQQVVTRUQgKGRlYnVnZ2VyLXN0YXRlbWVudCkKIFBBVVNFIEFUIGVudHJ5Q29tbWFFeHBy
ZXNzaW9uOjUxOjUKICAgICAgNDcgICAgfQpAQCAtOTk2LDYgKzk5NiwyNiBAQCBQQVVTRSBBVCBl
bnRyeUNvbW1hRXhwcmVzc2lvbjo1Mjo1CiAgICAgIDUzICAgIAogICAgICA1NCAgICBmdW5jdGlv
biBlbnRyeURvdFByb3BlcnR5QWNjZXNzQ2FsbCgpIHsKIAorQUNUSU9OOiBzdGVwLW92ZXIKK1BB
VVNFIEFUIGVudHJ5Q29tbWFFeHByZXNzaW9uOjUyOjEwCisgICAgIDQ4ICAgIAorICAgICA0OSAg
ICBmdW5jdGlvbiBlbnRyeUNvbW1hRXhwcmVzc2lvbigpIHsKKyAgICAgNTAgICAgICAgIGRlYnVn
Z2VyOworIC0+ICA1MSAgICAgICAgYSgpLCB8YigpLCBhKCk7CisgICAgIDUyICAgIH0KKyAgICAg
NTMgICAgCisgICAgIDU0ICAgIGZ1bmN0aW9uIGVudHJ5RG90UHJvcGVydHlBY2Nlc3NDYWxsKCkg
eworCitBQ1RJT046IHN0ZXAtb3ZlcgorUEFVU0UgQVQgZW50cnlDb21tYUV4cHJlc3Npb246NTI6
MTUKKyAgICAgNDggICAgCisgICAgIDQ5ICAgIGZ1bmN0aW9uIGVudHJ5Q29tbWFFeHByZXNzaW9u
KCkgeworICAgICA1MCAgICAgICAgZGVidWdnZXI7CisgLT4gIDUxICAgICAgICBhKCksIGIoKSwg
fGEoKTsKKyAgICAgNTIgICAgfQorICAgICA1MyAgICAKKyAgICAgNTQgICAgZnVuY3Rpb24gZW50
cnlEb3RQcm9wZXJ0eUFjY2Vzc0NhbGwoKSB7CisKIEFDVElPTjogc3RlcC1vdmVyCiBQQVVTRSBB
VCBlbnRyeUNvbW1hRXhwcmVzc2lvbjo1MzoyCiAgICAgIDQ5ICAgIGZ1bmN0aW9uIGVudHJ5Q29t
bWFFeHByZXNzaW9uKCkgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVn
Z2VyL3N0ZXBwaW5nL3N0ZXBwaW5nLWZ1bmN0aW9uLWNhbGxzLmh0bWwgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcvc3RlcHBpbmctZnVuY3Rpb24tY2FsbHMuaHRtbApp
bmRleCAwYjRkMzljOGRjMDM2YTE3MjE0YTNkNDllYTAyNWQzYjc2ZmQ3MTQ0Li4xMWRjYTQxYjZh
NTZhNjVjOTQ2MTFkMmI2ZTUyYzM1ZjQ1NzhiZWE4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcvc3RlcHBpbmctZnVuY3Rpb24tY2FsbHMuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcvc3RlcHBpbmctZnVu
Y3Rpb24tY2FsbHMuaHRtbApAQCAtMzI3LDcgKzMyNyw5IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAg
ICAgICAvLyBhKCksIGIoKSwgYSgpOwogICAgICAgICBzdGVwczogWwogICAgICAgICAgICAgIm92
ZXIiLAotICAgICAgICAgICAgICAgICJvdmVyIiwgLy8gY29tcGxldGU6IGEoKSwgYigpLCBhKCkK
KyAgICAgICAgICAgICAgICAib3ZlciIsIC8vIGEoKQorICAgICAgICAgICAgICAgICJvdmVyIiwg
Ly8gYigpCisgICAgICAgICAgICAgICAgIm92ZXIiLCAvLyBhKCkKICAgICAgICAgICAgICJyZXN1
bWUiCiAgICAgICAgIF0KICAgICB9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kZWJ1Z2dlci9zdGVwcGluZy9zdGVwcGluZy1sb29wcy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcvc3RlcHBpbmctbG9vcHMtZXhwZWN0ZWQu
dHh0CmluZGV4IGFiMDI5N2U0NTExOGQ0MTI5ODNiMGNjNDU0YTdmMjhlMmYyOWIxZDYuLmNlYjNi
ODk2MjQ2NTI4Y2EwMTQwYTNjOWZiMDcyZDNjZWY4MTJkNjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zdGVwcGluZy9zdGVwcGluZy1sb29wcy1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3N0ZXBwaW5nL3N0ZXBwaW5n
LWxvb3BzLWV4cGVjdGVkLnR4dApAQCAtODM4LDggKzgzOCwxNzUgQEAgUEFVU0UgQVQgZW50cnlG
b3JCcmVha0NvbnRpbnVlOjc1OjIKICAgICAgNzMgICAgICAgIH0KICAtPiAgNzQgICAgfXwKICAg
ICAgNzUgICAgCi0gICAgIDc2ICAgIC8vIC0tLS0tLS0tLQotICAgICA3NyAgICAKKyAgICAgNzYg
ICAgZnVuY3Rpb24gZW50cnlGb3JXaXRoQ29tbWFzKCkgeworICAgICA3NyAgICAgICAgZGVidWdn
ZXI7CisKK0FDVElPTjogcmVzdW1lCitSRVNVTUVECitQQVNTOiBTaG91bGQgaGF2ZSB1c2VkIGFs
bCBzdGVwcy4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IERlYnVnZ2VyLnN0ZXBwaW5nLkZvcldp
dGhDb21tYXNTdGVwT3ZlcgorRVhQUkVTU0lPTjogc2V0VGltZW91dChlbnRyeUZvcldpdGhDb21t
YXMpCitTVEVQUzogb3Zlciwgb3Zlciwgb3Zlciwgb3Zlciwgb3Zlciwgb3Zlciwgb3Zlciwgb3Zl
ciwgb3Zlciwgb3Zlciwgb3Zlciwgb3Zlciwgb3Zlciwgb3Zlciwgb3ZlciwgcmVzdW1lCitQQVVT
RUQgKGRlYnVnZ2VyLXN0YXRlbWVudCkKK1BBVVNFIEFUIGVudHJ5Rm9yV2l0aENvbW1hczo3ODo1
CisgICAgIDc0ICAgIH0KKyAgICAgNzUgICAgCisgICAgIDc2ICAgIGZ1bmN0aW9uIGVudHJ5Rm9y
V2l0aENvbW1hcygpIHsKKyAtPiAgNzcgICAgICAgIHxkZWJ1Z2dlcjsKKyAgICAgNzggICAgICAg
IGZvciAobGV0IGkgPSAwLCBsZW5ndGggPSAwOyBsZW5ndGggPSAyLCBpIDwgbGVuZ3RoOyBsZW5n
dGggPSAxLCArK2kpCisgICAgIDc5ICAgICAgICAgICAgYSgpOworICAgICA4MCAgICB9CisKK0FD
VElPTjogc3RlcC1vdmVyCitQQVVTRSBBVCBlbnRyeUZvcldpdGhDb21tYXM6Nzk6MTAKKyAgICAg
NzUgICAgCisgICAgIDc2ICAgIGZ1bmN0aW9uIGVudHJ5Rm9yV2l0aENvbW1hcygpIHsKKyAgICAg
NzcgICAgICAgIGRlYnVnZ2VyOworIC0+ICA3OCAgICAgICAgZm9yICh8bGV0IGkgPSAwLCBsZW5n
dGggPSAwOyBsZW5ndGggPSAyLCBpIDwgbGVuZ3RoOyBsZW5ndGggPSAxLCArK2kpCisgICAgIDc5
ICAgICAgICAgICAgYSgpOworICAgICA4MCAgICB9CisgICAgIDgxICAgIAorCitBQ1RJT046IHN0
ZXAtb3ZlcgorUEFVU0UgQVQgZW50cnlGb3JXaXRoQ29tbWFzOjc5OjIxCisgICAgIDc1ICAgIAor
ICAgICA3NiAgICBmdW5jdGlvbiBlbnRyeUZvcldpdGhDb21tYXMoKSB7CisgICAgIDc3ICAgICAg
ICBkZWJ1Z2dlcjsKKyAtPiAgNzggICAgICAgIGZvciAobGV0IGkgPSAwLCB8bGVuZ3RoID0gMDsg
bGVuZ3RoID0gMiwgaSA8IGxlbmd0aDsgbGVuZ3RoID0gMSwgKytpKQorICAgICA3OSAgICAgICAg
ICAgIGEoKTsKKyAgICAgODAgICAgfQorICAgICA4MSAgICAKKworQUNUSU9OOiBzdGVwLW92ZXIK
K1BBVVNFIEFUIGVudHJ5Rm9yV2l0aENvbW1hczo3OTozMworICAgICA3NSAgICAKKyAgICAgNzYg
ICAgZnVuY3Rpb24gZW50cnlGb3JXaXRoQ29tbWFzKCkgeworICAgICA3NyAgICAgICAgZGVidWdn
ZXI7CisgLT4gIDc4ICAgICAgICBmb3IgKGxldCBpID0gMCwgbGVuZ3RoID0gMDsgfGxlbmd0aCA9
IDIsIGkgPCBsZW5ndGg7IGxlbmd0aCA9IDEsICsraSkKKyAgICAgNzkgICAgICAgICAgICBhKCk7
CisgICAgIDgwICAgIH0KKyAgICAgODEgICAgCisKK0FDVElPTjogc3RlcC1vdmVyCitQQVVTRSBB
VCBlbnRyeUZvcldpdGhDb21tYXM6Nzk6NDUKKyAgICAgNzUgICAgCisgICAgIDc2ICAgIGZ1bmN0
aW9uIGVudHJ5Rm9yV2l0aENvbW1hcygpIHsKKyAgICAgNzcgICAgICAgIGRlYnVnZ2VyOworIC0+
ICA3OCAgICAgICAgZm9yIChsZXQgaSA9IDAsIGxlbmd0aCA9IDA7IGxlbmd0aCA9IDIsIHxpIDwg
bGVuZ3RoOyBsZW5ndGggPSAxLCArK2kpCisgICAgIDc5ICAgICAgICAgICAgYSgpOworICAgICA4
MCAgICB9CisgICAgIDgxICAgIAorCitBQ1RJT046IHN0ZXAtb3ZlcgorUEFVU0UgQVQgZW50cnlG
b3JXaXRoQ29tbWFzOjgwOjkKKyAgICAgNzYgICAgZnVuY3Rpb24gZW50cnlGb3JXaXRoQ29tbWFz
KCkgeworICAgICA3NyAgICAgICAgZGVidWdnZXI7CisgICAgIDc4ICAgICAgICBmb3IgKGxldCBp
ID0gMCwgbGVuZ3RoID0gMDsgbGVuZ3RoID0gMiwgaSA8IGxlbmd0aDsgbGVuZ3RoID0gMSwgKytp
KQorIC0+ICA3OSAgICAgICAgICAgIHxhKCk7CisgICAgIDgwICAgIH0KKyAgICAgODEgICAgCisg
ICAgIDgyICAgIC8vIC0tLS0tLS0tLQorCitBQ1RJT046IHN0ZXAtb3ZlcgorUEFVU0UgQVQgZW50
cnlGb3JXaXRoQ29tbWFzOjc5OjU3CisgICAgIDc1ICAgIAorICAgICA3NiAgICBmdW5jdGlvbiBl
bnRyeUZvcldpdGhDb21tYXMoKSB7CisgICAgIDc3ICAgICAgICBkZWJ1Z2dlcjsKKyAtPiAgNzgg
ICAgICAgIGZvciAobGV0IGkgPSAwLCBsZW5ndGggPSAwOyBsZW5ndGggPSAyLCBpIDwgbGVuZ3Ro
OyB8bGVuZ3RoID0gMSwgKytpKQorICAgICA3OSAgICAgICAgICAgIGEoKTsKKyAgICAgODAgICAg
fQorICAgICA4MSAgICAKKworQUNUSU9OOiBzdGVwLW92ZXIKK1BBVVNFIEFUIGVudHJ5Rm9yV2l0
aENvbW1hczo3OTo2OQorICAgICA3NSAgICAKKyAgICAgNzYgICAgZnVuY3Rpb24gZW50cnlGb3JX
aXRoQ29tbWFzKCkgeworICAgICA3NyAgICAgICAgZGVidWdnZXI7CisgLT4gIDc4ICAgICAgICBm
b3IgKGxldCBpID0gMCwgbGVuZ3RoID0gMDsgbGVuZ3RoID0gMiwgaSA8IGxlbmd0aDsgbGVuZ3Ro
ID0gMSwgfCsraSkKKyAgICAgNzkgICAgICAgICAgICBhKCk7CisgICAgIDgwICAgIH0KKyAgICAg
ODEgICAgCisKK0FDVElPTjogc3RlcC1vdmVyCitQQVVTRSBBVCBlbnRyeUZvcldpdGhDb21tYXM6
Nzk6MzMKKyAgICAgNzUgICAgCisgICAgIDc2ICAgIGZ1bmN0aW9uIGVudHJ5Rm9yV2l0aENvbW1h
cygpIHsKKyAgICAgNzcgICAgICAgIGRlYnVnZ2VyOworIC0+ICA3OCAgICAgICAgZm9yIChsZXQg
aSA9IDAsIGxlbmd0aCA9IDA7IHxsZW5ndGggPSAyLCBpIDwgbGVuZ3RoOyBsZW5ndGggPSAxLCAr
K2kpCisgICAgIDc5ICAgICAgICAgICAgYSgpOworICAgICA4MCAgICB9CisgICAgIDgxICAgIAor
CitBQ1RJT046IHN0ZXAtb3ZlcgorUEFVU0UgQVQgZW50cnlGb3JXaXRoQ29tbWFzOjc5OjQ1Cisg
ICAgIDc1ICAgIAorICAgICA3NiAgICBmdW5jdGlvbiBlbnRyeUZvcldpdGhDb21tYXMoKSB7Cisg
ICAgIDc3ICAgICAgICBkZWJ1Z2dlcjsKKyAtPiAgNzggICAgICAgIGZvciAobGV0IGkgPSAwLCBs
ZW5ndGggPSAwOyBsZW5ndGggPSAyLCB8aSA8IGxlbmd0aDsgbGVuZ3RoID0gMSwgKytpKQorICAg
ICA3OSAgICAgICAgICAgIGEoKTsKKyAgICAgODAgICAgfQorICAgICA4MSAgICAKKworQUNUSU9O
OiBzdGVwLW92ZXIKK1BBVVNFIEFUIGVudHJ5Rm9yV2l0aENvbW1hczo4MDo5CisgICAgIDc2ICAg
IGZ1bmN0aW9uIGVudHJ5Rm9yV2l0aENvbW1hcygpIHsKKyAgICAgNzcgICAgICAgIGRlYnVnZ2Vy
OworICAgICA3OCAgICAgICAgZm9yIChsZXQgaSA9IDAsIGxlbmd0aCA9IDA7IGxlbmd0aCA9IDIs
IGkgPCBsZW5ndGg7IGxlbmd0aCA9IDEsICsraSkKKyAtPiAgNzkgICAgICAgICAgICB8YSgpOwor
ICAgICA4MCAgICB9CisgICAgIDgxICAgIAorICAgICA4MiAgICAvLyAtLS0tLS0tLS0KKworQUNU
SU9OOiBzdGVwLW92ZXIKK1BBVVNFIEFUIGVudHJ5Rm9yV2l0aENvbW1hczo3OTo1NworICAgICA3
NSAgICAKKyAgICAgNzYgICAgZnVuY3Rpb24gZW50cnlGb3JXaXRoQ29tbWFzKCkgeworICAgICA3
NyAgICAgICAgZGVidWdnZXI7CisgLT4gIDc4ICAgICAgICBmb3IgKGxldCBpID0gMCwgbGVuZ3Ro
ID0gMDsgbGVuZ3RoID0gMiwgaSA8IGxlbmd0aDsgfGxlbmd0aCA9IDEsICsraSkKKyAgICAgNzkg
ICAgICAgICAgICBhKCk7CisgICAgIDgwICAgIH0KKyAgICAgODEgICAgCisKK0FDVElPTjogc3Rl
cC1vdmVyCitQQVVTRSBBVCBlbnRyeUZvcldpdGhDb21tYXM6Nzk6NjkKKyAgICAgNzUgICAgCisg
ICAgIDc2ICAgIGZ1bmN0aW9uIGVudHJ5Rm9yV2l0aENvbW1hcygpIHsKKyAgICAgNzcgICAgICAg
IGRlYnVnZ2VyOworIC0+ICA3OCAgICAgICAgZm9yIChsZXQgaSA9IDAsIGxlbmd0aCA9IDA7IGxl
bmd0aCA9IDIsIGkgPCBsZW5ndGg7IGxlbmd0aCA9IDEsIHwrK2kpCisgICAgIDc5ICAgICAgICAg
ICAgYSgpOworICAgICA4MCAgICB9CisgICAgIDgxICAgIAorCitBQ1RJT046IHN0ZXAtb3Zlcgor
UEFVU0UgQVQgZW50cnlGb3JXaXRoQ29tbWFzOjc5OjMzCisgICAgIDc1ICAgIAorICAgICA3NiAg
ICBmdW5jdGlvbiBlbnRyeUZvcldpdGhDb21tYXMoKSB7CisgICAgIDc3ICAgICAgICBkZWJ1Z2dl
cjsKKyAtPiAgNzggICAgICAgIGZvciAobGV0IGkgPSAwLCBsZW5ndGggPSAwOyB8bGVuZ3RoID0g
MiwgaSA8IGxlbmd0aDsgbGVuZ3RoID0gMSwgKytpKQorICAgICA3OSAgICAgICAgICAgIGEoKTsK
KyAgICAgODAgICAgfQorICAgICA4MSAgICAKKworQUNUSU9OOiBzdGVwLW92ZXIKK1BBVVNFIEFU
IGVudHJ5Rm9yV2l0aENvbW1hczo3OTo0NQorICAgICA3NSAgICAKKyAgICAgNzYgICAgZnVuY3Rp
b24gZW50cnlGb3JXaXRoQ29tbWFzKCkgeworICAgICA3NyAgICAgICAgZGVidWdnZXI7CisgLT4g
IDc4ICAgICAgICBmb3IgKGxldCBpID0gMCwgbGVuZ3RoID0gMDsgbGVuZ3RoID0gMiwgfGkgPCBs
ZW5ndGg7IGxlbmd0aCA9IDEsICsraSkKKyAgICAgNzkgICAgICAgICAgICBhKCk7CisgICAgIDgw
ICAgIH0KKyAgICAgODEgICAgCisKK0FDVElPTjogc3RlcC1vdmVyCitQQVVTRSBBVCBlbnRyeUZv
cldpdGhDb21tYXM6ODE6MgorICAgICA3NyAgICAgICAgZGVidWdnZXI7CisgICAgIDc4ICAgICAg
ICBmb3IgKGxldCBpID0gMCwgbGVuZ3RoID0gMDsgbGVuZ3RoID0gMiwgaSA8IGxlbmd0aDsgbGVu
Z3RoID0gMSwgKytpKQorICAgICA3OSAgICAgICAgICAgIGEoKTsKKyAtPiAgODAgICAgfXwKKyAg
ICAgODEgICAgCisgICAgIDgyICAgIC8vIC0tLS0tLS0tLQorICAgICA4MyAgICAKIAogQUNUSU9O
OiByZXN1bWUKIFJFU1VNRUQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1
Z2dlci9zdGVwcGluZy9zdGVwcGluZy1sb29wcy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2RlYnVnZ2VyL3N0ZXBwaW5nL3N0ZXBwaW5nLWxvb3BzLmh0bWwKaW5kZXggMzJkODQzMDMyZjll
YjQ2MmU0YjA4MGNiZmQyMDAzZDFiZjBkMzliYS4uMWZjYjdmN2Q1ZDE5YmYxMGM5NDMyZjM2YjEx
ZWM4NDQwNDZjZDBlMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2Vy
L3N0ZXBwaW5nL3N0ZXBwaW5nLWxvb3BzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2RlYnVnZ2VyL3N0ZXBwaW5nL3N0ZXBwaW5nLWxvb3BzLmh0bWwKQEAgLTc0LDYgKzc0LDEyIEBA
IGZ1bmN0aW9uIGVudHJ5Rm9yQnJlYWtDb250aW51ZSgpIHsKICAgICB9CiB9CiAKK2Z1bmN0aW9u
IGVudHJ5Rm9yV2l0aENvbW1hcygpIHsKKyAgICBkZWJ1Z2dlcjsKKyAgICBmb3IgKGxldCBpID0g
MCwgbGVuZ3RoID0gMDsgbGVuZ3RoID0gMiwgaSA8IGxlbmd0aDsgbGVuZ3RoID0gMSwgKytpKQor
ICAgICAgICBhKCk7Cit9CisKIC8vIC0tLS0tLS0tLQogCiBmdW5jdGlvbiB0ZXN0KCkKQEAgLTIz
NCw2ICsyNDAsMzAgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIF0KICAgICB9KTsKIAorICAg
IGFkZFN0ZXBwaW5nVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiRGVidWdnZXIuc3RlcHBpbmcu
Rm9yV2l0aENvbW1hc1N0ZXBPdmVyIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJTaG91bGQgYmUg
YWJsZSB0byBzdGVwIG92ZXIgZXZlcnkgY29tbWEgc2VwYXJhdGVkIGluaXQgYW5kIGNvbmRpdGlv
biBpbiB0cmFkaXRpb25hbCBmb3IgbG9vcHMuIiwKKyAgICAgICAgZXhwcmVzc2lvbjogInNldFRp
bWVvdXQoZW50cnlGb3JXaXRoQ29tbWFzKSIsCisgICAgICAgIHN0ZXBzOiBbCisgICAgICAgICAg
ICAib3ZlciIsCisgICAgICAgICAgICAgICAgIm92ZXIiLCAvLyBjb21wbGV0ZTogbGV0IGkgPSAw
CisgICAgICAgICAgICAgICAgIm92ZXIiLCAvLyBjb21wbGV0ZTogbGVuZ3RoID0gMAorICAgICAg
ICAgICAgICAgICJvdmVyIiwgLy8gY29tcGxldGU6IGxlbmd0aCA9IDIKKyAgICAgICAgICAgICAg
ICAib3ZlciIsIC8vIGNvbXBsZXRlOiBpIDwgbGVuZ3RoCisgICAgICAgICAgICAgICAgIm92ZXIi
LCAvLyBjb21wbGV0ZTogYSgpCisgICAgICAgICAgICAgICAgIm92ZXIiLCAvLyBjb21wbGV0ZTog
bGVuZ3RoID0gMQorICAgICAgICAgICAgICAgICJvdmVyIiwgLy8gY29tcGxldGU6ICsraQorICAg
ICAgICAgICAgICAgICJvdmVyIiwgLy8gY29tcGxldGU6IGxlbmd0aCA9IDIKKyAgICAgICAgICAg
ICAgICAib3ZlciIsIC8vIGNvbXBsZXRlOiBpIDwgbGVuZ3RoIFtpPTFdCisgICAgICAgICAgICAg
ICAgIm92ZXIiLCAvLyBjb21wbGV0ZTogYSgpCisgICAgICAgICAgICAgICAgIm92ZXIiLCAvLyBj
b21wbGV0ZTogbGVuZ3RoID0gMQorICAgICAgICAgICAgICAgICJvdmVyIiwgLy8gY29tcGxldGU6
ICsraQorICAgICAgICAgICAgICAgICJvdmVyIiwgLy8gY29tcGxldGU6IGxlbmd0aCA9IDIKKyAg
ICAgICAgICAgICAgICAib3ZlciIsIC8vIGNvbXBsZXRlOiBpIDwgbGVuZ3RoIFtpPTJdIC0gbGVh
dmluZyBlbnRyeQorICAgICAgICAgICAgInJlc3VtZSIsCisgICAgICAgIF0KKyAgICB9KTsKKwog
ICAgIGxvYWRNYWluUGFnZUNvbnRlbnQoKS50aGVuKCgpID0+IHsKICAgICAgICAgc3VpdGUucnVu
VGVzdENhc2VzQW5kRmluaXNoKCk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcvc3RlcHBpbmctbWlzYy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcvc3RlcHBpbmctbWlzYy1leHBl
Y3RlZC50eHQKaW5kZXggNTQ3ZjNiY2IwNTg0MDEyZGQxYTE2ZDliMGYwZGI3MTg5YTg4NmRiNC4u
YjBiNGZlZDJmOGVkYTE5N2Q1Nzg0MTJhZTg3N2M2Zjc4YTQ4NjU2NSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3N0ZXBwaW5nL3N0ZXBwaW5nLW1pc2MtZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zdGVwcGluZy9zdGVw
cGluZy1taXNjLWV4cGVjdGVkLnR4dApAQCAtMzg5LDcgKzM4OSw3IEBAIFBBU1M6IFNob3VsZCBo
YXZlIHVzZWQgYWxsIHN0ZXBzLgogCiAtLSBSdW5uaW5nIHRlc3QgY2FzZTogRGVidWdnZXIuc3Rl
cHBpbmcuVmFyaWFibGVEZWNsYXJhdGlvbgogRVhQUkVTU0lPTjogc2V0VGltZW91dChlbnRyeVZh
cmlhYmxlRGVjbGFyYXRpb24pCi1TVEVQUzogb3ZlciwgaW4sIGluLCBpbiwgcmVzdW1lCitTVEVQ
Uzogb3ZlciwgaW4sIGluLCBpbiwgaW4sIGluLCBpbiwgcmVzdW1lCiBQQVVTRUQgKGRlYnVnZ2Vy
LXN0YXRlbWVudCkKIFBBVVNFIEFUIGVudHJ5VmFyaWFibGVEZWNsYXJhdGlvbjo1ODo1CiAgICAg
IDU0ICAgIH0KQEAgLTQxMCw2ICs0MTAsMTYgQEAgUEFVU0UgQVQgZW50cnlWYXJpYWJsZURlY2xh
cmF0aW9uOjU5OjUKICAgICAgNjAgICAgICAgIGxldCBiID0gMiwKICAgICAgNjEgICAgICAgICAg
ICB5ID0gMjsKIAorQUNUSU9OOiBzdGVwLWluCitQQVVTRSBBVCBlbnRyeVZhcmlhYmxlRGVjbGFy
YXRpb246NjA6OQorICAgICA1NiAgICBmdW5jdGlvbiBlbnRyeVZhcmlhYmxlRGVjbGFyYXRpb24o
KSB7CisgICAgIDU3ICAgICAgICBkZWJ1Z2dlcjsKKyAgICAgNTggICAgICAgIHZhciBhID0gMSwK
KyAtPiAgNTkgICAgICAgICAgICB8eCA9IDE7CisgICAgIDYwICAgICAgICBsZXQgYiA9IDIsCisg
ICAgIDYxICAgICAgICAgICAgeSA9IDI7CisgICAgIDYyICAgICAgICBjb25zdCBjID0gMywKKwog
QUNUSU9OOiBzdGVwLWluCiBQQVVTRSBBVCBlbnRyeVZhcmlhYmxlRGVjbGFyYXRpb246NjE6NQog
ICAgICA1NyAgICAgICAgZGVidWdnZXI7CkBAIC00MjAsNiArNDMwLDE2IEBAIFBBVVNFIEFUIGVu
dHJ5VmFyaWFibGVEZWNsYXJhdGlvbjo2MTo1CiAgICAgIDYyICAgICAgICBjb25zdCBjID0gMywK
ICAgICAgNjMgICAgICAgICAgICB6ID0gMzsKIAorQUNUSU9OOiBzdGVwLWluCitQQVVTRSBBVCBl
bnRyeVZhcmlhYmxlRGVjbGFyYXRpb246NjI6OQorICAgICA1OCAgICAgICAgdmFyIGEgPSAxLAor
ICAgICA1OSAgICAgICAgICAgIHggPSAxOworICAgICA2MCAgICAgICAgbGV0IGIgPSAyLAorIC0+
ICA2MSAgICAgICAgICAgIHx5ID0gMjsKKyAgICAgNjIgICAgICAgIGNvbnN0IGMgPSAzLAorICAg
ICA2MyAgICAgICAgICAgIHogPSAzOworICAgICA2NCAgICB9CisKIEFDVElPTjogc3RlcC1pbgog
UEFVU0UgQVQgZW50cnlWYXJpYWJsZURlY2xhcmF0aW9uOjYzOjUKICAgICAgNTkgICAgICAgICAg
ICB4ID0gMTsKQEAgLTQzMCw2ICs0NTAsMTYgQEAgUEFVU0UgQVQgZW50cnlWYXJpYWJsZURlY2xh
cmF0aW9uOjYzOjUKICAgICAgNjQgICAgfQogICAgICA2NSAgICAKIAorQUNUSU9OOiBzdGVwLWlu
CitQQVVTRSBBVCBlbnRyeVZhcmlhYmxlRGVjbGFyYXRpb246NjQ6OQorICAgICA2MCAgICAgICAg
bGV0IGIgPSAyLAorICAgICA2MSAgICAgICAgICAgIHkgPSAyOworICAgICA2MiAgICAgICAgY29u
c3QgYyA9IDMsCisgLT4gIDYzICAgICAgICAgICAgfHogPSAzOworICAgICA2NCAgICB9CisgICAg
IDY1ICAgIAorICAgICA2NiAgICBmdW5jdGlvbiBlbnRyeURlc3RydWN0dXJpbmcoKSB7CisKIEFD
VElPTjogc3RlcC1pbgogUEFVU0UgQVQgZW50cnlWYXJpYWJsZURlY2xhcmF0aW9uOjY1OjIKICAg
ICAgNjEgICAgICAgICAgICB5ID0gMjsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kZWJ1Z2dlci9zdGVwcGluZy9zdGVwcGluZy1taXNjLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcvc3RlcHBpbmctbWlzYy5odG1sCmluZGV4IDI3M2I5ZTYx
ODkwNGVlMTkxMThkNmU5MThhODJhYjgyYzYzMmI4MmUuLmY2OTBhYTZjNmVlZjU4ZThhYzE0NWRm
YmM1Njk3NzU1M2M4MDhlMTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1
Z2dlci9zdGVwcGluZy9zdGVwcGluZy1taXNjLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RlYnVnZ2VyL3N0ZXBwaW5nL3N0ZXBwaW5nLW1pc2MuaHRtbApAQCAtMTg0LDE0ICsxODQs
MTYgQEAgZnVuY3Rpb24gdGVzdCgpCiAKICAgICBhZGRTdGVwcGluZ1Rlc3RDYXNlKHsKICAgICAg
ICAgbmFtZTogIkRlYnVnZ2VyLnN0ZXBwaW5nLlZhcmlhYmxlRGVjbGFyYXRpb24iLAotICAgICAg
ICBkZXNjcmlwdGlvbjogIlNob3VsZCBiZSBhYmxlIHRvIHN0ZXAgdGhyb3VnaCB2YXJpYWJsZSBk
ZWNsYXJhdGlvbnMuIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJTaG91bGQgYmUgYWJsZSB0byBz
dGVwIHRvIGVhY2ggaW5kaXZpZHVhbCB2YXJpYWJsZSBkZWNsYXJhdGlvbi4iLAogICAgICAgICBl
eHByZXNzaW9uOiAic2V0VGltZW91dChlbnRyeVZhcmlhYmxlRGVjbGFyYXRpb24pIiwKICAgICAg
ICAgc3RlcHM6IFsKICAgICAgICAgICAgICJvdmVyIiwKLSAgICAgICAgICAgICAgICAgICAgICAg
Ly8gRklYTUU6IE9wcG9ydHVuaXR5IHRvIHBhdXNlIGF0IGFzc2lnbm1lbnQgZXhwcmVzc2lvbnMu
Ci0gICAgICAgICAgICAgICAgImluIiwgIC8vIGEgPSAxLCB4ID0gMQotICAgICAgICAgICAgICAg
ICJpbiIsICAvLyBiID0gMiwgeSA9IDIKLSAgICAgICAgICAgICAgICAiaW4iLCAgLy8gYyA9IDMs
IHogPSAzCisgICAgICAgICAgICAgICAgImluIiwgIC8vIGEgPSAxCisgICAgICAgICAgICAgICAg
ImluIiwgIC8vIHggPSAxCisgICAgICAgICAgICAgICAgImluIiwgIC8vIGIgPSAyCisgICAgICAg
ICAgICAgICAgImluIiwgIC8vIHkgPSAyCisgICAgICAgICAgICAgICAgImluIiwgIC8vIGMgPSAz
CisgICAgICAgICAgICAgICAgImluIiwgIC8vIHogPSAzCiAgICAgICAgICAgICAicmVzdW1lIiwK
ICAgICAgICAgXQogICAgIH0pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zv
cm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvZm9yLXN0YXRlbWVudHMtZXhwZWN0
ZWQuanMgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNj
cmlwdC10ZXN0cy9mb3Itc3RhdGVtZW50cy1leHBlY3RlZC5qcwppbmRleCBmZmU0YmQwOGM0ODFi
OTcwMmVjMzAzZDU2YTY3OWM0NzdiY2E0OTUzLi44MjYzMDA2MTU3Y2RhYTFmMWQ0MWI1MDBkZTUy
MTM5MjZlN2FkYTQzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGlu
Zy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy9mb3Itc3RhdGVtZW50cy1leHBlY3RlZC5qcwor
KysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlw
dC10ZXN0cy9mb3Itc3RhdGVtZW50cy1leHBlY3RlZC5qcwpAQCAtNjgsMjcgKzY4LDIwIEBAIGZv
ciAoMTsgMjsgMykgewogCiBmb3IgKHZhciB4ID0gMTsgeCA8IGxlbjsgKyt4KQogICAgIDE7Ci1m
b3IgKHZhciB4ID0gMSwgbGVuID0gMTA7IHggPCBsZW47ICsreCkKK2ZvciAodmFyIHggPSAxLCBs
ZW4gPSAxOyBsZW4gPSAxMCwgeCA8IGxlbjsgbGVuID0gNSwgKyt4KQogICAgIDE7CiAKIGZvciAo
eCA9IDE7IHggPCBsZW47ICsreCkgewogICAgIDEKIH0KLWZvciAoeCA9IDEsIGxlbiA9IDEwOyB4
IDwgbGVuOyArK3gpIHsKK2ZvciAoeCA9IDEsIGxlbiA9IDE7IGxlbiA9IDEwLCB4IDwgbGVuOyBs
ZW4gPSA1LCArK3gpIHsKICAgICAxCiB9CiAKIGZvciAodmFyIHggPSAxOyB4IDwgbGVuOyArK3gp
IHsKICAgICAxCiB9Ci1mb3IgKHZhciB4ID0gMSwgbGVuID0gMTA7IHggPCBsZW47ICsreCkgewot
ICAgIDEKLX0KLQotZm9yICh2YXIgeCA9IDE7IHggPCBsZW47ICsreCkgewotICAgIDEKLX0KLWZv
ciAodmFyIHggPSAxLCBsZW4gPSAxMDsgeCA8IGxlbjsgKyt4KSB7Citmb3IgKHZhciB4ID0gMSwg
bGVuID0gMTsgbGVuID0gMTAsIHggPCBsZW47IGxlbiA9IDUsICsreCkgewogICAgIDEKIH0KIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2ph
dmFzY3JpcHQtdGVzdHMvZm9yLXN0YXRlbWVudHMuanMgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
Zm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy9mb3Itc3RhdGVtZW50cy5qcwpp
bmRleCAxYjQyZDNkMDdiNzc5NjMxYzVmZDhiNTY3M2ZiYjZjODE4NTg1YjhiLi5lZjcyOTQ1ZWMx
NGU5ODA4NjllNjcyMmM4NmFiYzQ0MTUzZmE2MTUxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy9mb3Itc3RhdGVt
ZW50cy5qcworKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMv
amF2YXNjcmlwdC10ZXN0cy9mb3Itc3RhdGVtZW50cy5qcwpAQCAtMzUsMTYgKzM1LDEzIEBAIGZv
ciAoIDEgOyAyIDsgMyApIDEKIGZvciAoIDEgOyAyIDsgMyApIHsxfQogCiBmb3IodmFyIHg9MTt4
PGxlbjsrK3gpMTsKLWZvcih2YXIgeD0xLGxlbj0xMDt4PGxlbjsrK3gpMTsKK2Zvcih2YXIgeD0x
LGxlbj0xO2xlbj0xMCx4PGxlbjtsZW49NSwrK3gpMTsKIAogZm9yKHg9MTt4PGxlbjsrK3gpezF9
Ci1mb3IoeD0xLGxlbj0xMDt4PGxlbjsrK3gpezF9Citmb3IoeD0xLGxlbj0xO2xlbj0xMCx4PGxl
bjtsZW49NSwrK3gpezF9CiAKIGZvcih2YXIgeD0xO3g8bGVuOysreCl7MX0KLWZvcih2YXIgeD0x
LGxlbj0xMDt4PGxlbjsrK3gpezF9Ci0KLWZvcih2YXIgeD0xO3g8bGVuOysreCl7MX0KLWZvcih2
YXIgeD0xLGxlbj0xMDt4PGxlbjsrK3gpezF9Citmb3IodmFyIHg9MSxsZW49MTtsZW49MTAseDxs
ZW47bGVuPTUsKyt4KXsxfQogCiBmb3IoMTsyOzMpZm9yKDQ7NTs2KWZvcig3Ozg7OSk7CiBmb3Io
MTsyOzMpe2lmKHRydWUpe2Zvcig0OzU7NikwfWZvcig3Ozg7OSk7fQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMv
aWYtc3RhdGVtZW50LWV4cGVjdGVkLmpzIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRp
bmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvaWYtc3RhdGVtZW50LWV4cGVjdGVkLmpzCmlu
ZGV4IDNkMmE5ZDllOTdlZmM3NzUyNjkzNmI2MzFhNjI4ZTIwOWExMGQ3ZGMuLmM2MjBkZTZmNDIy
N2NkZDNhZmYwMDkzMzlhY2NjMzk2YWM5MTY5NjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL2lmLXN0YXRlbWVu
dC1leHBlY3RlZC5qcworKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNv
dXJjZXMvamF2YXNjcmlwdC10ZXN0cy9pZi1zdGF0ZW1lbnQtZXhwZWN0ZWQuanMKQEAgLTE2NSwz
ICsxNjUsNiBAQCBpZiAodHJ1ZSkgewogaWYgKHRydWUpCiAgICAgaWYgKHRydWUpCiAgICAgICAg
IDE7CisKK2lmICgxLCAyLCAzKSB7fQoraWYgKDEsIDIsIDMpIHt9CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy9p
Zi1zdGF0ZW1lbnQuanMgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJj
ZXMvamF2YXNjcmlwdC10ZXN0cy9pZi1zdGF0ZW1lbnQuanMKaW5kZXggMjY1NTI2Y2EzYzZhMzNl
ZGJjZjQ0ZDUzMzliMmYyODlhOTg2ZjA1Mi4uODM3ZDE1MTZlMWU5MzYyZmIwYTk5NzQxYzZlNWM3
MWMxY2RiNDcwOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcv
cmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvaWYtc3RhdGVtZW50LmpzCisrKyBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL2lmLXN0
YXRlbWVudC5qcwpAQCAtNDcsMyArNDcsNiBAQCBpZih0cnVlKXtpZihmYWxzZSlpZih0cnVlKXRy
dWU7ZWxzZSBmYWxzZTtlbHNlIGlmKHRydWUpdHJ1ZTtlbHNlIGZhbHNlO30KIGlmICh0cnVlKQog
aWYgKHRydWUpCiAxOworCitpZigxLDIsMyl7fQoraWYgICggIDEgICwgIDIgICwgIDMgICkgIHsg
IH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNl
cy9qYXZhc2NyaXB0LXRlc3RzL3NhbXBsZS1qcXVlcnktZXhwZWN0ZWQuanMgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy9zYW1wbGUt
anF1ZXJ5LWV4cGVjdGVkLmpzCmluZGV4IDZkNTkxNzMyOTA0NzIzYTgyNzNjNDczMjU2NzFkMjM1
ZWM0NTY1OTUuLmUxZjFmOTcxZDAyY2Q5MWU2NjE5MWViZjk1N2UwZjVhMjg1YjM2MjIgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2Ny
aXB0LXRlc3RzL3NhbXBsZS1qcXVlcnktZXhwZWN0ZWQuanMKKysrIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvc2FtcGxlLWpxdWVy
eS1leHBlY3RlZC5qcwpAQCAtNjIsNyArNjIsOCBAQAogICAgICAgICAgICAgICAgIGlmIChhID0g
by5nZXRFbGVtZW50QnlJZChpWzJdKSwgYSAmJiBhLnBhcmVudE5vZGUpIHsKICAgICAgICAgICAg
ICAgICAgICAgaWYgKGEuaWQgIT09IGlbMl0pCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gci5maW5kKGUpOwotICAgICAgICAgICAgICAgICAgICB0aGlzLmxlbmd0aCA9IDEsIHRoaXNb
MF0gPSBhCisgICAgICAgICAgICAgICAgICAgIHRoaXMubGVuZ3RoID0gMSwKKyAgICAgICAgICAg
ICAgICAgICAgdGhpc1swXSA9IGEKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
cmV0dXJuIHRoaXMuY29udGV4dCA9IG8sIHRoaXMuc2VsZWN0b3IgPSBlLCB0aGlzCiAgICAgICAg
ICAgICB9CkBAIC0xMTQsNyArMTE1LDkgQEAKICAgICAgICAgcHVzaDogZCwKICAgICAgICAgc29y
dDogW10uc29ydCwKICAgICAgICAgc3BsaWNlOiBbXS5zcGxpY2UKLSAgICB9LCBiLmZuLmluaXQu
cHJvdG90eXBlID0gYi5mbiwgYi5leHRlbmQgPSBiLmZuLmV4dGVuZCA9IGZ1bmN0aW9uKCkgewor
ICAgIH0sCisgICAgYi5mbi5pbml0LnByb3RvdHlwZSA9IGIuZm4sCisgICAgYi5leHRlbmQgPSBi
LmZuLmV4dGVuZCA9IGZ1bmN0aW9uKCkgewogICAgICAgICB2YXIgZSwKICAgICAgICAgICAgIG4s
CiAgICAgICAgICAgICByLApAQCAtMTI4LDkgKzEzMSwxMiBAQAogICAgICAgICBmb3IgKCJib29s
ZWFuIiA9PSB0eXBlb2YgcyAmJiAoYyA9IHMsIHMgPSBhcmd1bWVudHNbMV0gfHwge30sIHUgPSAy
KSwgIm9iamVjdCIgPT0gdHlwZW9mIHMgfHwgYi5pc0Z1bmN0aW9uKHMpIHx8IChzID0ge30pLCBs
ID09PSB1ICYmIChzID0gdGhpcywgLS11KTsgbCA+IHU7IHUrKykKICAgICAgICAgICAgIGlmIChu
dWxsICE9IChvID0gYXJndW1lbnRzW3VdKSkKICAgICAgICAgICAgICAgICBmb3IgKGkgaW4gbykK
LSAgICAgICAgICAgICAgICAgICAgZSA9IHNbaV0sIHIgPSBvW2ldLCBzICE9PSByICYmIChjICYm
IHIgJiYgKGIuaXNQbGFpbk9iamVjdChyKSB8fCAobiA9IGIuaXNBcnJheShyKSkpID8gKG4gPyAo
biA9ICExLCBhID0gZSAmJiBiLmlzQXJyYXkoZSkgPyBlIDogW10pIDogYSA9IGUgJiYgYi5pc1Bs
YWluT2JqZWN0KGUpID8gZSA6IHt9LCBzW2ldID0gYi5leHRlbmQoYywgYSwgcikpIDogciAhPT0g
dCAmJiAoc1tpXSA9IHIpKTsKKyAgICAgICAgICAgICAgICAgICAgZSA9IHNbaV0sCisgICAgICAg
ICAgICAgICAgICAgIHIgPSBvW2ldLAorICAgICAgICAgICAgICAgICAgICBzICE9PSByICYmIChj
ICYmIHIgJiYgKGIuaXNQbGFpbk9iamVjdChyKSB8fCAobiA9IGIuaXNBcnJheShyKSkpID8gKG4g
PyAobiA9ICExLCBhID0gZSAmJiBiLmlzQXJyYXkoZSkgPyBlIDogW10pIDogYSA9IGUgJiYgYi5p
c1BsYWluT2JqZWN0KGUpID8gZSA6IHt9LCBzW2ldID0gYi5leHRlbmQoYywgYSwgcikpIDogciAh
PT0gdCAmJiAoc1tpXSA9IHIpKTsKICAgICAgICAgcmV0dXJuIHMKLSAgICB9LCBiLmV4dGVuZCh7
CisgICAgfSwKKyAgICBiLmV4dGVuZCh7CiAgICAgICAgIG5vQ29uZmxpY3Q6IGZ1bmN0aW9uKHQp
IHsKICAgICAgICAgICAgIHJldHVybiBlLiQgPT09IGIgJiYgKGUuJCA9IHUpLCB0ICYmIGUualF1
ZXJ5ID09PSBiICYmIChlLmpRdWVyeSA9IHMpLCBiCiAgICAgICAgIH0sCkBAIC0xNDMsNyArMTQ5
LDggQEAKICAgICAgICAgICAgIGlmIChlID09PSAhMCA/ICEtLWIucmVhZHlXYWl0IDogIWIuaXNS
ZWFkeSkgewogICAgICAgICAgICAgICAgIGlmICghby5ib2R5KQogICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gc2V0VGltZW91dChiLnJlYWR5KTsKLSAgICAgICAgICAgICAgICBiLmlzUmVhZHkg
PSAhMCwgZSAhPT0gITAgJiYgLS1iLnJlYWR5V2FpdCA+IDAgfHwgKG4ucmVzb2x2ZVdpdGgobywg
W2JdKSwgYi5mbi50cmlnZ2VyICYmIGIobykudHJpZ2dlcigicmVhZHkiKS5vZmYoInJlYWR5Iikp
CisgICAgICAgICAgICAgICAgYi5pc1JlYWR5ID0gITAsCisgICAgICAgICAgICAgICAgZSAhPT0g
ITAgJiYgLS1iLnJlYWR5V2FpdCA+IDAgfHwgKG4ucmVzb2x2ZVdpdGgobywgW2JdKSwgYi5mbi50
cmlnZ2VyICYmIGIobykudHJpZ2dlcigicmVhZHkiKS5vZmYoInJlYWR5IikpCiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0sCiAgICAgICAgIGlzRnVuY3Rpb246IGZ1bmN0aW9uKGUpIHsKQEAgLTE4
Nyw3ICsxOTQsOCBAQAogICAgICAgICBwYXJzZUhUTUw6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAg
ICAgICAgICAgIGlmICghZSB8fCAic3RyaW5nIiAhPSB0eXBlb2YgZSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gbnVsbDsKLSAgICAgICAgICAgICJib29sZWFuIiA9PSB0eXBlb2YgdCAmJiAobiA9
IHQsIHQgPSAhMSksIHQgPSB0IHx8IG87CisgICAgICAgICAgICAiYm9vbGVhbiIgPT0gdHlwZW9m
IHQgJiYgKG4gPSB0LCB0ID0gITEpLAorICAgICAgICAgICAgdCA9IHQgfHwgbzsKICAgICAgICAg
ICAgIHZhciByID0gQy5leGVjKGUpLAogICAgICAgICAgICAgICAgIGkgPSAhbiAmJiBbXTsKICAg
ICAgICAgICAgIHJldHVybiByID8gW3QuY3JlYXRlRWxlbWVudChyWzFdKV0gOiAociA9IGIuYnVp
bGRGcmFnbWVudChbZV0sIHQsIGkpLCBpICYmIGIoaSkucmVtb3ZlKCksIGIubWVyZ2UoW10sIHIu
Y2hpbGROb2RlcykpCkBAIC0yODEsNyArMjg5LDggQEAKICAgICAgICAgICAgICAgICBvID0gMCwK
ICAgICAgICAgICAgICAgICBhID0gZS5sZW5ndGg7CiAgICAgICAgICAgICBmb3IgKG4gPSAhIW47
IGEgPiBvOyBvKyspCi0gICAgICAgICAgICAgICAgciA9ICEhdChlW29dLCBvKSwgbiAhPT0gciAm
JiBpLnB1c2goZVtvXSk7CisgICAgICAgICAgICAgICAgciA9ICEhdChlW29dLCBvKSwKKyAgICAg
ICAgICAgICAgICBuICE9PSByICYmIGkucHVzaChlW29dKTsKICAgICAgICAgICAgIHJldHVybiBp
CiAgICAgICAgIH0sCiAgICAgICAgIG1hcDogZnVuY3Rpb24oZSwgdCwgbikgewpAQCAtMjkyLDEw
ICszMDEsMTIgQEAKICAgICAgICAgICAgICAgICBzID0gW107CiAgICAgICAgICAgICBpZiAoYSkK
ICAgICAgICAgICAgICAgICBmb3IgKDsgbyA+IGk7IGkrKykKLSAgICAgICAgICAgICAgICAgICAg
ciA9IHQoZVtpXSwgaSwgbiksIG51bGwgIT0gciAmJiAoc1tzLmxlbmd0aF0gPSByKTsKKyAgICAg
ICAgICAgICAgICAgICAgciA9IHQoZVtpXSwgaSwgbiksCisgICAgICAgICAgICAgICAgICAgIG51
bGwgIT0gciAmJiAoc1tzLmxlbmd0aF0gPSByKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgICAgICBmb3IgKGkgaW4gZSkKLSAgICAgICAgICAgICAgICAgICAgciA9IHQoZVtpXSwgaSwg
biksIG51bGwgIT0gciAmJiAoc1tzLmxlbmd0aF0gPSByKTsKKyAgICAgICAgICAgICAgICAgICAg
ciA9IHQoZVtpXSwgaSwgbiksCisgICAgICAgICAgICAgICAgICAgIG51bGwgIT0gciAmJiAoc1tz
Lmxlbmd0aF0gPSByKTsKICAgICAgICAgICAgIHJldHVybiBmLmFwcGx5KFtdLCBzKQogICAgICAg
ICB9LAogICAgICAgICBndWlkOiAxLApAQCAtMzI1LDE0ICszMzYsMTcgQEAKICAgICAgICAgbm93
OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgIHJldHVybiAobmV3IERhdGUpLmdldFRpbWUoKQog
ICAgICAgICB9Ci0gICAgfSksIGIucmVhZHkucHJvbWlzZSA9IGZ1bmN0aW9uKHQpIHsKKyAgICB9
KSwKKyAgICBiLnJlYWR5LnByb21pc2UgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgIGlmICghbikK
ICAgICAgICAgICAgIGlmIChuID0gYi5EZWZlcnJlZCgpLCAiY29tcGxldGUiID09PSBvLnJlYWR5
U3RhdGUpCiAgICAgICAgICAgICAgICAgc2V0VGltZW91dChiLnJlYWR5KTsKICAgICAgICAgICAg
IGVsc2UgaWYgKG8uYWRkRXZlbnRMaXN0ZW5lcikKLSAgICAgICAgICAgICAgICBvLmFkZEV2ZW50
TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBILCAhMSksIGUuYWRkRXZlbnRMaXN0ZW5lcigi
bG9hZCIsIEgsICExKTsKKyAgICAgICAgICAgICAgICBvLmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNv
bnRlbnRMb2FkZWQiLCBILCAhMSksCisgICAgICAgICAgICAgICAgZS5hZGRFdmVudExpc3RlbmVy
KCJsb2FkIiwgSCwgITEpOwogICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgby5h
dHRhY2hFdmVudCgib25yZWFkeXN0YXRlY2hhbmdlIiwgSCksIGUuYXR0YWNoRXZlbnQoIm9ubG9h
ZCIsIEgpOworICAgICAgICAgICAgICAgIG8uYXR0YWNoRXZlbnQoIm9ucmVhZHlzdGF0ZWNoYW5n
ZSIsIEgpLAorICAgICAgICAgICAgICAgIGUuYXR0YWNoRXZlbnQoIm9ubG9hZCIsIEgpOwogICAg
ICAgICAgICAgICAgIHZhciByID0gITE7CiAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAg
ICAgICAgICAgICAgciA9IG51bGwgPT0gZS5mcmFtZUVsZW1lbnQgJiYgby5kb2N1bWVudEVsZW1l
bnQKQEAgLTM0NCwxMiArMzU4LDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNo
IChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoYSwg
NTApCiAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBx
KCksIGIucmVhZHkoKQorICAgICAgICAgICAgICAgICAgICAgICAgcSgpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgYi5yZWFkeSgpCiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICB9KCkKICAgICAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIG4ucHJvbWlzZSh0KQotICAg
IH0sIGIuZWFjaCgiQm9vbGVhbiBOdW1iZXIgU3RyaW5nIEZ1bmN0aW9uIEFycmF5IERhdGUgUmVn
RXhwIE9iamVjdCBFcnJvciIuc3BsaXQoIiAiKSwgZnVuY3Rpb24oZSwgdCkgeworICAgIH0sCisg
ICAgYi5lYWNoKCJCb29sZWFuIE51bWJlciBTdHJpbmcgRnVuY3Rpb24gQXJyYXkgRGF0ZSBSZWdF
eHAgT2JqZWN0IEVycm9yIi5zcGxpdCgiICIpLCBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgIGxb
IltvYmplY3QgIiArIHQgKyAiXSJdID0gdC50b0xvd2VyQ2FzZSgpCiAgICAgfSk7CiAgICAgZnVu
Y3Rpb24gTShlKSB7CkBAIC0zODEsNyArMzk3LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAg
IHIgPSAhMTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICBuID0gITEsIHUgJiYgKGwgPyBsLmxlbmd0aCAmJiBjKGwu
c2hpZnQoKSkgOiByID8gdSA9IFtdIDogcC5kaXNhYmxlKCkpCisgICAgICAgICAgICAgICAgbiA9
ICExLAorICAgICAgICAgICAgICAgIHUgJiYgKGwgPyBsLmxlbmd0aCAmJiBjKGwuc2hpZnQoKSkg
OiByID8gdSA9IFtdIDogcC5kaXNhYmxlKCkpCiAgICAgICAgICAgICB9LAogICAgICAgICAgICAg
cCA9IHsKICAgICAgICAgICAgICAgICBhZGQ6IGZ1bmN0aW9uKCkgewpAQCAtMzkyLDcgKzQwOSw4
IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gYi50eXBlKG4pOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZnVuY3Rpb24iID09PSByID8gZS51bmlx
dWUgJiYgcC5oYXMobikgfHwgdS5wdXNoKG4pIDogbiAmJiBuLmxlbmd0aCAmJiAic3RyaW5nIiAh
PT0gciAmJiBpKG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKLSAgICAgICAgICAg
ICAgICAgICAgICAgIH0pKGFyZ3VtZW50cyksIG4gPyBvID0gdS5sZW5ndGggOiByICYmIChzID0g
dCwgYyhyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIH0pKGFyZ3VtZW50cyksCisgICAgICAg
ICAgICAgICAgICAgICAgICBuID8gbyA9IHUubGVuZ3RoIDogciAmJiAocyA9IHQsIGMocikpCiAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMKICAg
ICAgICAgICAgICAgICB9LApAQCAtNDAwLDcgKzQxOCw4IEBACiAgICAgICAgICAgICAgICAgICAg
IHJldHVybiB1ICYmIGIuZWFjaChhcmd1bWVudHMsIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgIHZhciByOwogICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKChy
ID0gYi5pbkFycmF5KHQsIHUsIHIpKSA+IC0xKQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHUuc3BsaWNlKHIsIDEpLCBuICYmIChvID49IHIgJiYgby0tLCBhID49IHIgJiYgYS0tKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHUuc3BsaWNlKHIsIDEpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG4gJiYgKG8gPj0gciAmJiBvLS0sIGEgPj0gciAmJiBhLS0pCiAgICAgICAg
ICAgICAgICAgICAgIH0pLCB0aGlzCiAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAg
ICBoYXM6IGZ1bmN0aW9uKGUpIHsKQEAgLTQzMiw3ICs0NTEsOCBAQAogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIH07CiAgICAgICAgIHJldHVybiBwCi0gICAgfSwgYi5leHRlbmQoewor
ICAgIH0sCisgICAgYi5leHRlbmQoewogICAgICAgICBEZWZlcnJlZDogZnVuY3Rpb24oZSkgewog
ICAgICAgICAgICAgdmFyIHQgPSBbWyJyZXNvbHZlIiwgImRvbmUiLCBiLkNhbGxiYWNrcygib25j
ZSBtZW1vcnkiKSwgInJlc29sdmVkIl0sIFsicmVqZWN0IiwgImZhaWwiLCBiLkNhbGxiYWNrcygi
b25jZSBtZW1vcnkiKSwgInJlamVjdGVkIl0sIFsibm90aWZ5IiwgInByb2dyZXNzIiwgYi5DYWxs
YmFja3MoIm1lbW9yeSIpXV0sCiAgICAgICAgICAgICAgICAgbiA9ICJwZW5kaW5nIiwKQEAgLTQ1
Myw3ICs0NzMsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUg
PSBzICYmIHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGUgJiYgYi5pc0Z1bmN0aW9uKGUucHJvbWlzZSkgPyBlLnByb21pc2UoKS5k
b25lKG4ucmVzb2x2ZSkuZmFpbChuLnJlamVjdCkucHJvZ3Jlc3Mobi5ub3RpZnkpIDogblthICsg
IldpdGgiXSh0aGlzID09PSByID8gbi5wcm9taXNlKCkgOiB0aGlzLCBzID8gW2VdIDogYXJndW1l
bnRzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0pLCBlID0gbnVsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0p
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSBudWxsCiAgICAgICAgICAgICAgICAg
ICAgICAgICB9KS5wcm9taXNlKCkKICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAg
ICAgICAgICAgcHJvbWlzZTogZnVuY3Rpb24oZSkgewpAQCAtNDY0LDExICs0ODUsMTQgQEAKICAg
ICAgICAgICAgIHJldHVybiByLnBpcGUgPSByLnRoZW4sIGIuZWFjaCh0LCBmdW5jdGlvbihlLCBv
KSB7CiAgICAgICAgICAgICAgICAgdmFyIGEgPSBvWzJdLAogICAgICAgICAgICAgICAgICAgICBz
ID0gb1szXTsKLSAgICAgICAgICAgICAgICByW29bMV1dID0gYS5hZGQsIHMgJiYgYS5hZGQoZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICAgICAgcltvWzFdXSA9IGEuYWRkLAorICAgICAgICAgICAg
ICAgIHMgJiYgYS5hZGQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgIG4gPSBzCi0g
ICAgICAgICAgICAgICAgfSwgdFsxIF4gZV1bMl0uZGlzYWJsZSwgdFsyXVsyXS5sb2NrKSwgaVtv
WzBdXSA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIH0sIHRbMSBeIGVdWzJdLmRpc2Fi
bGUsIHRbMl1bMl0ubG9jayksCisgICAgICAgICAgICAgICAgaVtvWzBdXSA9IGZ1bmN0aW9uKCkg
ewogICAgICAgICAgICAgICAgICAgICByZXR1cm4gaVtvWzBdICsgIldpdGgiXSh0aGlzID09PSBp
ID8gciA6IHRoaXMsIGFyZ3VtZW50cyksIHRoaXMKLSAgICAgICAgICAgICAgICB9LCBpW29bMF0g
KyAiV2l0aCJdID0gYS5maXJlV2l0aAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAg
ICAgaVtvWzBdICsgIldpdGgiXSA9IGEuZmlyZVdpdGgKICAgICAgICAgICAgIH0pLCByLnByb21p
c2UoaSksIGUgJiYgZS5jYWxsKGksIGkpLCBpCiAgICAgICAgIH0sCiAgICAgICAgIHdoZW46IGZ1
bmN0aW9uKGUpIHsKQEAgLTQ3OSw3ICs1MDMsOSBAQAogICAgICAgICAgICAgICAgIG8gPSAxID09
PSBpID8gZSA6IGIuRGVmZXJyZWQoKSwKICAgICAgICAgICAgICAgICBhID0gZnVuY3Rpb24oZSwg
dCwgbikgewogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24ocikgewotICAgICAg
ICAgICAgICAgICAgICAgICAgdFtlXSA9IHRoaXMsIG5bZV0gPSBhcmd1bWVudHMubGVuZ3RoID4g
MSA/IGguY2FsbChhcmd1bWVudHMpIDogciwgbiA9PT0gcyA/IG8ubm90aWZ5V2l0aCh0LCBuKSA6
IC0taSB8fCBvLnJlc29sdmVXaXRoKHQsIG4pCisgICAgICAgICAgICAgICAgICAgICAgICB0W2Vd
ID0gdGhpcywKKyAgICAgICAgICAgICAgICAgICAgICAgIG5bZV0gPSBhcmd1bWVudHMubGVuZ3Ro
ID4gMSA/IGguY2FsbChhcmd1bWVudHMpIDogciwKKyAgICAgICAgICAgICAgICAgICAgICAgIG4g
PT09IHMgPyBvLm5vdGlmeVdpdGgodCwgbikgOiAtLWkgfHwgby5yZXNvbHZlV2l0aCh0LCBuKQog
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAg
ICBzLApAQCAtNDkwLDcgKzUxNiw4IEBACiAgICAgICAgICAgICAgICAgICAgIG5bdF0gJiYgYi5p
c0Z1bmN0aW9uKG5bdF0ucHJvbWlzZSkgPyBuW3RdLnByb21pc2UoKS5kb25lKGEodCwgbCwgbikp
LmZhaWwoby5yZWplY3QpLnByb2dyZXNzKGEodCwgdSwgcykpIDogLS1pOwogICAgICAgICAgICAg
cmV0dXJuIGkgfHwgby5yZXNvbHZlV2l0aChsLCBuKSwgby5wcm9taXNlKCkKICAgICAgICAgfQot
ICAgIH0pLCBiLnN1cHBvcnQgPSBmdW5jdGlvbigpIHsKKyAgICB9KSwKKyAgICBiLnN1cHBvcnQg
PSBmdW5jdGlvbigpIHsKICAgICAgICAgdmFyIHQsCiAgICAgICAgICAgICBuLAogICAgICAgICAg
ICAgciwKQEAgLTUwNCw3ICs1MzEsMTEgQEAKICAgICAgICAgICAgIGQgPSBvLmNyZWF0ZUVsZW1l
bnQoImRpdiIpOwogICAgICAgICBpZiAoZC5zZXRBdHRyaWJ1dGUoImNsYXNzTmFtZSIsICJ0Iiks
IGQuaW5uZXJIVE1MID0gIiAgPGxpbmsvPjx0YWJsZT48L3RhYmxlPjxhIGhyZWY9Jy9hJz5hPC9h
PjxpbnB1dCB0eXBlPSdjaGVja2JveCcvPiIsIG4gPSBkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIq
IiksIHIgPSBkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJhIilbMF0sICFuIHx8ICFyIHx8ICFuLmxl
bmd0aCkKICAgICAgICAgICAgIHJldHVybiB7fTsKLSAgICAgICAgcyA9IG8uY3JlYXRlRWxlbWVu
dCgic2VsZWN0IiksIGwgPSBzLmFwcGVuZENoaWxkKG8uY3JlYXRlRWxlbWVudCgib3B0aW9uIikp
LCBhID0gZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKVswXSwgci5zdHlsZS5jc3NUZXh0
ID0gInRvcDoxcHg7ZmxvYXQ6bGVmdDtvcGFjaXR5Oi41IiwgdCA9IHsKKyAgICAgICAgcyA9IG8u
Y3JlYXRlRWxlbWVudCgic2VsZWN0IiksCisgICAgICAgIGwgPSBzLmFwcGVuZENoaWxkKG8uY3Jl
YXRlRWxlbWVudCgib3B0aW9uIikpLAorICAgICAgICBhID0gZC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgiaW5wdXQiKVswXSwKKyAgICAgICAgci5zdHlsZS5jc3NUZXh0ID0gInRvcDoxcHg7ZmxvYXQ6
bGVmdDtvcGFjaXR5Oi41IiwKKyAgICAgICAgdCA9IHsKICAgICAgICAgICAgIGdldFNldEF0dHJp
YnV0ZTogInQiICE9PSBkLmNsYXNzTmFtZSwKICAgICAgICAgICAgIGxlYWRpbmdXaGl0ZXNwYWNl
OiAzID09PSBkLmZpcnN0Q2hpbGQubm9kZVR5cGUsCiAgICAgICAgICAgICB0Ym9keTogIWQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRib2R5IikubGVuZ3RoLApAQCAtNTI1LDEzICs1NTYsMjkgQEAK
ICAgICAgICAgICAgIHJlbGlhYmxlTWFyZ2luUmlnaHQ6ICEwLAogICAgICAgICAgICAgYm94U2l6
aW5nUmVsaWFibGU6ICEwLAogICAgICAgICAgICAgcGl4ZWxQb3NpdGlvbjogITEKLSAgICAgICAg
fSwgYS5jaGVja2VkID0gITAsIHQubm9DbG9uZUNoZWNrZWQgPSBhLmNsb25lTm9kZSghMCkuY2hl
Y2tlZCwgcy5kaXNhYmxlZCA9ICEwLCB0Lm9wdERpc2FibGVkID0gIWwuZGlzYWJsZWQ7CisgICAg
ICAgIH0sCisgICAgICAgIGEuY2hlY2tlZCA9ICEwLAorICAgICAgICB0Lm5vQ2xvbmVDaGVja2Vk
ID0gYS5jbG9uZU5vZGUoITApLmNoZWNrZWQsCisgICAgICAgIHMuZGlzYWJsZWQgPSAhMCwKKyAg
ICAgICAgdC5vcHREaXNhYmxlZCA9ICFsLmRpc2FibGVkOwogICAgICAgICB0cnkgewogICAgICAg
ICAgICAgZGVsZXRlIGQudGVzdAogICAgICAgICB9IGNhdGNoIChoKSB7CiAgICAgICAgICAgICB0
LmRlbGV0ZUV4cGFuZG8gPSAhMQogICAgICAgICB9Ci0gICAgICAgIGEgPSBvLmNyZWF0ZUVsZW1l
bnQoImlucHV0IiksIGEuc2V0QXR0cmlidXRlKCJ2YWx1ZSIsICIiKSwgdC5pbnB1dCA9ICIiID09
PSBhLmdldEF0dHJpYnV0ZSgidmFsdWUiKSwgYS52YWx1ZSA9ICJ0IiwgYS5zZXRBdHRyaWJ1dGUo
InR5cGUiLCAicmFkaW8iKSwgdC5yYWRpb1ZhbHVlID0gInQiID09PSBhLnZhbHVlLCBhLnNldEF0
dHJpYnV0ZSgiY2hlY2tlZCIsICJ0IiksIGEuc2V0QXR0cmlidXRlKCJuYW1lIiwgInQiKSwgdSA9
IG8uY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLCB1LmFwcGVuZENoaWxkKGEpLCB0LmFwcGVuZENo
ZWNrZWQgPSBhLmNoZWNrZWQsIHQuY2hlY2tDbG9uZSA9IHUuY2xvbmVOb2RlKCEwKS5jbG9uZU5v
ZGUoITApLmxhc3RDaGlsZC5jaGVja2VkLCBkLmF0dGFjaEV2ZW50ICYmIChkLmF0dGFjaEV2ZW50
KCJvbmNsaWNrIiwgZnVuY3Rpb24oKSB7CisgICAgICAgIGEgPSBvLmNyZWF0ZUVsZW1lbnQoImlu
cHV0IiksCisgICAgICAgIGEuc2V0QXR0cmlidXRlKCJ2YWx1ZSIsICIiKSwKKyAgICAgICAgdC5p
bnB1dCA9ICIiID09PSBhLmdldEF0dHJpYnV0ZSgidmFsdWUiKSwKKyAgICAgICAgYS52YWx1ZSA9
ICJ0IiwKKyAgICAgICAgYS5zZXRBdHRyaWJ1dGUoInR5cGUiLCAicmFkaW8iKSwKKyAgICAgICAg
dC5yYWRpb1ZhbHVlID0gInQiID09PSBhLnZhbHVlLAorICAgICAgICBhLnNldEF0dHJpYnV0ZSgi
Y2hlY2tlZCIsICJ0IiksCisgICAgICAgIGEuc2V0QXR0cmlidXRlKCJuYW1lIiwgInQiKSwKKyAg
ICAgICAgdSA9IG8uY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLAorICAgICAgICB1LmFwcGVuZENo
aWxkKGEpLAorICAgICAgICB0LmFwcGVuZENoZWNrZWQgPSBhLmNoZWNrZWQsCisgICAgICAgIHQu
Y2hlY2tDbG9uZSA9IHUuY2xvbmVOb2RlKCEwKS5jbG9uZU5vZGUoITApLmxhc3RDaGlsZC5jaGVj
a2VkLAorICAgICAgICBkLmF0dGFjaEV2ZW50ICYmIChkLmF0dGFjaEV2ZW50KCJvbmNsaWNrIiwg
ZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICB0Lm5vQ2xvbmVFdmVudCA9ICExCiAgICAgICAgIH0p
LCBkLmNsb25lTm9kZSghMCkuY2xpY2soKSk7CiAgICAgICAgIGZvciAoZiBpbiB7CkBAIC01Mzks
NyArNTg2LDggQEAKICAgICAgICAgICAgIGNoYW5nZTogITAsCiAgICAgICAgICAgICBmb2N1c2lu
OiAhMAogICAgICAgICB9KQotICAgICAgICAgICAgZC5zZXRBdHRyaWJ1dGUoYyA9ICJvbiIgKyBm
LCAidCIpLCB0W2YgKyAiQnViYmxlcyJdID0gYyBpbiBlIHx8IGQuYXR0cmlidXRlc1tjXS5leHBh
bmRvID09PSAhMTsKKyAgICAgICAgICAgIGQuc2V0QXR0cmlidXRlKGMgPSAib24iICsgZiwgInQi
KSwKKyAgICAgICAgICAgIHRbZiArICJCdWJibGVzIl0gPSBjIGluIGUgfHwgZC5hdHRyaWJ1dGVz
W2NdLmV4cGFuZG8gPT09ICExOwogICAgICAgICByZXR1cm4gZC5zdHlsZS5iYWNrZ3JvdW5kQ2xp
cCA9ICJjb250ZW50LWJveCIsIGQuY2xvbmVOb2RlKCEwKS5zdHlsZS5iYWNrZ3JvdW5kQ2xpcCA9
ICIiLCB0LmNsZWFyQ2xvbmVTdHlsZSA9ICJjb250ZW50LWJveCIgPT09IGQuc3R5bGUuYmFja2dy
b3VuZENsaXAsIGIoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICB2YXIgbiwKICAgICAgICAgICAg
ICAgICByLApAQCAtNjE1LDcgKzY2Myw4IEBACiAgICAgICAgICAgICB2YXIgdCA9IGUubm9kZU5h
bWUgJiYgYi5ub0RhdGFbZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXTsKICAgICAgICAgICAgIHJl
dHVybiAhdCB8fCB0ICE9PSAhMCAmJiBlLmdldEF0dHJpYnV0ZSgiY2xhc3NpZCIpID09PSB0CiAg
ICAgICAgIH0KLSAgICB9KSwgYi5mbi5leHRlbmQoeworICAgIH0pLAorICAgIGIuZm4uZXh0ZW5k
KHsKICAgICAgICAgZGF0YTogZnVuY3Rpb24oZSwgbikgewogICAgICAgICAgICAgdmFyIHIsCiAg
ICAgICAgICAgICAgICAgaSwKQEAgLTYyNSw3ICs2NzQsOCBAQAogICAgICAgICAgICAgaWYgKGUg
PT09IHQpIHsKICAgICAgICAgICAgICAgICBpZiAodGhpcy5sZW5ndGggJiYgKHMgPSBiLmRhdGEo
byksIDEgPT09IG8ubm9kZVR5cGUgJiYgIWIuX2RhdGEobywgInBhcnNlZEF0dHJzIikpKSB7CiAg
ICAgICAgICAgICAgICAgICAgIGZvciAociA9IG8uYXR0cmlidXRlczsgci5sZW5ndGggPiBhOyBh
KyspCi0gICAgICAgICAgICAgICAgICAgICAgICBpID0gclthXS5uYW1lLCBpLmluZGV4T2YoImRh
dGEtIikgfHwgKGkgPSBiLmNhbWVsQ2FzZShpLnNsaWNlKDUpKSwgVyhvLCBpLCBzW2ldKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBpID0gclthXS5uYW1lLAorICAgICAgICAgICAgICAgICAg
ICAgICAgaS5pbmRleE9mKCJkYXRhLSIpIHx8IChpID0gYi5jYW1lbENhc2UoaS5zbGljZSg1KSks
IFcobywgaSwgc1tpXSkpOwogICAgICAgICAgICAgICAgICAgICBiLl9kYXRhKG8sICJwYXJzZWRB
dHRycyIsICEwKQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICByZXR1cm4gcwpA
QCAtNjc4LDIyICs3MjgsMjggQEAKICAgICAgICAgICAgICAgICBhID0gZnVuY3Rpb24oKSB7CiAg
ICAgICAgICAgICAgICAgICAgIGIuZGVxdWV1ZShlLCB0KQogICAgICAgICAgICAgICAgIH07Ci0g
ICAgICAgICAgICAiaW5wcm9ncmVzcyIgPT09IGkgJiYgKGkgPSBuLnNoaWZ0KCksIHItLSksIG8u
Y3VyID0gaSwgaSAmJiAoImZ4IiA9PT0gdCAmJiBuLnVuc2hpZnQoImlucHJvZ3Jlc3MiKSwgZGVs
ZXRlIG8uc3RvcCwgaS5jYWxsKGUsIGEsIG8pKSwgIXIgJiYgbyAmJiBvLmVtcHR5LmZpcmUoKQor
ICAgICAgICAgICAgImlucHJvZ3Jlc3MiID09PSBpICYmIChpID0gbi5zaGlmdCgpLCByLS0pLAor
ICAgICAgICAgICAgby5jdXIgPSBpLAorICAgICAgICAgICAgaSAmJiAoImZ4IiA9PT0gdCAmJiBu
LnVuc2hpZnQoImlucHJvZ3Jlc3MiKSwgZGVsZXRlIG8uc3RvcCwgaS5jYWxsKGUsIGEsIG8pKSwK
KyAgICAgICAgICAgICFyICYmIG8gJiYgby5lbXB0eS5maXJlKCkKICAgICAgICAgfSwKICAgICAg
ICAgX3F1ZXVlSG9va3M6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgIHZhciBuID0gdCAr
ICJxdWV1ZUhvb2tzIjsKICAgICAgICAgICAgIHJldHVybiBiLl9kYXRhKGUsIG4pIHx8IGIuX2Rh
dGEoZSwgbiwgewogICAgICAgICAgICAgICAgICAgICBlbXB0eTogYi5DYWxsYmFja3MoIm9uY2Ug
bWVtb3J5IikuYWRkKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgYi5fcmVt
b3ZlRGF0YShlLCB0ICsgInF1ZXVlIiksIGIuX3JlbW92ZURhdGEoZSwgbikKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGIuX3JlbW92ZURhdGEoZSwgdCArICJxdWV1ZSIpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgYi5fcmVtb3ZlRGF0YShlLCBuKQogICAgICAgICAgICAgICAgICAgICB9KQog
ICAgICAgICAgICAgICAgIH0pCiAgICAgICAgIH0KLSAgICB9KSwgYi5mbi5leHRlbmQoeworICAg
IH0pLAorICAgIGIuZm4uZXh0ZW5kKHsKICAgICAgICAgcXVldWU6IGZ1bmN0aW9uKGUsIG4pIHsK
ICAgICAgICAgICAgIHZhciByID0gMjsKICAgICAgICAgICAgIHJldHVybiAic3RyaW5nIiAhPSB0
eXBlb2YgZSAmJiAobiA9IGUsIGUgPSAiZngiLCByLS0pLCByID4gYXJndW1lbnRzLmxlbmd0aCA/
IGIucXVldWUodGhpc1swXSwgZSkgOiBuID09PSB0ID8gdGhpcyA6IHRoaXMuZWFjaChmdW5jdGlv
bigpIHsKICAgICAgICAgICAgICAgICB2YXIgdCA9IGIucXVldWUodGhpcywgZSwgbik7Ci0gICAg
ICAgICAgICAgICAgYi5fcXVldWVIb29rcyh0aGlzLCBlKSwgImZ4IiA9PT0gZSAmJiAiaW5wcm9n
cmVzcyIgIT09IHRbMF0gJiYgYi5kZXF1ZXVlKHRoaXMsIGUpCisgICAgICAgICAgICAgICAgYi5f
cXVldWVIb29rcyh0aGlzLCBlKSwKKyAgICAgICAgICAgICAgICAiZngiID09PSBlICYmICJpbnBy
b2dyZXNzIiAhPT0gdFswXSAmJiBiLmRlcXVldWUodGhpcywgZSkKICAgICAgICAgICAgIH0pCiAg
ICAgICAgIH0sCiAgICAgICAgIGRlcXVldWU6IGZ1bmN0aW9uKGUpIHsKQEAgLTcyMSw5ICs3Nzcs
MTEgQEAKICAgICAgICAgICAgICAgICB1ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAg
ICAgIC0taSB8fCBvLnJlc29sdmVXaXRoKGEsIFthXSkKICAgICAgICAgICAgICAgICB9OwotICAg
ICAgICAgICAgInN0cmluZyIgIT0gdHlwZW9mIGUgJiYgKG4gPSBlLCBlID0gdCksIGUgPSBlIHx8
ICJmeCI7CisgICAgICAgICAgICAic3RyaW5nIiAhPSB0eXBlb2YgZSAmJiAobiA9IGUsIGUgPSB0
KSwKKyAgICAgICAgICAgIGUgPSBlIHx8ICJmeCI7CiAgICAgICAgICAgICB3aGlsZSAocy0tKQot
ICAgICAgICAgICAgICAgIHIgPSBiLl9kYXRhKGFbc10sIGUgKyAicXVldWVIb29rcyIpLCByICYm
IHIuZW1wdHkgJiYgKGkrKywgci5lbXB0eS5hZGQodSkpOworICAgICAgICAgICAgICAgIHIgPSBi
Ll9kYXRhKGFbc10sIGUgKyAicXVldWVIb29rcyIpLAorICAgICAgICAgICAgICAgIHIgJiYgci5l
bXB0eSAmJiAoaSsrLCByLmVtcHR5LmFkZCh1KSk7CiAgICAgICAgICAgICByZXR1cm4gdSgpLCBv
LnByb21pc2UobikKICAgICAgICAgfQogICAgIH0pOwpAQCAtNzUyLDcgKzgxMCw4IEBACiAgICAg
ICAgIHJlbW92ZVByb3A6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgIHJldHVybiBlID0gYi5w
cm9wRml4W2VdIHx8IGUsIHRoaXMuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICB0
cnkgewotICAgICAgICAgICAgICAgICAgICB0aGlzW2VdID0gdCwgZGVsZXRlIHRoaXNbZV0KKyAg
ICAgICAgICAgICAgICAgICAgdGhpc1tlXSA9IHQsCisgICAgICAgICAgICAgICAgICAgIGRlbGV0
ZSB0aGlzW2VdCiAgICAgICAgICAgICAgICAgfSBjYXRjaCAobikge30KICAgICAgICAgICAgIH0p
CiAgICAgICAgIH0sCkBAIC04MTYsNyArODc1LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAg
IHUgPSB0LAogICAgICAgICAgICAgICAgICAgICAgICAgbCA9IGUubWF0Y2godykgfHwgW107CiAg
ICAgICAgICAgICAgICAgICAgIHdoaWxlIChvID0gbFthKytdKQotICAgICAgICAgICAgICAgICAg
ICAgICAgdSA9IHIgPyB1IDogIXMuaGFzQ2xhc3MobyksIHNbdSA/ICJhZGRDbGFzcyIgOiAicmVt
b3ZlQ2xhc3MiXShvKQorICAgICAgICAgICAgICAgICAgICAgICAgdSA9IHIgPyB1IDogIXMuaGFz
Q2xhc3MobyksCisgICAgICAgICAgICAgICAgICAgICAgICBzW3UgPyAiYWRkQ2xhc3MiIDogInJl
bW92ZUNsYXNzIl0obykKICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAg
ICAgKG4gPT09IGkgfHwgImJvb2xlYW4iID09PSBuKSAmJiAodGhpcy5jbGFzc05hbWUgJiYgYi5f
ZGF0YSh0aGlzLCAiX19jbGFzc05hbWVfXyIsIHRoaXMuY2xhc3NOYW1lKSwgdGhpcy5jbGFzc05h
bWUgPSB0aGlzLmNsYXNzTmFtZSB8fCBlID09PSAhMSA/ICIiIDogYi5fZGF0YSh0aGlzLCAiX19j
bGFzc05hbWVfXyIpIHx8ICIiKQogICAgICAgICAgICAgfSkKQEAgLTg0OCw3ICs5MDgsOCBAQAog
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gciA9IGIudmFsSG9va3Nbby50eXBlXSB8fCBiLnZh
bEhvb2tzW28ubm9kZU5hbWUudG9Mb3dlckNhc2UoKV0sIHIgJiYgImdldCIgaW4gciAmJiAobiA9
IHIuZ2V0KG8sICJ2YWx1ZSIpKSAhPT0gdCA/IG4gOiAobiA9IG8udmFsdWUsICJzdHJpbmciID09
IHR5cGVvZiBuID8gbi5yZXBsYWNlKFUsICIiKSA6IG51bGwgPT0gbiA/ICIiIDogbikKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQotICAgIH0pLCBiLmV4dGVuZCh7CisgICAgfSksCisgICAgYi5l
eHRlbmQoewogICAgICAgICB2YWxIb29rczogewogICAgICAgICAgICAgb3B0aW9uOiB7CiAgICAg
ICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbihlKSB7CkBAIC04OTcsNyArOTU4LDkgQEAKICAgICAg
ICAgICAgICAgICBvID0gdCAmJiB0Lm1hdGNoKHcpOwogICAgICAgICAgICAgaWYgKG8gJiYgMSA9
PT0gZS5ub2RlVHlwZSkKICAgICAgICAgICAgICAgICB3aGlsZSAobiA9IG9baSsrXSkKLSAgICAg
ICAgICAgICAgICAgICAgciA9IGIucHJvcEZpeFtuXSB8fCBuLCBKLnRlc3QobikgPyAhUSAmJiBH
LnRlc3QobikgPyBlW2IuY2FtZWxDYXNlKCJkZWZhdWx0LSIgKyBuKV0gPSBlW3JdID0gITEgOiBl
W3JdID0gITEgOiBiLmF0dHIoZSwgbiwgIiIpLCBlLnJlbW92ZUF0dHJpYnV0ZShRID8gbiA6IHIp
CisgICAgICAgICAgICAgICAgICAgIHIgPSBiLnByb3BGaXhbbl0gfHwgbiwKKyAgICAgICAgICAg
ICAgICAgICAgSi50ZXN0KG4pID8gIVEgJiYgRy50ZXN0KG4pID8gZVtiLmNhbWVsQ2FzZSgiZGVm
YXVsdC0iICsgbildID0gZVtyXSA9ICExIDogZVtyXSA9ICExIDogYi5hdHRyKGUsIG4sICIiKSwK
KyAgICAgICAgICAgICAgICAgICAgZS5yZW1vdmVBdHRyaWJ1dGUoUSA/IG4gOiByKQogICAgICAg
ICB9LAogICAgICAgICBhdHRySG9va3M6IHsKICAgICAgICAgICAgIHR5cGU6IHsKQEAgLTkzOSw3
ICsxMDAyLDggQEAKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
LSAgICB9KSwgeiA9IHsKKyAgICB9KSwKKyAgICB6ID0gewogICAgICAgICBnZXQ6IGZ1bmN0aW9u
KGUsIG4pIHsKICAgICAgICAgICAgIHZhciByID0gYi5wcm9wKGUsIG4pLAogICAgICAgICAgICAg
ICAgIGkgPSAiYm9vbGVhbiIgPT0gdHlwZW9mIHIgJiYgZS5nZXRBdHRyaWJ1dGUobiksCkBAIC05
NDksNyArMTAxMyw4IEBACiAgICAgICAgIHNldDogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAg
ICAgICAgcmV0dXJuIHQgPT09ICExID8gYi5yZW1vdmVBdHRyKGUsIG4pIDogSyAmJiBRIHx8ICFH
LnRlc3QobikgPyBlLnNldEF0dHJpYnV0ZSghUSAmJiBiLnByb3BGaXhbbl0gfHwgbiwgbikgOiBl
W2IuY2FtZWxDYXNlKCJkZWZhdWx0LSIgKyBuKV0gPSBlW25dID0gITAsIG4KICAgICAgICAgfQot
ICAgIH0sIEsgJiYgUSB8fCAoYi5hdHRySG9va3MudmFsdWUgPSB7CisgICAgfSwKKyAgICBLICYm
IFEgfHwgKGIuYXR0ckhvb2tzLnZhbHVlID0gewogICAgICAgICBnZXQ6IGZ1bmN0aW9uKGUsIG4p
IHsKICAgICAgICAgICAgIHZhciByID0gZS5nZXRBdHRyaWJ1dGVOb2RlKG4pOwogICAgICAgICAg
ICAgcmV0dXJuIGIubm9kZU5hbWUoZSwgImlucHV0IikgPyBlLmRlZmF1bHRWYWx1ZSA6IHIgJiYg
ci5zcGVjaWZpZWQgPyByLnZhbHVlIDogdApAQCAtOTU3LDcgKzEwMjIsOCBAQAogICAgICAgICBz
ZXQ6IGZ1bmN0aW9uKGUsIG4sIHIpIHsKICAgICAgICAgICAgIHJldHVybiBiLm5vZGVOYW1lKGUs
ICJpbnB1dCIpID8gKGUuZGVmYXVsdFZhbHVlID0gbiwgdCkgOiBJICYmIEkuc2V0KGUsIG4sIHIp
CiAgICAgICAgIH0KLSAgICB9KSwgUSB8fCAoSSA9IGIudmFsSG9va3MuYnV0dG9uID0geworICAg
IH0pLAorICAgIFEgfHwgKEkgPSBiLnZhbEhvb2tzLmJ1dHRvbiA9IHsKICAgICAgICAgZ2V0OiBm
dW5jdGlvbihlLCBuKSB7CiAgICAgICAgICAgICB2YXIgciA9IGUuZ2V0QXR0cmlidXRlTm9kZShu
KTsKICAgICAgICAgICAgIHJldHVybiByICYmICgiaWQiID09PSBuIHx8ICJuYW1lIiA9PT0gbiB8
fCAiY29vcmRzIiA9PT0gbiA/ICIiICE9PSByLnZhbHVlIDogci5zcGVjaWZpZWQpID8gci52YWx1
ZSA6IHQKQEAgLTk3Nyw3ICsxMDQzLDggQEAKICAgICAgICAgICAgICAgICByZXR1cm4gIiIgPT09
IHIgPyAoZS5zZXRBdHRyaWJ1dGUobiwgImF1dG8iKSwgcikgOiB0CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0pCi0gICAgfSkpLCBiLnN1cHBvcnQuaHJlZk5vcm1hbGl6ZWQgfHwgKGIuZWFjaChb
ImhyZWYiLCAic3JjIiwgIndpZHRoIiwgImhlaWdodCJdLCBmdW5jdGlvbihlLCBuKSB7CisgICAg
fSkpLAorICAgIGIuc3VwcG9ydC5ocmVmTm9ybWFsaXplZCB8fCAoYi5lYWNoKFsiaHJlZiIsICJz
cmMiLCAid2lkdGgiLCAiaGVpZ2h0Il0sIGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgYi5hdHRy
SG9va3Nbbl0gPSBiLmV4dGVuZChiLmF0dHJIb29rc1tuXSwgewogICAgICAgICAgICAgZ2V0OiBm
dW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgdmFyIHIgPSBlLmdldEF0dHJpYnV0ZShuLCAy
KTsKQEAgLTk5MCwyNSArMTA1NywzMCBAQAogICAgICAgICAgICAgICAgIHJldHVybiBlLmdldEF0
dHJpYnV0ZSh0LCA0KQogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgfSkpLCBiLnN1cHBv
cnQuc3R5bGUgfHwgKGIuYXR0ckhvb2tzLnN0eWxlID0geworICAgIH0pKSwKKyAgICBiLnN1cHBv
cnQuc3R5bGUgfHwgKGIuYXR0ckhvb2tzLnN0eWxlID0gewogICAgICAgICBnZXQ6IGZ1bmN0aW9u
KGUpIHsKICAgICAgICAgICAgIHJldHVybiBlLnN0eWxlLmNzc1RleHQgfHwgdAogICAgICAgICB9
LAogICAgICAgICBzZXQ6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgIHJldHVybiBlLnN0
eWxlLmNzc1RleHQgPSB0ICsgIiIKICAgICAgICAgfQotICAgIH0pLCBiLnN1cHBvcnQub3B0U2Vs
ZWN0ZWQgfHwgKGIucHJvcEhvb2tzLnNlbGVjdGVkID0gYi5leHRlbmQoYi5wcm9wSG9va3Muc2Vs
ZWN0ZWQsIHsKKyAgICB9KSwKKyAgICBiLnN1cHBvcnQub3B0U2VsZWN0ZWQgfHwgKGIucHJvcEhv
b2tzLnNlbGVjdGVkID0gYi5leHRlbmQoYi5wcm9wSG9va3Muc2VsZWN0ZWQsIHsKICAgICAgICAg
Z2V0OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICB2YXIgdCA9IGUucGFyZW50Tm9kZTsKICAg
ICAgICAgICAgIHJldHVybiB0ICYmICh0LnNlbGVjdGVkSW5kZXgsIHQucGFyZW50Tm9kZSAmJiB0
LnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCksIG51bGwKICAgICAgICAgfQotICAgIH0pKSwgYi5z
dXBwb3J0LmVuY3R5cGUgfHwgKGIucHJvcEZpeC5lbmN0eXBlID0gImVuY29kaW5nIiksIGIuc3Vw
cG9ydC5jaGVja09uIHx8IGIuZWFjaChbInJhZGlvIiwgImNoZWNrYm94Il0sIGZ1bmN0aW9uKCkg
eworICAgIH0pKSwKKyAgICBiLnN1cHBvcnQuZW5jdHlwZSB8fCAoYi5wcm9wRml4LmVuY3R5cGUg
PSAiZW5jb2RpbmciKSwKKyAgICBiLnN1cHBvcnQuY2hlY2tPbiB8fCBiLmVhY2goWyJyYWRpbyIs
ICJjaGVja2JveCJdLCBmdW5jdGlvbigpIHsKICAgICAgICAgYi52YWxIb29rc1t0aGlzXSA9IHsK
ICAgICAgICAgICAgIGdldDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgIHJldHVybiBu
dWxsID09PSBlLmdldEF0dHJpYnV0ZSgidmFsdWUiKSA/ICJvbiIgOiBlLnZhbHVlCiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KLSAgICB9KSwgYi5lYWNoKFsicmFkaW8iLCAiY2hlY2tib3giXSwg
ZnVuY3Rpb24oKSB7CisgICAgfSksCisgICAgYi5lYWNoKFsicmFkaW8iLCAiY2hlY2tib3giXSwg
ZnVuY3Rpb24oKSB7CiAgICAgICAgIGIudmFsSG9va3NbdGhpc10gPSBiLmV4dGVuZChiLnZhbEhv
b2tzW3RoaXNdLCB7CiAgICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAg
ICAgICAgICByZXR1cm4gYi5pc0FycmF5KG4pID8gZS5jaGVja2VkID0gYi5pbkFycmF5KGIoZSku
dmFsKCksIG4pID49IDAgOiB0CkBAIC0xMDQyLDExICsxMTE0LDIyIEBACiAgICAgICAgICAgICAg
ICAgeSwKICAgICAgICAgICAgICAgICB2ID0gYi5fZGF0YShlKTsKICAgICAgICAgICAgIGlmICh2
KSB7Ci0gICAgICAgICAgICAgICAgci5oYW5kbGVyICYmIChjID0gciwgciA9IGMuaGFuZGxlciwg
YSA9IGMuc2VsZWN0b3IpLCByLmd1aWQgfHwgKHIuZ3VpZCA9IGIuZ3VpZCsrKSwgKHUgPSB2LmV2
ZW50cykgfHwgKHUgPSB2LmV2ZW50cyA9IHt9KSwgKGYgPSB2LmhhbmRsZSkgfHwgKGYgPSB2Lmhh
bmRsZSA9IGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgICAgICAgICByLmhhbmRsZXIgJiYgKGMgPSBy
LCByID0gYy5oYW5kbGVyLCBhID0gYy5zZWxlY3RvciksCisgICAgICAgICAgICAgICAgci5ndWlk
IHx8IChyLmd1aWQgPSBiLmd1aWQrKyksCisgICAgICAgICAgICAgICAgKHUgPSB2LmV2ZW50cykg
fHwgKHUgPSB2LmV2ZW50cyA9IHt9KSwKKyAgICAgICAgICAgICAgICAoZiA9IHYuaGFuZGxlKSB8
fCAoZiA9IHYuaGFuZGxlID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICByZXR1
cm4gdHlwZW9mIGIgPT09IGkgfHwgZSAmJiBiLmV2ZW50LnRyaWdnZXJlZCA9PT0gZS50eXBlID8g
dCA6IGIuZXZlbnQuZGlzcGF0Y2guYXBwbHkoZi5lbGVtLCBhcmd1bWVudHMpCi0gICAgICAgICAg
ICAgICAgfSwgZi5lbGVtID0gZSksIG4gPSAobiB8fCAiIikubWF0Y2godykgfHwgWyIiXSwgbCA9
IG4ubGVuZ3RoOworICAgICAgICAgICAgICAgIH0sIGYuZWxlbSA9IGUpLAorICAgICAgICAgICAg
ICAgIG4gPSAobiB8fCAiIikubWF0Y2godykgfHwgWyIiXSwKKyAgICAgICAgICAgICAgICBsID0g
bi5sZW5ndGg7CiAgICAgICAgICAgICAgICAgd2hpbGUgKGwtLSkKLSAgICAgICAgICAgICAgICAg
ICAgcyA9IHJ0LmV4ZWMobltsXSkgfHwgW10sIGcgPSB5ID0gc1sxXSwgbSA9IChzWzJdIHx8ICIi
KS5zcGxpdCgiLiIpLnNvcnQoKSwgcCA9IGIuZXZlbnQuc3BlY2lhbFtnXSB8fCB7fSwgZyA9IChh
ID8gcC5kZWxlZ2F0ZVR5cGUgOiBwLmJpbmRUeXBlKSB8fCBnLCBwID0gYi5ldmVudC5zcGVjaWFs
W2ddIHx8IHt9LCBkID0gYi5leHRlbmQoeworICAgICAgICAgICAgICAgICAgICBzID0gcnQuZXhl
YyhuW2xdKSB8fCBbXSwKKyAgICAgICAgICAgICAgICAgICAgZyA9IHkgPSBzWzFdLAorICAgICAg
ICAgICAgICAgICAgICBtID0gKHNbMl0gfHwgIiIpLnNwbGl0KCIuIikuc29ydCgpLAorICAgICAg
ICAgICAgICAgICAgICBwID0gYi5ldmVudC5zcGVjaWFsW2ddIHx8IHt9LAorICAgICAgICAgICAg
ICAgICAgICBnID0gKGEgPyBwLmRlbGVnYXRlVHlwZSA6IHAuYmluZFR5cGUpIHx8IGcsCisgICAg
ICAgICAgICAgICAgICAgIHAgPSBiLmV2ZW50LnNwZWNpYWxbZ10gfHwge30sCisgICAgICAgICAg
ICAgICAgICAgIGQgPSBiLmV4dGVuZCh7CiAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBn
LAogICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ1R5cGU6IHksCiAgICAgICAgICAgICAgICAg
ICAgICAgICBkYXRhOiBvLApAQCAtMTA1NSw3ICsxMTM4LDExIEBACiAgICAgICAgICAgICAgICAg
ICAgICAgICBzZWxlY3RvcjogYSwKICAgICAgICAgICAgICAgICAgICAgICAgIG5lZWRzQ29udGV4
dDogYSAmJiBiLmV4cHIubWF0Y2gubmVlZHNDb250ZXh0LnRlc3QoYSksCiAgICAgICAgICAgICAg
ICAgICAgICAgICBuYW1lc3BhY2U6IG0uam9pbigiLiIpCi0gICAgICAgICAgICAgICAgICAgIH0s
IGMpLCAoaCA9IHVbZ10pIHx8IChoID0gdVtnXSA9IFtdLCBoLmRlbGVnYXRlQ291bnQgPSAwLCBw
LnNldHVwICYmIHAuc2V0dXAuY2FsbChlLCBvLCBtLCBmKSAhPT0gITEgfHwgKGUuYWRkRXZlbnRM
aXN0ZW5lciA/IGUuYWRkRXZlbnRMaXN0ZW5lcihnLCBmLCAhMSkgOiBlLmF0dGFjaEV2ZW50ICYm
IGUuYXR0YWNoRXZlbnQoIm9uIiArIGcsIGYpKSksIHAuYWRkICYmIChwLmFkZC5jYWxsKGUsIGQp
LCBkLmhhbmRsZXIuZ3VpZCB8fCAoZC5oYW5kbGVyLmd1aWQgPSByLmd1aWQpKSwgYSA/IGguc3Bs
aWNlKGguZGVsZWdhdGVDb3VudCsrLCAwLCBkKSA6IGgucHVzaChkKSwgYi5ldmVudC5nbG9iYWxb
Z10gPSAhMDsKKyAgICAgICAgICAgICAgICAgICAgfSwgYyksCisgICAgICAgICAgICAgICAgICAg
IChoID0gdVtnXSkgfHwgKGggPSB1W2ddID0gW10sIGguZGVsZWdhdGVDb3VudCA9IDAsIHAuc2V0
dXAgJiYgcC5zZXR1cC5jYWxsKGUsIG8sIG0sIGYpICE9PSAhMSB8fCAoZS5hZGRFdmVudExpc3Rl
bmVyID8gZS5hZGRFdmVudExpc3RlbmVyKGcsIGYsICExKSA6IGUuYXR0YWNoRXZlbnQgJiYgZS5h
dHRhY2hFdmVudCgib24iICsgZywgZikpKSwKKyAgICAgICAgICAgICAgICAgICAgcC5hZGQgJiYg
KHAuYWRkLmNhbGwoZSwgZCksIGQuaGFuZGxlci5ndWlkIHx8IChkLmhhbmRsZXIuZ3VpZCA9IHIu
Z3VpZCkpLAorICAgICAgICAgICAgICAgICAgICBhID8gaC5zcGxpY2UoaC5kZWxlZ2F0ZUNvdW50
KyssIDAsIGQpIDogaC5wdXNoKGQpLAorICAgICAgICAgICAgICAgICAgICBiLmV2ZW50Lmdsb2Jh
bFtnXSA9ICEwOwogICAgICAgICAgICAgICAgIGUgPSBudWxsCiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0sCkBAIC0xMDczLDEyICsxMTYwLDE4IEBACiAgICAgICAgICAgICAgICAgZywKICAgICAg
ICAgICAgICAgICBtID0gYi5oYXNEYXRhKGUpICYmIGIuX2RhdGEoZSk7CiAgICAgICAgICAgICBp
ZiAobSAmJiAoYyA9IG0uZXZlbnRzKSkgewotICAgICAgICAgICAgICAgIHQgPSAodCB8fCAiIiku
bWF0Y2godykgfHwgWyIiXSwgbCA9IHQubGVuZ3RoOworICAgICAgICAgICAgICAgIHQgPSAodCB8
fCAiIikubWF0Y2godykgfHwgWyIiXSwKKyAgICAgICAgICAgICAgICBsID0gdC5sZW5ndGg7CiAg
ICAgICAgICAgICAgICAgd2hpbGUgKGwtLSkKICAgICAgICAgICAgICAgICAgICAgaWYgKHMgPSBy
dC5leGVjKHRbbF0pIHx8IFtdLCBkID0gZyA9IHNbMV0sIGggPSAoc1syXSB8fCAiIikuc3BsaXQo
Ii4iKS5zb3J0KCksIGQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBiLmV2ZW50LnNw
ZWNpYWxbZF0gfHwge30sIGQgPSAociA/IHAuZGVsZWdhdGVUeXBlIDogcC5iaW5kVHlwZSkgfHwg
ZCwgZiA9IGNbZF0gfHwgW10sIHMgPSBzWzJdICYmIFJlZ0V4cCgiKF58XFwuKSIgKyBoLmpvaW4o
IlxcLig/Oi4qXFwufCkiKSArICIoXFwufCQpIiksIHUgPSBvID0gZi5sZW5ndGg7CisgICAgICAg
ICAgICAgICAgICAgICAgICBwID0gYi5ldmVudC5zcGVjaWFsW2RdIHx8IHt9LAorICAgICAgICAg
ICAgICAgICAgICAgICAgZCA9IChyID8gcC5kZWxlZ2F0ZVR5cGUgOiBwLmJpbmRUeXBlKSB8fCBk
LAorICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGNbZF0gfHwgW10sCisgICAgICAgICAgICAg
ICAgICAgICAgICBzID0gc1syXSAmJiBSZWdFeHAoIihefFxcLikiICsgaC5qb2luKCJcXC4oPzou
KlxcLnwpIikgKyAiKFxcLnwkKSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgdSA9IG8gPSBm
Lmxlbmd0aDsKICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChvLS0pCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYSA9IGZbb10sICFpICYmIGcgIT09IGEub3JpZ1R5cGUgfHwgbiAm
JiBuLmd1aWQgIT09IGEuZ3VpZCB8fCBzICYmICFzLnRlc3QoYS5uYW1lc3BhY2UpIHx8IHIgJiYg
ciAhPT0gYS5zZWxlY3RvciAmJiAoIioqIiAhPT0gciB8fCAhYS5zZWxlY3RvcikgfHwgKGYuc3Bs
aWNlKG8sIDEpLCBhLnNlbGVjdG9yICYmIGYuZGVsZWdhdGVDb3VudC0tLCBwLnJlbW92ZSAmJiBw
LnJlbW92ZS5jYWxsKGUsIGEpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gZltv
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAhaSAmJiBnICE9PSBhLm9yaWdUeXBlIHx8
IG4gJiYgbi5ndWlkICE9PSBhLmd1aWQgfHwgcyAmJiAhcy50ZXN0KGEubmFtZXNwYWNlKSB8fCBy
ICYmIHIgIT09IGEuc2VsZWN0b3IgJiYgKCIqKiIgIT09IHIgfHwgIWEuc2VsZWN0b3IpIHx8IChm
LnNwbGljZShvLCAxKSwgYS5zZWxlY3RvciAmJiBmLmRlbGVnYXRlQ291bnQtLSwgcC5yZW1vdmUg
JiYgcC5yZW1vdmUuY2FsbChlLCBhKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICB1ICYmICFm
Lmxlbmd0aCAmJiAocC50ZWFyZG93biAmJiBwLnRlYXJkb3duLmNhbGwoZSwgaCwgbS5oYW5kbGUp
ICE9PSAhMSB8fCBiLnJlbW92ZUV2ZW50KGUsIGQsIG0uaGFuZGxlKSwgZGVsZXRlIGNbZF0pCiAg
ICAgICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChk
IGluIGMpCkBAIC0xMTAwLDE4ICsxMTkzLDI2IEBACiAgICAgICAgICAgICBpZiAobCA9IGYgPSBp
ID0gaSB8fCBvLCAzICE9PSBpLm5vZGVUeXBlICYmIDggIT09IGkubm9kZVR5cGUgJiYgIW50LnRl
c3QoZyArIGIuZXZlbnQudHJpZ2dlcmVkKSAmJiAoZy5pbmRleE9mKCIuIikgPj0gMCAmJiAobSA9
IGcuc3BsaXQoIi4iKSwgZyA9IG0uc2hpZnQoKSwgbS5zb3J0KCkpLCB1ID0gMCA+IGcuaW5kZXhP
ZigiOiIpICYmICJvbiIgKyBnLCBuID0gbltiLmV4cGFuZG9dID8gbiA6IG5ldyBiLkV2ZW50KGcs
ICJvYmplY3QiID09IHR5cGVvZiBuICYmIG4pLCBuLmlzVHJpZ2dlciA9ICEwLCBuLm5hbWVzcGFj
ZSA9IG0uam9pbigiLiIpLCBuLm5hbWVzcGFjZV9yZSA9IG4ubmFtZXNwYWNlID8gUmVnRXhwKCIo
XnxcXC4pIiArIG0uam9pbigiXFwuKD86LipcXC58KSIpICsgIihcXC58JCkiKSA6IG51bGwsIG4u
cmVzdWx0ID0gdCwgbi50YXJnZXQgfHwgKG4udGFyZ2V0ID0gaSksIHIgPSBudWxsID09IHIgPyBb
bl0gOiBiLm1ha2VBcnJheShyLCBbbl0pLCBwID0gYi5ldmVudC5zcGVjaWFsW2ddIHx8IHt9LCBh
IHx8ICFwLnRyaWdnZXIgfHwgcC50cmlnZ2VyLmFwcGx5KGksIHIpICE9PSAhMSkpIHsKICAgICAg
ICAgICAgICAgICBpZiAoIWEgJiYgIXAubm9CdWJibGUgJiYgIWIuaXNXaW5kb3coaSkpIHsKICAg
ICAgICAgICAgICAgICAgICAgZm9yIChjID0gcC5kZWxlZ2F0ZVR5cGUgfHwgZywgbnQudGVzdChj
ICsgZykgfHwgKGwgPSBsLnBhcmVudE5vZGUpOyBsOyBsID0gbC5wYXJlbnROb2RlKQotICAgICAg
ICAgICAgICAgICAgICAgICAgaC5wdXNoKGwpLCBmID0gbDsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGgucHVzaChsKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBsOwogICAgICAgICAg
ICAgICAgICAgICBmID09PSAoaS5vd25lckRvY3VtZW50IHx8IG8pICYmIGgucHVzaChmLmRlZmF1
bHRWaWV3IHx8IGYucGFyZW50V2luZG93IHx8IGUpCiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIGQgPSAwOwogICAgICAgICAgICAgICAgIHdoaWxlICgobCA9IGhbZCsrXSkgJiYg
IW4uaXNQcm9wYWdhdGlvblN0b3BwZWQoKSkKLSAgICAgICAgICAgICAgICAgICAgbi50eXBlID0g
ZCA+IDEgPyBjIDogcC5iaW5kVHlwZSB8fCBnLCBzID0gKGIuX2RhdGEobCwgImV2ZW50cyIpIHx8
IHt9KVtuLnR5cGVdICYmIGIuX2RhdGEobCwgImhhbmRsZSIpLCBzICYmIHMuYXBwbHkobCwgciks
IHMgPSB1ICYmIGxbdV0sIHMgJiYgYi5hY2NlcHREYXRhKGwpICYmIHMuYXBwbHkgJiYgcy5hcHBs
eShsLCByKSA9PT0gITEgJiYgbi5wcmV2ZW50RGVmYXVsdCgpOworICAgICAgICAgICAgICAgICAg
ICBuLnR5cGUgPSBkID4gMSA/IGMgOiBwLmJpbmRUeXBlIHx8IGcsCisgICAgICAgICAgICAgICAg
ICAgIHMgPSAoYi5fZGF0YShsLCAiZXZlbnRzIikgfHwge30pW24udHlwZV0gJiYgYi5fZGF0YShs
LCAiaGFuZGxlIiksCisgICAgICAgICAgICAgICAgICAgIHMgJiYgcy5hcHBseShsLCByKSwKKyAg
ICAgICAgICAgICAgICAgICAgcyA9IHUgJiYgbFt1XSwKKyAgICAgICAgICAgICAgICAgICAgcyAm
JiBiLmFjY2VwdERhdGEobCkgJiYgcy5hcHBseSAmJiBzLmFwcGx5KGwsIHIpID09PSAhMSAmJiBu
LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICAgaWYgKG4udHlwZSA9IGcsICEoYSB8
fCBuLmlzRGVmYXVsdFByZXZlbnRlZCgpIHx8IHAuX2RlZmF1bHQgJiYgcC5fZGVmYXVsdC5hcHBs
eShpLm93bmVyRG9jdW1lbnQsIHIpICE9PSAhMSB8fCAiY2xpY2siID09PSBnICYmIGIubm9kZU5h
bWUoaSwgImEiKSB8fCAhYi5hY2NlcHREYXRhKGkpIHx8ICF1IHx8ICFpW2ddIHx8IGIuaXNXaW5k
b3coaSkpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGYgPSBpW3VdLCBmICYmIChpW3VdID0gbnVs
bCksIGIuZXZlbnQudHJpZ2dlcmVkID0gZzsKKyAgICAgICAgICAgICAgICAgICAgZiA9IGlbdV0s
CisgICAgICAgICAgICAgICAgICAgIGYgJiYgKGlbdV0gPSBudWxsKSwKKyAgICAgICAgICAgICAg
ICAgICAgYi5ldmVudC50cmlnZ2VyZWQgPSBnOwogICAgICAgICAgICAgICAgICAgICB0cnkgewog
ICAgICAgICAgICAgICAgICAgICAgICAgaVtnXSgpCiAgICAgICAgICAgICAgICAgICAgIH0gY2F0
Y2ggKHYpIHt9Ci0gICAgICAgICAgICAgICAgICAgIGIuZXZlbnQudHJpZ2dlcmVkID0gdCwgZiAm
JiAoaVt1XSA9IGYpCisgICAgICAgICAgICAgICAgICAgIGIuZXZlbnQudHJpZ2dlcmVkID0gdCwK
KyAgICAgICAgICAgICAgICAgICAgZiAmJiAoaVt1XSA9IGYpCiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgIHJldHVybiBuLnJlc3VsdAogICAgICAgICAgICAgfQpAQCAtMTEyOCw5
ICsxMjI5LDExIEBACiAgICAgICAgICAgICAgICAgbCA9IChiLl9kYXRhKHRoaXMsICJldmVudHMi
KSB8fCB7fSlbZS50eXBlXSB8fCBbXSwKICAgICAgICAgICAgICAgICBjID0gYi5ldmVudC5zcGVj
aWFsW2UudHlwZV0gfHwge307CiAgICAgICAgICAgICBpZiAodVswXSA9IGUsIGUuZGVsZWdhdGVU
YXJnZXQgPSB0aGlzLCAhYy5wcmVEaXNwYXRjaCB8fCBjLnByZURpc3BhdGNoLmNhbGwodGhpcywg
ZSkgIT09ICExKSB7Ci0gICAgICAgICAgICAgICAgcyA9IGIuZXZlbnQuaGFuZGxlcnMuY2FsbCh0
aGlzLCBlLCBsKSwgbiA9IDA7CisgICAgICAgICAgICAgICAgcyA9IGIuZXZlbnQuaGFuZGxlcnMu
Y2FsbCh0aGlzLCBlLCBsKSwKKyAgICAgICAgICAgICAgICBuID0gMDsKICAgICAgICAgICAgICAg
ICB3aGlsZSAoKG8gPSBzW24rK10pICYmICFlLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgZS5jdXJyZW50VGFyZ2V0ID0gby5lbGVtLCBhID0gMDsKKyAgICAg
ICAgICAgICAgICAgICAgZS5jdXJyZW50VGFyZ2V0ID0gby5lbGVtLAorICAgICAgICAgICAgICAg
ICAgICBhID0gMDsKICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKChpID0gby5oYW5kbGVyc1th
KytdKSAmJiAhZS5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCgpKQogICAgICAgICAgICAg
ICAgICAgICAgICAgKCFlLm5hbWVzcGFjZV9yZSB8fCBlLm5hbWVzcGFjZV9yZS50ZXN0KGkubmFt
ZXNwYWNlKSkgJiYgKGUuaGFuZGxlT2JqID0gaSwgZS5kYXRhID0gaS5kYXRhLCByID0gKChiLmV2
ZW50LnNwZWNpYWxbaS5vcmlnVHlwZV0gfHwge30pLmhhbmRsZSB8fCBpLmhhbmRsZXIpLmFwcGx5
KG8uZWxlbSwgdSksIHIgIT09IHQgJiYgKGUucmVzdWx0ID0gcikgPT09ICExICYmIChlLnByZXZl
bnREZWZhdWx0KCksIGUuc3RvcFByb3BhZ2F0aW9uKCkpKQogICAgICAgICAgICAgICAgIH0KQEAg
LTExNDksNyArMTI1MiwxMCBAQAogICAgICAgICAgICAgICAgIGZvciAoOyBsICE9IHRoaXM7IGwg
PSBsLnBhcmVudE5vZGUgfHwgdGhpcykKICAgICAgICAgICAgICAgICAgICAgaWYgKDEgPT09IGwu
bm9kZVR5cGUgJiYgKGwuZGlzYWJsZWQgIT09ICEwIHx8ICJjbGljayIgIT09IGUudHlwZSkpIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobyA9IFtdLCBhID0gMDsgdSA+IGE7IGErKykK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gblthXSwgciA9IGkuc2VsZWN0b3IgKyAi
ICIsIG9bcl0gPT09IHQgJiYgKG9bcl0gPSBpLm5lZWRzQ29udGV4dCA/IGIociwgdGhpcykuaW5k
ZXgobCkgPj0gMCA6IGIuZmluZChyLCB0aGlzLCBudWxsLCBbbF0pLmxlbmd0aCksIG9bcl0gJiYg
by5wdXNoKGkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBuW2FdLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHIgPSBpLnNlbGVjdG9yICsgIiAiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG9bcl0gPT09IHQgJiYgKG9bcl0gPSBpLm5lZWRzQ29udGV4dCA/IGIo
ciwgdGhpcykuaW5kZXgobCkgPj0gMCA6IGIuZmluZChyLCB0aGlzLCBudWxsLCBbbF0pLmxlbmd0
aCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb1tyXSAmJiBvLnB1c2goaSk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBvLmxlbmd0aCAmJiBzLnB1c2goewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGVsZW06IGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxl
cnM6IG8KQEAgLTExNjksOSArMTI3NSwxMyBAQAogICAgICAgICAgICAgICAgIGkgPSBlLnR5cGUs
CiAgICAgICAgICAgICAgICAgYSA9IGUsCiAgICAgICAgICAgICAgICAgcyA9IHRoaXMuZml4SG9v
a3NbaV07Ci0gICAgICAgICAgICBzIHx8ICh0aGlzLmZpeEhvb2tzW2ldID0gcyA9IHR0LnRlc3Qo
aSkgPyB0aGlzLm1vdXNlSG9va3MgOiBldC50ZXN0KGkpID8gdGhpcy5rZXlIb29rcyA6IHt9KSwg
ciA9IHMucHJvcHMgPyB0aGlzLnByb3BzLmNvbmNhdChzLnByb3BzKSA6IHRoaXMucHJvcHMsIGUg
PSBuZXcgYi5FdmVudChhKSwgdCA9IHIubGVuZ3RoOworICAgICAgICAgICAgcyB8fCAodGhpcy5m
aXhIb29rc1tpXSA9IHMgPSB0dC50ZXN0KGkpID8gdGhpcy5tb3VzZUhvb2tzIDogZXQudGVzdChp
KSA/IHRoaXMua2V5SG9va3MgOiB7fSksCisgICAgICAgICAgICByID0gcy5wcm9wcyA/IHRoaXMu
cHJvcHMuY29uY2F0KHMucHJvcHMpIDogdGhpcy5wcm9wcywKKyAgICAgICAgICAgIGUgPSBuZXcg
Yi5FdmVudChhKSwKKyAgICAgICAgICAgIHQgPSByLmxlbmd0aDsKICAgICAgICAgICAgIHdoaWxl
ICh0LS0pCi0gICAgICAgICAgICAgICAgbiA9IHJbdF0sIGVbbl0gPSBhW25dOworICAgICAgICAg
ICAgICAgIG4gPSByW3RdLAorICAgICAgICAgICAgICAgIGVbbl0gPSBhW25dOwogICAgICAgICAg
ICAgcmV0dXJuIGUudGFyZ2V0IHx8IChlLnRhcmdldCA9IGEuc3JjRWxlbWVudCB8fCBvKSwgMyA9
PT0gZS50YXJnZXQubm9kZVR5cGUgJiYgKGUudGFyZ2V0ID0gZS50YXJnZXQucGFyZW50Tm9kZSks
IGUubWV0YUtleSA9ICEhZS5tZXRhS2V5LCBzLmZpbHRlciA/IHMuZmlsdGVyKGUsIGEpIDogZQog
ICAgICAgICB9LAogICAgICAgICBwcm9wczogImFsdEtleSBidWJibGVzIGNhbmNlbGFibGUgY3Ry
bEtleSBjdXJyZW50VGFyZ2V0IGV2ZW50UGhhc2UgbWV0YUtleSByZWxhdGVkVGFyZ2V0IHNoaWZ0
S2V5IHRhcmdldCB0aW1lU3RhbXAgdmlldyB3aGljaCIuc3BsaXQoIiAiKSwKQEAgLTEyMjksMzEg
KzEzMzksMzkgQEAKICAgICAgICAgICAgICAgICBpc1NpbXVsYXRlZDogITAsCiAgICAgICAgICAg
ICAgICAgb3JpZ2luYWxFdmVudDoge30KICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgciA/
IGIuZXZlbnQudHJpZ2dlcihpLCBudWxsLCB0KSA6IGIuZXZlbnQuZGlzcGF0Y2guY2FsbCh0LCBp
KSwgaS5pc0RlZmF1bHRQcmV2ZW50ZWQoKSAmJiBuLnByZXZlbnREZWZhdWx0KCkKKyAgICAgICAg
ICAgIHIgPyBiLmV2ZW50LnRyaWdnZXIoaSwgbnVsbCwgdCkgOiBiLmV2ZW50LmRpc3BhdGNoLmNh
bGwodCwgaSksCisgICAgICAgICAgICBpLmlzRGVmYXVsdFByZXZlbnRlZCgpICYmIG4ucHJldmVu
dERlZmF1bHQoKQogICAgICAgICB9Ci0gICAgfSwgYi5yZW1vdmVFdmVudCA9IG8ucmVtb3ZlRXZl
bnRMaXN0ZW5lciA/IGZ1bmN0aW9uKGUsIHQsIG4pIHsKKyAgICB9LAorICAgIGIucmVtb3ZlRXZl
bnQgPSBvLnJlbW92ZUV2ZW50TGlzdGVuZXIgPyBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAg
IGUucmVtb3ZlRXZlbnRMaXN0ZW5lciAmJiBlLnJlbW92ZUV2ZW50TGlzdGVuZXIodCwgbiwgITEp
CiAgICAgfSA6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgdmFyIHIgPSAib24iICsgdDsK
ICAgICAgICAgZS5kZXRhY2hFdmVudCAmJiAodHlwZW9mIGVbcl0gPT09IGkgJiYgKGVbcl0gPSBu
dWxsKSwgZS5kZXRhY2hFdmVudChyLCBuKSkKLSAgICB9LCBiLkV2ZW50ID0gZnVuY3Rpb24oZSwg
bikgeworICAgIH0sCisgICAgYi5FdmVudCA9IGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgcmV0
dXJuIHRoaXMgaW5zdGFuY2VvZiBiLkV2ZW50ID8gKGUgJiYgZS50eXBlID8gKHRoaXMub3JpZ2lu
YWxFdmVudCA9IGUsIHRoaXMudHlwZSA9IGUudHlwZSwgdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQg
PSBlLmRlZmF1bHRQcmV2ZW50ZWQgfHwgZS5yZXR1cm5WYWx1ZSA9PT0gITEgfHwgZS5nZXRQcmV2
ZW50RGVmYXVsdCAmJiBlLmdldFByZXZlbnREZWZhdWx0KCkgPyBpdCA6IG90KSA6IHRoaXMudHlw
ZSA9IGUsIG4gJiYgYi5leHRlbmQodGhpcywgbiksIHRoaXMudGltZVN0YW1wID0gZSAmJiBlLnRp
bWVTdGFtcCB8fCBiLm5vdygpLCB0aGlzW2IuZXhwYW5kb10gPSAhMCwgdCkgOiBuZXcgYi5FdmVu
dChlLCBuKQotICAgIH0sIGIuRXZlbnQucHJvdG90eXBlID0geworICAgIH0sCisgICAgYi5FdmVu
dC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlzRGVmYXVsdFByZXZlbnRlZDogb3QsCiAgICAgICAg
IGlzUHJvcGFnYXRpb25TdG9wcGVkOiBvdCwKICAgICAgICAgaXNJbW1lZGlhdGVQcm9wYWdhdGlv
blN0b3BwZWQ6IG90LAogICAgICAgICBwcmV2ZW50RGVmYXVsdDogZnVuY3Rpb24oKSB7CiAgICAg
ICAgICAgICB2YXIgZSA9IHRoaXMub3JpZ2luYWxFdmVudDsKLSAgICAgICAgICAgIHRoaXMuaXNE
ZWZhdWx0UHJldmVudGVkID0gaXQsIGUgJiYgKGUucHJldmVudERlZmF1bHQgPyBlLnByZXZlbnRE
ZWZhdWx0KCkgOiBlLnJldHVyblZhbHVlID0gITEpCisgICAgICAgICAgICB0aGlzLmlzRGVmYXVs
dFByZXZlbnRlZCA9IGl0LAorICAgICAgICAgICAgZSAmJiAoZS5wcmV2ZW50RGVmYXVsdCA/IGUu
cHJldmVudERlZmF1bHQoKSA6IGUucmV0dXJuVmFsdWUgPSAhMSkKICAgICAgICAgfSwKICAgICAg
ICAgc3RvcFByb3BhZ2F0aW9uOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgIHZhciBlID0gdGhp
cy5vcmlnaW5hbEV2ZW50OwotICAgICAgICAgICAgdGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZCA9
IGl0LCBlICYmIChlLnN0b3BQcm9wYWdhdGlvbiAmJiBlLnN0b3BQcm9wYWdhdGlvbigpLCBlLmNh
bmNlbEJ1YmJsZSA9ICEwKQorICAgICAgICAgICAgdGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZCA9
IGl0LAorICAgICAgICAgICAgZSAmJiAoZS5zdG9wUHJvcGFnYXRpb24gJiYgZS5zdG9wUHJvcGFn
YXRpb24oKSwgZS5jYW5jZWxCdWJibGUgPSAhMCkKICAgICAgICAgfSwKICAgICAgICAgc3RvcElt
bWVkaWF0ZVByb3BhZ2F0aW9uOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHRoaXMuaXNJbW1l
ZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQgPSBpdCwgdGhpcy5zdG9wUHJvcGFnYXRpb24oKQorICAg
ICAgICAgICAgdGhpcy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCA9IGl0LAorICAgICAg
ICAgICAgdGhpcy5zdG9wUHJvcGFnYXRpb24oKQogICAgICAgICB9Ci0gICAgfSwgYi5lYWNoKHsK
KyAgICB9LAorICAgIGIuZWFjaCh7CiAgICAgICAgIG1vdXNlZW50ZXI6ICJtb3VzZW92ZXIiLAog
ICAgICAgICBtb3VzZWxlYXZlOiAibW91c2VvdXQiCiAgICAgfSwgZnVuY3Rpb24oZSwgdCkgewpA
QCAtMTI2OCw3ICsxMzg2LDggQEAKICAgICAgICAgICAgICAgICByZXR1cm4gKCFpIHx8IGkgIT09
IHIgJiYgIWIuY29udGFpbnMociwgaSkpICYmIChlLnR5cGUgPSBvLm9yaWdUeXBlLCBuID0gby5o
YW5kbGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyksIGUudHlwZSA9IHQpLCBuCiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KLSAgICB9KSwgYi5zdXBwb3J0LnN1Ym1pdEJ1YmJsZXMgfHwgKGIuZXZl
bnQuc3BlY2lhbC5zdWJtaXQgPSB7CisgICAgfSksCisgICAgYi5zdXBwb3J0LnN1Ym1pdEJ1YmJs
ZXMgfHwgKGIuZXZlbnQuc3BlY2lhbC5zdWJtaXQgPSB7CiAgICAgICAgIHNldHVwOiBmdW5jdGlv
bigpIHsKICAgICAgICAgICAgIHJldHVybiBiLm5vZGVOYW1lKHRoaXMsICJmb3JtIikgPyAhMSA6
IChiLmV2ZW50LmFkZCh0aGlzLCAiY2xpY2suX3N1Ym1pdCBrZXlwcmVzcy5fc3VibWl0IiwgZnVu
Y3Rpb24oZSkgewogICAgICAgICAgICAgICAgIHZhciBuID0gZS50YXJnZXQsCkBAIC0xMjg0LDEy
ICsxNDAzLDE0IEBACiAgICAgICAgIHRlYXJkb3duOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAg
IHJldHVybiBiLm5vZGVOYW1lKHRoaXMsICJmb3JtIikgPyAhMSA6IChiLmV2ZW50LnJlbW92ZSh0
aGlzLCAiLl9zdWJtaXQiKSwgdCkKICAgICAgICAgfQotICAgIH0pLCBiLnN1cHBvcnQuY2hhbmdl
QnViYmxlcyB8fCAoYi5ldmVudC5zcGVjaWFsLmNoYW5nZSA9IHsKKyAgICB9KSwKKyAgICBiLnN1
cHBvcnQuY2hhbmdlQnViYmxlcyB8fCAoYi5ldmVudC5zcGVjaWFsLmNoYW5nZSA9IHsKICAgICAg
ICAgc2V0dXA6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgcmV0dXJuIFoudGVzdCh0aGlzLm5v
ZGVOYW1lKSA/ICgoImNoZWNrYm94IiA9PT0gdGhpcy50eXBlIHx8ICJyYWRpbyIgPT09IHRoaXMu
dHlwZSkgJiYgKGIuZXZlbnQuYWRkKHRoaXMsICJwcm9wZXJ0eWNoYW5nZS5fY2hhbmdlIiwgZnVu
Y3Rpb24oZSkgewogICAgICAgICAgICAgICAgICJjaGVja2VkIiA9PT0gZS5vcmlnaW5hbEV2ZW50
LnByb3BlcnR5TmFtZSAmJiAodGhpcy5fanVzdF9jaGFuZ2VkID0gITApCiAgICAgICAgICAgICB9
KSwgYi5ldmVudC5hZGQodGhpcywgImNsaWNrLl9jaGFuZ2UiLCBmdW5jdGlvbihlKSB7Ci0gICAg
ICAgICAgICAgICAgdGhpcy5fanVzdF9jaGFuZ2VkICYmICFlLmlzVHJpZ2dlciAmJiAodGhpcy5f
anVzdF9jaGFuZ2VkID0gITEpLCBiLmV2ZW50LnNpbXVsYXRlKCJjaGFuZ2UiLCB0aGlzLCBlLCAh
MCkKKyAgICAgICAgICAgICAgICB0aGlzLl9qdXN0X2NoYW5nZWQgJiYgIWUuaXNUcmlnZ2VyICYm
ICh0aGlzLl9qdXN0X2NoYW5nZWQgPSAhMSksCisgICAgICAgICAgICAgICAgYi5ldmVudC5zaW11
bGF0ZSgiY2hhbmdlIiwgdGhpcywgZSwgITApCiAgICAgICAgICAgICB9KSksICExKSA6IChiLmV2
ZW50LmFkZCh0aGlzLCAiYmVmb3JlYWN0aXZhdGUuX2NoYW5nZSIsIGZ1bmN0aW9uKGUpIHsKICAg
ICAgICAgICAgICAgICB2YXIgdCA9IGUudGFyZ2V0OwogICAgICAgICAgICAgICAgIFoudGVzdCh0
Lm5vZGVOYW1lKSAmJiAhYi5fZGF0YSh0LCAiY2hhbmdlQnViYmxlcyIpICYmIChiLmV2ZW50LmFk
ZCh0LCAiY2hhbmdlLl9jaGFuZ2UiLCBmdW5jdGlvbihlKSB7CkBAIC0xMzA0LDcgKzE0MjUsOCBA
QAogICAgICAgICB0ZWFyZG93bjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICByZXR1cm4gYi5l
dmVudC5yZW1vdmUodGhpcywgIi5fY2hhbmdlIiksICFaLnRlc3QodGhpcy5ub2RlTmFtZSkKICAg
ICAgICAgfQotICAgIH0pLCBiLnN1cHBvcnQuZm9jdXNpbkJ1YmJsZXMgfHwgYi5lYWNoKHsKKyAg
ICB9KSwKKyAgICBiLnN1cHBvcnQuZm9jdXNpbkJ1YmJsZXMgfHwgYi5lYWNoKHsKICAgICAgICAg
Zm9jdXM6ICJmb2N1c2luIiwKICAgICAgICAgYmx1cjogImZvY3Vzb3V0IgogICAgIH0sIGZ1bmN0
aW9uKGUsIHQpIHsKQEAgLTEzMjAsNyArMTQ0Miw4IEBACiAgICAgICAgICAgICAgICAgMCA9PT0g
LS1uICYmIG8ucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLCByLCAhMCkKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQotICAgIH0pLCBiLmZuLmV4dGVuZCh7CisgICAgfSksCisgICAgYi5mbi5leHRlbmQo
ewogICAgICAgICBvbjogZnVuY3Rpb24oZSwgbiwgciwgaSwgbykgewogICAgICAgICAgICAgdmFy
IGEsCiAgICAgICAgICAgICAgICAgczsKQEAgLTEzNzgsNyArMTUwMSw4IEBACiAgICAgICAgICAg
ICB2YXIgciA9IHRoaXNbMF07CiAgICAgICAgICAgICByZXR1cm4gciA/IGIuZXZlbnQudHJpZ2dl
cihlLCBuLCByLCAhMCkgOiB0CiAgICAgICAgIH0KLSAgICB9KSwgZnVuY3Rpb24oZSwgdCkgewor
ICAgIH0pLAorICAgIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgdmFyIG4sCiAgICAgICAgICAg
ICByLAogICAgICAgICAgICAgaSwKQEAgLTE1MTgsMTAgKzE2NDIsMTQgQEAKICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmIChULnFzYSAmJiAhaC50ZXN0KGUpKSB7CiAg
ICAgICAgICAgICAgICAgICAgIGlmIChmID0gITAsIGcgPSB4LCBtID0gdCwgdiA9IDkgPT09IHMg
JiYgZSwgMSA9PT0gcyAmJiAib2JqZWN0IiAhPT0gdC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBsID0gZnQoZSksIChmID0gdC5nZXRBdHRyaWJ1dGUo
ImlkIikpID8gZyA9IGYucmVwbGFjZShLLCAiXFwkJiIpIDogdC5zZXRBdHRyaWJ1dGUoImlkIiwg
ZyksIGcgPSAiW2lkPSciICsgZyArICInXSAiLCB1ID0gbC5sZW5ndGg7CisgICAgICAgICAgICAg
ICAgICAgICAgICBsID0gZnQoZSksCisgICAgICAgICAgICAgICAgICAgICAgICAoZiA9IHQuZ2V0
QXR0cmlidXRlKCJpZCIpKSA/IGcgPSBmLnJlcGxhY2UoSywgIlxcJCYiKSA6IHQuc2V0QXR0cmli
dXRlKCJpZCIsIGcpLAorICAgICAgICAgICAgICAgICAgICAgICAgZyA9ICJbaWQ9JyIgKyBnICsg
IiddICIsCisgICAgICAgICAgICAgICAgICAgICAgICB1ID0gbC5sZW5ndGg7CiAgICAgICAgICAg
ICAgICAgICAgICAgICB3aGlsZSAodS0tKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxb
dV0gPSBnICsgZHQobFt1XSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtID0gVi50ZXN0KGUp
ICYmIHQucGFyZW50Tm9kZSB8fCB0LCB2ID0gbC5qb2luKCIsIikKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG0gPSBWLnRlc3QoZSkgJiYgdC5wYXJlbnROb2RlIHx8IHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICB2ID0gbC5qb2luKCIsIikKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgICAgICBpZiAodikKICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CkBAIC0x
NTM2LDcgKzE2NjQsOCBAQAogICAgICAgICBhID0gc3QuaXNYTUwgPSBmdW5jdGlvbihlKSB7CiAg
ICAgICAgICAgICB2YXIgdCA9IGUgJiYgKGUub3duZXJEb2N1bWVudCB8fCBlKS5kb2N1bWVudEVs
ZW1lbnQ7CiAgICAgICAgICAgICByZXR1cm4gdCA/ICJIVE1MIiAhPT0gdC5ub2RlTmFtZSA6ICEx
Ci0gICAgICAgIH0sIGMgPSBzdC5zZXREb2N1bWVudCA9IGZ1bmN0aW9uKGUpIHsKKyAgICAgICAg
fSwKKyAgICAgICAgYyA9IHN0LnNldERvY3VtZW50ID0gZnVuY3Rpb24oZSkgewogICAgICAgICAg
ICAgdmFyIG4gPSBlID8gZS5vd25lckRvY3VtZW50IHx8IGUgOiB3OwogICAgICAgICAgICAgcmV0
dXJuIG4gIT09IHAgJiYgOSA9PT0gbi5ub2RlVHlwZSAmJiBuLmRvY3VtZW50RWxlbWVudCA/IChw
ID0gbiwgZiA9IG4uZG9jdW1lbnRFbGVtZW50LCBkID0gYShuKSwgVC50YWdOYW1lTm9Db21tZW50
cyA9IGF0KGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICByZXR1cm4gZS5hcHBlbmRDaGls
ZChuLmNyZWF0ZUNvbW1lbnQoIiIpKSwgIWUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKS5sZW5n
dGgKQEAgLTE1NDcsNyArMTY3Niw5IEBACiAgICAgICAgICAgICB9KSwgVC5nZXRCeUNsYXNzTmFt
ZSA9IGF0KGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICByZXR1cm4gZS5pbm5lckhUTUwg
PSAiPGRpdiBjbGFzcz0naGlkZGVuIGUnPjwvZGl2PjxkaXYgY2xhc3M9J2hpZGRlbic+PC9kaXY+
IiwgZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lICYmIGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgi
ZSIpLmxlbmd0aCA/IChlLmxhc3RDaGlsZC5jbGFzc05hbWUgPSAiZSIsIDIgPT09IGUuZ2V0RWxl
bWVudHNCeUNsYXNzTmFtZSgiZSIpLmxlbmd0aCkgOiAhMQogICAgICAgICAgICAgfSksIFQuZ2V0
QnlOYW1lID0gYXQoZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgICAgIGUuaWQgPSB4ICsgMCwg
ZS5pbm5lckhUTUwgPSAiPGEgbmFtZT0nIiArIHggKyAiJz48L2E+PGRpdiBuYW1lPSciICsgeCAr
ICInPjwvZGl2PiIsIGYuaW5zZXJ0QmVmb3JlKGUsIGYuZmlyc3RDaGlsZCk7CisgICAgICAgICAg
ICAgICAgZS5pZCA9IHggKyAwLAorICAgICAgICAgICAgICAgIGUuaW5uZXJIVE1MID0gIjxhIG5h
bWU9JyIgKyB4ICsgIic+PC9hPjxkaXYgbmFtZT0nIiArIHggKyAiJz48L2Rpdj4iLAorICAgICAg
ICAgICAgICAgIGYuaW5zZXJ0QmVmb3JlKGUsIGYuZmlyc3RDaGlsZCk7CiAgICAgICAgICAgICAg
ICAgdmFyIHQgPSBuLmdldEVsZW1lbnRzQnlOYW1lICYmIG4uZ2V0RWxlbWVudHNCeU5hbWUoeCku
bGVuZ3RoID09PSAyICsgbi5nZXRFbGVtZW50c0J5TmFtZSh4ICsgMCkubGVuZ3RoOwogICAgICAg
ICAgICAgICAgIHJldHVybiBULmdldElkTm90TmFtZSA9ICFuLmdldEVsZW1lbnRCeUlkKHgpLCBm
LnJlbW92ZUNoaWxkKGUpLCB0CiAgICAgICAgICAgICB9KSwgaS5hdHRySGFuZGxlID0gYXQoZnVu
Y3Rpb24oZSkgewpAQCAtMTU5OCwxMSArMTcyOSwxOSBAQAogICAgICAgICAgICAgfSwgaS5maW5k
LkNMQVNTID0gVC5nZXRCeUNsYXNzTmFtZSAmJiBmdW5jdGlvbihlLCBuKSB7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuIHR5cGVvZiBuLmdldEVsZW1lbnRzQnlDbGFzc05hbWUgPT09IEEgfHwgZCA/
IHQgOiBuLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoZSkKICAgICAgICAgICAgIH0sIGcgPSBbXSwg
aCA9IFsiOmZvY3VzIl0sIChULnFzYSA9IHJ0KG4ucXVlcnlTZWxlY3RvckFsbCkpICYmIChhdChm
dW5jdGlvbihlKSB7Ci0gICAgICAgICAgICAgICAgZS5pbm5lckhUTUwgPSAiPHNlbGVjdD48b3B0
aW9uIHNlbGVjdGVkPScnPjwvb3B0aW9uPjwvc2VsZWN0PiIsIGUucXVlcnlTZWxlY3RvckFsbCgi
W3NlbGVjdGVkXSIpLmxlbmd0aCB8fCBoLnB1c2goIlxcWyIgKyBfICsgIiooPzpjaGVja2VkfGRp
c2FibGVkfGlzbWFwfG11bHRpcGxlfHJlYWRvbmx5fHNlbGVjdGVkfHZhbHVlKSIpLCBlLnF1ZXJ5
U2VsZWN0b3JBbGwoIjpjaGVja2VkIikubGVuZ3RoIHx8IGgucHVzaCgiOmNoZWNrZWQiKQorICAg
ICAgICAgICAgICAgIGUuaW5uZXJIVE1MID0gIjxzZWxlY3Q+PG9wdGlvbiBzZWxlY3RlZD0nJz48
L29wdGlvbj48L3NlbGVjdD4iLAorICAgICAgICAgICAgICAgIGUucXVlcnlTZWxlY3RvckFsbCgi
W3NlbGVjdGVkXSIpLmxlbmd0aCB8fCBoLnB1c2goIlxcWyIgKyBfICsgIiooPzpjaGVja2VkfGRp
c2FibGVkfGlzbWFwfG11bHRpcGxlfHJlYWRvbmx5fHNlbGVjdGVkfHZhbHVlKSIpLAorICAgICAg
ICAgICAgICAgIGUucXVlcnlTZWxlY3RvckFsbCgiOmNoZWNrZWQiKS5sZW5ndGggfHwgaC5wdXNo
KCI6Y2hlY2tlZCIpCiAgICAgICAgICAgICB9KSwgYXQoZnVuY3Rpb24oZSkgewotICAgICAgICAg
ICAgICAgIGUuaW5uZXJIVE1MID0gIjxpbnB1dCB0eXBlPSdoaWRkZW4nIGk9JycvPiIsIGUucXVl
cnlTZWxlY3RvckFsbCgiW2lePScnXSIpLmxlbmd0aCAmJiBoLnB1c2goIlsqXiRdPSIgKyBfICsg
IiooPzpcIlwifCcnKSIpLCBlLnF1ZXJ5U2VsZWN0b3JBbGwoIjplbmFibGVkIikubGVuZ3RoIHx8
IGgucHVzaCgiOmVuYWJsZWQiLCAiOmRpc2FibGVkIiksIGUucXVlcnlTZWxlY3RvckFsbCgiKiw6
eCIpLCBoLnB1c2goIiwuKjoiKQorICAgICAgICAgICAgICAgIGUuaW5uZXJIVE1MID0gIjxpbnB1
dCB0eXBlPSdoaWRkZW4nIGk9JycvPiIsCisgICAgICAgICAgICAgICAgZS5xdWVyeVNlbGVjdG9y
QWxsKCJbaV49JyddIikubGVuZ3RoICYmIGgucHVzaCgiWypeJF09IiArIF8gKyAiKig/OlwiXCJ8
JycpIiksCisgICAgICAgICAgICAgICAgZS5xdWVyeVNlbGVjdG9yQWxsKCI6ZW5hYmxlZCIpLmxl
bmd0aCB8fCBoLnB1c2goIjplbmFibGVkIiwgIjpkaXNhYmxlZCIpLAorICAgICAgICAgICAgICAg
IGUucXVlcnlTZWxlY3RvckFsbCgiKiw6eCIpLAorICAgICAgICAgICAgICAgIGgucHVzaCgiLC4q
OiIpCiAgICAgICAgICAgICB9KSksIChULm1hdGNoZXNTZWxlY3RvciA9IHJ0KG0gPSBmLm1hdGNo
ZXNTZWxlY3RvciB8fCBmLm1vek1hdGNoZXNTZWxlY3RvciB8fCBmLndlYmtpdE1hdGNoZXNTZWxl
Y3RvciB8fCBmLm9NYXRjaGVzU2VsZWN0b3IgfHwgZi5tc01hdGNoZXNTZWxlY3RvcikpICYmIGF0
KGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAgICBULmRpc2Nvbm5lY3RlZE1hdGNoID0gbS5j
YWxsKGUsICJkaXYiKSwgbS5jYWxsKGUsICJbcyE9JyddOngiKSwgZy5wdXNoKCIhPSIsIFIpCisg
ICAgICAgICAgICAgICAgVC5kaXNjb25uZWN0ZWRNYXRjaCA9IG0uY2FsbChlLCAiZGl2IiksCisg
ICAgICAgICAgICAgICAgbS5jYWxsKGUsICJbcyE9JyddOngiKSwKKyAgICAgICAgICAgICAgICBn
LnB1c2goIiE9IiwgUikKICAgICAgICAgICAgIH0pLCBoID0gUmVnRXhwKGguam9pbigifCIpKSwg
ZyA9IFJlZ0V4cChnLmpvaW4oInwiKSksIHkgPSBydChmLmNvbnRhaW5zKSB8fCBmLmNvbXBhcmVE
b2N1bWVudFBvc2l0aW9uID8gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgIHZhciBu
ID0gOSA9PT0gZS5ub2RlVHlwZSA/IGUuZG9jdW1lbnRFbGVtZW50IDogZSwKICAgICAgICAgICAg
ICAgICAgICAgciA9IHQgJiYgdC5wYXJlbnROb2RlOwpAQCAtMTYzOSw5ICsxNzc4LDExIEBACiAg
ICAgICAgICAgICAgICAgICAgIGkrKzsKICAgICAgICAgICAgICAgICByZXR1cm4gaSA/IHV0KHNb
aV0sIGxbaV0pIDogc1tpXSA9PT0gdyA/IC0xIDogbFtpXSA9PT0gdyA/IDEgOiAwCiAgICAgICAg
ICAgICB9LCB1ID0gITEsIFswLCAwXS5zb3J0KHYpLCBULmRldGVjdER1cGxpY2F0ZXMgPSB1LCBw
KSA6IHAKLSAgICAgICAgfSwgc3QubWF0Y2hlcyA9IGZ1bmN0aW9uKGUsIHQpIHsKKyAgICAgICAg
fSwKKyAgICAgICAgc3QubWF0Y2hlcyA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgIHJl
dHVybiBzdChlLCBudWxsLCBudWxsLCB0KQotICAgICAgICB9LCBzdC5tYXRjaGVzU2VsZWN0b3Ig
PSBmdW5jdGlvbihlLCB0KSB7CisgICAgICAgIH0sCisgICAgICAgIHN0Lm1hdGNoZXNTZWxlY3Rv
ciA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgIGlmICgoZS5vd25lckRvY3VtZW50IHx8
IGUpICE9PSBwICYmIGMoZSksIHQgPSB0LnJlcGxhY2UoWiwgIj0nJDEnXSIpLCAhKCFULm1hdGNo
ZXNTZWxlY3RvciB8fCBkIHx8IGcgJiYgZy50ZXN0KHQpIHx8IGgudGVzdCh0KSkpCiAgICAgICAg
ICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBtLmNhbGwoZSwgdCk7
CkBAIC0xNjQ5LDE0ICsxNzkwLDE4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
bgogICAgICAgICAgICAgICAgIH0gY2F0Y2ggKHIpIHt9CiAgICAgICAgICAgICByZXR1cm4gc3Qo
dCwgcCwgbnVsbCwgW2VdKS5sZW5ndGggPiAwCi0gICAgICAgIH0sIHN0LmNvbnRhaW5zID0gZnVu
Y3Rpb24oZSwgdCkgeworICAgICAgICB9LAorICAgICAgICBzdC5jb250YWlucyA9IGZ1bmN0aW9u
KGUsIHQpIHsKICAgICAgICAgICAgIHJldHVybiAoZS5vd25lckRvY3VtZW50IHx8IGUpICE9PSBw
ICYmIGMoZSksIHkoZSwgdCkKLSAgICAgICAgfSwgc3QuYXR0ciA9IGZ1bmN0aW9uKGUsIHQpIHsK
KyAgICAgICAgfSwKKyAgICAgICAgc3QuYXR0ciA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAg
ICAgIHZhciBuOwogICAgICAgICAgICAgcmV0dXJuIChlLm93bmVyRG9jdW1lbnQgfHwgZSkgIT09
IHAgJiYgYyhlKSwgZCB8fCAodCA9IHQudG9Mb3dlckNhc2UoKSksIChuID0gaS5hdHRySGFuZGxl
W3RdKSA/IG4oZSkgOiBkIHx8IFQuYXR0cmlidXRlcyA/IGUuZ2V0QXR0cmlidXRlKHQpIDogKChu
ID0gZS5nZXRBdHRyaWJ1dGVOb2RlKHQpKSB8fCBlLmdldEF0dHJpYnV0ZSh0KSkgJiYgZVt0XSA9
PT0gITAgPyB0IDogbiAmJiBuLnNwZWNpZmllZCA/IG4udmFsdWUgOiBudWxsCi0gICAgICAgIH0s
IHN0LmVycm9yID0gZnVuY3Rpb24oZSkgeworICAgICAgICB9LAorICAgICAgICBzdC5lcnJvciA9
IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgIHRocm93IEVycm9yKCJTeW50YXggZXJyb3IsIHVu
cmVjb2duaXplZCBleHByZXNzaW9uOiAiICsgZSkKLSAgICAgICAgfSwgc3QudW5pcXVlU29ydCA9
IGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgfSwKKyAgICAgICAgc3QudW5pcXVlU29ydCA9IGZ1bmN0
aW9uKGUpIHsKICAgICAgICAgICAgIHZhciB0LAogICAgICAgICAgICAgICAgIG4gPSBbXSwKICAg
ICAgICAgICAgICAgICByID0gMSwKQEAgLTE3MjAsNyArMTg2NSw4IEBACiAgICAgICAgICAgICAg
ICAgZm9yICg7IHQgPSBlW3JdOyByKyspCiAgICAgICAgICAgICAgICAgICAgIG4gKz0gbyh0KTsK
ICAgICAgICAgICAgIHJldHVybiBuCi0gICAgICAgIH0sIGkgPSBzdC5zZWxlY3RvcnMgPSB7Cisg
ICAgICAgIH0sCisgICAgICAgIGkgPSBzdC5zZWxlY3RvcnMgPSB7CiAgICAgICAgICAgICBjYWNo
ZUxlbmd0aDogNTAsCiAgICAgICAgICAgICBjcmVhdGVQc2V1ZG86IG90LAogICAgICAgICAgICAg
bWF0Y2g6IFUsCkBAIC0xODAzLDcgKzE5NDksMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChoID0gW2EgPyBtLmZpcnN0Q2hpbGQgOiBtLmxhc3RD
aGlsZF0sIGEgJiYgdikgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gbVt4
XSB8fCAobVt4XSA9IHt9KSwgbCA9IGNbZV0gfHwgW10sIGQgPSBsWzBdID09PSBOICYmIGxbMV0s
IGYgPSBsWzBdID09PSBOICYmIGxbMl0sIHAgPSBkICYmIG0uY2hpbGROb2Rlc1tkXTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IG1beF0gfHwgKG1beF0gPSB7fSksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBjW2VdIHx8IFtdLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkID0gbFswXSA9PT0gTiAmJiBsWzFdLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmID0gbFswXSA9PT0gTiAmJiBsWzJdLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwID0gZCAmJiBtLmNoaWxkTm9kZXNbZF07CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChwID0gKytkICYmIHAgJiYgcFtnXSB8fCAoZiA9
IGQgPSAwKSB8fCBoLnBvcCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKDEgPT09IHAubm9kZVR5cGUgJiYgKytmICYmIHAgPT09IHQpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjW2VdID0gW04sIGQsIGZdOwpAQCAtMTgyNyw3ICsx
OTc3LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gcihlLCB0KSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhID0gby5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAg
ICAgICB3aGlsZSAoYS0tKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBNLmNhbGwo
ZSwgb1thXSksIGVbaV0gPSAhKG5baV0gPSBvW2FdKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGkgPSBNLmNhbGwoZSwgb1thXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtp
XSA9ICEobltpXSA9IG9bYV0pCiAgICAgICAgICAgICAgICAgICAgIH0pIDogZnVuY3Rpb24oZSkg
ewogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHIoZSwgMCwgbikKICAgICAgICAgICAg
ICAgICAgICAgfSkgOiByCkBAIC0xOTcyLDkgKzIxMjMsMTMgQEAKICAgICAgICAgICAgICAgICBj
ID0gRVtlICsgIiAiXTsKICAgICAgICAgICAgIGlmIChjKQogICAgICAgICAgICAgICAgIHJldHVy
biB0ID8gMCA6IGMuc2xpY2UoMCk7Ci0gICAgICAgICAgICBzID0gZSwgdSA9IFtdLCBsID0gaS5w
cmVGaWx0ZXI7CisgICAgICAgICAgICBzID0gZSwKKyAgICAgICAgICAgIHUgPSBbXSwKKyAgICAg
ICAgICAgIGwgPSBpLnByZUZpbHRlcjsKICAgICAgICAgICAgIHdoaWxlIChzKSB7Ci0gICAgICAg
ICAgICAgICAgKCFuIHx8IChyID0gJC5leGVjKHMpKSkgJiYgKHIgJiYgKHMgPSBzLnNsaWNlKHJb
MF0ubGVuZ3RoKSB8fCBzKSwgdS5wdXNoKG8gPSBbXSkpLCBuID0gITEsIChyID0gSS5leGVjKHMp
KSAmJiAobiA9IHIuc2hpZnQoKSwgby5wdXNoKHsKKyAgICAgICAgICAgICAgICAoIW4gfHwgKHIg
PSAkLmV4ZWMocykpKSAmJiAociAmJiAocyA9IHMuc2xpY2UoclswXS5sZW5ndGgpIHx8IHMpLCB1
LnB1c2gobyA9IFtdKSksCisgICAgICAgICAgICAgICAgbiA9ICExLAorICAgICAgICAgICAgICAg
IChyID0gSS5leGVjKHMpKSAmJiAobiA9IHIuc2hpZnQoKSwgby5wdXNoKHsKICAgICAgICAgICAg
ICAgICAgICAgdmFsdWU6IG4sCiAgICAgICAgICAgICAgICAgICAgIHR5cGU6IHJbMF0ucmVwbGFj
ZShXLCAiICIpCiAgICAgICAgICAgICAgICAgfSksIHMgPSBzLnNsaWNlKG4ubGVuZ3RoKSk7CkBA
IC0yMDU1LDE0ICsyMjEwLDE3IEBACiAgICAgICAgICAgICAgICAgICAgIG0gPSAhZSB8fCAhbyAm
JiB0ID8gZyA6IG10KGcsIGYsIGUsIHMsIHUpLAogICAgICAgICAgICAgICAgICAgICB5ID0gbiA/
IGkgfHwgKG8gPyBlIDogaCB8fCByKSA/IFtdIDogYSA6IG07CiAgICAgICAgICAgICAgICAgaWYg
KG4gJiYgbihtLCB5LCBzLCB1KSwgcikgewotICAgICAgICAgICAgICAgICAgICBsID0gbXQoeSwg
ZCksIHIobCwgW10sIHMsIHUpLCBjID0gbC5sZW5ndGg7CisgICAgICAgICAgICAgICAgICAgIGwg
PSBtdCh5LCBkKSwKKyAgICAgICAgICAgICAgICAgICAgcihsLCBbXSwgcywgdSksCisgICAgICAg
ICAgICAgICAgICAgIGMgPSBsLmxlbmd0aDsKICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGMt
LSkKICAgICAgICAgICAgICAgICAgICAgICAgIChwID0gbFtjXSkgJiYgKHlbZFtjXV0gPSAhKG1b
ZFtjXV0gPSBwKSkKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKG8pIHsK
ICAgICAgICAgICAgICAgICAgICAgaWYgKGkgfHwgZSkgewogICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKGkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gW10sIGMgPSB5Lmxl
bmd0aDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gW10sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYyA9IHkubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHdoaWxlIChjLS0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwID0geVtjXSkg
JiYgbC5wdXNoKG1bY10gPSBwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpKG51bGws
IHkgPSBbXSwgbCwgdSkKQEAgLTIwNzIsNyArMjIzMCw4IEBACiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKHAgPSB5W2NdKSAmJiAobCA9IGkgPyBNLmNhbGwobywgcCkgOiBmW2NdKSA+IC0x
ICYmIChvW2xdID0gIShhW2xdID0gcCkpCiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgeSA9IG10KHkgPT09IGEgPyB5LnNw
bGljZShoLCB5Lmxlbmd0aCkgOiB5KSwgaSA/IGkobnVsbCwgYSwgeSwgdSkgOiBILmFwcGx5KGEs
IHkpCisgICAgICAgICAgICAgICAgICAgIHkgPSBtdCh5ID09PSBhID8geS5zcGxpY2UoaCwgeS5s
ZW5ndGgpIDogeSksCisgICAgICAgICAgICAgICAgICAgIGkgPyBpKG51bGwsIGEsIHksIHUpIDog
SC5hcHBseShhLCB5KQogICAgICAgICAgICAgfSkKICAgICAgICAgfQogICAgICAgICBmdW5jdGlv
biB2dChlKSB7CkBAIC0yMTQ0LDcgKzIzMDMsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgeFtiXSB8fCB5W2JdIHx8ICh5W2JdID0gTC5jYWxsKGYpKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB5ID0gbXQoeSkKICAgICAgICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAgICAgICAgIEguYXBwbHkoZiwgeSksIHcgJiYgIXMgJiYgeS5sZW5n
dGggPiAwICYmIHYgKyB0Lmxlbmd0aCA+IDEgJiYgc3QudW5pcXVlU29ydChmKQorICAgICAgICAg
ICAgICAgICAgICAgICAgSC5hcHBseShmLCB5KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHcg
JiYgIXMgJiYgeS5sZW5ndGggPiAwICYmIHYgKyB0Lmxlbmd0aCA+IDEgJiYgc3QudW5pcXVlU29y
dChmKQogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB3
ICYmIChOID0gaywgbCA9IFQpLCB4CiAgICAgICAgICAgICAgICAgfTsKQEAgLTIxNTYsOSArMjMx
NiwxMSBAQAogICAgICAgICAgICAgICAgIGkgPSBbXSwKICAgICAgICAgICAgICAgICBvID0gU1tl
ICsgIiAiXTsKICAgICAgICAgICAgIGlmICghbykgewotICAgICAgICAgICAgICAgIHQgfHwgKHQg
PSBmdChlKSksIG4gPSB0Lmxlbmd0aDsKKyAgICAgICAgICAgICAgICB0IHx8ICh0ID0gZnQoZSkp
LAorICAgICAgICAgICAgICAgIG4gPSB0Lmxlbmd0aDsKICAgICAgICAgICAgICAgICB3aGlsZSAo
bi0tKQotICAgICAgICAgICAgICAgICAgICBvID0gdnQodFtuXSksIG9beF0gPyByLnB1c2gobykg
OiBpLnB1c2gobyk7CisgICAgICAgICAgICAgICAgICAgIG8gPSB2dCh0W25dKSwKKyAgICAgICAg
ICAgICAgICAgICAgb1t4XSA/IHIucHVzaChvKSA6IGkucHVzaChvKTsKICAgICAgICAgICAgICAg
ICBvID0gUyhlLCBidChpLCByKSkKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBv
CkBAIC0yMTk4LDcgKzIzNjAsMTcgQEAKICAgICAgICAgfQogICAgICAgICBpLnBzZXVkb3MubnRo
ID0gaS5wc2V1ZG9zLmVxOwogICAgICAgICBmdW5jdGlvbiBUdCgpIHt9Ci0gICAgICAgIGkuZmls
dGVycyA9IFR0LnByb3RvdHlwZSA9IGkucHNldWRvcywgaS5zZXRGaWx0ZXJzID0gbmV3IFR0LCBj
KCksIHN0LmF0dHIgPSBiLmF0dHIsIGIuZmluZCA9IHN0LCBiLmV4cHIgPSBzdC5zZWxlY3RvcnMs
IGIuZXhwclsiOiJdID0gYi5leHByLnBzZXVkb3MsIGIudW5pcXVlID0gc3QudW5pcXVlU29ydCwg
Yi50ZXh0ID0gc3QuZ2V0VGV4dCwgYi5pc1hNTERvYyA9IHN0LmlzWE1MLCBiLmNvbnRhaW5zID0g
c3QuY29udGFpbnMKKyAgICAgICAgaS5maWx0ZXJzID0gVHQucHJvdG90eXBlID0gaS5wc2V1ZG9z
LAorICAgICAgICBpLnNldEZpbHRlcnMgPSBuZXcgVHQsCisgICAgICAgIGMoKSwKKyAgICAgICAg
c3QuYXR0ciA9IGIuYXR0ciwKKyAgICAgICAgYi5maW5kID0gc3QsCisgICAgICAgIGIuZXhwciA9
IHN0LnNlbGVjdG9ycywKKyAgICAgICAgYi5leHByWyI6Il0gPSBiLmV4cHIucHNldWRvcywKKyAg
ICAgICAgYi51bmlxdWUgPSBzdC51bmlxdWVTb3J0LAorICAgICAgICBiLnRleHQgPSBzdC5nZXRU
ZXh0LAorICAgICAgICBiLmlzWE1MRG9jID0gc3QuaXNYTUwsCisgICAgICAgIGIuY29udGFpbnMg
PSBzdC5jb250YWlucwogICAgIH0oZSk7CiAgICAgdmFyIGF0ID0gL1VudGlsJC8sCiAgICAgICAg
IHN0ID0gL14oPzpwYXJlbnRzfHByZXYoPzpVbnRpbHxBbGwpKS8sCkBAIC0yMjc0LDcgKzI0NDYs
OCBAQAogICAgICAgICBhZGRCYWNrOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICByZXR1cm4g
dGhpcy5hZGQobnVsbCA9PSBlID8gdGhpcy5wcmV2T2JqZWN0IDogdGhpcy5wcmV2T2JqZWN0LmZp
bHRlcihlKSkKICAgICAgICAgfQotICAgIH0pLCBiLmZuLmFuZFNlbGYgPSBiLmZuLmFkZEJhY2s7
CisgICAgfSksCisgICAgYi5mbi5hbmRTZWxmID0gYi5mbi5hZGRCYWNrOwogICAgIGZ1bmN0aW9u
IHB0KGUsIHQpIHsKICAgICAgICAgZG8gZSA9IGVbdF07CiAgICAgICAgIHdoaWxlIChlICYmIDEg
IT09IGUubm9kZVR5cGUpOwpAQCAtMjMyMyw3ICsyNDk2LDggQEAKICAgICAgICAgICAgIHZhciBp
ID0gYi5tYXAodGhpcywgdCwgbik7CiAgICAgICAgICAgICByZXR1cm4gYXQudGVzdChlKSB8fCAo
ciA9IG4pLCByICYmICJzdHJpbmciID09IHR5cGVvZiByICYmIChpID0gYi5maWx0ZXIociwgaSkp
LCBpID0gdGhpcy5sZW5ndGggPiAxICYmICFjdFtlXSA/IGIudW5pcXVlKGkpIDogaSwgdGhpcy5s
ZW5ndGggPiAxICYmIHN0LnRlc3QoZSkgJiYgKGkgPSBpLnJldmVyc2UoKSksIHRoaXMucHVzaFN0
YWNrKGkpCiAgICAgICAgIH0KLSAgICB9KSwgYi5leHRlbmQoeworICAgIH0pLAorICAgIGIuZXh0
ZW5kKHsKICAgICAgICAgZmlsdGVyOiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICBy
ZXR1cm4gbiAmJiAoZSA9ICI6bm90KCIgKyBlICsgIikiKSwgMSA9PT0gdC5sZW5ndGggPyBiLmZp
bmQubWF0Y2hlc1NlbGVjdG9yKHRbMF0sIGUpID8gW3RbMF1dIDogW10gOiBiLmZpbmQubWF0Y2hl
cyhlLCB0KQogICAgICAgICB9LApAQCAtMjMzMSw3ICsyNTA1LDggQEAKICAgICAgICAgICAgIHZh
ciBpID0gW10sCiAgICAgICAgICAgICAgICAgbyA9IGVbbl07CiAgICAgICAgICAgICB3aGlsZSAo
byAmJiA5ICE9PSBvLm5vZGVUeXBlICYmIChyID09PSB0IHx8IDEgIT09IG8ubm9kZVR5cGUgfHwg
IWIobykuaXMocikpKQotICAgICAgICAgICAgICAgIDEgPT09IG8ubm9kZVR5cGUgJiYgaS5wdXNo
KG8pLCBvID0gb1tuXTsKKyAgICAgICAgICAgICAgICAxID09PSBvLm5vZGVUeXBlICYmIGkucHVz
aChvKSwKKyAgICAgICAgICAgICAgICBvID0gb1tuXTsKICAgICAgICAgICAgIHJldHVybiBpCiAg
ICAgICAgIH0sCiAgICAgICAgIHNpYmxpbmc6IGZ1bmN0aW9uKGUsIHQpIHsKQEAgLTIzOTgsNyAr
MjU3MywxMCBAQAogICAgICAgICB9LAogICAgICAgICBqdCA9IGR0KG8pLAogICAgICAgICBEdCA9
IGp0LmFwcGVuZENoaWxkKG8uY3JlYXRlRWxlbWVudCgiZGl2IikpOwotICAgIEF0Lm9wdGdyb3Vw
ID0gQXQub3B0aW9uLCBBdC50Ym9keSA9IEF0LnRmb290ID0gQXQuY29sZ3JvdXAgPSBBdC5jYXB0
aW9uID0gQXQudGhlYWQsIEF0LnRoID0gQXQudGQsIGIuZm4uZXh0ZW5kKHsKKyAgICBBdC5vcHRn
cm91cCA9IEF0Lm9wdGlvbiwKKyAgICBBdC50Ym9keSA9IEF0LnRmb290ID0gQXQuY29sZ3JvdXAg
PSBBdC5jYXB0aW9uID0gQXQudGhlYWQsCisgICAgQXQudGggPSBBdC50ZCwKKyAgICBiLmZuLmV4
dGVuZCh7CiAgICAgICAgIHRleHQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgIHJldHVybiBi
LmFjY2Vzcyh0aGlzLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGUgPT09
IHQgPyBiLnRleHQodGhpcykgOiB0aGlzLmVtcHR5KCkuYXBwZW5kKCh0aGlzWzBdICYmIHRoaXNb
MF0ub3duZXJEb2N1bWVudCB8fCBvKS5jcmVhdGVUZXh0Tm9kZShlKSkKQEAgLTI0MTEsNyArMjU4
OSw4IEBACiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICBpZiAodGhpc1swXSkgewog
ICAgICAgICAgICAgICAgIHZhciB0ID0gYihlLCB0aGlzWzBdLm93bmVyRG9jdW1lbnQpLmVxKDAp
LmNsb25lKCEwKTsKLSAgICAgICAgICAgICAgICB0aGlzWzBdLnBhcmVudE5vZGUgJiYgdC5pbnNl
cnRCZWZvcmUodGhpc1swXSksIHQubWFwKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHRo
aXNbMF0ucGFyZW50Tm9kZSAmJiB0Lmluc2VydEJlZm9yZSh0aGlzWzBdKSwKKyAgICAgICAgICAg
ICAgICB0Lm1hcChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlz
OwogICAgICAgICAgICAgICAgICAgICB3aGlsZSAoZS5maXJzdENoaWxkICYmIDEgPT09IGUuZmly
c3RDaGlsZC5ub2RlVHlwZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSBlLmZpcnN0Q2hp
bGQ7CkBAIC0yNDk0LDcgKzI2NzMsOCBAQAogICAgICAgICAgICAgICAgICAgICBlID0gZS5yZXBs
YWNlKHZ0LCAiPCQxPjwvJDI+Iik7CiAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBmb3IgKDsgaSA+IHI7IHIrKykKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBuID0gdGhpc1tyXSB8fCB7fSwgMSA9PT0gbi5ub2RlVHlwZSAmJiAoYi5jbGVhbkRh
dGEoT3QobiwgITEpKSwgbi5pbm5lckhUTUwgPSBlKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBuID0gdGhpc1tyXSB8fCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAxID09
PSBuLm5vZGVUeXBlICYmIChiLmNsZWFuRGF0YShPdChuLCAhMSkpLCBuLmlubmVySFRNTCA9IGUp
OwogICAgICAgICAgICAgICAgICAgICAgICAgbiA9IDAKICAgICAgICAgICAgICAgICAgICAgfSBj
YXRjaCAobykge30KICAgICAgICAgICAgICAgICB9CkBAIC0yNTI5LDE0ICsyNzA5LDE4IEBACiAg
ICAgICAgICAgICBpZiAobSB8fCAhKDEgPj0gcCB8fCAic3RyaW5nIiAhPSB0eXBlb2YgZyB8fCBi
LnN1cHBvcnQuY2hlY2tDbG9uZSkgJiYgQ3QudGVzdChnKSkKICAgICAgICAgICAgICAgICByZXR1
cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGkpIHsKICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBk
LmVxKGkpOwotICAgICAgICAgICAgICAgICAgICBtICYmIChlWzBdID0gZy5jYWxsKHRoaXMsIGks
IG4gPyBvLmh0bWwoKSA6IHQpKSwgby5kb21NYW5pcChlLCBuLCByKQorICAgICAgICAgICAgICAg
ICAgICBtICYmIChlWzBdID0gZy5jYWxsKHRoaXMsIGksIG4gPyBvLmh0bWwoKSA6IHQpKSwKKyAg
ICAgICAgICAgICAgICAgICAgby5kb21NYW5pcChlLCBuLCByKQogICAgICAgICAgICAgICAgIH0p
OwogICAgICAgICAgICAgaWYgKHAgJiYgKGwgPSBiLmJ1aWxkRnJhZ21lbnQoZSwgdGhpc1swXS5v
d25lckRvY3VtZW50LCAhMSwgdGhpcyksIGkgPSBsLmZpcnN0Q2hpbGQsIDEgPT09IGwuY2hpbGRO
b2Rlcy5sZW5ndGggJiYgKGwgPSBpKSwgaSkpIHsKICAgICAgICAgICAgICAgICBmb3IgKG4gPSBu
ICYmIGIubm9kZU5hbWUoaSwgInRyIiksIHMgPSBiLm1hcChPdChsLCAic2NyaXB0IiksIEh0KSwg
YSA9IHMubGVuZ3RoOyBwID4gYzsgYysrKQotICAgICAgICAgICAgICAgICAgICBvID0gbCwgYyAh
PT0gaCAmJiAobyA9IGIuY2xvbmUobywgITAsICEwKSwgYSAmJiBiLm1lcmdlKHMsIE90KG8sICJz
Y3JpcHQiKSkpLCByLmNhbGwobiAmJiBiLm5vZGVOYW1lKHRoaXNbY10sICJ0YWJsZSIpID8gTHQo
dGhpc1tjXSwgInRib2R5IikgOiB0aGlzW2NdLCBvLCBjKTsKKyAgICAgICAgICAgICAgICAgICAg
byA9IGwsCisgICAgICAgICAgICAgICAgICAgIGMgIT09IGggJiYgKG8gPSBiLmNsb25lKG8sICEw
LCAhMCksIGEgJiYgYi5tZXJnZShzLCBPdChvLCAic2NyaXB0IikpKSwKKyAgICAgICAgICAgICAg
ICAgICAgci5jYWxsKG4gJiYgYi5ub2RlTmFtZSh0aGlzW2NdLCAidGFibGUiKSA/IEx0KHRoaXNb
Y10sICJ0Ym9keSIpIDogdGhpc1tjXSwgbywgYyk7CiAgICAgICAgICAgICAgICAgaWYgKGEpCiAg
ICAgICAgICAgICAgICAgICAgIGZvciAodSA9IHNbcy5sZW5ndGggLSAxXS5vd25lckRvY3VtZW50
LCBiLm1hcChzLCBxdCksIGMgPSAwOyBhID4gYzsgYysrKQotICAgICAgICAgICAgICAgICAgICAg
ICAgbyA9IHNbY10sIGt0LnRlc3Qoby50eXBlIHx8ICIiKSAmJiAhYi5fZGF0YShvLCAiZ2xvYmFs
RXZhbCIpICYmIGIuY29udGFpbnModSwgbykgJiYgKG8uc3JjID8gYi5hamF4KHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIG8gPSBzW2NdLAorICAgICAgICAgICAgICAgICAgICAgICAga3QudGVz
dChvLnR5cGUgfHwgIiIpICYmICFiLl9kYXRhKG8sICJnbG9iYWxFdmFsIikgJiYgYi5jb250YWlu
cyh1LCBvKSAmJiAoby5zcmMgPyBiLmFqYXgoewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVybDogby5zcmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogIkdFVCIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGU6ICJzY3JpcHQiLApAQCAtMjU3NSw3
ICsyNzU5LDggQEAKICAgICAgICAgICAgICAgICBhID0gYi5fZGF0YSh0LCBvKSwKICAgICAgICAg
ICAgICAgICBzID0gby5ldmVudHM7CiAgICAgICAgICAgICBpZiAocykgewotICAgICAgICAgICAg
ICAgIGRlbGV0ZSBhLmhhbmRsZSwgYS5ldmVudHMgPSB7fTsKKyAgICAgICAgICAgICAgICBkZWxl
dGUgYS5oYW5kbGUsCisgICAgICAgICAgICAgICAgYS5ldmVudHMgPSB7fTsKICAgICAgICAgICAg
ICAgICBmb3IgKG4gaW4gcykKICAgICAgICAgICAgICAgICAgICAgZm9yIChyID0gMCwgaSA9IHNb
bl0ubGVuZ3RoOyBpID4gcjsgcisrKQogICAgICAgICAgICAgICAgICAgICAgICAgYi5ldmVudC5h
ZGQodCwgbiwgc1tuXVtyXSkKQEAgLTI2MTEsNyArMjc5Niw5IEBACiAgICAgICAgICAgICAgICAg
byA9IGIoZSksCiAgICAgICAgICAgICAgICAgYSA9IG8ubGVuZ3RoIC0gMTsKICAgICAgICAgICAg
IGZvciAoOyBhID49IHI7IHIrKykKLSAgICAgICAgICAgICAgICBuID0gciA9PT0gYSA/IHRoaXMg
OiB0aGlzLmNsb25lKCEwKSwgYihvW3JdKVt0XShuKSwgZC5hcHBseShpLCBuLmdldCgpKTsKKyAg
ICAgICAgICAgICAgICBuID0gciA9PT0gYSA/IHRoaXMgOiB0aGlzLmNsb25lKCEwKSwKKyAgICAg
ICAgICAgICAgICBiKG9bcl0pW3RdKG4pLAorICAgICAgICAgICAgICAgIGQuYXBwbHkoaSwgbi5n
ZXQoKSk7CiAgICAgICAgICAgICByZXR1cm4gdGhpcy5wdXNoU3RhY2soaSkKICAgICAgICAgfQog
ICAgIH0pOwpAQCAtMjY2NCwyMSArMjg1MSwyOSBAQAogICAgICAgICAgICAgICAgICAgICBpZiAo
Im9iamVjdCIgPT09IGIudHlwZShvKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGIubWVyZ2Uo
ZCwgby5ub2RlVHlwZSA/IFtvXSA6IG8pOwogICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh3
dC50ZXN0KG8pKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzID0gcyB8fCBmLmFwcGVuZENo
aWxkKHQuY3JlYXRlRWxlbWVudCgiZGl2IikpLCB1ID0gKGJ0LmV4ZWMobykgfHwgWyIiLCAiIl0p
WzFdLnRvTG93ZXJDYXNlKCksIGMgPSBBdFt1XSB8fCBBdC5fZGVmYXVsdCwgcy5pbm5lckhUTUwg
PSBjWzFdICsgby5yZXBsYWNlKHZ0LCAiPCQxPjwvJDI+IikgKyBjWzJdLCBpID0gY1swXTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHMgPSBzIHx8IGYuYXBwZW5kQ2hpbGQodC5jcmVhdGVFbGVt
ZW50KCJkaXYiKSksCisgICAgICAgICAgICAgICAgICAgICAgICB1ID0gKGJ0LmV4ZWMobykgfHwg
WyIiLCAiIl0pWzFdLnRvTG93ZXJDYXNlKCksCisgICAgICAgICAgICAgICAgICAgICAgICBjID0g
QXRbdV0gfHwgQXQuX2RlZmF1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICBzLmlubmVySFRN
TCA9IGNbMV0gKyBvLnJlcGxhY2UodnQsICI8JDE+PC8kMj4iKSArIGNbMl0sCisgICAgICAgICAg
ICAgICAgICAgICAgICBpID0gY1swXTsKICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChp
LS0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHMubGFzdENoaWxkOwogICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKCFiLnN1cHBvcnQubGVhZGluZ1doaXRlc3BhY2UgJiYgeXQu
dGVzdChvKSAmJiBkLnB1c2godC5jcmVhdGVUZXh0Tm9kZSh5dC5leGVjKG8pWzBdKSksICFiLnN1
cHBvcnQudGJvZHkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gInRhYmxlIiAh
PT0gdSB8fCB4dC50ZXN0KG8pID8gIjx0YWJsZT4iICE9PSBjWzFdIHx8IHh0LnRlc3QobykgPyAw
IDogcyA6IHMuZmlyc3RDaGlsZCwgaSA9IG8gJiYgby5jaGlsZE5vZGVzLmxlbmd0aDsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBvID0gInRhYmxlIiAhPT0gdSB8fCB4dC50ZXN0KG8pID8g
Ijx0YWJsZT4iICE9PSBjWzFdIHx8IHh0LnRlc3QobykgPyAwIDogcyA6IHMuZmlyc3RDaGlsZCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gbyAmJiBvLmNoaWxkTm9kZXMubGVuZ3Ro
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChpLS0pCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGIubm9kZU5hbWUobCA9IG8uY2hpbGROb2Rlc1tpXSwgInRib2R5
IikgJiYgIWwuY2hpbGROb2Rlcy5sZW5ndGggJiYgby5yZW1vdmVDaGlsZChsKQogICAgICAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgYi5tZXJnZShkLCBzLmNo
aWxkTm9kZXMpLCBzLnRleHRDb250ZW50ID0gIiI7CisgICAgICAgICAgICAgICAgICAgICAgICBi
Lm1lcmdlKGQsIHMuY2hpbGROb2RlcyksCisgICAgICAgICAgICAgICAgICAgICAgICBzLnRleHRD
b250ZW50ID0gIiI7CiAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAocy5maXJzdENoaWxk
KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMucmVtb3ZlQ2hpbGQocy5maXJzdENoaWxk
KTsKICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBmLmxhc3RDaGlsZAogICAgICAgICAgICAg
ICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh0LmNyZWF0ZVRl
eHROb2RlKG8pKTsKLSAgICAgICAgICAgIHMgJiYgZi5yZW1vdmVDaGlsZChzKSwgYi5zdXBwb3J0
LmFwcGVuZENoZWNrZWQgfHwgYi5ncmVwKE90KGQsICJpbnB1dCIpLCBCdCksIGggPSAwOworICAg
ICAgICAgICAgcyAmJiBmLnJlbW92ZUNoaWxkKHMpLAorICAgICAgICAgICAgYi5zdXBwb3J0LmFw
cGVuZENoZWNrZWQgfHwgYi5ncmVwKE90KGQsICJpbnB1dCIpLCBCdCksCisgICAgICAgICAgICBo
ID0gMDsKICAgICAgICAgICAgIHdoaWxlIChvID0gZFtoKytdKQogICAgICAgICAgICAgICAgIGlm
ICgoIXIgfHwgLTEgPT09IGIuaW5BcnJheShvLCByKSkgJiYgKGEgPSBiLmNvbnRhaW5zKG8ub3du
ZXJEb2N1bWVudCwgbyksIHMgPSBPdChmLmFwcGVuZENoaWxkKG8pLCAic2NyaXB0IiksIGEgJiYg
TXQocyksIG4pKSB7CiAgICAgICAgICAgICAgICAgICAgIGkgPSAwOwpAQCAtMjc1Myw5ICsyOTQ4
LDExIEBACiAgICAgICAgICAgICBhID0gMCwKICAgICAgICAgICAgIHMgPSBlLmxlbmd0aDsKICAg
ICAgICAgZm9yICg7IHMgPiBhOyBhKyspCi0gICAgICAgICAgICByID0gZVthXSwgci5zdHlsZSAm
JiAob1thXSA9IGIuX2RhdGEociwgIm9sZGRpc3BsYXkiKSwgbiA9IHIuc3R5bGUuZGlzcGxheSwg
dCA/IChvW2FdIHx8ICJub25lIiAhPT0gbiB8fCAoci5zdHlsZS5kaXNwbGF5ID0gIiIpLCAiIiA9
PT0gci5zdHlsZS5kaXNwbGF5ICYmIG5uKHIpICYmIChvW2FdID0gYi5fZGF0YShyLCAib2xkZGlz
cGxheSIsIHVuKHIubm9kZU5hbWUpKSkpIDogb1thXSB8fCAoaSA9IG5uKHIpLCAobiAmJiAibm9u
ZSIgIT09IG4gfHwgIWkpICYmIGIuX2RhdGEociwgIm9sZGRpc3BsYXkiLCBpID8gbiA6IGIuY3Nz
KHIsICJkaXNwbGF5IikpKSk7CisgICAgICAgICAgICByID0gZVthXSwKKyAgICAgICAgICAgIHIu
c3R5bGUgJiYgKG9bYV0gPSBiLl9kYXRhKHIsICJvbGRkaXNwbGF5IiksIG4gPSByLnN0eWxlLmRp
c3BsYXksIHQgPyAob1thXSB8fCAibm9uZSIgIT09IG4gfHwgKHIuc3R5bGUuZGlzcGxheSA9ICIi
KSwgIiIgPT09IHIuc3R5bGUuZGlzcGxheSAmJiBubihyKSAmJiAob1thXSA9IGIuX2RhdGEociwg
Im9sZGRpc3BsYXkiLCB1bihyLm5vZGVOYW1lKSkpKSA6IG9bYV0gfHwgKGkgPSBubihyKSwgKG4g
JiYgIm5vbmUiICE9PSBuIHx8ICFpKSAmJiBiLl9kYXRhKHIsICJvbGRkaXNwbGF5IiwgaSA/IG4g
OiBiLmNzcyhyLCAiZGlzcGxheSIpKSkpOwogICAgICAgICBmb3IgKGEgPSAwOyBzID4gYTsgYSsr
KQotICAgICAgICAgICAgciA9IGVbYV0sIHIuc3R5bGUgJiYgKHQgJiYgIm5vbmUiICE9PSByLnN0
eWxlLmRpc3BsYXkgJiYgIiIgIT09IHIuc3R5bGUuZGlzcGxheSB8fCAoci5zdHlsZS5kaXNwbGF5
ID0gdCA/IG9bYV0gfHwgIiIgOiAibm9uZSIpKTsKKyAgICAgICAgICAgIHIgPSBlW2FdLAorICAg
ICAgICAgICAgci5zdHlsZSAmJiAodCAmJiAibm9uZSIgIT09IHIuc3R5bGUuZGlzcGxheSAmJiAi
IiAhPT0gci5zdHlsZS5kaXNwbGF5IHx8IChyLnN0eWxlLmRpc3BsYXkgPSB0ID8gb1thXSB8fCAi
IiA6ICJub25lIikpOwogICAgICAgICByZXR1cm4gZQogICAgIH0KICAgICBiLmZuLmV4dGVuZCh7
CkBAIC0yNzg1LDcgKzI5ODIsOCBAQAogICAgICAgICAgICAgICAgICh0ID8gZSA6IG5uKHRoaXMp
KSA/IGIodGhpcykuc2hvdygpIDogYih0aGlzKS5oaWRlKCkKICAgICAgICAgICAgIH0pCiAgICAg
ICAgIH0KLSAgICB9KSwgYi5leHRlbmQoeworICAgIH0pLAorICAgIGIuZXh0ZW5kKHsKICAgICAg
ICAgY3NzSG9va3M6IHsKICAgICAgICAgICAgIG9wYWNpdHk6IHsKICAgICAgICAgICAgICAgICBn
ZXQ6IGZ1bmN0aW9uKGUsIHQpIHsKQEAgLTI4MzcsMTMgKzMwMzUsMTUgQEAKICAgICAgICAgICAg
ICAgICBvLAogICAgICAgICAgICAgICAgIGEgPSB7fTsKICAgICAgICAgICAgIGZvciAobyBpbiB0
KQotICAgICAgICAgICAgICAgIGFbb10gPSBlLnN0eWxlW29dLCBlLnN0eWxlW29dID0gdFtvXTsK
KyAgICAgICAgICAgICAgICBhW29dID0gZS5zdHlsZVtvXSwKKyAgICAgICAgICAgICAgICBlLnN0
eWxlW29dID0gdFtvXTsKICAgICAgICAgICAgIGkgPSBuLmFwcGx5KGUsIHIgfHwgW10pOwogICAg
ICAgICAgICAgZm9yIChvIGluIHQpCiAgICAgICAgICAgICAgICAgZS5zdHlsZVtvXSA9IGFbb107
CiAgICAgICAgICAgICByZXR1cm4gaQogICAgICAgICB9Ci0gICAgfSksIGUuZ2V0Q29tcHV0ZWRT
dHlsZSA/IChSdCA9IGZ1bmN0aW9uKHQpIHsKKyAgICB9KSwKKyAgICBlLmdldENvbXB1dGVkU3R5
bGUgPyAoUnQgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgIHJldHVybiBlLmdldENvbXB1dGVkU3R5
bGUodCwgbnVsbCkKICAgICB9LCBXdCA9IGZ1bmN0aW9uKGUsIG4sIHIpIHsKICAgICAgICAgdmFy
IGksCkBAIC0yODcyLDcgKzMwNzIsOCBAQAogICAgICAgICB2YXIgbyA9IG4gPT09IChyID8gImJv
cmRlciIgOiAiY29udGVudCIpID8gNCA6ICJ3aWR0aCIgPT09IHQgPyAxIDogMCwKICAgICAgICAg
ICAgIGEgPSAwOwogICAgICAgICBmb3IgKDsgNCA+IG87IG8gKz0gMikKLSAgICAgICAgICAgICJt
YXJnaW4iID09PSBuICYmIChhICs9IGIuY3NzKGUsIG4gKyBadFtvXSwgITAsIGkpKSwgciA/ICgi
Y29udGVudCIgPT09IG4gJiYgKGEgLT0gYi5jc3MoZSwgInBhZGRpbmciICsgWnRbb10sICEwLCBp
KSksICJtYXJnaW4iICE9PSBuICYmIChhIC09IGIuY3NzKGUsICJib3JkZXIiICsgWnRbb10gKyAi
V2lkdGgiLCAhMCwgaSkpKSA6IChhICs9IGIuY3NzKGUsICJwYWRkaW5nIiArIFp0W29dLCAhMCwg
aSksICJwYWRkaW5nIiAhPT0gbiAmJiAoYSArPSBiLmNzcyhlLCAiYm9yZGVyIiArIFp0W29dICsg
IldpZHRoIiwgITAsIGkpKSk7CisgICAgICAgICAgICAibWFyZ2luIiA9PT0gbiAmJiAoYSArPSBi
LmNzcyhlLCBuICsgWnRbb10sICEwLCBpKSksCisgICAgICAgICAgICByID8gKCJjb250ZW50IiA9
PT0gbiAmJiAoYSAtPSBiLmNzcyhlLCAicGFkZGluZyIgKyBadFtvXSwgITAsIGkpKSwgIm1hcmdp
biIgIT09IG4gJiYgKGEgLT0gYi5jc3MoZSwgImJvcmRlciIgKyBadFtvXSArICJXaWR0aCIsICEw
LCBpKSkpIDogKGEgKz0gYi5jc3MoZSwgInBhZGRpbmciICsgWnRbb10sICEwLCBpKSwgInBhZGRp
bmciICE9PSBuICYmIChhICs9IGIuY3NzKGUsICJib3JkZXIiICsgWnRbb10gKyAiV2lkdGgiLCAh
MCwgaSkpKTsKICAgICAgICAgcmV0dXJuIGEKICAgICB9CiAgICAgZnVuY3Rpb24gc24oZSwgdCwg
bikgewpAQCAtMjg4Myw3ICszMDg0LDggQEAKICAgICAgICAgaWYgKDAgPj0gaSB8fCBudWxsID09
IGkpIHsKICAgICAgICAgICAgIGlmIChpID0gV3QoZSwgdCwgbyksICgwID4gaSB8fCBudWxsID09
IGkpICYmIChpID0gZS5zdHlsZVt0XSksIFl0LnRlc3QoaSkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIGk7Ci0gICAgICAgICAgICByID0gYSAmJiAoYi5zdXBwb3J0LmJveFNpemluZ1JlbGlhYmxl
IHx8IGkgPT09IGUuc3R5bGVbdF0pLCBpID0gcGFyc2VGbG9hdChpKSB8fCAwCisgICAgICAgICAg
ICByID0gYSAmJiAoYi5zdXBwb3J0LmJveFNpemluZ1JlbGlhYmxlIHx8IGkgPT09IGUuc3R5bGVb
dF0pLAorICAgICAgICAgICAgaSA9IHBhcnNlRmxvYXQoaSkgfHwgMAogICAgICAgICB9CiAgICAg
ICAgIHJldHVybiBpICsgYW4oZSwgdCwgbiB8fCAoYSA/ICJib3JkZXIiIDogImNvbnRlbnQiKSwg
ciwgbykgKyAicHgiCiAgICAgfQpAQCAtMjkwOSw3ICszMTExLDggQEAKICAgICAgICAgICAgICAg
ICByZXR1cm4gb24oZSwgdCwgciA/IGFuKGUsIG4sIHIsIGIuc3VwcG9ydC5ib3hTaXppbmcgJiYg
ImJvcmRlci1ib3giID09PSBiLmNzcyhlLCAiYm94U2l6aW5nIiwgITEsIGkpLCBpKSA6IDApCiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICB9KSwgYi5zdXBwb3J0Lm9wYWNpdHkgfHwgKGIu
Y3NzSG9va3Mub3BhY2l0eSA9IHsKKyAgICB9KSwKKyAgICBiLnN1cHBvcnQub3BhY2l0eSB8fCAo
Yi5jc3NIb29rcy5vcGFjaXR5ID0gewogICAgICAgICBnZXQ6IGZ1bmN0aW9uKGUsIHQpIHsKICAg
ICAgICAgICAgIHJldHVybiBJdC50ZXN0KCh0ICYmIGUuY3VycmVudFN0eWxlID8gZS5jdXJyZW50
U3R5bGUuZmlsdGVyIDogZS5zdHlsZS5maWx0ZXIpIHx8ICIiKSA/IC4wMSAqIHBhcnNlRmxvYXQo
UmVnRXhwLiQxKSArICIiIDogdCA/ICIxIiA6ICIiCiAgICAgICAgIH0sCkBAIC0yOTE4LDI3ICsz
MTIxLDMyIEBACiAgICAgICAgICAgICAgICAgciA9IGUuY3VycmVudFN0eWxlLAogICAgICAgICAg
ICAgICAgIGkgPSBiLmlzTnVtZXJpYyh0KSA/ICJhbHBoYShvcGFjaXR5PSIgKyAxMDAgKiB0ICsg
IikiIDogIiIsCiAgICAgICAgICAgICAgICAgbyA9IHIgJiYgci5maWx0ZXIgfHwgbi5maWx0ZXIg
fHwgIiI7Ci0gICAgICAgICAgICBuLnpvb20gPSAxLCAodCA+PSAxIHx8ICIiID09PSB0KSAmJiAi
IiA9PT0gYi50cmltKG8ucmVwbGFjZSgkdCwgIiIpKSAmJiBuLnJlbW92ZUF0dHJpYnV0ZSAmJiAo
bi5yZW1vdmVBdHRyaWJ1dGUoImZpbHRlciIpLCAiIiA9PT0gdCB8fCByICYmICFyLmZpbHRlcikg
fHwgKG4uZmlsdGVyID0gJHQudGVzdChvKSA/IG8ucmVwbGFjZSgkdCwgaSkgOiBvICsgIiAiICsg
aSkKKyAgICAgICAgICAgIG4uem9vbSA9IDEsCisgICAgICAgICAgICAodCA+PSAxIHx8ICIiID09
PSB0KSAmJiAiIiA9PT0gYi50cmltKG8ucmVwbGFjZSgkdCwgIiIpKSAmJiBuLnJlbW92ZUF0dHJp
YnV0ZSAmJiAobi5yZW1vdmVBdHRyaWJ1dGUoImZpbHRlciIpLCAiIiA9PT0gdCB8fCByICYmICFy
LmZpbHRlcikgfHwgKG4uZmlsdGVyID0gJHQudGVzdChvKSA/IG8ucmVwbGFjZSgkdCwgaSkgOiBv
ICsgIiAiICsgaSkKICAgICAgICAgfQotICAgIH0pLCBiKGZ1bmN0aW9uKCkgeworICAgIH0pLAor
ICAgIGIoZnVuY3Rpb24oKSB7CiAgICAgICAgIGIuc3VwcG9ydC5yZWxpYWJsZU1hcmdpblJpZ2h0
IHx8IChiLmNzc0hvb2tzLm1hcmdpblJpZ2h0ID0gewogICAgICAgICAgICAgZ2V0OiBmdW5jdGlv
bihlLCBuKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIG4gPyBiLnN3YXAoZSwgewogICAgICAg
ICAgICAgICAgICAgICBkaXNwbGF5OiAiaW5saW5lLWJsb2NrIgogICAgICAgICAgICAgICAgIH0s
IFd0LCBbZSwgIm1hcmdpblJpZ2h0Il0pIDogdAogICAgICAgICAgICAgfQotICAgICAgICB9KSwg
IWIuc3VwcG9ydC5waXhlbFBvc2l0aW9uICYmIGIuZm4ucG9zaXRpb24gJiYgYi5lYWNoKFsidG9w
IiwgImxlZnQiXSwgZnVuY3Rpb24oZSwgbikgeworICAgICAgICB9KSwKKyAgICAgICAgIWIuc3Vw
cG9ydC5waXhlbFBvc2l0aW9uICYmIGIuZm4ucG9zaXRpb24gJiYgYi5lYWNoKFsidG9wIiwgImxl
ZnQiXSwgZnVuY3Rpb24oZSwgbikgewogICAgICAgICAgICAgYi5jc3NIb29rc1tuXSA9IHsKICAg
ICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKGUsIHIpIHsKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHIgPyAociA9IFd0KGUsIG4pLCBZdC50ZXN0KHIpID8gYihlKS5wb3NpdGlvbigpW25d
ICsgInB4IiA6IHIpIDogdAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAg
ICAgfSkKLSAgICB9KSwgYi5leHByICYmIGIuZXhwci5maWx0ZXJzICYmIChiLmV4cHIuZmlsdGVy
cy5oaWRkZW4gPSBmdW5jdGlvbihlKSB7CisgICAgfSksCisgICAgYi5leHByICYmIGIuZXhwci5m
aWx0ZXJzICYmIChiLmV4cHIuZmlsdGVycy5oaWRkZW4gPSBmdW5jdGlvbihlKSB7CiAgICAgICAg
IHJldHVybiAwID49IGUub2Zmc2V0V2lkdGggJiYgMCA+PSBlLm9mZnNldEhlaWdodCB8fCAhYi5z
dXBwb3J0LnJlbGlhYmxlSGlkZGVuT2Zmc2V0cyAmJiAibm9uZSIgPT09IChlLnN0eWxlICYmIGUu
c3R5bGUuZGlzcGxheSB8fCBiLmNzcyhlLCAiZGlzcGxheSIpKQogICAgIH0sIGIuZXhwci5maWx0
ZXJzLnZpc2libGUgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgIHJldHVybiAhYi5leHByLmZpbHRl
cnMuaGlkZGVuKGUpCi0gICAgfSksIGIuZWFjaCh7CisgICAgfSksCisgICAgYi5lYWNoKHsKICAg
ICAgICAgbWFyZ2luOiAiIiwKICAgICAgICAgcGFkZGluZzogIiIsCiAgICAgICAgIGJvcmRlcjog
IldpZHRoIgpAQCAtMjk1Miw3ICszMTYwLDggQEAKICAgICAgICAgICAgICAgICAgICAgaVtlICsg
WnRbcl0gKyB0XSA9IG9bcl0gfHwgb1tyIC0gMl0gfHwgb1swXTsKICAgICAgICAgICAgICAgICBy
ZXR1cm4gaQogICAgICAgICAgICAgfQotICAgICAgICB9LCBVdC50ZXN0KGUpIHx8IChiLmNzc0hv
b2tzW2UgKyB0XS5zZXQgPSBvbikKKyAgICAgICAgfSwKKyAgICAgICAgVXQudGVzdChlKSB8fCAo
Yi5jc3NIb29rc1tlICsgdF0uc2V0ID0gb24pCiAgICAgfSk7CiAgICAgdmFyIGNuID0gLyUyMC9n
LAogICAgICAgICBwbiA9IC9cW1xdJC8sCkBAIC0yOTgzLDExICszMTkyLDEzIEBACiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgfSkuZ2V0KCkKICAgICAgICAgfQotICAgIH0pLCBiLnBh
cmFtID0gZnVuY3Rpb24oZSwgbikgeworICAgIH0pLAorICAgIGIucGFyYW0gPSBmdW5jdGlvbihl
LCBuKSB7CiAgICAgICAgIHZhciByLAogICAgICAgICAgICAgaSA9IFtdLAogICAgICAgICAgICAg
byA9IGZ1bmN0aW9uKGUsIHQpIHsKLSAgICAgICAgICAgICAgICB0ID0gYi5pc0Z1bmN0aW9uKHQp
ID8gdCgpIDogbnVsbCA9PSB0ID8gIiIgOiB0LCBpW2kubGVuZ3RoXSA9IGVuY29kZVVSSUNvbXBv
bmVudChlKSArICI9IiArIGVuY29kZVVSSUNvbXBvbmVudCh0KQorICAgICAgICAgICAgICAgIHQg
PSBiLmlzRnVuY3Rpb24odCkgPyB0KCkgOiBudWxsID09IHQgPyAiIiA6IHQsCisgICAgICAgICAg
ICAgICAgaVtpLmxlbmd0aF0gPSBlbmNvZGVVUklDb21wb25lbnQoZSkgKyAiPSIgKyBlbmNvZGVV
UklDb21wb25lbnQodCkKICAgICAgICAgICAgIH07CiAgICAgICAgIGlmIChuID09PSB0ICYmIChu
ID0gYi5hamF4U2V0dGluZ3MgJiYgYi5hamF4U2V0dGluZ3MudHJhZGl0aW9uYWwpLCBiLmlzQXJy
YXkoZSkgfHwgZS5qcXVlcnkgJiYgIWIuaXNQbGFpbk9iamVjdChlKSkKICAgICAgICAgICAgIGIu
ZWFjaChlLCBmdW5jdGlvbigpIHsKQEAgLTMwMTQsNyArMzIyNSw4IEBACiAgICAgICAgIGIuZm5b
dF0gPSBmdW5jdGlvbihlLCBuKSB7CiAgICAgICAgICAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0
aCA+IDAgPyB0aGlzLm9uKHQsIG51bGwsIGUsIG4pIDogdGhpcy50cmlnZ2VyKHQpCiAgICAgICAg
IH0KLSAgICB9KSwgYi5mbi5ob3ZlciA9IGZ1bmN0aW9uKGUsIHQpIHsKKyAgICB9KSwKKyAgICBi
LmZuLmhvdmVyID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICByZXR1cm4gdGhpcy5tb3VzZWVu
dGVyKGUpLm1vdXNlbGVhdmUodCB8fCBlKQogICAgIH07CiAgICAgdmFyIG1uLApAQCAtMzAzNSw3
ICszMjQ3LDkgQEAKICAgICB0cnkgewogICAgICAgICB5biA9IGEuaHJlZgogICAgIH0gY2F0Y2gg
KExuKSB7Ci0gICAgICAgIHluID0gby5jcmVhdGVFbGVtZW50KCJhIiksIHluLmhyZWYgPSAiIiwg
eW4gPSB5bi5ocmVmCisgICAgICAgIHluID0gby5jcmVhdGVFbGVtZW50KCJhIiksCisgICAgICAg
IHluLmhyZWYgPSAiIiwKKyAgICAgICAgeW4gPSB5bi5ocmVmCiAgICAgfQogICAgIG1uID0gRW4u
ZXhlYyh5bi50b0xvd2VyQ2FzZSgpKSB8fCBbXTsKICAgICBmdW5jdGlvbiBIbihlKSB7CkBAIC0z
MDgzLDE1ICszMjk3LDE4IEBACiAgICAgICAgICAgICBkYXRhVHlwZTogImh0bWwiLAogICAgICAg
ICAgICAgZGF0YTogbgogICAgICAgICB9KS5kb25lKGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAg
IG8gPSBhcmd1bWVudHMsIHMuaHRtbChpID8gYigiPGRpdj4iKS5hcHBlbmQoYi5wYXJzZUhUTUwo
ZSkpLmZpbmQoaSkgOiBlKQorICAgICAgICAgICAgbyA9IGFyZ3VtZW50cywKKyAgICAgICAgICAg
IHMuaHRtbChpID8gYigiPGRpdj4iKS5hcHBlbmQoYi5wYXJzZUhUTUwoZSkpLmZpbmQoaSkgOiBl
KQogICAgICAgICB9KS5jb21wbGV0ZShyICYmIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAg
IHMuZWFjaChyLCBvIHx8IFtlLnJlc3BvbnNlVGV4dCwgdCwgZV0pCiAgICAgICAgIH0pLCB0aGlz
Ci0gICAgfSwgYi5lYWNoKFsiYWpheFN0YXJ0IiwgImFqYXhTdG9wIiwgImFqYXhDb21wbGV0ZSIs
ICJhamF4RXJyb3IiLCAiYWpheFN1Y2Nlc3MiLCAiYWpheFNlbmQiXSwgZnVuY3Rpb24oZSwgdCkg
eworICAgIH0sCisgICAgYi5lYWNoKFsiYWpheFN0YXJ0IiwgImFqYXhTdG9wIiwgImFqYXhDb21w
bGV0ZSIsICJhamF4RXJyb3IiLCAiYWpheFN1Y2Nlc3MiLCAiYWpheFNlbmQiXSwgZnVuY3Rpb24o
ZSwgdCkgewogICAgICAgICBiLmZuW3RdID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgcmV0
dXJuIHRoaXMub24odCwgZSkKICAgICAgICAgfQotICAgIH0pLCBiLmVhY2goWyJnZXQiLCAicG9z
dCJdLCBmdW5jdGlvbihlLCBuKSB7CisgICAgfSksCisgICAgYi5lYWNoKFsiZ2V0IiwgInBvc3Qi
XSwgZnVuY3Rpb24oZSwgbikgewogICAgICAgICBiW25dID0gZnVuY3Rpb24oZSwgciwgaSwgbykg
ewogICAgICAgICAgICAgcmV0dXJuIGIuaXNGdW5jdGlvbihyKSAmJiAobyA9IG8gfHwgaSwgaSA9
IHIsIHIgPSB0KSwgYi5hamF4KHsKICAgICAgICAgICAgICAgICB1cmw6IGUsCkBAIC0zMTAxLDcg
KzMzMTgsOCBAQAogICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGkKICAgICAgICAgICAgIH0pCiAg
ICAgICAgIH0KLSAgICB9KSwgYi5leHRlbmQoeworICAgIH0pLAorICAgIGIuZXh0ZW5kKHsKICAg
ICAgICAgYWN0aXZlOiAwLAogICAgICAgICBsYXN0TW9kaWZpZWQ6IHt9LAogICAgICAgICBldGFn
OiB7fSwKQEAgLTMxNDYsNyArMzM2NCw4IEBACiAgICAgICAgIGFqYXhQcmVmaWx0ZXI6IEhuKEFu
KSwKICAgICAgICAgYWpheFRyYW5zcG9ydDogSG4oam4pLAogICAgICAgICBhamF4OiBmdW5jdGlv
bihlLCBuKSB7Ci0gICAgICAgICAgICAib2JqZWN0IiA9PSB0eXBlb2YgZSAmJiAobiA9IGUsIGUg
PSB0KSwgbiA9IG4gfHwge307CisgICAgICAgICAgICAib2JqZWN0IiA9PSB0eXBlb2YgZSAmJiAo
biA9IGUsIGUgPSB0KSwKKyAgICAgICAgICAgIG4gPSBuIHx8IHt9OwogICAgICAgICAgICAgdmFy
IHIsCiAgICAgICAgICAgICAgICAgaSwKICAgICAgICAgICAgICAgICBvLApAQCAtMzIwNiw3ICsz
NDI1LDE1IEBACiAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgIGlmIChoLnByb21pc2Uo
TikuY29tcGxldGUgPSBnLmFkZCwgTi5zdWNjZXNzID0gTi5kb25lLCBOLmVycm9yID0gTi5mYWls
LCBwLnVybCA9ICgoZSB8fCBwLnVybCB8fCB5bikgKyAiIikucmVwbGFjZSh4biwgIiIpLnJlcGxh
Y2Uoa24sIG1uWzFdICsgIi8vIiksIHAudHlwZSA9IG4ubWV0aG9kIHx8IG4udHlwZSB8fCBwLm1l
dGhvZCB8fCBwLnR5cGUsIHAuZGF0YVR5cGVzID0gYi50cmltKHAuZGF0YVR5cGUgfHwgIioiKS50
b0xvd2VyQ2FzZSgpLm1hdGNoKHcpIHx8IFsiIl0sIG51bGwgPT0gcC5jcm9zc0RvbWFpbiAmJiAo
ciA9IEVuLmV4ZWMocC51cmwudG9Mb3dlckNhc2UoKSksIHAuY3Jvc3NEb21haW4gPSAhKCFyIHx8
IHJbMV0gPT09IG1uWzFdICYmIHJbMl0gPT09IG1uWzJdICYmIChyWzNdIHx8ICgiaHR0cDoiID09
PSByWzFdID8gODAgOiA0NDMpKSA9PSAobW5bM10gfHwgKCJodHRwOiIgPT09IG1uWzFdID8gODAg
OiA0NDMpKSkpLCBwLmRhdGEgJiYgcC5wcm9jZXNzRGF0YSAmJiAic3RyaW5nIiAhPSB0eXBlb2Yg
cC5kYXRhICYmIChwLmRhdGEgPSBiLnBhcmFtKHAuZGF0YSwgcC50cmFkaXRpb25hbCkpLCBxbihB
biwgcCwgbiwgTiksIDIgPT09IHgpCiAgICAgICAgICAgICAgICAgcmV0dXJuIE47Ci0gICAgICAg
ICAgICB1ID0gcC5nbG9iYWwsIHUgJiYgMCA9PT0gYi5hY3RpdmUrKyAmJiBiLmV2ZW50LnRyaWdn
ZXIoImFqYXhTdGFydCIpLCBwLnR5cGUgPSBwLnR5cGUudG9VcHBlckNhc2UoKSwgcC5oYXNDb250
ZW50ID0gIUNuLnRlc3QocC50eXBlKSwgbyA9IHAudXJsLCBwLmhhc0NvbnRlbnQgfHwgKHAuZGF0
YSAmJiAobyA9IHAudXJsICs9IChibi50ZXN0KG8pID8gIiYiIDogIj8iKSArIHAuZGF0YSwgZGVs
ZXRlIHAuZGF0YSksIHAuY2FjaGUgPT09ICExICYmIChwLnVybCA9IHduLnRlc3QobykgPyBvLnJl
cGxhY2Uod24sICIkMV89IiArIHZuKyspIDogbyArIChibi50ZXN0KG8pID8gIiYiIDogIj8iKSAr
ICJfPSIgKyB2bisrKSksIHAuaWZNb2RpZmllZCAmJiAoYi5sYXN0TW9kaWZpZWRbb10gJiYgTi5z
ZXRSZXF1ZXN0SGVhZGVyKCJJZi1Nb2RpZmllZC1TaW5jZSIsIGIubGFzdE1vZGlmaWVkW29dKSwg
Yi5ldGFnW29dICYmIE4uc2V0UmVxdWVzdEhlYWRlcigiSWYtTm9uZS1NYXRjaCIsIGIuZXRhZ1tv
XSkpLCAocC5kYXRhICYmIHAuaGFzQ29udGVudCAmJiBwLmNvbnRlbnRUeXBlICE9PSAhMSB8fCBu
LmNvbnRlbnRUeXBlKSAmJiBOLnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtVHlwZSIsIHAuY29u
dGVudFR5cGUpLCBOLnNldFJlcXVlc3RIZWFkZXIoIkFjY2VwdCIsIHAuZGF0YVR5cGVzWzBdICYm
IHAuYWNjZXB0c1twLmRhdGFUeXBlc1swXV0gPyBwLmFjY2VwdHNbcC5kYXRhVHlwZXNbMF1dICsg
KCIqIiAhPT0gcC5kYXRhVHlwZXNbMF0gPyAiLCAiICsgRG4gKyAiOyBxPTAuMDEiIDogIiIpIDog
cC5hY2NlcHRzWyIqIl0pOworICAgICAgICAgICAgdSA9IHAuZ2xvYmFsLAorICAgICAgICAgICAg
dSAmJiAwID09PSBiLmFjdGl2ZSsrICYmIGIuZXZlbnQudHJpZ2dlcigiYWpheFN0YXJ0IiksCisg
ICAgICAgICAgICBwLnR5cGUgPSBwLnR5cGUudG9VcHBlckNhc2UoKSwKKyAgICAgICAgICAgIHAu
aGFzQ29udGVudCA9ICFDbi50ZXN0KHAudHlwZSksCisgICAgICAgICAgICBvID0gcC51cmwsCisg
ICAgICAgICAgICBwLmhhc0NvbnRlbnQgfHwgKHAuZGF0YSAmJiAobyA9IHAudXJsICs9IChibi50
ZXN0KG8pID8gIiYiIDogIj8iKSArIHAuZGF0YSwgZGVsZXRlIHAuZGF0YSksIHAuY2FjaGUgPT09
ICExICYmIChwLnVybCA9IHduLnRlc3QobykgPyBvLnJlcGxhY2Uod24sICIkMV89IiArIHZuKysp
IDogbyArIChibi50ZXN0KG8pID8gIiYiIDogIj8iKSArICJfPSIgKyB2bisrKSksCisgICAgICAg
ICAgICBwLmlmTW9kaWZpZWQgJiYgKGIubGFzdE1vZGlmaWVkW29dICYmIE4uc2V0UmVxdWVzdEhl
YWRlcigiSWYtTW9kaWZpZWQtU2luY2UiLCBiLmxhc3RNb2RpZmllZFtvXSksIGIuZXRhZ1tvXSAm
JiBOLnNldFJlcXVlc3RIZWFkZXIoIklmLU5vbmUtTWF0Y2giLCBiLmV0YWdbb10pKSwKKyAgICAg
ICAgICAgIChwLmRhdGEgJiYgcC5oYXNDb250ZW50ICYmIHAuY29udGVudFR5cGUgIT09ICExIHx8
IG4uY29udGVudFR5cGUpICYmIE4uc2V0UmVxdWVzdEhlYWRlcigiQ29udGVudC1UeXBlIiwgcC5j
b250ZW50VHlwZSksCisgICAgICAgICAgICBOLnNldFJlcXVlc3RIZWFkZXIoIkFjY2VwdCIsIHAu
ZGF0YVR5cGVzWzBdICYmIHAuYWNjZXB0c1twLmRhdGFUeXBlc1swXV0gPyBwLmFjY2VwdHNbcC5k
YXRhVHlwZXNbMF1dICsgKCIqIiAhPT0gcC5kYXRhVHlwZXNbMF0gPyAiLCAiICsgRG4gKyAiOyBx
PTAuMDEiIDogIiIpIDogcC5hY2NlcHRzWyIqIl0pOwogICAgICAgICAgICAgZm9yIChpIGluIHAu
aGVhZGVycykKICAgICAgICAgICAgICAgICBOLnNldFJlcXVlc3RIZWFkZXIoaSwgcC5oZWFkZXJz
W2ldKTsKICAgICAgICAgICAgIGlmIChwLmJlZm9yZVNlbmQgJiYgKHAuYmVmb3JlU2VuZC5jYWxs
KGYsIE4sIHApID09PSAhMSB8fCAyID09PSB4KSkKQEAgLTMyMTksMTEgKzM0NDYsMTQgQEAKICAg
ICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgTltpXShwW2ldKTsKICAgICAgICAgICAgIGlm
IChsID0gcW4oam4sIHAsIG4sIE4pKSB7Ci0gICAgICAgICAgICAgICAgTi5yZWFkeVN0YXRlID0g
MSwgdSAmJiBkLnRyaWdnZXIoImFqYXhTZW5kIiwgW04sIHBdKSwgcC5hc3luYyAmJiBwLnRpbWVv
dXQgPiAwICYmIChzID0gc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBO
LnJlYWR5U3RhdGUgPSAxLAorICAgICAgICAgICAgICAgIHUgJiYgZC50cmlnZ2VyKCJhamF4U2Vu
ZCIsIFtOLCBwXSksCisgICAgICAgICAgICAgICAgcC5hc3luYyAmJiBwLnRpbWVvdXQgPiAwICYm
IChzID0gc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgTi5hYm9y
dCgidGltZW91dCIpCiAgICAgICAgICAgICAgICAgfSwgcC50aW1lb3V0KSk7CiAgICAgICAgICAg
ICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgeCA9IDEsIGwuc2VuZCh5LCBrKQorICAg
ICAgICAgICAgICAgICAgICB4ID0gMSwKKyAgICAgICAgICAgICAgICAgICAgbC5zZW5kKHksIGsp
CiAgICAgICAgICAgICAgICAgfSBjYXRjaCAoQykgewogICAgICAgICAgICAgICAgICAgICBpZiAo
ISgyID4geCkpCiAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBDOwpAQCAtMzI2MCw3ICsz
NDkwLDggQEAKICAgICAgICAgZm9yIChzIGluIGMpCiAgICAgICAgICAgICBzIGluIHIgJiYgKG5b
Y1tzXV0gPSByW3NdKTsKICAgICAgICAgd2hpbGUgKCIqIiA9PT0gbFswXSkKLSAgICAgICAgICAg
IGwuc2hpZnQoKSwgbyA9PT0gdCAmJiAobyA9IGUubWltZVR5cGUgfHwgbi5nZXRSZXNwb25zZUhl
YWRlcigiQ29udGVudC1UeXBlIikpOworICAgICAgICAgICAgbC5zaGlmdCgpLAorICAgICAgICAg
ICAgbyA9PT0gdCAmJiAobyA9IGUubWltZVR5cGUgfHwgbi5nZXRSZXNwb25zZUhlYWRlcigiQ29u
dGVudC1UeXBlIikpOwogICAgICAgICBpZiAobykKICAgICAgICAgICAgIGZvciAocyBpbiB1KQog
ICAgICAgICAgICAgICAgIGlmICh1W3NdICYmIHVbc10udGVzdChvKSkgewpAQCAtMzMzNCwxNyAr
MzU2NSwyNSBAQAogICAgICAgICAgICAgICAgIHJldHVybiBiLmdsb2JhbEV2YWwoZSksIGUKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQotICAgIH0pLCBiLmFqYXhQcmVmaWx0ZXIoInNjcmlwdCIs
IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgZS5jYWNoZSA9PT0gdCAmJiAoZS5jYWNoZSA9ICExKSwg
ZS5jcm9zc0RvbWFpbiAmJiAoZS50eXBlID0gIkdFVCIsIGUuZ2xvYmFsID0gITEpCi0gICAgfSks
IGIuYWpheFRyYW5zcG9ydCgic2NyaXB0IiwgZnVuY3Rpb24oZSkgeworICAgIH0pLAorICAgIGIu
YWpheFByZWZpbHRlcigic2NyaXB0IiwgZnVuY3Rpb24oZSkgeworICAgICAgICBlLmNhY2hlID09
PSB0ICYmIChlLmNhY2hlID0gITEpLAorICAgICAgICBlLmNyb3NzRG9tYWluICYmIChlLnR5cGUg
PSAiR0VUIiwgZS5nbG9iYWwgPSAhMSkKKyAgICB9KSwKKyAgICBiLmFqYXhUcmFuc3BvcnQoInNj
cmlwdCIsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgaWYgKGUuY3Jvc3NEb21haW4pIHsKICAgICAg
ICAgICAgIHZhciBuLAogICAgICAgICAgICAgICAgIHIgPSBvLmhlYWQgfHwgYigiaGVhZCIpWzBd
IHx8IG8uZG9jdW1lbnRFbGVtZW50OwogICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAg
ICAgICBzZW5kOiBmdW5jdGlvbih0LCBpKSB7Ci0gICAgICAgICAgICAgICAgICAgIG4gPSBvLmNy
ZWF0ZUVsZW1lbnQoInNjcmlwdCIpLCBuLmFzeW5jID0gITAsIGUuc2NyaXB0Q2hhcnNldCAmJiAo
bi5jaGFyc2V0ID0gZS5zY3JpcHRDaGFyc2V0KSwgbi5zcmMgPSBlLnVybCwgbi5vbmxvYWQgPSBu
Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKGUsIHQpIHsKKyAgICAgICAgICAgICAgICAg
ICAgbiA9IG8uY3JlYXRlRWxlbWVudCgic2NyaXB0IiksCisgICAgICAgICAgICAgICAgICAgIG4u
YXN5bmMgPSAhMCwKKyAgICAgICAgICAgICAgICAgICAgZS5zY3JpcHRDaGFyc2V0ICYmIChuLmNo
YXJzZXQgPSBlLnNjcmlwdENoYXJzZXQpLAorICAgICAgICAgICAgICAgICAgICBuLnNyYyA9IGUu
dXJsLAorICAgICAgICAgICAgICAgICAgICBuLm9ubG9hZCA9IG4ub25yZWFkeXN0YXRlY2hhbmdl
ID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgKHQgfHwgIW4ucmVh
ZHlTdGF0ZSB8fCAvbG9hZGVkfGNvbXBsZXRlLy50ZXN0KG4ucmVhZHlTdGF0ZSkpICYmIChuLm9u
bG9hZCA9IG4ub25yZWFkeXN0YXRlY2hhbmdlID0gbnVsbCwgbi5wYXJlbnROb2RlICYmIG4ucGFy
ZW50Tm9kZS5yZW1vdmVDaGlsZChuKSwgbiA9IG51bGwsIHQgfHwgaSgyMDAsICJzdWNjZXNzIikp
Ci0gICAgICAgICAgICAgICAgICAgIH0sIHIuaW5zZXJ0QmVmb3JlKG4sIHIuZmlyc3RDaGlsZCkK
KyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgci5pbnNlcnRCZWZv
cmUobiwgci5maXJzdENoaWxkKQogICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAg
YWJvcnQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICBuICYmIG4ub25sb2FkKHQs
ICEwKQpAQCAtMzM2MCw3ICszNTk5LDggQEAKICAgICAgICAgICAgIHZhciBlID0gT24ucG9wKCkg
fHwgYi5leHBhbmRvICsgIl8iICsgdm4rKzsKICAgICAgICAgICAgIHJldHVybiB0aGlzW2VdID0g
ITAsIGUKICAgICAgICAgfQotICAgIH0pLCBiLmFqYXhQcmVmaWx0ZXIoImpzb24ganNvbnAiLCBm
dW5jdGlvbihuLCByLCBpKSB7CisgICAgfSksCisgICAgYi5hamF4UHJlZmlsdGVyKCJqc29uIGpz
b25wIiwgZnVuY3Rpb24obiwgciwgaSkgewogICAgICAgICB2YXIgbywKICAgICAgICAgICAgIGEs
CiAgICAgICAgICAgICBzLApAQCAtMzM3MCw3ICszNjEwLDEwIEBACiAgICAgICAgIH0sIG4uZGF0
YVR5cGVzWzBdID0gImpzb24iLCBhID0gZVtvXSwgZVtvXSA9IGZ1bmN0aW9uKCkgewogICAgICAg
ICAgICAgcyA9IGFyZ3VtZW50cwogICAgICAgICB9LCBpLmFsd2F5cyhmdW5jdGlvbigpIHsKLSAg
ICAgICAgICAgIGVbb10gPSBhLCBuW29dICYmIChuLmpzb25wQ2FsbGJhY2sgPSByLmpzb25wQ2Fs
bGJhY2ssIE9uLnB1c2gobykpLCBzICYmIGIuaXNGdW5jdGlvbihhKSAmJiBhKHNbMF0pLCBzID0g
YSA9IHQKKyAgICAgICAgICAgIGVbb10gPSBhLAorICAgICAgICAgICAgbltvXSAmJiAobi5qc29u
cENhbGxiYWNrID0gci5qc29ucENhbGxiYWNrLCBPbi5wdXNoKG8pKSwKKyAgICAgICAgICAgIHMg
JiYgYi5pc0Z1bmN0aW9uKGEpICYmIGEoc1swXSksCisgICAgICAgICAgICBzID0gYSA9IHQKICAg
ICAgICAgfSksICJzY3JpcHQiKSA6IHQKICAgICB9KTsKICAgICB2YXIgUG4sCkBAIC0zMzkzLDcg
KzM2MzYsMTEgQEAKICAgICB9CiAgICAgYi5hamF4U2V0dGluZ3MueGhyID0gZS5BY3RpdmVYT2Jq
ZWN0ID8gZnVuY3Rpb24oKSB7CiAgICAgICAgIHJldHVybiAhdGhpcy5pc0xvY2FsICYmIEluKCkg
fHwgem4oKQotICAgIH0gOiBJbiwgUm4gPSBiLmFqYXhTZXR0aW5ncy54aHIoKSwgYi5zdXBwb3J0
LmNvcnMgPSAhIVJuICYmICJ3aXRoQ3JlZGVudGlhbHMiIGluIFJuLCBSbiA9IGIuc3VwcG9ydC5h
amF4ID0gISFSbiwgUm4gJiYgYi5hamF4VHJhbnNwb3J0KGZ1bmN0aW9uKG4pIHsKKyAgICB9IDog
SW4sCisgICAgUm4gPSBiLmFqYXhTZXR0aW5ncy54aHIoKSwKKyAgICBiLnN1cHBvcnQuY29ycyA9
ICEhUm4gJiYgIndpdGhDcmVkZW50aWFscyIgaW4gUm4sCisgICAgUm4gPSBiLnN1cHBvcnQuYWph
eCA9ICEhUm4sCisgICAgUm4gJiYgYi5hamF4VHJhbnNwb3J0KGZ1bmN0aW9uKG4pIHsKICAgICAg
ICAgaWYgKCFuLmNyb3NzRG9tYWluIHx8IGIuc3VwcG9ydC5jb3JzKSB7CiAgICAgICAgICAgICB2
YXIgcjsKICAgICAgICAgICAgIHJldHVybiB7CkBAIC0zNDA0LDEyICszNjUxLDE0IEBACiAgICAg
ICAgICAgICAgICAgICAgIGlmIChuLnVzZXJuYW1lID8gdS5vcGVuKG4udHlwZSwgbi51cmwsIG4u
YXN5bmMsIG4udXNlcm5hbWUsIG4ucGFzc3dvcmQpIDogdS5vcGVuKG4udHlwZSwgbi51cmwsIG4u
YXN5bmMpLCBuLnhockZpZWxkcykKICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAocyBpbiBu
LnhockZpZWxkcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1W3NdID0gbi54aHJGaWVs
ZHNbc107Ci0gICAgICAgICAgICAgICAgICAgIG4ubWltZVR5cGUgJiYgdS5vdmVycmlkZU1pbWVU
eXBlICYmIHUub3ZlcnJpZGVNaW1lVHlwZShuLm1pbWVUeXBlKSwgbi5jcm9zc0RvbWFpbiB8fCBp
WyJYLVJlcXVlc3RlZC1XaXRoIl0gfHwgKGlbIlgtUmVxdWVzdGVkLVdpdGgiXSA9ICJYTUxIdHRw
UmVxdWVzdCIpOworICAgICAgICAgICAgICAgICAgICBuLm1pbWVUeXBlICYmIHUub3ZlcnJpZGVN
aW1lVHlwZSAmJiB1Lm92ZXJyaWRlTWltZVR5cGUobi5taW1lVHlwZSksCisgICAgICAgICAgICAg
ICAgICAgIG4uY3Jvc3NEb21haW4gfHwgaVsiWC1SZXF1ZXN0ZWQtV2l0aCJdIHx8IChpWyJYLVJl
cXVlc3RlZC1XaXRoIl0gPSAiWE1MSHR0cFJlcXVlc3QiKTsKICAgICAgICAgICAgICAgICAgICAg
dHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAocyBpbiBpKQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHUuc2V0UmVxdWVzdEhlYWRlcihzLCBpW3NdKQogICAgICAgICAgICAg
ICAgICAgICB9IGNhdGNoIChsKSB7fQotICAgICAgICAgICAgICAgICAgICB1LnNlbmQobi5oYXND
b250ZW50ICYmIG4uZGF0YSB8fCBudWxsKSwgciA9IGZ1bmN0aW9uKGUsIGkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgdS5zZW5kKG4uaGFzQ29udGVudCAmJiBuLmRhdGEgfHwgbnVsbCksCisgICAg
ICAgICAgICAgICAgICAgIHIgPSBmdW5jdGlvbihlLCBpKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICB2YXIgcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGMsCkBAIC0zNDE5LDcgKzM2NjgsMTAgQEAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKHIgPSB0LCBhICYmICh1Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9
IGIubm9vcCwgJG4gJiYgZGVsZXRlIFBuW2FdKSwgaSkKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDQgIT09IHUucmVhZHlTdGF0ZSAmJiB1LmFib3J0KCk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcCA9IHt9LCBzID0gdS5zdGF0dXMsIGwgPSB1LmdldEFsbFJlc3BvbnNlSGVhZGVy
cygpLCAic3RyaW5nIiA9PSB0eXBlb2YgdS5yZXNwb25zZVRleHQgJiYgKHAudGV4dCA9IHUucmVz
cG9uc2VUZXh0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSB7fSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB1LnN0YXR1cywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSB1LmdldEFsbFJlc3BvbnNlSGVhZGVy
cygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0cmluZyIgPT0gdHlw
ZW9mIHUucmVzcG9uc2VUZXh0ICYmIChwLnRleHQgPSB1LnJlc3BvbnNlVGV4dCk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGMgPSB1LnN0YXR1c1RleHQKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGYpIHsKQEAgLTM0MzEsNyArMzY4Myw4IEBACiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaSB8fCBvKC0xLCBkKQogICAgICAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgcCAmJiBvKHMsIGMsIHAsIGwpCi0gICAg
ICAgICAgICAgICAgICAgIH0sIG4uYXN5bmMgPyA0ID09PSB1LnJlYWR5U3RhdGUgPyBzZXRUaW1l
b3V0KHIpIDogKGEgPSArK1duLCAkbiAmJiAoUG4gfHwgKFBuID0ge30sIGIoZSkudW5sb2FkKCRu
KSksIFBuW2FdID0gciksIHUub25yZWFkeXN0YXRlY2hhbmdlID0gcikgOiByKCkKKyAgICAgICAg
ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgbi5hc3luYyA/IDQgPT09IHUucmVh
ZHlTdGF0ZSA/IHNldFRpbWVvdXQocikgOiAoYSA9ICsrV24sICRuICYmIChQbiB8fCAoUG4gPSB7
fSwgYihlKS51bmxvYWQoJG4pKSwgUG5bYV0gPSByKSwgdS5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBy
KSA6IHIoKQogICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgYWJvcnQ6IGZ1bmN0
aW9uKCkgewogICAgICAgICAgICAgICAgICAgICByICYmIHIodCwgITApCkBAIC0zNDU4LDEwICsz
NzExLDE0IEBACiAgICAgICAgICAgICAgICAgaWYgKG8pIHsKICAgICAgICAgICAgICAgICAgICAg
aWYgKG4gPSArb1syXSwgciA9IG9bM10gfHwgKGIuY3NzTnVtYmVyW2VdID8gIiIgOiAicHgiKSwg
InB4IiAhPT0gciAmJiBzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBzID0gYi5jc3MoaS5l
bGVtLCBlLCAhMCkgfHwgbiB8fCAxOwotICAgICAgICAgICAgICAgICAgICAgICAgZG8gdSA9IHUg
fHwgIi41IiwgcyAvPSB1LCBiLnN0eWxlKGkuZWxlbSwgZSwgcyArIHIpOworICAgICAgICAgICAg
ICAgICAgICAgICAgZG8gdSA9IHUgfHwgIi41IiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHMg
Lz0gdSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGIuc3R5bGUoaS5lbGVtLCBlLCBzICsgcik7
CiAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAodSAhPT0gKHUgPSBpLmN1cigpIC8gYSkg
JiYgMSAhPT0gdSAmJiAtLWwpCiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAgICAgaS51bml0ID0gciwgaS5zdGFydCA9IHMsIGkuZW5kID0gb1sxXSA/IHMgKyAob1sxXSAr
IDEpICogbiA6IG4KKyAgICAgICAgICAgICAgICAgICAgaS51bml0ID0gciwKKyAgICAgICAgICAg
ICAgICAgICAgaS5zdGFydCA9IHMsCisgICAgICAgICAgICAgICAgICAgIGkuZW5kID0gb1sxXSA/
IHMgKyAob1sxXSArIDEpICogbiA6IG4KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGkKICAgICAgICAgICAgIH1dCkBAIC0zNTQ1LDcgKzM4MDIsOCBAQAogICAgICAg
ICAgICAgYTsKICAgICAgICAgZm9yIChpIGluIGUpCiAgICAgICAgICAgICBpZiAociA9IGIuY2Ft
ZWxDYXNlKGkpLCBvID0gdFtyXSwgbiA9IGVbaV0sIGIuaXNBcnJheShuKSAmJiAobyA9IG5bMV0s
IG4gPSBlW2ldID0gblswXSksIGkgIT09IHIgJiYgKGVbcl0gPSBuLCBkZWxldGUgZVtpXSksIGEg
PSBiLmNzc0hvb2tzW3JdLCBhICYmICJleHBhbmQiIGluIGEpIHsKLSAgICAgICAgICAgICAgICBu
ID0gYS5leHBhbmQobiksIGRlbGV0ZSBlW3JdOworICAgICAgICAgICAgICAgIG4gPSBhLmV4cGFu
ZChuKSwKKyAgICAgICAgICAgICAgICBkZWxldGUgZVtyXTsKICAgICAgICAgICAgICAgICBmb3Ig
KGkgaW4gbikKICAgICAgICAgICAgICAgICAgICAgaSBpbiBlIHx8IChlW2ldID0gbltpXSwgdFtp
XSA9IG8pCiAgICAgICAgICAgICB9IGVsc2UKQEAgLTM1NTgsNyArMzgxNiw5IEBACiAgICAgICAg
ICAgICAgICAgciA9IDAsCiAgICAgICAgICAgICAgICAgaSA9IGUubGVuZ3RoOwogICAgICAgICAg
ICAgZm9yICg7IGkgPiByOyByKyspCi0gICAgICAgICAgICAgICAgbiA9IGVbcl0sIFFuW25dID0g
UW5bbl0gfHwgW10sIFFuW25dLnVuc2hpZnQodCkKKyAgICAgICAgICAgICAgICBuID0gZVtyXSwK
KyAgICAgICAgICAgICAgICBRbltuXSA9IFFuW25dIHx8IFtdLAorICAgICAgICAgICAgICAgIFFu
W25dLnVuc2hpZnQodCkKICAgICAgICAgfSwKICAgICAgICAgcHJlZmlsdGVyOiBmdW5jdGlvbihl
LCB0KSB7CiAgICAgICAgICAgICB0ID8gR24udW5zaGlmdChlKSA6IEduLnB1c2goZSkKQEAgLTM1
ODMsMTAgKzM4NDMsMTUgQEAKICAgICAgICAgICAgIGMudW5xdWV1ZWQgfHwgcCgpCiAgICAgICAg
IH0pLCBjLnVucXVldWVkKyssIGYuYWx3YXlzKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgZi5h
bHdheXMoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgYy51bnF1ZXVlZC0tLCBiLnF1ZXVl
KGUsICJmeCIpLmxlbmd0aCB8fCBjLmVtcHR5LmZpcmUoKQorICAgICAgICAgICAgICAgIGMudW5x
dWV1ZWQtLSwKKyAgICAgICAgICAgICAgICBiLnF1ZXVlKGUsICJmeCIpLmxlbmd0aCB8fCBjLmVt
cHR5LmZpcmUoKQogICAgICAgICAgICAgfSkKLSAgICAgICAgfSkpLCAxID09PSBlLm5vZGVUeXBl
ICYmICgiaGVpZ2h0IiBpbiB0IHx8ICJ3aWR0aCIgaW4gdCkgJiYgKG4ub3ZlcmZsb3cgPSBbZC5v
dmVyZmxvdywgZC5vdmVyZmxvd1gsIGQub3ZlcmZsb3dZXSwgImlubGluZSIgPT09IGIuY3NzKGUs
ICJkaXNwbGF5IikgJiYgIm5vbmUiID09PSBiLmNzcyhlLCAiZmxvYXQiKSAmJiAoYi5zdXBwb3J0
LmlubGluZUJsb2NrTmVlZHNMYXlvdXQgJiYgImlubGluZSIgIT09IHVuKGUubm9kZU5hbWUpID8g
ZC56b29tID0gMSA6IGQuZGlzcGxheSA9ICJpbmxpbmUtYmxvY2siKSksIG4ub3ZlcmZsb3cgJiYg
KGQub3ZlcmZsb3cgPSAiaGlkZGVuIiwgYi5zdXBwb3J0LnNocmlua1dyYXBCbG9ja3MgfHwgZi5h
bHdheXMoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBkLm92ZXJmbG93ID0gbi5vdmVyZmxvd1sw
XSwgZC5vdmVyZmxvd1ggPSBuLm92ZXJmbG93WzFdLCBkLm92ZXJmbG93WSA9IG4ub3ZlcmZsb3db
Ml0KKyAgICAgICAgfSkpLAorICAgICAgICAxID09PSBlLm5vZGVUeXBlICYmICgiaGVpZ2h0IiBp
biB0IHx8ICJ3aWR0aCIgaW4gdCkgJiYgKG4ub3ZlcmZsb3cgPSBbZC5vdmVyZmxvdywgZC5vdmVy
Zmxvd1gsIGQub3ZlcmZsb3dZXSwgImlubGluZSIgPT09IGIuY3NzKGUsICJkaXNwbGF5IikgJiYg
Im5vbmUiID09PSBiLmNzcyhlLCAiZmxvYXQiKSAmJiAoYi5zdXBwb3J0LmlubGluZUJsb2NrTmVl
ZHNMYXlvdXQgJiYgImlubGluZSIgIT09IHVuKGUubm9kZU5hbWUpID8gZC56b29tID0gMSA6IGQu
ZGlzcGxheSA9ICJpbmxpbmUtYmxvY2siKSksCisgICAgICAgIG4ub3ZlcmZsb3cgJiYgKGQub3Zl
cmZsb3cgPSAiaGlkZGVuIiwgYi5zdXBwb3J0LnNocmlua1dyYXBCbG9ja3MgfHwgZi5hbHdheXMo
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBkLm92ZXJmbG93ID0gbi5vdmVyZmxvd1swXSwKKyAg
ICAgICAgICAgIGQub3ZlcmZsb3dYID0gbi5vdmVyZmxvd1sxXSwKKyAgICAgICAgICAgIGQub3Zl
cmZsb3dZID0gbi5vdmVyZmxvd1syXQogICAgICAgICB9KSk7CiAgICAgICAgIGZvciAoaSBpbiB0
KQogICAgICAgICAgICAgaWYgKGEgPSB0W2ldLCBWbi5leGVjKGEpKSB7CkBAIC0zNTk1LDI1ICsz
ODYwLDM5IEBACiAgICAgICAgICAgICAgICAgZy5wdXNoKGkpCiAgICAgICAgICAgICB9CiAgICAg
ICAgIGlmIChvID0gZy5sZW5ndGgpIHsKLSAgICAgICAgICAgIHMgPSBiLl9kYXRhKGUsICJmeHNo
b3ciKSB8fCBiLl9kYXRhKGUsICJmeHNob3ciLCB7fSksICJoaWRkZW4iIGluIHMgJiYgKG0gPSBz
LmhpZGRlbiksIHUgJiYgKHMuaGlkZGVuID0gIW0pLCBtID8gYihlKS5zaG93KCkgOiBmLmRvbmUo
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBzID0gYi5fZGF0YShlLCAiZnhzaG93IikgfHwgYi5f
ZGF0YShlLCAiZnhzaG93Iiwge30pLAorICAgICAgICAgICAgImhpZGRlbiIgaW4gcyAmJiAobSA9
IHMuaGlkZGVuKSwKKyAgICAgICAgICAgIHUgJiYgKHMuaGlkZGVuID0gIW0pLAorICAgICAgICAg
ICAgbSA/IGIoZSkuc2hvdygpIDogZi5kb25lKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAg
IGIoZSkuaGlkZSgpCi0gICAgICAgICAgICB9KSwgZi5kb25lKGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgfSksCisgICAgICAgICAgICBmLmRvbmUoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAg
ICAgdmFyIHQ7CiAgICAgICAgICAgICAgICAgYi5fcmVtb3ZlRGF0YShlLCAiZnhzaG93Iik7CiAg
ICAgICAgICAgICAgICAgZm9yICh0IGluIGgpCiAgICAgICAgICAgICAgICAgICAgIGIuc3R5bGUo
ZSwgdCwgaFt0XSkKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgZm9yIChpID0gMDsgbyA+
IGk7IGkrKykKLSAgICAgICAgICAgICAgICByID0gZ1tpXSwgbCA9IGYuY3JlYXRlVHdlZW4ociwg
bSA/IHNbcl0gOiAwKSwgaFtyXSA9IHNbcl0gfHwgYi5zdHlsZShlLCByKSwgciBpbiBzIHx8IChz
W3JdID0gbC5zdGFydCwgbSAmJiAobC5lbmQgPSBsLnN0YXJ0LCBsLnN0YXJ0ID0gIndpZHRoIiA9
PT0gciB8fCAiaGVpZ2h0IiA9PT0gciA/IDEgOiAwKSkKKyAgICAgICAgICAgICAgICByID0gZ1tp
XSwKKyAgICAgICAgICAgICAgICBsID0gZi5jcmVhdGVUd2VlbihyLCBtID8gc1tyXSA6IDApLAor
ICAgICAgICAgICAgICAgIGhbcl0gPSBzW3JdIHx8IGIuc3R5bGUoZSwgciksCisgICAgICAgICAg
ICAgICAgciBpbiBzIHx8IChzW3JdID0gbC5zdGFydCwgbSAmJiAobC5lbmQgPSBsLnN0YXJ0LCBs
LnN0YXJ0ID0gIndpZHRoIiA9PT0gciB8fCAiaGVpZ2h0IiA9PT0gciA/IDEgOiAwKSkKICAgICAg
ICAgfQogICAgIH0KICAgICBmdW5jdGlvbiBycihlLCB0LCBuLCByLCBpKSB7CiAgICAgICAgIHJl
dHVybiBuZXcgcnIucHJvdG90eXBlLmluaXQoZSwgdCwgbiwgciwgaSkKICAgICB9Ci0gICAgYi5U
d2VlbiA9IHJyLCByci5wcm90b3R5cGUgPSB7CisgICAgYi5Ud2VlbiA9IHJyLAorICAgIHJyLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgY29uc3RydWN0b3I6IHJyLAogICAgICAgICBpbml0OiBmdW5j
dGlvbihlLCB0LCBuLCByLCBpLCBvKSB7Ci0gICAgICAgICAgICB0aGlzLmVsZW0gPSBlLCB0aGlz
LnByb3AgPSBuLCB0aGlzLmVhc2luZyA9IGkgfHwgInN3aW5nIiwgdGhpcy5vcHRpb25zID0gdCwg
dGhpcy5zdGFydCA9IHRoaXMubm93ID0gdGhpcy5jdXIoKSwgdGhpcy5lbmQgPSByLCB0aGlzLnVu
aXQgPSBvIHx8IChiLmNzc051bWJlcltuXSA/ICIiIDogInB4IikKKyAgICAgICAgICAgIHRoaXMu
ZWxlbSA9IGUsCisgICAgICAgICAgICB0aGlzLnByb3AgPSBuLAorICAgICAgICAgICAgdGhpcy5l
YXNpbmcgPSBpIHx8ICJzd2luZyIsCisgICAgICAgICAgICB0aGlzLm9wdGlvbnMgPSB0LAorICAg
ICAgICAgICAgdGhpcy5zdGFydCA9IHRoaXMubm93ID0gdGhpcy5jdXIoKSwKKyAgICAgICAgICAg
IHRoaXMuZW5kID0gciwKKyAgICAgICAgICAgIHRoaXMudW5pdCA9IG8gfHwgKGIuY3NzTnVtYmVy
W25dID8gIiIgOiAicHgiKQogICAgICAgICB9LAogICAgICAgICBjdXI6IGZ1bmN0aW9uKCkgewog
ICAgICAgICAgICAgdmFyIGUgPSByci5wcm9wSG9va3NbdGhpcy5wcm9wXTsKQEAgLTM2MjQsNyAr
MzkwMyw5IEBACiAgICAgICAgICAgICAgICAgbiA9IHJyLnByb3BIb29rc1t0aGlzLnByb3BdOwog
ICAgICAgICAgICAgcmV0dXJuIHRoaXMucG9zID0gdCA9IHRoaXMub3B0aW9ucy5kdXJhdGlvbiA/
IGIuZWFzaW5nW3RoaXMuZWFzaW5nXShlLCB0aGlzLm9wdGlvbnMuZHVyYXRpb24gKiBlLCAwLCAx
LCB0aGlzLm9wdGlvbnMuZHVyYXRpb24pIDogZSwgdGhpcy5ub3cgPSAodGhpcy5lbmQgLSB0aGlz
LnN0YXJ0KSAqIHQgKyB0aGlzLnN0YXJ0LCB0aGlzLm9wdGlvbnMuc3RlcCAmJiB0aGlzLm9wdGlv
bnMuc3RlcC5jYWxsKHRoaXMuZWxlbSwgdGhpcy5ub3csIHRoaXMpLCBuICYmIG4uc2V0ID8gbi5z
ZXQodGhpcykgOiByci5wcm9wSG9va3MuX2RlZmF1bHQuc2V0KHRoaXMpLCB0aGlzCiAgICAgICAg
IH0KLSAgICB9LCByci5wcm90b3R5cGUuaW5pdC5wcm90b3R5cGUgPSByci5wcm90b3R5cGUsIHJy
LnByb3BIb29rcyA9IHsKKyAgICB9LAorICAgIHJyLnByb3RvdHlwZS5pbml0LnByb3RvdHlwZSA9
IHJyLnByb3RvdHlwZSwKKyAgICByci5wcm9wSG9va3MgPSB7CiAgICAgICAgIF9kZWZhdWx0OiB7
CiAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICB2YXIgdDsK
QEAgLTM2MzQsMTYgKzM5MTUsMTkgQEAKICAgICAgICAgICAgICAgICBiLmZ4LnN0ZXBbZS5wcm9w
XSA/IGIuZnguc3RlcFtlLnByb3BdKGUpIDogZS5lbGVtLnN0eWxlICYmIChudWxsICE9IGUuZWxl
bS5zdHlsZVtiLmNzc1Byb3BzW2UucHJvcF1dIHx8IGIuY3NzSG9va3NbZS5wcm9wXSkgPyBiLnN0
eWxlKGUuZWxlbSwgZS5wcm9wLCBlLm5vdyArIGUudW5pdCkgOiBlLmVsZW1bZS5wcm9wXSA9IGUu
bm93CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICB9LCByci5wcm9wSG9va3Muc2Nyb2xs
VG9wID0gcnIucHJvcEhvb2tzLnNjcm9sbExlZnQgPSB7CisgICAgfSwKKyAgICByci5wcm9wSG9v
a3Muc2Nyb2xsVG9wID0gcnIucHJvcEhvb2tzLnNjcm9sbExlZnQgPSB7CiAgICAgICAgIHNldDog
ZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgZS5lbGVtLm5vZGVUeXBlICYmIGUuZWxlbS5wYXJl
bnROb2RlICYmIChlLmVsZW1bZS5wcm9wXSA9IGUubm93KQogICAgICAgICB9Ci0gICAgfSwgYi5l
YWNoKFsidG9nZ2xlIiwgInNob3ciLCAiaGlkZSJdLCBmdW5jdGlvbihlLCB0KSB7CisgICAgfSwK
KyAgICBiLmVhY2goWyJ0b2dnbGUiLCAic2hvdyIsICJoaWRlIl0sIGZ1bmN0aW9uKGUsIHQpIHsK
ICAgICAgICAgdmFyIG4gPSBiLmZuW3RdOwogICAgICAgICBiLmZuW3RdID0gZnVuY3Rpb24oZSwg
ciwgaSkgewogICAgICAgICAgICAgcmV0dXJuIG51bGwgPT0gZSB8fCAiYm9vbGVhbiIgPT0gdHlw
ZW9mIGUgPyBuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgOiB0aGlzLmFuaW1hdGUoaXIodCwgITAp
LCBlLCByLCBpKQogICAgICAgICB9Ci0gICAgfSksIGIuZm4uZXh0ZW5kKHsKKyAgICB9KSwKKyAg
ICBiLmZuLmV4dGVuZCh7CiAgICAgICAgIGZhZGVUbzogZnVuY3Rpb24oZSwgdCwgbiwgcikgewog
ICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyKG5uKS5jc3MoIm9wYWNpdHkiLCAwKS5zaG93
KCkuZW5kKCkuYW5pbWF0ZSh7CiAgICAgICAgICAgICAgICAgb3BhY2l0eTogdApAQCAtMzY1Niwx
NCArMzk0MCwxNiBAQAogICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGVyKHRoaXMsIGIuZXh0
ZW5kKHt9LCBlKSwgbyk7CiAgICAgICAgICAgICAgICAgICAgIGEuZmluaXNoID0gZnVuY3Rpb24o
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICB0LnN0b3AoITApCi0gICAgICAgICAgICAgICAg
ICAgIH0sIChpIHx8IGIuX2RhdGEodGhpcywgImZpbmlzaCIpKSAmJiB0LnN0b3AoITApCisgICAg
ICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgIChpIHx8IGIuX2RhdGEodGhp
cywgImZpbmlzaCIpKSAmJiB0LnN0b3AoITApCiAgICAgICAgICAgICAgICAgfTsKICAgICAgICAg
ICAgIHJldHVybiBhLmZpbmlzaCA9IGEsIGkgfHwgby5xdWV1ZSA9PT0gITEgPyB0aGlzLmVhY2go
YSkgOiB0aGlzLnF1ZXVlKG8ucXVldWUsIGEpCiAgICAgICAgIH0sCiAgICAgICAgIHN0b3A6IGZ1
bmN0aW9uKGUsIG4sIHIpIHsKICAgICAgICAgICAgIHZhciBpID0gZnVuY3Rpb24oZSkgewogICAg
ICAgICAgICAgICAgIHZhciB0ID0gZS5zdG9wOwotICAgICAgICAgICAgICAgIGRlbGV0ZSBlLnN0
b3AsIHQocikKKyAgICAgICAgICAgICAgICBkZWxldGUgZS5zdG9wLAorICAgICAgICAgICAgICAg
IHQocikKICAgICAgICAgICAgIH07CiAgICAgICAgICAgICByZXR1cm4gInN0cmluZyIgIT0gdHlw
ZW9mIGUgJiYgKHIgPSBuLCBuID0gZSwgZSA9IHQpLCBuICYmIGUgIT09ICExICYmIHRoaXMucXVl
dWUoZSB8fCAiZngiLCBbXSksIHRoaXMuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAg
ICB2YXIgdCA9ICEwLApAQCAtMzcwMyw3ICszOTg5LDggQEAKICAgICAgICAgICAgIH0sCiAgICAg
ICAgICAgICBpID0gMDsKICAgICAgICAgZm9yICh0ID0gdCA/IDEgOiAwOyA0ID4gaTsgaSArPSAy
IC0gdCkKLSAgICAgICAgICAgIG4gPSBadFtpXSwgclsibWFyZ2luIiArIG5dID0gclsicGFkZGlu
ZyIgKyBuXSA9IGU7CisgICAgICAgICAgICBuID0gWnRbaV0sCisgICAgICAgICAgICByWyJtYXJn
aW4iICsgbl0gPSByWyJwYWRkaW5nIiArIG5dID0gZTsKICAgICAgICAgcmV0dXJuIHQgJiYgKHIu
b3BhY2l0eSA9IHIud2lkdGggPSBlKSwgcgogICAgIH0KICAgICBiLmVhY2goewpAQCAtMzcyMyw0
NCArNDAxMCw2MSBAQAogICAgICAgICBiLmZuW2VdID0gZnVuY3Rpb24oZSwgbiwgcikgewogICAg
ICAgICAgICAgcmV0dXJuIHRoaXMuYW5pbWF0ZSh0LCBlLCBuLCByKQogICAgICAgICB9Ci0gICAg
fSksIGIuc3BlZWQgPSBmdW5jdGlvbihlLCB0LCBuKSB7CisgICAgfSksCisgICAgYi5zcGVlZCA9
IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgdmFyIHIgPSBlICYmICJvYmplY3QiID09IHR5
cGVvZiBlID8gYi5leHRlbmQoe30sIGUpIDogewogICAgICAgICAgICAgY29tcGxldGU6IG4gfHwg
IW4gJiYgdCB8fCBiLmlzRnVuY3Rpb24oZSkgJiYgZSwKICAgICAgICAgICAgIGR1cmF0aW9uOiBl
LAogICAgICAgICAgICAgZWFzaW5nOiBuICYmIHQgfHwgdCAmJiAhYi5pc0Z1bmN0aW9uKHQpICYm
IHQKICAgICAgICAgfTsKICAgICAgICAgcmV0dXJuIHIuZHVyYXRpb24gPSBiLmZ4Lm9mZiA/IDAg
OiAibnVtYmVyIiA9PSB0eXBlb2Ygci5kdXJhdGlvbiA/IHIuZHVyYXRpb24gOiByLmR1cmF0aW9u
IGluIGIuZnguc3BlZWRzID8gYi5meC5zcGVlZHNbci5kdXJhdGlvbl0gOiBiLmZ4LnNwZWVkcy5f
ZGVmYXVsdCwgKG51bGwgPT0gci5xdWV1ZSB8fCByLnF1ZXVlID09PSAhMCkgJiYgKHIucXVldWUg
PSAiZngiKSwgci5vbGQgPSByLmNvbXBsZXRlLCByLmNvbXBsZXRlID0gZnVuY3Rpb24oKSB7Ci0g
ICAgICAgICAgICBiLmlzRnVuY3Rpb24oci5vbGQpICYmIHIub2xkLmNhbGwodGhpcyksIHIucXVl
dWUgJiYgYi5kZXF1ZXVlKHRoaXMsIHIucXVldWUpCisgICAgICAgICAgICBiLmlzRnVuY3Rpb24o
ci5vbGQpICYmIHIub2xkLmNhbGwodGhpcyksCisgICAgICAgICAgICByLnF1ZXVlICYmIGIuZGVx
dWV1ZSh0aGlzLCByLnF1ZXVlKQogICAgICAgICB9LCByCi0gICAgfSwgYi5lYXNpbmcgPSB7Cisg
ICAgfSwKKyAgICBiLmVhc2luZyA9IHsKICAgICAgICAgbGluZWFyOiBmdW5jdGlvbihlKSB7CiAg
ICAgICAgICAgICByZXR1cm4gZQogICAgICAgICB9LAogICAgICAgICBzd2luZzogZnVuY3Rpb24o
ZSkgewogICAgICAgICAgICAgcmV0dXJuIC41IC0gTWF0aC5jb3MoZSAqIE1hdGguUEkpIC8gMgog
ICAgICAgICB9Ci0gICAgfSwgYi50aW1lcnMgPSBbXSwgYi5meCA9IHJyLnByb3RvdHlwZS5pbml0
LCBiLmZ4LnRpY2sgPSBmdW5jdGlvbigpIHsKKyAgICB9LAorICAgIGIudGltZXJzID0gW10sCisg
ICAgYi5meCA9IHJyLnByb3RvdHlwZS5pbml0LAorICAgIGIuZngudGljayA9IGZ1bmN0aW9uKCkg
ewogICAgICAgICB2YXIgZSwKICAgICAgICAgICAgIG4gPSBiLnRpbWVycywKICAgICAgICAgICAg
IHIgPSAwOwogICAgICAgICBmb3IgKFhuID0gYi5ub3coKTsgbi5sZW5ndGggPiByOyByKyspCi0g
ICAgICAgICAgICBlID0gbltyXSwgZSgpIHx8IG5bcl0gIT09IGUgfHwgbi5zcGxpY2Uoci0tLCAx
KTsKLSAgICAgICAgbi5sZW5ndGggfHwgYi5meC5zdG9wKCksIFhuID0gdAotICAgIH0sIGIuZngu
dGltZXIgPSBmdW5jdGlvbihlKSB7CisgICAgICAgICAgICBlID0gbltyXSwKKyAgICAgICAgICAg
IGUoKSB8fCBuW3JdICE9PSBlIHx8IG4uc3BsaWNlKHItLSwgMSk7CisgICAgICAgIG4ubGVuZ3Ro
IHx8IGIuZnguc3RvcCgpLAorICAgICAgICBYbiA9IHQKKyAgICB9LAorICAgIGIuZngudGltZXIg
PSBmdW5jdGlvbihlKSB7CiAgICAgICAgIGUoKSAmJiBiLnRpbWVycy5wdXNoKGUpICYmIGIuZngu
c3RhcnQoKQotICAgIH0sIGIuZnguaW50ZXJ2YWwgPSAxMywgYi5meC5zdGFydCA9IGZ1bmN0aW9u
KCkgeworICAgIH0sCisgICAgYi5meC5pbnRlcnZhbCA9IDEzLAorICAgIGIuZnguc3RhcnQgPSBm
dW5jdGlvbigpIHsKICAgICAgICAgVW4gfHwgKFVuID0gc2V0SW50ZXJ2YWwoYi5meC50aWNrLCBi
LmZ4LmludGVydmFsKSkKLSAgICB9LCBiLmZ4LnN0b3AgPSBmdW5jdGlvbigpIHsKLSAgICAgICAg
Y2xlYXJJbnRlcnZhbChVbiksIFVuID0gbnVsbAotICAgIH0sIGIuZnguc3BlZWRzID0geworICAg
IH0sCisgICAgYi5meC5zdG9wID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGNsZWFySW50ZXJ2YWwo
VW4pLAorICAgICAgICBVbiA9IG51bGwKKyAgICB9LAorICAgIGIuZnguc3BlZWRzID0gewogICAg
ICAgICBzbG93OiA2MDAsCiAgICAgICAgIGZhc3Q6IDIwMCwKICAgICAgICAgX2RlZmF1bHQ6IDQw
MAotICAgIH0sIGIuZnguc3RlcCA9IHt9LCBiLmV4cHIgJiYgYi5leHByLmZpbHRlcnMgJiYgKGIu
ZXhwci5maWx0ZXJzLmFuaW1hdGVkID0gZnVuY3Rpb24oZSkgeworICAgIH0sCisgICAgYi5meC5z
dGVwID0ge30sCisgICAgYi5leHByICYmIGIuZXhwci5maWx0ZXJzICYmIChiLmV4cHIuZmlsdGVy
cy5hbmltYXRlZCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgcmV0dXJuIGIuZ3JlcChiLnRpbWVy
cywgZnVuY3Rpb24odCkgewogICAgICAgICAgICAgcmV0dXJuIGUgPT09IHQuZWxlbQogICAgICAg
ICB9KS5sZW5ndGgKLSAgICB9KSwgYi5mbi5vZmZzZXQgPSBmdW5jdGlvbihlKSB7CisgICAgfSks
CisgICAgYi5mbi5vZmZzZXQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgIGlmIChhcmd1bWVudHMu
bGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJuIGUgPT09IHQgPyB0aGlzIDogdGhpcy5lYWNoKGZ1
bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICBiLm9mZnNldC5zZXRPZmZzZXQodGhpcywgZSwg
dCkKQEAgLTM3NzgsNyArNDA4Miw4IEBACiAgICAgICAgICAgICAgICAgdG9wOiBvLnRvcCArIChy
LnBhZ2VZT2Zmc2V0IHx8IG4uc2Nyb2xsVG9wKSAtIChuLmNsaWVudFRvcCB8fCAwKSwKICAgICAg
ICAgICAgICAgICBsZWZ0OiBvLmxlZnQgKyAoci5wYWdlWE9mZnNldCB8fCBuLnNjcm9sbExlZnQp
IC0gKG4uY2xpZW50TGVmdCB8fCAwKQogICAgICAgICAgICAgfSkgOiBvCi0gICAgfSwgYi5vZmZz
ZXQgPSB7CisgICAgfSwKKyAgICBiLm9mZnNldCA9IHsKICAgICAgICAgc2V0T2Zmc2V0OiBmdW5j
dGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICB2YXIgciA9IGIuY3NzKGUsICJwb3NpdGlvbiIp
OwogICAgICAgICAgICAgInN0YXRpYyIgPT09IHIgJiYgKGUuc3R5bGUucG9zaXRpb24gPSAicmVs
YXRpdmUiKTsKQEAgLTM3OTEsOSArNDA5NiwxNCBAQAogICAgICAgICAgICAgICAgIGMgPSB7fSwK
ICAgICAgICAgICAgICAgICBwLAogICAgICAgICAgICAgICAgIGY7Ci0gICAgICAgICAgICB1ID8g
KGMgPSBpLnBvc2l0aW9uKCksIHAgPSBjLnRvcCwgZiA9IGMubGVmdCkgOiAocCA9IHBhcnNlRmxv
YXQoYSkgfHwgMCwgZiA9IHBhcnNlRmxvYXQocykgfHwgMCksIGIuaXNGdW5jdGlvbih0KSAmJiAo
dCA9IHQuY2FsbChlLCBuLCBvKSksIG51bGwgIT0gdC50b3AgJiYgKGwudG9wID0gdC50b3AgLSBv
LnRvcCArIHApLCBudWxsICE9IHQubGVmdCAmJiAobC5sZWZ0ID0gdC5sZWZ0IC0gby5sZWZ0ICsg
ZiksICJ1c2luZyIgaW4gdCA/IHQudXNpbmcuY2FsbChlLCBsKSA6IGkuY3NzKGwpCisgICAgICAg
ICAgICB1ID8gKGMgPSBpLnBvc2l0aW9uKCksIHAgPSBjLnRvcCwgZiA9IGMubGVmdCkgOiAocCA9
IHBhcnNlRmxvYXQoYSkgfHwgMCwgZiA9IHBhcnNlRmxvYXQocykgfHwgMCksCisgICAgICAgICAg
ICBiLmlzRnVuY3Rpb24odCkgJiYgKHQgPSB0LmNhbGwoZSwgbiwgbykpLAorICAgICAgICAgICAg
bnVsbCAhPSB0LnRvcCAmJiAobC50b3AgPSB0LnRvcCAtIG8udG9wICsgcCksCisgICAgICAgICAg
ICBudWxsICE9IHQubGVmdCAmJiAobC5sZWZ0ID0gdC5sZWZ0IC0gby5sZWZ0ICsgZiksCisgICAg
ICAgICAgICAidXNpbmciIGluIHQgPyB0LnVzaW5nLmNhbGwoZSwgbCkgOiBpLmNzcyhsKQogICAg
ICAgICB9Ci0gICAgfSwgYi5mbi5leHRlbmQoeworICAgIH0sCisgICAgYi5mbi5leHRlbmQoewog
ICAgICAgICBwb3NpdGlvbjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICBpZiAodGhpc1swXSkg
ewogICAgICAgICAgICAgICAgIHZhciBlLApAQCAtMzgxNyw3ICs0MTI3LDggQEAKICAgICAgICAg
ICAgICAgICByZXR1cm4gZSB8fCBvLmRvY3VtZW50RWxlbWVudAogICAgICAgICAgICAgfSkKICAg
ICAgICAgfQotICAgIH0pLCBiLmVhY2goeworICAgIH0pLAorICAgIGIuZWFjaCh7CiAgICAgICAg
IHNjcm9sbExlZnQ6ICJwYWdlWE9mZnNldCIsCiAgICAgICAgIHNjcm9sbFRvcDogInBhZ2VZT2Zm
c2V0IgogICAgIH0sIGZ1bmN0aW9uKGUsIG4pIHsKQEAgLTM4NTAsNyArNDE2MSw5IEBACiAgICAg
ICAgICAgICAgICAgfSwgbiwgYSA/IGkgOiB0LCBhLCBudWxsKQogICAgICAgICAgICAgfQogICAg
ICAgICB9KQotICAgIH0pLCBlLmpRdWVyeSA9IGUuJCA9IGIsICJmdW5jdGlvbiIgPT0gdHlwZW9m
IGRlZmluZSAmJiBkZWZpbmUuYW1kICYmIGRlZmluZS5hbWQualF1ZXJ5ICYmIGRlZmluZSgianF1
ZXJ5IiwgW10sIGZ1bmN0aW9uKCkgeworICAgIH0pLAorICAgIGUualF1ZXJ5ID0gZS4kID0gYiwK
KyAgICAiZnVuY3Rpb24iID09IHR5cGVvZiBkZWZpbmUgJiYgZGVmaW5lLmFtZCAmJiBkZWZpbmUu
YW1kLmpRdWVyeSAmJiBkZWZpbmUoImpxdWVyeSIsIFtdLCBmdW5jdGlvbigpIHsKICAgICAgICAg
cmV0dXJuIGIKICAgICB9KQogfSkod2luZG93KTsK
</data>
<flag name="review"
          id="410951"
          type_id="1"
          status="+"
          setter="joepeck"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395909</attachid>
            <date>2020-04-08 21:40:41 -0700</date>
            <delta_ts>2020-04-08 22:10:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>209998.diff</filename>
            <type>text/plain</type>
            <size>137770</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwNmQxMTU5M2E1NC4uYzc4ODFjMGJkM2EgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAor
MjAyMC0wNC0wNiAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAg
V2ViIEluc3BlY3RvcjogRGVidWdnZXI6IHRyZWF0IGNvbW1hIHN1Yi1leHByZXNzaW9ucyBhcyBz
ZXBhcmF0ZSBzdGF0ZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDk5OTgKKworICAgICAgICBSZXZpZXdlZCBieSBKb3NlcGggUGVjb3Jhcm8u
CisKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvYnJlYWtwb2ludHMvcmVzb3VyY2VzL2R1
bXAtZnVuY3Rpb25zLmpzOgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50
cy9yZXNvdXJjZXMvZHVtcC1nZW5lcmFsLmpzOgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dl
ci9icmVha3BvaW50cy9yZXNvbHZlZC1kdW1wLWFsbC1wYXVzZS1sb2NhdGlvbnMtZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50cy9yZXNvbHZlZC1k
dW1wLWVhY2gtbGluZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2Vy
L3N0ZXBwaW5nL3N0ZXBPdmVyLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL3N0
ZXBwaW5nL3N0ZXBPdmVyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdn
ZXIvc3RlcHBpbmcvc3RlcHBpbmctZnVuY3Rpb24tY2FsbHMuaHRtbDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcvc3RlcHBpbmctZnVuY3Rpb24tY2FsbHMtZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9zdGVwcGluZy9zdGVwcGluZy1sb29w
cy5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9zdGVwcGluZy9zdGVwcGluZy1s
b29wcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL3N0ZXBwaW5n
L3N0ZXBwaW5nLW1pc2MuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvc3RlcHBp
bmcvc3RlcHBpbmctbWlzYy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2Zvcm1h
dHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvZm9yLXN0YXRlbWVudHMuanM6CisgICAg
ICAgICogaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvZm9y
LXN0YXRlbWVudHMtZXhwZWN0ZWQuanM6CisgICAgICAgICogaW5zcGVjdG9yL2Zvcm1hdHRpbmcv
cmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvaWYtc3RhdGVtZW50cy5qczoKKyAgICAgICAgKiBp
bnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy9pZi1zdGF0ZW1l
bnRzLWV4cGVjdGVkLmpzOgorICAgICAgICAqIGluc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNl
cy9qYXZhc2NyaXB0LXRlc3RzL3NhbXBsZS1qcXVlcnktZXhwZWN0ZWQuanM6CisgICAgICAgICog
aW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvc2FtcGxlLWpx
dWVyeS1leHBlY3RlZC5qczoKKwogMjAyMC0wNC0wNyAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxh
bkBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gRGVueSBtYWNoIGxvb2t1cCBhY2Nlc3MgdG8g
dGhlIHJ1bm5pbmdib2FyZCBzZXJ2aWNlIGluIHRoZSBXZWJDb250ZW50IHByb2Nlc3MKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50cy9yZXNvbHZl
ZC1kdW1wLWFsbC1wYXVzZS1sb2NhdGlvbnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnRzL3Jlc29sdmVkLWR1bXAtYWxsLXBhdXNlLWxvY2F0
aW9ucy1leHBlY3RlZC50eHQKaW5kZXggY2MwOGQ5NDljZWIuLjJlZGYwNDlmZWRiIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvYnJlYWtwb2ludHMvcmVzb2x2ZWQt
ZHVtcC1hbGwtcGF1c2UtbG9jYXRpb25zLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZGVidWdnZXIvYnJlYWtwb2ludHMvcmVzb2x2ZWQtZHVtcC1hbGwtcGF1c2UtbG9j
YXRpb25zLWV4cGVjdGVkLnR4dApAQCAtMTA3NCwzNiArMTA3NCw2NiBAQCBQQVVTRVMgQVQ6IDE2
NDowCiAgICAgMTY3ICAgICAgICBsMiA9IDI7CiAKIElOU0VSVElORyBBVDogMTY0OjEKLVBBVVNF
UyBBVDogMTY2OjAKK1BBVVNFUyBBVDogMTY1OjQKICAgICAxNjEgICAgICAgIGEoKTsKICAgICAx
NjIgICAgfQogICAgIDE2MyAgICAKICAtPiAxNjQgICAgdiNhciB2MSA9IDEsCi0gICAgMTY1ICAg
ICAgICB2MiA9IDE7CisgPT4gMTY1ICAgICAgICB8djIgPSAxOworICAgIDE2NiAgICBsZXQgbDEg
PSAyLAorICAgIDE2NyAgICAgICAgbDIgPSAyOworICAgIDE2OCAgICBjb25zdCBjMSA9IDMsCisK
K0lOU0VSVElORyBBVDogMTY1OjUKK1BBVVNFUyBBVDogMTY2OjAKKyAgICAxNjIgICAgfQorICAg
IDE2MyAgICAKKyAgICAxNjQgICAgdmFyIHYxID0gMSwKKyAtPiAxNjUgICAgICAgIHYjMiA9IDE7
CiAgPT4gMTY2ICAgIHxsZXQgbDEgPSAyLAogICAgIDE2NyAgICAgICAgbDIgPSAyOwogICAgIDE2
OCAgICBjb25zdCBjMSA9IDMsCiAgICAgMTY5ICAgICAgICBjMiA9IDM7CiAKIElOU0VSVElORyBB
VDogMTY2OjEKLVBBVVNFUyBBVDogMTY4OjAKK1BBVVNFUyBBVDogMTY3OjQKICAgICAxNjMgICAg
CiAgICAgMTY0ICAgIHZhciB2MSA9IDEsCiAgICAgMTY1ICAgICAgICB2MiA9IDE7CiAgLT4gMTY2
ICAgIGwjZXQgbDEgPSAyLAotICAgIDE2NyAgICAgICAgbDIgPSAyOworID0+IDE2NyAgICAgICAg
fGwyID0gMjsKKyAgICAxNjggICAgY29uc3QgYzEgPSAzLAorICAgIDE2OSAgICAgICAgYzIgPSAz
OworICAgIDE3MCAgICAKKworSU5TRVJUSU5HIEFUOiAxNjc6NQorUEFVU0VTIEFUOiAxNjg6MAor
ICAgIDE2NCAgICB2YXIgdjEgPSAxLAorICAgIDE2NSAgICAgICAgdjIgPSAxOworICAgIDE2NiAg
ICBsZXQgbDEgPSAyLAorIC0+IDE2NyAgICAgICAgbCMyID0gMjsKICA9PiAxNjggICAgfGNvbnN0
IGMxID0gMywKICAgICAxNjkgICAgICAgIGMyID0gMzsKICAgICAxNzAgICAgCiAgICAgMTcxICAg
IHYxID0gdjIgPSB2MTsKIAogSU5TRVJUSU5HIEFUOiAxNjg6MQotUEFVU0VTIEFUOiAxNzE6MAor
UEFVU0VTIEFUOiAxNjk6NAogICAgIDE2NSAgICAgICAgdjIgPSAxOwogICAgIDE2NiAgICBsZXQg
bDEgPSAyLAogICAgIDE2NyAgICAgICAgbDIgPSAyOwogIC0+IDE2OCAgICBjI29uc3QgYzEgPSAz
LAotICAgIDE2OSAgICAgICAgYzIgPSAzOworID0+IDE2OSAgICAgICAgfGMyID0gMzsKKyAgICAx
NzAgICAgCisgICAgMTcxICAgIHYxID0gdjIgPSB2MTsKKyAgICAxNzIgICAgCisKK0lOU0VSVElO
RyBBVDogMTY5OjUKK1BBVVNFUyBBVDogMTcxOjAKKyAgICAxNjYgICAgbGV0IGwxID0gMiwKKyAg
ICAxNjcgICAgICAgIGwyID0gMjsKKyAgICAxNjggICAgY29uc3QgYzEgPSAzLAorIC0+IDE2OSAg
ICAgICAgYyMyID0gMzsKICAgICAxNzAgICAgCiAgPT4gMTcxICAgIHx2MSA9IHYyID0gdjE7CiAg
ICAgMTcyICAgIApAQCAtMTMxNSw2ICsxMzQ1LDcgQEAgUEFVU0VTIEFUOiAyMDg6NAogID0+IDIw
OCAgICBpZiAofFN0cmluZy5yYXdgdGVzdGApCiAgICAgMjA5ICAgICAgICBhKCk7CiAgICAgMjEw
ICAgIAorICAgIDIxMSAgICBhKCksIGIoKSwgYygpOwogCiBJTlNFUlRJTkcgQVQ6IDIwODo1CiBQ
QVVTRVMgQVQ6IDIwOTo0CkBAIC0xMzI0LDYgKzEzNTUsNzEgQEAgUEFVU0VTIEFUOiAyMDk6NAog
IC0+IDIwOCAgICBpZiAoUyN0cmluZy5yYXdgdGVzdGApCiAgPT4gMjA5ICAgICAgICB8YSgpOwog
ICAgIDIxMCAgICAKKyAgICAyMTEgICAgYSgpLCBiKCksIGMoKTsKKyAgICAyMTIgICAgCisKK0lO
U0VSVElORyBBVDogMjA5OjUKK1BBVVNFUyBBVDogMjExOjAKKyAgICAyMDYgICAgICAgIGEoKTsK
KyAgICAyMDcgICAgCisgICAgMjA4ICAgIGlmIChTdHJpbmcucmF3YHRlc3RgKQorIC0+IDIwOSAg
ICAgICAgYSMoKTsKKyAgICAyMTAgICAgCisgPT4gMjExICAgIHxhKCksIGIoKSwgYygpOworICAg
IDIxMiAgICAKKyAgICAyMTMgICAgYSgpLAorICAgIDIxNCAgICBiKCksCisKK0lOU0VSVElORyBB
VDogMjExOjEKK1BBVVNFUyBBVDogMjExOjUKKyAgICAyMDggICAgaWYgKFN0cmluZy5yYXdgdGVz
dGApCisgICAgMjA5ICAgICAgICBhKCk7CisgICAgMjEwICAgIAorLT0+IDIxMSAgICBhIygpLCB8
YigpLCBjKCk7CisgICAgMjEyICAgIAorICAgIDIxMyAgICBhKCksCisgICAgMjE0ICAgIGIoKSwK
KworSU5TRVJUSU5HIEFUOiAyMTE6NgorUEFVU0VTIEFUOiAyMTE6MTAKKyAgICAyMDggICAgaWYg
KFN0cmluZy5yYXdgdGVzdGApCisgICAgMjA5ICAgICAgICBhKCk7CisgICAgMjEwICAgIAorLT0+
IDIxMSAgICBhKCksIGIjKCksIHxjKCk7CisgICAgMjEyICAgIAorICAgIDIxMyAgICBhKCksCisg
ICAgMjE0ICAgIGIoKSwKKworSU5TRVJUSU5HIEFUOiAyMTE6MTEKK1BBVVNFUyBBVDogMjEzOjAK
KyAgICAyMDggICAgaWYgKFN0cmluZy5yYXdgdGVzdGApCisgICAgMjA5ICAgICAgICBhKCk7Cisg
ICAgMjEwICAgIAorIC0+IDIxMSAgICBhKCksIGIoKSwgYyMoKTsKKyAgICAyMTIgICAgCisgPT4g
MjEzICAgIHxhKCksCisgICAgMjE0ICAgIGIoKSwKKyAgICAyMTUgICAgYygpOworICAgIDIxNiAg
ICAKKworSU5TRVJUSU5HIEFUOiAyMTM6MQorUEFVU0VTIEFUOiAyMTQ6MAorICAgIDIxMCAgICAK
KyAgICAyMTEgICAgYSgpLCBiKCksIGMoKTsKKyAgICAyMTIgICAgCisgLT4gMjEzICAgIGEjKCks
CisgPT4gMjE0ICAgIHxiKCksCisgICAgMjE1ICAgIGMoKTsKKyAgICAyMTYgICAgCisKK0lOU0VS
VElORyBBVDogMjE0OjEKK1BBVVNFUyBBVDogMjE1OjAKKyAgICAyMTEgICAgYSgpLCBiKCksIGMo
KTsKKyAgICAyMTIgICAgCisgICAgMjEzICAgIGEoKSwKKyAtPiAyMTQgICAgYiMoKSwKKyA9PiAy
MTUgICAgfGMoKTsKKyAgICAyMTYgICAgCiAKIAogLS0gUnVubmluZyB0ZXN0IGNhc2U6IERlYnVn
Z2VyLnJlc29sdmVkQnJlYWtwb2ludC5kdW1wQWxsTG9jYXRpb25zLkZ1bmN0aW9ucwpAQCAtMjM2
Niw2ICsyNDYyLDkwIEBAIFBBVVNFUyBBVDogMTEyOjQKICA9PiAxMTIgICAgICAgIHx9ICAgCiAg
ICAgMTEzICAgIH07CiAgICAgMTE0ICAgIAorICAgIDExNSAgICBmdW5jdGlvbiBjb21tYU9uZUxp
bmUoKSB7CisKK0lOU0VSVElORyBBVDogMTE1OjAKK1BBVVNFUyBBVDogMTE2OjQKKyAgICAxMTIg
ICAgICAgIH0gICAKKyAgICAxMTMgICAgfTsKKyAgICAxMTQgICAgCisgLT4gMTE1ICAgICNmdW5j
dGlvbiBjb21tYU9uZUxpbmUoKSB7CisgPT4gMTE2ICAgICAgICB8aW5saW5lKCksIGlubGluZSgp
LCBpbmxpbmUoKTsKKyAgICAxMTcgICAgfQorICAgIDExOCAgICAKKyAgICAxMTkgICAgZnVuY3Rp
b24gY29tbWFNdWx0aUxpbmUoKSB7CisKK0lOU0VSVElORyBBVDogMTE2OjUKK1BBVVNFUyBBVDog
MTE2OjE0CisgICAgMTEzICAgIH07CisgICAgMTE0ICAgIAorICAgIDExNSAgICBmdW5jdGlvbiBj
b21tYU9uZUxpbmUoKSB7CistPT4gMTE2ICAgICAgICBpI25saW5lKCksIHxpbmxpbmUoKSwgaW5s
aW5lKCk7CisgICAgMTE3ICAgIH0KKyAgICAxMTggICAgCisgICAgMTE5ICAgIGZ1bmN0aW9uIGNv
bW1hTXVsdGlMaW5lKCkgeworCitJTlNFUlRJTkcgQVQ6IDExNjoxNQorUEFVU0VTIEFUOiAxMTY6
MjQKKyAgICAxMTMgICAgfTsKKyAgICAxMTQgICAgCisgICAgMTE1ICAgIGZ1bmN0aW9uIGNvbW1h
T25lTGluZSgpIHsKKy09PiAxMTYgICAgICAgIGlubGluZSgpLCBpI25saW5lKCksIHxpbmxpbmUo
KTsKKyAgICAxMTcgICAgfQorICAgIDExOCAgICAKKyAgICAxMTkgICAgZnVuY3Rpb24gY29tbWFN
dWx0aUxpbmUoKSB7CisKK0lOU0VSVElORyBBVDogMTE2OjI1CitQQVVTRVMgQVQ6IDExNzowCisg
ICAgMTEzICAgIH07CisgICAgMTE0ICAgIAorICAgIDExNSAgICBmdW5jdGlvbiBjb21tYU9uZUxp
bmUoKSB7CisgLT4gMTE2ICAgICAgICBpbmxpbmUoKSwgaW5saW5lKCksIGkjbmxpbmUoKTsKKyA9
PiAxMTcgICAgfH0KKyAgICAxMTggICAgCisgICAgMTE5ICAgIGZ1bmN0aW9uIGNvbW1hTXVsdGlM
aW5lKCkgeworICAgIDEyMCAgICAgICAgaW5saW5lKCksCisKK0lOU0VSVElORyBBVDogMTE5OjAK
K1BBVVNFUyBBVDogMTIwOjQKKyAgICAxMTYgICAgICAgIGlubGluZSgpLCBpbmxpbmUoKSwgaW5s
aW5lKCk7CisgICAgMTE3ICAgIH0KKyAgICAxMTggICAgCisgLT4gMTE5ICAgICNmdW5jdGlvbiBj
b21tYU11bHRpTGluZSgpIHsKKyA9PiAxMjAgICAgICAgIHxpbmxpbmUoKSwKKyAgICAxMjEgICAg
ICAgIGlubGluZSgpLAorICAgIDEyMiAgICAgICAgaW5saW5lKCk7CisgICAgMTIzICAgIH0KKwor
SU5TRVJUSU5HIEFUOiAxMjA6NQorUEFVU0VTIEFUOiAxMjE6NAorICAgIDExNyAgICB9CisgICAg
MTE4ICAgIAorICAgIDExOSAgICBmdW5jdGlvbiBjb21tYU11bHRpTGluZSgpIHsKKyAtPiAxMjAg
ICAgICAgIGkjbmxpbmUoKSwKKyA9PiAxMjEgICAgICAgIHxpbmxpbmUoKSwKKyAgICAxMjIgICAg
ICAgIGlubGluZSgpOworICAgIDEyMyAgICB9CisgICAgMTI0ICAgIAorCitJTlNFUlRJTkcgQVQ6
IDEyMTo1CitQQVVTRVMgQVQ6IDEyMjo0CisgICAgMTE4ICAgIAorICAgIDExOSAgICBmdW5jdGlv
biBjb21tYU11bHRpTGluZSgpIHsKKyAgICAxMjAgICAgICAgIGlubGluZSgpLAorIC0+IDEyMSAg
ICAgICAgaSNubGluZSgpLAorID0+IDEyMiAgICAgICAgfGlubGluZSgpOworICAgIDEyMyAgICB9
CisgICAgMTI0ICAgIAorCitJTlNFUlRJTkcgQVQ6IDEyMjo1CitQQVVTRVMgQVQ6IDEyMzowCisg
ICAgMTE5ICAgIGZ1bmN0aW9uIGNvbW1hTXVsdGlMaW5lKCkgeworICAgIDEyMCAgICAgICAgaW5s
aW5lKCksCisgICAgMTIxICAgICAgICBpbmxpbmUoKSwKKyAtPiAxMjIgICAgICAgIGkjbmxpbmUo
KTsKKyA9PiAxMjMgICAgfH0KKyAgICAxMjQgICAgCiAKIAogLS0gUnVubmluZyB0ZXN0IGNhc2U6
IERlYnVnZ2VyLnJlc29sdmVkQnJlYWtwb2ludC5kdW1wQWxsTG9jYXRpb25zLlVuaWNvZGUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50cy9yZXNv
bHZlZC1kdW1wLWVhY2gtbGluZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZGVidWdnZXIvYnJlYWtwb2ludHMvcmVzb2x2ZWQtZHVtcC1lYWNoLWxpbmUtZXhwZWN0ZWQudHh0
CmluZGV4IGYwMGYyOTcwYjBjLi4zMTY2NTg0ZGY3NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnRzL3Jlc29sdmVkLWR1bXAtZWFjaC1saW5lLWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvYnJlYWtwb2lu
dHMvcmVzb2x2ZWQtZHVtcC1lYWNoLWxpbmUtZXhwZWN0ZWQudHh0CkBAIC0yNDg4LDE1ICsyNDg4
LDE0IEBAIFBBVVNFUyBBVDogMTY0OjAKIAogCiBJTlNFUlRJTkcgQVQ6IDE2NTowCi1QQVVTRVMg
QVQ6IDE2NjowCitQQVVTRVMgQVQ6IDE2NTo0CiAgICAgMTYyICAgIH0KICAgICAxNjMgICAgCiAg
ICAgMTY0ICAgIHZhciB2MSA9IDEsCi0gLT4gMTY1ICAgICMgICAgdjIgPSAxOwotID0+IDE2NiAg
ICB8bGV0IGwxID0gMiwKKy09PiAxNjUgICAgIyAgICB8djIgPSAxOworICAgIDE2NiAgICBsZXQg
bDEgPSAyLAogICAgIDE2NyAgICAgICAgbDIgPSAyOwogICAgIDE2OCAgICBjb25zdCBjMSA9IDMs
Ci0gICAgMTY5ICAgICAgICBjMiA9IDM7CiAKIAogSU5TRVJUSU5HIEFUOiAxNjY6MApAQCAtMjUx
MSwxNSArMjUxMCwxNCBAQCBQQVVTRVMgQVQ6IDE2NjowCiAKIAogSU5TRVJUSU5HIEFUOiAxNjc6
MAotUEFVU0VTIEFUOiAxNjg6MAorUEFVU0VTIEFUOiAxNjc6NAogICAgIDE2NCAgICB2YXIgdjEg
PSAxLAogICAgIDE2NSAgICAgICAgdjIgPSAxOwogICAgIDE2NiAgICBsZXQgbDEgPSAyLAotIC0+
IDE2NyAgICAjICAgIGwyID0gMjsKLSA9PiAxNjggICAgfGNvbnN0IGMxID0gMywKKy09PiAxNjcg
ICAgIyAgICB8bDIgPSAyOworICAgIDE2OCAgICBjb25zdCBjMSA9IDMsCiAgICAgMTY5ICAgICAg
ICBjMiA9IDM7CiAgICAgMTcwICAgIAotICAgIDE3MSAgICB2MSA9IHYyID0gdjE7CiAKIAogSU5T
RVJUSU5HIEFUOiAxNjg6MApAQCAtMjUzNCwxNiArMjUzMiwxNCBAQCBQQVVTRVMgQVQ6IDE2ODow
CiAKIAogSU5TRVJUSU5HIEFUOiAxNjk6MAotUEFVU0VTIEFUOiAxNzE6MAorUEFVU0VTIEFUOiAx
Njk6NAogICAgIDE2NiAgICBsZXQgbDEgPSAyLAogICAgIDE2NyAgICAgICAgbDIgPSAyOwogICAg
IDE2OCAgICBjb25zdCBjMSA9IDMsCi0gLT4gMTY5ICAgICMgICAgYzIgPSAzOworLT0+IDE2OSAg
ICAjICAgIHxjMiA9IDM7CiAgICAgMTcwICAgIAotID0+IDE3MSAgICB8djEgPSB2MiA9IHYxOwor
ICAgIDE3MSAgICB2MSA9IHYyID0gdjE7CiAgICAgMTcyICAgIAotICAgIDE3MyAgICB2YXIge3gs
IHl9ID0gb2JqOwotICAgIDE3NCAgICB2YXIgW3csIHpdID0gYXJyOwogCiAKIElOU0VSVElORyBB
VDogMTcwOjAKQEAgLTMwMTgsNiArMzAxNCw3IEBAIFBBVVNFUyBBVDogMjA4OjQKICA9PiAyMDgg
ICAgaWYgKHxTdHJpbmcucmF3YHRlc3RgKQogICAgIDIwOSAgICAgICAgYSgpOwogICAgIDIxMCAg
ICAKKyAgICAyMTEgICAgYSgpLCBiKCksIGMoKTsKIAogCiBJTlNFUlRJTkcgQVQ6IDIwODowCkBA
IC0zMDI4LDYgKzMwMjUsNyBAQCBQQVVTRVMgQVQ6IDIwODo0CiAtPT4gMjA4ICAgICNpZiAofFN0
cmluZy5yYXdgdGVzdGApCiAgICAgMjA5ICAgICAgICBhKCk7CiAgICAgMjEwICAgIAorICAgIDIx
MSAgICBhKCksIGIoKSwgYygpOwogCiAKIElOU0VSVElORyBBVDogMjA5OjAKQEAgLTMwMzcsOSAr
MzAzNSw3NiBAQCBQQVVTRVMgQVQ6IDIwOTo0CiAgICAgMjA4ICAgIGlmIChTdHJpbmcucmF3YHRl
c3RgKQogLT0+IDIwOSAgICAjICAgIHxhKCk7CiAgICAgMjEwICAgIAorICAgIDIxMSAgICBhKCks
IGIoKSwgYygpOworICAgIDIxMiAgICAKIAogCiBJTlNFUlRJTkcgQVQ6IDIxMDowCitQQVVTRVMg
QVQ6IDIxMTowCisgICAgMjA3ICAgIAorICAgIDIwOCAgICBpZiAoU3RyaW5nLnJhd2B0ZXN0YCkK
KyAgICAyMDkgICAgICAgIGEoKTsKKyAtPiAyMTAgICAgIworID0+IDIxMSAgICB8YSgpLCBiKCks
IGMoKTsKKyAgICAyMTIgICAgCisgICAgMjEzICAgIGEoKSwKKyAgICAyMTQgICAgYigpLAorCisK
K0lOU0VSVElORyBBVDogMjExOjAKK1BBVVNFUyBBVDogMjExOjAKKyAgICAyMDggICAgaWYgKFN0
cmluZy5yYXdgdGVzdGApCisgICAgMjA5ICAgICAgICBhKCk7CisgICAgMjEwICAgIAorLT0+IDIx
MSAgICB8YSgpLCBiKCksIGMoKTsKKyAgICAyMTIgICAgCisgICAgMjEzICAgIGEoKSwKKyAgICAy
MTQgICAgYigpLAorCisKK0lOU0VSVElORyBBVDogMjEyOjAKK1BBVVNFUyBBVDogMjEzOjAKKyAg
ICAyMDkgICAgICAgIGEoKTsKKyAgICAyMTAgICAgCisgICAgMjExICAgIGEoKSwgYigpLCBjKCk7
CisgLT4gMjEyICAgICMKKyA9PiAyMTMgICAgfGEoKSwKKyAgICAyMTQgICAgYigpLAorICAgIDIx
NSAgICBjKCk7CisgICAgMjE2ICAgIAorCisKK0lOU0VSVElORyBBVDogMjEzOjAKK1BBVVNFUyBB
VDogMjEzOjAKKyAgICAyMTAgICAgCisgICAgMjExICAgIGEoKSwgYigpLCBjKCk7CisgICAgMjEy
ICAgIAorLT0+IDIxMyAgICB8YSgpLAorICAgIDIxNCAgICBiKCksCisgICAgMjE1ICAgIGMoKTsK
KyAgICAyMTYgICAgCisKKworSU5TRVJUSU5HIEFUOiAyMTQ6MAorUEFVU0VTIEFUOiAyMTQ6MAor
ICAgIDIxMSAgICBhKCksIGIoKSwgYygpOworICAgIDIxMiAgICAKKyAgICAyMTMgICAgYSgpLAor
LT0+IDIxNCAgICB8YigpLAorICAgIDIxNSAgICBjKCk7CisgICAgMjE2ICAgIAorCisKK0lOU0VS
VElORyBBVDogMjE1OjAKK1BBVVNFUyBBVDogMjE1OjAKKyAgICAyMTIgICAgCisgICAgMjEzICAg
IGEoKSwKKyAgICAyMTQgICAgYigpLAorLT0+IDIxNSAgICB8YygpOworICAgIDIxNiAgICAKKwor
CitJTlNFUlRJTkcgQVQ6IDIxNjowCiBQUk9EVUNFUzogQ291bGQgbm90IHJlc29sdmUgYnJlYWtw
b2ludAogCiAtLSBSdW5uaW5nIHRlc3QgY2FzZTogRGVidWdnZXIucmVzb2x2ZWRCcmVha3BvaW50
LmR1bXBFYWNoTGluZS5GdW5jdGlvbnMKQEAgLTQ0NDAsNiArNDUwNSw3IEBAIFBBVVNFUyBBVDog
MTEyOjQKIC09PiAxMTIgICAgIyAgICB8fSAgIAogICAgIDExMyAgICB9OwogICAgIDExNCAgICAK
KyAgICAxMTUgICAgZnVuY3Rpb24gY29tbWFPbmVMaW5lKCkgewogCiAKIElOU0VSVElORyBBVDog
MTEzOjAKQEAgLTQ0NDgsNiArNDUxNCw5OSBAQCBQUk9EVUNFUzogQ291bGQgbm90IHJlc29sdmUg
YnJlYWtwb2ludAogSU5TRVJUSU5HIEFUOiAxMTQ6MAogUFJPRFVDRVM6IENvdWxkIG5vdCByZXNv
bHZlIGJyZWFrcG9pbnQKIAorSU5TRVJUSU5HIEFUOiAxMTU6MAorUEFVU0VTIEFUOiAxMTY6NAor
ICAgIDExMiAgICAgICAgfSAgIAorICAgIDExMyAgICB9OworICAgIDExNCAgICAKKyAtPiAxMTUg
ICAgI2Z1bmN0aW9uIGNvbW1hT25lTGluZSgpIHsKKyA9PiAxMTYgICAgICAgIHxpbmxpbmUoKSwg
aW5saW5lKCksIGlubGluZSgpOworICAgIDExNyAgICB9CisgICAgMTE4ICAgIAorICAgIDExOSAg
ICBmdW5jdGlvbiBjb21tYU11bHRpTGluZSgpIHsKKworCitJTlNFUlRJTkcgQVQ6IDExNjowCitQ
QVVTRVMgQVQ6IDExNjo0CisgICAgMTEzICAgIH07CisgICAgMTE0ICAgIAorICAgIDExNSAgICBm
dW5jdGlvbiBjb21tYU9uZUxpbmUoKSB7CistPT4gMTE2ICAgICMgICAgfGlubGluZSgpLCBpbmxp
bmUoKSwgaW5saW5lKCk7CisgICAgMTE3ICAgIH0KKyAgICAxMTggICAgCisgICAgMTE5ICAgIGZ1
bmN0aW9uIGNvbW1hTXVsdGlMaW5lKCkgeworCisKK0lOU0VSVElORyBBVDogMTE3OjAKK1BBVVNF
UyBBVDogMTE3OjAKKyAgICAxMTQgICAgCisgICAgMTE1ICAgIGZ1bmN0aW9uIGNvbW1hT25lTGlu
ZSgpIHsKKyAgICAxMTYgICAgICAgIGlubGluZSgpLCBpbmxpbmUoKSwgaW5saW5lKCk7CistPT4g
MTE3ICAgIHx9CisgICAgMTE4ICAgIAorICAgIDExOSAgICBmdW5jdGlvbiBjb21tYU11bHRpTGlu
ZSgpIHsKKyAgICAxMjAgICAgICAgIGlubGluZSgpLAorCisKK0lOU0VSVElORyBBVDogMTE4OjAK
K1BST0RVQ0VTOiBDb3VsZCBub3QgcmVzb2x2ZSBicmVha3BvaW50CisKK0lOU0VSVElORyBBVDog
MTE5OjAKK1BBVVNFUyBBVDogMTIwOjQKKyAgICAxMTYgICAgICAgIGlubGluZSgpLCBpbmxpbmUo
KSwgaW5saW5lKCk7CisgICAgMTE3ICAgIH0KKyAgICAxMTggICAgCisgLT4gMTE5ICAgICNmdW5j
dGlvbiBjb21tYU11bHRpTGluZSgpIHsKKyA9PiAxMjAgICAgICAgIHxpbmxpbmUoKSwKKyAgICAx
MjEgICAgICAgIGlubGluZSgpLAorICAgIDEyMiAgICAgICAgaW5saW5lKCk7CisgICAgMTIzICAg
IH0KKworCitJTlNFUlRJTkcgQVQ6IDEyMDowCitQQVVTRVMgQVQ6IDEyMDo0CisgICAgMTE3ICAg
IH0KKyAgICAxMTggICAgCisgICAgMTE5ICAgIGZ1bmN0aW9uIGNvbW1hTXVsdGlMaW5lKCkgewor
LT0+IDEyMCAgICAjICAgIHxpbmxpbmUoKSwKKyAgICAxMjEgICAgICAgIGlubGluZSgpLAorICAg
IDEyMiAgICAgICAgaW5saW5lKCk7CisgICAgMTIzICAgIH0KKworCitJTlNFUlRJTkcgQVQ6IDEy
MTowCitQQVVTRVMgQVQ6IDEyMTo0CisgICAgMTE4ICAgIAorICAgIDExOSAgICBmdW5jdGlvbiBj
b21tYU11bHRpTGluZSgpIHsKKyAgICAxMjAgICAgICAgIGlubGluZSgpLAorLT0+IDEyMSAgICAj
ICAgIHxpbmxpbmUoKSwKKyAgICAxMjIgICAgICAgIGlubGluZSgpOworICAgIDEyMyAgICB9Cisg
ICAgMTI0ICAgIAorCisKK0lOU0VSVElORyBBVDogMTIyOjAKK1BBVVNFUyBBVDogMTIyOjQKKyAg
ICAxMTkgICAgZnVuY3Rpb24gY29tbWFNdWx0aUxpbmUoKSB7CisgICAgMTIwICAgICAgICBpbmxp
bmUoKSwKKyAgICAxMjEgICAgICAgIGlubGluZSgpLAorLT0+IDEyMiAgICAjICAgIHxpbmxpbmUo
KTsKKyAgICAxMjMgICAgfQorICAgIDEyNCAgICAKKworCitJTlNFUlRJTkcgQVQ6IDEyMzowCitQ
QVVTRVMgQVQ6IDEyMzowCisgICAgMTIwICAgICAgICBpbmxpbmUoKSwKKyAgICAxMjEgICAgICAg
IGlubGluZSgpLAorICAgIDEyMiAgICAgICAgaW5saW5lKCk7CistPT4gMTIzICAgIHx9CisgICAg
MTI0ICAgIAorCisKK0lOU0VSVElORyBBVDogMTI0OjAKK1BST0RVQ0VTOiBDb3VsZCBub3QgcmVz
b2x2ZSBicmVha3BvaW50CisKIC0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBEZWJ1Z2dlci5yZXNvbHZl
ZEJyZWFrcG9pbnQuZHVtcEVhY2hMaW5lLlVuaWNvZGUKIAogSU5TRVJUSU5HIEFUOiAwOjAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50cy9yZXNv
dXJjZXMvZHVtcC1mdW5jdGlvbnMuanMgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIv
YnJlYWtwb2ludHMvcmVzb3VyY2VzL2R1bXAtZnVuY3Rpb25zLmpzCmluZGV4IGVmMTY0NmUzMjc4
Li43YjQ3ODhjMGI5ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2Vy
L2JyZWFrcG9pbnRzL3Jlc291cmNlcy9kdW1wLWZ1bmN0aW9ucy5qcworKysgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZGVidWdnZXIvYnJlYWtwb2ludHMvcmVzb3VyY2VzL2R1bXAtZnVuY3Rpb25z
LmpzCkBAIC0xMTIsMyArMTEyLDEzIEBAIHZhciBmT2JqID0gewogICAgICAgICB2YXIgeDsKICAg
ICB9ICAgCiB9OworCitmdW5jdGlvbiBjb21tYU9uZUxpbmUoKSB7CisgICAgaW5saW5lKCksIGlu
bGluZSgpLCBpbmxpbmUoKTsKK30KKworZnVuY3Rpb24gY29tbWFNdWx0aUxpbmUoKSB7CisgICAg
aW5saW5lKCksCisgICAgaW5saW5lKCksCisgICAgaW5saW5lKCk7Cit9CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvYnJlYWtwb2ludHMvcmVzb3VyY2VzL2R1bXAt
Z2VuZXJhbC5qcyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50cy9y
ZXNvdXJjZXMvZHVtcC1nZW5lcmFsLmpzCmluZGV4IDVhNDY2NWVkNDNhLi43MmM4NzAwMTYxMyAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnRzL3Jl
c291cmNlcy9kdW1wLWdlbmVyYWwuanMKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVn
Z2VyL2JyZWFrcG9pbnRzL3Jlc291cmNlcy9kdW1wLWdlbmVyYWwuanMKQEAgLTIwOCwzICsyMDgs
OSBAQCBpZiAobzFbInAxIl0pCiAKIGlmIChTdHJpbmcucmF3YHRlc3RgKQogICAgIGEoKTsKKwor
YSgpLCBiKCksIGMoKTsKKworYSgpLAorYigpLAorYygpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3N0ZXBwaW5nL3N0ZXBPdmVyLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zdGVwcGluZy9zdGVwT3Zlci1leHBlY3RlZC50
eHQKaW5kZXggZjUzYWFmMGMzM2MuLjFkZTkwZjg1MTdkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcvc3RlcE92ZXItZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zdGVwcGluZy9zdGVwT3Zlci1leHBlY3Rl
ZC50eHQKQEAgLTEsMTE5ICsxLDEyMiBAQAotQUxFUlQ6IGxvZyAxCitBTEVSVDogZnVuY3Rpb24g
bG9nIDEKK0FMRVJUOiBjb21tYSBsb2cgMQorQUxFUlQ6IGNvbW1hIGxvZyAyCitBTEVSVDogY29t
bWEgbG9nIDMKIENoZWNraW5nIHBhdXNlIGxvY2F0aW9ucyB3aGVuIHN0ZXBwaW5nIHdpdGggInN0
ZXBPdmVyIi4KIAogCiA9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IERlYnVnZ2VyLnN0ZXBPdmVyCiAt
LSBSdW5uaW5nIHRlc3QgY2FzZTogRGVidWdnZXIuc3RlcE92ZXIuc3RhdGVtZW50cwogUEFVU0VE
IChkZWJ1Z2dlci1zdGF0ZW1lbnQpCi1QQVVTRSBBVCBlbnRyeTE6MTI6NQorUEFVU0UgQVQgdGVz
dFN0YXRlbWVudHM6MTI6NQogICAgICAgOCAgICB9CiAgICAgICA5ICAgIAotICAgICAxMCAgICBm
dW5jdGlvbiBlbnRyeTEoKSB7CisgICAgIDEwICAgIGZ1bmN0aW9uIHRlc3RTdGF0ZW1lbnRzKCkg
ewogIC0+ICAxMSAgICAgICAgfGRlYnVnZ2VyOwogICAgICAxMiAgICAgICAgbGV0IHggPSAxOwog
ICAgICAxMyAgICAgICAgbGV0IHkgPSAyOwogICAgICAxNCAgICB9CiAKLVBBVVNFIEFUIGVudHJ5
MToxMzo1CitQQVVTRSBBVCB0ZXN0U3RhdGVtZW50czoxMzo1CiAgICAgICA5ICAgIAotICAgICAx
MCAgICBmdW5jdGlvbiBlbnRyeTEoKSB7CisgICAgIDEwICAgIGZ1bmN0aW9uIHRlc3RTdGF0ZW1l
bnRzKCkgewogICAgICAxMSAgICAgICAgZGVidWdnZXI7CiAgLT4gIDEyICAgICAgICB8bGV0IHgg
PSAxOwogICAgICAxMyAgICAgICAgbGV0IHkgPSAyOwogICAgICAxNCAgICB9CiAgICAgIDE1ICAg
IAogCi1QQVVTRSBBVCBlbnRyeTE6MTQ6NQotICAgICAxMCAgICBmdW5jdGlvbiBlbnRyeTEoKSB7
CitQQVVTRSBBVCB0ZXN0U3RhdGVtZW50czoxNDo1CisgICAgIDEwICAgIGZ1bmN0aW9uIHRlc3RT
dGF0ZW1lbnRzKCkgewogICAgICAxMSAgICAgICAgZGVidWdnZXI7CiAgICAgIDEyICAgICAgICBs
ZXQgeCA9IDE7CiAgLT4gIDEzICAgICAgICB8bGV0IHkgPSAyOwogICAgICAxNCAgICB9CiAgICAg
IDE1ICAgIAotICAgICAxNiAgICBmdW5jdGlvbiBlbnRyeTIoKSB7CisgICAgIDE2ICAgIGZ1bmN0
aW9uIHRlc3RGdW5jdGlvbnMoKSB7CiAKLVBBVVNFIEFUIGVudHJ5MToxNToyCitQQVVTRSBBVCB0
ZXN0U3RhdGVtZW50czoxNToyCiAgICAgIDExICAgICAgICBkZWJ1Z2dlcjsKICAgICAgMTIgICAg
ICAgIGxldCB4ID0gMTsKICAgICAgMTMgICAgICAgIGxldCB5ID0gMjsKICAtPiAgMTQgICAgfXwK
ICAgICAgMTUgICAgCi0gICAgIDE2ICAgIGZ1bmN0aW9uIGVudHJ5MigpIHsKKyAgICAgMTYgICAg
ZnVuY3Rpb24gdGVzdEZ1bmN0aW9ucygpIHsKICAgICAgMTcgICAgICAgIGRlYnVnZ2VyOwogCiBS
RVNVTUVECiAKIC0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBEZWJ1Z2dlci5zdGVwT3Zlci5mdW5jdGlv
bgogUEFVU0VEIChkZWJ1Z2dlci1zdGF0ZW1lbnQpCi1QQVVTRSBBVCBlbnRyeTI6MTg6NQorUEFV
U0UgQVQgdGVzdEZ1bmN0aW9uczoxODo1CiAgICAgIDE0ICAgIH0KICAgICAgMTUgICAgCi0gICAg
IDE2ICAgIGZ1bmN0aW9uIGVudHJ5MigpIHsKKyAgICAgMTYgICAgZnVuY3Rpb24gdGVzdEZ1bmN0
aW9ucygpIHsKICAtPiAgMTcgICAgICAgIHxkZWJ1Z2dlcjsKICAgICAgMTggICAgICAgIGxldCBi
ZWZvcmUgPSAxOwotICAgICAxOSAgICAgICAgdGVzdEFsZXJ0KCJsb2cgMSIpOworICAgICAxOSAg
ICAgICAgdGVzdEFsZXJ0KCJmdW5jdGlvbiBsb2cgMSIpOwogICAgICAyMCAgICAgICAgbGV0IGFm
dGVyID0gMjsKIAotUEFVU0UgQVQgZW50cnkyOjE5OjUKK1BBVVNFIEFUIHRlc3RGdW5jdGlvbnM6
MTk6NQogICAgICAxNSAgICAKLSAgICAgMTYgICAgZnVuY3Rpb24gZW50cnkyKCkgeworICAgICAx
NiAgICBmdW5jdGlvbiB0ZXN0RnVuY3Rpb25zKCkgewogICAgICAxNyAgICAgICAgZGVidWdnZXI7
CiAgLT4gIDE4ICAgICAgICB8bGV0IGJlZm9yZSA9IDE7Ci0gICAgIDE5ICAgICAgICB0ZXN0QWxl
cnQoImxvZyAxIik7CisgICAgIDE5ICAgICAgICB0ZXN0QWxlcnQoImZ1bmN0aW9uIGxvZyAxIik7
CiAgICAgIDIwICAgICAgICBsZXQgYWZ0ZXIgPSAyOwogICAgICAyMSAgICB9CiAKLVBBVVNFIEFU
IGVudHJ5MjoyMDo1Ci0gICAgIDE2ICAgIGZ1bmN0aW9uIGVudHJ5MigpIHsKK1BBVVNFIEFUIHRl
c3RGdW5jdGlvbnM6MjA6NQorICAgICAxNiAgICBmdW5jdGlvbiB0ZXN0RnVuY3Rpb25zKCkgewog
ICAgICAxNyAgICAgICAgZGVidWdnZXI7CiAgICAgIDE4ICAgICAgICBsZXQgYmVmb3JlID0gMTsK
LSAtPiAgMTkgICAgICAgIHx0ZXN0QWxlcnQoImxvZyAxIik7CisgLT4gIDE5ICAgICAgICB8dGVz
dEFsZXJ0KCJmdW5jdGlvbiBsb2cgMSIpOwogICAgICAyMCAgICAgICAgbGV0IGFmdGVyID0gMjsK
ICAgICAgMjEgICAgfQogICAgICAyMiAgICAKIAotUEFVU0UgQVQgZW50cnkyOjIxOjUKK1BBVVNF
IEFUIHRlc3RGdW5jdGlvbnM6MjE6NQogICAgICAxNyAgICAgICAgZGVidWdnZXI7CiAgICAgIDE4
ICAgICAgICBsZXQgYmVmb3JlID0gMTsKLSAgICAgMTkgICAgICAgIHRlc3RBbGVydCgibG9nIDEi
KTsKKyAgICAgMTkgICAgICAgIHRlc3RBbGVydCgiZnVuY3Rpb24gbG9nIDEiKTsKICAtPiAgMjAg
ICAgICAgIHxsZXQgYWZ0ZXIgPSAyOwogICAgICAyMSAgICB9CiAgICAgIDIyICAgIAotICAgICAy
MyAgICBmdW5jdGlvbiBlbnRyeTMoKSB7CisgICAgIDIzICAgIGZ1bmN0aW9uIHRlc3RFdmFsKCkg
ewogCi1QQVVTRSBBVCBlbnRyeTI6MjI6MgorUEFVU0UgQVQgdGVzdEZ1bmN0aW9uczoyMjoyCiAg
ICAgIDE4ICAgICAgICBsZXQgYmVmb3JlID0gMTsKLSAgICAgMTkgICAgICAgIHRlc3RBbGVydCgi
bG9nIDEiKTsKKyAgICAgMTkgICAgICAgIHRlc3RBbGVydCgiZnVuY3Rpb24gbG9nIDEiKTsKICAg
ICAgMjAgICAgICAgIGxldCBhZnRlciA9IDI7CiAgLT4gIDIxICAgIH18CiAgICAgIDIyICAgIAot
ICAgICAyMyAgICBmdW5jdGlvbiBlbnRyeTMoKSB7CisgICAgIDIzICAgIGZ1bmN0aW9uIHRlc3RF
dmFsKCkgewogICAgICAyNCAgICAgICAgZGVidWdnZXI7CiAKIFJFU1VNRUQKIAogLS0gUnVubmlu
ZyB0ZXN0IGNhc2U6IERlYnVnZ2VyLnN0ZXBPdmVyLmV2YWwKIFBBVVNFRCAoZGVidWdnZXItc3Rh
dGVtZW50KQotUEFVU0UgQVQgZW50cnkzOjI1OjUKK1BBVVNFIEFUIHRlc3RFdmFsOjI1OjUKICAg
ICAgMjEgICAgfQogICAgICAyMiAgICAKLSAgICAgMjMgICAgZnVuY3Rpb24gZW50cnkzKCkgewor
ICAgICAyMyAgICBmdW5jdGlvbiB0ZXN0RXZhbCgpIHsKICAtPiAgMjQgICAgICAgIHxkZWJ1Z2dl
cjsKICAgICAgMjUgICAgICAgIGxldCBiZWZvcmUgPSAxOwogICAgICAyNiAgICAgICAgZXZhbCgi
MSArIDEiKTsKICAgICAgMjcgICAgICAgIGxldCBhZnRlciA9IDI7CiAKLVBBVVNFIEFUIGVudHJ5
MzoyNjo1CitQQVVTRSBBVCB0ZXN0RXZhbDoyNjo1CiAgICAgIDIyICAgIAotICAgICAyMyAgICBm
dW5jdGlvbiBlbnRyeTMoKSB7CisgICAgIDIzICAgIGZ1bmN0aW9uIHRlc3RFdmFsKCkgewogICAg
ICAyNCAgICAgICAgZGVidWdnZXI7CiAgLT4gIDI1ICAgICAgICB8bGV0IGJlZm9yZSA9IDE7CiAg
ICAgIDI2ICAgICAgICBldmFsKCIxICsgMSIpOwogICAgICAyNyAgICAgICAgbGV0IGFmdGVyID0g
MjsKICAgICAgMjggICAgfQogCi1QQVVTRSBBVCBlbnRyeTM6Mjc6NQotICAgICAyMyAgICBmdW5j
dGlvbiBlbnRyeTMoKSB7CitQQVVTRSBBVCB0ZXN0RXZhbDoyNzo1CisgICAgIDIzICAgIGZ1bmN0
aW9uIHRlc3RFdmFsKCkgewogICAgICAyNCAgICAgICAgZGVidWdnZXI7CiAgICAgIDI1ICAgICAg
ICBsZXQgYmVmb3JlID0gMTsKICAtPiAgMjYgICAgICAgIHxldmFsKCIxICsgMSIpOwpAQCAtMTIx
LDIyICsxMjQsMjIgQEAgUEFVU0UgQVQgZW50cnkzOjI3OjUKICAgICAgMjggICAgfQogICAgICAy
OSAgICAKIAotUEFVU0UgQVQgZW50cnkzOjI4OjUKK1BBVVNFIEFUIHRlc3RFdmFsOjI4OjUKICAg
ICAgMjQgICAgICAgIGRlYnVnZ2VyOwogICAgICAyNSAgICAgICAgbGV0IGJlZm9yZSA9IDE7CiAg
ICAgIDI2ICAgICAgICBldmFsKCIxICsgMSIpOwogIC0+ICAyNyAgICAgICAgfGxldCBhZnRlciA9
IDI7CiAgICAgIDI4ICAgIH0KICAgICAgMjkgICAgCi0gICAgIDMwICAgIGZ1bmN0aW9uIGVudHJ5
NCgpIHsKKyAgICAgMzAgICAgZnVuY3Rpb24gdGVzdExvY2FsRnVuY3Rpb24oKSB7CiAKLVBBVVNF
IEFUIGVudHJ5MzoyOToyCitQQVVTRSBBVCB0ZXN0RXZhbDoyOToyCiAgICAgIDI1ICAgICAgICBs
ZXQgYmVmb3JlID0gMTsKICAgICAgMjYgICAgICAgIGV2YWwoIjEgKyAxIik7CiAgICAgIDI3ICAg
ICAgICBsZXQgYWZ0ZXIgPSAyOwogIC0+ICAyOCAgICB9fAogICAgICAyOSAgICAKLSAgICAgMzAg
ICAgZnVuY3Rpb24gZW50cnk0KCkgeworICAgICAzMCAgICBmdW5jdGlvbiB0ZXN0TG9jYWxGdW5j
dGlvbigpIHsKICAgICAgMzEgICAgICAgIChmdW5jdGlvbigpIHsKIAogUkVTVU1FRApAQCAtMTQ1
LDcgKzE0OCw3IEBAIFJFU1VNRUQKIFBBVVNFRCAoZGVidWdnZXItc3RhdGVtZW50KQogUEFVU0Ug
QVQgPGFub255bW91cz46MzM6OQogICAgICAyOSAgICAKLSAgICAgMzAgICAgZnVuY3Rpb24gZW50
cnk0KCkgeworICAgICAzMCAgICBmdW5jdGlvbiB0ZXN0TG9jYWxGdW5jdGlvbigpIHsKICAgICAg
MzEgICAgICAgIChmdW5jdGlvbigpIHsKICAtPiAgMzIgICAgICAgICAgICB8ZGVidWdnZXI7CiAg
ICAgIDMzICAgICAgICAgICAgbGV0IGlubmVyID0gMTsKQEAgLTE1Myw3ICsxNTYsNyBAQCBQQVVT
RSBBVCA8YW5vbnltb3VzPjozMzo5CiAgICAgIDM1ICAgICAgICBsZXQgb3V0ZXIgPSAyOwogCiBQ
QVVTRSBBVCA8YW5vbnltb3VzPjozNDo5Ci0gICAgIDMwICAgIGZ1bmN0aW9uIGVudHJ5NCgpIHsK
KyAgICAgMzAgICAgZnVuY3Rpb24gdGVzdExvY2FsRnVuY3Rpb24oKSB7CiAgICAgIDMxICAgICAg
ICAoZnVuY3Rpb24oKSB7CiAgICAgIDMyICAgICAgICAgICAgZGVidWdnZXI7CiAgLT4gIDMzICAg
ICAgICAgICAgfGxldCBpbm5lciA9IDE7CkBAIC0xNzAsMjMgKzE3Myw5OSBAQCBQQVVTRSBBVCA8
YW5vbnltb3VzPjozNTo2CiAgICAgIDM2ICAgIH0KICAgICAgMzcgICAgCiAKLVBBVVNFIEFUIGVu
dHJ5NDozNjo1CitQQVVTRSBBVCB0ZXN0TG9jYWxGdW5jdGlvbjozNjo1CiAgICAgIDMyICAgICAg
ICAgICAgZGVidWdnZXI7CiAgICAgIDMzICAgICAgICAgICAgbGV0IGlubmVyID0gMTsKICAgICAg
MzQgICAgICAgIH0pKCk7CiAgLT4gIDM1ICAgICAgICB8bGV0IG91dGVyID0gMjsKICAgICAgMzYg
ICAgfQogICAgICAzNyAgICAKLSAgICAgMzggICAgLy8gLS0tLS0tLS0tCisgICAgIDM4ICAgIGZ1
bmN0aW9uIHRlc3RDb21tYXMoKSB7CiAKLVBBVVNFIEFUIGVudHJ5NDozNzoyCitQQVVTRSBBVCB0
ZXN0TG9jYWxGdW5jdGlvbjozNzoyCiAgICAgIDMzICAgICAgICAgICAgbGV0IGlubmVyID0gMTsK
ICAgICAgMzQgICAgICAgIH0pKCk7CiAgICAgIDM1ICAgICAgICBsZXQgb3V0ZXIgPSAyOwogIC0+
ICAzNiAgICB9fAogICAgICAzNyAgICAKLSAgICAgMzggICAgLy8gLS0tLS0tLS0tCi0gICAgIDM5
ICAgIAorICAgICAzOCAgICBmdW5jdGlvbiB0ZXN0Q29tbWFzKCkgeworICAgICAzOSAgICAgICAg
ZGVidWdnZXI7CisKK1JFU1VNRUQKKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IERlYnVnZ2VyLnN0
ZXBPdmVyLmNvbW1hcworUEFVU0VEIChkZWJ1Z2dlci1zdGF0ZW1lbnQpCitQQVVTRSBBVCB0ZXN0
Q29tbWFzOjQwOjUKKyAgICAgMzYgICAgfQorICAgICAzNyAgICAKKyAgICAgMzggICAgZnVuY3Rp
b24gdGVzdENvbW1hcygpIHsKKyAtPiAgMzkgICAgICAgIHxkZWJ1Z2dlcjsKKyAgICAgNDAgICAg
ICAgIGxldCBhID0gMSwKKyAgICAgNDEgICAgICAgICAgICBiID0gMiwKKyAgICAgNDIgICAgICAg
ICAgICBjID0gMzsKKworUEFVU0UgQVQgdGVzdENvbW1hczo0MTo1CisgICAgIDM3ICAgIAorICAg
ICAzOCAgICBmdW5jdGlvbiB0ZXN0Q29tbWFzKCkgeworICAgICAzOSAgICAgICAgZGVidWdnZXI7
CisgLT4gIDQwICAgICAgICB8bGV0IGEgPSAxLAorICAgICA0MSAgICAgICAgICAgIGIgPSAyLAor
ICAgICA0MiAgICAgICAgICAgIGMgPSAzOworICAgICA0MyAgICAgICAgdGVzdEFsZXJ0KCJjb21t
YSBsb2cgMSIpLCB0ZXN0QWxlcnQoImNvbW1hIGxvZyAyIiksIHRlc3RBbGVydCgiY29tbWEgbG9n
IDMiKTsKKworUEFVU0UgQVQgdGVzdENvbW1hczo0Mjo5CisgICAgIDM4ICAgIGZ1bmN0aW9uIHRl
c3RDb21tYXMoKSB7CisgICAgIDM5ICAgICAgICBkZWJ1Z2dlcjsKKyAgICAgNDAgICAgICAgIGxl
dCBhID0gMSwKKyAtPiAgNDEgICAgICAgICAgICB8YiA9IDIsCisgICAgIDQyICAgICAgICAgICAg
YyA9IDM7CisgICAgIDQzICAgICAgICB0ZXN0QWxlcnQoImNvbW1hIGxvZyAxIiksIHRlc3RBbGVy
dCgiY29tbWEgbG9nIDIiKSwgdGVzdEFsZXJ0KCJjb21tYSBsb2cgMyIpOworICAgICA0NCAgICB9
CisKK1BBVVNFIEFUIHRlc3RDb21tYXM6NDM6OQorICAgICAzOSAgICAgICAgZGVidWdnZXI7Cisg
ICAgIDQwICAgICAgICBsZXQgYSA9IDEsCisgICAgIDQxICAgICAgICAgICAgYiA9IDIsCisgLT4g
IDQyICAgICAgICAgICAgfGMgPSAzOworICAgICA0MyAgICAgICAgdGVzdEFsZXJ0KCJjb21tYSBs
b2cgMSIpLCB0ZXN0QWxlcnQoImNvbW1hIGxvZyAyIiksIHRlc3RBbGVydCgiY29tbWEgbG9nIDMi
KTsKKyAgICAgNDQgICAgfQorICAgICA0NSAgICAKKworUEFVU0UgQVQgdGVzdENvbW1hczo0NDo1
CisgICAgIDQwICAgICAgICBsZXQgYSA9IDEsCisgICAgIDQxICAgICAgICAgICAgYiA9IDIsCisg
ICAgIDQyICAgICAgICAgICAgYyA9IDM7CisgLT4gIDQzICAgICAgICB8dGVzdEFsZXJ0KCJjb21t
YSBsb2cgMSIpLCB0ZXN0QWxlcnQoImNvbW1hIGxvZyAyIiksIHRlc3RBbGVydCgiY29tbWEgbG9n
IDMiKTsKKyAgICAgNDQgICAgfQorICAgICA0NSAgICAKKyAgICAgNDYgICAgLy8gLS0tLS0tLS0t
CisKK1BBVVNFIEFUIHRlc3RDb21tYXM6NDQ6MzEKKyAgICAgNDAgICAgICAgIGxldCBhID0gMSwK
KyAgICAgNDEgICAgICAgICAgICBiID0gMiwKKyAgICAgNDIgICAgICAgICAgICBjID0gMzsKKyAt
PiAgNDMgICAgICAgIHRlc3RBbGVydCgiY29tbWEgbG9nIDEiKSwgfHRlc3RBbGVydCgiY29tbWEg
bG9nIDIiKSwgdGVzdEFsZXJ0KCJjb21tYSBsb2cgMyIpOworICAgICA0NCAgICB9CisgICAgIDQ1
ICAgIAorICAgICA0NiAgICAvLyAtLS0tLS0tLS0KKworUEFVU0UgQVQgdGVzdENvbW1hczo0NDo1
NworICAgICA0MCAgICAgICAgbGV0IGEgPSAxLAorICAgICA0MSAgICAgICAgICAgIGIgPSAyLAor
ICAgICA0MiAgICAgICAgICAgIGMgPSAzOworIC0+ICA0MyAgICAgICAgdGVzdEFsZXJ0KCJjb21t
YSBsb2cgMSIpLCB0ZXN0QWxlcnQoImNvbW1hIGxvZyAyIiksIHx0ZXN0QWxlcnQoImNvbW1hIGxv
ZyAzIik7CisgICAgIDQ0ICAgIH0KKyAgICAgNDUgICAgCisgICAgIDQ2ICAgIC8vIC0tLS0tLS0t
LQorCitQQVVTRSBBVCB0ZXN0Q29tbWFzOjQ1OjIKKyAgICAgNDEgICAgICAgICAgICBiID0gMiwK
KyAgICAgNDIgICAgICAgICAgICBjID0gMzsKKyAgICAgNDMgICAgICAgIHRlc3RBbGVydCgiY29t
bWEgbG9nIDEiKSwgdGVzdEFsZXJ0KCJjb21tYSBsb2cgMiIpLCB0ZXN0QWxlcnQoImNvbW1hIGxv
ZyAzIik7CisgLT4gIDQ0ICAgIH18CisgICAgIDQ1ICAgIAorICAgICA0NiAgICAvLyAtLS0tLS0t
LS0KKyAgICAgNDcgICAgCiAKIFJFU1VNRUQKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2RlYnVnZ2VyL3N0ZXBwaW5nL3N0ZXBPdmVyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcvc3RlcE92ZXIuaHRtbAppbmRleCA2Yjk0OTIzYjBjZS4u
MzI1Yjc3ZWNmM2MgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9z
dGVwcGluZy9zdGVwT3Zlci5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dl
ci9zdGVwcGluZy9zdGVwT3Zlci5odG1sCkBAIC04LDI3ICs4LDI3IEBAIGZ1bmN0aW9uIHRlc3RB
bGVydChzdHIpIHsKICAgICBhbGVydChzdHIpOwogfQogCi1mdW5jdGlvbiBlbnRyeTEoKSB7Citm
dW5jdGlvbiB0ZXN0U3RhdGVtZW50cygpIHsKICAgICBkZWJ1Z2dlcjsKICAgICBsZXQgeCA9IDE7
CiAgICAgbGV0IHkgPSAyOwogfQogCi1mdW5jdGlvbiBlbnRyeTIoKSB7CitmdW5jdGlvbiB0ZXN0
RnVuY3Rpb25zKCkgewogICAgIGRlYnVnZ2VyOwogICAgIGxldCBiZWZvcmUgPSAxOwotICAgIHRl
c3RBbGVydCgibG9nIDEiKTsKKyAgICB0ZXN0QWxlcnQoImZ1bmN0aW9uIGxvZyAxIik7CiAgICAg
bGV0IGFmdGVyID0gMjsKIH0KIAotZnVuY3Rpb24gZW50cnkzKCkgeworZnVuY3Rpb24gdGVzdEV2
YWwoKSB7CiAgICAgZGVidWdnZXI7CiAgICAgbGV0IGJlZm9yZSA9IDE7CiAgICAgZXZhbCgiMSAr
IDEiKTsKICAgICBsZXQgYWZ0ZXIgPSAyOwogfQogCi1mdW5jdGlvbiBlbnRyeTQoKSB7CitmdW5j
dGlvbiB0ZXN0TG9jYWxGdW5jdGlvbigpIHsKICAgICAoZnVuY3Rpb24oKSB7CiAgICAgICAgIGRl
YnVnZ2VyOwogICAgICAgICBsZXQgaW5uZXIgPSAxOwpAQCAtMzYsNiArMzYsMTQgQEAgZnVuY3Rp
b24gZW50cnk0KCkgewogICAgIGxldCBvdXRlciA9IDI7CiB9CiAKK2Z1bmN0aW9uIHRlc3RDb21t
YXMoKSB7CisgICAgZGVidWdnZXI7CisgICAgbGV0IGEgPSAxLAorICAgICAgICBiID0gMiwKKyAg
ICAgICAgYyA9IDM7CisgICAgdGVzdEFsZXJ0KCJjb21tYSBsb2cgMSIpLCB0ZXN0QWxlcnQoImNv
bW1hIGxvZyAyIiksIHRlc3RBbGVydCgiY29tbWEgbG9nIDMiKTsKK30KKwogLy8gLS0tLS0tLS0t
CiAKIGZ1bmN0aW9uIHRlc3QoKQpAQCAtNjksMjUgKzc3LDMxIEBAIGZ1bmN0aW9uIHRlc3QoKQog
ICAgIGFkZFRlc3RDYXNlKHsKICAgICAgICAgbmFtZTogIkRlYnVnZ2VyLnN0ZXBPdmVyLnN0YXRl
bWVudHMiLAogICAgICAgICBkZXNjcmlwdGlvbjogInN0ZXAtb3ZlciBzaG91bGQgc3RlcCBvdmVy
IHN0YXRlbWVudHMuIiwKLSAgICAgICAgZXhwcmVzc2lvbjogInNldFRpbWVvdXQoZW50cnkxKSIs
CisgICAgICAgIGV4cHJlc3Npb246ICJzZXRUaW1lb3V0KHRlc3RTdGF0ZW1lbnRzKSIsCiAgICAg
fSk7CiAKICAgICBhZGRUZXN0Q2FzZSh7CiAgICAgICAgIG5hbWU6ICJEZWJ1Z2dlci5zdGVwT3Zl
ci5mdW5jdGlvbiIsCiAgICAgICAgIGRlc2NyaXB0aW9uOiAic3RlcC1vdmVyIHNob3VsZCBzdGVw
IG92ZXIgZnVuY3Rpb24gY2FsbHMuIiwKLSAgICAgICAgZXhwcmVzc2lvbjogInNldFRpbWVvdXQo
ZW50cnkyKSIsCisgICAgICAgIGV4cHJlc3Npb246ICJzZXRUaW1lb3V0KHRlc3RGdW5jdGlvbnMp
IiwKICAgICB9KTsKIAogICAgIGFkZFRlc3RDYXNlKHsKICAgICAgICAgbmFtZTogIkRlYnVnZ2Vy
LnN0ZXBPdmVyLmV2YWwiLAogICAgICAgICBkZXNjcmlwdGlvbjogInN0ZXAtb3ZlciBzaG91bGQg
c3RlcCBvdmVyIGFuIGV2YWwgcHJvZ3JhbS4iLAotICAgICAgICBleHByZXNzaW9uOiAic2V0VGlt
ZW91dChlbnRyeTMpIiwKKyAgICAgICAgZXhwcmVzc2lvbjogInNldFRpbWVvdXQodGVzdEV2YWwp
IiwKICAgICB9KTsKIAogICAgIGFkZFRlc3RDYXNlKHsKICAgICAgICAgbmFtZTogIkRlYnVnZ2Vy
LnN0ZXBPdmVyLmlubmVyRnVuY3Rpb24iLAogICAgICAgICBkZXNjcmlwdGlvbjogInN0ZXAtb3Zl
ciBzaG91bGQgc3RlcCBvdXQgb2YgYSBmdW5jdGlvbiB0byBpdHMgY2FsbGVyLiIsCi0gICAgICAg
IGV4cHJlc3Npb246ICJzZXRUaW1lb3V0KGVudHJ5NCkiLAorICAgICAgICBleHByZXNzaW9uOiAi
c2V0VGltZW91dCh0ZXN0TG9jYWxGdW5jdGlvbikiLAorICAgIH0pOworCisgICAgYWRkVGVzdENh
c2UoeworICAgICAgICBuYW1lOiAiRGVidWdnZXIuc3RlcE92ZXIuY29tbWFzIiwKKyAgICAgICAg
ZGVzY3JpcHRpb246ICJzdGVwLW92ZXIgc2hvdWxkIHN0ZXAgb3ZlciBjb21tYSBleHByZXNzaW9u
cywgdHJlYXRpbmcgdGhlbSBhcyBzdGF0ZW1lbnRzLiIsCisgICAgICAgIGV4cHJlc3Npb246ICJz
ZXRUaW1lb3V0KHRlc3RDb21tYXMpIiwKICAgICB9KTsKIAogICAgIGxvYWRNYWluUGFnZUNvbnRl
bnQoKS50aGVuKCgpID0+IHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1
Z2dlci9zdGVwcGluZy9zdGVwcGluZy1jb250cm9sLWZsb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3N0ZXBwaW5nL3N0ZXBwaW5nLWNvbnRyb2wtZmxvdy1l
eHBlY3RlZC50eHQKaW5kZXggMjI3YWYwNGNlMmYuLjEwYTZlZmIyNDk1IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcvc3RlcHBpbmctY29udHJvbC1m
bG93LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc3Rl
cHBpbmcvc3RlcHBpbmctY29udHJvbC1mbG93LWV4cGVjdGVkLnR4dApAQCAtODEwLDcgKzgxMCw3
IEBAIFBBVVNFIEFUIGVudHJ5SWZXaXRoTm90T3BlcmF0aW9uOjEwODo5CiAgLT4gMTA3ICAgICAg
ICAgICAgfGEoKTsKICAgICAxMDggICAgfQogICAgIDEwOSAgICAKLSAgICAxMTAgICAgLy8gLS0t
LS0tLS0tCisgICAgMTEwICAgIGZ1bmN0aW9uIGVudHJ5SWZXaXRoQ29tbWFzKCkgewogCiBBQ1RJ
T046IHN0ZXAtb3ZlcgogUEFVU0UgQVQgZW50cnlJZldpdGhOb3RPcGVyYXRpb246MTA5OjIKQEAg
LTgxOSw4ICs4MTksNzUgQEAgUEFVU0UgQVQgZW50cnlJZldpdGhOb3RPcGVyYXRpb246MTA5OjIK
ICAgICAxMDcgICAgICAgICAgICBhKCk7CiAgLT4gMTA4ICAgIH18CiAgICAgMTA5ICAgIAotICAg
IDExMCAgICAvLyAtLS0tLS0tLS0KLSAgICAxMTEgICAgCisgICAgMTEwICAgIGZ1bmN0aW9uIGVu
dHJ5SWZXaXRoQ29tbWFzKCkgeworICAgIDExMSAgICAgICAgZGVidWdnZXI7CisKK0FDVElPTjog
cmVzdW1lCitSRVNVTUVECitQQVNTOiBTaG91bGQgaGF2ZSB1c2VkIGFsbCBzdGVwcy4KKworLS0g
UnVubmluZyB0ZXN0IGNhc2U6IERlYnVnZ2VyLnN0ZXBwaW5nLklmV2l0aENvbW1hcworRVhQUkVT
U0lPTjogc2V0VGltZW91dChlbnRyeUlmV2l0aENvbW1hcykKK1NURVBTOiBvdmVyLCBvdmVyLCBv
dmVyLCBvdmVyLCBvdmVyLCByZXN1bWUKK1BBVVNFRCAoZGVidWdnZXItc3RhdGVtZW50KQorUEFV
U0UgQVQgZW50cnlJZldpdGhDb21tYXM6MTEyOjUKKyAgICAxMDggICAgfQorICAgIDEwOSAgICAK
KyAgICAxMTAgICAgZnVuY3Rpb24gZW50cnlJZldpdGhDb21tYXMoKSB7CisgLT4gMTExICAgICAg
ICB8ZGVidWdnZXI7CisgICAgMTEyICAgICAgICBpZiAoYSgpLCBiKCksIGEoKSkKKyAgICAxMTMg
ICAgICAgICAgICBiKCk7CisgICAgMTE0ICAgIH0KKworQUNUSU9OOiBzdGVwLW92ZXIKK1BBVVNF
IEFUIGVudHJ5SWZXaXRoQ29tbWFzOjExMzo5CisgICAgMTA5ICAgIAorICAgIDExMCAgICBmdW5j
dGlvbiBlbnRyeUlmV2l0aENvbW1hcygpIHsKKyAgICAxMTEgICAgICAgIGRlYnVnZ2VyOworIC0+
IDExMiAgICAgICAgaWYgKHxhKCksIGIoKSwgYSgpKQorICAgIDExMyAgICAgICAgICAgIGIoKTsK
KyAgICAxMTQgICAgfQorICAgIDExNSAgICAKKworQUNUSU9OOiBzdGVwLW92ZXIKK1BBVVNFIEFU
IGVudHJ5SWZXaXRoQ29tbWFzOjExMzoxNAorICAgIDEwOSAgICAKKyAgICAxMTAgICAgZnVuY3Rp
b24gZW50cnlJZldpdGhDb21tYXMoKSB7CisgICAgMTExICAgICAgICBkZWJ1Z2dlcjsKKyAtPiAx
MTIgICAgICAgIGlmIChhKCksIHxiKCksIGEoKSkKKyAgICAxMTMgICAgICAgICAgICBiKCk7Cisg
ICAgMTE0ICAgIH0KKyAgICAxMTUgICAgCisKK0FDVElPTjogc3RlcC1vdmVyCitQQVVTRSBBVCBl
bnRyeUlmV2l0aENvbW1hczoxMTM6MTkKKyAgICAxMDkgICAgCisgICAgMTEwICAgIGZ1bmN0aW9u
IGVudHJ5SWZXaXRoQ29tbWFzKCkgeworICAgIDExMSAgICAgICAgZGVidWdnZXI7CisgLT4gMTEy
ICAgICAgICBpZiAoYSgpLCBiKCksIHxhKCkpCisgICAgMTEzICAgICAgICAgICAgYigpOworICAg
IDExNCAgICB9CisgICAgMTE1ICAgIAorCitBQ1RJT046IHN0ZXAtb3ZlcgorUEFVU0UgQVQgZW50
cnlJZldpdGhDb21tYXM6MTE0OjkKKyAgICAxMTAgICAgZnVuY3Rpb24gZW50cnlJZldpdGhDb21t
YXMoKSB7CisgICAgMTExICAgICAgICBkZWJ1Z2dlcjsKKyAgICAxMTIgICAgICAgIGlmIChhKCks
IGIoKSwgYSgpKQorIC0+IDExMyAgICAgICAgICAgIHxiKCk7CisgICAgMTE0ICAgIH0KKyAgICAx
MTUgICAgCisgICAgMTE2ICAgIC8vIC0tLS0tLS0tLQorCitBQ1RJT046IHN0ZXAtb3ZlcgorUEFV
U0UgQVQgZW50cnlJZldpdGhDb21tYXM6MTE1OjIKKyAgICAxMTEgICAgICAgIGRlYnVnZ2VyOwor
ICAgIDExMiAgICAgICAgaWYgKGEoKSwgYigpLCBhKCkpCisgICAgMTEzICAgICAgICAgICAgYigp
OworIC0+IDExNCAgICB9fAorICAgIDExNSAgICAKKyAgICAxMTYgICAgLy8gLS0tLS0tLS0tCisg
ICAgMTE3ICAgIAogCiBBQ1RJT046IHJlc3VtZQogUkVTVU1FRApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3N0ZXBwaW5nL3N0ZXBwaW5nLWNvbnRyb2wtZmxvdy5o
dG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3N0ZXBwaW5nL3N0ZXBwaW5nLWNv
bnRyb2wtZmxvdy5odG1sCmluZGV4IGZmMDc2MmUwODliLi40Y2M4N2RmMWE0NiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3N0ZXBwaW5nL3N0ZXBwaW5nLWNvbnRy
b2wtZmxvdy5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zdGVwcGlu
Zy9zdGVwcGluZy1jb250cm9sLWZsb3cuaHRtbApAQCAtMTA4LDYgKzEwOCwxMiBAQCBmdW5jdGlv
biBlbnRyeUlmV2l0aE5vdE9wZXJhdGlvbigpIHsKICAgICAgICAgYSgpOwogfQogCitmdW5jdGlv
biBlbnRyeUlmV2l0aENvbW1hcygpIHsKKyAgICBkZWJ1Z2dlcjsKKyAgICBpZiAoYSgpLCBiKCks
IGEoKSkKKyAgICAgICAgYigpOworfQorCiAvLyAtLS0tLS0tLS0KIAogZnVuY3Rpb24gdGVzdCgp
CkBAIC0yODYsNiArMjkyLDIwIEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICBdCiAgICAgfSk7
CiAKKyAgICBhZGRTdGVwcGluZ1Rlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIkRlYnVnZ2VyLnN0
ZXBwaW5nLklmV2l0aENvbW1hcyIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiU2hvdWxkIHBhdXNl
IGJlZm9yZSBlYWNoIGNvbW1hIHN1Yi1leHByZXNzaW9uLiIsCisgICAgICAgIGV4cHJlc3Npb246
ICJzZXRUaW1lb3V0KGVudHJ5SWZXaXRoQ29tbWFzKSIsCisgICAgICAgIHN0ZXBzOiBbCisgICAg
ICAgICAgICAib3ZlciIsCisgICAgICAgICAgICAgICAgIm92ZXIiLCAvLyBhKCkKKyAgICAgICAg
ICAgICAgICAib3ZlciIsIC8vIGIoKQorICAgICAgICAgICAgICAgICJvdmVyIiwgLy8gYSgpCisg
ICAgICAgICAgICAgICAgIm92ZXIiLCAvLyBhKCkgLSBsZWF2aW5nIGVudHJ5CisgICAgICAgICAg
ICAicmVzdW1lIiwKKyAgICAgICAgXQorICAgIH0pOworCiAgICAgbG9hZE1haW5QYWdlQ29udGVu
dCgpLnRoZW4oKCkgPT4gewogICAgICAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsK
ICAgICB9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zdGVw
cGluZy9zdGVwcGluZy1mdW5jdGlvbi1jYWxscy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcvc3RlcHBpbmctZnVuY3Rpb24tY2FsbHMtZXhwZWN0
ZWQudHh0CmluZGV4IGRmZDdkNDY5Y2RjLi5jODlhNmE3Y2U1NyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3N0ZXBwaW5nL3N0ZXBwaW5nLWZ1bmN0aW9uLWNhbGxz
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc3RlcHBp
bmcvc3RlcHBpbmctZnVuY3Rpb24tY2FsbHMtZXhwZWN0ZWQudHh0CkBAIC05NzUsNyArOTc1LDcg
QEAgUEFTUzogU2hvdWxkIGhhdmUgdXNlZCBhbGwgc3RlcHMuCiAKIC0tIFJ1bm5pbmcgdGVzdCBj
YXNlOiBEZWJ1Z2dlci5zdGVwcGluZy5Db21wbGV4U3RhdGVtZW50NAogRVhQUkVTU0lPTjogc2V0
VGltZW91dChlbnRyeUNvbW1hRXhwcmVzc2lvbikKLVNURVBTOiBvdmVyLCBvdmVyLCByZXN1bWUK
K1NURVBTOiBvdmVyLCBvdmVyLCBvdmVyLCBvdmVyLCByZXN1bWUKIFBBVVNFRCAoZGVidWdnZXIt
c3RhdGVtZW50KQogUEFVU0UgQVQgZW50cnlDb21tYUV4cHJlc3Npb246NTE6NQogICAgICA0NyAg
ICB9CkBAIC05OTYsNiArOTk2LDI2IEBAIFBBVVNFIEFUIGVudHJ5Q29tbWFFeHByZXNzaW9uOjUy
OjUKICAgICAgNTMgICAgCiAgICAgIDU0ICAgIGZ1bmN0aW9uIGVudHJ5RG90UHJvcGVydHlBY2Nl
c3NDYWxsKCkgewogCitBQ1RJT046IHN0ZXAtb3ZlcgorUEFVU0UgQVQgZW50cnlDb21tYUV4cHJl
c3Npb246NTI6MTAKKyAgICAgNDggICAgCisgICAgIDQ5ICAgIGZ1bmN0aW9uIGVudHJ5Q29tbWFF
eHByZXNzaW9uKCkgeworICAgICA1MCAgICAgICAgZGVidWdnZXI7CisgLT4gIDUxICAgICAgICBh
KCksIHxiKCksIGEoKTsKKyAgICAgNTIgICAgfQorICAgICA1MyAgICAKKyAgICAgNTQgICAgZnVu
Y3Rpb24gZW50cnlEb3RQcm9wZXJ0eUFjY2Vzc0NhbGwoKSB7CisKK0FDVElPTjogc3RlcC1vdmVy
CitQQVVTRSBBVCBlbnRyeUNvbW1hRXhwcmVzc2lvbjo1MjoxNQorICAgICA0OCAgICAKKyAgICAg
NDkgICAgZnVuY3Rpb24gZW50cnlDb21tYUV4cHJlc3Npb24oKSB7CisgICAgIDUwICAgICAgICBk
ZWJ1Z2dlcjsKKyAtPiAgNTEgICAgICAgIGEoKSwgYigpLCB8YSgpOworICAgICA1MiAgICB9Cisg
ICAgIDUzICAgIAorICAgICA1NCAgICBmdW5jdGlvbiBlbnRyeURvdFByb3BlcnR5QWNjZXNzQ2Fs
bCgpIHsKKwogQUNUSU9OOiBzdGVwLW92ZXIKIFBBVVNFIEFUIGVudHJ5Q29tbWFFeHByZXNzaW9u
OjUzOjIKICAgICAgNDkgICAgZnVuY3Rpb24gZW50cnlDb21tYUV4cHJlc3Npb24oKSB7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcvc3RlcHBpbmct
ZnVuY3Rpb24tY2FsbHMuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zdGVw
cGluZy9zdGVwcGluZy1mdW5jdGlvbi1jYWxscy5odG1sCmluZGV4IDBiNGQzOWM4ZGMwLi4xMWRj
YTQxYjZhNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3N0ZXBw
aW5nL3N0ZXBwaW5nLWZ1bmN0aW9uLWNhbGxzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RlYnVnZ2VyL3N0ZXBwaW5nL3N0ZXBwaW5nLWZ1bmN0aW9uLWNhbGxzLmh0bWwKQEAgLTMy
Nyw3ICszMjcsOSBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgLy8gYSgpLCBiKCksIGEoKTsK
ICAgICAgICAgc3RlcHM6IFsKICAgICAgICAgICAgICJvdmVyIiwKLSAgICAgICAgICAgICAgICAi
b3ZlciIsIC8vIGNvbXBsZXRlOiBhKCksIGIoKSwgYSgpCisgICAgICAgICAgICAgICAgIm92ZXIi
LCAvLyBhKCkKKyAgICAgICAgICAgICAgICAib3ZlciIsIC8vIGIoKQorICAgICAgICAgICAgICAg
ICJvdmVyIiwgLy8gYSgpCiAgICAgICAgICAgICAicmVzdW1lIgogICAgICAgICBdCiAgICAgfSk7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcvc3Rl
cHBpbmctbG9vcHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2Vy
L3N0ZXBwaW5nL3N0ZXBwaW5nLWxvb3BzLWV4cGVjdGVkLnR4dAppbmRleCBhYjAyOTdlNDUxMS4u
Y2ViM2I4OTYyNDYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9z
dGVwcGluZy9zdGVwcGluZy1sb29wcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2RlYnVnZ2VyL3N0ZXBwaW5nL3N0ZXBwaW5nLWxvb3BzLWV4cGVjdGVkLnR4dApAQCAt
ODM4LDggKzgzOCwxNzUgQEAgUEFVU0UgQVQgZW50cnlGb3JCcmVha0NvbnRpbnVlOjc1OjIKICAg
ICAgNzMgICAgICAgIH0KICAtPiAgNzQgICAgfXwKICAgICAgNzUgICAgCi0gICAgIDc2ICAgIC8v
IC0tLS0tLS0tLQotICAgICA3NyAgICAKKyAgICAgNzYgICAgZnVuY3Rpb24gZW50cnlGb3JXaXRo
Q29tbWFzKCkgeworICAgICA3NyAgICAgICAgZGVidWdnZXI7CisKK0FDVElPTjogcmVzdW1lCitS
RVNVTUVECitQQVNTOiBTaG91bGQgaGF2ZSB1c2VkIGFsbCBzdGVwcy4KKworLS0gUnVubmluZyB0
ZXN0IGNhc2U6IERlYnVnZ2VyLnN0ZXBwaW5nLkZvcldpdGhDb21tYXNTdGVwT3ZlcgorRVhQUkVT
U0lPTjogc2V0VGltZW91dChlbnRyeUZvcldpdGhDb21tYXMpCitTVEVQUzogb3Zlciwgb3Zlciwg
b3Zlciwgb3Zlciwgb3Zlciwgb3Zlciwgb3Zlciwgb3Zlciwgb3Zlciwgb3Zlciwgb3Zlciwgb3Zl
ciwgb3Zlciwgb3Zlciwgb3ZlciwgcmVzdW1lCitQQVVTRUQgKGRlYnVnZ2VyLXN0YXRlbWVudCkK
K1BBVVNFIEFUIGVudHJ5Rm9yV2l0aENvbW1hczo3ODo1CisgICAgIDc0ICAgIH0KKyAgICAgNzUg
ICAgCisgICAgIDc2ICAgIGZ1bmN0aW9uIGVudHJ5Rm9yV2l0aENvbW1hcygpIHsKKyAtPiAgNzcg
ICAgICAgIHxkZWJ1Z2dlcjsKKyAgICAgNzggICAgICAgIGZvciAobGV0IGkgPSAwLCBsZW5ndGgg
PSAwOyBsZW5ndGggPSAyLCBpIDwgbGVuZ3RoOyBsZW5ndGggPSAxLCArK2kpCisgICAgIDc5ICAg
ICAgICAgICAgYSgpOworICAgICA4MCAgICB9CisKK0FDVElPTjogc3RlcC1vdmVyCitQQVVTRSBB
VCBlbnRyeUZvcldpdGhDb21tYXM6Nzk6MTAKKyAgICAgNzUgICAgCisgICAgIDc2ICAgIGZ1bmN0
aW9uIGVudHJ5Rm9yV2l0aENvbW1hcygpIHsKKyAgICAgNzcgICAgICAgIGRlYnVnZ2VyOworIC0+
ICA3OCAgICAgICAgZm9yICh8bGV0IGkgPSAwLCBsZW5ndGggPSAwOyBsZW5ndGggPSAyLCBpIDwg
bGVuZ3RoOyBsZW5ndGggPSAxLCArK2kpCisgICAgIDc5ICAgICAgICAgICAgYSgpOworICAgICA4
MCAgICB9CisgICAgIDgxICAgIAorCitBQ1RJT046IHN0ZXAtb3ZlcgorUEFVU0UgQVQgZW50cnlG
b3JXaXRoQ29tbWFzOjc5OjIxCisgICAgIDc1ICAgIAorICAgICA3NiAgICBmdW5jdGlvbiBlbnRy
eUZvcldpdGhDb21tYXMoKSB7CisgICAgIDc3ICAgICAgICBkZWJ1Z2dlcjsKKyAtPiAgNzggICAg
ICAgIGZvciAobGV0IGkgPSAwLCB8bGVuZ3RoID0gMDsgbGVuZ3RoID0gMiwgaSA8IGxlbmd0aDsg
bGVuZ3RoID0gMSwgKytpKQorICAgICA3OSAgICAgICAgICAgIGEoKTsKKyAgICAgODAgICAgfQor
ICAgICA4MSAgICAKKworQUNUSU9OOiBzdGVwLW92ZXIKK1BBVVNFIEFUIGVudHJ5Rm9yV2l0aENv
bW1hczo3OTozMworICAgICA3NSAgICAKKyAgICAgNzYgICAgZnVuY3Rpb24gZW50cnlGb3JXaXRo
Q29tbWFzKCkgeworICAgICA3NyAgICAgICAgZGVidWdnZXI7CisgLT4gIDc4ICAgICAgICBmb3Ig
KGxldCBpID0gMCwgbGVuZ3RoID0gMDsgfGxlbmd0aCA9IDIsIGkgPCBsZW5ndGg7IGxlbmd0aCA9
IDEsICsraSkKKyAgICAgNzkgICAgICAgICAgICBhKCk7CisgICAgIDgwICAgIH0KKyAgICAgODEg
ICAgCisKK0FDVElPTjogc3RlcC1vdmVyCitQQVVTRSBBVCBlbnRyeUZvcldpdGhDb21tYXM6Nzk6
NDUKKyAgICAgNzUgICAgCisgICAgIDc2ICAgIGZ1bmN0aW9uIGVudHJ5Rm9yV2l0aENvbW1hcygp
IHsKKyAgICAgNzcgICAgICAgIGRlYnVnZ2VyOworIC0+ICA3OCAgICAgICAgZm9yIChsZXQgaSA9
IDAsIGxlbmd0aCA9IDA7IGxlbmd0aCA9IDIsIHxpIDwgbGVuZ3RoOyBsZW5ndGggPSAxLCArK2kp
CisgICAgIDc5ICAgICAgICAgICAgYSgpOworICAgICA4MCAgICB9CisgICAgIDgxICAgIAorCitB
Q1RJT046IHN0ZXAtb3ZlcgorUEFVU0UgQVQgZW50cnlGb3JXaXRoQ29tbWFzOjgwOjkKKyAgICAg
NzYgICAgZnVuY3Rpb24gZW50cnlGb3JXaXRoQ29tbWFzKCkgeworICAgICA3NyAgICAgICAgZGVi
dWdnZXI7CisgICAgIDc4ICAgICAgICBmb3IgKGxldCBpID0gMCwgbGVuZ3RoID0gMDsgbGVuZ3Ro
ID0gMiwgaSA8IGxlbmd0aDsgbGVuZ3RoID0gMSwgKytpKQorIC0+ICA3OSAgICAgICAgICAgIHxh
KCk7CisgICAgIDgwICAgIH0KKyAgICAgODEgICAgCisgICAgIDgyICAgIC8vIC0tLS0tLS0tLQor
CitBQ1RJT046IHN0ZXAtb3ZlcgorUEFVU0UgQVQgZW50cnlGb3JXaXRoQ29tbWFzOjc5OjU3Cisg
ICAgIDc1ICAgIAorICAgICA3NiAgICBmdW5jdGlvbiBlbnRyeUZvcldpdGhDb21tYXMoKSB7Cisg
ICAgIDc3ICAgICAgICBkZWJ1Z2dlcjsKKyAtPiAgNzggICAgICAgIGZvciAobGV0IGkgPSAwLCBs
ZW5ndGggPSAwOyBsZW5ndGggPSAyLCBpIDwgbGVuZ3RoOyB8bGVuZ3RoID0gMSwgKytpKQorICAg
ICA3OSAgICAgICAgICAgIGEoKTsKKyAgICAgODAgICAgfQorICAgICA4MSAgICAKKworQUNUSU9O
OiBzdGVwLW92ZXIKK1BBVVNFIEFUIGVudHJ5Rm9yV2l0aENvbW1hczo3OTo2OQorICAgICA3NSAg
ICAKKyAgICAgNzYgICAgZnVuY3Rpb24gZW50cnlGb3JXaXRoQ29tbWFzKCkgeworICAgICA3NyAg
ICAgICAgZGVidWdnZXI7CisgLT4gIDc4ICAgICAgICBmb3IgKGxldCBpID0gMCwgbGVuZ3RoID0g
MDsgbGVuZ3RoID0gMiwgaSA8IGxlbmd0aDsgbGVuZ3RoID0gMSwgfCsraSkKKyAgICAgNzkgICAg
ICAgICAgICBhKCk7CisgICAgIDgwICAgIH0KKyAgICAgODEgICAgCisKK0FDVElPTjogc3RlcC1v
dmVyCitQQVVTRSBBVCBlbnRyeUZvcldpdGhDb21tYXM6Nzk6MzMKKyAgICAgNzUgICAgCisgICAg
IDc2ICAgIGZ1bmN0aW9uIGVudHJ5Rm9yV2l0aENvbW1hcygpIHsKKyAgICAgNzcgICAgICAgIGRl
YnVnZ2VyOworIC0+ICA3OCAgICAgICAgZm9yIChsZXQgaSA9IDAsIGxlbmd0aCA9IDA7IHxsZW5n
dGggPSAyLCBpIDwgbGVuZ3RoOyBsZW5ndGggPSAxLCArK2kpCisgICAgIDc5ICAgICAgICAgICAg
YSgpOworICAgICA4MCAgICB9CisgICAgIDgxICAgIAorCitBQ1RJT046IHN0ZXAtb3ZlcgorUEFV
U0UgQVQgZW50cnlGb3JXaXRoQ29tbWFzOjc5OjQ1CisgICAgIDc1ICAgIAorICAgICA3NiAgICBm
dW5jdGlvbiBlbnRyeUZvcldpdGhDb21tYXMoKSB7CisgICAgIDc3ICAgICAgICBkZWJ1Z2dlcjsK
KyAtPiAgNzggICAgICAgIGZvciAobGV0IGkgPSAwLCBsZW5ndGggPSAwOyBsZW5ndGggPSAyLCB8
aSA8IGxlbmd0aDsgbGVuZ3RoID0gMSwgKytpKQorICAgICA3OSAgICAgICAgICAgIGEoKTsKKyAg
ICAgODAgICAgfQorICAgICA4MSAgICAKKworQUNUSU9OOiBzdGVwLW92ZXIKK1BBVVNFIEFUIGVu
dHJ5Rm9yV2l0aENvbW1hczo4MDo5CisgICAgIDc2ICAgIGZ1bmN0aW9uIGVudHJ5Rm9yV2l0aENv
bW1hcygpIHsKKyAgICAgNzcgICAgICAgIGRlYnVnZ2VyOworICAgICA3OCAgICAgICAgZm9yIChs
ZXQgaSA9IDAsIGxlbmd0aCA9IDA7IGxlbmd0aCA9IDIsIGkgPCBsZW5ndGg7IGxlbmd0aCA9IDEs
ICsraSkKKyAtPiAgNzkgICAgICAgICAgICB8YSgpOworICAgICA4MCAgICB9CisgICAgIDgxICAg
IAorICAgICA4MiAgICAvLyAtLS0tLS0tLS0KKworQUNUSU9OOiBzdGVwLW92ZXIKK1BBVVNFIEFU
IGVudHJ5Rm9yV2l0aENvbW1hczo3OTo1NworICAgICA3NSAgICAKKyAgICAgNzYgICAgZnVuY3Rp
b24gZW50cnlGb3JXaXRoQ29tbWFzKCkgeworICAgICA3NyAgICAgICAgZGVidWdnZXI7CisgLT4g
IDc4ICAgICAgICBmb3IgKGxldCBpID0gMCwgbGVuZ3RoID0gMDsgbGVuZ3RoID0gMiwgaSA8IGxl
bmd0aDsgfGxlbmd0aCA9IDEsICsraSkKKyAgICAgNzkgICAgICAgICAgICBhKCk7CisgICAgIDgw
ICAgIH0KKyAgICAgODEgICAgCisKK0FDVElPTjogc3RlcC1vdmVyCitQQVVTRSBBVCBlbnRyeUZv
cldpdGhDb21tYXM6Nzk6NjkKKyAgICAgNzUgICAgCisgICAgIDc2ICAgIGZ1bmN0aW9uIGVudHJ5
Rm9yV2l0aENvbW1hcygpIHsKKyAgICAgNzcgICAgICAgIGRlYnVnZ2VyOworIC0+ICA3OCAgICAg
ICAgZm9yIChsZXQgaSA9IDAsIGxlbmd0aCA9IDA7IGxlbmd0aCA9IDIsIGkgPCBsZW5ndGg7IGxl
bmd0aCA9IDEsIHwrK2kpCisgICAgIDc5ICAgICAgICAgICAgYSgpOworICAgICA4MCAgICB9Cisg
ICAgIDgxICAgIAorCitBQ1RJT046IHN0ZXAtb3ZlcgorUEFVU0UgQVQgZW50cnlGb3JXaXRoQ29t
bWFzOjc5OjMzCisgICAgIDc1ICAgIAorICAgICA3NiAgICBmdW5jdGlvbiBlbnRyeUZvcldpdGhD
b21tYXMoKSB7CisgICAgIDc3ICAgICAgICBkZWJ1Z2dlcjsKKyAtPiAgNzggICAgICAgIGZvciAo
bGV0IGkgPSAwLCBsZW5ndGggPSAwOyB8bGVuZ3RoID0gMiwgaSA8IGxlbmd0aDsgbGVuZ3RoID0g
MSwgKytpKQorICAgICA3OSAgICAgICAgICAgIGEoKTsKKyAgICAgODAgICAgfQorICAgICA4MSAg
ICAKKworQUNUSU9OOiBzdGVwLW92ZXIKK1BBVVNFIEFUIGVudHJ5Rm9yV2l0aENvbW1hczo3OTo0
NQorICAgICA3NSAgICAKKyAgICAgNzYgICAgZnVuY3Rpb24gZW50cnlGb3JXaXRoQ29tbWFzKCkg
eworICAgICA3NyAgICAgICAgZGVidWdnZXI7CisgLT4gIDc4ICAgICAgICBmb3IgKGxldCBpID0g
MCwgbGVuZ3RoID0gMDsgbGVuZ3RoID0gMiwgfGkgPCBsZW5ndGg7IGxlbmd0aCA9IDEsICsraSkK
KyAgICAgNzkgICAgICAgICAgICBhKCk7CisgICAgIDgwICAgIH0KKyAgICAgODEgICAgCisKK0FD
VElPTjogc3RlcC1vdmVyCitQQVVTRSBBVCBlbnRyeUZvcldpdGhDb21tYXM6ODE6MgorICAgICA3
NyAgICAgICAgZGVidWdnZXI7CisgICAgIDc4ICAgICAgICBmb3IgKGxldCBpID0gMCwgbGVuZ3Ro
ID0gMDsgbGVuZ3RoID0gMiwgaSA8IGxlbmd0aDsgbGVuZ3RoID0gMSwgKytpKQorICAgICA3OSAg
ICAgICAgICAgIGEoKTsKKyAtPiAgODAgICAgfXwKKyAgICAgODEgICAgCisgICAgIDgyICAgIC8v
IC0tLS0tLS0tLQorICAgICA4MyAgICAKIAogQUNUSU9OOiByZXN1bWUKIFJFU1VNRUQKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zdGVwcGluZy9zdGVwcGluZy1s
b29wcy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3N0ZXBwaW5nL3N0ZXBw
aW5nLWxvb3BzLmh0bWwKaW5kZXggMzJkODQzMDMyZjkuLjFmY2I3ZjdkNWQxIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcvc3RlcHBpbmctbG9vcHMu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcvc3RlcHBp
bmctbG9vcHMuaHRtbApAQCAtNzQsNiArNzQsMTIgQEAgZnVuY3Rpb24gZW50cnlGb3JCcmVha0Nv
bnRpbnVlKCkgewogICAgIH0KIH0KIAorZnVuY3Rpb24gZW50cnlGb3JXaXRoQ29tbWFzKCkgewor
ICAgIGRlYnVnZ2VyOworICAgIGZvciAobGV0IGkgPSAwLCBsZW5ndGggPSAwOyBsZW5ndGggPSAy
LCBpIDwgbGVuZ3RoOyBsZW5ndGggPSAxLCArK2kpCisgICAgICAgIGEoKTsKK30KKwogLy8gLS0t
LS0tLS0tCiAKIGZ1bmN0aW9uIHRlc3QoKQpAQCAtMjM0LDYgKzI0MCwzMCBAQCBmdW5jdGlvbiB0
ZXN0KCkKICAgICAgICAgXQogICAgIH0pOwogCisgICAgYWRkU3RlcHBpbmdUZXN0Q2FzZSh7Cisg
ICAgICAgIG5hbWU6ICJEZWJ1Z2dlci5zdGVwcGluZy5Gb3JXaXRoQ29tbWFzU3RlcE92ZXIiLAor
ICAgICAgICBkZXNjcmlwdGlvbjogIlNob3VsZCBiZSBhYmxlIHRvIHN0ZXAgb3ZlciBldmVyeSBj
b21tYSBzZXBhcmF0ZWQgaW5pdCBhbmQgY29uZGl0aW9uIGluIHRyYWRpdGlvbmFsIGZvciBsb29w
cy4iLAorICAgICAgICBleHByZXNzaW9uOiAic2V0VGltZW91dChlbnRyeUZvcldpdGhDb21tYXMp
IiwKKyAgICAgICAgc3RlcHM6IFsKKyAgICAgICAgICAgICJvdmVyIiwKKyAgICAgICAgICAgICAg
ICAib3ZlciIsIC8vIGNvbXBsZXRlOiBsZXQgaSA9IDAKKyAgICAgICAgICAgICAgICAib3ZlciIs
IC8vIGNvbXBsZXRlOiBsZW5ndGggPSAwCisgICAgICAgICAgICAgICAgIm92ZXIiLCAvLyBjb21w
bGV0ZTogbGVuZ3RoID0gMgorICAgICAgICAgICAgICAgICJvdmVyIiwgLy8gY29tcGxldGU6IGkg
PCBsZW5ndGgKKyAgICAgICAgICAgICAgICAib3ZlciIsIC8vIGNvbXBsZXRlOiBhKCkKKyAgICAg
ICAgICAgICAgICAib3ZlciIsIC8vIGNvbXBsZXRlOiBsZW5ndGggPSAxCisgICAgICAgICAgICAg
ICAgIm92ZXIiLCAvLyBjb21wbGV0ZTogKytpCisgICAgICAgICAgICAgICAgIm92ZXIiLCAvLyBj
b21wbGV0ZTogbGVuZ3RoID0gMgorICAgICAgICAgICAgICAgICJvdmVyIiwgLy8gY29tcGxldGU6
IGkgPCBsZW5ndGggW2k9MV0KKyAgICAgICAgICAgICAgICAib3ZlciIsIC8vIGNvbXBsZXRlOiBh
KCkKKyAgICAgICAgICAgICAgICAib3ZlciIsIC8vIGNvbXBsZXRlOiBsZW5ndGggPSAxCisgICAg
ICAgICAgICAgICAgIm92ZXIiLCAvLyBjb21wbGV0ZTogKytpCisgICAgICAgICAgICAgICAgIm92
ZXIiLCAvLyBjb21wbGV0ZTogbGVuZ3RoID0gMgorICAgICAgICAgICAgICAgICJvdmVyIiwgLy8g
Y29tcGxldGU6IGkgPCBsZW5ndGggW2k9Ml0gLSBsZWF2aW5nIGVudHJ5CisgICAgICAgICAgICAi
cmVzdW1lIiwKKyAgICAgICAgXQorICAgIH0pOworCiAgICAgbG9hZE1haW5QYWdlQ29udGVudCgp
LnRoZW4oKCkgPT4gewogICAgICAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKICAg
ICB9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zdGVwcGlu
Zy9zdGVwcGluZy1taXNjLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1
Z2dlci9zdGVwcGluZy9zdGVwcGluZy1taXNjLWV4cGVjdGVkLnR4dAppbmRleCA1NDdmM2JjYjA1
OC4uYjBiNGZlZDJmOGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dl
ci9zdGVwcGluZy9zdGVwcGluZy1taXNjLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcvc3RlcHBpbmctbWlzYy1leHBlY3RlZC50eHQKQEAg
LTM4OSw3ICszODksNyBAQCBQQVNTOiBTaG91bGQgaGF2ZSB1c2VkIGFsbCBzdGVwcy4KIAogLS0g
UnVubmluZyB0ZXN0IGNhc2U6IERlYnVnZ2VyLnN0ZXBwaW5nLlZhcmlhYmxlRGVjbGFyYXRpb24K
IEVYUFJFU1NJT046IHNldFRpbWVvdXQoZW50cnlWYXJpYWJsZURlY2xhcmF0aW9uKQotU1RFUFM6
IG92ZXIsIGluLCBpbiwgaW4sIHJlc3VtZQorU1RFUFM6IG92ZXIsIGluLCBpbiwgaW4sIGluLCBp
biwgaW4sIHJlc3VtZQogUEFVU0VEIChkZWJ1Z2dlci1zdGF0ZW1lbnQpCiBQQVVTRSBBVCBlbnRy
eVZhcmlhYmxlRGVjbGFyYXRpb246NTg6NQogICAgICA1NCAgICB9CkBAIC00MTAsNiArNDEwLDE2
IEBAIFBBVVNFIEFUIGVudHJ5VmFyaWFibGVEZWNsYXJhdGlvbjo1OTo1CiAgICAgIDYwICAgICAg
ICBsZXQgYiA9IDIsCiAgICAgIDYxICAgICAgICAgICAgeSA9IDI7CiAKK0FDVElPTjogc3RlcC1p
bgorUEFVU0UgQVQgZW50cnlWYXJpYWJsZURlY2xhcmF0aW9uOjYwOjkKKyAgICAgNTYgICAgZnVu
Y3Rpb24gZW50cnlWYXJpYWJsZURlY2xhcmF0aW9uKCkgeworICAgICA1NyAgICAgICAgZGVidWdn
ZXI7CisgICAgIDU4ICAgICAgICB2YXIgYSA9IDEsCisgLT4gIDU5ICAgICAgICAgICAgfHggPSAx
OworICAgICA2MCAgICAgICAgbGV0IGIgPSAyLAorICAgICA2MSAgICAgICAgICAgIHkgPSAyOwor
ICAgICA2MiAgICAgICAgY29uc3QgYyA9IDMsCisKIEFDVElPTjogc3RlcC1pbgogUEFVU0UgQVQg
ZW50cnlWYXJpYWJsZURlY2xhcmF0aW9uOjYxOjUKICAgICAgNTcgICAgICAgIGRlYnVnZ2VyOwpA
QCAtNDIwLDYgKzQzMCwxNiBAQCBQQVVTRSBBVCBlbnRyeVZhcmlhYmxlRGVjbGFyYXRpb246NjE6
NQogICAgICA2MiAgICAgICAgY29uc3QgYyA9IDMsCiAgICAgIDYzICAgICAgICAgICAgeiA9IDM7
CiAKK0FDVElPTjogc3RlcC1pbgorUEFVU0UgQVQgZW50cnlWYXJpYWJsZURlY2xhcmF0aW9uOjYy
OjkKKyAgICAgNTggICAgICAgIHZhciBhID0gMSwKKyAgICAgNTkgICAgICAgICAgICB4ID0gMTsK
KyAgICAgNjAgICAgICAgIGxldCBiID0gMiwKKyAtPiAgNjEgICAgICAgICAgICB8eSA9IDI7Cisg
ICAgIDYyICAgICAgICBjb25zdCBjID0gMywKKyAgICAgNjMgICAgICAgICAgICB6ID0gMzsKKyAg
ICAgNjQgICAgfQorCiBBQ1RJT046IHN0ZXAtaW4KIFBBVVNFIEFUIGVudHJ5VmFyaWFibGVEZWNs
YXJhdGlvbjo2Mzo1CiAgICAgIDU5ICAgICAgICAgICAgeCA9IDE7CkBAIC00MzAsNiArNDUwLDE2
IEBAIFBBVVNFIEFUIGVudHJ5VmFyaWFibGVEZWNsYXJhdGlvbjo2Mzo1CiAgICAgIDY0ICAgIH0K
ICAgICAgNjUgICAgCiAKK0FDVElPTjogc3RlcC1pbgorUEFVU0UgQVQgZW50cnlWYXJpYWJsZURl
Y2xhcmF0aW9uOjY0OjkKKyAgICAgNjAgICAgICAgIGxldCBiID0gMiwKKyAgICAgNjEgICAgICAg
ICAgICB5ID0gMjsKKyAgICAgNjIgICAgICAgIGNvbnN0IGMgPSAzLAorIC0+ICA2MyAgICAgICAg
ICAgIHx6ID0gMzsKKyAgICAgNjQgICAgfQorICAgICA2NSAgICAKKyAgICAgNjYgICAgZnVuY3Rp
b24gZW50cnlEZXN0cnVjdHVyaW5nKCkgeworCiBBQ1RJT046IHN0ZXAtaW4KIFBBVVNFIEFUIGVu
dHJ5VmFyaWFibGVEZWNsYXJhdGlvbjo2NToyCiAgICAgIDYxICAgICAgICAgICAgeSA9IDI7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcvc3RlcHBp
bmctbWlzYy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3N0ZXBwaW5nL3N0
ZXBwaW5nLW1pc2MuaHRtbAppbmRleCAyNzNiOWU2MTg5MC4uZjY5MGFhNmM2ZWUgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zdGVwcGluZy9zdGVwcGluZy1taXNj
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3N0ZXBwaW5nL3N0ZXBw
aW5nLW1pc2MuaHRtbApAQCAtMTg0LDE0ICsxODQsMTYgQEAgZnVuY3Rpb24gdGVzdCgpCiAKICAg
ICBhZGRTdGVwcGluZ1Rlc3RDYXNlKHsKICAgICAgICAgbmFtZTogIkRlYnVnZ2VyLnN0ZXBwaW5n
LlZhcmlhYmxlRGVjbGFyYXRpb24iLAotICAgICAgICBkZXNjcmlwdGlvbjogIlNob3VsZCBiZSBh
YmxlIHRvIHN0ZXAgdGhyb3VnaCB2YXJpYWJsZSBkZWNsYXJhdGlvbnMuIiwKKyAgICAgICAgZGVz
Y3JpcHRpb246ICJTaG91bGQgYmUgYWJsZSB0byBzdGVwIHRvIGVhY2ggaW5kaXZpZHVhbCB2YXJp
YWJsZSBkZWNsYXJhdGlvbi4iLAogICAgICAgICBleHByZXNzaW9uOiAic2V0VGltZW91dChlbnRy
eVZhcmlhYmxlRGVjbGFyYXRpb24pIiwKICAgICAgICAgc3RlcHM6IFsKICAgICAgICAgICAgICJv
dmVyIiwKLSAgICAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IE9wcG9ydHVuaXR5IHRvIHBh
dXNlIGF0IGFzc2lnbm1lbnQgZXhwcmVzc2lvbnMuCi0gICAgICAgICAgICAgICAgImluIiwgIC8v
IGEgPSAxLCB4ID0gMQotICAgICAgICAgICAgICAgICJpbiIsICAvLyBiID0gMiwgeSA9IDIKLSAg
ICAgICAgICAgICAgICAiaW4iLCAgLy8gYyA9IDMsIHogPSAzCisgICAgICAgICAgICAgICAgImlu
IiwgIC8vIGEgPSAxCisgICAgICAgICAgICAgICAgImluIiwgIC8vIHggPSAxCisgICAgICAgICAg
ICAgICAgImluIiwgIC8vIGIgPSAyCisgICAgICAgICAgICAgICAgImluIiwgIC8vIHkgPSAyCisg
ICAgICAgICAgICAgICAgImluIiwgIC8vIGMgPSAzCisgICAgICAgICAgICAgICAgImluIiwgIC8v
IHogPSAzCiAgICAgICAgICAgICAicmVzdW1lIiwKICAgICAgICAgXQogICAgIH0pOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3Jp
cHQtdGVzdHMvZm9yLXN0YXRlbWVudHMtZXhwZWN0ZWQuanMgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy9mb3Itc3RhdGVtZW50cy1l
eHBlY3RlZC5qcwppbmRleCBmZmU0YmQwOGM0OC4uYWM4ODdjNTdiZWQgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3Rz
L2Zvci1zdGF0ZW1lbnRzLWV4cGVjdGVkLmpzCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9m
b3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL2Zvci1zdGF0ZW1lbnRzLWV4cGVj
dGVkLmpzCkBAIC02NiwzMSArNjYsNTggQEAgZm9yICgxOyAyOyAzKSB7CiAgICAgMQogfQogCitm
b3IgKHZhciB4ID0gMTsgeCA8IDEwOyArK3gpCisgICAgMTsKIGZvciAodmFyIHggPSAxOyB4IDwg
bGVuOyArK3gpCiAgICAgMTsKIGZvciAodmFyIHggPSAxLCBsZW4gPSAxMDsgeCA8IGxlbjsgKyt4
KQogICAgIDE7Citmb3IgKHZhciB4ID0gMSwgbGVuID0gMTA7IGxlbiA9IDIwLCB4IDwgbGVuOyAr
K3gpCisgICAgMTsKK2ZvciAodmFyIHggPSAxLCBsZW4gPSAxMDsgbGVuID0gMjAsIHggPCBsZW47
IGxlbiA9IDE1LCArK3gpCisgICAgMTsKIAorZm9yICh4ID0gMTsgeCA8IDEwOyArK3gpIHsKKyAg
ICAxCit9CiBmb3IgKHggPSAxOyB4IDwgbGVuOyArK3gpIHsKICAgICAxCiB9CiBmb3IgKHggPSAx
LCBsZW4gPSAxMDsgeCA8IGxlbjsgKyt4KSB7CiAgICAgMQogfQorZm9yICh4ID0gMSwgbGVuID0g
MTA7IGxlbiA9IDIwLCB4IDwgbGVuOyArK3gpIHsKKyAgICAxCit9Citmb3IgKHggPSAxLCBsZW4g
PSAxMDsgbGVuID0gMjAsIHggPCBsZW47IGxlbiA9IDE1LCArK3gpIHsKKyAgICAxCit9CiAKK2Zv
ciAodmFyIHggPSAxOyB4IDwgMTA7ICsreCkgeworICAgIDEKK30KIGZvciAodmFyIHggPSAxOyB4
IDwgbGVuOyArK3gpIHsKICAgICAxCiB9CiBmb3IgKHZhciB4ID0gMSwgbGVuID0gMTA7IHggPCBs
ZW47ICsreCkgewogICAgIDEKIH0KK2ZvciAodmFyIHggPSAxLCBsZW4gPSAxMDsgbGVuID0gMjAs
IHggPCBsZW47IGxlbiA9IDE1LCArK3gpIHsKKyAgICAxCit9CiAKK2ZvciAodmFyIHggPSAxOyB4
IDwgMTA7ICsreCkgeworICAgIDEKK30KIGZvciAodmFyIHggPSAxOyB4IDwgbGVuOyArK3gpIHsK
ICAgICAxCiB9CiBmb3IgKHZhciB4ID0gMSwgbGVuID0gMTA7IHggPCBsZW47ICsreCkgewogICAg
IDEKIH0KK2ZvciAodmFyIHggPSAxLCBsZW4gPSAxMDsgbGVuID0gMjAsIHggPCBsZW47IGxlbiA9
IDE1LCArK3gpIHsKKyAgICAxCit9CiAKIGZvciAoMTsgMjsgMykKICAgICBmb3IgKDQ7IDU7IDYp
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMv
amF2YXNjcmlwdC10ZXN0cy9mb3Itc3RhdGVtZW50cy5qcyBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL2Zvci1zdGF0ZW1lbnRzLmpz
CmluZGV4IDFiNDJkM2QwN2I3Li43OTBjMjg5M2RiNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvZm9yLXN0YXRl
bWVudHMuanMKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2Vz
L2phdmFzY3JpcHQtdGVzdHMvZm9yLXN0YXRlbWVudHMuanMKQEAgLTM0LDE3ICszNCwyNyBAQCBm
b3IoKDEpOygyKTsoMykpIHsxfQogZm9yICggMSA7IDIgOyAzICkgMQogZm9yICggMSA7IDIgOyAz
ICkgezF9CiAKK2Zvcih2YXIgeD0xO3g8MTA7Kyt4KTE7CiBmb3IodmFyIHg9MTt4PGxlbjsrK3gp
MTsKIGZvcih2YXIgeD0xLGxlbj0xMDt4PGxlbjsrK3gpMTsKK2Zvcih2YXIgeD0xLGxlbj0xMDts
ZW49MjAseDxsZW47Kyt4KTE7Citmb3IodmFyIHg9MSxsZW49MTA7bGVuPTIwLHg8bGVuO2xlbj0x
NSwrK3gpMTsKIAorZm9yKHg9MTt4PDEwOysreCl7MX0KIGZvcih4PTE7eDxsZW47Kyt4KXsxfQog
Zm9yKHg9MSxsZW49MTA7eDxsZW47Kyt4KXsxfQorZm9yKHg9MSxsZW49MTA7bGVuPTIwLHg8bGVu
OysreCl7MX0KK2Zvcih4PTEsbGVuPTEwO2xlbj0yMCx4PGxlbjtsZW49MTUsKyt4KXsxfQogCitm
b3IodmFyIHg9MTt4PDEwOysreCl7MX0KIGZvcih2YXIgeD0xO3g8bGVuOysreCl7MX0KIGZvcih2
YXIgeD0xLGxlbj0xMDt4PGxlbjsrK3gpezF9Citmb3IodmFyIHg9MSxsZW49MTA7bGVuPTIwLHg8
bGVuO2xlbj0xNSwrK3gpezF9CiAKLWZvcih2YXIgeD0xO3g8bGVuOysreCl7MX0KLWZvcih2YXIg
eD0xLGxlbj0xMDt4PGxlbjsrK3gpezF9Citmb3IoICB2YXIgIHggID0gIDEgIDsgIHggIDwgIDEw
ICA7ICArK3ggICkgIHsgIDEgIH0gIAorZm9yKCAgdmFyICB4ICA9ICAxICA7ICB4ICA8ICBsZW4g
IDsgICsreCAgKSAgeyAgMSAgfSAgCitmb3IoICB2YXIgIHggID0gIDEgICwgIGxlbiAgPSAgMTAg
IDsgIHggIDwgIGxlbiAgOyAgKyt4ICApICB7ICAxICB9Citmb3IoICB2YXIgIHggID0gIDEgICwg
IGxlbiAgPSAgMTAgIDsgIGxlbiAgPSAgMjAgICwgIHggIDwgIGxlbiAgOyAgbGVuICA9ICAxNSAg
LCAgKyt4ICApICB7ICAxICB9CiAKIGZvcigxOzI7Mylmb3IoNDs1OzYpZm9yKDc7ODs5KTsKIGZv
cigxOzI7Myl7aWYodHJ1ZSl7Zm9yKDQ7NTs2KTB9Zm9yKDc7ODs5KTt9CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0
cy9pZi1zdGF0ZW1lbnQtZXhwZWN0ZWQuanMgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0
dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy9pZi1zdGF0ZW1lbnQtZXhwZWN0ZWQuanMK
aW5kZXggM2QyYTlkOWU5N2UuLmM2MjBkZTZmNDIyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy9pZi1zdGF0ZW1l
bnQtZXhwZWN0ZWQuanMKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVz
b3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvaWYtc3RhdGVtZW50LWV4cGVjdGVkLmpzCkBAIC0xNjUs
MyArMTY1LDYgQEAgaWYgKHRydWUpIHsKIGlmICh0cnVlKQogICAgIGlmICh0cnVlKQogICAgICAg
ICAxOworCitpZiAoMSwgMiwgMykge30KK2lmICgxLCAyLCAzKSB7fQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMv
aWYtc3RhdGVtZW50LmpzIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3Vy
Y2VzL2phdmFzY3JpcHQtdGVzdHMvaWYtc3RhdGVtZW50LmpzCmluZGV4IDI2NTUyNmNhM2M2Li44
MzdkMTUxNmUxZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcv
cmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvaWYtc3RhdGVtZW50LmpzCisrKyBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL2lmLXN0
YXRlbWVudC5qcwpAQCAtNDcsMyArNDcsNiBAQCBpZih0cnVlKXtpZihmYWxzZSlpZih0cnVlKXRy
dWU7ZWxzZSBmYWxzZTtlbHNlIGlmKHRydWUpdHJ1ZTtlbHNlIGZhbHNlO30KIGlmICh0cnVlKQog
aWYgKHRydWUpCiAxOworCitpZigxLDIsMyl7fQoraWYgICggIDEgICwgIDIgICwgIDMgICkgIHsg
IH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNl
cy9qYXZhc2NyaXB0LXRlc3RzL3NhbXBsZS1qcXVlcnktZXhwZWN0ZWQuanMgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy9zYW1wbGUt
anF1ZXJ5LWV4cGVjdGVkLmpzCmluZGV4IDZkNTkxNzMyOTA0Li5lMWYxZjk3MWQwMiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3Jp
cHQtdGVzdHMvc2FtcGxlLWpxdWVyeS1leHBlY3RlZC5qcworKysgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy9zYW1wbGUtanF1ZXJ5
LWV4cGVjdGVkLmpzCkBAIC02Miw3ICs2Miw4IEBACiAgICAgICAgICAgICAgICAgaWYgKGEgPSBv
LmdldEVsZW1lbnRCeUlkKGlbMl0pLCBhICYmIGEucGFyZW50Tm9kZSkgewogICAgICAgICAgICAg
ICAgICAgICBpZiAoYS5pZCAhPT0gaVsyXSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biByLmZpbmQoZSk7Ci0gICAgICAgICAgICAgICAgICAgIHRoaXMubGVuZ3RoID0gMSwgdGhpc1sw
XSA9IGEKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5sZW5ndGggPSAxLAorICAgICAgICAgICAg
ICAgICAgICB0aGlzWzBdID0gYQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBy
ZXR1cm4gdGhpcy5jb250ZXh0ID0gbywgdGhpcy5zZWxlY3RvciA9IGUsIHRoaXMKICAgICAgICAg
ICAgIH0KQEAgLTExNCw3ICsxMTUsOSBAQAogICAgICAgICBwdXNoOiBkLAogICAgICAgICBzb3J0
OiBbXS5zb3J0LAogICAgICAgICBzcGxpY2U6IFtdLnNwbGljZQotICAgIH0sIGIuZm4uaW5pdC5w
cm90b3R5cGUgPSBiLmZuLCBiLmV4dGVuZCA9IGIuZm4uZXh0ZW5kID0gZnVuY3Rpb24oKSB7Cisg
ICAgfSwKKyAgICBiLmZuLmluaXQucHJvdG90eXBlID0gYi5mbiwKKyAgICBiLmV4dGVuZCA9IGIu
Zm4uZXh0ZW5kID0gZnVuY3Rpb24oKSB7CiAgICAgICAgIHZhciBlLAogICAgICAgICAgICAgbiwK
ICAgICAgICAgICAgIHIsCkBAIC0xMjgsOSArMTMxLDEyIEBACiAgICAgICAgIGZvciAoImJvb2xl
YW4iID09IHR5cGVvZiBzICYmIChjID0gcywgcyA9IGFyZ3VtZW50c1sxXSB8fCB7fSwgdSA9IDIp
LCAib2JqZWN0IiA9PSB0eXBlb2YgcyB8fCBiLmlzRnVuY3Rpb24ocykgfHwgKHMgPSB7fSksIGwg
PT09IHUgJiYgKHMgPSB0aGlzLCAtLXUpOyBsID4gdTsgdSsrKQogICAgICAgICAgICAgaWYgKG51
bGwgIT0gKG8gPSBhcmd1bWVudHNbdV0pKQogICAgICAgICAgICAgICAgIGZvciAoaSBpbiBvKQot
ICAgICAgICAgICAgICAgICAgICBlID0gc1tpXSwgciA9IG9baV0sIHMgIT09IHIgJiYgKGMgJiYg
ciAmJiAoYi5pc1BsYWluT2JqZWN0KHIpIHx8IChuID0gYi5pc0FycmF5KHIpKSkgPyAobiA/IChu
ID0gITEsIGEgPSBlICYmIGIuaXNBcnJheShlKSA/IGUgOiBbXSkgOiBhID0gZSAmJiBiLmlzUGxh
aW5PYmplY3QoZSkgPyBlIDoge30sIHNbaV0gPSBiLmV4dGVuZChjLCBhLCByKSkgOiByICE9PSB0
ICYmIChzW2ldID0gcikpOworICAgICAgICAgICAgICAgICAgICBlID0gc1tpXSwKKyAgICAgICAg
ICAgICAgICAgICAgciA9IG9baV0sCisgICAgICAgICAgICAgICAgICAgIHMgIT09IHIgJiYgKGMg
JiYgciAmJiAoYi5pc1BsYWluT2JqZWN0KHIpIHx8IChuID0gYi5pc0FycmF5KHIpKSkgPyAobiA/
IChuID0gITEsIGEgPSBlICYmIGIuaXNBcnJheShlKSA/IGUgOiBbXSkgOiBhID0gZSAmJiBiLmlz
UGxhaW5PYmplY3QoZSkgPyBlIDoge30sIHNbaV0gPSBiLmV4dGVuZChjLCBhLCByKSkgOiByICE9
PSB0ICYmIChzW2ldID0gcikpOwogICAgICAgICByZXR1cm4gcwotICAgIH0sIGIuZXh0ZW5kKHsK
KyAgICB9LAorICAgIGIuZXh0ZW5kKHsKICAgICAgICAgbm9Db25mbGljdDogZnVuY3Rpb24odCkg
ewogICAgICAgICAgICAgcmV0dXJuIGUuJCA9PT0gYiAmJiAoZS4kID0gdSksIHQgJiYgZS5qUXVl
cnkgPT09IGIgJiYgKGUualF1ZXJ5ID0gcyksIGIKICAgICAgICAgfSwKQEAgLTE0Myw3ICsxNDks
OCBAQAogICAgICAgICAgICAgaWYgKGUgPT09ICEwID8gIS0tYi5yZWFkeVdhaXQgOiAhYi5pc1Jl
YWR5KSB7CiAgICAgICAgICAgICAgICAgaWYgKCFvLmJvZHkpCiAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBzZXRUaW1lb3V0KGIucmVhZHkpOwotICAgICAgICAgICAgICAgIGIuaXNSZWFkeSA9
ICEwLCBlICE9PSAhMCAmJiAtLWIucmVhZHlXYWl0ID4gMCB8fCAobi5yZXNvbHZlV2l0aChvLCBb
Yl0pLCBiLmZuLnRyaWdnZXIgJiYgYihvKS50cmlnZ2VyKCJyZWFkeSIpLm9mZigicmVhZHkiKSkK
KyAgICAgICAgICAgICAgICBiLmlzUmVhZHkgPSAhMCwKKyAgICAgICAgICAgICAgICBlICE9PSAh
MCAmJiAtLWIucmVhZHlXYWl0ID4gMCB8fCAobi5yZXNvbHZlV2l0aChvLCBbYl0pLCBiLmZuLnRy
aWdnZXIgJiYgYihvKS50cmlnZ2VyKCJyZWFkeSIpLm9mZigicmVhZHkiKSkKICAgICAgICAgICAg
IH0KICAgICAgICAgfSwKICAgICAgICAgaXNGdW5jdGlvbjogZnVuY3Rpb24oZSkgewpAQCAtMTg3
LDcgKzE5NCw4IEBACiAgICAgICAgIHBhcnNlSFRNTDogZnVuY3Rpb24oZSwgdCwgbikgewogICAg
ICAgICAgICAgaWYgKCFlIHx8ICJzdHJpbmciICE9IHR5cGVvZiBlKQogICAgICAgICAgICAgICAg
IHJldHVybiBudWxsOwotICAgICAgICAgICAgImJvb2xlYW4iID09IHR5cGVvZiB0ICYmIChuID0g
dCwgdCA9ICExKSwgdCA9IHQgfHwgbzsKKyAgICAgICAgICAgICJib29sZWFuIiA9PSB0eXBlb2Yg
dCAmJiAobiA9IHQsIHQgPSAhMSksCisgICAgICAgICAgICB0ID0gdCB8fCBvOwogICAgICAgICAg
ICAgdmFyIHIgPSBDLmV4ZWMoZSksCiAgICAgICAgICAgICAgICAgaSA9ICFuICYmIFtdOwogICAg
ICAgICAgICAgcmV0dXJuIHIgPyBbdC5jcmVhdGVFbGVtZW50KHJbMV0pXSA6IChyID0gYi5idWls
ZEZyYWdtZW50KFtlXSwgdCwgaSksIGkgJiYgYihpKS5yZW1vdmUoKSwgYi5tZXJnZShbXSwgci5j
aGlsZE5vZGVzKSkKQEAgLTI4MSw3ICsyODksOCBAQAogICAgICAgICAgICAgICAgIG8gPSAwLAog
ICAgICAgICAgICAgICAgIGEgPSBlLmxlbmd0aDsKICAgICAgICAgICAgIGZvciAobiA9ICEhbjsg
YSA+IG87IG8rKykKLSAgICAgICAgICAgICAgICByID0gISF0KGVbb10sIG8pLCBuICE9PSByICYm
IGkucHVzaChlW29dKTsKKyAgICAgICAgICAgICAgICByID0gISF0KGVbb10sIG8pLAorICAgICAg
ICAgICAgICAgIG4gIT09IHIgJiYgaS5wdXNoKGVbb10pOwogICAgICAgICAgICAgcmV0dXJuIGkK
ICAgICAgICAgfSwKICAgICAgICAgbWFwOiBmdW5jdGlvbihlLCB0LCBuKSB7CkBAIC0yOTIsMTAg
KzMwMSwxMiBAQAogICAgICAgICAgICAgICAgIHMgPSBbXTsKICAgICAgICAgICAgIGlmIChhKQog
ICAgICAgICAgICAgICAgIGZvciAoOyBvID4gaTsgaSsrKQotICAgICAgICAgICAgICAgICAgICBy
ID0gdChlW2ldLCBpLCBuKSwgbnVsbCAhPSByICYmIChzW3MubGVuZ3RoXSA9IHIpOworICAgICAg
ICAgICAgICAgICAgICByID0gdChlW2ldLCBpLCBuKSwKKyAgICAgICAgICAgICAgICAgICAgbnVs
bCAhPSByICYmIChzW3MubGVuZ3RoXSA9IHIpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgICAgIGZvciAoaSBpbiBlKQotICAgICAgICAgICAgICAgICAgICByID0gdChlW2ldLCBpLCBu
KSwgbnVsbCAhPSByICYmIChzW3MubGVuZ3RoXSA9IHIpOworICAgICAgICAgICAgICAgICAgICBy
ID0gdChlW2ldLCBpLCBuKSwKKyAgICAgICAgICAgICAgICAgICAgbnVsbCAhPSByICYmIChzW3Mu
bGVuZ3RoXSA9IHIpOwogICAgICAgICAgICAgcmV0dXJuIGYuYXBwbHkoW10sIHMpCiAgICAgICAg
IH0sCiAgICAgICAgIGd1aWQ6IDEsCkBAIC0zMjUsMTQgKzMzNiwxNyBAQAogICAgICAgICBub3c6
IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgcmV0dXJuIChuZXcgRGF0ZSkuZ2V0VGltZSgpCiAg
ICAgICAgIH0KLSAgICB9KSwgYi5yZWFkeS5wcm9taXNlID0gZnVuY3Rpb24odCkgeworICAgIH0p
LAorICAgIGIucmVhZHkucHJvbWlzZSA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgaWYgKCFuKQog
ICAgICAgICAgICAgaWYgKG4gPSBiLkRlZmVycmVkKCksICJjb21wbGV0ZSIgPT09IG8ucmVhZHlT
dGF0ZSkKICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGIucmVhZHkpOwogICAgICAgICAgICAg
ZWxzZSBpZiAoby5hZGRFdmVudExpc3RlbmVyKQotICAgICAgICAgICAgICAgIG8uYWRkRXZlbnRM
aXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIEgsICExKSwgZS5hZGRFdmVudExpc3RlbmVyKCJs
b2FkIiwgSCwgITEpOworICAgICAgICAgICAgICAgIG8uYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29u
dGVudExvYWRlZCIsIEgsICExKSwKKyAgICAgICAgICAgICAgICBlLmFkZEV2ZW50TGlzdGVuZXIo
ImxvYWQiLCBILCAhMSk7CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBvLmF0
dGFjaEV2ZW50KCJvbnJlYWR5c3RhdGVjaGFuZ2UiLCBIKSwgZS5hdHRhY2hFdmVudCgib25sb2Fk
IiwgSCk7CisgICAgICAgICAgICAgICAgby5hdHRhY2hFdmVudCgib25yZWFkeXN0YXRlY2hhbmdl
IiwgSCksCisgICAgICAgICAgICAgICAgZS5hdHRhY2hFdmVudCgib25sb2FkIiwgSCk7CiAgICAg
ICAgICAgICAgICAgdmFyIHIgPSAhMTsKICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAg
ICAgICAgICAgICByID0gbnVsbCA9PSBlLmZyYW1lRWxlbWVudCAmJiBvLmRvY3VtZW50RWxlbWVu
dApAQCAtMzQ0LDEyICszNTgsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2gg
KGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2V0VGltZW91dChhLCA1
MCkKICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIHEo
KSwgYi5yZWFkeSgpCisgICAgICAgICAgICAgICAgICAgICAgICBxKCksCisgICAgICAgICAgICAg
ICAgICAgICAgICBiLnJlYWR5KCkKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIH0oKQogICAgICAgICAgICAgfQogICAgICAgICByZXR1cm4gbi5wcm9taXNlKHQpCi0gICAg
fSwgYi5lYWNoKCJCb29sZWFuIE51bWJlciBTdHJpbmcgRnVuY3Rpb24gQXJyYXkgRGF0ZSBSZWdF
eHAgT2JqZWN0IEVycm9yIi5zcGxpdCgiICIpLCBmdW5jdGlvbihlLCB0KSB7CisgICAgfSwKKyAg
ICBiLmVhY2goIkJvb2xlYW4gTnVtYmVyIFN0cmluZyBGdW5jdGlvbiBBcnJheSBEYXRlIFJlZ0V4
cCBPYmplY3QgRXJyb3IiLnNwbGl0KCIgIiksIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgbFsi
W29iamVjdCAiICsgdCArICJdIl0gPSB0LnRvTG93ZXJDYXNlKCkKICAgICB9KTsKICAgICBmdW5j
dGlvbiBNKGUpIHsKQEAgLTM4MSw3ICszOTcsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAg
ciA9ICExOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIG4gPSAhMSwgdSAmJiAobCA/IGwubGVuZ3RoICYmIGMobC5z
aGlmdCgpKSA6IHIgPyB1ID0gW10gOiBwLmRpc2FibGUoKSkKKyAgICAgICAgICAgICAgICBuID0g
ITEsCisgICAgICAgICAgICAgICAgdSAmJiAobCA/IGwubGVuZ3RoICYmIGMobC5zaGlmdCgpKSA6
IHIgPyB1ID0gW10gOiBwLmRpc2FibGUoKSkKICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICBw
ID0gewogICAgICAgICAgICAgICAgIGFkZDogZnVuY3Rpb24oKSB7CkBAIC0zOTIsNyArNDA5LDgg
QEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBiLnR5cGUobik7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmdW5jdGlvbiIgPT09IHIgPyBlLnVuaXF1
ZSAmJiBwLmhhcyhuKSB8fCB1LnB1c2gobikgOiBuICYmIG4ubGVuZ3RoICYmICJzdHJpbmciICE9
PSByICYmIGkobikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQotICAgICAgICAgICAg
ICAgICAgICAgICAgfSkoYXJndW1lbnRzKSwgbiA/IG8gPSB1Lmxlbmd0aCA6IHIgJiYgKHMgPSB0
LCBjKHIpKQorICAgICAgICAgICAgICAgICAgICAgICAgfSkoYXJndW1lbnRzKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIG4gPyBvID0gdS5sZW5ndGggOiByICYmIChzID0gdCwgYyhyKSkKICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcwogICAg
ICAgICAgICAgICAgIH0sCkBAIC00MDAsNyArNDE4LDggQEAKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHUgJiYgYi5lYWNoKGFyZ3VtZW50cywgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAg
ICAgICAgICAgICAgICAgdmFyIHI7CiAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoKHIg
PSBiLmluQXJyYXkodCwgdSwgcikpID4gLTEpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
dS5zcGxpY2UociwgMSksIG4gJiYgKG8gPj0gciAmJiBvLS0sIGEgPj0gciAmJiBhLS0pCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdS5zcGxpY2UociwgMSksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbiAmJiAobyA+PSByICYmIG8tLSwgYSA+PSByICYmIGEtLSkKICAgICAgICAg
ICAgICAgICAgICAgfSksIHRoaXMKICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAg
IGhhczogZnVuY3Rpb24oZSkgewpAQCAtNDMyLDcgKzQ1MSw4IEBACiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfTsKICAgICAgICAgcmV0dXJuIHAKLSAgICB9LCBiLmV4dGVuZCh7Cisg
ICAgfSwKKyAgICBiLmV4dGVuZCh7CiAgICAgICAgIERlZmVycmVkOiBmdW5jdGlvbihlKSB7CiAg
ICAgICAgICAgICB2YXIgdCA9IFtbInJlc29sdmUiLCAiZG9uZSIsIGIuQ2FsbGJhY2tzKCJvbmNl
IG1lbW9yeSIpLCAicmVzb2x2ZWQiXSwgWyJyZWplY3QiLCAiZmFpbCIsIGIuQ2FsbGJhY2tzKCJv
bmNlIG1lbW9yeSIpLCAicmVqZWN0ZWQiXSwgWyJub3RpZnkiLCAicHJvZ3Jlc3MiLCBiLkNhbGxi
YWNrcygibWVtb3J5IildXSwKICAgICAgICAgICAgICAgICBuID0gInBlbmRpbmciLApAQCAtNDUz
LDcgKzQ3Myw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9
IHMgJiYgcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZSAmJiBiLmlzRnVuY3Rpb24oZS5wcm9taXNlKSA/IGUucHJvbWlzZSgpLmRv
bmUobi5yZXNvbHZlKS5mYWlsKG4ucmVqZWN0KS5wcm9ncmVzcyhuLm5vdGlmeSkgOiBuW2EgKyAi
V2l0aCJdKHRoaXMgPT09IHIgPyBuLnByb21pc2UoKSA6IHRoaXMsIHMgPyBbZV0gOiBhcmd1bWVu
dHMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfSksIGUgPSBudWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IG51bGwKICAgICAgICAgICAgICAgICAg
ICAgICAgIH0pLnByb21pc2UoKQogICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAg
ICAgICAgICBwcm9taXNlOiBmdW5jdGlvbihlKSB7CkBAIC00NjQsMTEgKzQ4NSwxNCBAQAogICAg
ICAgICAgICAgcmV0dXJuIHIucGlwZSA9IHIudGhlbiwgYi5lYWNoKHQsIGZ1bmN0aW9uKGUsIG8p
IHsKICAgICAgICAgICAgICAgICB2YXIgYSA9IG9bMl0sCiAgICAgICAgICAgICAgICAgICAgIHMg
PSBvWzNdOwotICAgICAgICAgICAgICAgIHJbb1sxXV0gPSBhLmFkZCwgcyAmJiBhLmFkZChmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgICAgICByW29bMV1dID0gYS5hZGQsCisgICAgICAgICAgICAg
ICAgcyAmJiBhLmFkZChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgbiA9IHMKLSAg
ICAgICAgICAgICAgICB9LCB0WzEgXiBlXVsyXS5kaXNhYmxlLCB0WzJdWzJdLmxvY2spLCBpW29b
MF1dID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgfSwgdFsxIF4gZV1bMl0uZGlzYWJs
ZSwgdFsyXVsyXS5sb2NrKSwKKyAgICAgICAgICAgICAgICBpW29bMF1dID0gZnVuY3Rpb24oKSB7
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpW29bMF0gKyAiV2l0aCJdKHRoaXMgPT09IGkg
PyByIDogdGhpcywgYXJndW1lbnRzKSwgdGhpcwotICAgICAgICAgICAgICAgIH0sIGlbb1swXSAr
ICJXaXRoIl0gPSBhLmZpcmVXaXRoCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAg
ICBpW29bMF0gKyAiV2l0aCJdID0gYS5maXJlV2l0aAogICAgICAgICAgICAgfSksIHIucHJvbWlz
ZShpKSwgZSAmJiBlLmNhbGwoaSwgaSksIGkKICAgICAgICAgfSwKICAgICAgICAgd2hlbjogZnVu
Y3Rpb24oZSkgewpAQCAtNDc5LDcgKzUwMyw5IEBACiAgICAgICAgICAgICAgICAgbyA9IDEgPT09
IGkgPyBlIDogYi5EZWZlcnJlZCgpLAogICAgICAgICAgICAgICAgIGEgPSBmdW5jdGlvbihlLCB0
LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihyKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICB0W2VdID0gdGhpcywgbltlXSA9IGFyZ3VtZW50cy5sZW5ndGggPiAx
ID8gaC5jYWxsKGFyZ3VtZW50cykgOiByLCBuID09PSBzID8gby5ub3RpZnlXaXRoKHQsIG4pIDog
LS1pIHx8IG8ucmVzb2x2ZVdpdGgodCwgbikKKyAgICAgICAgICAgICAgICAgICAgICAgIHRbZV0g
PSB0aGlzLAorICAgICAgICAgICAgICAgICAgICAgICAgbltlXSA9IGFyZ3VtZW50cy5sZW5ndGgg
PiAxID8gaC5jYWxsKGFyZ3VtZW50cykgOiByLAorICAgICAgICAgICAgICAgICAgICAgICAgbiA9
PT0gcyA/IG8ubm90aWZ5V2l0aCh0LCBuKSA6IC0taSB8fCBvLnJlc29sdmVXaXRoKHQsIG4pCiAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAg
IHMsCkBAIC00OTAsNyArNTE2LDggQEAKICAgICAgICAgICAgICAgICAgICAgblt0XSAmJiBiLmlz
RnVuY3Rpb24oblt0XS5wcm9taXNlKSA/IG5bdF0ucHJvbWlzZSgpLmRvbmUoYSh0LCBsLCBuKSku
ZmFpbChvLnJlamVjdCkucHJvZ3Jlc3MoYSh0LCB1LCBzKSkgOiAtLWk7CiAgICAgICAgICAgICBy
ZXR1cm4gaSB8fCBvLnJlc29sdmVXaXRoKGwsIG4pLCBvLnByb21pc2UoKQogICAgICAgICB9Ci0g
ICAgfSksIGIuc3VwcG9ydCA9IGZ1bmN0aW9uKCkgeworICAgIH0pLAorICAgIGIuc3VwcG9ydCA9
IGZ1bmN0aW9uKCkgewogICAgICAgICB2YXIgdCwKICAgICAgICAgICAgIG4sCiAgICAgICAgICAg
ICByLApAQCAtNTA0LDcgKzUzMSwxMSBAQAogICAgICAgICAgICAgZCA9IG8uY3JlYXRlRWxlbWVu
dCgiZGl2Iik7CiAgICAgICAgIGlmIChkLnNldEF0dHJpYnV0ZSgiY2xhc3NOYW1lIiwgInQiKSwg
ZC5pbm5lckhUTUwgPSAiICA8bGluay8+PHRhYmxlPjwvdGFibGU+PGEgaHJlZj0nL2EnPmE8L2E+
PGlucHV0IHR5cGU9J2NoZWNrYm94Jy8+IiwgbiA9IGQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioi
KSwgciA9IGQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImEiKVswXSwgIW4gfHwgIXIgfHwgIW4ubGVu
Z3RoKQogICAgICAgICAgICAgcmV0dXJuIHt9OwotICAgICAgICBzID0gby5jcmVhdGVFbGVtZW50
KCJzZWxlY3QiKSwgbCA9IHMuYXBwZW5kQ2hpbGQoby5jcmVhdGVFbGVtZW50KCJvcHRpb24iKSks
IGEgPSBkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIpWzBdLCByLnN0eWxlLmNzc1RleHQg
PSAidG9wOjFweDtmbG9hdDpsZWZ0O29wYWNpdHk6LjUiLCB0ID0geworICAgICAgICBzID0gby5j
cmVhdGVFbGVtZW50KCJzZWxlY3QiKSwKKyAgICAgICAgbCA9IHMuYXBwZW5kQ2hpbGQoby5jcmVh
dGVFbGVtZW50KCJvcHRpb24iKSksCisgICAgICAgIGEgPSBkLmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJpbnB1dCIpWzBdLAorICAgICAgICByLnN0eWxlLmNzc1RleHQgPSAidG9wOjFweDtmbG9hdDps
ZWZ0O29wYWNpdHk6LjUiLAorICAgICAgICB0ID0gewogICAgICAgICAgICAgZ2V0U2V0QXR0cmli
dXRlOiAidCIgIT09IGQuY2xhc3NOYW1lLAogICAgICAgICAgICAgbGVhZGluZ1doaXRlc3BhY2U6
IDMgPT09IGQuZmlyc3RDaGlsZC5ub2RlVHlwZSwKICAgICAgICAgICAgIHRib2R5OiAhZC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGJvZHkiKS5sZW5ndGgsCkBAIC01MjUsMTMgKzU1NiwyOSBAQAog
ICAgICAgICAgICAgcmVsaWFibGVNYXJnaW5SaWdodDogITAsCiAgICAgICAgICAgICBib3hTaXpp
bmdSZWxpYWJsZTogITAsCiAgICAgICAgICAgICBwaXhlbFBvc2l0aW9uOiAhMQotICAgICAgICB9
LCBhLmNoZWNrZWQgPSAhMCwgdC5ub0Nsb25lQ2hlY2tlZCA9IGEuY2xvbmVOb2RlKCEwKS5jaGVj
a2VkLCBzLmRpc2FibGVkID0gITAsIHQub3B0RGlzYWJsZWQgPSAhbC5kaXNhYmxlZDsKKyAgICAg
ICAgfSwKKyAgICAgICAgYS5jaGVja2VkID0gITAsCisgICAgICAgIHQubm9DbG9uZUNoZWNrZWQg
PSBhLmNsb25lTm9kZSghMCkuY2hlY2tlZCwKKyAgICAgICAgcy5kaXNhYmxlZCA9ICEwLAorICAg
ICAgICB0Lm9wdERpc2FibGVkID0gIWwuZGlzYWJsZWQ7CiAgICAgICAgIHRyeSB7CiAgICAgICAg
ICAgICBkZWxldGUgZC50ZXN0CiAgICAgICAgIH0gY2F0Y2ggKGgpIHsKICAgICAgICAgICAgIHQu
ZGVsZXRlRXhwYW5kbyA9ICExCiAgICAgICAgIH0KLSAgICAgICAgYSA9IG8uY3JlYXRlRWxlbWVu
dCgiaW5wdXQiKSwgYS5zZXRBdHRyaWJ1dGUoInZhbHVlIiwgIiIpLCB0LmlucHV0ID0gIiIgPT09
IGEuZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpLCBhLnZhbHVlID0gInQiLCBhLnNldEF0dHJpYnV0ZSgi
dHlwZSIsICJyYWRpbyIpLCB0LnJhZGlvVmFsdWUgPSAidCIgPT09IGEudmFsdWUsIGEuc2V0QXR0
cmlidXRlKCJjaGVja2VkIiwgInQiKSwgYS5zZXRBdHRyaWJ1dGUoIm5hbWUiLCAidCIpLCB1ID0g
by5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksIHUuYXBwZW5kQ2hpbGQoYSksIHQuYXBwZW5kQ2hl
Y2tlZCA9IGEuY2hlY2tlZCwgdC5jaGVja0Nsb25lID0gdS5jbG9uZU5vZGUoITApLmNsb25lTm9k
ZSghMCkubGFzdENoaWxkLmNoZWNrZWQsIGQuYXR0YWNoRXZlbnQgJiYgKGQuYXR0YWNoRXZlbnQo
Im9uY2xpY2siLCBmdW5jdGlvbigpIHsKKyAgICAgICAgYSA9IG8uY3JlYXRlRWxlbWVudCgiaW5w
dXQiKSwKKyAgICAgICAgYS5zZXRBdHRyaWJ1dGUoInZhbHVlIiwgIiIpLAorICAgICAgICB0Lmlu
cHV0ID0gIiIgPT09IGEuZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpLAorICAgICAgICBhLnZhbHVlID0g
InQiLAorICAgICAgICBhLnNldEF0dHJpYnV0ZSgidHlwZSIsICJyYWRpbyIpLAorICAgICAgICB0
LnJhZGlvVmFsdWUgPSAidCIgPT09IGEudmFsdWUsCisgICAgICAgIGEuc2V0QXR0cmlidXRlKCJj
aGVja2VkIiwgInQiKSwKKyAgICAgICAgYS5zZXRBdHRyaWJ1dGUoIm5hbWUiLCAidCIpLAorICAg
ICAgICB1ID0gby5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksCisgICAgICAgIHUuYXBwZW5kQ2hp
bGQoYSksCisgICAgICAgIHQuYXBwZW5kQ2hlY2tlZCA9IGEuY2hlY2tlZCwKKyAgICAgICAgdC5j
aGVja0Nsb25lID0gdS5jbG9uZU5vZGUoITApLmNsb25lTm9kZSghMCkubGFzdENoaWxkLmNoZWNr
ZWQsCisgICAgICAgIGQuYXR0YWNoRXZlbnQgJiYgKGQuYXR0YWNoRXZlbnQoIm9uY2xpY2siLCBm
dW5jdGlvbigpIHsKICAgICAgICAgICAgIHQubm9DbG9uZUV2ZW50ID0gITEKICAgICAgICAgfSks
IGQuY2xvbmVOb2RlKCEwKS5jbGljaygpKTsKICAgICAgICAgZm9yIChmIGluIHsKQEAgLTUzOSw3
ICs1ODYsOCBAQAogICAgICAgICAgICAgY2hhbmdlOiAhMCwKICAgICAgICAgICAgIGZvY3VzaW46
ICEwCiAgICAgICAgIH0pCi0gICAgICAgICAgICBkLnNldEF0dHJpYnV0ZShjID0gIm9uIiArIGYs
ICJ0IiksIHRbZiArICJCdWJibGVzIl0gPSBjIGluIGUgfHwgZC5hdHRyaWJ1dGVzW2NdLmV4cGFu
ZG8gPT09ICExOworICAgICAgICAgICAgZC5zZXRBdHRyaWJ1dGUoYyA9ICJvbiIgKyBmLCAidCIp
LAorICAgICAgICAgICAgdFtmICsgIkJ1YmJsZXMiXSA9IGMgaW4gZSB8fCBkLmF0dHJpYnV0ZXNb
Y10uZXhwYW5kbyA9PT0gITE7CiAgICAgICAgIHJldHVybiBkLnN0eWxlLmJhY2tncm91bmRDbGlw
ID0gImNvbnRlbnQtYm94IiwgZC5jbG9uZU5vZGUoITApLnN0eWxlLmJhY2tncm91bmRDbGlwID0g
IiIsIHQuY2xlYXJDbG9uZVN0eWxlID0gImNvbnRlbnQtYm94IiA9PT0gZC5zdHlsZS5iYWNrZ3Jv
dW5kQ2xpcCwgYihmdW5jdGlvbigpIHsKICAgICAgICAgICAgIHZhciBuLAogICAgICAgICAgICAg
ICAgIHIsCkBAIC02MTUsNyArNjYzLDggQEAKICAgICAgICAgICAgIHZhciB0ID0gZS5ub2RlTmFt
ZSAmJiBiLm5vRGF0YVtlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldOwogICAgICAgICAgICAgcmV0
dXJuICF0IHx8IHQgIT09ICEwICYmIGUuZ2V0QXR0cmlidXRlKCJjbGFzc2lkIikgPT09IHQKICAg
ICAgICAgfQotICAgIH0pLCBiLmZuLmV4dGVuZCh7CisgICAgfSksCisgICAgYi5mbi5leHRlbmQo
ewogICAgICAgICBkYXRhOiBmdW5jdGlvbihlLCBuKSB7CiAgICAgICAgICAgICB2YXIgciwKICAg
ICAgICAgICAgICAgICBpLApAQCAtNjI1LDcgKzY3NCw4IEBACiAgICAgICAgICAgICBpZiAoZSA9
PT0gdCkgewogICAgICAgICAgICAgICAgIGlmICh0aGlzLmxlbmd0aCAmJiAocyA9IGIuZGF0YShv
KSwgMSA9PT0gby5ub2RlVHlwZSAmJiAhYi5fZGF0YShvLCAicGFyc2VkQXR0cnMiKSkpIHsKICAg
ICAgICAgICAgICAgICAgICAgZm9yIChyID0gby5hdHRyaWJ1dGVzOyByLmxlbmd0aCA+IGE7IGEr
KykKLSAgICAgICAgICAgICAgICAgICAgICAgIGkgPSByW2FdLm5hbWUsIGkuaW5kZXhPZigiZGF0
YS0iKSB8fCAoaSA9IGIuY2FtZWxDYXNlKGkuc2xpY2UoNSkpLCBXKG8sIGksIHNbaV0pKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGkgPSByW2FdLm5hbWUsCisgICAgICAgICAgICAgICAgICAg
ICAgICBpLmluZGV4T2YoImRhdGEtIikgfHwgKGkgPSBiLmNhbWVsQ2FzZShpLnNsaWNlKDUpKSwg
VyhvLCBpLCBzW2ldKSk7CiAgICAgICAgICAgICAgICAgICAgIGIuX2RhdGEobywgInBhcnNlZEF0
dHJzIiwgITApCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHJldHVybiBzCkBA
IC02NzgsMjIgKzcyOCwyOCBAQAogICAgICAgICAgICAgICAgIGEgPSBmdW5jdGlvbigpIHsKICAg
ICAgICAgICAgICAgICAgICAgYi5kZXF1ZXVlKGUsIHQpCiAgICAgICAgICAgICAgICAgfTsKLSAg
ICAgICAgICAgICJpbnByb2dyZXNzIiA9PT0gaSAmJiAoaSA9IG4uc2hpZnQoKSwgci0tKSwgby5j
dXIgPSBpLCBpICYmICgiZngiID09PSB0ICYmIG4udW5zaGlmdCgiaW5wcm9ncmVzcyIpLCBkZWxl
dGUgby5zdG9wLCBpLmNhbGwoZSwgYSwgbykpLCAhciAmJiBvICYmIG8uZW1wdHkuZmlyZSgpCisg
ICAgICAgICAgICAiaW5wcm9ncmVzcyIgPT09IGkgJiYgKGkgPSBuLnNoaWZ0KCksIHItLSksCisg
ICAgICAgICAgICBvLmN1ciA9IGksCisgICAgICAgICAgICBpICYmICgiZngiID09PSB0ICYmIG4u
dW5zaGlmdCgiaW5wcm9ncmVzcyIpLCBkZWxldGUgby5zdG9wLCBpLmNhbGwoZSwgYSwgbykpLAor
ICAgICAgICAgICAgIXIgJiYgbyAmJiBvLmVtcHR5LmZpcmUoKQogICAgICAgICB9LAogICAgICAg
ICBfcXVldWVIb29rczogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgdmFyIG4gPSB0ICsg
InF1ZXVlSG9va3MiOwogICAgICAgICAgICAgcmV0dXJuIGIuX2RhdGEoZSwgbikgfHwgYi5fZGF0
YShlLCBuLCB7CiAgICAgICAgICAgICAgICAgICAgIGVtcHR5OiBiLkNhbGxiYWNrcygib25jZSBt
ZW1vcnkiKS5hZGQoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBiLl9yZW1v
dmVEYXRhKGUsIHQgKyAicXVldWUiKSwgYi5fcmVtb3ZlRGF0YShlLCBuKQorICAgICAgICAgICAg
ICAgICAgICAgICAgYi5fcmVtb3ZlRGF0YShlLCB0ICsgInF1ZXVlIiksCisgICAgICAgICAgICAg
ICAgICAgICAgICBiLl9yZW1vdmVEYXRhKGUsIG4pCiAgICAgICAgICAgICAgICAgICAgIH0pCiAg
ICAgICAgICAgICAgICAgfSkKICAgICAgICAgfQotICAgIH0pLCBiLmZuLmV4dGVuZCh7CisgICAg
fSksCisgICAgYi5mbi5leHRlbmQoewogICAgICAgICBxdWV1ZTogZnVuY3Rpb24oZSwgbikgewog
ICAgICAgICAgICAgdmFyIHIgPSAyOwogICAgICAgICAgICAgcmV0dXJuICJzdHJpbmciICE9IHR5
cGVvZiBlICYmIChuID0gZSwgZSA9ICJmeCIsIHItLSksIHIgPiBhcmd1bWVudHMubGVuZ3RoID8g
Yi5xdWV1ZSh0aGlzWzBdLCBlKSA6IG4gPT09IHQgPyB0aGlzIDogdGhpcy5lYWNoKGZ1bmN0aW9u
KCkgewogICAgICAgICAgICAgICAgIHZhciB0ID0gYi5xdWV1ZSh0aGlzLCBlLCBuKTsKLSAgICAg
ICAgICAgICAgICBiLl9xdWV1ZUhvb2tzKHRoaXMsIGUpLCAiZngiID09PSBlICYmICJpbnByb2dy
ZXNzIiAhPT0gdFswXSAmJiBiLmRlcXVldWUodGhpcywgZSkKKyAgICAgICAgICAgICAgICBiLl9x
dWV1ZUhvb2tzKHRoaXMsIGUpLAorICAgICAgICAgICAgICAgICJmeCIgPT09IGUgJiYgImlucHJv
Z3Jlc3MiICE9PSB0WzBdICYmIGIuZGVxdWV1ZSh0aGlzLCBlKQogICAgICAgICAgICAgfSkKICAg
ICAgICAgfSwKICAgICAgICAgZGVxdWV1ZTogZnVuY3Rpb24oZSkgewpAQCAtNzIxLDkgKzc3Nywx
MSBAQAogICAgICAgICAgICAgICAgIHUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAg
ICAgLS1pIHx8IG8ucmVzb2x2ZVdpdGgoYSwgW2FdKQogICAgICAgICAgICAgICAgIH07Ci0gICAg
ICAgICAgICAic3RyaW5nIiAhPSB0eXBlb2YgZSAmJiAobiA9IGUsIGUgPSB0KSwgZSA9IGUgfHwg
ImZ4IjsKKyAgICAgICAgICAgICJzdHJpbmciICE9IHR5cGVvZiBlICYmIChuID0gZSwgZSA9IHQp
LAorICAgICAgICAgICAgZSA9IGUgfHwgImZ4IjsKICAgICAgICAgICAgIHdoaWxlIChzLS0pCi0g
ICAgICAgICAgICAgICAgciA9IGIuX2RhdGEoYVtzXSwgZSArICJxdWV1ZUhvb2tzIiksIHIgJiYg
ci5lbXB0eSAmJiAoaSsrLCByLmVtcHR5LmFkZCh1KSk7CisgICAgICAgICAgICAgICAgciA9IGIu
X2RhdGEoYVtzXSwgZSArICJxdWV1ZUhvb2tzIiksCisgICAgICAgICAgICAgICAgciAmJiByLmVt
cHR5ICYmIChpKyssIHIuZW1wdHkuYWRkKHUpKTsKICAgICAgICAgICAgIHJldHVybiB1KCksIG8u
cHJvbWlzZShuKQogICAgICAgICB9CiAgICAgfSk7CkBAIC03NTIsNyArODEwLDggQEAKICAgICAg
ICAgcmVtb3ZlUHJvcDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgcmV0dXJuIGUgPSBiLnBy
b3BGaXhbZV0gfHwgZSwgdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgIHRy
eSB7Ci0gICAgICAgICAgICAgICAgICAgIHRoaXNbZV0gPSB0LCBkZWxldGUgdGhpc1tlXQorICAg
ICAgICAgICAgICAgICAgICB0aGlzW2VdID0gdCwKKyAgICAgICAgICAgICAgICAgICAgZGVsZXRl
IHRoaXNbZV0KICAgICAgICAgICAgICAgICB9IGNhdGNoIChuKSB7fQogICAgICAgICAgICAgfSkK
ICAgICAgICAgfSwKQEAgLTgxNiw3ICs4NzUsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAg
dSA9IHQsCiAgICAgICAgICAgICAgICAgICAgICAgICBsID0gZS5tYXRjaCh3KSB8fCBbXTsKICAg
ICAgICAgICAgICAgICAgICAgd2hpbGUgKG8gPSBsW2ErK10pCi0gICAgICAgICAgICAgICAgICAg
ICAgICB1ID0gciA/IHUgOiAhcy5oYXNDbGFzcyhvKSwgc1t1ID8gImFkZENsYXNzIiA6ICJyZW1v
dmVDbGFzcyJdKG8pCisgICAgICAgICAgICAgICAgICAgICAgICB1ID0gciA/IHUgOiAhcy5oYXND
bGFzcyhvKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNbdSA/ICJhZGRDbGFzcyIgOiAicmVt
b3ZlQ2xhc3MiXShvKQogICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAg
ICAobiA9PT0gaSB8fCAiYm9vbGVhbiIgPT09IG4pICYmICh0aGlzLmNsYXNzTmFtZSAmJiBiLl9k
YXRhKHRoaXMsICJfX2NsYXNzTmFtZV9fIiwgdGhpcy5jbGFzc05hbWUpLCB0aGlzLmNsYXNzTmFt
ZSA9IHRoaXMuY2xhc3NOYW1lIHx8IGUgPT09ICExID8gIiIgOiBiLl9kYXRhKHRoaXMsICJfX2Ns
YXNzTmFtZV9fIikgfHwgIiIpCiAgICAgICAgICAgICB9KQpAQCAtODQ4LDcgKzkwOCw4IEBACiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiByID0gYi52YWxIb29rc1tvLnR5cGVdIHx8IGIudmFs
SG9va3Nbby5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXSwgciAmJiAiZ2V0IiBpbiByICYmIChuID0g
ci5nZXQobywgInZhbHVlIikpICE9PSB0ID8gbiA6IChuID0gby52YWx1ZSwgInN0cmluZyIgPT0g
dHlwZW9mIG4gPyBuLnJlcGxhY2UoVSwgIiIpIDogbnVsbCA9PSBuID8gIiIgOiBuKQogICAgICAg
ICAgICAgfQogICAgICAgICB9Ci0gICAgfSksIGIuZXh0ZW5kKHsKKyAgICB9KSwKKyAgICBiLmV4
dGVuZCh7CiAgICAgICAgIHZhbEhvb2tzOiB7CiAgICAgICAgICAgICBvcHRpb246IHsKICAgICAg
ICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKGUpIHsKQEAgLTg5Nyw3ICs5NTgsOSBAQAogICAgICAg
ICAgICAgICAgIG8gPSB0ICYmIHQubWF0Y2godyk7CiAgICAgICAgICAgICBpZiAobyAmJiAxID09
PSBlLm5vZGVUeXBlKQogICAgICAgICAgICAgICAgIHdoaWxlIChuID0gb1tpKytdKQotICAgICAg
ICAgICAgICAgICAgICByID0gYi5wcm9wRml4W25dIHx8IG4sIEoudGVzdChuKSA/ICFRICYmIEcu
dGVzdChuKSA/IGVbYi5jYW1lbENhc2UoImRlZmF1bHQtIiArIG4pXSA9IGVbcl0gPSAhMSA6IGVb
cl0gPSAhMSA6IGIuYXR0cihlLCBuLCAiIiksIGUucmVtb3ZlQXR0cmlidXRlKFEgPyBuIDogcikK
KyAgICAgICAgICAgICAgICAgICAgciA9IGIucHJvcEZpeFtuXSB8fCBuLAorICAgICAgICAgICAg
ICAgICAgICBKLnRlc3QobikgPyAhUSAmJiBHLnRlc3QobikgPyBlW2IuY2FtZWxDYXNlKCJkZWZh
dWx0LSIgKyBuKV0gPSBlW3JdID0gITEgOiBlW3JdID0gITEgOiBiLmF0dHIoZSwgbiwgIiIpLAor
ICAgICAgICAgICAgICAgICAgICBlLnJlbW92ZUF0dHJpYnV0ZShRID8gbiA6IHIpCiAgICAgICAg
IH0sCiAgICAgICAgIGF0dHJIb29rczogewogICAgICAgICAgICAgdHlwZTogewpAQCAtOTM5LDcg
KzEwMDIsOCBAQAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQot
ICAgIH0pLCB6ID0geworICAgIH0pLAorICAgIHogPSB7CiAgICAgICAgIGdldDogZnVuY3Rpb24o
ZSwgbikgewogICAgICAgICAgICAgdmFyIHIgPSBiLnByb3AoZSwgbiksCiAgICAgICAgICAgICAg
ICAgaSA9ICJib29sZWFuIiA9PSB0eXBlb2YgciAmJiBlLmdldEF0dHJpYnV0ZShuKSwKQEAgLTk0
OSw3ICsxMDEzLDggQEAKICAgICAgICAgc2V0OiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAg
ICAgICByZXR1cm4gdCA9PT0gITEgPyBiLnJlbW92ZUF0dHIoZSwgbikgOiBLICYmIFEgfHwgIUcu
dGVzdChuKSA/IGUuc2V0QXR0cmlidXRlKCFRICYmIGIucHJvcEZpeFtuXSB8fCBuLCBuKSA6IGVb
Yi5jYW1lbENhc2UoImRlZmF1bHQtIiArIG4pXSA9IGVbbl0gPSAhMCwgbgogICAgICAgICB9Ci0g
ICAgfSwgSyAmJiBRIHx8IChiLmF0dHJIb29rcy52YWx1ZSA9IHsKKyAgICB9LAorICAgIEsgJiYg
USB8fCAoYi5hdHRySG9va3MudmFsdWUgPSB7CiAgICAgICAgIGdldDogZnVuY3Rpb24oZSwgbikg
ewogICAgICAgICAgICAgdmFyIHIgPSBlLmdldEF0dHJpYnV0ZU5vZGUobik7CiAgICAgICAgICAg
ICByZXR1cm4gYi5ub2RlTmFtZShlLCAiaW5wdXQiKSA/IGUuZGVmYXVsdFZhbHVlIDogciAmJiBy
LnNwZWNpZmllZCA/IHIudmFsdWUgOiB0CkBAIC05NTcsNyArMTAyMiw4IEBACiAgICAgICAgIHNl
dDogZnVuY3Rpb24oZSwgbiwgcikgewogICAgICAgICAgICAgcmV0dXJuIGIubm9kZU5hbWUoZSwg
ImlucHV0IikgPyAoZS5kZWZhdWx0VmFsdWUgPSBuLCB0KSA6IEkgJiYgSS5zZXQoZSwgbiwgcikK
ICAgICAgICAgfQotICAgIH0pLCBRIHx8IChJID0gYi52YWxIb29rcy5idXR0b24gPSB7CisgICAg
fSksCisgICAgUSB8fCAoSSA9IGIudmFsSG9va3MuYnV0dG9uID0gewogICAgICAgICBnZXQ6IGZ1
bmN0aW9uKGUsIG4pIHsKICAgICAgICAgICAgIHZhciByID0gZS5nZXRBdHRyaWJ1dGVOb2RlKG4p
OwogICAgICAgICAgICAgcmV0dXJuIHIgJiYgKCJpZCIgPT09IG4gfHwgIm5hbWUiID09PSBuIHx8
ICJjb29yZHMiID09PSBuID8gIiIgIT09IHIudmFsdWUgOiByLnNwZWNpZmllZCkgPyByLnZhbHVl
IDogdApAQCAtOTc3LDcgKzEwNDMsOCBAQAogICAgICAgICAgICAgICAgIHJldHVybiAiIiA9PT0g
ciA/IChlLnNldEF0dHJpYnV0ZShuLCAiYXV0byIpLCByKSA6IHQKICAgICAgICAgICAgIH0KICAg
ICAgICAgfSkKLSAgICB9KSksIGIuc3VwcG9ydC5ocmVmTm9ybWFsaXplZCB8fCAoYi5lYWNoKFsi
aHJlZiIsICJzcmMiLCAid2lkdGgiLCAiaGVpZ2h0Il0sIGZ1bmN0aW9uKGUsIG4pIHsKKyAgICB9
KSksCisgICAgYi5zdXBwb3J0LmhyZWZOb3JtYWxpemVkIHx8IChiLmVhY2goWyJocmVmIiwgInNy
YyIsICJ3aWR0aCIsICJoZWlnaHQiXSwgZnVuY3Rpb24oZSwgbikgewogICAgICAgICBiLmF0dHJI
b29rc1tuXSA9IGIuZXh0ZW5kKGIuYXR0ckhvb2tzW25dLCB7CiAgICAgICAgICAgICBnZXQ6IGZ1
bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICB2YXIgciA9IGUuZ2V0QXR0cmlidXRlKG4sIDIp
OwpAQCAtOTkwLDI1ICsxMDU3LDMwIEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIGUuZ2V0QXR0
cmlidXRlKHQsIDQpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICB9KSksIGIuc3VwcG9y
dC5zdHlsZSB8fCAoYi5hdHRySG9va3Muc3R5bGUgPSB7CisgICAgfSkpLAorICAgIGIuc3VwcG9y
dC5zdHlsZSB8fCAoYi5hdHRySG9va3Muc3R5bGUgPSB7CiAgICAgICAgIGdldDogZnVuY3Rpb24o
ZSkgewogICAgICAgICAgICAgcmV0dXJuIGUuc3R5bGUuY3NzVGV4dCB8fCB0CiAgICAgICAgIH0s
CiAgICAgICAgIHNldDogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgcmV0dXJuIGUuc3R5
bGUuY3NzVGV4dCA9IHQgKyAiIgogICAgICAgICB9Ci0gICAgfSksIGIuc3VwcG9ydC5vcHRTZWxl
Y3RlZCB8fCAoYi5wcm9wSG9va3Muc2VsZWN0ZWQgPSBiLmV4dGVuZChiLnByb3BIb29rcy5zZWxl
Y3RlZCwgeworICAgIH0pLAorICAgIGIuc3VwcG9ydC5vcHRTZWxlY3RlZCB8fCAoYi5wcm9wSG9v
a3Muc2VsZWN0ZWQgPSBiLmV4dGVuZChiLnByb3BIb29rcy5zZWxlY3RlZCwgewogICAgICAgICBn
ZXQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgIHZhciB0ID0gZS5wYXJlbnROb2RlOwogICAg
ICAgICAgICAgcmV0dXJuIHQgJiYgKHQuc2VsZWN0ZWRJbmRleCwgdC5wYXJlbnROb2RlICYmIHQu
cGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4KSwgbnVsbAogICAgICAgICB9Ci0gICAgfSkpLCBiLnN1
cHBvcnQuZW5jdHlwZSB8fCAoYi5wcm9wRml4LmVuY3R5cGUgPSAiZW5jb2RpbmciKSwgYi5zdXBw
b3J0LmNoZWNrT24gfHwgYi5lYWNoKFsicmFkaW8iLCAiY2hlY2tib3giXSwgZnVuY3Rpb24oKSB7
CisgICAgfSkpLAorICAgIGIuc3VwcG9ydC5lbmN0eXBlIHx8IChiLnByb3BGaXguZW5jdHlwZSA9
ICJlbmNvZGluZyIpLAorICAgIGIuc3VwcG9ydC5jaGVja09uIHx8IGIuZWFjaChbInJhZGlvIiwg
ImNoZWNrYm94Il0sIGZ1bmN0aW9uKCkgewogICAgICAgICBiLnZhbEhvb2tzW3RoaXNdID0gewog
ICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIG51
bGwgPT09IGUuZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpID8gIm9uIiA6IGUudmFsdWUKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQotICAgIH0pLCBiLmVhY2goWyJyYWRpbyIsICJjaGVja2JveCJdLCBm
dW5jdGlvbigpIHsKKyAgICB9KSwKKyAgICBiLmVhY2goWyJyYWRpbyIsICJjaGVja2JveCJdLCBm
dW5jdGlvbigpIHsKICAgICAgICAgYi52YWxIb29rc1t0aGlzXSA9IGIuZXh0ZW5kKGIudmFsSG9v
a3NbdGhpc10sIHsKICAgICAgICAgICAgIHNldDogZnVuY3Rpb24oZSwgbikgewogICAgICAgICAg
ICAgICAgIHJldHVybiBiLmlzQXJyYXkobikgPyBlLmNoZWNrZWQgPSBiLmluQXJyYXkoYihlKS52
YWwoKSwgbikgPj0gMCA6IHQKQEAgLTEwNDIsMTEgKzExMTQsMjIgQEAKICAgICAgICAgICAgICAg
ICB5LAogICAgICAgICAgICAgICAgIHYgPSBiLl9kYXRhKGUpOwogICAgICAgICAgICAgaWYgKHYp
IHsKLSAgICAgICAgICAgICAgICByLmhhbmRsZXIgJiYgKGMgPSByLCByID0gYy5oYW5kbGVyLCBh
ID0gYy5zZWxlY3RvciksIHIuZ3VpZCB8fCAoci5ndWlkID0gYi5ndWlkKyspLCAodSA9IHYuZXZl
bnRzKSB8fCAodSA9IHYuZXZlbnRzID0ge30pLCAoZiA9IHYuaGFuZGxlKSB8fCAoZiA9IHYuaGFu
ZGxlID0gZnVuY3Rpb24oZSkgeworICAgICAgICAgICAgICAgIHIuaGFuZGxlciAmJiAoYyA9IHIs
IHIgPSBjLmhhbmRsZXIsIGEgPSBjLnNlbGVjdG9yKSwKKyAgICAgICAgICAgICAgICByLmd1aWQg
fHwgKHIuZ3VpZCA9IGIuZ3VpZCsrKSwKKyAgICAgICAgICAgICAgICAodSA9IHYuZXZlbnRzKSB8
fCAodSA9IHYuZXZlbnRzID0ge30pLAorICAgICAgICAgICAgICAgIChmID0gdi5oYW5kbGUpIHx8
IChmID0gdi5oYW5kbGUgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgIHJldHVy
biB0eXBlb2YgYiA9PT0gaSB8fCBlICYmIGIuZXZlbnQudHJpZ2dlcmVkID09PSBlLnR5cGUgPyB0
IDogYi5ldmVudC5kaXNwYXRjaC5hcHBseShmLmVsZW0sIGFyZ3VtZW50cykKLSAgICAgICAgICAg
ICAgICB9LCBmLmVsZW0gPSBlKSwgbiA9IChuIHx8ICIiKS5tYXRjaCh3KSB8fCBbIiJdLCBsID0g
bi5sZW5ndGg7CisgICAgICAgICAgICAgICAgfSwgZi5lbGVtID0gZSksCisgICAgICAgICAgICAg
ICAgbiA9IChuIHx8ICIiKS5tYXRjaCh3KSB8fCBbIiJdLAorICAgICAgICAgICAgICAgIGwgPSBu
Lmxlbmd0aDsKICAgICAgICAgICAgICAgICB3aGlsZSAobC0tKQotICAgICAgICAgICAgICAgICAg
ICBzID0gcnQuZXhlYyhuW2xdKSB8fCBbXSwgZyA9IHkgPSBzWzFdLCBtID0gKHNbMl0gfHwgIiIp
LnNwbGl0KCIuIikuc29ydCgpLCBwID0gYi5ldmVudC5zcGVjaWFsW2ddIHx8IHt9LCBnID0gKGEg
PyBwLmRlbGVnYXRlVHlwZSA6IHAuYmluZFR5cGUpIHx8IGcsIHAgPSBiLmV2ZW50LnNwZWNpYWxb
Z10gfHwge30sIGQgPSBiLmV4dGVuZCh7CisgICAgICAgICAgICAgICAgICAgIHMgPSBydC5leGVj
KG5bbF0pIHx8IFtdLAorICAgICAgICAgICAgICAgICAgICBnID0geSA9IHNbMV0sCisgICAgICAg
ICAgICAgICAgICAgIG0gPSAoc1syXSB8fCAiIikuc3BsaXQoIi4iKS5zb3J0KCksCisgICAgICAg
ICAgICAgICAgICAgIHAgPSBiLmV2ZW50LnNwZWNpYWxbZ10gfHwge30sCisgICAgICAgICAgICAg
ICAgICAgIGcgPSAoYSA/IHAuZGVsZWdhdGVUeXBlIDogcC5iaW5kVHlwZSkgfHwgZywKKyAgICAg
ICAgICAgICAgICAgICAgcCA9IGIuZXZlbnQuc3BlY2lhbFtnXSB8fCB7fSwKKyAgICAgICAgICAg
ICAgICAgICAgZCA9IGIuZXh0ZW5kKHsKICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IGcs
CiAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnVHlwZTogeSwKICAgICAgICAgICAgICAgICAg
ICAgICAgIGRhdGE6IG8sCkBAIC0xMDU1LDcgKzExMzgsMTEgQEAKICAgICAgICAgICAgICAgICAg
ICAgICAgIHNlbGVjdG9yOiBhLAogICAgICAgICAgICAgICAgICAgICAgICAgbmVlZHNDb250ZXh0
OiBhICYmIGIuZXhwci5tYXRjaC5uZWVkc0NvbnRleHQudGVzdChhKSwKICAgICAgICAgICAgICAg
ICAgICAgICAgIG5hbWVzcGFjZTogbS5qb2luKCIuIikKLSAgICAgICAgICAgICAgICAgICAgfSwg
YyksIChoID0gdVtnXSkgfHwgKGggPSB1W2ddID0gW10sIGguZGVsZWdhdGVDb3VudCA9IDAsIHAu
c2V0dXAgJiYgcC5zZXR1cC5jYWxsKGUsIG8sIG0sIGYpICE9PSAhMSB8fCAoZS5hZGRFdmVudExp
c3RlbmVyID8gZS5hZGRFdmVudExpc3RlbmVyKGcsIGYsICExKSA6IGUuYXR0YWNoRXZlbnQgJiYg
ZS5hdHRhY2hFdmVudCgib24iICsgZywgZikpKSwgcC5hZGQgJiYgKHAuYWRkLmNhbGwoZSwgZCks
IGQuaGFuZGxlci5ndWlkIHx8IChkLmhhbmRsZXIuZ3VpZCA9IHIuZ3VpZCkpLCBhID8gaC5zcGxp
Y2UoaC5kZWxlZ2F0ZUNvdW50KyssIDAsIGQpIDogaC5wdXNoKGQpLCBiLmV2ZW50Lmdsb2JhbFtn
XSA9ICEwOworICAgICAgICAgICAgICAgICAgICB9LCBjKSwKKyAgICAgICAgICAgICAgICAgICAg
KGggPSB1W2ddKSB8fCAoaCA9IHVbZ10gPSBbXSwgaC5kZWxlZ2F0ZUNvdW50ID0gMCwgcC5zZXR1
cCAmJiBwLnNldHVwLmNhbGwoZSwgbywgbSwgZikgIT09ICExIHx8IChlLmFkZEV2ZW50TGlzdGVu
ZXIgPyBlLmFkZEV2ZW50TGlzdGVuZXIoZywgZiwgITEpIDogZS5hdHRhY2hFdmVudCAmJiBlLmF0
dGFjaEV2ZW50KCJvbiIgKyBnLCBmKSkpLAorICAgICAgICAgICAgICAgICAgICBwLmFkZCAmJiAo
cC5hZGQuY2FsbChlLCBkKSwgZC5oYW5kbGVyLmd1aWQgfHwgKGQuaGFuZGxlci5ndWlkID0gci5n
dWlkKSksCisgICAgICAgICAgICAgICAgICAgIGEgPyBoLnNwbGljZShoLmRlbGVnYXRlQ291bnQr
KywgMCwgZCkgOiBoLnB1c2goZCksCisgICAgICAgICAgICAgICAgICAgIGIuZXZlbnQuZ2xvYmFs
W2ddID0gITA7CiAgICAgICAgICAgICAgICAgZSA9IG51bGwKICAgICAgICAgICAgIH0KICAgICAg
ICAgfSwKQEAgLTEwNzMsMTIgKzExNjAsMTggQEAKICAgICAgICAgICAgICAgICBnLAogICAgICAg
ICAgICAgICAgIG0gPSBiLmhhc0RhdGEoZSkgJiYgYi5fZGF0YShlKTsKICAgICAgICAgICAgIGlm
IChtICYmIChjID0gbS5ldmVudHMpKSB7Ci0gICAgICAgICAgICAgICAgdCA9ICh0IHx8ICIiKS5t
YXRjaCh3KSB8fCBbIiJdLCBsID0gdC5sZW5ndGg7CisgICAgICAgICAgICAgICAgdCA9ICh0IHx8
ICIiKS5tYXRjaCh3KSB8fCBbIiJdLAorICAgICAgICAgICAgICAgIGwgPSB0Lmxlbmd0aDsKICAg
ICAgICAgICAgICAgICB3aGlsZSAobC0tKQogICAgICAgICAgICAgICAgICAgICBpZiAocyA9IHJ0
LmV4ZWModFtsXSkgfHwgW10sIGQgPSBnID0gc1sxXSwgaCA9IChzWzJdIHx8ICIiKS5zcGxpdCgi
LiIpLnNvcnQoKSwgZCkgewotICAgICAgICAgICAgICAgICAgICAgICAgcCA9IGIuZXZlbnQuc3Bl
Y2lhbFtkXSB8fCB7fSwgZCA9IChyID8gcC5kZWxlZ2F0ZVR5cGUgOiBwLmJpbmRUeXBlKSB8fCBk
LCBmID0gY1tkXSB8fCBbXSwgcyA9IHNbMl0gJiYgUmVnRXhwKCIoXnxcXC4pIiArIGguam9pbigi
XFwuKD86LipcXC58KSIpICsgIihcXC58JCkiKSwgdSA9IG8gPSBmLmxlbmd0aDsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHAgPSBiLmV2ZW50LnNwZWNpYWxbZF0gfHwge30sCisgICAgICAgICAg
ICAgICAgICAgICAgICBkID0gKHIgPyBwLmRlbGVnYXRlVHlwZSA6IHAuYmluZFR5cGUpIHx8IGQs
CisgICAgICAgICAgICAgICAgICAgICAgICBmID0gY1tkXSB8fCBbXSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHMgPSBzWzJdICYmIFJlZ0V4cCgiKF58XFwuKSIgKyBoLmpvaW4oIlxcLig/Oi4q
XFwufCkiKSArICIoXFwufCQpIiksCisgICAgICAgICAgICAgICAgICAgICAgICB1ID0gbyA9IGYu
bGVuZ3RoOwogICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKG8tLSkKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhID0gZltvXSwgIWkgJiYgZyAhPT0gYS5vcmlnVHlwZSB8fCBuICYm
IG4uZ3VpZCAhPT0gYS5ndWlkIHx8IHMgJiYgIXMudGVzdChhLm5hbWVzcGFjZSkgfHwgciAmJiBy
ICE9PSBhLnNlbGVjdG9yICYmICgiKioiICE9PSByIHx8ICFhLnNlbGVjdG9yKSB8fCAoZi5zcGxp
Y2UobywgMSksIGEuc2VsZWN0b3IgJiYgZi5kZWxlZ2F0ZUNvdW50LS0sIHAucmVtb3ZlICYmIHAu
cmVtb3ZlLmNhbGwoZSwgYSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBmW29d
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICFpICYmIGcgIT09IGEub3JpZ1R5cGUgfHwg
biAmJiBuLmd1aWQgIT09IGEuZ3VpZCB8fCBzICYmICFzLnRlc3QoYS5uYW1lc3BhY2UpIHx8IHIg
JiYgciAhPT0gYS5zZWxlY3RvciAmJiAoIioqIiAhPT0gciB8fCAhYS5zZWxlY3RvcikgfHwgKGYu
c3BsaWNlKG8sIDEpLCBhLnNlbGVjdG9yICYmIGYuZGVsZWdhdGVDb3VudC0tLCBwLnJlbW92ZSAm
JiBwLnJlbW92ZS5jYWxsKGUsIGEpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHUgJiYgIWYu
bGVuZ3RoICYmIChwLnRlYXJkb3duICYmIHAudGVhcmRvd24uY2FsbChlLCBoLCBtLmhhbmRsZSkg
IT09ICExIHx8IGIucmVtb3ZlRXZlbnQoZSwgZCwgbS5oYW5kbGUpLCBkZWxldGUgY1tkXSkKICAg
ICAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGQg
aW4gYykKQEAgLTExMDAsMTggKzExOTMsMjYgQEAKICAgICAgICAgICAgIGlmIChsID0gZiA9IGkg
PSBpIHx8IG8sIDMgIT09IGkubm9kZVR5cGUgJiYgOCAhPT0gaS5ub2RlVHlwZSAmJiAhbnQudGVz
dChnICsgYi5ldmVudC50cmlnZ2VyZWQpICYmIChnLmluZGV4T2YoIi4iKSA+PSAwICYmIChtID0g
Zy5zcGxpdCgiLiIpLCBnID0gbS5zaGlmdCgpLCBtLnNvcnQoKSksIHUgPSAwID4gZy5pbmRleE9m
KCI6IikgJiYgIm9uIiArIGcsIG4gPSBuW2IuZXhwYW5kb10gPyBuIDogbmV3IGIuRXZlbnQoZywg
Im9iamVjdCIgPT0gdHlwZW9mIG4gJiYgbiksIG4uaXNUcmlnZ2VyID0gITAsIG4ubmFtZXNwYWNl
ID0gbS5qb2luKCIuIiksIG4ubmFtZXNwYWNlX3JlID0gbi5uYW1lc3BhY2UgPyBSZWdFeHAoIihe
fFxcLikiICsgbS5qb2luKCJcXC4oPzouKlxcLnwpIikgKyAiKFxcLnwkKSIpIDogbnVsbCwgbi5y
ZXN1bHQgPSB0LCBuLnRhcmdldCB8fCAobi50YXJnZXQgPSBpKSwgciA9IG51bGwgPT0gciA/IFtu
XSA6IGIubWFrZUFycmF5KHIsIFtuXSksIHAgPSBiLmV2ZW50LnNwZWNpYWxbZ10gfHwge30sIGEg
fHwgIXAudHJpZ2dlciB8fCBwLnRyaWdnZXIuYXBwbHkoaSwgcikgIT09ICExKSkgewogICAgICAg
ICAgICAgICAgIGlmICghYSAmJiAhcC5ub0J1YmJsZSAmJiAhYi5pc1dpbmRvdyhpKSkgewogICAg
ICAgICAgICAgICAgICAgICBmb3IgKGMgPSBwLmRlbGVnYXRlVHlwZSB8fCBnLCBudC50ZXN0KGMg
KyBnKSB8fCAobCA9IGwucGFyZW50Tm9kZSk7IGw7IGwgPSBsLnBhcmVudE5vZGUpCi0gICAgICAg
ICAgICAgICAgICAgICAgICBoLnB1c2gobCksIGYgPSBsOworICAgICAgICAgICAgICAgICAgICAg
ICAgaC5wdXNoKGwpLAorICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGw7CiAgICAgICAgICAg
ICAgICAgICAgIGYgPT09IChpLm93bmVyRG9jdW1lbnQgfHwgbykgJiYgaC5wdXNoKGYuZGVmYXVs
dFZpZXcgfHwgZi5wYXJlbnRXaW5kb3cgfHwgZSkKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgZCA9IDA7CiAgICAgICAgICAgICAgICAgd2hpbGUgKChsID0gaFtkKytdKSAmJiAh
bi5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKQotICAgICAgICAgICAgICAgICAgICBuLnR5cGUgPSBk
ID4gMSA/IGMgOiBwLmJpbmRUeXBlIHx8IGcsIHMgPSAoYi5fZGF0YShsLCAiZXZlbnRzIikgfHwg
e30pW24udHlwZV0gJiYgYi5fZGF0YShsLCAiaGFuZGxlIiksIHMgJiYgcy5hcHBseShsLCByKSwg
cyA9IHUgJiYgbFt1XSwgcyAmJiBiLmFjY2VwdERhdGEobCkgJiYgcy5hcHBseSAmJiBzLmFwcGx5
KGwsIHIpID09PSAhMSAmJiBuLnByZXZlbnREZWZhdWx0KCk7CisgICAgICAgICAgICAgICAgICAg
IG4udHlwZSA9IGQgPiAxID8gYyA6IHAuYmluZFR5cGUgfHwgZywKKyAgICAgICAgICAgICAgICAg
ICAgcyA9IChiLl9kYXRhKGwsICJldmVudHMiKSB8fCB7fSlbbi50eXBlXSAmJiBiLl9kYXRhKGws
ICJoYW5kbGUiKSwKKyAgICAgICAgICAgICAgICAgICAgcyAmJiBzLmFwcGx5KGwsIHIpLAorICAg
ICAgICAgICAgICAgICAgICBzID0gdSAmJiBsW3VdLAorICAgICAgICAgICAgICAgICAgICBzICYm
IGIuYWNjZXB0RGF0YShsKSAmJiBzLmFwcGx5ICYmIHMuYXBwbHkobCwgcikgPT09ICExICYmIG4u
cHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgICBpZiAobi50eXBlID0gZywgIShhIHx8
IG4uaXNEZWZhdWx0UHJldmVudGVkKCkgfHwgcC5fZGVmYXVsdCAmJiBwLl9kZWZhdWx0LmFwcGx5
KGkub3duZXJEb2N1bWVudCwgcikgIT09ICExIHx8ICJjbGljayIgPT09IGcgJiYgYi5ub2RlTmFt
ZShpLCAiYSIpIHx8ICFiLmFjY2VwdERhdGEoaSkgfHwgIXUgfHwgIWlbZ10gfHwgYi5pc1dpbmRv
dyhpKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgZiA9IGlbdV0sIGYgJiYgKGlbdV0gPSBudWxs
KSwgYi5ldmVudC50cmlnZ2VyZWQgPSBnOworICAgICAgICAgICAgICAgICAgICBmID0gaVt1XSwK
KyAgICAgICAgICAgICAgICAgICAgZiAmJiAoaVt1XSA9IG51bGwpLAorICAgICAgICAgICAgICAg
ICAgICBiLmV2ZW50LnRyaWdnZXJlZCA9IGc7CiAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBpW2ddKCkKICAgICAgICAgICAgICAgICAgICAgfSBjYXRj
aCAodikge30KLSAgICAgICAgICAgICAgICAgICAgYi5ldmVudC50cmlnZ2VyZWQgPSB0LCBmICYm
IChpW3VdID0gZikKKyAgICAgICAgICAgICAgICAgICAgYi5ldmVudC50cmlnZ2VyZWQgPSB0LAor
ICAgICAgICAgICAgICAgICAgICBmICYmIChpW3VdID0gZikKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIG4ucmVzdWx0CiAgICAgICAgICAgICB9CkBAIC0xMTI4LDkg
KzEyMjksMTEgQEAKICAgICAgICAgICAgICAgICBsID0gKGIuX2RhdGEodGhpcywgImV2ZW50cyIp
IHx8IHt9KVtlLnR5cGVdIHx8IFtdLAogICAgICAgICAgICAgICAgIGMgPSBiLmV2ZW50LnNwZWNp
YWxbZS50eXBlXSB8fCB7fTsKICAgICAgICAgICAgIGlmICh1WzBdID0gZSwgZS5kZWxlZ2F0ZVRh
cmdldCA9IHRoaXMsICFjLnByZURpc3BhdGNoIHx8IGMucHJlRGlzcGF0Y2guY2FsbCh0aGlzLCBl
KSAhPT0gITEpIHsKLSAgICAgICAgICAgICAgICBzID0gYi5ldmVudC5oYW5kbGVycy5jYWxsKHRo
aXMsIGUsIGwpLCBuID0gMDsKKyAgICAgICAgICAgICAgICBzID0gYi5ldmVudC5oYW5kbGVycy5j
YWxsKHRoaXMsIGUsIGwpLAorICAgICAgICAgICAgICAgIG4gPSAwOwogICAgICAgICAgICAgICAg
IHdoaWxlICgobyA9IHNbbisrXSkgJiYgIWUuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSkgewotICAg
ICAgICAgICAgICAgICAgICBlLmN1cnJlbnRUYXJnZXQgPSBvLmVsZW0sIGEgPSAwOworICAgICAg
ICAgICAgICAgICAgICBlLmN1cnJlbnRUYXJnZXQgPSBvLmVsZW0sCisgICAgICAgICAgICAgICAg
ICAgIGEgPSAwOwogICAgICAgICAgICAgICAgICAgICB3aGlsZSAoKGkgPSBvLmhhbmRsZXJzW2Er
K10pICYmICFlLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkKCkpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAoIWUubmFtZXNwYWNlX3JlIHx8IGUubmFtZXNwYWNlX3JlLnRlc3QoaS5uYW1l
c3BhY2UpKSAmJiAoZS5oYW5kbGVPYmogPSBpLCBlLmRhdGEgPSBpLmRhdGEsIHIgPSAoKGIuZXZl
bnQuc3BlY2lhbFtpLm9yaWdUeXBlXSB8fCB7fSkuaGFuZGxlIHx8IGkuaGFuZGxlcikuYXBwbHko
by5lbGVtLCB1KSwgciAhPT0gdCAmJiAoZS5yZXN1bHQgPSByKSA9PT0gITEgJiYgKGUucHJldmVu
dERlZmF1bHQoKSwgZS5zdG9wUHJvcGFnYXRpb24oKSkpCiAgICAgICAgICAgICAgICAgfQpAQCAt
MTE0OSw3ICsxMjUyLDEwIEBACiAgICAgICAgICAgICAgICAgZm9yICg7IGwgIT0gdGhpczsgbCA9
IGwucGFyZW50Tm9kZSB8fCB0aGlzKQogICAgICAgICAgICAgICAgICAgICBpZiAoMSA9PT0gbC5u
b2RlVHlwZSAmJiAobC5kaXNhYmxlZCAhPT0gITAgfHwgImNsaWNrIiAhPT0gZS50eXBlKSkgewog
ICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChvID0gW10sIGEgPSAwOyB1ID4gYTsgYSsrKQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBuW2FdLCByID0gaS5zZWxlY3RvciArICIg
Iiwgb1tyXSA9PT0gdCAmJiAob1tyXSA9IGkubmVlZHNDb250ZXh0ID8gYihyLCB0aGlzKS5pbmRl
eChsKSA+PSAwIDogYi5maW5kKHIsIHRoaXMsIG51bGwsIFtsXSkubGVuZ3RoKSwgb1tyXSAmJiBv
LnB1c2goaSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG5bYV0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgciA9IGkuc2VsZWN0b3IgKyAiICIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgb1tyXSA9PT0gdCAmJiAob1tyXSA9IGkubmVlZHNDb250ZXh0ID8gYihy
LCB0aGlzKS5pbmRleChsKSA+PSAwIDogYi5maW5kKHIsIHRoaXMsIG51bGwsIFtsXSkubGVuZ3Ro
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvW3JdICYmIG8ucHVzaChpKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIG8ubGVuZ3RoICYmIHMucHVzaCh7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZWxlbTogbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVy
czogbwpAQCAtMTE2OSw5ICsxMjc1LDEzIEBACiAgICAgICAgICAgICAgICAgaSA9IGUudHlwZSwK
ICAgICAgICAgICAgICAgICBhID0gZSwKICAgICAgICAgICAgICAgICBzID0gdGhpcy5maXhIb29r
c1tpXTsKLSAgICAgICAgICAgIHMgfHwgKHRoaXMuZml4SG9va3NbaV0gPSBzID0gdHQudGVzdChp
KSA/IHRoaXMubW91c2VIb29rcyA6IGV0LnRlc3QoaSkgPyB0aGlzLmtleUhvb2tzIDoge30pLCBy
ID0gcy5wcm9wcyA/IHRoaXMucHJvcHMuY29uY2F0KHMucHJvcHMpIDogdGhpcy5wcm9wcywgZSA9
IG5ldyBiLkV2ZW50KGEpLCB0ID0gci5sZW5ndGg7CisgICAgICAgICAgICBzIHx8ICh0aGlzLmZp
eEhvb2tzW2ldID0gcyA9IHR0LnRlc3QoaSkgPyB0aGlzLm1vdXNlSG9va3MgOiBldC50ZXN0KGkp
ID8gdGhpcy5rZXlIb29rcyA6IHt9KSwKKyAgICAgICAgICAgIHIgPSBzLnByb3BzID8gdGhpcy5w
cm9wcy5jb25jYXQocy5wcm9wcykgOiB0aGlzLnByb3BzLAorICAgICAgICAgICAgZSA9IG5ldyBi
LkV2ZW50KGEpLAorICAgICAgICAgICAgdCA9IHIubGVuZ3RoOwogICAgICAgICAgICAgd2hpbGUg
KHQtLSkKLSAgICAgICAgICAgICAgICBuID0gclt0XSwgZVtuXSA9IGFbbl07CisgICAgICAgICAg
ICAgICAgbiA9IHJbdF0sCisgICAgICAgICAgICAgICAgZVtuXSA9IGFbbl07CiAgICAgICAgICAg
ICByZXR1cm4gZS50YXJnZXQgfHwgKGUudGFyZ2V0ID0gYS5zcmNFbGVtZW50IHx8IG8pLCAzID09
PSBlLnRhcmdldC5ub2RlVHlwZSAmJiAoZS50YXJnZXQgPSBlLnRhcmdldC5wYXJlbnROb2RlKSwg
ZS5tZXRhS2V5ID0gISFlLm1ldGFLZXksIHMuZmlsdGVyID8gcy5maWx0ZXIoZSwgYSkgOiBlCiAg
ICAgICAgIH0sCiAgICAgICAgIHByb3BzOiAiYWx0S2V5IGJ1YmJsZXMgY2FuY2VsYWJsZSBjdHJs
S2V5IGN1cnJlbnRUYXJnZXQgZXZlbnRQaGFzZSBtZXRhS2V5IHJlbGF0ZWRUYXJnZXQgc2hpZnRL
ZXkgdGFyZ2V0IHRpbWVTdGFtcCB2aWV3IHdoaWNoIi5zcGxpdCgiICIpLApAQCAtMTIyOSwzMSAr
MTMzOSwzOSBAQAogICAgICAgICAgICAgICAgIGlzU2ltdWxhdGVkOiAhMCwKICAgICAgICAgICAg
ICAgICBvcmlnaW5hbEV2ZW50OiB7fQogICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICByID8g
Yi5ldmVudC50cmlnZ2VyKGksIG51bGwsIHQpIDogYi5ldmVudC5kaXNwYXRjaC5jYWxsKHQsIGkp
LCBpLmlzRGVmYXVsdFByZXZlbnRlZCgpICYmIG4ucHJldmVudERlZmF1bHQoKQorICAgICAgICAg
ICAgciA/IGIuZXZlbnQudHJpZ2dlcihpLCBudWxsLCB0KSA6IGIuZXZlbnQuZGlzcGF0Y2guY2Fs
bCh0LCBpKSwKKyAgICAgICAgICAgIGkuaXNEZWZhdWx0UHJldmVudGVkKCkgJiYgbi5wcmV2ZW50
RGVmYXVsdCgpCiAgICAgICAgIH0KLSAgICB9LCBiLnJlbW92ZUV2ZW50ID0gby5yZW1vdmVFdmVu
dExpc3RlbmVyID8gZnVuY3Rpb24oZSwgdCwgbikgeworICAgIH0sCisgICAgYi5yZW1vdmVFdmVu
dCA9IG8ucmVtb3ZlRXZlbnRMaXN0ZW5lciA/IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAg
ZS5yZW1vdmVFdmVudExpc3RlbmVyICYmIGUucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LCBuLCAhMSkK
ICAgICB9IDogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICB2YXIgciA9ICJvbiIgKyB0Owog
ICAgICAgICBlLmRldGFjaEV2ZW50ICYmICh0eXBlb2YgZVtyXSA9PT0gaSAmJiAoZVtyXSA9IG51
bGwpLCBlLmRldGFjaEV2ZW50KHIsIG4pKQotICAgIH0sIGIuRXZlbnQgPSBmdW5jdGlvbihlLCBu
KSB7CisgICAgfSwKKyAgICBiLkV2ZW50ID0gZnVuY3Rpb24oZSwgbikgewogICAgICAgICByZXR1
cm4gdGhpcyBpbnN0YW5jZW9mIGIuRXZlbnQgPyAoZSAmJiBlLnR5cGUgPyAodGhpcy5vcmlnaW5h
bEV2ZW50ID0gZSwgdGhpcy50eXBlID0gZS50eXBlLCB0aGlzLmlzRGVmYXVsdFByZXZlbnRlZCA9
IGUuZGVmYXVsdFByZXZlbnRlZCB8fCBlLnJldHVyblZhbHVlID09PSAhMSB8fCBlLmdldFByZXZl
bnREZWZhdWx0ICYmIGUuZ2V0UHJldmVudERlZmF1bHQoKSA/IGl0IDogb3QpIDogdGhpcy50eXBl
ID0gZSwgbiAmJiBiLmV4dGVuZCh0aGlzLCBuKSwgdGhpcy50aW1lU3RhbXAgPSBlICYmIGUudGlt
ZVN0YW1wIHx8IGIubm93KCksIHRoaXNbYi5leHBhbmRvXSA9ICEwLCB0KSA6IG5ldyBiLkV2ZW50
KGUsIG4pCi0gICAgfSwgYi5FdmVudC5wcm90b3R5cGUgPSB7CisgICAgfSwKKyAgICBiLkV2ZW50
LnByb3RvdHlwZSA9IHsKICAgICAgICAgaXNEZWZhdWx0UHJldmVudGVkOiBvdCwKICAgICAgICAg
aXNQcm9wYWdhdGlvblN0b3BwZWQ6IG90LAogICAgICAgICBpc0ltbWVkaWF0ZVByb3BhZ2F0aW9u
U3RvcHBlZDogb3QsCiAgICAgICAgIHByZXZlbnREZWZhdWx0OiBmdW5jdGlvbigpIHsKICAgICAg
ICAgICAgIHZhciBlID0gdGhpcy5vcmlnaW5hbEV2ZW50OwotICAgICAgICAgICAgdGhpcy5pc0Rl
ZmF1bHRQcmV2ZW50ZWQgPSBpdCwgZSAmJiAoZS5wcmV2ZW50RGVmYXVsdCA/IGUucHJldmVudERl
ZmF1bHQoKSA6IGUucmV0dXJuVmFsdWUgPSAhMSkKKyAgICAgICAgICAgIHRoaXMuaXNEZWZhdWx0
UHJldmVudGVkID0gaXQsCisgICAgICAgICAgICBlICYmIChlLnByZXZlbnREZWZhdWx0ID8gZS5w
cmV2ZW50RGVmYXVsdCgpIDogZS5yZXR1cm5WYWx1ZSA9ICExKQogICAgICAgICB9LAogICAgICAg
ICBzdG9wUHJvcGFnYXRpb246IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgdmFyIGUgPSB0aGlz
Lm9yaWdpbmFsRXZlbnQ7Ci0gICAgICAgICAgICB0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkID0g
aXQsIGUgJiYgKGUuc3RvcFByb3BhZ2F0aW9uICYmIGUuc3RvcFByb3BhZ2F0aW9uKCksIGUuY2Fu
Y2VsQnViYmxlID0gITApCisgICAgICAgICAgICB0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkID0g
aXQsCisgICAgICAgICAgICBlICYmIChlLnN0b3BQcm9wYWdhdGlvbiAmJiBlLnN0b3BQcm9wYWdh
dGlvbigpLCBlLmNhbmNlbEJ1YmJsZSA9ICEwKQogICAgICAgICB9LAogICAgICAgICBzdG9wSW1t
ZWRpYXRlUHJvcGFnYXRpb246IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgdGhpcy5pc0ltbWVk
aWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCA9IGl0LCB0aGlzLnN0b3BQcm9wYWdhdGlvbigpCisgICAg
ICAgICAgICB0aGlzLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkID0gaXQsCisgICAgICAg
ICAgICB0aGlzLnN0b3BQcm9wYWdhdGlvbigpCiAgICAgICAgIH0KLSAgICB9LCBiLmVhY2goewor
ICAgIH0sCisgICAgYi5lYWNoKHsKICAgICAgICAgbW91c2VlbnRlcjogIm1vdXNlb3ZlciIsCiAg
ICAgICAgIG1vdXNlbGVhdmU6ICJtb3VzZW91dCIKICAgICB9LCBmdW5jdGlvbihlLCB0KSB7CkBA
IC0xMjY4LDcgKzEzODYsOCBAQAogICAgICAgICAgICAgICAgIHJldHVybiAoIWkgfHwgaSAhPT0g
ciAmJiAhYi5jb250YWlucyhyLCBpKSkgJiYgKGUudHlwZSA9IG8ub3JpZ1R5cGUsIG4gPSBvLmhh
bmRsZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSwgZS50eXBlID0gdCksIG4KICAgICAgICAgICAg
IH0KICAgICAgICAgfQotICAgIH0pLCBiLnN1cHBvcnQuc3VibWl0QnViYmxlcyB8fCAoYi5ldmVu
dC5zcGVjaWFsLnN1Ym1pdCA9IHsKKyAgICB9KSwKKyAgICBiLnN1cHBvcnQuc3VibWl0QnViYmxl
cyB8fCAoYi5ldmVudC5zcGVjaWFsLnN1Ym1pdCA9IHsKICAgICAgICAgc2V0dXA6IGZ1bmN0aW9u
KCkgewogICAgICAgICAgICAgcmV0dXJuIGIubm9kZU5hbWUodGhpcywgImZvcm0iKSA/ICExIDog
KGIuZXZlbnQuYWRkKHRoaXMsICJjbGljay5fc3VibWl0IGtleXByZXNzLl9zdWJtaXQiLCBmdW5j
dGlvbihlKSB7CiAgICAgICAgICAgICAgICAgdmFyIG4gPSBlLnRhcmdldCwKQEAgLTEyODQsMTIg
KzE0MDMsMTQgQEAKICAgICAgICAgdGVhcmRvd246IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAg
cmV0dXJuIGIubm9kZU5hbWUodGhpcywgImZvcm0iKSA/ICExIDogKGIuZXZlbnQucmVtb3ZlKHRo
aXMsICIuX3N1Ym1pdCIpLCB0KQogICAgICAgICB9Ci0gICAgfSksIGIuc3VwcG9ydC5jaGFuZ2VC
dWJibGVzIHx8IChiLmV2ZW50LnNwZWNpYWwuY2hhbmdlID0geworICAgIH0pLAorICAgIGIuc3Vw
cG9ydC5jaGFuZ2VCdWJibGVzIHx8IChiLmV2ZW50LnNwZWNpYWwuY2hhbmdlID0gewogICAgICAg
ICBzZXR1cDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICByZXR1cm4gWi50ZXN0KHRoaXMubm9k
ZU5hbWUpID8gKCgiY2hlY2tib3giID09PSB0aGlzLnR5cGUgfHwgInJhZGlvIiA9PT0gdGhpcy50
eXBlKSAmJiAoYi5ldmVudC5hZGQodGhpcywgInByb3BlcnR5Y2hhbmdlLl9jaGFuZ2UiLCBmdW5j
dGlvbihlKSB7CiAgICAgICAgICAgICAgICAgImNoZWNrZWQiID09PSBlLm9yaWdpbmFsRXZlbnQu
cHJvcGVydHlOYW1lICYmICh0aGlzLl9qdXN0X2NoYW5nZWQgPSAhMCkKICAgICAgICAgICAgIH0p
LCBiLmV2ZW50LmFkZCh0aGlzLCAiY2xpY2suX2NoYW5nZSIsIGZ1bmN0aW9uKGUpIHsKLSAgICAg
ICAgICAgICAgICB0aGlzLl9qdXN0X2NoYW5nZWQgJiYgIWUuaXNUcmlnZ2VyICYmICh0aGlzLl9q
dXN0X2NoYW5nZWQgPSAhMSksIGIuZXZlbnQuc2ltdWxhdGUoImNoYW5nZSIsIHRoaXMsIGUsICEw
KQorICAgICAgICAgICAgICAgIHRoaXMuX2p1c3RfY2hhbmdlZCAmJiAhZS5pc1RyaWdnZXIgJiYg
KHRoaXMuX2p1c3RfY2hhbmdlZCA9ICExKSwKKyAgICAgICAgICAgICAgICBiLmV2ZW50LnNpbXVs
YXRlKCJjaGFuZ2UiLCB0aGlzLCBlLCAhMCkKICAgICAgICAgICAgIH0pKSwgITEpIDogKGIuZXZl
bnQuYWRkKHRoaXMsICJiZWZvcmVhY3RpdmF0ZS5fY2hhbmdlIiwgZnVuY3Rpb24oZSkgewogICAg
ICAgICAgICAgICAgIHZhciB0ID0gZS50YXJnZXQ7CiAgICAgICAgICAgICAgICAgWi50ZXN0KHQu
bm9kZU5hbWUpICYmICFiLl9kYXRhKHQsICJjaGFuZ2VCdWJibGVzIikgJiYgKGIuZXZlbnQuYWRk
KHQsICJjaGFuZ2UuX2NoYW5nZSIsIGZ1bmN0aW9uKGUpIHsKQEAgLTEzMDQsNyArMTQyNSw4IEBA
CiAgICAgICAgIHRlYXJkb3duOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgIHJldHVybiBiLmV2
ZW50LnJlbW92ZSh0aGlzLCAiLl9jaGFuZ2UiKSwgIVoudGVzdCh0aGlzLm5vZGVOYW1lKQogICAg
ICAgICB9Ci0gICAgfSksIGIuc3VwcG9ydC5mb2N1c2luQnViYmxlcyB8fCBiLmVhY2goeworICAg
IH0pLAorICAgIGIuc3VwcG9ydC5mb2N1c2luQnViYmxlcyB8fCBiLmVhY2goewogICAgICAgICBm
b2N1czogImZvY3VzaW4iLAogICAgICAgICBibHVyOiAiZm9jdXNvdXQiCiAgICAgfSwgZnVuY3Rp
b24oZSwgdCkgewpAQCAtMTMyMCw3ICsxNDQyLDggQEAKICAgICAgICAgICAgICAgICAwID09PSAt
LW4gJiYgby5yZW1vdmVFdmVudExpc3RlbmVyKGUsIHIsICEwKQogICAgICAgICAgICAgfQogICAg
ICAgICB9Ci0gICAgfSksIGIuZm4uZXh0ZW5kKHsKKyAgICB9KSwKKyAgICBiLmZuLmV4dGVuZCh7
CiAgICAgICAgIG9uOiBmdW5jdGlvbihlLCBuLCByLCBpLCBvKSB7CiAgICAgICAgICAgICB2YXIg
YSwKICAgICAgICAgICAgICAgICBzOwpAQCAtMTM3OCw3ICsxNTAxLDggQEAKICAgICAgICAgICAg
IHZhciByID0gdGhpc1swXTsKICAgICAgICAgICAgIHJldHVybiByID8gYi5ldmVudC50cmlnZ2Vy
KGUsIG4sIHIsICEwKSA6IHQKICAgICAgICAgfQotICAgIH0pLCBmdW5jdGlvbihlLCB0KSB7Cisg
ICAgfSksCisgICAgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICB2YXIgbiwKICAgICAgICAgICAg
IHIsCiAgICAgICAgICAgICBpLApAQCAtMTUxOCwxMCArMTY0MiwxNCBAQAogICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKFQucXNhICYmICFoLnRlc3QoZSkpIHsKICAg
ICAgICAgICAgICAgICAgICAgaWYgKGYgPSAhMCwgZyA9IHgsIG0gPSB0LCB2ID0gOSA9PT0gcyAm
JiBlLCAxID09PSBzICYmICJvYmplY3QiICE9PSB0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBmdChlKSwgKGYgPSB0LmdldEF0dHJpYnV0ZSgi
aWQiKSkgPyBnID0gZi5yZXBsYWNlKEssICJcXCQmIikgOiB0LnNldEF0dHJpYnV0ZSgiaWQiLCBn
KSwgZyA9ICJbaWQ9JyIgKyBnICsgIiddICIsIHUgPSBsLmxlbmd0aDsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGwgPSBmdChlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIChmID0gdC5nZXRB
dHRyaWJ1dGUoImlkIikpID8gZyA9IGYucmVwbGFjZShLLCAiXFwkJiIpIDogdC5zZXRBdHRyaWJ1
dGUoImlkIiwgZyksCisgICAgICAgICAgICAgICAgICAgICAgICBnID0gIltpZD0nIiArIGcgKyAi
J10gIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBsLmxlbmd0aDsKICAgICAgICAgICAg
ICAgICAgICAgICAgIHdoaWxlICh1LS0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbFt1
XSA9IGcgKyBkdChsW3VdKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG0gPSBWLnRlc3QoZSkg
JiYgdC5wYXJlbnROb2RlIHx8IHQsIHYgPSBsLmpvaW4oIiwiKQorICAgICAgICAgICAgICAgICAg
ICAgICAgbSA9IFYudGVzdChlKSAmJiB0LnBhcmVudE5vZGUgfHwgdCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHYgPSBsLmpvaW4oIiwiKQogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgIGlmICh2KQogICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKQEAgLTE1
MzYsNyArMTY2NCw4IEBACiAgICAgICAgIGEgPSBzdC5pc1hNTCA9IGZ1bmN0aW9uKGUpIHsKICAg
ICAgICAgICAgIHZhciB0ID0gZSAmJiAoZS5vd25lckRvY3VtZW50IHx8IGUpLmRvY3VtZW50RWxl
bWVudDsKICAgICAgICAgICAgIHJldHVybiB0ID8gIkhUTUwiICE9PSB0Lm5vZGVOYW1lIDogITEK
LSAgICAgICAgfSwgYyA9IHN0LnNldERvY3VtZW50ID0gZnVuY3Rpb24oZSkgeworICAgICAgICB9
LAorICAgICAgICBjID0gc3Quc2V0RG9jdW1lbnQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAg
ICB2YXIgbiA9IGUgPyBlLm93bmVyRG9jdW1lbnQgfHwgZSA6IHc7CiAgICAgICAgICAgICByZXR1
cm4gbiAhPT0gcCAmJiA5ID09PSBuLm5vZGVUeXBlICYmIG4uZG9jdW1lbnRFbGVtZW50ID8gKHAg
PSBuLCBmID0gbi5kb2N1bWVudEVsZW1lbnQsIGQgPSBhKG4pLCBULnRhZ05hbWVOb0NvbW1lbnRz
ID0gYXQoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgIHJldHVybiBlLmFwcGVuZENoaWxk
KG4uY3JlYXRlQ29tbWVudCgiIikpLCAhZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpLmxlbmd0
aApAQCAtMTU0Nyw3ICsxNjc2LDkgQEAKICAgICAgICAgICAgIH0pLCBULmdldEJ5Q2xhc3NOYW1l
ID0gYXQoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgIHJldHVybiBlLmlubmVySFRNTCA9
ICI8ZGl2IGNsYXNzPSdoaWRkZW4gZSc+PC9kaXY+PGRpdiBjbGFzcz0naGlkZGVuJz48L2Rpdj4i
LCBlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUgJiYgZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJl
IikubGVuZ3RoID8gKGUubGFzdENoaWxkLmNsYXNzTmFtZSA9ICJlIiwgMiA9PT0gZS5nZXRFbGVt
ZW50c0J5Q2xhc3NOYW1lKCJlIikubGVuZ3RoKSA6ICExCiAgICAgICAgICAgICB9KSwgVC5nZXRC
eU5hbWUgPSBhdChmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICAgICAgZS5pZCA9IHggKyAwLCBl
LmlubmVySFRNTCA9ICI8YSBuYW1lPSciICsgeCArICInPjwvYT48ZGl2IG5hbWU9JyIgKyB4ICsg
Iic+PC9kaXY+IiwgZi5pbnNlcnRCZWZvcmUoZSwgZi5maXJzdENoaWxkKTsKKyAgICAgICAgICAg
ICAgICBlLmlkID0geCArIDAsCisgICAgICAgICAgICAgICAgZS5pbm5lckhUTUwgPSAiPGEgbmFt
ZT0nIiArIHggKyAiJz48L2E+PGRpdiBuYW1lPSciICsgeCArICInPjwvZGl2PiIsCisgICAgICAg
ICAgICAgICAgZi5pbnNlcnRCZWZvcmUoZSwgZi5maXJzdENoaWxkKTsKICAgICAgICAgICAgICAg
ICB2YXIgdCA9IG4uZ2V0RWxlbWVudHNCeU5hbWUgJiYgbi5nZXRFbGVtZW50c0J5TmFtZSh4KS5s
ZW5ndGggPT09IDIgKyBuLmdldEVsZW1lbnRzQnlOYW1lKHggKyAwKS5sZW5ndGg7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIFQuZ2V0SWROb3ROYW1lID0gIW4uZ2V0RWxlbWVudEJ5SWQoeCksIGYu
cmVtb3ZlQ2hpbGQoZSksIHQKICAgICAgICAgICAgIH0pLCBpLmF0dHJIYW5kbGUgPSBhdChmdW5j
dGlvbihlKSB7CkBAIC0xNTk4LDExICsxNzI5LDE5IEBACiAgICAgICAgICAgICB9LCBpLmZpbmQu
Q0xBU1MgPSBULmdldEJ5Q2xhc3NOYW1lICYmIGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgICAg
ICAgICByZXR1cm4gdHlwZW9mIG4uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSA9PT0gQSB8fCBkID8g
dCA6IG4uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShlKQogICAgICAgICAgICAgfSwgZyA9IFtdLCBo
ID0gWyI6Zm9jdXMiXSwgKFQucXNhID0gcnQobi5xdWVyeVNlbGVjdG9yQWxsKSkgJiYgKGF0KGZ1
bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAgICBlLmlubmVySFRNTCA9ICI8c2VsZWN0PjxvcHRp
b24gc2VsZWN0ZWQ9Jyc+PC9vcHRpb24+PC9zZWxlY3Q+IiwgZS5xdWVyeVNlbGVjdG9yQWxsKCJb
c2VsZWN0ZWRdIikubGVuZ3RoIHx8IGgucHVzaCgiXFxbIiArIF8gKyAiKig/OmNoZWNrZWR8ZGlz
YWJsZWR8aXNtYXB8bXVsdGlwbGV8cmVhZG9ubHl8c2VsZWN0ZWR8dmFsdWUpIiksIGUucXVlcnlT
ZWxlY3RvckFsbCgiOmNoZWNrZWQiKS5sZW5ndGggfHwgaC5wdXNoKCI6Y2hlY2tlZCIpCisgICAg
ICAgICAgICAgICAgZS5pbm5lckhUTUwgPSAiPHNlbGVjdD48b3B0aW9uIHNlbGVjdGVkPScnPjwv
b3B0aW9uPjwvc2VsZWN0PiIsCisgICAgICAgICAgICAgICAgZS5xdWVyeVNlbGVjdG9yQWxsKCJb
c2VsZWN0ZWRdIikubGVuZ3RoIHx8IGgucHVzaCgiXFxbIiArIF8gKyAiKig/OmNoZWNrZWR8ZGlz
YWJsZWR8aXNtYXB8bXVsdGlwbGV8cmVhZG9ubHl8c2VsZWN0ZWR8dmFsdWUpIiksCisgICAgICAg
ICAgICAgICAgZS5xdWVyeVNlbGVjdG9yQWxsKCI6Y2hlY2tlZCIpLmxlbmd0aCB8fCBoLnB1c2go
IjpjaGVja2VkIikKICAgICAgICAgICAgIH0pLCBhdChmdW5jdGlvbihlKSB7Ci0gICAgICAgICAg
ICAgICAgZS5pbm5lckhUTUwgPSAiPGlucHV0IHR5cGU9J2hpZGRlbicgaT0nJy8+IiwgZS5xdWVy
eVNlbGVjdG9yQWxsKCJbaV49JyddIikubGVuZ3RoICYmIGgucHVzaCgiWypeJF09IiArIF8gKyAi
Kig/OlwiXCJ8JycpIiksIGUucXVlcnlTZWxlY3RvckFsbCgiOmVuYWJsZWQiKS5sZW5ndGggfHwg
aC5wdXNoKCI6ZW5hYmxlZCIsICI6ZGlzYWJsZWQiKSwgZS5xdWVyeVNlbGVjdG9yQWxsKCIqLDp4
IiksIGgucHVzaCgiLC4qOiIpCisgICAgICAgICAgICAgICAgZS5pbm5lckhUTUwgPSAiPGlucHV0
IHR5cGU9J2hpZGRlbicgaT0nJy8+IiwKKyAgICAgICAgICAgICAgICBlLnF1ZXJ5U2VsZWN0b3JB
bGwoIltpXj0nJ10iKS5sZW5ndGggJiYgaC5wdXNoKCJbKl4kXT0iICsgXyArICIqKD86XCJcInwn
JykiKSwKKyAgICAgICAgICAgICAgICBlLnF1ZXJ5U2VsZWN0b3JBbGwoIjplbmFibGVkIikubGVu
Z3RoIHx8IGgucHVzaCgiOmVuYWJsZWQiLCAiOmRpc2FibGVkIiksCisgICAgICAgICAgICAgICAg
ZS5xdWVyeVNlbGVjdG9yQWxsKCIqLDp4IiksCisgICAgICAgICAgICAgICAgaC5wdXNoKCIsLio6
IikKICAgICAgICAgICAgIH0pKSwgKFQubWF0Y2hlc1NlbGVjdG9yID0gcnQobSA9IGYubWF0Y2hl
c1NlbGVjdG9yIHx8IGYubW96TWF0Y2hlc1NlbGVjdG9yIHx8IGYud2Via2l0TWF0Y2hlc1NlbGVj
dG9yIHx8IGYub01hdGNoZXNTZWxlY3RvciB8fCBmLm1zTWF0Y2hlc1NlbGVjdG9yKSkgJiYgYXQo
ZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgICAgIFQuZGlzY29ubmVjdGVkTWF0Y2ggPSBtLmNh
bGwoZSwgImRpdiIpLCBtLmNhbGwoZSwgIltzIT0nJ106eCIpLCBnLnB1c2goIiE9IiwgUikKKyAg
ICAgICAgICAgICAgICBULmRpc2Nvbm5lY3RlZE1hdGNoID0gbS5jYWxsKGUsICJkaXYiKSwKKyAg
ICAgICAgICAgICAgICBtLmNhbGwoZSwgIltzIT0nJ106eCIpLAorICAgICAgICAgICAgICAgIGcu
cHVzaCgiIT0iLCBSKQogICAgICAgICAgICAgfSksIGggPSBSZWdFeHAoaC5qb2luKCJ8IikpLCBn
ID0gUmVnRXhwKGcuam9pbigifCIpKSwgeSA9IHJ0KGYuY29udGFpbnMpIHx8IGYuY29tcGFyZURv
Y3VtZW50UG9zaXRpb24gPyBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgdmFyIG4g
PSA5ID09PSBlLm5vZGVUeXBlID8gZS5kb2N1bWVudEVsZW1lbnQgOiBlLAogICAgICAgICAgICAg
ICAgICAgICByID0gdCAmJiB0LnBhcmVudE5vZGU7CkBAIC0xNjM5LDkgKzE3NzgsMTEgQEAKICAg
ICAgICAgICAgICAgICAgICAgaSsrOwogICAgICAgICAgICAgICAgIHJldHVybiBpID8gdXQoc1tp
XSwgbFtpXSkgOiBzW2ldID09PSB3ID8gLTEgOiBsW2ldID09PSB3ID8gMSA6IDAKICAgICAgICAg
ICAgIH0sIHUgPSAhMSwgWzAsIDBdLnNvcnQodiksIFQuZGV0ZWN0RHVwbGljYXRlcyA9IHUsIHAp
IDogcAotICAgICAgICB9LCBzdC5tYXRjaGVzID0gZnVuY3Rpb24oZSwgdCkgeworICAgICAgICB9
LAorICAgICAgICBzdC5tYXRjaGVzID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgcmV0
dXJuIHN0KGUsIG51bGwsIG51bGwsIHQpCi0gICAgICAgIH0sIHN0Lm1hdGNoZXNTZWxlY3RvciA9
IGZ1bmN0aW9uKGUsIHQpIHsKKyAgICAgICAgfSwKKyAgICAgICAgc3QubWF0Y2hlc1NlbGVjdG9y
ID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgaWYgKChlLm93bmVyRG9jdW1lbnQgfHwg
ZSkgIT09IHAgJiYgYyhlKSwgdCA9IHQucmVwbGFjZShaLCAiPSckMSddIiksICEoIVQubWF0Y2hl
c1NlbGVjdG9yIHx8IGQgfHwgZyAmJiBnLnRlc3QodCkgfHwgaC50ZXN0KHQpKSkKICAgICAgICAg
ICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IG0uY2FsbChlLCB0KTsK
QEAgLTE2NDksMTQgKzE3OTAsMTggQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBu
CiAgICAgICAgICAgICAgICAgfSBjYXRjaCAocikge30KICAgICAgICAgICAgIHJldHVybiBzdCh0
LCBwLCBudWxsLCBbZV0pLmxlbmd0aCA+IDAKLSAgICAgICAgfSwgc3QuY29udGFpbnMgPSBmdW5j
dGlvbihlLCB0KSB7CisgICAgICAgIH0sCisgICAgICAgIHN0LmNvbnRhaW5zID0gZnVuY3Rpb24o
ZSwgdCkgewogICAgICAgICAgICAgcmV0dXJuIChlLm93bmVyRG9jdW1lbnQgfHwgZSkgIT09IHAg
JiYgYyhlKSwgeShlLCB0KQotICAgICAgICB9LCBzdC5hdHRyID0gZnVuY3Rpb24oZSwgdCkgewor
ICAgICAgICB9LAorICAgICAgICBzdC5hdHRyID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAg
ICAgdmFyIG47CiAgICAgICAgICAgICByZXR1cm4gKGUub3duZXJEb2N1bWVudCB8fCBlKSAhPT0g
cCAmJiBjKGUpLCBkIHx8ICh0ID0gdC50b0xvd2VyQ2FzZSgpKSwgKG4gPSBpLmF0dHJIYW5kbGVb
dF0pID8gbihlKSA6IGQgfHwgVC5hdHRyaWJ1dGVzID8gZS5nZXRBdHRyaWJ1dGUodCkgOiAoKG4g
PSBlLmdldEF0dHJpYnV0ZU5vZGUodCkpIHx8IGUuZ2V0QXR0cmlidXRlKHQpKSAmJiBlW3RdID09
PSAhMCA/IHQgOiBuICYmIG4uc3BlY2lmaWVkID8gbi52YWx1ZSA6IG51bGwKLSAgICAgICAgfSwg
c3QuZXJyb3IgPSBmdW5jdGlvbihlKSB7CisgICAgICAgIH0sCisgICAgICAgIHN0LmVycm9yID0g
ZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgdGhyb3cgRXJyb3IoIlN5bnRheCBlcnJvciwgdW5y
ZWNvZ25pemVkIGV4cHJlc3Npb246ICIgKyBlKQotICAgICAgICB9LCBzdC51bmlxdWVTb3J0ID0g
ZnVuY3Rpb24oZSkgeworICAgICAgICB9LAorICAgICAgICBzdC51bmlxdWVTb3J0ID0gZnVuY3Rp
b24oZSkgewogICAgICAgICAgICAgdmFyIHQsCiAgICAgICAgICAgICAgICAgbiA9IFtdLAogICAg
ICAgICAgICAgICAgIHIgPSAxLApAQCAtMTcyMCw3ICsxODY1LDggQEAKICAgICAgICAgICAgICAg
ICBmb3IgKDsgdCA9IGVbcl07IHIrKykKICAgICAgICAgICAgICAgICAgICAgbiArPSBvKHQpOwog
ICAgICAgICAgICAgcmV0dXJuIG4KLSAgICAgICAgfSwgaSA9IHN0LnNlbGVjdG9ycyA9IHsKKyAg
ICAgICAgfSwKKyAgICAgICAgaSA9IHN0LnNlbGVjdG9ycyA9IHsKICAgICAgICAgICAgIGNhY2hl
TGVuZ3RoOiA1MCwKICAgICAgICAgICAgIGNyZWF0ZVBzZXVkbzogb3QsCiAgICAgICAgICAgICBt
YXRjaDogVSwKQEAgLTE4MDMsNyArMTk0OSwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGggPSBbYSA/IG0uZmlyc3RDaGlsZCA6IG0ubGFzdENo
aWxkXSwgYSAmJiB2KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBtW3hd
IHx8IChtW3hdID0ge30pLCBsID0gY1tlXSB8fCBbXSwgZCA9IGxbMF0gPT09IE4gJiYgbFsxXSwg
ZiA9IGxbMF0gPT09IE4gJiYgbFsyXSwgcCA9IGQgJiYgbS5jaGlsZE5vZGVzW2RdOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gbVt4XSB8fCAobVt4XSA9IHt9KSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IGNbZV0gfHwgW10sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGQgPSBsWzBdID09PSBOICYmIGxbMV0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGYgPSBsWzBdID09PSBOICYmIGxbMl0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHAgPSBkICYmIG0uY2hpbGROb2Rlc1tkXTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHAgPSArK2QgJiYgcCAmJiBwW2ddIHx8IChmID0g
ZCA9IDApIHx8IGgucG9wKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoMSA9PT0gcC5ub2RlVHlwZSAmJiArK2YgJiYgcCA9PT0gdCkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNbZV0gPSBbTiwgZCwgZl07CkBAIC0xODI3LDcgKzE5
NzcsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSByKGUsIHQpLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGEgPSBvLmxlbmd0aDsKICAgICAgICAgICAgICAgICAgICAg
ICAgIHdoaWxlIChhLS0pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IE0uY2FsbChl
LCBvW2FdKSwgZVtpXSA9ICEobltpXSA9IG9bYV0pCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaSA9IE0uY2FsbChlLCBvW2FdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2ld
ID0gIShuW2ldID0gb1thXSkKICAgICAgICAgICAgICAgICAgICAgfSkgOiBmdW5jdGlvbihlKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcihlLCAwLCBuKQogICAgICAgICAgICAg
ICAgICAgICB9KSA6IHIKQEAgLTE5NzIsOSArMjEyMywxMyBAQAogICAgICAgICAgICAgICAgIGMg
PSBFW2UgKyAiICJdOwogICAgICAgICAgICAgaWYgKGMpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IHQgPyAwIDogYy5zbGljZSgwKTsKLSAgICAgICAgICAgIHMgPSBlLCB1ID0gW10sIGwgPSBpLnBy
ZUZpbHRlcjsKKyAgICAgICAgICAgIHMgPSBlLAorICAgICAgICAgICAgdSA9IFtdLAorICAgICAg
ICAgICAgbCA9IGkucHJlRmlsdGVyOwogICAgICAgICAgICAgd2hpbGUgKHMpIHsKLSAgICAgICAg
ICAgICAgICAoIW4gfHwgKHIgPSAkLmV4ZWMocykpKSAmJiAociAmJiAocyA9IHMuc2xpY2Uoclsw
XS5sZW5ndGgpIHx8IHMpLCB1LnB1c2gobyA9IFtdKSksIG4gPSAhMSwgKHIgPSBJLmV4ZWMocykp
ICYmIChuID0gci5zaGlmdCgpLCBvLnB1c2goeworICAgICAgICAgICAgICAgICghbiB8fCAociA9
ICQuZXhlYyhzKSkpICYmIChyICYmIChzID0gcy5zbGljZShyWzBdLmxlbmd0aCkgfHwgcyksIHUu
cHVzaChvID0gW10pKSwKKyAgICAgICAgICAgICAgICBuID0gITEsCisgICAgICAgICAgICAgICAg
KHIgPSBJLmV4ZWMocykpICYmIChuID0gci5zaGlmdCgpLCBvLnB1c2goewogICAgICAgICAgICAg
ICAgICAgICB2YWx1ZTogbiwKICAgICAgICAgICAgICAgICAgICAgdHlwZTogclswXS5yZXBsYWNl
KFcsICIgIikKICAgICAgICAgICAgICAgICB9KSwgcyA9IHMuc2xpY2Uobi5sZW5ndGgpKTsKQEAg
LTIwNTUsMTQgKzIyMTAsMTcgQEAKICAgICAgICAgICAgICAgICAgICAgbSA9ICFlIHx8ICFvICYm
IHQgPyBnIDogbXQoZywgZiwgZSwgcywgdSksCiAgICAgICAgICAgICAgICAgICAgIHkgPSBuID8g
aSB8fCAobyA/IGUgOiBoIHx8IHIpID8gW10gOiBhIDogbTsKICAgICAgICAgICAgICAgICBpZiAo
biAmJiBuKG0sIHksIHMsIHUpLCByKSB7Ci0gICAgICAgICAgICAgICAgICAgIGwgPSBtdCh5LCBk
KSwgcihsLCBbXSwgcywgdSksIGMgPSBsLmxlbmd0aDsKKyAgICAgICAgICAgICAgICAgICAgbCA9
IG10KHksIGQpLAorICAgICAgICAgICAgICAgICAgICByKGwsIFtdLCBzLCB1KSwKKyAgICAgICAg
ICAgICAgICAgICAgYyA9IGwubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgICB3aGlsZSAoYy0t
KQogICAgICAgICAgICAgICAgICAgICAgICAgKHAgPSBsW2NdKSAmJiAoeVtkW2NdXSA9ICEobVtk
W2NdXSA9IHApKQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAobykgewog
ICAgICAgICAgICAgICAgICAgICBpZiAoaSB8fCBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoaSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBbXSwgYyA9IHkubGVu
Z3RoOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBbXSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjID0geS5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
d2hpbGUgKGMtLSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHAgPSB5W2NdKSAm
JiBsLnB1c2gobVtjXSA9IHApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkobnVsbCwg
eSA9IFtdLCBsLCB1KQpAQCAtMjA3Miw3ICsyMjMwLDggQEAKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAocCA9IHlbY10pICYmIChsID0gaSA/IE0uY2FsbChvLCBwKSA6IGZbY10pID4gLTEg
JiYgKG9bbF0gPSAhKGFbbF0gPSBwKSkKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICB5ID0gbXQoeSA9PT0gYSA/IHkuc3Bs
aWNlKGgsIHkubGVuZ3RoKSA6IHkpLCBpID8gaShudWxsLCBhLCB5LCB1KSA6IEguYXBwbHkoYSwg
eSkKKyAgICAgICAgICAgICAgICAgICAgeSA9IG10KHkgPT09IGEgPyB5LnNwbGljZShoLCB5Lmxl
bmd0aCkgOiB5KSwKKyAgICAgICAgICAgICAgICAgICAgaSA/IGkobnVsbCwgYSwgeSwgdSkgOiBI
LmFwcGx5KGEsIHkpCiAgICAgICAgICAgICB9KQogICAgICAgICB9CiAgICAgICAgIGZ1bmN0aW9u
IHZ0KGUpIHsKQEAgLTIxNDQsNyArMjMwMyw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB4W2JdIHx8IHlbYl0gfHwgKHlbYl0gPSBMLmNhbGwoZikpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHkgPSBtdCh5KQogICAgICAgICAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgICAgICAgICAgSC5hcHBseShmLCB5KSwgdyAmJiAhcyAmJiB5Lmxlbmd0
aCA+IDAgJiYgdiArIHQubGVuZ3RoID4gMSAmJiBzdC51bmlxdWVTb3J0KGYpCisgICAgICAgICAg
ICAgICAgICAgICAgICBILmFwcGx5KGYsIHkpLAorICAgICAgICAgICAgICAgICAgICAgICAgdyAm
JiAhcyAmJiB5Lmxlbmd0aCA+IDAgJiYgdiArIHQubGVuZ3RoID4gMSAmJiBzdC51bmlxdWVTb3J0
KGYpCiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHcg
JiYgKE4gPSBrLCBsID0gVCksIHgKICAgICAgICAgICAgICAgICB9OwpAQCAtMjE1Niw5ICsyMzE2
LDExIEBACiAgICAgICAgICAgICAgICAgaSA9IFtdLAogICAgICAgICAgICAgICAgIG8gPSBTW2Ug
KyAiICJdOwogICAgICAgICAgICAgaWYgKCFvKSB7Ci0gICAgICAgICAgICAgICAgdCB8fCAodCA9
IGZ0KGUpKSwgbiA9IHQubGVuZ3RoOworICAgICAgICAgICAgICAgIHQgfHwgKHQgPSBmdChlKSks
CisgICAgICAgICAgICAgICAgbiA9IHQubGVuZ3RoOwogICAgICAgICAgICAgICAgIHdoaWxlIChu
LS0pCi0gICAgICAgICAgICAgICAgICAgIG8gPSB2dCh0W25dKSwgb1t4XSA/IHIucHVzaChvKSA6
IGkucHVzaChvKTsKKyAgICAgICAgICAgICAgICAgICAgbyA9IHZ0KHRbbl0pLAorICAgICAgICAg
ICAgICAgICAgICBvW3hdID8gci5wdXNoKG8pIDogaS5wdXNoKG8pOwogICAgICAgICAgICAgICAg
IG8gPSBTKGUsIGJ0KGksIHIpKQogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIG8K
QEAgLTIxOTgsNyArMjM2MCwxNyBAQAogICAgICAgICB9CiAgICAgICAgIGkucHNldWRvcy5udGgg
PSBpLnBzZXVkb3MuZXE7CiAgICAgICAgIGZ1bmN0aW9uIFR0KCkge30KLSAgICAgICAgaS5maWx0
ZXJzID0gVHQucHJvdG90eXBlID0gaS5wc2V1ZG9zLCBpLnNldEZpbHRlcnMgPSBuZXcgVHQsIGMo
KSwgc3QuYXR0ciA9IGIuYXR0ciwgYi5maW5kID0gc3QsIGIuZXhwciA9IHN0LnNlbGVjdG9ycywg
Yi5leHByWyI6Il0gPSBiLmV4cHIucHNldWRvcywgYi51bmlxdWUgPSBzdC51bmlxdWVTb3J0LCBi
LnRleHQgPSBzdC5nZXRUZXh0LCBiLmlzWE1MRG9jID0gc3QuaXNYTUwsIGIuY29udGFpbnMgPSBz
dC5jb250YWlucworICAgICAgICBpLmZpbHRlcnMgPSBUdC5wcm90b3R5cGUgPSBpLnBzZXVkb3Ms
CisgICAgICAgIGkuc2V0RmlsdGVycyA9IG5ldyBUdCwKKyAgICAgICAgYygpLAorICAgICAgICBz
dC5hdHRyID0gYi5hdHRyLAorICAgICAgICBiLmZpbmQgPSBzdCwKKyAgICAgICAgYi5leHByID0g
c3Quc2VsZWN0b3JzLAorICAgICAgICBiLmV4cHJbIjoiXSA9IGIuZXhwci5wc2V1ZG9zLAorICAg
ICAgICBiLnVuaXF1ZSA9IHN0LnVuaXF1ZVNvcnQsCisgICAgICAgIGIudGV4dCA9IHN0LmdldFRl
eHQsCisgICAgICAgIGIuaXNYTUxEb2MgPSBzdC5pc1hNTCwKKyAgICAgICAgYi5jb250YWlucyA9
IHN0LmNvbnRhaW5zCiAgICAgfShlKTsKICAgICB2YXIgYXQgPSAvVW50aWwkLywKICAgICAgICAg
c3QgPSAvXig/OnBhcmVudHN8cHJldig/OlVudGlsfEFsbCkpLywKQEAgLTIyNzQsNyArMjQ0Niw4
IEBACiAgICAgICAgIGFkZEJhY2s6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgIHJldHVybiB0
aGlzLmFkZChudWxsID09IGUgPyB0aGlzLnByZXZPYmplY3QgOiB0aGlzLnByZXZPYmplY3QuZmls
dGVyKGUpKQogICAgICAgICB9Ci0gICAgfSksIGIuZm4uYW5kU2VsZiA9IGIuZm4uYWRkQmFjazsK
KyAgICB9KSwKKyAgICBiLmZuLmFuZFNlbGYgPSBiLmZuLmFkZEJhY2s7CiAgICAgZnVuY3Rpb24g
cHQoZSwgdCkgewogICAgICAgICBkbyBlID0gZVt0XTsKICAgICAgICAgd2hpbGUgKGUgJiYgMSAh
PT0gZS5ub2RlVHlwZSk7CkBAIC0yMzIzLDcgKzI0OTYsOCBAQAogICAgICAgICAgICAgdmFyIGkg
PSBiLm1hcCh0aGlzLCB0LCBuKTsKICAgICAgICAgICAgIHJldHVybiBhdC50ZXN0KGUpIHx8IChy
ID0gbiksIHIgJiYgInN0cmluZyIgPT0gdHlwZW9mIHIgJiYgKGkgPSBiLmZpbHRlcihyLCBpKSks
IGkgPSB0aGlzLmxlbmd0aCA+IDEgJiYgIWN0W2VdID8gYi51bmlxdWUoaSkgOiBpLCB0aGlzLmxl
bmd0aCA+IDEgJiYgc3QudGVzdChlKSAmJiAoaSA9IGkucmV2ZXJzZSgpKSwgdGhpcy5wdXNoU3Rh
Y2soaSkKICAgICAgICAgfQotICAgIH0pLCBiLmV4dGVuZCh7CisgICAgfSksCisgICAgYi5leHRl
bmQoewogICAgICAgICBmaWx0ZXI6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgIHJl
dHVybiBuICYmIChlID0gIjpub3QoIiArIGUgKyAiKSIpLCAxID09PSB0Lmxlbmd0aCA/IGIuZmlu
ZC5tYXRjaGVzU2VsZWN0b3IodFswXSwgZSkgPyBbdFswXV0gOiBbXSA6IGIuZmluZC5tYXRjaGVz
KGUsIHQpCiAgICAgICAgIH0sCkBAIC0yMzMxLDcgKzI1MDUsOCBAQAogICAgICAgICAgICAgdmFy
IGkgPSBbXSwKICAgICAgICAgICAgICAgICBvID0gZVtuXTsKICAgICAgICAgICAgIHdoaWxlIChv
ICYmIDkgIT09IG8ubm9kZVR5cGUgJiYgKHIgPT09IHQgfHwgMSAhPT0gby5ub2RlVHlwZSB8fCAh
YihvKS5pcyhyKSkpCi0gICAgICAgICAgICAgICAgMSA9PT0gby5ub2RlVHlwZSAmJiBpLnB1c2go
byksIG8gPSBvW25dOworICAgICAgICAgICAgICAgIDEgPT09IG8ubm9kZVR5cGUgJiYgaS5wdXNo
KG8pLAorICAgICAgICAgICAgICAgIG8gPSBvW25dOwogICAgICAgICAgICAgcmV0dXJuIGkKICAg
ICAgICAgfSwKICAgICAgICAgc2libGluZzogZnVuY3Rpb24oZSwgdCkgewpAQCAtMjM5OCw3ICsy
NTczLDEwIEBACiAgICAgICAgIH0sCiAgICAgICAgIGp0ID0gZHQobyksCiAgICAgICAgIER0ID0g
anQuYXBwZW5kQ2hpbGQoby5jcmVhdGVFbGVtZW50KCJkaXYiKSk7Ci0gICAgQXQub3B0Z3JvdXAg
PSBBdC5vcHRpb24sIEF0LnRib2R5ID0gQXQudGZvb3QgPSBBdC5jb2xncm91cCA9IEF0LmNhcHRp
b24gPSBBdC50aGVhZCwgQXQudGggPSBBdC50ZCwgYi5mbi5leHRlbmQoeworICAgIEF0Lm9wdGdy
b3VwID0gQXQub3B0aW9uLAorICAgIEF0LnRib2R5ID0gQXQudGZvb3QgPSBBdC5jb2xncm91cCA9
IEF0LmNhcHRpb24gPSBBdC50aGVhZCwKKyAgICBBdC50aCA9IEF0LnRkLAorICAgIGIuZm4uZXh0
ZW5kKHsKICAgICAgICAgdGV4dDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgcmV0dXJuIGIu
YWNjZXNzKHRoaXMsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICByZXR1cm4gZSA9PT0g
dCA/IGIudGV4dCh0aGlzKSA6IHRoaXMuZW1wdHkoKS5hcHBlbmQoKHRoaXNbMF0gJiYgdGhpc1sw
XS5vd25lckRvY3VtZW50IHx8IG8pLmNyZWF0ZVRleHROb2RlKGUpKQpAQCAtMjQxMSw3ICsyNTg5
LDggQEAKICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIGlmICh0aGlzWzBdKSB7CiAg
ICAgICAgICAgICAgICAgdmFyIHQgPSBiKGUsIHRoaXNbMF0ub3duZXJEb2N1bWVudCkuZXEoMCku
Y2xvbmUoITApOwotICAgICAgICAgICAgICAgIHRoaXNbMF0ucGFyZW50Tm9kZSAmJiB0Lmluc2Vy
dEJlZm9yZSh0aGlzWzBdKSwgdC5tYXAoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgdGhp
c1swXS5wYXJlbnROb2RlICYmIHQuaW5zZXJ0QmVmb3JlKHRoaXNbMF0pLAorICAgICAgICAgICAg
ICAgIHQubWFwKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXM7
CiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChlLmZpcnN0Q2hpbGQgJiYgMSA9PT0gZS5maXJz
dENoaWxkLm5vZGVUeXBlKQogICAgICAgICAgICAgICAgICAgICAgICAgZSA9IGUuZmlyc3RDaGls
ZDsKQEAgLTI0OTQsNyArMjY3Myw4IEBACiAgICAgICAgICAgICAgICAgICAgIGUgPSBlLnJlcGxh
Y2UodnQsICI8JDE+PC8kMj4iKTsKICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAg
ICAgICAgICAgICAgICAgIGZvciAoOyBpID4gcjsgcisrKQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG4gPSB0aGlzW3JdIHx8IHt9LCAxID09PSBuLm5vZGVUeXBlICYmIChiLmNsZWFuRGF0
YShPdChuLCAhMSkpLCBuLmlubmVySFRNTCA9IGUpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG4gPSB0aGlzW3JdIHx8IHt9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgPT09
IG4ubm9kZVR5cGUgJiYgKGIuY2xlYW5EYXRhKE90KG4sICExKSksIG4uaW5uZXJIVE1MID0gZSk7
CiAgICAgICAgICAgICAgICAgICAgICAgICBuID0gMAogICAgICAgICAgICAgICAgICAgICB9IGNh
dGNoIChvKSB7fQogICAgICAgICAgICAgICAgIH0KQEAgLTI1MjksMTQgKzI3MDksMTggQEAKICAg
ICAgICAgICAgIGlmIChtIHx8ICEoMSA+PSBwIHx8ICJzdHJpbmciICE9IHR5cGVvZiBnIHx8IGIu
c3VwcG9ydC5jaGVja0Nsb25lKSAmJiBDdC50ZXN0KGcpKQogICAgICAgICAgICAgICAgIHJldHVy
biB0aGlzLmVhY2goZnVuY3Rpb24oaSkgewogICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IGQu
ZXEoaSk7Ci0gICAgICAgICAgICAgICAgICAgIG0gJiYgKGVbMF0gPSBnLmNhbGwodGhpcywgaSwg
biA/IG8uaHRtbCgpIDogdCkpLCBvLmRvbU1hbmlwKGUsIG4sIHIpCisgICAgICAgICAgICAgICAg
ICAgIG0gJiYgKGVbMF0gPSBnLmNhbGwodGhpcywgaSwgbiA/IG8uaHRtbCgpIDogdCkpLAorICAg
ICAgICAgICAgICAgICAgICBvLmRvbU1hbmlwKGUsIG4sIHIpCiAgICAgICAgICAgICAgICAgfSk7
CiAgICAgICAgICAgICBpZiAocCAmJiAobCA9IGIuYnVpbGRGcmFnbWVudChlLCB0aGlzWzBdLm93
bmVyRG9jdW1lbnQsICExLCB0aGlzKSwgaSA9IGwuZmlyc3RDaGlsZCwgMSA9PT0gbC5jaGlsZE5v
ZGVzLmxlbmd0aCAmJiAobCA9IGkpLCBpKSkgewogICAgICAgICAgICAgICAgIGZvciAobiA9IG4g
JiYgYi5ub2RlTmFtZShpLCAidHIiKSwgcyA9IGIubWFwKE90KGwsICJzY3JpcHQiKSwgSHQpLCBh
ID0gcy5sZW5ndGg7IHAgPiBjOyBjKyspCi0gICAgICAgICAgICAgICAgICAgIG8gPSBsLCBjICE9
PSBoICYmIChvID0gYi5jbG9uZShvLCAhMCwgITApLCBhICYmIGIubWVyZ2UocywgT3QobywgInNj
cmlwdCIpKSksIHIuY2FsbChuICYmIGIubm9kZU5hbWUodGhpc1tjXSwgInRhYmxlIikgPyBMdCh0
aGlzW2NdLCAidGJvZHkiKSA6IHRoaXNbY10sIG8sIGMpOworICAgICAgICAgICAgICAgICAgICBv
ID0gbCwKKyAgICAgICAgICAgICAgICAgICAgYyAhPT0gaCAmJiAobyA9IGIuY2xvbmUobywgITAs
ICEwKSwgYSAmJiBiLm1lcmdlKHMsIE90KG8sICJzY3JpcHQiKSkpLAorICAgICAgICAgICAgICAg
ICAgICByLmNhbGwobiAmJiBiLm5vZGVOYW1lKHRoaXNbY10sICJ0YWJsZSIpID8gTHQodGhpc1tj
XSwgInRib2R5IikgOiB0aGlzW2NdLCBvLCBjKTsKICAgICAgICAgICAgICAgICBpZiAoYSkKICAg
ICAgICAgICAgICAgICAgICAgZm9yICh1ID0gc1tzLmxlbmd0aCAtIDFdLm93bmVyRG9jdW1lbnQs
IGIubWFwKHMsIHF0KSwgYyA9IDA7IGEgPiBjOyBjKyspCi0gICAgICAgICAgICAgICAgICAgICAg
ICBvID0gc1tjXSwga3QudGVzdChvLnR5cGUgfHwgIiIpICYmICFiLl9kYXRhKG8sICJnbG9iYWxF
dmFsIikgJiYgYi5jb250YWlucyh1LCBvKSAmJiAoby5zcmMgPyBiLmFqYXgoeworICAgICAgICAg
ICAgICAgICAgICAgICAgbyA9IHNbY10sCisgICAgICAgICAgICAgICAgICAgICAgICBrdC50ZXN0
KG8udHlwZSB8fCAiIikgJiYgIWIuX2RhdGEobywgImdsb2JhbEV2YWwiKSAmJiBiLmNvbnRhaW5z
KHUsIG8pICYmIChvLnNyYyA/IGIuYWpheCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dXJsOiBvLnNyYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAiR0VUIiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogInNjcmlwdCIsCkBAIC0yNTc1LDcg
KzI3NTksOCBAQAogICAgICAgICAgICAgICAgIGEgPSBiLl9kYXRhKHQsIG8pLAogICAgICAgICAg
ICAgICAgIHMgPSBvLmV2ZW50czsKICAgICAgICAgICAgIGlmIChzKSB7Ci0gICAgICAgICAgICAg
ICAgZGVsZXRlIGEuaGFuZGxlLCBhLmV2ZW50cyA9IHt9OworICAgICAgICAgICAgICAgIGRlbGV0
ZSBhLmhhbmRsZSwKKyAgICAgICAgICAgICAgICBhLmV2ZW50cyA9IHt9OwogICAgICAgICAgICAg
ICAgIGZvciAobiBpbiBzKQogICAgICAgICAgICAgICAgICAgICBmb3IgKHIgPSAwLCBpID0gc1tu
XS5sZW5ndGg7IGkgPiByOyByKyspCiAgICAgICAgICAgICAgICAgICAgICAgICBiLmV2ZW50LmFk
ZCh0LCBuLCBzW25dW3JdKQpAQCAtMjYxMSw3ICsyNzk2LDkgQEAKICAgICAgICAgICAgICAgICBv
ID0gYihlKSwKICAgICAgICAgICAgICAgICBhID0gby5sZW5ndGggLSAxOwogICAgICAgICAgICAg
Zm9yICg7IGEgPj0gcjsgcisrKQotICAgICAgICAgICAgICAgIG4gPSByID09PSBhID8gdGhpcyA6
IHRoaXMuY2xvbmUoITApLCBiKG9bcl0pW3RdKG4pLCBkLmFwcGx5KGksIG4uZ2V0KCkpOworICAg
ICAgICAgICAgICAgIG4gPSByID09PSBhID8gdGhpcyA6IHRoaXMuY2xvbmUoITApLAorICAgICAg
ICAgICAgICAgIGIob1tyXSlbdF0obiksCisgICAgICAgICAgICAgICAgZC5hcHBseShpLCBuLmdl
dCgpKTsKICAgICAgICAgICAgIHJldHVybiB0aGlzLnB1c2hTdGFjayhpKQogICAgICAgICB9CiAg
ICAgfSk7CkBAIC0yNjY0LDIxICsyODUxLDI5IEBACiAgICAgICAgICAgICAgICAgICAgIGlmICgi
b2JqZWN0IiA9PT0gYi50eXBlKG8pKQogICAgICAgICAgICAgICAgICAgICAgICAgYi5tZXJnZShk
LCBvLm5vZGVUeXBlID8gW29dIDogbyk7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHd0
LnRlc3QobykpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBzIHx8IGYuYXBwZW5kQ2hp
bGQodC5jcmVhdGVFbGVtZW50KCJkaXYiKSksIHUgPSAoYnQuZXhlYyhvKSB8fCBbIiIsICIiXSlb
MV0udG9Mb3dlckNhc2UoKSwgYyA9IEF0W3VdIHx8IEF0Ll9kZWZhdWx0LCBzLmlubmVySFRNTCA9
IGNbMV0gKyBvLnJlcGxhY2UodnQsICI8JDE+PC8kMj4iKSArIGNbMl0sIGkgPSBjWzBdOworICAg
ICAgICAgICAgICAgICAgICAgICAgcyA9IHMgfHwgZi5hcHBlbmRDaGlsZCh0LmNyZWF0ZUVsZW1l
bnQoImRpdiIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHUgPSAoYnQuZXhlYyhvKSB8fCBb
IiIsICIiXSlbMV0udG9Mb3dlckNhc2UoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBB
dFt1XSB8fCBBdC5fZGVmYXVsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHMuaW5uZXJIVE1M
ID0gY1sxXSArIG8ucmVwbGFjZSh2dCwgIjwkMT48LyQyPiIpICsgY1syXSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGkgPSBjWzBdOwogICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGkt
LSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gcy5sYXN0Q2hpbGQ7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoIWIuc3VwcG9ydC5sZWFkaW5nV2hpdGVzcGFjZSAmJiB5dC50
ZXN0KG8pICYmIGQucHVzaCh0LmNyZWF0ZVRleHROb2RlKHl0LmV4ZWMobylbMF0pKSwgIWIuc3Vw
cG9ydC50Ym9keSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSAidGFibGUiICE9
PSB1IHx8IHh0LnRlc3QobykgPyAiPHRhYmxlPiIgIT09IGNbMV0gfHwgeHQudGVzdChvKSA/IDAg
OiBzIDogcy5maXJzdENoaWxkLCBpID0gbyAmJiBvLmNoaWxkTm9kZXMubGVuZ3RoOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG8gPSAidGFibGUiICE9PSB1IHx8IHh0LnRlc3QobykgPyAi
PHRhYmxlPiIgIT09IGNbMV0gfHwgeHQudGVzdChvKSA/IDAgOiBzIDogcy5maXJzdENoaWxkLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBvICYmIG8uY2hpbGROb2Rlcy5sZW5ndGg7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGktLSkKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYi5ub2RlTmFtZShsID0gby5jaGlsZE5vZGVzW2ldLCAidGJvZHki
KSAmJiAhbC5jaGlsZE5vZGVzLmxlbmd0aCAmJiBvLnJlbW92ZUNoaWxkKGwpCiAgICAgICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBiLm1lcmdlKGQsIHMuY2hp
bGROb2RlcyksIHMudGV4dENvbnRlbnQgPSAiIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGIu
bWVyZ2UoZCwgcy5jaGlsZE5vZGVzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHMudGV4dENv
bnRlbnQgPSAiIjsKICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChzLmZpcnN0Q2hpbGQp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5yZW1vdmVDaGlsZChzLmZpcnN0Q2hpbGQp
OwogICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGYubGFzdENoaWxkCiAgICAgICAgICAgICAg
ICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHQuY3JlYXRlVGV4
dE5vZGUobykpOwotICAgICAgICAgICAgcyAmJiBmLnJlbW92ZUNoaWxkKHMpLCBiLnN1cHBvcnQu
YXBwZW5kQ2hlY2tlZCB8fCBiLmdyZXAoT3QoZCwgImlucHV0IiksIEJ0KSwgaCA9IDA7CisgICAg
ICAgICAgICBzICYmIGYucmVtb3ZlQ2hpbGQocyksCisgICAgICAgICAgICBiLnN1cHBvcnQuYXBw
ZW5kQ2hlY2tlZCB8fCBiLmdyZXAoT3QoZCwgImlucHV0IiksIEJ0KSwKKyAgICAgICAgICAgIGgg
PSAwOwogICAgICAgICAgICAgd2hpbGUgKG8gPSBkW2grK10pCiAgICAgICAgICAgICAgICAgaWYg
KCghciB8fCAtMSA9PT0gYi5pbkFycmF5KG8sIHIpKSAmJiAoYSA9IGIuY29udGFpbnMoby5vd25l
ckRvY3VtZW50LCBvKSwgcyA9IE90KGYuYXBwZW5kQ2hpbGQobyksICJzY3JpcHQiKSwgYSAmJiBN
dChzKSwgbikpIHsKICAgICAgICAgICAgICAgICAgICAgaSA9IDA7CkBAIC0yNzUzLDkgKzI5NDgs
MTEgQEAKICAgICAgICAgICAgIGEgPSAwLAogICAgICAgICAgICAgcyA9IGUubGVuZ3RoOwogICAg
ICAgICBmb3IgKDsgcyA+IGE7IGErKykKLSAgICAgICAgICAgIHIgPSBlW2FdLCByLnN0eWxlICYm
IChvW2FdID0gYi5fZGF0YShyLCAib2xkZGlzcGxheSIpLCBuID0gci5zdHlsZS5kaXNwbGF5LCB0
ID8gKG9bYV0gfHwgIm5vbmUiICE9PSBuIHx8IChyLnN0eWxlLmRpc3BsYXkgPSAiIiksICIiID09
PSByLnN0eWxlLmRpc3BsYXkgJiYgbm4ocikgJiYgKG9bYV0gPSBiLl9kYXRhKHIsICJvbGRkaXNw
bGF5IiwgdW4oci5ub2RlTmFtZSkpKSkgOiBvW2FdIHx8IChpID0gbm4ociksIChuICYmICJub25l
IiAhPT0gbiB8fCAhaSkgJiYgYi5fZGF0YShyLCAib2xkZGlzcGxheSIsIGkgPyBuIDogYi5jc3Mo
ciwgImRpc3BsYXkiKSkpKTsKKyAgICAgICAgICAgIHIgPSBlW2FdLAorICAgICAgICAgICAgci5z
dHlsZSAmJiAob1thXSA9IGIuX2RhdGEociwgIm9sZGRpc3BsYXkiKSwgbiA9IHIuc3R5bGUuZGlz
cGxheSwgdCA/IChvW2FdIHx8ICJub25lIiAhPT0gbiB8fCAoci5zdHlsZS5kaXNwbGF5ID0gIiIp
LCAiIiA9PT0gci5zdHlsZS5kaXNwbGF5ICYmIG5uKHIpICYmIChvW2FdID0gYi5fZGF0YShyLCAi
b2xkZGlzcGxheSIsIHVuKHIubm9kZU5hbWUpKSkpIDogb1thXSB8fCAoaSA9IG5uKHIpLCAobiAm
JiAibm9uZSIgIT09IG4gfHwgIWkpICYmIGIuX2RhdGEociwgIm9sZGRpc3BsYXkiLCBpID8gbiA6
IGIuY3NzKHIsICJkaXNwbGF5IikpKSk7CiAgICAgICAgIGZvciAoYSA9IDA7IHMgPiBhOyBhKysp
Ci0gICAgICAgICAgICByID0gZVthXSwgci5zdHlsZSAmJiAodCAmJiAibm9uZSIgIT09IHIuc3R5
bGUuZGlzcGxheSAmJiAiIiAhPT0gci5zdHlsZS5kaXNwbGF5IHx8IChyLnN0eWxlLmRpc3BsYXkg
PSB0ID8gb1thXSB8fCAiIiA6ICJub25lIikpOworICAgICAgICAgICAgciA9IGVbYV0sCisgICAg
ICAgICAgICByLnN0eWxlICYmICh0ICYmICJub25lIiAhPT0gci5zdHlsZS5kaXNwbGF5ICYmICIi
ICE9PSByLnN0eWxlLmRpc3BsYXkgfHwgKHIuc3R5bGUuZGlzcGxheSA9IHQgPyBvW2FdIHx8ICIi
IDogIm5vbmUiKSk7CiAgICAgICAgIHJldHVybiBlCiAgICAgfQogICAgIGIuZm4uZXh0ZW5kKHsK
QEAgLTI3ODUsNyArMjk4Miw4IEBACiAgICAgICAgICAgICAgICAgKHQgPyBlIDogbm4odGhpcykp
ID8gYih0aGlzKS5zaG93KCkgOiBiKHRoaXMpLmhpZGUoKQogICAgICAgICAgICAgfSkKICAgICAg
ICAgfQotICAgIH0pLCBiLmV4dGVuZCh7CisgICAgfSksCisgICAgYi5leHRlbmQoewogICAgICAg
ICBjc3NIb29rczogewogICAgICAgICAgICAgb3BhY2l0eTogewogICAgICAgICAgICAgICAgIGdl
dDogZnVuY3Rpb24oZSwgdCkgewpAQCAtMjgzNywxMyArMzAzNSwxNSBAQAogICAgICAgICAgICAg
ICAgIG8sCiAgICAgICAgICAgICAgICAgYSA9IHt9OwogICAgICAgICAgICAgZm9yIChvIGluIHQp
Ci0gICAgICAgICAgICAgICAgYVtvXSA9IGUuc3R5bGVbb10sIGUuc3R5bGVbb10gPSB0W29dOwor
ICAgICAgICAgICAgICAgIGFbb10gPSBlLnN0eWxlW29dLAorICAgICAgICAgICAgICAgIGUuc3R5
bGVbb10gPSB0W29dOwogICAgICAgICAgICAgaSA9IG4uYXBwbHkoZSwgciB8fCBbXSk7CiAgICAg
ICAgICAgICBmb3IgKG8gaW4gdCkKICAgICAgICAgICAgICAgICBlLnN0eWxlW29dID0gYVtvXTsK
ICAgICAgICAgICAgIHJldHVybiBpCiAgICAgICAgIH0KLSAgICB9KSwgZS5nZXRDb21wdXRlZFN0
eWxlID8gKFJ0ID0gZnVuY3Rpb24odCkgeworICAgIH0pLAorICAgIGUuZ2V0Q29tcHV0ZWRTdHls
ZSA/IChSdCA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgcmV0dXJuIGUuZ2V0Q29tcHV0ZWRTdHls
ZSh0LCBudWxsKQogICAgIH0sIFd0ID0gZnVuY3Rpb24oZSwgbiwgcikgewogICAgICAgICB2YXIg
aSwKQEAgLTI4NzIsNyArMzA3Miw4IEBACiAgICAgICAgIHZhciBvID0gbiA9PT0gKHIgPyAiYm9y
ZGVyIiA6ICJjb250ZW50IikgPyA0IDogIndpZHRoIiA9PT0gdCA/IDEgOiAwLAogICAgICAgICAg
ICAgYSA9IDA7CiAgICAgICAgIGZvciAoOyA0ID4gbzsgbyArPSAyKQotICAgICAgICAgICAgIm1h
cmdpbiIgPT09IG4gJiYgKGEgKz0gYi5jc3MoZSwgbiArIFp0W29dLCAhMCwgaSkpLCByID8gKCJj
b250ZW50IiA9PT0gbiAmJiAoYSAtPSBiLmNzcyhlLCAicGFkZGluZyIgKyBadFtvXSwgITAsIGkp
KSwgIm1hcmdpbiIgIT09IG4gJiYgKGEgLT0gYi5jc3MoZSwgImJvcmRlciIgKyBadFtvXSArICJX
aWR0aCIsICEwLCBpKSkpIDogKGEgKz0gYi5jc3MoZSwgInBhZGRpbmciICsgWnRbb10sICEwLCBp
KSwgInBhZGRpbmciICE9PSBuICYmIChhICs9IGIuY3NzKGUsICJib3JkZXIiICsgWnRbb10gKyAi
V2lkdGgiLCAhMCwgaSkpKTsKKyAgICAgICAgICAgICJtYXJnaW4iID09PSBuICYmIChhICs9IGIu
Y3NzKGUsIG4gKyBadFtvXSwgITAsIGkpKSwKKyAgICAgICAgICAgIHIgPyAoImNvbnRlbnQiID09
PSBuICYmIChhIC09IGIuY3NzKGUsICJwYWRkaW5nIiArIFp0W29dLCAhMCwgaSkpLCAibWFyZ2lu
IiAhPT0gbiAmJiAoYSAtPSBiLmNzcyhlLCAiYm9yZGVyIiArIFp0W29dICsgIldpZHRoIiwgITAs
IGkpKSkgOiAoYSArPSBiLmNzcyhlLCAicGFkZGluZyIgKyBadFtvXSwgITAsIGkpLCAicGFkZGlu
ZyIgIT09IG4gJiYgKGEgKz0gYi5jc3MoZSwgImJvcmRlciIgKyBadFtvXSArICJXaWR0aCIsICEw
LCBpKSkpOwogICAgICAgICByZXR1cm4gYQogICAgIH0KICAgICBmdW5jdGlvbiBzbihlLCB0LCBu
KSB7CkBAIC0yODgzLDcgKzMwODQsOCBAQAogICAgICAgICBpZiAoMCA+PSBpIHx8IG51bGwgPT0g
aSkgewogICAgICAgICAgICAgaWYgKGkgPSBXdChlLCB0LCBvKSwgKDAgPiBpIHx8IG51bGwgPT0g
aSkgJiYgKGkgPSBlLnN0eWxlW3RdKSwgWXQudGVzdChpKSkKICAgICAgICAgICAgICAgICByZXR1
cm4gaTsKLSAgICAgICAgICAgIHIgPSBhICYmIChiLnN1cHBvcnQuYm94U2l6aW5nUmVsaWFibGUg
fHwgaSA9PT0gZS5zdHlsZVt0XSksIGkgPSBwYXJzZUZsb2F0KGkpIHx8IDAKKyAgICAgICAgICAg
IHIgPSBhICYmIChiLnN1cHBvcnQuYm94U2l6aW5nUmVsaWFibGUgfHwgaSA9PT0gZS5zdHlsZVt0
XSksCisgICAgICAgICAgICBpID0gcGFyc2VGbG9hdChpKSB8fCAwCiAgICAgICAgIH0KICAgICAg
ICAgcmV0dXJuIGkgKyBhbihlLCB0LCBuIHx8IChhID8gImJvcmRlciIgOiAiY29udGVudCIpLCBy
LCBvKSArICJweCIKICAgICB9CkBAIC0yOTA5LDcgKzMxMTEsOCBAQAogICAgICAgICAgICAgICAg
IHJldHVybiBvbihlLCB0LCByID8gYW4oZSwgbiwgciwgYi5zdXBwb3J0LmJveFNpemluZyAmJiAi
Ym9yZGVyLWJveCIgPT09IGIuY3NzKGUsICJib3hTaXppbmciLCAhMSwgaSksIGkpIDogMCkKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQotICAgIH0pLCBiLnN1cHBvcnQub3BhY2l0eSB8fCAoYi5j
c3NIb29rcy5vcGFjaXR5ID0geworICAgIH0pLAorICAgIGIuc3VwcG9ydC5vcGFjaXR5IHx8IChi
LmNzc0hvb2tzLm9wYWNpdHkgPSB7CiAgICAgICAgIGdldDogZnVuY3Rpb24oZSwgdCkgewogICAg
ICAgICAgICAgcmV0dXJuIEl0LnRlc3QoKHQgJiYgZS5jdXJyZW50U3R5bGUgPyBlLmN1cnJlbnRT
dHlsZS5maWx0ZXIgOiBlLnN0eWxlLmZpbHRlcikgfHwgIiIpID8gLjAxICogcGFyc2VGbG9hdChS
ZWdFeHAuJDEpICsgIiIgOiB0ID8gIjEiIDogIiIKICAgICAgICAgfSwKQEAgLTI5MTgsMjcgKzMx
MjEsMzIgQEAKICAgICAgICAgICAgICAgICByID0gZS5jdXJyZW50U3R5bGUsCiAgICAgICAgICAg
ICAgICAgaSA9IGIuaXNOdW1lcmljKHQpID8gImFscGhhKG9wYWNpdHk9IiArIDEwMCAqIHQgKyAi
KSIgOiAiIiwKICAgICAgICAgICAgICAgICBvID0gciAmJiByLmZpbHRlciB8fCBuLmZpbHRlciB8
fCAiIjsKLSAgICAgICAgICAgIG4uem9vbSA9IDEsICh0ID49IDEgfHwgIiIgPT09IHQpICYmICIi
ID09PSBiLnRyaW0oby5yZXBsYWNlKCR0LCAiIikpICYmIG4ucmVtb3ZlQXR0cmlidXRlICYmIChu
LnJlbW92ZUF0dHJpYnV0ZSgiZmlsdGVyIiksICIiID09PSB0IHx8IHIgJiYgIXIuZmlsdGVyKSB8
fCAobi5maWx0ZXIgPSAkdC50ZXN0KG8pID8gby5yZXBsYWNlKCR0LCBpKSA6IG8gKyAiICIgKyBp
KQorICAgICAgICAgICAgbi56b29tID0gMSwKKyAgICAgICAgICAgICh0ID49IDEgfHwgIiIgPT09
IHQpICYmICIiID09PSBiLnRyaW0oby5yZXBsYWNlKCR0LCAiIikpICYmIG4ucmVtb3ZlQXR0cmli
dXRlICYmIChuLnJlbW92ZUF0dHJpYnV0ZSgiZmlsdGVyIiksICIiID09PSB0IHx8IHIgJiYgIXIu
ZmlsdGVyKSB8fCAobi5maWx0ZXIgPSAkdC50ZXN0KG8pID8gby5yZXBsYWNlKCR0LCBpKSA6IG8g
KyAiICIgKyBpKQogICAgICAgICB9Ci0gICAgfSksIGIoZnVuY3Rpb24oKSB7CisgICAgfSksCisg
ICAgYihmdW5jdGlvbigpIHsKICAgICAgICAgYi5zdXBwb3J0LnJlbGlhYmxlTWFyZ2luUmlnaHQg
fHwgKGIuY3NzSG9va3MubWFyZ2luUmlnaHQgPSB7CiAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9u
KGUsIG4pIHsKICAgICAgICAgICAgICAgICByZXR1cm4gbiA/IGIuc3dhcChlLCB7CiAgICAgICAg
ICAgICAgICAgICAgIGRpc3BsYXk6ICJpbmxpbmUtYmxvY2siCiAgICAgICAgICAgICAgICAgfSwg
V3QsIFtlLCAibWFyZ2luUmlnaHQiXSkgOiB0CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0pLCAh
Yi5zdXBwb3J0LnBpeGVsUG9zaXRpb24gJiYgYi5mbi5wb3NpdGlvbiAmJiBiLmVhY2goWyJ0b3Ai
LCAibGVmdCJdLCBmdW5jdGlvbihlLCBuKSB7CisgICAgICAgIH0pLAorICAgICAgICAhYi5zdXBw
b3J0LnBpeGVsUG9zaXRpb24gJiYgYi5mbi5wb3NpdGlvbiAmJiBiLmVhY2goWyJ0b3AiLCAibGVm
dCJdLCBmdW5jdGlvbihlLCBuKSB7CiAgICAgICAgICAgICBiLmNzc0hvb2tzW25dID0gewogICAg
ICAgICAgICAgICAgIGdldDogZnVuY3Rpb24oZSwgcikgewogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gciA/IChyID0gV3QoZSwgbiksIFl0LnRlc3QocikgPyBiKGUpLnBvc2l0aW9uKClbbl0g
KyAicHgiIDogcikgOiB0CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAg
ICB9KQotICAgIH0pLCBiLmV4cHIgJiYgYi5leHByLmZpbHRlcnMgJiYgKGIuZXhwci5maWx0ZXJz
LmhpZGRlbiA9IGZ1bmN0aW9uKGUpIHsKKyAgICB9KSwKKyAgICBiLmV4cHIgJiYgYi5leHByLmZp
bHRlcnMgJiYgKGIuZXhwci5maWx0ZXJzLmhpZGRlbiA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAg
cmV0dXJuIDAgPj0gZS5vZmZzZXRXaWR0aCAmJiAwID49IGUub2Zmc2V0SGVpZ2h0IHx8ICFiLnN1
cHBvcnQucmVsaWFibGVIaWRkZW5PZmZzZXRzICYmICJub25lIiA9PT0gKGUuc3R5bGUgJiYgZS5z
dHlsZS5kaXNwbGF5IHx8IGIuY3NzKGUsICJkaXNwbGF5IikpCiAgICAgfSwgYi5leHByLmZpbHRl
cnMudmlzaWJsZSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgcmV0dXJuICFiLmV4cHIuZmlsdGVy
cy5oaWRkZW4oZSkKLSAgICB9KSwgYi5lYWNoKHsKKyAgICB9KSwKKyAgICBiLmVhY2goewogICAg
ICAgICBtYXJnaW46ICIiLAogICAgICAgICBwYWRkaW5nOiAiIiwKICAgICAgICAgYm9yZGVyOiAi
V2lkdGgiCkBAIC0yOTUyLDcgKzMxNjAsOCBAQAogICAgICAgICAgICAgICAgICAgICBpW2UgKyBa
dFtyXSArIHRdID0gb1tyXSB8fCBvW3IgLSAyXSB8fCBvWzBdOwogICAgICAgICAgICAgICAgIHJl
dHVybiBpCiAgICAgICAgICAgICB9Ci0gICAgICAgIH0sIFV0LnRlc3QoZSkgfHwgKGIuY3NzSG9v
a3NbZSArIHRdLnNldCA9IG9uKQorICAgICAgICB9LAorICAgICAgICBVdC50ZXN0KGUpIHx8IChi
LmNzc0hvb2tzW2UgKyB0XS5zZXQgPSBvbikKICAgICB9KTsKICAgICB2YXIgY24gPSAvJTIwL2cs
CiAgICAgICAgIHBuID0gL1xbXF0kLywKQEAgLTI5ODMsMTEgKzMxOTIsMTMgQEAKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9KS5nZXQoKQogICAgICAgICB9Ci0gICAgfSksIGIucGFy
YW0gPSBmdW5jdGlvbihlLCBuKSB7CisgICAgfSksCisgICAgYi5wYXJhbSA9IGZ1bmN0aW9uKGUs
IG4pIHsKICAgICAgICAgdmFyIHIsCiAgICAgICAgICAgICBpID0gW10sCiAgICAgICAgICAgICBv
ID0gZnVuY3Rpb24oZSwgdCkgewotICAgICAgICAgICAgICAgIHQgPSBiLmlzRnVuY3Rpb24odCkg
PyB0KCkgOiBudWxsID09IHQgPyAiIiA6IHQsIGlbaS5sZW5ndGhdID0gZW5jb2RlVVJJQ29tcG9u
ZW50KGUpICsgIj0iICsgZW5jb2RlVVJJQ29tcG9uZW50KHQpCisgICAgICAgICAgICAgICAgdCA9
IGIuaXNGdW5jdGlvbih0KSA/IHQoKSA6IG51bGwgPT0gdCA/ICIiIDogdCwKKyAgICAgICAgICAg
ICAgICBpW2kubGVuZ3RoXSA9IGVuY29kZVVSSUNvbXBvbmVudChlKSArICI9IiArIGVuY29kZVVS
SUNvbXBvbmVudCh0KQogICAgICAgICAgICAgfTsKICAgICAgICAgaWYgKG4gPT09IHQgJiYgKG4g
PSBiLmFqYXhTZXR0aW5ncyAmJiBiLmFqYXhTZXR0aW5ncy50cmFkaXRpb25hbCksIGIuaXNBcnJh
eShlKSB8fCBlLmpxdWVyeSAmJiAhYi5pc1BsYWluT2JqZWN0KGUpKQogICAgICAgICAgICAgYi5l
YWNoKGUsIGZ1bmN0aW9uKCkgewpAQCAtMzAxNCw3ICszMjI1LDggQEAKICAgICAgICAgYi5mblt0
XSA9IGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3Ro
ID4gMCA/IHRoaXMub24odCwgbnVsbCwgZSwgbikgOiB0aGlzLnRyaWdnZXIodCkKICAgICAgICAg
fQotICAgIH0pLCBiLmZuLmhvdmVyID0gZnVuY3Rpb24oZSwgdCkgeworICAgIH0pLAorICAgIGIu
Zm4uaG92ZXIgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgIHJldHVybiB0aGlzLm1vdXNlZW50
ZXIoZSkubW91c2VsZWF2ZSh0IHx8IGUpCiAgICAgfTsKICAgICB2YXIgbW4sCkBAIC0zMDM1LDcg
KzMyNDcsOSBAQAogICAgIHRyeSB7CiAgICAgICAgIHluID0gYS5ocmVmCiAgICAgfSBjYXRjaCAo
TG4pIHsKLSAgICAgICAgeW4gPSBvLmNyZWF0ZUVsZW1lbnQoImEiKSwgeW4uaHJlZiA9ICIiLCB5
biA9IHluLmhyZWYKKyAgICAgICAgeW4gPSBvLmNyZWF0ZUVsZW1lbnQoImEiKSwKKyAgICAgICAg
eW4uaHJlZiA9ICIiLAorICAgICAgICB5biA9IHluLmhyZWYKICAgICB9CiAgICAgbW4gPSBFbi5l
eGVjKHluLnRvTG93ZXJDYXNlKCkpIHx8IFtdOwogICAgIGZ1bmN0aW9uIEhuKGUpIHsKQEAgLTMw
ODMsMTUgKzMyOTcsMTggQEAKICAgICAgICAgICAgIGRhdGFUeXBlOiAiaHRtbCIsCiAgICAgICAg
ICAgICBkYXRhOiBuCiAgICAgICAgIH0pLmRvbmUoZnVuY3Rpb24oZSkgewotICAgICAgICAgICAg
byA9IGFyZ3VtZW50cywgcy5odG1sKGkgPyBiKCI8ZGl2PiIpLmFwcGVuZChiLnBhcnNlSFRNTChl
KSkuZmluZChpKSA6IGUpCisgICAgICAgICAgICBvID0gYXJndW1lbnRzLAorICAgICAgICAgICAg
cy5odG1sKGkgPyBiKCI8ZGl2PiIpLmFwcGVuZChiLnBhcnNlSFRNTChlKSkuZmluZChpKSA6IGUp
CiAgICAgICAgIH0pLmNvbXBsZXRlKHIgJiYgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAg
cy5lYWNoKHIsIG8gfHwgW2UucmVzcG9uc2VUZXh0LCB0LCBlXSkKICAgICAgICAgfSksIHRoaXMK
LSAgICB9LCBiLmVhY2goWyJhamF4U3RhcnQiLCAiYWpheFN0b3AiLCAiYWpheENvbXBsZXRlIiwg
ImFqYXhFcnJvciIsICJhamF4U3VjY2VzcyIsICJhamF4U2VuZCJdLCBmdW5jdGlvbihlLCB0KSB7
CisgICAgfSwKKyAgICBiLmVhY2goWyJhamF4U3RhcnQiLCAiYWpheFN0b3AiLCAiYWpheENvbXBs
ZXRlIiwgImFqYXhFcnJvciIsICJhamF4U3VjY2VzcyIsICJhamF4U2VuZCJdLCBmdW5jdGlvbihl
LCB0KSB7CiAgICAgICAgIGIuZm5bdF0gPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICByZXR1
cm4gdGhpcy5vbih0LCBlKQogICAgICAgICB9Ci0gICAgfSksIGIuZWFjaChbImdldCIsICJwb3N0
Il0sIGZ1bmN0aW9uKGUsIG4pIHsKKyAgICB9KSwKKyAgICBiLmVhY2goWyJnZXQiLCAicG9zdCJd
LCBmdW5jdGlvbihlLCBuKSB7CiAgICAgICAgIGJbbl0gPSBmdW5jdGlvbihlLCByLCBpLCBvKSB7
CiAgICAgICAgICAgICByZXR1cm4gYi5pc0Z1bmN0aW9uKHIpICYmIChvID0gbyB8fCBpLCBpID0g
ciwgciA9IHQpLCBiLmFqYXgoewogICAgICAgICAgICAgICAgIHVybDogZSwKQEAgLTMxMDEsNyAr
MzMxOCw4IEBACiAgICAgICAgICAgICAgICAgc3VjY2VzczogaQogICAgICAgICAgICAgfSkKICAg
ICAgICAgfQotICAgIH0pLCBiLmV4dGVuZCh7CisgICAgfSksCisgICAgYi5leHRlbmQoewogICAg
ICAgICBhY3RpdmU6IDAsCiAgICAgICAgIGxhc3RNb2RpZmllZDoge30sCiAgICAgICAgIGV0YWc6
IHt9LApAQCAtMzE0Niw3ICszMzY0LDggQEAKICAgICAgICAgYWpheFByZWZpbHRlcjogSG4oQW4p
LAogICAgICAgICBhamF4VHJhbnNwb3J0OiBIbihqbiksCiAgICAgICAgIGFqYXg6IGZ1bmN0aW9u
KGUsIG4pIHsKLSAgICAgICAgICAgICJvYmplY3QiID09IHR5cGVvZiBlICYmIChuID0gZSwgZSA9
IHQpLCBuID0gbiB8fCB7fTsKKyAgICAgICAgICAgICJvYmplY3QiID09IHR5cGVvZiBlICYmIChu
ID0gZSwgZSA9IHQpLAorICAgICAgICAgICAgbiA9IG4gfHwge307CiAgICAgICAgICAgICB2YXIg
ciwKICAgICAgICAgICAgICAgICBpLAogICAgICAgICAgICAgICAgIG8sCkBAIC0zMjA2LDcgKzM0
MjUsMTUgQEAKICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgaWYgKGgucHJvbWlzZShO
KS5jb21wbGV0ZSA9IGcuYWRkLCBOLnN1Y2Nlc3MgPSBOLmRvbmUsIE4uZXJyb3IgPSBOLmZhaWws
IHAudXJsID0gKChlIHx8IHAudXJsIHx8IHluKSArICIiKS5yZXBsYWNlKHhuLCAiIikucmVwbGFj
ZShrbiwgbW5bMV0gKyAiLy8iKSwgcC50eXBlID0gbi5tZXRob2QgfHwgbi50eXBlIHx8IHAubWV0
aG9kIHx8IHAudHlwZSwgcC5kYXRhVHlwZXMgPSBiLnRyaW0ocC5kYXRhVHlwZSB8fCAiKiIpLnRv
TG93ZXJDYXNlKCkubWF0Y2godykgfHwgWyIiXSwgbnVsbCA9PSBwLmNyb3NzRG9tYWluICYmIChy
ID0gRW4uZXhlYyhwLnVybC50b0xvd2VyQ2FzZSgpKSwgcC5jcm9zc0RvbWFpbiA9ICEoIXIgfHwg
clsxXSA9PT0gbW5bMV0gJiYgclsyXSA9PT0gbW5bMl0gJiYgKHJbM10gfHwgKCJodHRwOiIgPT09
IHJbMV0gPyA4MCA6IDQ0MykpID09IChtblszXSB8fCAoImh0dHA6IiA9PT0gbW5bMV0gPyA4MCA6
IDQ0MykpKSksIHAuZGF0YSAmJiBwLnByb2Nlc3NEYXRhICYmICJzdHJpbmciICE9IHR5cGVvZiBw
LmRhdGEgJiYgKHAuZGF0YSA9IGIucGFyYW0ocC5kYXRhLCBwLnRyYWRpdGlvbmFsKSksIHFuKEFu
LCBwLCBuLCBOKSwgMiA9PT0geCkKICAgICAgICAgICAgICAgICByZXR1cm4gTjsKLSAgICAgICAg
ICAgIHUgPSBwLmdsb2JhbCwgdSAmJiAwID09PSBiLmFjdGl2ZSsrICYmIGIuZXZlbnQudHJpZ2dl
cigiYWpheFN0YXJ0IiksIHAudHlwZSA9IHAudHlwZS50b1VwcGVyQ2FzZSgpLCBwLmhhc0NvbnRl
bnQgPSAhQ24udGVzdChwLnR5cGUpLCBvID0gcC51cmwsIHAuaGFzQ29udGVudCB8fCAocC5kYXRh
ICYmIChvID0gcC51cmwgKz0gKGJuLnRlc3QobykgPyAiJiIgOiAiPyIpICsgcC5kYXRhLCBkZWxl
dGUgcC5kYXRhKSwgcC5jYWNoZSA9PT0gITEgJiYgKHAudXJsID0gd24udGVzdChvKSA/IG8ucmVw
bGFjZSh3biwgIiQxXz0iICsgdm4rKykgOiBvICsgKGJuLnRlc3QobykgPyAiJiIgOiAiPyIpICsg
Il89IiArIHZuKyspKSwgcC5pZk1vZGlmaWVkICYmIChiLmxhc3RNb2RpZmllZFtvXSAmJiBOLnNl
dFJlcXVlc3RIZWFkZXIoIklmLU1vZGlmaWVkLVNpbmNlIiwgYi5sYXN0TW9kaWZpZWRbb10pLCBi
LmV0YWdbb10gJiYgTi5zZXRSZXF1ZXN0SGVhZGVyKCJJZi1Ob25lLU1hdGNoIiwgYi5ldGFnW29d
KSksIChwLmRhdGEgJiYgcC5oYXNDb250ZW50ICYmIHAuY29udGVudFR5cGUgIT09ICExIHx8IG4u
Y29udGVudFR5cGUpICYmIE4uc2V0UmVxdWVzdEhlYWRlcigiQ29udGVudC1UeXBlIiwgcC5jb250
ZW50VHlwZSksIE4uc2V0UmVxdWVzdEhlYWRlcigiQWNjZXB0IiwgcC5kYXRhVHlwZXNbMF0gJiYg
cC5hY2NlcHRzW3AuZGF0YVR5cGVzWzBdXSA/IHAuYWNjZXB0c1twLmRhdGFUeXBlc1swXV0gKyAo
IioiICE9PSBwLmRhdGFUeXBlc1swXSA/ICIsICIgKyBEbiArICI7IHE9MC4wMSIgOiAiIikgOiBw
LmFjY2VwdHNbIioiXSk7CisgICAgICAgICAgICB1ID0gcC5nbG9iYWwsCisgICAgICAgICAgICB1
ICYmIDAgPT09IGIuYWN0aXZlKysgJiYgYi5ldmVudC50cmlnZ2VyKCJhamF4U3RhcnQiKSwKKyAg
ICAgICAgICAgIHAudHlwZSA9IHAudHlwZS50b1VwcGVyQ2FzZSgpLAorICAgICAgICAgICAgcC5o
YXNDb250ZW50ID0gIUNuLnRlc3QocC50eXBlKSwKKyAgICAgICAgICAgIG8gPSBwLnVybCwKKyAg
ICAgICAgICAgIHAuaGFzQ29udGVudCB8fCAocC5kYXRhICYmIChvID0gcC51cmwgKz0gKGJuLnRl
c3QobykgPyAiJiIgOiAiPyIpICsgcC5kYXRhLCBkZWxldGUgcC5kYXRhKSwgcC5jYWNoZSA9PT0g
ITEgJiYgKHAudXJsID0gd24udGVzdChvKSA/IG8ucmVwbGFjZSh3biwgIiQxXz0iICsgdm4rKykg
OiBvICsgKGJuLnRlc3QobykgPyAiJiIgOiAiPyIpICsgIl89IiArIHZuKyspKSwKKyAgICAgICAg
ICAgIHAuaWZNb2RpZmllZCAmJiAoYi5sYXN0TW9kaWZpZWRbb10gJiYgTi5zZXRSZXF1ZXN0SGVh
ZGVyKCJJZi1Nb2RpZmllZC1TaW5jZSIsIGIubGFzdE1vZGlmaWVkW29dKSwgYi5ldGFnW29dICYm
IE4uc2V0UmVxdWVzdEhlYWRlcigiSWYtTm9uZS1NYXRjaCIsIGIuZXRhZ1tvXSkpLAorICAgICAg
ICAgICAgKHAuZGF0YSAmJiBwLmhhc0NvbnRlbnQgJiYgcC5jb250ZW50VHlwZSAhPT0gITEgfHwg
bi5jb250ZW50VHlwZSkgJiYgTi5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LVR5cGUiLCBwLmNv
bnRlbnRUeXBlKSwKKyAgICAgICAgICAgIE4uc2V0UmVxdWVzdEhlYWRlcigiQWNjZXB0IiwgcC5k
YXRhVHlwZXNbMF0gJiYgcC5hY2NlcHRzW3AuZGF0YVR5cGVzWzBdXSA/IHAuYWNjZXB0c1twLmRh
dGFUeXBlc1swXV0gKyAoIioiICE9PSBwLmRhdGFUeXBlc1swXSA/ICIsICIgKyBEbiArICI7IHE9
MC4wMSIgOiAiIikgOiBwLmFjY2VwdHNbIioiXSk7CiAgICAgICAgICAgICBmb3IgKGkgaW4gcC5o
ZWFkZXJzKQogICAgICAgICAgICAgICAgIE4uc2V0UmVxdWVzdEhlYWRlcihpLCBwLmhlYWRlcnNb
aV0pOwogICAgICAgICAgICAgaWYgKHAuYmVmb3JlU2VuZCAmJiAocC5iZWZvcmVTZW5kLmNhbGwo
ZiwgTiwgcCkgPT09ICExIHx8IDIgPT09IHgpKQpAQCAtMzIxOSwxMSArMzQ0NiwxNCBAQAogICAg
ICAgICAgICAgfSkKICAgICAgICAgICAgICAgICBOW2ldKHBbaV0pOwogICAgICAgICAgICAgaWYg
KGwgPSBxbihqbiwgcCwgbiwgTikpIHsKLSAgICAgICAgICAgICAgICBOLnJlYWR5U3RhdGUgPSAx
LCB1ICYmIGQudHJpZ2dlcigiYWpheFNlbmQiLCBbTiwgcF0pLCBwLmFzeW5jICYmIHAudGltZW91
dCA+IDAgJiYgKHMgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIE4u
cmVhZHlTdGF0ZSA9IDEsCisgICAgICAgICAgICAgICAgdSAmJiBkLnRyaWdnZXIoImFqYXhTZW5k
IiwgW04sIHBdKSwKKyAgICAgICAgICAgICAgICBwLmFzeW5jICYmIHAudGltZW91dCA+IDAgJiYg
KHMgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICBOLmFib3J0
KCJ0aW1lb3V0IikKICAgICAgICAgICAgICAgICB9LCBwLnRpbWVvdXQpKTsKICAgICAgICAgICAg
ICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICB4ID0gMSwgbC5zZW5kKHksIGspCisgICAg
ICAgICAgICAgICAgICAgIHggPSAxLAorICAgICAgICAgICAgICAgICAgICBsLnNlbmQoeSwgaykK
ICAgICAgICAgICAgICAgICB9IGNhdGNoIChDKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICgh
KDIgPiB4KSkKICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IEM7CkBAIC0zMjYwLDcgKzM0
OTAsOCBAQAogICAgICAgICBmb3IgKHMgaW4gYykKICAgICAgICAgICAgIHMgaW4gciAmJiAobltj
W3NdXSA9IHJbc10pOwogICAgICAgICB3aGlsZSAoIioiID09PSBsWzBdKQotICAgICAgICAgICAg
bC5zaGlmdCgpLCBvID09PSB0ICYmIChvID0gZS5taW1lVHlwZSB8fCBuLmdldFJlc3BvbnNlSGVh
ZGVyKCJDb250ZW50LVR5cGUiKSk7CisgICAgICAgICAgICBsLnNoaWZ0KCksCisgICAgICAgICAg
ICBvID09PSB0ICYmIChvID0gZS5taW1lVHlwZSB8fCBuLmdldFJlc3BvbnNlSGVhZGVyKCJDb250
ZW50LVR5cGUiKSk7CiAgICAgICAgIGlmIChvKQogICAgICAgICAgICAgZm9yIChzIGluIHUpCiAg
ICAgICAgICAgICAgICAgaWYgKHVbc10gJiYgdVtzXS50ZXN0KG8pKSB7CkBAIC0zMzM0LDE3ICsz
NTY1LDI1IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIGIuZ2xvYmFsRXZhbChlKSwgZQogICAg
ICAgICAgICAgfQogICAgICAgICB9Ci0gICAgfSksIGIuYWpheFByZWZpbHRlcigic2NyaXB0Iiwg
ZnVuY3Rpb24oZSkgewotICAgICAgICBlLmNhY2hlID09PSB0ICYmIChlLmNhY2hlID0gITEpLCBl
LmNyb3NzRG9tYWluICYmIChlLnR5cGUgPSAiR0VUIiwgZS5nbG9iYWwgPSAhMSkKLSAgICB9KSwg
Yi5hamF4VHJhbnNwb3J0KCJzY3JpcHQiLCBmdW5jdGlvbihlKSB7CisgICAgfSksCisgICAgYi5h
amF4UHJlZmlsdGVyKCJzY3JpcHQiLCBmdW5jdGlvbihlKSB7CisgICAgICAgIGUuY2FjaGUgPT09
IHQgJiYgKGUuY2FjaGUgPSAhMSksCisgICAgICAgIGUuY3Jvc3NEb21haW4gJiYgKGUudHlwZSA9
ICJHRVQiLCBlLmdsb2JhbCA9ICExKQorICAgIH0pLAorICAgIGIuYWpheFRyYW5zcG9ydCgic2Ny
aXB0IiwgZnVuY3Rpb24oZSkgewogICAgICAgICBpZiAoZS5jcm9zc0RvbWFpbikgewogICAgICAg
ICAgICAgdmFyIG4sCiAgICAgICAgICAgICAgICAgciA9IG8uaGVhZCB8fCBiKCJoZWFkIilbMF0g
fHwgby5kb2N1bWVudEVsZW1lbnQ7CiAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAg
ICAgIHNlbmQ6IGZ1bmN0aW9uKHQsIGkpIHsKLSAgICAgICAgICAgICAgICAgICAgbiA9IG8uY3Jl
YXRlRWxlbWVudCgic2NyaXB0IiksIG4uYXN5bmMgPSAhMCwgZS5zY3JpcHRDaGFyc2V0ICYmIChu
LmNoYXJzZXQgPSBlLnNjcmlwdENoYXJzZXQpLCBuLnNyYyA9IGUudXJsLCBuLm9ubG9hZCA9IG4u
b25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oZSwgdCkgeworICAgICAgICAgICAgICAgICAg
ICBuID0gby5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKSwKKyAgICAgICAgICAgICAgICAgICAgbi5h
c3luYyA9ICEwLAorICAgICAgICAgICAgICAgICAgICBlLnNjcmlwdENoYXJzZXQgJiYgKG4uY2hh
cnNldCA9IGUuc2NyaXB0Q2hhcnNldCksCisgICAgICAgICAgICAgICAgICAgIG4uc3JjID0gZS51
cmwsCisgICAgICAgICAgICAgICAgICAgIG4ub25sb2FkID0gbi5vbnJlYWR5c3RhdGVjaGFuZ2Ug
PSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAodCB8fCAhbi5yZWFk
eVN0YXRlIHx8IC9sb2FkZWR8Y29tcGxldGUvLnRlc3Qobi5yZWFkeVN0YXRlKSkgJiYgKG4ub25s
b2FkID0gbi5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBudWxsLCBuLnBhcmVudE5vZGUgJiYgbi5wYXJl
bnROb2RlLnJlbW92ZUNoaWxkKG4pLCBuID0gbnVsbCwgdCB8fCBpKDIwMCwgInN1Y2Nlc3MiKSkK
LSAgICAgICAgICAgICAgICAgICAgfSwgci5pbnNlcnRCZWZvcmUobiwgci5maXJzdENoaWxkKQor
ICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICByLmluc2VydEJlZm9y
ZShuLCByLmZpcnN0Q2hpbGQpCiAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICBh
Ym9ydDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgIG4gJiYgbi5vbmxvYWQodCwg
ITApCkBAIC0zMzYwLDcgKzM1OTksOCBAQAogICAgICAgICAgICAgdmFyIGUgPSBPbi5wb3AoKSB8
fCBiLmV4cGFuZG8gKyAiXyIgKyB2bisrOwogICAgICAgICAgICAgcmV0dXJuIHRoaXNbZV0gPSAh
MCwgZQogICAgICAgICB9Ci0gICAgfSksIGIuYWpheFByZWZpbHRlcigianNvbiBqc29ucCIsIGZ1
bmN0aW9uKG4sIHIsIGkpIHsKKyAgICB9KSwKKyAgICBiLmFqYXhQcmVmaWx0ZXIoImpzb24ganNv
bnAiLCBmdW5jdGlvbihuLCByLCBpKSB7CiAgICAgICAgIHZhciBvLAogICAgICAgICAgICAgYSwK
ICAgICAgICAgICAgIHMsCkBAIC0zMzcwLDcgKzM2MTAsMTAgQEAKICAgICAgICAgfSwgbi5kYXRh
VHlwZXNbMF0gPSAianNvbiIsIGEgPSBlW29dLCBlW29dID0gZnVuY3Rpb24oKSB7CiAgICAgICAg
ICAgICBzID0gYXJndW1lbnRzCiAgICAgICAgIH0sIGkuYWx3YXlzKGZ1bmN0aW9uKCkgewotICAg
ICAgICAgICAgZVtvXSA9IGEsIG5bb10gJiYgKG4uanNvbnBDYWxsYmFjayA9IHIuanNvbnBDYWxs
YmFjaywgT24ucHVzaChvKSksIHMgJiYgYi5pc0Z1bmN0aW9uKGEpICYmIGEoc1swXSksIHMgPSBh
ID0gdAorICAgICAgICAgICAgZVtvXSA9IGEsCisgICAgICAgICAgICBuW29dICYmIChuLmpzb25w
Q2FsbGJhY2sgPSByLmpzb25wQ2FsbGJhY2ssIE9uLnB1c2gobykpLAorICAgICAgICAgICAgcyAm
JiBiLmlzRnVuY3Rpb24oYSkgJiYgYShzWzBdKSwKKyAgICAgICAgICAgIHMgPSBhID0gdAogICAg
ICAgICB9KSwgInNjcmlwdCIpIDogdAogICAgIH0pOwogICAgIHZhciBQbiwKQEAgLTMzOTMsNyAr
MzYzNiwxMSBAQAogICAgIH0KICAgICBiLmFqYXhTZXR0aW5ncy54aHIgPSBlLkFjdGl2ZVhPYmpl
Y3QgPyBmdW5jdGlvbigpIHsKICAgICAgICAgcmV0dXJuICF0aGlzLmlzTG9jYWwgJiYgSW4oKSB8
fCB6bigpCi0gICAgfSA6IEluLCBSbiA9IGIuYWpheFNldHRpbmdzLnhocigpLCBiLnN1cHBvcnQu
Y29ycyA9ICEhUm4gJiYgIndpdGhDcmVkZW50aWFscyIgaW4gUm4sIFJuID0gYi5zdXBwb3J0LmFq
YXggPSAhIVJuLCBSbiAmJiBiLmFqYXhUcmFuc3BvcnQoZnVuY3Rpb24obikgeworICAgIH0gOiBJ
biwKKyAgICBSbiA9IGIuYWpheFNldHRpbmdzLnhocigpLAorICAgIGIuc3VwcG9ydC5jb3JzID0g
ISFSbiAmJiAid2l0aENyZWRlbnRpYWxzIiBpbiBSbiwKKyAgICBSbiA9IGIuc3VwcG9ydC5hamF4
ID0gISFSbiwKKyAgICBSbiAmJiBiLmFqYXhUcmFuc3BvcnQoZnVuY3Rpb24obikgewogICAgICAg
ICBpZiAoIW4uY3Jvc3NEb21haW4gfHwgYi5zdXBwb3J0LmNvcnMpIHsKICAgICAgICAgICAgIHZh
ciByOwogICAgICAgICAgICAgcmV0dXJuIHsKQEAgLTM0MDQsMTIgKzM2NTEsMTQgQEAKICAgICAg
ICAgICAgICAgICAgICAgaWYgKG4udXNlcm5hbWUgPyB1Lm9wZW4obi50eXBlLCBuLnVybCwgbi5h
c3luYywgbi51c2VybmFtZSwgbi5wYXNzd29yZCkgOiB1Lm9wZW4obi50eXBlLCBuLnVybCwgbi5h
c3luYyksIG4ueGhyRmllbGRzKQogICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChzIGluIG4u
eGhyRmllbGRzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVbc10gPSBuLnhockZpZWxk
c1tzXTsKLSAgICAgICAgICAgICAgICAgICAgbi5taW1lVHlwZSAmJiB1Lm92ZXJyaWRlTWltZVR5
cGUgJiYgdS5vdmVycmlkZU1pbWVUeXBlKG4ubWltZVR5cGUpLCBuLmNyb3NzRG9tYWluIHx8IGlb
IlgtUmVxdWVzdGVkLVdpdGgiXSB8fCAoaVsiWC1SZXF1ZXN0ZWQtV2l0aCJdID0gIlhNTEh0dHBS
ZXF1ZXN0Iik7CisgICAgICAgICAgICAgICAgICAgIG4ubWltZVR5cGUgJiYgdS5vdmVycmlkZU1p
bWVUeXBlICYmIHUub3ZlcnJpZGVNaW1lVHlwZShuLm1pbWVUeXBlKSwKKyAgICAgICAgICAgICAg
ICAgICAgbi5jcm9zc0RvbWFpbiB8fCBpWyJYLVJlcXVlc3RlZC1XaXRoIl0gfHwgKGlbIlgtUmVx
dWVzdGVkLVdpdGgiXSA9ICJYTUxIdHRwUmVxdWVzdCIpOwogICAgICAgICAgICAgICAgICAgICB0
cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChzIGluIGkpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdS5zZXRSZXF1ZXN0SGVhZGVyKHMsIGlbc10pCiAgICAgICAgICAgICAg
ICAgICAgIH0gY2F0Y2ggKGwpIHt9Ci0gICAgICAgICAgICAgICAgICAgIHUuc2VuZChuLmhhc0Nv
bnRlbnQgJiYgbi5kYXRhIHx8IG51bGwpLCByID0gZnVuY3Rpb24oZSwgaSkgeworICAgICAgICAg
ICAgICAgICAgICB1LnNlbmQobi5oYXNDb250ZW50ICYmIG4uZGF0YSB8fCBudWxsKSwKKyAgICAg
ICAgICAgICAgICAgICAgciA9IGZ1bmN0aW9uKGUsIGkpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgIHZhciBzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYywKQEAgLTM0MTksNyArMzY2OCwxMCBAQAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAociA9IHQsIGEgJiYgKHUub25yZWFkeXN0YXRlY2hhbmdlID0g
Yi5ub29wLCAkbiAmJiBkZWxldGUgUG5bYV0pLCBpKQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNCAhPT0gdS5yZWFkeVN0YXRlICYmIHUuYWJvcnQoKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwID0ge30sIHMgPSB1LnN0YXR1cywgbCA9IHUuZ2V0QWxsUmVzcG9uc2VIZWFkZXJz
KCksICJzdHJpbmciID09IHR5cGVvZiB1LnJlc3BvbnNlVGV4dCAmJiAocC50ZXh0ID0gdS5yZXNw
b25zZVRleHQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IHt9LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHUuc3RhdHVzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IHUuZ2V0QWxsUmVzcG9uc2VIZWFkZXJz
KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RyaW5nIiA9PSB0eXBl
b2YgdS5yZXNwb25zZVRleHQgJiYgKHAudGV4dCA9IHUucmVzcG9uc2VUZXh0KTsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYyA9IHUuc3RhdHVzVGV4dAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfSBjYXRjaCAoZikgewpAQCAtMzQzMSw3ICszNjgzLDggQEAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpIHx8IG8oLTEsIGQpCiAgICAgICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBwICYmIG8ocywgYywgcCwgbCkKLSAgICAg
ICAgICAgICAgICAgICAgfSwgbi5hc3luYyA/IDQgPT09IHUucmVhZHlTdGF0ZSA/IHNldFRpbWVv
dXQocikgOiAoYSA9ICsrV24sICRuICYmIChQbiB8fCAoUG4gPSB7fSwgYihlKS51bmxvYWQoJG4p
KSwgUG5bYV0gPSByKSwgdS5vbnJlYWR5c3RhdGVjaGFuZ2UgPSByKSA6IHIoKQorICAgICAgICAg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICBuLmFzeW5jID8gNCA9PT0gdS5yZWFk
eVN0YXRlID8gc2V0VGltZW91dChyKSA6IChhID0gKytXbiwgJG4gJiYgKFBuIHx8IChQbiA9IHt9
LCBiKGUpLnVubG9hZCgkbikpLCBQblthXSA9IHIpLCB1Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9IHIp
IDogcigpCiAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICBhYm9ydDogZnVuY3Rp
b24oKSB7CiAgICAgICAgICAgICAgICAgICAgIHIgJiYgcih0LCAhMCkKQEAgLTM0NTgsMTAgKzM3
MTEsMTQgQEAKICAgICAgICAgICAgICAgICBpZiAobykgewogICAgICAgICAgICAgICAgICAgICBp
ZiAobiA9ICtvWzJdLCByID0gb1szXSB8fCAoYi5jc3NOdW1iZXJbZV0gPyAiIiA6ICJweCIpLCAi
cHgiICE9PSByICYmIHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBiLmNzcyhpLmVs
ZW0sIGUsICEwKSB8fCBuIHx8IDE7Ci0gICAgICAgICAgICAgICAgICAgICAgICBkbyB1ID0gdSB8
fCAiLjUiLCBzIC89IHUsIGIuc3R5bGUoaS5lbGVtLCBlLCBzICsgcik7CisgICAgICAgICAgICAg
ICAgICAgICAgICBkbyB1ID0gdSB8fCAiLjUiLAorICAgICAgICAgICAgICAgICAgICAgICAgcyAv
PSB1LAorICAgICAgICAgICAgICAgICAgICAgICAgYi5zdHlsZShpLmVsZW0sIGUsIHMgKyByKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICh1ICE9PSAodSA9IGkuY3VyKCkgLyBhKSAm
JiAxICE9PSB1ICYmIC0tbCkKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
ICAgICBpLnVuaXQgPSByLCBpLnN0YXJ0ID0gcywgaS5lbmQgPSBvWzFdID8gcyArIChvWzFdICsg
MSkgKiBuIDogbgorICAgICAgICAgICAgICAgICAgICBpLnVuaXQgPSByLAorICAgICAgICAgICAg
ICAgICAgICBpLnN0YXJ0ID0gcywKKyAgICAgICAgICAgICAgICAgICAgaS5lbmQgPSBvWzFdID8g
cyArIChvWzFdICsgMSkgKiBuIDogbgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICByZXR1cm4gaQogICAgICAgICAgICAgfV0KQEAgLTM1NDUsNyArMzgwMiw4IEBACiAgICAgICAg
ICAgICBhOwogICAgICAgICBmb3IgKGkgaW4gZSkKICAgICAgICAgICAgIGlmIChyID0gYi5jYW1l
bENhc2UoaSksIG8gPSB0W3JdLCBuID0gZVtpXSwgYi5pc0FycmF5KG4pICYmIChvID0gblsxXSwg
biA9IGVbaV0gPSBuWzBdKSwgaSAhPT0gciAmJiAoZVtyXSA9IG4sIGRlbGV0ZSBlW2ldKSwgYSA9
IGIuY3NzSG9va3Nbcl0sIGEgJiYgImV4cGFuZCIgaW4gYSkgewotICAgICAgICAgICAgICAgIG4g
PSBhLmV4cGFuZChuKSwgZGVsZXRlIGVbcl07CisgICAgICAgICAgICAgICAgbiA9IGEuZXhwYW5k
KG4pLAorICAgICAgICAgICAgICAgIGRlbGV0ZSBlW3JdOwogICAgICAgICAgICAgICAgIGZvciAo
aSBpbiBuKQogICAgICAgICAgICAgICAgICAgICBpIGluIGUgfHwgKGVbaV0gPSBuW2ldLCB0W2ld
ID0gbykKICAgICAgICAgICAgIH0gZWxzZQpAQCAtMzU1OCw3ICszODE2LDkgQEAKICAgICAgICAg
ICAgICAgICByID0gMCwKICAgICAgICAgICAgICAgICBpID0gZS5sZW5ndGg7CiAgICAgICAgICAg
ICBmb3IgKDsgaSA+IHI7IHIrKykKLSAgICAgICAgICAgICAgICBuID0gZVtyXSwgUW5bbl0gPSBR
bltuXSB8fCBbXSwgUW5bbl0udW5zaGlmdCh0KQorICAgICAgICAgICAgICAgIG4gPSBlW3JdLAor
ICAgICAgICAgICAgICAgIFFuW25dID0gUW5bbl0gfHwgW10sCisgICAgICAgICAgICAgICAgUW5b
bl0udW5zaGlmdCh0KQogICAgICAgICB9LAogICAgICAgICBwcmVmaWx0ZXI6IGZ1bmN0aW9uKGUs
IHQpIHsKICAgICAgICAgICAgIHQgPyBHbi51bnNoaWZ0KGUpIDogR24ucHVzaChlKQpAQCAtMzU4
MywxMCArMzg0MywxNSBAQAogICAgICAgICAgICAgYy51bnF1ZXVlZCB8fCBwKCkKICAgICAgICAg
fSksIGMudW5xdWV1ZWQrKywgZi5hbHdheXMoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICBmLmFs
d2F5cyhmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBjLnVucXVldWVkLS0sIGIucXVldWUo
ZSwgImZ4IikubGVuZ3RoIHx8IGMuZW1wdHkuZmlyZSgpCisgICAgICAgICAgICAgICAgYy51bnF1
ZXVlZC0tLAorICAgICAgICAgICAgICAgIGIucXVldWUoZSwgImZ4IikubGVuZ3RoIHx8IGMuZW1w
dHkuZmlyZSgpCiAgICAgICAgICAgICB9KQotICAgICAgICB9KSksIDEgPT09IGUubm9kZVR5cGUg
JiYgKCJoZWlnaHQiIGluIHQgfHwgIndpZHRoIiBpbiB0KSAmJiAobi5vdmVyZmxvdyA9IFtkLm92
ZXJmbG93LCBkLm92ZXJmbG93WCwgZC5vdmVyZmxvd1ldLCAiaW5saW5lIiA9PT0gYi5jc3MoZSwg
ImRpc3BsYXkiKSAmJiAibm9uZSIgPT09IGIuY3NzKGUsICJmbG9hdCIpICYmIChiLnN1cHBvcnQu
aW5saW5lQmxvY2tOZWVkc0xheW91dCAmJiAiaW5saW5lIiAhPT0gdW4oZS5ub2RlTmFtZSkgPyBk
Lnpvb20gPSAxIDogZC5kaXNwbGF5ID0gImlubGluZS1ibG9jayIpKSwgbi5vdmVyZmxvdyAmJiAo
ZC5vdmVyZmxvdyA9ICJoaWRkZW4iLCBiLnN1cHBvcnQuc2hyaW5rV3JhcEJsb2NrcyB8fCBmLmFs
d2F5cyhmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGQub3ZlcmZsb3cgPSBuLm92ZXJmbG93WzBd
LCBkLm92ZXJmbG93WCA9IG4ub3ZlcmZsb3dbMV0sIGQub3ZlcmZsb3dZID0gbi5vdmVyZmxvd1sy
XQorICAgICAgICB9KSksCisgICAgICAgIDEgPT09IGUubm9kZVR5cGUgJiYgKCJoZWlnaHQiIGlu
IHQgfHwgIndpZHRoIiBpbiB0KSAmJiAobi5vdmVyZmxvdyA9IFtkLm92ZXJmbG93LCBkLm92ZXJm
bG93WCwgZC5vdmVyZmxvd1ldLCAiaW5saW5lIiA9PT0gYi5jc3MoZSwgImRpc3BsYXkiKSAmJiAi
bm9uZSIgPT09IGIuY3NzKGUsICJmbG9hdCIpICYmIChiLnN1cHBvcnQuaW5saW5lQmxvY2tOZWVk
c0xheW91dCAmJiAiaW5saW5lIiAhPT0gdW4oZS5ub2RlTmFtZSkgPyBkLnpvb20gPSAxIDogZC5k
aXNwbGF5ID0gImlubGluZS1ibG9jayIpKSwKKyAgICAgICAgbi5vdmVyZmxvdyAmJiAoZC5vdmVy
ZmxvdyA9ICJoaWRkZW4iLCBiLnN1cHBvcnQuc2hyaW5rV3JhcEJsb2NrcyB8fCBmLmFsd2F5cyhm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgIGQub3ZlcmZsb3cgPSBuLm92ZXJmbG93WzBdLAorICAg
ICAgICAgICAgZC5vdmVyZmxvd1ggPSBuLm92ZXJmbG93WzFdLAorICAgICAgICAgICAgZC5vdmVy
Zmxvd1kgPSBuLm92ZXJmbG93WzJdCiAgICAgICAgIH0pKTsKICAgICAgICAgZm9yIChpIGluIHQp
CiAgICAgICAgICAgICBpZiAoYSA9IHRbaV0sIFZuLmV4ZWMoYSkpIHsKQEAgLTM1OTUsMjUgKzM4
NjAsMzkgQEAKICAgICAgICAgICAgICAgICBnLnB1c2goaSkKICAgICAgICAgICAgIH0KICAgICAg
ICAgaWYgKG8gPSBnLmxlbmd0aCkgewotICAgICAgICAgICAgcyA9IGIuX2RhdGEoZSwgImZ4c2hv
dyIpIHx8IGIuX2RhdGEoZSwgImZ4c2hvdyIsIHt9KSwgImhpZGRlbiIgaW4gcyAmJiAobSA9IHMu
aGlkZGVuKSwgdSAmJiAocy5oaWRkZW4gPSAhbSksIG0gPyBiKGUpLnNob3coKSA6IGYuZG9uZShm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgIHMgPSBiLl9kYXRhKGUsICJmeHNob3ciKSB8fCBiLl9k
YXRhKGUsICJmeHNob3ciLCB7fSksCisgICAgICAgICAgICAiaGlkZGVuIiBpbiBzICYmIChtID0g
cy5oaWRkZW4pLAorICAgICAgICAgICAgdSAmJiAocy5oaWRkZW4gPSAhbSksCisgICAgICAgICAg
ICBtID8gYihlKS5zaG93KCkgOiBmLmRvbmUoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAg
YihlKS5oaWRlKCkKLSAgICAgICAgICAgIH0pLCBmLmRvbmUoZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgICB9KSwKKyAgICAgICAgICAgIGYuZG9uZShmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAg
ICB2YXIgdDsKICAgICAgICAgICAgICAgICBiLl9yZW1vdmVEYXRhKGUsICJmeHNob3ciKTsKICAg
ICAgICAgICAgICAgICBmb3IgKHQgaW4gaCkKICAgICAgICAgICAgICAgICAgICAgYi5zdHlsZShl
LCB0LCBoW3RdKQogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICBmb3IgKGkgPSAwOyBvID4g
aTsgaSsrKQotICAgICAgICAgICAgICAgIHIgPSBnW2ldLCBsID0gZi5jcmVhdGVUd2VlbihyLCBt
ID8gc1tyXSA6IDApLCBoW3JdID0gc1tyXSB8fCBiLnN0eWxlKGUsIHIpLCByIGluIHMgfHwgKHNb
cl0gPSBsLnN0YXJ0LCBtICYmIChsLmVuZCA9IGwuc3RhcnQsIGwuc3RhcnQgPSAid2lkdGgiID09
PSByIHx8ICJoZWlnaHQiID09PSByID8gMSA6IDApKQorICAgICAgICAgICAgICAgIHIgPSBnW2ld
LAorICAgICAgICAgICAgICAgIGwgPSBmLmNyZWF0ZVR3ZWVuKHIsIG0gPyBzW3JdIDogMCksCisg
ICAgICAgICAgICAgICAgaFtyXSA9IHNbcl0gfHwgYi5zdHlsZShlLCByKSwKKyAgICAgICAgICAg
ICAgICByIGluIHMgfHwgKHNbcl0gPSBsLnN0YXJ0LCBtICYmIChsLmVuZCA9IGwuc3RhcnQsIGwu
c3RhcnQgPSAid2lkdGgiID09PSByIHx8ICJoZWlnaHQiID09PSByID8gMSA6IDApKQogICAgICAg
ICB9CiAgICAgfQogICAgIGZ1bmN0aW9uIHJyKGUsIHQsIG4sIHIsIGkpIHsKICAgICAgICAgcmV0
dXJuIG5ldyByci5wcm90b3R5cGUuaW5pdChlLCB0LCBuLCByLCBpKQogICAgIH0KLSAgICBiLlR3
ZWVuID0gcnIsIHJyLnByb3RvdHlwZSA9IHsKKyAgICBiLlR3ZWVuID0gcnIsCisgICAgcnIucHJv
dG90eXBlID0gewogICAgICAgICBjb25zdHJ1Y3RvcjogcnIsCiAgICAgICAgIGluaXQ6IGZ1bmN0
aW9uKGUsIHQsIG4sIHIsIGksIG8pIHsKLSAgICAgICAgICAgIHRoaXMuZWxlbSA9IGUsIHRoaXMu
cHJvcCA9IG4sIHRoaXMuZWFzaW5nID0gaSB8fCAic3dpbmciLCB0aGlzLm9wdGlvbnMgPSB0LCB0
aGlzLnN0YXJ0ID0gdGhpcy5ub3cgPSB0aGlzLmN1cigpLCB0aGlzLmVuZCA9IHIsIHRoaXMudW5p
dCA9IG8gfHwgKGIuY3NzTnVtYmVyW25dID8gIiIgOiAicHgiKQorICAgICAgICAgICAgdGhpcy5l
bGVtID0gZSwKKyAgICAgICAgICAgIHRoaXMucHJvcCA9IG4sCisgICAgICAgICAgICB0aGlzLmVh
c2luZyA9IGkgfHwgInN3aW5nIiwKKyAgICAgICAgICAgIHRoaXMub3B0aW9ucyA9IHQsCisgICAg
ICAgICAgICB0aGlzLnN0YXJ0ID0gdGhpcy5ub3cgPSB0aGlzLmN1cigpLAorICAgICAgICAgICAg
dGhpcy5lbmQgPSByLAorICAgICAgICAgICAgdGhpcy51bml0ID0gbyB8fCAoYi5jc3NOdW1iZXJb
bl0gPyAiIiA6ICJweCIpCiAgICAgICAgIH0sCiAgICAgICAgIGN1cjogZnVuY3Rpb24oKSB7CiAg
ICAgICAgICAgICB2YXIgZSA9IHJyLnByb3BIb29rc1t0aGlzLnByb3BdOwpAQCAtMzYyNCw3ICsz
OTAzLDkgQEAKICAgICAgICAgICAgICAgICBuID0gcnIucHJvcEhvb2tzW3RoaXMucHJvcF07CiAg
ICAgICAgICAgICByZXR1cm4gdGhpcy5wb3MgPSB0ID0gdGhpcy5vcHRpb25zLmR1cmF0aW9uID8g
Yi5lYXNpbmdbdGhpcy5lYXNpbmddKGUsIHRoaXMub3B0aW9ucy5kdXJhdGlvbiAqIGUsIDAsIDEs
IHRoaXMub3B0aW9ucy5kdXJhdGlvbikgOiBlLCB0aGlzLm5vdyA9ICh0aGlzLmVuZCAtIHRoaXMu
c3RhcnQpICogdCArIHRoaXMuc3RhcnQsIHRoaXMub3B0aW9ucy5zdGVwICYmIHRoaXMub3B0aW9u
cy5zdGVwLmNhbGwodGhpcy5lbGVtLCB0aGlzLm5vdywgdGhpcyksIG4gJiYgbi5zZXQgPyBuLnNl
dCh0aGlzKSA6IHJyLnByb3BIb29rcy5fZGVmYXVsdC5zZXQodGhpcyksIHRoaXMKICAgICAgICAg
fQotICAgIH0sIHJyLnByb3RvdHlwZS5pbml0LnByb3RvdHlwZSA9IHJyLnByb3RvdHlwZSwgcnIu
cHJvcEhvb2tzID0geworICAgIH0sCisgICAgcnIucHJvdG90eXBlLmluaXQucHJvdG90eXBlID0g
cnIucHJvdG90eXBlLAorICAgIHJyLnByb3BIb29rcyA9IHsKICAgICAgICAgX2RlZmF1bHQ6IHsK
ICAgICAgICAgICAgIGdldDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgIHZhciB0OwpA
QCAtMzYzNCwxNiArMzkxNSwxOSBAQAogICAgICAgICAgICAgICAgIGIuZnguc3RlcFtlLnByb3Bd
ID8gYi5meC5zdGVwW2UucHJvcF0oZSkgOiBlLmVsZW0uc3R5bGUgJiYgKG51bGwgIT0gZS5lbGVt
LnN0eWxlW2IuY3NzUHJvcHNbZS5wcm9wXV0gfHwgYi5jc3NIb29rc1tlLnByb3BdKSA/IGIuc3R5
bGUoZS5lbGVtLCBlLnByb3AsIGUubm93ICsgZS51bml0KSA6IGUuZWxlbVtlLnByb3BdID0gZS5u
b3cKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgIH0sIHJyLnByb3BIb29rcy5zY3JvbGxU
b3AgPSByci5wcm9wSG9va3Muc2Nyb2xsTGVmdCA9IHsKKyAgICB9LAorICAgIHJyLnByb3BIb29r
cy5zY3JvbGxUb3AgPSByci5wcm9wSG9va3Muc2Nyb2xsTGVmdCA9IHsKICAgICAgICAgc2V0OiBm
dW5jdGlvbihlKSB7CiAgICAgICAgICAgICBlLmVsZW0ubm9kZVR5cGUgJiYgZS5lbGVtLnBhcmVu
dE5vZGUgJiYgKGUuZWxlbVtlLnByb3BdID0gZS5ub3cpCiAgICAgICAgIH0KLSAgICB9LCBiLmVh
Y2goWyJ0b2dnbGUiLCAic2hvdyIsICJoaWRlIl0sIGZ1bmN0aW9uKGUsIHQpIHsKKyAgICB9LAor
ICAgIGIuZWFjaChbInRvZ2dsZSIsICJzaG93IiwgImhpZGUiXSwgZnVuY3Rpb24oZSwgdCkgewog
ICAgICAgICB2YXIgbiA9IGIuZm5bdF07CiAgICAgICAgIGIuZm5bdF0gPSBmdW5jdGlvbihlLCBy
LCBpKSB7CiAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PSBlIHx8ICJib29sZWFuIiA9PSB0eXBl
b2YgZSA/IG4uYXBwbHkodGhpcywgYXJndW1lbnRzKSA6IHRoaXMuYW5pbWF0ZShpcih0LCAhMCks
IGUsIHIsIGkpCiAgICAgICAgIH0KLSAgICB9KSwgYi5mbi5leHRlbmQoeworICAgIH0pLAorICAg
IGIuZm4uZXh0ZW5kKHsKICAgICAgICAgZmFkZVRvOiBmdW5jdGlvbihlLCB0LCBuLCByKSB7CiAg
ICAgICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXIobm4pLmNzcygib3BhY2l0eSIsIDApLnNob3co
KS5lbmQoKS5hbmltYXRlKHsKICAgICAgICAgICAgICAgICBvcGFjaXR5OiB0CkBAIC0zNjU2LDE0
ICszOTQwLDE2IEBACiAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZXIodGhpcywgYi5leHRl
bmQoe30sIGUpLCBvKTsKICAgICAgICAgICAgICAgICAgICAgYS5maW5pc2ggPSBmdW5jdGlvbigp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgIHQuc3RvcCghMCkKLSAgICAgICAgICAgICAgICAg
ICAgfSwgKGkgfHwgYi5fZGF0YSh0aGlzLCAiZmluaXNoIikpICYmIHQuc3RvcCghMCkKKyAgICAg
ICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgKGkgfHwgYi5fZGF0YSh0aGlz
LCAiZmluaXNoIikpICYmIHQuc3RvcCghMCkKICAgICAgICAgICAgICAgICB9OwogICAgICAgICAg
ICAgcmV0dXJuIGEuZmluaXNoID0gYSwgaSB8fCBvLnF1ZXVlID09PSAhMSA/IHRoaXMuZWFjaChh
KSA6IHRoaXMucXVldWUoby5xdWV1ZSwgYSkKICAgICAgICAgfSwKICAgICAgICAgc3RvcDogZnVu
Y3Rpb24oZSwgbiwgcikgewogICAgICAgICAgICAgdmFyIGkgPSBmdW5jdGlvbihlKSB7CiAgICAg
ICAgICAgICAgICAgdmFyIHQgPSBlLnN0b3A7Ci0gICAgICAgICAgICAgICAgZGVsZXRlIGUuc3Rv
cCwgdChyKQorICAgICAgICAgICAgICAgIGRlbGV0ZSBlLnN0b3AsCisgICAgICAgICAgICAgICAg
dChyKQogICAgICAgICAgICAgfTsKICAgICAgICAgICAgIHJldHVybiAic3RyaW5nIiAhPSB0eXBl
b2YgZSAmJiAociA9IG4sIG4gPSBlLCBlID0gdCksIG4gJiYgZSAhPT0gITEgJiYgdGhpcy5xdWV1
ZShlIHx8ICJmeCIsIFtdKSwgdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAg
IHZhciB0ID0gITAsCkBAIC0zNzAzLDcgKzM5ODksOCBAQAogICAgICAgICAgICAgfSwKICAgICAg
ICAgICAgIGkgPSAwOwogICAgICAgICBmb3IgKHQgPSB0ID8gMSA6IDA7IDQgPiBpOyBpICs9IDIg
LSB0KQotICAgICAgICAgICAgbiA9IFp0W2ldLCByWyJtYXJnaW4iICsgbl0gPSByWyJwYWRkaW5n
IiArIG5dID0gZTsKKyAgICAgICAgICAgIG4gPSBadFtpXSwKKyAgICAgICAgICAgIHJbIm1hcmdp
biIgKyBuXSA9IHJbInBhZGRpbmciICsgbl0gPSBlOwogICAgICAgICByZXR1cm4gdCAmJiAoci5v
cGFjaXR5ID0gci53aWR0aCA9IGUpLCByCiAgICAgfQogICAgIGIuZWFjaCh7CkBAIC0zNzIzLDQ0
ICs0MDEwLDYxIEBACiAgICAgICAgIGIuZm5bZV0gPSBmdW5jdGlvbihlLCBuLCByKSB7CiAgICAg
ICAgICAgICByZXR1cm4gdGhpcy5hbmltYXRlKHQsIGUsIG4sIHIpCiAgICAgICAgIH0KLSAgICB9
KSwgYi5zcGVlZCA9IGZ1bmN0aW9uKGUsIHQsIG4pIHsKKyAgICB9KSwKKyAgICBiLnNwZWVkID0g
ZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICB2YXIgciA9IGUgJiYgIm9iamVjdCIgPT0gdHlw
ZW9mIGUgPyBiLmV4dGVuZCh7fSwgZSkgOiB7CiAgICAgICAgICAgICBjb21wbGV0ZTogbiB8fCAh
biAmJiB0IHx8IGIuaXNGdW5jdGlvbihlKSAmJiBlLAogICAgICAgICAgICAgZHVyYXRpb246IGUs
CiAgICAgICAgICAgICBlYXNpbmc6IG4gJiYgdCB8fCB0ICYmICFiLmlzRnVuY3Rpb24odCkgJiYg
dAogICAgICAgICB9OwogICAgICAgICByZXR1cm4gci5kdXJhdGlvbiA9IGIuZngub2ZmID8gMCA6
ICJudW1iZXIiID09IHR5cGVvZiByLmR1cmF0aW9uID8gci5kdXJhdGlvbiA6IHIuZHVyYXRpb24g
aW4gYi5meC5zcGVlZHMgPyBiLmZ4LnNwZWVkc1tyLmR1cmF0aW9uXSA6IGIuZnguc3BlZWRzLl9k
ZWZhdWx0LCAobnVsbCA9PSByLnF1ZXVlIHx8IHIucXVldWUgPT09ICEwKSAmJiAoci5xdWV1ZSA9
ICJmeCIpLCByLm9sZCA9IHIuY29tcGxldGUsIHIuY29tcGxldGUgPSBmdW5jdGlvbigpIHsKLSAg
ICAgICAgICAgIGIuaXNGdW5jdGlvbihyLm9sZCkgJiYgci5vbGQuY2FsbCh0aGlzKSwgci5xdWV1
ZSAmJiBiLmRlcXVldWUodGhpcywgci5xdWV1ZSkKKyAgICAgICAgICAgIGIuaXNGdW5jdGlvbihy
Lm9sZCkgJiYgci5vbGQuY2FsbCh0aGlzKSwKKyAgICAgICAgICAgIHIucXVldWUgJiYgYi5kZXF1
ZXVlKHRoaXMsIHIucXVldWUpCiAgICAgICAgIH0sIHIKLSAgICB9LCBiLmVhc2luZyA9IHsKKyAg
ICB9LAorICAgIGIuZWFzaW5nID0gewogICAgICAgICBsaW5lYXI6IGZ1bmN0aW9uKGUpIHsKICAg
ICAgICAgICAgIHJldHVybiBlCiAgICAgICAgIH0sCiAgICAgICAgIHN3aW5nOiBmdW5jdGlvbihl
KSB7CiAgICAgICAgICAgICByZXR1cm4gLjUgLSBNYXRoLmNvcyhlICogTWF0aC5QSSkgLyAyCiAg
ICAgICAgIH0KLSAgICB9LCBiLnRpbWVycyA9IFtdLCBiLmZ4ID0gcnIucHJvdG90eXBlLmluaXQs
IGIuZngudGljayA9IGZ1bmN0aW9uKCkgeworICAgIH0sCisgICAgYi50aW1lcnMgPSBbXSwKKyAg
ICBiLmZ4ID0gcnIucHJvdG90eXBlLmluaXQsCisgICAgYi5meC50aWNrID0gZnVuY3Rpb24oKSB7
CiAgICAgICAgIHZhciBlLAogICAgICAgICAgICAgbiA9IGIudGltZXJzLAogICAgICAgICAgICAg
ciA9IDA7CiAgICAgICAgIGZvciAoWG4gPSBiLm5vdygpOyBuLmxlbmd0aCA+IHI7IHIrKykKLSAg
ICAgICAgICAgIGUgPSBuW3JdLCBlKCkgfHwgbltyXSAhPT0gZSB8fCBuLnNwbGljZShyLS0sIDEp
OwotICAgICAgICBuLmxlbmd0aCB8fCBiLmZ4LnN0b3AoKSwgWG4gPSB0Ci0gICAgfSwgYi5meC50
aW1lciA9IGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgICAgIGUgPSBuW3JdLAorICAgICAgICAgICAg
ZSgpIHx8IG5bcl0gIT09IGUgfHwgbi5zcGxpY2Uoci0tLCAxKTsKKyAgICAgICAgbi5sZW5ndGgg
fHwgYi5meC5zdG9wKCksCisgICAgICAgIFhuID0gdAorICAgIH0sCisgICAgYi5meC50aW1lciA9
IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgZSgpICYmIGIudGltZXJzLnB1c2goZSkgJiYgYi5meC5z
dGFydCgpCi0gICAgfSwgYi5meC5pbnRlcnZhbCA9IDEzLCBiLmZ4LnN0YXJ0ID0gZnVuY3Rpb24o
KSB7CisgICAgfSwKKyAgICBiLmZ4LmludGVydmFsID0gMTMsCisgICAgYi5meC5zdGFydCA9IGZ1
bmN0aW9uKCkgewogICAgICAgICBVbiB8fCAoVW4gPSBzZXRJbnRlcnZhbChiLmZ4LnRpY2ssIGIu
ZnguaW50ZXJ2YWwpKQotICAgIH0sIGIuZnguc3RvcCA9IGZ1bmN0aW9uKCkgewotICAgICAgICBj
bGVhckludGVydmFsKFVuKSwgVW4gPSBudWxsCi0gICAgfSwgYi5meC5zcGVlZHMgPSB7CisgICAg
fSwKKyAgICBiLmZ4LnN0b3AgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgY2xlYXJJbnRlcnZhbChV
biksCisgICAgICAgIFVuID0gbnVsbAorICAgIH0sCisgICAgYi5meC5zcGVlZHMgPSB7CiAgICAg
ICAgIHNsb3c6IDYwMCwKICAgICAgICAgZmFzdDogMjAwLAogICAgICAgICBfZGVmYXVsdDogNDAw
Ci0gICAgfSwgYi5meC5zdGVwID0ge30sIGIuZXhwciAmJiBiLmV4cHIuZmlsdGVycyAmJiAoYi5l
eHByLmZpbHRlcnMuYW5pbWF0ZWQgPSBmdW5jdGlvbihlKSB7CisgICAgfSwKKyAgICBiLmZ4LnN0
ZXAgPSB7fSwKKyAgICBiLmV4cHIgJiYgYi5leHByLmZpbHRlcnMgJiYgKGIuZXhwci5maWx0ZXJz
LmFuaW1hdGVkID0gZnVuY3Rpb24oZSkgewogICAgICAgICByZXR1cm4gYi5ncmVwKGIudGltZXJz
LCBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICByZXR1cm4gZSA9PT0gdC5lbGVtCiAgICAgICAg
IH0pLmxlbmd0aAotICAgIH0pLCBiLmZuLm9mZnNldCA9IGZ1bmN0aW9uKGUpIHsKKyAgICB9KSwK
KyAgICBiLmZuLm9mZnNldCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgaWYgKGFyZ3VtZW50cy5s
ZW5ndGgpCiAgICAgICAgICAgICByZXR1cm4gZSA9PT0gdCA/IHRoaXMgOiB0aGlzLmVhY2goZnVu
Y3Rpb24odCkgewogICAgICAgICAgICAgICAgIGIub2Zmc2V0LnNldE9mZnNldCh0aGlzLCBlLCB0
KQpAQCAtMzc3OCw3ICs0MDgyLDggQEAKICAgICAgICAgICAgICAgICB0b3A6IG8udG9wICsgKHIu
cGFnZVlPZmZzZXQgfHwgbi5zY3JvbGxUb3ApIC0gKG4uY2xpZW50VG9wIHx8IDApLAogICAgICAg
ICAgICAgICAgIGxlZnQ6IG8ubGVmdCArIChyLnBhZ2VYT2Zmc2V0IHx8IG4uc2Nyb2xsTGVmdCkg
LSAobi5jbGllbnRMZWZ0IHx8IDApCiAgICAgICAgICAgICB9KSA6IG8KLSAgICB9LCBiLm9mZnNl
dCA9IHsKKyAgICB9LAorICAgIGIub2Zmc2V0ID0gewogICAgICAgICBzZXRPZmZzZXQ6IGZ1bmN0
aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgIHZhciByID0gYi5jc3MoZSwgInBvc2l0aW9uIik7
CiAgICAgICAgICAgICAic3RhdGljIiA9PT0gciAmJiAoZS5zdHlsZS5wb3NpdGlvbiA9ICJyZWxh
dGl2ZSIpOwpAQCAtMzc5MSw5ICs0MDk2LDE0IEBACiAgICAgICAgICAgICAgICAgYyA9IHt9LAog
ICAgICAgICAgICAgICAgIHAsCiAgICAgICAgICAgICAgICAgZjsKLSAgICAgICAgICAgIHUgPyAo
YyA9IGkucG9zaXRpb24oKSwgcCA9IGMudG9wLCBmID0gYy5sZWZ0KSA6IChwID0gcGFyc2VGbG9h
dChhKSB8fCAwLCBmID0gcGFyc2VGbG9hdChzKSB8fCAwKSwgYi5pc0Z1bmN0aW9uKHQpICYmICh0
ID0gdC5jYWxsKGUsIG4sIG8pKSwgbnVsbCAhPSB0LnRvcCAmJiAobC50b3AgPSB0LnRvcCAtIG8u
dG9wICsgcCksIG51bGwgIT0gdC5sZWZ0ICYmIChsLmxlZnQgPSB0LmxlZnQgLSBvLmxlZnQgKyBm
KSwgInVzaW5nIiBpbiB0ID8gdC51c2luZy5jYWxsKGUsIGwpIDogaS5jc3MobCkKKyAgICAgICAg
ICAgIHUgPyAoYyA9IGkucG9zaXRpb24oKSwgcCA9IGMudG9wLCBmID0gYy5sZWZ0KSA6IChwID0g
cGFyc2VGbG9hdChhKSB8fCAwLCBmID0gcGFyc2VGbG9hdChzKSB8fCAwKSwKKyAgICAgICAgICAg
IGIuaXNGdW5jdGlvbih0KSAmJiAodCA9IHQuY2FsbChlLCBuLCBvKSksCisgICAgICAgICAgICBu
dWxsICE9IHQudG9wICYmIChsLnRvcCA9IHQudG9wIC0gby50b3AgKyBwKSwKKyAgICAgICAgICAg
IG51bGwgIT0gdC5sZWZ0ICYmIChsLmxlZnQgPSB0LmxlZnQgLSBvLmxlZnQgKyBmKSwKKyAgICAg
ICAgICAgICJ1c2luZyIgaW4gdCA/IHQudXNpbmcuY2FsbChlLCBsKSA6IGkuY3NzKGwpCiAgICAg
ICAgIH0KLSAgICB9LCBiLmZuLmV4dGVuZCh7CisgICAgfSwKKyAgICBiLmZuLmV4dGVuZCh7CiAg
ICAgICAgIHBvc2l0aW9uOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgIGlmICh0aGlzWzBdKSB7
CiAgICAgICAgICAgICAgICAgdmFyIGUsCkBAIC0zODE3LDcgKzQxMjcsOCBAQAogICAgICAgICAg
ICAgICAgIHJldHVybiBlIHx8IG8uZG9jdW1lbnRFbGVtZW50CiAgICAgICAgICAgICB9KQogICAg
ICAgICB9Ci0gICAgfSksIGIuZWFjaCh7CisgICAgfSksCisgICAgYi5lYWNoKHsKICAgICAgICAg
c2Nyb2xsTGVmdDogInBhZ2VYT2Zmc2V0IiwKICAgICAgICAgc2Nyb2xsVG9wOiAicGFnZVlPZmZz
ZXQiCiAgICAgfSwgZnVuY3Rpb24oZSwgbikgewpAQCAtMzg1MCw3ICs0MTYxLDkgQEAKICAgICAg
ICAgICAgICAgICB9LCBuLCBhID8gaSA6IHQsIGEsIG51bGwpCiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0pCi0gICAgfSksIGUualF1ZXJ5ID0gZS4kID0gYiwgImZ1bmN0aW9uIiA9PSB0eXBlb2Yg
ZGVmaW5lICYmIGRlZmluZS5hbWQgJiYgZGVmaW5lLmFtZC5qUXVlcnkgJiYgZGVmaW5lKCJqcXVl
cnkiLCBbXSwgZnVuY3Rpb24oKSB7CisgICAgfSksCisgICAgZS5qUXVlcnkgPSBlLiQgPSBiLAor
ICAgICJmdW5jdGlvbiIgPT0gdHlwZW9mIGRlZmluZSAmJiBkZWZpbmUuYW1kICYmIGRlZmluZS5h
bWQualF1ZXJ5ICYmIGRlZmluZSgianF1ZXJ5IiwgW10sIGZ1bmN0aW9uKCkgewogICAgICAgICBy
ZXR1cm4gYgogICAgIH0pCiB9KSh3aW5kb3cpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZjUwNzMyOTIzNzguLmNhZDA4MTY2YWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNSBAQAorMjAyMC0wNC0wNiAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogRGVidWdnZXI6IHRyZWF0IGNvbW1hIHN1Yi1leHBy
ZXNzaW9ucyBhcyBzZXBhcmF0ZSBzdGF0ZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk5OTgKKworICAgICAgICBSZXZpZXdlZCBieSBKb3Nl
cGggUGVjb3Jhcm8uCisKKyAgICAgICAgTWluaWZpZXJzIHNvbWV0aW1lcyB1c2UgYCxgIGluc3Rl
YWQgb2YgYDtgIGFzIGEgd2F5IG9mIGNvbXByZXNzaW5nIG11bHRpcGxlIHN0YXRlbWVudHMgaW50
bworICAgICAgICBhIHNpbmdsZSBzdGF0ZW1lbnQgKGUuZy4gaW5zaWRlIGFuIGBpZmAgY29uZGl0
aW9uYWwpLiBUaGlzIG1ha2VzIHN0ZXBwaW5nIHRocm91Z2ggbWluaWZpZWQKKyAgICAgICAgY29k
ZSBtdWNoIGxlc3MgdXNlZnVsLCBhcyBvdXIgY3VycmVudCBzdGVwcGluZyBsb2dpYyBpcyBiYXNl
ZCBvbiBleHByZXNzaW9ucyAobm90IGluY2x1ZGluZworICAgICAgICBzdGVwIGluIG9yIHN0ZXAg
b3V0KS4gSW4gbW9zdCBjYXNlcywgd2UgZG8gYWN0dWFsbHkgd2FudCB0byB0cmVhdCBlYWNoIHN1
Yi1leHByZXNzaW9uIGluIGEKKyAgICAgICAgY29tbWEgZXhwcmVzc2lvbiBhcyBhIHN0YXRlbWVu
dCBzbyBhcyB0byBlbXVsYXRlIHRoZSBiZWhhdmlvdXIgYXMgaWYgdGhlcmUgd2VyZSBgO2AgaW5z
dGVhZC4KKworICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAg
ICAoSlNDOjpDb21tYU5vZGU6OmVtaXRCeXRlY29kZSk6CisKKyAgICAgICAgKiBwYXJzZXIvUGFy
c2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlVmFyaWFibGVE
ZWNsYXJhdGlvbkxpc3QpOgorICAgICAgICAoUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRXhwcmVz
c2lvbik6CisgICAgICAgIFNoaWZ0IHRoZSBsb2NhdGlvbiBvZiBzdWJzZXF1ZW50IHN1Yi1leHBy
ZXNzaW9ucyB0byBiZSBhZnRlciB0aGUgY29tbWEuIEFkZCBicmVha3BvaW50IHBhdXNlCisgICAg
ICAgIGxvY2F0aW9ucyBmb3IgZWFjaCBzdWJzZXF1ZW50IHN1Yi1leHByZXNzaW9uLgorCiAyMDIw
LTA0LTA3ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pT
Q10gQ29sbGVjdC1jb250aW51b3VzbHkgdGhyZWFkIHNob3VsZCB0YWtlIG1fY29sbGVjdENvbnRp
bnVvdXNseUxvY2sgd2hpbGUgaXQgaXMgd2FraW5nIHVwIGNvbmN1cnJlbnQgY29sbGVjdG9yIHRo
cmVhZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rl
c0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0Nv
ZGVnZW4uY3BwCmluZGV4IGJkMzNiOGEwZjliLi44ODRmZWMwOTc5MCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMzA0
Miw4ICszMDQyLDEzIEBAIFJlZ2lzdGVySUQqIFJlYWRNb2RpZnlCcmFja2V0Tm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlCiBSZWdpc3RlcklEKiBDb21t
YU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
cklEKiBkc3QpCiB7CiAgICAgQ29tbWFOb2RlKiBub2RlID0gdGhpczsKLSAgICBmb3IgKDsgbm9k
ZSAmJiBub2RlLT5uZXh0KCk7IG5vZGUgPSBub2RlLT5uZXh0KCkpCisgICAgZm9yICg7IG5vZGUt
Pm5leHQoKTsgbm9kZSA9IG5vZGUtPm5leHQoKSkgewogICAgICAgICBnZW5lcmF0b3IuZW1pdE5v
ZGUoZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSwgbm9kZS0+bV9leHByKTsKKworICAgICAgICAv
LyBEb24ndCBlbWl0IGEgZGVidWcgaG9vayBmb3IgdGhlIGZpcnN0IGV4cHJlc3Npb24sIGFzIHRo
YXQgc2hvdWxkJ3ZlIGFscmVhZHkgaGFwcGVuZWQgaW4KKyAgICAgICAgLy8gdGhlIGNvbnRhaW5p
bmcgc3RhdGVtZW50LgorICAgICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhub2RlLT5uZXh0
KCktPm1fZXhwcik7CisgICAgfQogICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdE5vZGVJblRhaWxQ
b3NpdGlvbihkc3QsIG5vZGUtPm1fZXhwcik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmNwcAppbmRleCA4NDg1ODIzYzRlNi4uYzQ3MzllM2VjYmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTgwOSw2ICs4MDksNyBAQCB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZVZhcmlhYmxlRGVjbAogewogICAgIEFTU0VSVChkZWNsYXJhdGlvblR5cGUgPT0gRGVjbGFy
YXRpb25UeXBlOjpMZXREZWNsYXJhdGlvbiB8fCBkZWNsYXJhdGlvblR5cGUgPT0gRGVjbGFyYXRp
b25UeXBlOjpWYXJEZWNsYXJhdGlvbiB8fCBkZWNsYXJhdGlvblR5cGUgPT0gRGVjbGFyYXRpb25U
eXBlOjpDb25zdERlY2xhcmF0aW9uKTsKICAgICBUcmVlRXhwcmVzc2lvbiBoZWFkID0gMDsKKyAg
ICBKU1Rva2VuTG9jYXRpb24gaGVhZExvY2F0aW9uOwogICAgIFRyZWVFeHByZXNzaW9uIHRhaWwg
PSAwOwogICAgIGNvbnN0IElkZW50aWZpZXIqIGxhc3RJZGVudDsKICAgICBKU1Rva2VuIGxhc3RJ
ZGVudFRva2VuOyAKQEAgLTgxOCw2ICs4MTksMTAgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VWYXJpYWJsZURlY2wK
ICAgICAgICAgbGFzdFBhdHRlcm4gPSBUcmVlRGVzdHJ1Y3R1cmluZ1BhdHRlcm4oMCk7CiAgICAg
ICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgICAgICBu
ZXh0KCk7CisgICAgICAgIGlmIChoZWFkKSB7CisgICAgICAgICAgICAvLyBNb3ZlIHRoZSBsb2Nh
dGlvbiBvZiBzdWJzZXF1ZW50IGRlY2xhcmF0aW9ucyBhZnRlciB0aGUgY29tbWEuCisgICAgICAg
ICAgICBsb2NhdGlvbiA9IHRva2VuTG9jYXRpb24oKTsKKyAgICAgICAgfQogICAgICAgICBUcmVl
RXhwcmVzc2lvbiBub2RlID0gMDsKICAgICAgICAgZGVjbGFyYXRpb25zKys7CiAgICAgICAgIGJv
b2wgaGFzSW5pdGlhbGl6ZXIgPSBmYWxzZTsKQEAgLTg4OCwxMyArODkzLDE1IEBAIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlVmFyaWFibGVEZWNsCiAgICAgICAgIH0KIAogICAgICAgICBpZiAobm9kZSkgewotICAgICAg
ICAgICAgaWYgKCFoZWFkKQorICAgICAgICAgICAgaWYgKCFoZWFkKSB7CiAgICAgICAgICAgICAg
ICAgaGVhZCA9IG5vZGU7Ci0gICAgICAgICAgICBlbHNlIGlmICghdGFpbCkgewotICAgICAgICAg
ICAgICAgIGhlYWQgPSBjb250ZXh0LmNyZWF0ZUNvbW1hRXhwcihsb2NhdGlvbiwgaGVhZCk7Ci0g
ICAgICAgICAgICAgICAgdGFpbCA9IGNvbnRleHQuYXBwZW5kVG9Db21tYUV4cHIobG9jYXRpb24s
IGhlYWQsIGhlYWQsIG5vZGUpOwotICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAg
aGVhZExvY2F0aW9uID0gbG9jYXRpb247CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIGlmICghdGFpbCkKKyAgICAgICAgICAgICAgICAgICAgaGVhZCA9IHRhaWwgPSBjb250
ZXh0LmNyZWF0ZUNvbW1hRXhwcihoZWFkTG9jYXRpb24sIGhlYWQpOwogICAgICAgICAgICAgICAg
IHRhaWwgPSBjb250ZXh0LmFwcGVuZFRvQ29tbWFFeHByKGxvY2F0aW9uLCBoZWFkLCB0YWlsLCBu
b2RlKTsKKyAgICAgICAgICAgICAgICByZWNvcmRQYXVzZUxvY2F0aW9uKGNvbnRleHQuYnJlYWtw
b2ludExvY2F0aW9uKHRhaWwpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0gd2hp
bGUgKG1hdGNoKENPTU1BKSk7CiAgICAgaWYgKGxhc3RJZGVudCkKQEAgLTM2OTcsNyArMzcwNCw3
IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUV4cHJlc3Npb24o
VHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7CiAgICAgZmFpbElmU3RhY2tPdmVyZmxvdygpOwotICAg
IEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOworICAgIEpTVG9rZW5M
b2NhdGlvbiBoZWFkTG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICBUcmVlRXhwcmVzc2lv
biBub2RlID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbihjb250ZXh0KTsKICAgICBmYWlsSWZG
YWxzZShub2RlLCAiQ2Fubm90IHBhcnNlIGV4cHJlc3Npb24iKTsKICAgICBjb250ZXh0LnNldEVu
ZE9mZnNldChub2RlLCBtX2xhc3RUb2tlbkVuZFBvc2l0aW9uLm9mZnNldCk7CkBAIC0zNzA2LDE3
ICszNzEzLDIxIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24g
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRXhwcmVzc2lvbihUCiAgICAgbmV4dCgpOwogICAgIG1f
cGFyc2VyU3RhdGUubm9uVHJpdmlhbEV4cHJlc3Npb25Db3VudCsrOwogICAgIG1fcGFyc2VyU3Rh
dGUubm9uTEhTQ291bnQrKzsKKyAgICBKU1Rva2VuTG9jYXRpb24gdGFpbExvY2F0aW9uKHRva2Vu
TG9jYXRpb24oKSk7CiAgICAgVHJlZUV4cHJlc3Npb24gcmlnaHQgPSBwYXJzZUFzc2lnbm1lbnRF
eHByZXNzaW9uKGNvbnRleHQpOwogICAgIGZhaWxJZkZhbHNlKHJpZ2h0LCAiQ2Fubm90IHBhcnNl
IGV4cHJlc3Npb24gaW4gYSBjb21tYSBleHByZXNzaW9uIik7CiAgICAgY29udGV4dC5zZXRFbmRP
ZmZzZXQocmlnaHQsIG1fbGFzdFRva2VuRW5kUG9zaXRpb24ub2Zmc2V0KTsKLSAgICB0eXBlbmFt
ZSBUcmVlQnVpbGRlcjo6Q29tbWEgaGVhZCA9IGNvbnRleHQuY3JlYXRlQ29tbWFFeHByKGxvY2F0
aW9uLCBub2RlKTsKLSAgICB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Q29tbWEgdGFpbCA9IGNvbnRl
eHQuYXBwZW5kVG9Db21tYUV4cHIobG9jYXRpb24sIGhlYWQsIGhlYWQsIHJpZ2h0KTsKKyAgICB0
eXBlbmFtZSBUcmVlQnVpbGRlcjo6Q29tbWEgaGVhZCA9IGNvbnRleHQuY3JlYXRlQ29tbWFFeHBy
KGhlYWRMb2NhdGlvbiwgbm9kZSk7CisgICAgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkNvbW1hIHRh
aWwgPSBjb250ZXh0LmFwcGVuZFRvQ29tbWFFeHByKHRhaWxMb2NhdGlvbiwgaGVhZCwgaGVhZCwg
cmlnaHQpOworICAgIHJlY29yZFBhdXNlTG9jYXRpb24oY29udGV4dC5icmVha3BvaW50TG9jYXRp
b24odGFpbCkpOwogICAgIHdoaWxlIChtYXRjaChDT01NQSkpIHsKICAgICAgICAgbmV4dChUcmVl
QnVpbGRlcjo6RG9udEJ1aWxkU3RyaW5ncyk7CisgICAgICAgIHRhaWxMb2NhdGlvbiA9IHRva2Vu
TG9jYXRpb24oKTsKICAgICAgICAgcmlnaHQgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNv
bnRleHQpOwogICAgICAgICBmYWlsSWZGYWxzZShyaWdodCwgIkNhbm5vdCBwYXJzZSBleHByZXNz
aW9uIGluIGEgY29tbWEgZXhwcmVzc2lvbiIpOwogICAgICAgICBjb250ZXh0LnNldEVuZE9mZnNl
dChyaWdodCwgbV9sYXN0VG9rZW5FbmRQb3NpdGlvbi5vZmZzZXQpOwotICAgICAgICB0YWlsID0g
Y29udGV4dC5hcHBlbmRUb0NvbW1hRXhwcihsb2NhdGlvbiwgaGVhZCwgdGFpbCwgcmlnaHQpOwor
ICAgICAgICB0YWlsID0gY29udGV4dC5hcHBlbmRUb0NvbW1hRXhwcih0YWlsTG9jYXRpb24sIGhl
YWQsIHRhaWwsIHJpZ2h0KTsKKyAgICAgICAgcmVjb3JkUGF1c2VMb2NhdGlvbihjb250ZXh0LmJy
ZWFrcG9pbnRMb2NhdGlvbih0YWlsKSk7CiAgICAgfQogICAgIGNvbnRleHQuc2V0RW5kT2Zmc2V0
KGhlYWQsIG1fbGFzdFRva2VuRW5kUG9zaXRpb24ub2Zmc2V0KTsKICAgICByZXR1cm4gaGVhZDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDgyNDVmMjRjNTM4Li43Nzk0NWY5YTgzNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjAtMDQtMDYgIERldmlu
IFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IERl
YnVnZ2VyOiB0cmVhdCBjb21tYSBzdWItZXhwcmVzc2lvbnMgYXMgc2VwYXJhdGUgc3RhdGVtZW50
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5OTk4
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSm9zZXBoIFBlY29yYXJvLgorCisgICAgICAgIE1pbmlm
aWVycyBzb21ldGltZXMgdXNlIGAsYCBpbnN0ZWFkIG9mIGA7YCBhcyBhIHdheSBvZiBjb21wcmVz
c2luZyBtdWx0aXBsZSBzdGF0ZW1lbnRzIGludG8KKyAgICAgICAgYSBzaW5nbGUgc3RhdGVtZW50
IChlLmcuIGluc2lkZSBhbiBgaWZgIGNvbmRpdGlvbmFsKS4gVGhpcyBtYWtlcyBzdGVwcGluZyB0
aHJvdWdoIG1pbmlmaWVkCisgICAgICAgIGNvZGUgbXVjaCBsZXNzIHVzZWZ1bCwgYXMgb3VyIGN1
cnJlbnQgc3RlcHBpbmcgbG9naWMgaXMgYmFzZWQgb24gZXhwcmVzc2lvbnMgKG5vdCBpbmNsdWRp
bmcKKyAgICAgICAgc3RlcCBpbiBvciBzdGVwIG91dCkuIEluIG1vc3QgY2FzZXMsIHdlIGRvIGFj
dHVhbGx5IHdhbnQgdG8gdHJlYXQgZWFjaCBzdWItZXhwcmVzc2lvbiBpbiBhCisgICAgICAgIGNv
bW1hIGV4cHJlc3Npb24gYXMgYSBzdGF0ZW1lbnQgc28gYXMgdG8gZW11bGF0ZSB0aGUgYmVoYXZp
b3VyIGFzIGlmIHRoZXJlIHdlcmUgYDtgIGluc3RlYWQuCisKKyAgICAgICAgKiBVc2VySW50ZXJm
YWNlL1dvcmtlcnMvRm9ybWF0dGVyL0pTRm9ybWF0dGVyLmpzOgorICAgICAgICAoSlNGb3JtYXR0
ZXIucHJvdG90eXBlLl9pc0xpa2VseVRvSGF2ZU5ld2xpbmUpOgorICAgICAgICAoSlNGb3JtYXR0
ZXIucHJvdG90eXBlLl9oYW5kbGVUb2tlbkF0Tm9kZSk6CisgICAgICAgIFB1dCBlYWNoIHN1Yi1l
eHByZXNzaW9uIGluIGEgY29tbWEgZXhwcmVzc2lvbiBvbiBpdCdzIG93biBsaW5lLgorCiAyMDIw
LTA0LTA3ICBOaWtpdGEgVmFzaWx5ZXYgIDxudmFzaWx5ZXZAYXBwbGUuY29tPgogCiAgICAgICAg
IFdlYiBJbnNwZWN0b3I6IGZvY3VzIG91dGxpbmUgb2Ygc2NvcGUgYmFyIGlzIGNsaXBwZWQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1dvcmtlcnMvRm9y
bWF0dGVyL0pTRm9ybWF0dGVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvV29ya2Vycy9Gb3JtYXR0ZXIvSlNGb3JtYXR0ZXIuanMKaW5kZXggZjc2YjYwMjhkNDguLmRk
ZDFlOTE2NjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Xb3JrZXJzL0Zvcm1hdHRlci9KU0Zvcm1hdHRlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Xb3JrZXJzL0Zvcm1hdHRlci9KU0Zvcm1hdHRlci5qcwpAQCAt
MjAxLDE5ICsyMDEsMjYgQEAgSlNGb3JtYXR0ZXIgPSBjbGFzcyBKU0Zvcm1hdHRlcgogCiAgICAg
X2lzTGlrZWx5VG9IYXZlTmV3bGluZShub2RlKQogICAgIHsKLSAgICAgICAgbGV0IG5vZGVUeXBl
ID0gbm9kZS50eXBlOwotICAgICAgICByZXR1cm4gbm9kZVR5cGUgPT09ICJJZlN0YXRlbWVudCIK
LSAgICAgICAgICAgIHx8IG5vZGVUeXBlID09PSAiRm9yU3RhdGVtZW50IgotICAgICAgICAgICAg
fHwgbm9kZVR5cGUgPT09ICJGb3JPZlN0YXRlbWVudCIKLSAgICAgICAgICAgIHx8IG5vZGVUeXBl
ID09PSAiRm9ySW5TdGF0ZW1lbnQiCi0gICAgICAgICAgICB8fCBub2RlVHlwZSA9PT0gIldoaWxl
U3RhdGVtZW50IgotICAgICAgICAgICAgfHwgbm9kZVR5cGUgPT09ICJEb1doaWxlU3RhdGVtZW50
IgotICAgICAgICAgICAgfHwgbm9kZVR5cGUgPT09ICJTd2l0Y2hTdGF0ZW1lbnQiCi0gICAgICAg
ICAgICB8fCBub2RlVHlwZSA9PT0gIlRyeVN0YXRlbWVudCIKLSAgICAgICAgICAgIHx8IG5vZGVU
eXBlID09PSAiRnVuY3Rpb25EZWNsYXJhdGlvbiIKLSAgICAgICAgICAgIHx8IG5vZGVUeXBlID09
PSAiQ2xhc3NEZWNsYXJhdGlvbiIKLSAgICAgICAgICAgIHx8IG5vZGVUeXBlID09PSAiQmxvY2tT
dGF0ZW1lbnQiCi0gICAgICAgICAgICB8fCBub2RlVHlwZSA9PT0gIldpdGhTdGF0ZW1lbnQiOwor
ICAgICAgICBzd2l0Y2ggKG5vZGUudHlwZSkgeworICAgICAgICBjYXNlICJCbG9ja1N0YXRlbWVu
dCI6CisgICAgICAgIGNhc2UgIkNsYXNzRGVjbGFyYXRpb24iOgorICAgICAgICBjYXNlICJEb1do
aWxlU3RhdGVtZW50IjoKKyAgICAgICAgY2FzZSAiRm9ySW5TdGF0ZW1lbnQiOgorICAgICAgICBj
YXNlICJGb3JPZlN0YXRlbWVudCI6CisgICAgICAgIGNhc2UgIkZvclN0YXRlbWVudCI6CisgICAg
ICAgIGNhc2UgIkZ1bmN0aW9uRGVjbGFyYXRpb24iOgorICAgICAgICBjYXNlICJJZlN0YXRlbWVu
dCI6CisgICAgICAgIGNhc2UgIlN3aXRjaFN0YXRlbWVudCI6CisgICAgICAgIGNhc2UgIlRyeVN0
YXRlbWVudCI6CisgICAgICAgIGNhc2UgIldoaWxlU3RhdGVtZW50IjoKKyAgICAgICAgY2FzZSAi
V2l0aFN0YXRlbWVudCI6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICBjYXNl
ICJFeHByZXNzaW9uU3RhdGVtZW50IjoKKyAgICAgICAgICAgIHJldHVybiBub2RlLmV4cHJlc3Np
b24udHlwZSA9PT0gIlNlcXVlbmNlRXhwcmVzc2lvbiI7CisgICAgICAgIH0KKworICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgX2lzUmFuZ2VXaGl0ZXNwYWNlKGZyb20sIHRvKQpA
QCAtMjg1LDcgKzI5Miw3IEBAIEpTRm9ybWF0dGVyID0gY2xhc3MgSlNGb3JtYXR0ZXIKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChub2RlVHlwZSA9PT0gIkNh
bGxFeHByZXNzaW9uIiB8fCBub2RlVHlwZSA9PT0gIkFycmF5RXhwcmVzc2lvbiIgfHwgbm9kZVR5
cGUgPT09ICJBcnJheVBhdHRlcm4iIHx8IG5vZGVUeXBlID09PSAiT2JqZWN0UGF0dGVybiIgfHwg
bm9kZVR5cGUgPT09ICJTZXF1ZW5jZUV4cHJlc3Npb24iKSB7CisgICAgICAgIGlmIChub2RlVHlw
ZSA9PT0gIkNhbGxFeHByZXNzaW9uIiB8fCBub2RlVHlwZSA9PT0gIkFycmF5RXhwcmVzc2lvbiIg
fHwgbm9kZVR5cGUgPT09ICJBcnJheVBhdHRlcm4iIHx8IG5vZGVUeXBlID09PSAiT2JqZWN0UGF0
dGVybiIpIHsKICAgICAgICAgICAgIGlmICh0b2tlblZhbHVlID09PSAiLCIpIHsKICAgICAgICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZFRva2VuKHRva2VuVmFsdWUsIHRva2VuT2Zmc2V0KTsKICAg
ICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZFNwYWNlKCk7CkBAIC0yOTUsNiArMzAyLDE3IEBA
IEpTRm9ybWF0dGVyID0gY2xhc3MgSlNGb3JtYXR0ZXIKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCisgICAgICAgIGlmIChub2RlVHlwZSA9PT0gIlNlcXVlbmNlRXhwcmVzc2lvbiIp
IHsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kVG9rZW4odG9rZW5WYWx1ZSwgdG9rZW5PZmZz
ZXQpOworICAgICAgICAgICAgaWYgKHRva2VuVmFsdWUgPT09ICIsIikgeworICAgICAgICAgICAg
ICAgIGlmIChub2RlLnBhcmVudC50eXBlID09PSAiRXhwcmVzc2lvblN0YXRlbWVudCIpCisgICAg
ICAgICAgICAgICAgICAgIHRoaXMuX2FwcGVuZE5ld2xpbmUobm9kZSk7CisgICAgICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZFNwYWNlKCk7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwogICAgICAgICBpZiAo
bm9kZVR5cGUgPT09ICJMb2dpY2FsRXhwcmVzc2lvbiIgfHwgbm9kZVR5cGUgPT09ICJCaW5hcnlF
eHByZXNzaW9uIikgewogICAgICAgICAgICAgaWYgKHRva2VuVmFsdWUgIT09ICIoIiAmJiB0b2tl
blZhbHVlICE9PSAiKSIpIHsKICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZFNwYWNlKCk7
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>