<?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>233474</bug_id>
          
          <creation_ts>2021-11-24 09:38:51 -0800</creation_ts>
          <short_desc>[JSC] Generated code size reductions for baseline JIT (all architectures)</short_desc>
          <delta_ts>2021-12-03 04:37:13 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Geza Lore">glore</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1817653</commentid>
    <comment_count>0</comment_count>
    <who name="Geza Lore">glore</who>
    <bug_when>2021-11-24 09:38:51 -0800</bug_when>
    <thetext>[JSC] Code size improvements for Baseline and ARMv7/Thumb-2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817655</commentid>
    <comment_count>1</comment_count>
      <attachid>445097</attachid>
    <who name="Geza Lore">glore</who>
    <bug_when>2021-11-24 09:58:29 -0800</bug_when>
    <thetext>Created attachment 445097
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818179</commentid>
    <comment_count>2</comment_count>
      <attachid>445266</attachid>
    <who name="Geza Lore">glore</who>
    <bug_when>2021-11-29 04:33:26 -0800</bug_when>
    <thetext>Created attachment 445266
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818738</commentid>
    <comment_count>3</comment_count>
      <attachid>445419</attachid>
    <who name="Geza Lore">glore</who>
    <bug_when>2021-11-30 08:04:03 -0800</bug_when>
    <thetext>Created attachment 445419
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819283</commentid>
    <comment_count>4</comment_count>
      <attachid>445419</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-12-01 09:32:06 -0800</bug_when>
    <thetext>Comment on attachment 445419
Patch

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

Nice. r=me.

&gt; Source/JavaScriptCore/assembler/ARMv7Assembler.h:1268
&gt; +        ASSERT(!(offset &amp; 0x3));

According to ARM Architecture Reference Manual, https://developer.arm.com/documentation/ddi0406/b/Application-Level-Architecture/Instruction-Details/Alphabetical-list-of-instructions/LDRD--register-?lang=en
&lt;Rt&gt;
The first destination register. This register must be even-numbered and not R14.

&lt;Rt2&gt;
The second destination register. This register must be &lt;R(t+1)&gt;.

So, let&apos;s add assertions for the above condition.
ASSERT(rt2 == rt + 1);
ASSERT(rt % 2 == 0);
ASSERT(rt != r14);

&gt; Source/JavaScriptCore/assembler/ARMv7Assembler.h:1745
&gt; +        ASSERT(!(offset &amp; 0x3));

Ditto.

&gt; Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h:62
&gt; +    RegisterID scratchRegister() { return addressTempRegister; }

Can you review all places using this scratchRegister? I think it is possible that some places are using addressTempRegister and scratchRegister(), and in that case, this change breaks it.

&gt; Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h:872
&gt; +        if (!(absOffset &amp; ~0x3fc))
&gt; +            m_assembler.ldrd(dest1, dest2, address.base, address.offset, /* index: */ true, /* wback: */ false);

According to ARM Architecture Reference Manual, we need to ensure that,
dest1 + 1 == dest2
dest1 != r14

&gt; Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h:1009
&gt; +            m_assembler.strd(src1, src2, address.base, address.offset, /* index: */ true, /* wback: */ false);

Ditto.

&gt; Source/JavaScriptCore/jit/AssemblyHelpers.h:207
&gt; +        static_assert((PayloadOffset == 4 &amp;&amp; !TagOffset) || (!PayloadOffset &amp;&amp; TagOffset == 4));
&gt; +        if constexpr (PayloadOffset &lt; TagOffset)
&gt; +            loadPair32(address, regs.payloadGPR(), regs.tagGPR());
&gt; +        else
&gt; +            loadPair32(address, regs.tagGPR(), regs.payloadGPR());

Ditto.

&gt; Source/JavaScriptCore/jit/AssemblyHelpers.h:216
&gt; +        static_assert((PayloadOffset == 4 &amp;&amp; !TagOffset) || (!PayloadOffset &amp;&amp; TagOffset == 4));

You can insert static_assert that,

static_assert(!PayloadOffset &amp;&amp; TagOffset == 4)

because we never enable JIT on BigEndian environments.

&gt; Source/JavaScriptCore/jit/AssemblyHelpers.h:220
&gt; +        if constexpr (PayloadOffset &lt; TagOffset)
&gt; +            loadPair32(address, regs.payloadGPR(), regs.tagGPR());
&gt; +        else
&gt; +            loadPair32(address, regs.tagGPR(), regs.payloadGPR());

And we can just use loadPair32(address, regs.payloadGPR(), regs.tagGPR());

&gt; Source/JavaScriptCore/jit/JITOpcodes.cpp:1260
&gt; -    for (size_t j = CodeBlock::llintBaselineCalleeSaveSpaceAsVirtualRegisters(); j &lt; count; ++j)
&gt; -        emitInitRegister(virtualRegisterForLocal(j));
&gt; +    size_t first = CodeBlock::llintBaselineCalleeSaveSpaceAsVirtualRegisters();
&gt; +    if (first &lt; count)
&gt; +        moveTrustedValue(jsUndefined(), jsRegT10);
&gt; +    for (size_t j = first; j &lt; count; ++j)
&gt; +        emitPutVirtualRegister(virtualRegisterForLocal(j), jsRegT10);

Probably, we should use ENABLE(EXTRA_CTI_THUNKS) path in all architectures.
But for now, it is OK since op_enter_handlerGenerator assumes 64bit right now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819288</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-01 09:39:31 -0800</bug_when>
    <thetext>&lt;rdar://problem/85926098&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819636</commentid>
    <comment_count>6</comment_count>
      <attachid>445419</attachid>
    <who name="Geza Lore">glore</who>
    <bug_when>2021-12-02 03:06:20 -0800</bug_when>
    <thetext>Comment on attachment 445419
Patch

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

&gt;&gt; Source/JavaScriptCore/assembler/ARMv7Assembler.h:1268
&gt;&gt; +        ASSERT(!(offset &amp; 0x3));
&gt; 
&gt; According to ARM Architecture Reference Manual, https://developer.arm.com/documentation/ddi0406/b/Application-Level-Architecture/Instruction-Details/Alphabetical-list-of-instructions/LDRD--register-?lang=en
&gt; &lt;Rt&gt;
&gt; The first destination register. This register must be even-numbered and not R14.
&gt; 
&gt; &lt;Rt2&gt;
&gt; The second destination register. This register must be &lt;R(t+1)&gt;.
&gt; 
&gt; So, let&apos;s add assertions for the above condition.
&gt; ASSERT(rt2 == rt + 1);
&gt; ASSERT(rt % 2 == 0);
&gt; ASSERT(rt != r14);

As discussed, these constraints do not apply to the Thumb-2 instruction set. See &quot;Encoding T1&quot; here:
https://developer.arm.com/documentation/ddi0406/b/Application-Level-Architecture/Instruction-Details/Alphabetical-list-of-instructions/LDRD--immediate-?lang=en

&gt;&gt; Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h:62
&gt;&gt; +    RegisterID scratchRegister() { return addressTempRegister; }
&gt; 
&gt; Can you review all places using this scratchRegister? I think it is possible that some places are using addressTempRegister and scratchRegister(), and in that case, this change breaks it.

I did review these, all current uses are fine. We should also fix https://bugs.webkit.org/show_bug.cgi?id=232373 at some point, but this change does not make the situation worse than it is.

&gt;&gt; Source/JavaScriptCore/jit/AssemblyHelpers.h:216
&gt;&gt; +        static_assert((PayloadOffset == 4 &amp;&amp; !TagOffset) || (!PayloadOffset &amp;&amp; TagOffset == 4));
&gt; 
&gt; You can insert static_assert that,
&gt; 
&gt; static_assert(!PayloadOffset &amp;&amp; TagOffset == 4)
&gt; 
&gt; because we never enable JIT on BigEndian environments.

Ah, great to know not having to worry about BigEndian, thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819638</commentid>
    <comment_count>7</comment_count>
      <attachid>445699</attachid>
    <who name="Geza Lore">glore</who>
    <bug_when>2021-12-02 03:17:56 -0800</bug_when>
    <thetext>Created attachment 445699
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819676</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-12-02 06:26:31 -0800</bug_when>
    <thetext>Committed r286424 (244770@main): &lt;https://commits.webkit.org/244770@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 445699.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819940</commentid>
    <comment_count>9</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-12-02 16:44:13 -0800</bug_when>
    <thetext>Nice, this seems like it could be a speedup on Speedometer2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819951</commentid>
    <comment_count>10</comment_count>
      <attachid>445699</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-12-02 16:55:27 -0800</bug_when>
    <thetext>Comment on attachment 445699
Patch

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

&gt; Source/JavaScriptCore/jit/JITOpcodes.cpp:1260
&gt; +    for (size_t j = first; j &lt; count; ++j)
&gt; +        emitPutVirtualRegister(virtualRegisterForLocal(j), jsRegT10);

small nit: This can go in the above &quot;if&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819953</commentid>
    <comment_count>11</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-12-02 16:55:45 -0800</bug_when>
    <thetext>(In reply to Saam Barati from comment #9)
&gt; Nice, this seems like it could be a speedup on Speedometer2.

around 1% on some devices.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820104</commentid>
    <comment_count>12</comment_count>
    <who name="Geza Lore">glore</who>
    <bug_when>2021-12-03 04:37:13 -0800</bug_when>
    <thetext>Thanks for letting me know, that is great to hear. (wish those perf bots were public!)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445097</attachid>
            <date>2021-11-24 09:58:29 -0800</date>
            <delta_ts>2021-11-29 04:33:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233474-20211124175828.patch</filename>
            <type>text/plain</type>
            <size>66918</size>
            <attacher name="Geza Lore">glore</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
ZjVjMTJlMmY4NWRlYjIxMDU1ZDg1NDkyM2ViMzU3MWUzMzNkYTk0Li43ZDc1MjljYzZiZTIzOGJk
N2NjOWYxODIwZGJiZTM3NjhmYmY1OTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTYgQEAKKzIwMjEtMTEtMjQgIEdlemEgTG9yZSAgPGdsb3JlQGlnYWxpYS5jb20+CisK
KyAgICAgICAgW0pTQ10gQ29kZSBzaXplIGltcHJvdmVtZW50cyBmb3IgQmFzZWxpbmUgYW5kIEFS
TXY3L1RodW1iLTIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzMzQ3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIGZldyBpbXByb3ZlbWVudHMgdGhhdCByZWR1Y2Ug
dGhlIEpJVCBnZW5lcmF0ZWQKKyAgICAgICAgY29kZSBzaXplLgorCisgICAgICAgIFRhcmdldCBp
bmRlcGVuZGVudCBpbXByb3ZlbWVudHMgdG8gdGhlIEJhc2VsaW5lIEpJVDoKKworICAgICAgICAx
LiBTb21lIGJ5dGVjb2RlcyB0aGF0IGFyZSB2ZXJ5IGZyZXF1ZW50IChlLmcuOiBnZXRfYnlfaWQs
IGNhbGwpIHNoYXJlCisgICAgICAgIHRoZSBzYW1lIGluc3RydWN0aW9ucyBhdCB0aGUgdGFpbCBl
bmQgb2YgdGhlIGZhc3QgYW5kIHNsb3cgcGF0aHMuCisgICAgICAgIEluc3RlYWQgb2YgZHVwbGlj
YXRpbmcgdGhlc2UgaW4gdGhlIHNsb3cgcGF0aCwgdGhlbiBicmFuY2ggdG8gdGhlIG5leHQKKyAg
ICAgICAgc2VxdWVudGlhbCBieXRlY29kZSBvbiB0aGUgZmFzdCBwYXRoLCBtYWtlIHRoZSBzbG93
IHBhdGggYnJhbmNoIHRvIGFuZAorICAgICAgICByZXVzZSB0aGVzZSBjb21tb24gaW5zdHJ1Y3Rp
b25zLCB3aGljaCB0aGVuIG5hdHVyYWxseSBmYWxsIHRocm91Z2ggdG8KKyAgICAgICAgdGhlIG5l
eHQgc2VxdWVudGlhbCBieXRlY29kZS4KKworICAgICAgICAyLiBNaW5vciB0d2Vha3MgaW4gYSBm
ZXcgcGxhY2VzIHRvIHJlbW92ZSByZWR1bmRhbnQgcmVsb2FkaW5nIG9mCisgICAgICAgIGltbWVk
aWF0ZXMgYW5kIHJlbW92ZSByZWR1bmRhbnQgbW92ZXMuCisKKyAgICAgICAgQVJNdjcvVGh1bWIt
MiBzcGVjaWZpYyBpbXByb3ZlbWVudHM6CisKKyAgICAgICAgMy4gQWRkIGFzc2VtYmxlciBzdXBw
b3J0IGZvciBMRFJEIGFuZCBTVFJEIChsb2FkL3N0b3JlIGEgcGFpciBvZgorICAgICAgICAzMi1i
aXQgR1BScykgYW5kIHVzZSB0aGVtIHRocm91Z2hvdXQgdmlhIGxvYWRWYWx1ZS9zdG9yZVZhbHVl
LiBUaGlzCisgICAgICAgIHlpZWxkcyBkZW5zZXIgY29kZSBhcyBpdCBvZnRlbiBlbGltaW5hdGVz
IHJlcGVhdGVkIHRlbXBvcmFyeSByZWdpc3RlcgorICAgICAgICBzZXR1cHMgKGVzcGVjaWFsbHkg
Zm9yIGEgQmFzZUluZGV4IGFjY2VzcyksIGFuZCBhbHNvIGR1ZSB0byBwb2ludCA0CisgICAgICAg
IGJlbG93LiBUaGlzIGlzIGFsc28gcG90ZW50aWFsbHkgYSBwZXJmb3JtYW5jZSBpbXByb3ZlbWVu
dCBvbgorICAgICAgICBtaWNyby1hcmNoaXRlY3R1cmVzIHdpdGggYSA2NC1iaXQgTFNVIGRhdGEt
cGF0aC4KKworICAgICAgICA0LiBJbnN0cnVjdGlvbnMgdXNpbmcgb25seSByMC1yNyBhcyBvcGVy
YW5kcyBjYW4gb2Z0ZW4gdXNlIGEgc2hvcnQsCisgICAgICAgIDE2LWJpdCBlbmNvZGluZyBpbiBU
aHVtYi0yLCBzbyBwcmVmZXIgdG8gdXNlIGxvdyBvcmRlciByZWdpc3RlcnMKKyAgICAgICAgYXMg
dGVtcG9yYXJpZXMgd2hlcmV2ZXIgcG9zc2libGUuCisKKyAgICAgICAgVGhlIG5ldCBlZmZlY3Qg
b2YgdGhpcyBwYXRjaCBpcyB0aGF0IHRoZSBlbWl0dGVkIGJhc2VsaW5lIGNvZGUgZHVyaW5nCisg
ICAgICAgIGEgcnVuIG9mIEpldFN0cmVhbTIgaXMgfjYuNiUgc21hbGxlciBvbiB4ODZfNjQsIH41
LjElIHNtYWxsZXIgb24KKyAgICAgICAgQVJNNjQsIGFuZCB+MjQlIHNtYWxsZXIgb24gQVJNdjcv
VGh1bWItMi4gT24gQVJNdjcvVGh1bWItMiwgREZHIGNvZGUKKyAgICAgICAgaXMgYWxzbyB+NS4z
JSBzbWFsbGVyLCB3aGlsZSBvbiBvdGhlciBhcmNoaXRlY3R1cmVzIHRoZSBERkcgY29kZSBpcwor
ICAgICAgICB1bmFmZmVjdGVkLgorCisgICAgICAgIE9uIEFSTXY3L1RodW1iLTIsIHRoaXMgcGF0
Y2ggYWxzbyB5aWVsZHMgYW4gfjIlIGltcHJvdmVtZW50IGluCisgICAgICAgIEpldFN0cmVhbTIg
c2NvcmVzIG9uIG15IHRlc3QgbWFjaGluZS4KKworICAgICAgICAqIGFzc2VtYmxlci9BUk12N0Fz
c2VtYmxlci5oOgorICAgICAgICAoSlNDOjpBUk12N0Fzc2VtYmxlcjo6bGRyZCk6CisgICAgICAg
IChKU0M6OkFSTXY3QXNzZW1ibGVyOjpzdHJkKToKKyAgICAgICAgKEpTQzo6QVJNdjdBc3NlbWJs
ZXI6OkFSTUluc3RydWN0aW9uRm9ybWF0dGVyOjp0d29Xb3JkT3AxMlJlZzRSZWc0UmVnNEltbTgp
OgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlcjo6YWRkUHRyKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJBUk12Ny5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3OjpiZXN0VGVtcFJl
Z2lzdGVyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6c2NyYXRjaFJlZ2lz
dGVyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6YWRkMzIpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3OjpzdWIzMik6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyQVJNdjc6OmxvYWRQYWlyMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ckFSTXY3OjpzdG9yZTMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6c3Rv
cmVQYWlyMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3Ojpjb21wYXJlMzJB
bmRTZXRGbGFncyk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OnRlc3QzMik6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OmJyYW5jaDMyKToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6ZmFySnVtcCk6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyQVJNdjc6OmNhbGwpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3
Ojpjb21wYXJlMzIpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaDoK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpsb2FkUGFpcjMyKToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpzdG9yZVBhaXIzMik6CisgICAgICAgICogaml0L0Fz
c2VtYmx5SGVscGVycy5oOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OnN0b3JlVmFs
dWUpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmxvYWRWYWx1ZSk6CisgICAgICAg
ICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2Fz
ZXMpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUQ2FsbC5jcHA6Cisg
ICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUNhbGxFdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjpj
b21waWxlQ2FsbEV2YWxTbG93Q2FzZSk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZU9wQ2Fs
bCk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZU9wQ2FsbFNsb3dDYXNlKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9vcGVuKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0U2xvd19vcF9pdGVyYXRvcl9uZXh0KToKKyAgICAgICAgKiBqaXQvSklUSW5saW5lQ2Fj
aGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpnZW5lcmF0ZUdldEJ5SWRJbmxpbmVBY2Nl
c3MpOgorICAgICAgICAoSlNDOjpKSVRQdXRCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUJhc2VsaW5l
RGF0YUlDRmFzdFBhdGgpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5o
OgorICAgICAgICAqIGppdC9KSVRJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpJVDo6c2V0RmFz
dFBhdGhSZXN1bWVQb2ludCk6CisgICAgICAgIChKU0M6OkpJVDo6ZmFzdFBhdGhSZXN1bWVQb2lu
dCBjb25zdCk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfZW50ZXIpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6
SklUOjpnZW5lcmF0ZUdldEJ5VmFsU2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfZ2V0X3ByaXZhdGVfbmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0
X3ByaXZhdGVfbmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90cnlfZ2V0X2J5X2lk
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF90cnlfZ2V0X2J5X2lkKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV9pZF9kaXJlY3QpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZF9kaXJlY3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfZ2V0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9nZXRfYnlf
aWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pbl9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dFNsb3dfb3BfaW5fYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaW5fYnlfdmFs
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9pbl9ieV92YWwpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRIYXNQcml2YXRlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0SGFzUHJp
dmF0ZVNsb3cpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2hhc19wcml2YXRlX25h
bWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2hhc19wcml2YXRlX2JyYW5kKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2VudW1lcmF0b3JfZ2V0X2J5X3ZhbCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdFdyaXRlQmFycmllcik6CisKIDIwMjEtMTEtMjIgIEdlemEgTG9y
ZSAgPGdsb3JlQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0pTQ10gVW5pZnkgbW9zdCBCYXNlbGlu
ZSBvcHMgYmV0d2VlbiBKU1ZBTFVFNjQgYW5kIEpTVkFMVUUzMl82NApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5oCmluZGV4IGIxMjY1Mzg1YTVk
NzM5NjdlZDVlOTA5NDgyMjA5ZWRkYjRmNDI0MjUuLjQ2OTg5YWViOGRhNzEzYjlkYzBmMzY5ZDcw
MDZlYmIyN2I5ZTMwNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvQVJNdjdBc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L0FSTXY3QXNzZW1ibGVyLmgKQEAgLTU2Miw2ICs1NjIsOCBAQCBwcml2YXRlOgogICAgIHR5cGVk
ZWYgZW51bSB7CiAgICAgICAgIE9QX0JfVDEgICAgICAgICA9IDB4RDAwMCwKICAgICAgICAgT1Bf
Ql9UMiAgICAgICAgID0gMHhFMDAwLAorICAgICAgICBPUF9TVFJEX2ltbV9UMSAgPSAweEU4NDAs
CisgICAgICAgIE9QX0xEUkRfaW1tX1QxICA9IDB4RTg1MCwKICAgICAgICAgT1BfUE9QX1QyICAg
ICAgID0gMHhFOEJELAogICAgICAgICBPUF9QVVNIX1QyICAgICAgPSAweEU5MkQsCiAgICAgICAg
IE9QX0FORF9yZWdfVDIgICA9IDB4RUEwMCwKQEAgLTEyNDAsNiArMTI0Miw0NyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICBtX2Zvcm1hdHRlci50d29Xb3JkT3AxMlJlZzRGb3VyRm91cnMoT1BfTERS
U0hfcmVnX1QyLCBybiwgRm91ckZvdXJzKHJ0LCAwLCBzaGlmdCwgcm0pKTsKICAgICB9CiAKKyAg
ICAvLyBJZiBpbmRleCBpcyBzZXQsIHRoaXMgaXMgYSByZWd1bGFyIG9mZnNldCBvciBhIHByZS1p
bmRleGVkIGxvYWQ7CisgICAgLy8gaWYgaW5kZXggaXMgbm90IHNldCB0aGVuIGl0IGlzIGEgcG9z
dC1pbmRleCBsb2FkLgorICAgIC8vCisgICAgLy8gSWYgd2JhY2sgaXMgc2V0IHJuIGlzIHVwZGF0
ZWQgLSB0aGlzIGlzIGEgcHJlIG9yIHBvc3QgaW5kZXggbG9hZCwKKyAgICAvLyBpZiB3YmFjayBp
cyBub3Qgc2V0IHRoaXMgaXMgYSByZWd1bGFyIG9mZnNldCBtZW1vcnkgYWNjZXNzLgorICAgIC8v
CisgICAgLy8gKC0xMDIwIDw9IG9mZnNldCA8PSAxMDIwKQorICAgIC8vIG9mZnNldCAlIDQgPT0g
MAorICAgIC8vIF9yZWcgPSBSRUdbcm5dCisgICAgLy8gX3RtcCA9IF9yZWcgKyBvZmZzZXQKKyAg
ICAvLyBfYWRkciA9IGluZGV4ID8gX3RtcCA6IF9yZWcKKyAgICAvLyBSRUdbcnRdID0gTUVNW19h
ZGRyXQorICAgIC8vIFJFR1tydDJdID0gTUVNW19hZGRyICsgNF0KKyAgICAvLyBpZiAod2JhY2sp
IFJFR1tybl0gPSBfdG1wCisgICAgQUxXQVlTX0lOTElORSB2b2lkIGxkcmQoUmVnaXN0ZXJJRCBy
dCwgUmVnaXN0ZXJJRCBydDIsIFJlZ2lzdGVySUQgcm4sIGludCBvZmZzZXQsIGJvb2wgaW5kZXgs
IGJvb2wgd2JhY2spCisgICAgeworICAgICAgICBBU1NFUlQoIUJhZFJlZyhydCkpOworICAgICAg
ICBBU1NFUlQoIUJhZFJlZyhydDIpKTsKKyAgICAgICAgQVNTRVJUKHJuICE9IEFSTVJlZ2lzdGVy
czo6cGMpOworICAgICAgICBBU1NFUlQocnQgIT0gcnQyKTsKKyAgICAgICAgQVNTRVJUKGluZGV4
IHx8IHdiYWNrKTsKKyAgICAgICAgQVNTRVJUKCF3YmFjayB8IChydCAhPSBybikpOworICAgICAg
ICBBU1NFUlQoIXdiYWNrIHwgKHJ0MiAhPSBybikpOworICAgICAgICBBU1NFUlQoIShvZmZzZXQg
JiAweDMpKTsKKworICAgICAgICBib29sIGFkZCA9IHRydWU7CisgICAgICAgIGlmIChvZmZzZXQg
PCAwKSB7CisgICAgICAgICAgICBhZGQgPSBmYWxzZTsKKyAgICAgICAgICAgIG9mZnNldCA9IC1v
ZmZzZXQ7CisgICAgICAgIH0KKyAgICAgICAgb2Zmc2V0ID4+PSAyOworICAgICAgICBBU1NFUlQo
IShvZmZzZXQgJiB+MHhmZikpOworCisgICAgICAgIHVpbnQxNl90IG9wY29kZSA9IE9QX0xEUkRf
aW1tX1QxOworICAgICAgICBvcGNvZGUgfD0gKHdiYWNrIDw8IDUpOworICAgICAgICBvcGNvZGUg
fD0gKGFkZCA8PCA3KTsKKyAgICAgICAgb3Bjb2RlIHw9IChpbmRleCA8PCA4KTsKKworICAgICAg
ICBtX2Zvcm1hdHRlci50d29Xb3JkT3AxMlJlZzRSZWc0UmVnNEltbTgoc3RhdGljX2Nhc3Q8T3Bj
b2RlSUQxPihvcGNvZGUpLCBybiwgcnQsIHJ0Miwgb2Zmc2V0KTsKKyAgICB9CisKICAgICB2b2lk
IGxzbChSZWdpc3RlcklEIHJkLCBSZWdpc3RlcklEIHJtLCBpbnQzMl90IHNoaWZ0QW1vdW50KQog
ICAgIHsKICAgICAgICAgQVNTRVJUKCFCYWRSZWcocmQpKTsKQEAgLTE2NzYsNiArMTcxOSw0NiBA
QCBwdWJsaWM6CiAgICAgICAgICAgICBtX2Zvcm1hdHRlci50d29Xb3JkT3AxMlJlZzRGb3VyRm91
cnMoT1BfU1RSSF9yZWdfVDIsIHJuLCBGb3VyRm91cnMocnQsIDAsIHNoaWZ0LCBybSkpOwogICAg
IH0KIAorICAgIC8vIElmIGluZGV4IGlzIHNldCwgdGhpcyBpcyBhIHJlZ3VsYXIgb2Zmc2V0IG9y
IGEgcHJlLWluZGV4ZWQgbG9hZDsKKyAgICAvLyBpZiBpbmRleCBpcyBub3Qgc2V0IHRoZW4gaXQg
aXMgYSBwb3N0LWluZGV4IGxvYWQuCisgICAgLy8KKyAgICAvLyBJZiB3YmFjayBpcyBzZXQgcm4g
aXMgdXBkYXRlZCAtIHRoaXMgaXMgYSBwcmUgb3IgcG9zdCBpbmRleCBsb2FkLAorICAgIC8vIGlm
IHdiYWNrIGlzIG5vdCBzZXQgdGhpcyBpcyBhIHJlZ3VsYXIgb2Zmc2V0IG1lbW9yeSBhY2Nlc3Mu
CisgICAgLy8KKyAgICAvLyAoLTEwMjAgPD0gb2Zmc2V0IDw9IDEwMjApCisgICAgLy8gb2Zmc2V0
ICUgNCA9PSAwCisgICAgLy8gX3JlZyA9IFJFR1tybl0KKyAgICAvLyBfdG1wID0gX3JlZyArIG9m
ZnNldAorICAgIC8vIF9hZGRyID0gaW5kZXggPyBfdG1wIDogX3JlZworICAgIC8vIE1FTVtfYWRk
cl0gPSBSRUdbcnRdCisgICAgLy8gTUVNW19hZGRyICsgNF0gPSBSRUdbcnQyXQorICAgIC8vIGlm
ICh3YmFjaykgUkVHW3JuXSA9IF90bXAKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc3RyZChSZWdp
c3RlcklEIHJ0LCBSZWdpc3RlcklEIHJ0MiwgUmVnaXN0ZXJJRCBybiwgaW50IG9mZnNldCwgYm9v
bCBpbmRleCwgYm9vbCB3YmFjaykKKyAgICB7CisgICAgICAgIEFTU0VSVCghQmFkUmVnKHJ0KSk7
CisgICAgICAgIEFTU0VSVCghQmFkUmVnKHJ0MikpOworICAgICAgICBBU1NFUlQocm4gIT0gQVJN
UmVnaXN0ZXJzOjpwYyk7CisgICAgICAgIEFTU0VSVChpbmRleCB8fCB3YmFjayk7CisgICAgICAg
IEFTU0VSVCghd2JhY2sgfCAocnQgIT0gcm4pKTsKKyAgICAgICAgQVNTRVJUKCF3YmFjayB8IChy
dDIgIT0gcm4pKTsKKyAgICAgICAgQVNTRVJUKCEob2Zmc2V0ICYgMHgzKSk7CisKKyAgICAgICAg
Ym9vbCBhZGQgPSB0cnVlOworICAgICAgICBpZiAob2Zmc2V0IDwgMCkgeworICAgICAgICAgICAg
YWRkID0gZmFsc2U7CisgICAgICAgICAgICBvZmZzZXQgPSAtb2Zmc2V0OworICAgICAgICB9Cisg
ICAgICAgIG9mZnNldCA+Pj0gMjsKKyAgICAgICAgQVNTRVJUKCEob2Zmc2V0ICYgfjB4ZmYpKTsK
KworICAgICAgICB1aW50MTZfdCBvcGNvZGUgPSBPUF9TVFJEX2ltbV9UMTsKKyAgICAgICAgb3Bj
b2RlIHw9ICh3YmFjayA8PCA1KTsKKyAgICAgICAgb3Bjb2RlIHw9IChhZGQgPDwgNyk7CisgICAg
ICAgIG9wY29kZSB8PSAoaW5kZXggPDwgOCk7CisKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvV29y
ZE9wMTJSZWc0UmVnNFJlZzRJbW04KHN0YXRpY19jYXN0PE9wY29kZUlEMT4ob3Bjb2RlKSwgcm4s
IHJ0LCBydDIsIG9mZnNldCk7CisgICAgfQorCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHN1YihS
ZWdpc3RlcklEIHJkLCBSZWdpc3RlcklEIHJuLCBBUk1UaHVtYkltbWVkaWF0ZSBpbW0pCiAgICAg
ewogICAgICAgICAvLyBSZCBjYW4gb25seSBiZSBTUCBpZiBSbiBpcyBhbHNvIFNQLgpAQCAtMjg4
Nyw2ICsyOTcwLDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBtX2J1ZmZlci5wdXRTaG9ydCgo
cmVnMiA8PCAxMikgfCBpbW0pOwogICAgICAgICB9CiAKKyAgICAgICAgQUxXQVlTX0lOTElORSB2
b2lkIHR3b1dvcmRPcDEyUmVnNFJlZzRSZWc0SW1tOChPcGNvZGVJRDEgb3AsIFJlZ2lzdGVySUQg
cmVnMSwgUmVnaXN0ZXJJRCByZWcyLCBSZWdpc3RlcklEIHJlZzMsIHVpbnQ4X3QgaW1tKQorICAg
ICAgICB7CisgICAgICAgICAgICBtX2J1ZmZlci5wdXRTaG9ydChvcCB8IHJlZzEpOworICAgICAg
ICAgICAgbV9idWZmZXIucHV0U2hvcnQoKHJlZzIgPDwgMTIpIHwgKHJlZzMgPDwgOCkgfCBpbW0p
OworICAgICAgICB9CisKICAgICAgICAgQUxXQVlTX0lOTElORSB2b2lkIHR3b1dvcmRPcDEyUmVn
NDBJbW0zUmVnNEltbTIwSW1tNShPcGNvZGVJRDEgb3AsIFJlZ2lzdGVySUQgcmVnMSwgUmVnaXN0
ZXJJRCByZWcyLCB1aW50MTZfdCBpbW0xLCB1aW50MTZfdCBpbW0yLCB1aW50MTZfdCBpbW0zKQog
ICAgICAgICB7CiAgICAgICAgICAgICBtX2J1ZmZlci5wdXRTaG9ydChvcCB8IHJlZzEpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCmluZGV4
IGE1YTY1M2ExYjE5NzRmYzQ0M2FmMTNkZjhjMzQzNmJlOWRlM2Q1NDcuLmVmYjRiY2RiZGMyMjZh
YTc1ZmZjODQ3NTllYmJkN2JjZDU3NWIzZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKQEAgLTU4Miw3ICs1ODIsMTIgQEAgcHVibGlj
OgogCiAgICAgdm9pZCBhZGRQdHIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBzcmMsIFJl
Z2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIGFkZDMyKGltbSwgc3JjLCBkZXN0KTsKKyAg
ICAgICAgLy8gU21hbGwgcG9zaXRpdmUgbnVtYmVycyBjYW4gb2Z0ZW4gYmUgZW5jb2RlZCB3aXRo
IHNob3J0ZXIgaW1tZWRpYXRlIGVuY29kaW5ncywKKyAgICAgICAgLy8gd2hpY2ggc2F2ZXMgY29k
ZSBzaXplLgorICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPj0gMCkKKyAgICAgICAgICAgIGFkZDMy
KGltbSwgc3JjLCBkZXN0KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc3ViMzIoc3JjLCBU
cnVzdGVkSW1tMzIgeyAtaW1tLm1fdmFsdWUgfSwgZGVzdCk7CiAgICAgfQogCiAgICAgdm9pZCBh
ZGRQdHIoVHJ1c3RlZEltbTMyIGltbSwgQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5o
CmluZGV4IDg0YmE1MTU1MTA3MGZjYmViZTY4MjdiOWFjMGMwZWRmNTE2ZmExYmUuLmE0ZTQ3MzIz
Zjg1ODczMWRhMTg4NWZiOTJkZjQ4NmZjZGQ2OTkzNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCkBAIC00NCwxMiAr
NDQsMjIgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk12NyA6IHB1YmxpYyBBYnN0cmFjdE1hY3Jv
QXNzZW1ibGVyPEFzc2VtYmxlcj4gewogICAgIHN0YXRpYyBjb25zdGV4cHIgQVJNUmVnaXN0ZXJz
OjpGUERvdWJsZVJlZ2lzdGVySUQgZnBUZW1wUmVnaXN0ZXIgPSBBUk1SZWdpc3RlcnM6OmQ3Owog
ICAgIGlubGluZSBBUk1SZWdpc3RlcnM6OkZQU2luZ2xlUmVnaXN0ZXJJRCBmcFRlbXBSZWdpc3Rl
ckFzU2luZ2xlKCkgeyByZXR1cm4gQVJNUmVnaXN0ZXJzOjphc1NpbmdsZShmcFRlbXBSZWdpc3Rl
cik7IH0KIAorICAgIC8vIEluIHRoZSBUaHVtYi0yIGluc3RydWN0aW9uIHNldCwgaW5zdHJ1Y3Rp
b25zIG9wZXJhdGluZyBvbmx5IG9uIHJlZ2lzdGVycyByMC1yNyBjYW4gb2Z0ZW4KKyAgICAvLyBi
ZSBlbmNvZGVkIHVzaW5nIDE2LWJpdCBlbmNvZGluZ3MsIHdoaWxlIHRoZSB1c2Ugb2YgcmVnaXN0
ZXJzIHI4IGFuZCBhYm92ZSBvZnRlbiByZXF1aXJlCisgICAgLy8gMzItYml0IGVuY29kaW5ncywg
c28gcHJlZmVyIHRvIHVzZSB0aGUgYWRkcmVzc1RlbXBvcmFyeSAocjYpIHdoZW5ldmVyIHBvc3Np
YmxlLgorICAgIGlubGluZSBSZWdpc3RlcklEIGJlc3RUZW1wUmVnaXN0ZXIoUmVnaXN0ZXJJRCBl
eGNsdWRlZCkKKyAgICB7CisgICAgICAgIGlmIChleGNsdWRlZCA9PSBhZGRyZXNzVGVtcFJlZ2lz
dGVyKQorICAgICAgICAgICAgcmV0dXJuIGRhdGFUZW1wUmVnaXN0ZXI7CisgICAgICAgIHJldHVy
biBhZGRyZXNzVGVtcFJlZ2lzdGVyOworICAgIH0KKwogcHVibGljOgogI2RlZmluZSBEVU1NWV9S
RUdJU1RFUl9WQUxVRShpZCwgbmFtZSwgciwgY3MpIDAsCiAgICAgc3RhdGljIGNvbnN0ZXhwciB1
bnNpZ25lZCBudW1HUFJzID0gc3RkOjppbml0aWFsaXplcl9saXN0PGludD4oeyBGT1JfRUFDSF9H
UF9SRUdJU1RFUihEVU1NWV9SRUdJU1RFUl9WQUxVRSkgfSkuc2l6ZSgpOwogICAgIHN0YXRpYyBj
b25zdGV4cHIgdW5zaWduZWQgbnVtRlBScyA9IHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxpbnQ+KHsg
Rk9SX0VBQ0hfRlBfUkVHSVNURVIoRFVNTVlfUkVHSVNURVJfVkFMVUUpIH0pLnNpemUoKTsKICN1
bmRlZiBEVU1NWV9SRUdJU1RFUl9WQUxVRQotICAgIFJlZ2lzdGVySUQgc2NyYXRjaFJlZ2lzdGVy
KCkgeyByZXR1cm4gZGF0YVRlbXBSZWdpc3RlcjsgfQorICAgIFJlZ2lzdGVySUQgc2NyYXRjaFJl
Z2lzdGVyKCkgeyByZXR1cm4gYWRkcmVzc1RlbXBSZWdpc3RlcjsgfQogCiAgICAgTWFjcm9Bc3Nl
bWJsZXJBUk12NygpCiAgICAgICAgIDogbV9tYWtlSnVtcFBhdGNoYWJsZShmYWxzZSkKQEAgLTE4
MSwxMSArMTkxLDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYWRkMzIoVHJ1c3RlZEltbTMyIGlt
bSwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIC8vIEZv
ciBhZGRzIHdpdGggc3RhY2sgcG9pbnRlciBkZXN0aW5hdGlvbiBhdm9pZCB1bnByZWRpY3RhYmxl
IGluc3RydWN0aW9uCisgICAgICAgIC8vIEF2b2lkIHVucHJlZGljdGFibGUgaW5zdHJ1Y3Rpb24g
aWYgdGhlIGRlc3RpbmF0aW9uIGlzIHRoZSBzdGFjayBwb2ludGVyCiAgICAgICAgIGlmIChkZXN0
ID09IEFSTVJlZ2lzdGVyczo6c3AgJiYgc3JjICE9IGRlc3QpIHsKLSAgICAgICAgICAgIGFkZDMy
KGltbSwgc3JjLCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgICAgIG1vdmUoZGF0YVRlbXBS
ZWdpc3RlciwgZGVzdCk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBtb3ZlKHNy
YywgZGVzdCk7CisgICAgICAgICAgICBzcmMgPSBkZXN0OwogICAgICAgICB9CiAKICAgICAgICAg
QVJNVGh1bWJJbW1lZGlhdGUgYXJtSW1tID0gQVJNVGh1bWJJbW1lZGlhdGU6Om1ha2VVSW50MTJP
ckVuY29kZWRJbW0oaW1tLm1fdmFsdWUpOwpAQCAtNTE5LDYgKzUyOCwxMiBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIHN1YjMyKFJlZ2lzdGVySUQgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0LCBSZWdp
c3RlcklEIGRlc3QpCiAgICAgeworICAgICAgICAvLyBBdm9pZCB1bnByZWRpY3RhYmxlIGluc3Ry
dWN0aW9uIGlmIHRoZSBkZXN0aW5hdGlvbiBpcyB0aGUgc3RhY2sgcG9pbnRlcgorICAgICAgICBp
ZiAoZGVzdCA9PSBBUk1SZWdpc3RlcnM6OnNwICYmIGxlZnQgIT0gZGVzdCkgeworICAgICAgICAg
ICAgbW92ZShsZWZ0LCBkZXN0KTsKKyAgICAgICAgICAgIGxlZnQgPSBkZXN0OworICAgICAgICB9
CisKICAgICAgICAgQVJNVGh1bWJJbW1lZGlhdGUgYXJtSW1tID0gQVJNVGh1bWJJbW1lZGlhdGU6
Om1ha2VVSW50MTJPckVuY29kZWRJbW0ocmlnaHQubV92YWx1ZSk7CiAgICAgICAgIGlmIChhcm1J
bW0uaXNWYWxpZCgpKQogICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3ViKGRlc3QsIGxlZnQsIGFy
bUltbSk7CkBAIC04NjIsMTcgKzg3Nyw0MiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGxvYWRQYWly
MzIoUmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBvZmZzZXQsIFJlZ2lzdGVySUQgZGVzdDEs
IFJlZ2lzdGVySUQgZGVzdDIpCiAgICAgewotICAgICAgICAvLyBGSVhNRTogbGRyZC9sZG0gY2Fu
IGJlIHVzZWQgaWYgZGVzdDEgYW5kIGRlc3QyIGFyZSBjb25zZWN1dGl2ZSBwYWlyIG9mIHJlZ2lz
dGVycy4KKyAgICAgICAgbG9hZFBhaXIzMihBZGRyZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUpLCBk
ZXN0MSwgZGVzdDIpOworICAgIH0KKworICAgIHZvaWQgbG9hZFBhaXIzMihBZGRyZXNzIGFkZHJl
c3MsIFJlZ2lzdGVySUQgZGVzdDEsIFJlZ2lzdGVySUQgZGVzdDIpCisgICAgewogICAgICAgICBB
U1NFUlQoZGVzdDEgIT0gZGVzdDIpOyAvLyBJZiBpdCBpcyB0aGUgc2FtZSwgbGRwIGJlY29tZXMg
aWxsZWdhbCBpbnN0cnVjdGlvbi4KLSAgICAgICAgaWYgKHNyYyA9PSBkZXN0MSkgewotICAgICAg
ICAgICAgbG9hZDMyKEFkZHJlc3Moc3JjLCBvZmZzZXQubV92YWx1ZSArIDQpLCBkZXN0Mik7Ci0g
ICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhzcmMsIG9mZnNldC5tX3ZhbHVlKSwgZGVzdDEpOwor
ICAgICAgICBpbnQzMl90IGFic09mZnNldCA9IGFkZHJlc3Mub2Zmc2V0OworICAgICAgICBpZiAo
YWJzT2Zmc2V0IDwgMCkKKyAgICAgICAgICAgIGFic09mZnNldCA9IC1hYnNPZmZzZXQ7CisgICAg
ICAgIGlmICghKGFic09mZnNldCAmIH4weDNmYykpCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5s
ZHJkKGRlc3QxLCBkZXN0MiwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLm9mZnNldCwgLyogaW5kZXg6
ICovIHRydWUsIC8qIHdiYWNrOiAqLyBmYWxzZSk7CisgICAgICAgIGVsc2UgaWYgKGFkZHJlc3Mu
YmFzZSA9PSBkZXN0MSkgeworICAgICAgICAgICAgbG9hZDMyKGFkZHJlc3Mud2l0aE9mZnNldCg0
KSwgZGVzdDIpOworICAgICAgICAgICAgbG9hZDMyKGFkZHJlc3MsIGRlc3QxKTsKICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUp
LCBkZXN0MSk7Ci0gICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhzcmMsIG9mZnNldC5tX3ZhbHVl
ICsgNCksIGRlc3QyKTsKKyAgICAgICAgICAgIGxvYWQzMihhZGRyZXNzLCBkZXN0MSk7CisgICAg
ICAgICAgICBsb2FkMzIoYWRkcmVzcy53aXRoT2Zmc2V0KDQpLCBkZXN0Mik7CiAgICAgICAgIH0K
ICAgICB9CiAKKyAgICB2b2lkIGxvYWRQYWlyMzIoQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVy
SUQgZGVzdDEsIFJlZ2lzdGVySUQgZGVzdDIpCisgICAgeworICAgICAgICAvLyBVc2luZyByMC1y
NyBjYW4gb2Z0ZW4gYmUgZW5jb2RlZCB3aXRoIGEgc2hvcnRlciAoMTYtYml0IHZzIDMyLWJpdCkg
aW5zdHJ1Y3Rpb24sIHNvIHVzZQorICAgICAgICAvLyB3aGljaGV2ZXIgZGVzdGluYXRpb24gcmVn
aXN0ZXIgaXMgaW4gdGhhdCByYW5nZSAoaWYgYW55KSBhcyB0aGUgYWRkcmVzcyB0ZW1wIHJlZ2lz
dGVyCisgICAgICAgIFJlZ2lzdGVySUQgc2NyYXRjaCA9IGRlc3QxOworICAgICAgICBpZiAoZGVz
dDEgPiA4KQorICAgICAgICAgICAgc2NyYXRjaCA9IGRlc3QyOworICAgICAgICBpZiAoYWRkcmVz
cy5zY2FsZSA9PSBUaW1lc09uZSkKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZChzY3JhdGNo
LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgpOworICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgIFNoaWZ0VHlwZUFuZEFtb3VudCBzaGlmdCB7IEFSTVNoaWZ0VHlwZTo6U1JUeXBlX0xTTCwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGFkZHJlc3Muc2NhbGUpIH07CisgICAgICAgICAgICBtX2Fz
c2VtYmxlci5hZGQoc2NyYXRjaCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBzaGlmdCk7
CisgICAgICAgIH0KKyAgICAgICAgbG9hZFBhaXIzMihBZGRyZXNzKHNjcmF0Y2gsIGFkZHJlc3Mu
b2Zmc2V0KSwgZGVzdDEsIGRlc3QyKTsKKyAgICB9CisKICAgICBEYXRhTGFiZWwzMiBzdG9yZTMy
V2l0aEFkZHJlc3NPZmZzZXRQYXRjaChSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBhZGRyZXNzKQog
ICAgIHsKICAgICAgICAgRGF0YUxhYmVsMzIgbGFiZWwgPSBtb3ZlV2l0aFBhdGNoKFRydXN0ZWRJ
bW0zMihhZGRyZXNzLm9mZnNldCksIGRhdGFUZW1wUmVnaXN0ZXIpOwpAQCAtODkyLDggKzkzMiwx
MiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHN0b3JlMzIoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVz
cyBhZGRyZXNzKQogICAgIHsKLSAgICAgICAgbW92ZShpbW0sIGRhdGFUZW1wUmVnaXN0ZXIpOwot
ICAgICAgICBzdG9yZTMyKGRhdGFUZW1wUmVnaXN0ZXIsIHNldHVwQXJtQWRkcmVzcyhhZGRyZXNz
KSk7CisgICAgICAgIEFybUFkZHJlc3MgYXJtQWRkcmVzcyA9IHNldHVwQXJtQWRkcmVzcyhhZGRy
ZXNzKTsKKyAgICAgICAgUmVnaXN0ZXJJRCBzY3JhdGNoID0gYWRkcmVzc1RlbXBSZWdpc3RlcjsK
KyAgICAgICAgaWYgKGFybUFkZHJlc3MudHlwZSA9PSBBcm1BZGRyZXNzOjpIYXNJbmRleCkKKyAg
ICAgICAgICAgIHNjcmF0Y2ggPSBkYXRhVGVtcFJlZ2lzdGVyOworICAgICAgICBtb3ZlKGltbSwg
c2NyYXRjaCk7CisgICAgICAgIHN0b3JlMzIoc2NyYXRjaCwgYXJtQWRkcmVzcyk7CiAgICAgfQog
CiAgICAgdm9pZCBzdG9yZTMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQpA
QCAtOTc4LDkgKzEwMjIsMzMgQEAgcHVibGljOgogCiAgICAgdm9pZCBzdG9yZVBhaXIzMihSZWdp
c3RlcklEIHNyYzEsIFJlZ2lzdGVySUQgc3JjMiwgUmVnaXN0ZXJJRCBkZXN0LCBUcnVzdGVkSW1t
MzIgb2Zmc2V0KQogICAgIHsKLSAgICAgICAgLy8gRklYTUU6IHN0cmQvc3RtIGNhbiBiZSB1c2Vk
IGlmIHNyYzEgYW5kIHNyYzIgYXJlIGNvbnNlY3V0aXZlIHBhaXIgb2YgcmVnaXN0ZXJzLgotICAg
ICAgICBzdG9yZTMyKHNyYzEsIEFkZHJlc3MoZGVzdCwgb2Zmc2V0Lm1fdmFsdWUpKTsKLSAgICAg
ICAgc3RvcmUzMihzcmMyLCBBZGRyZXNzKGRlc3QsIG9mZnNldC5tX3ZhbHVlICsgNCkpOworICAg
ICAgICBzdG9yZVBhaXIzMihzcmMxLCBzcmMyLCBBZGRyZXNzKGRlc3QsIG9mZnNldC5tX3ZhbHVl
KSk7CisgICAgfQorCisgICAgdm9pZCBzdG9yZVBhaXIzMihSZWdpc3RlcklEIHNyYzEsIFJlZ2lz
dGVySUQgc3JjMiwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgaW50MzJfdCBhYnNP
ZmZzZXQgPSBhZGRyZXNzLm9mZnNldDsKKyAgICAgICAgaWYgKGFic09mZnNldCA8IDApCisgICAg
ICAgICAgICBhYnNPZmZzZXQgPSAtYWJzT2Zmc2V0OworICAgICAgICBpZiAoIShhYnNPZmZzZXQg
JiB+MHgzZmMpKQorICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3RyZChzcmMxLCBzcmMyLCBhZGRy
ZXNzLmJhc2UsIGFkZHJlc3Mub2Zmc2V0LCAvKiBpbmRleDogKi8gdHJ1ZSwgLyogd2JhY2s6ICov
IGZhbHNlKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBzdG9yZTMyKHNyYzEsIGFkZHJl
c3MpOworICAgICAgICAgICAgc3RvcmUzMihzcmMyLCBhZGRyZXNzLndpdGhPZmZzZXQoNCkpOwor
ICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBzdG9yZVBhaXIzMihSZWdpc3RlcklEIHNyYzEs
IFJlZ2lzdGVySUQgc3JjMiwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBBU1NF
UlQoc3JjMSAhPSBkYXRhVGVtcFJlZ2lzdGVyICYmIHNyYzIgIT0gZGF0YVRlbXBSZWdpc3Rlcik7
CisgICAgICAgIC8vIFRoZSAnYWRkcmVzc1RlbXBSZWdpc3RlcicgbWlnaHQgYmUgdXNlZCB3aGVu
IHRoZSBvZmZzZXQgaXMgd2lkZSwgc28gdXNlICdkYXRhVGVtcFJlZ2lzdGVyJworICAgICAgICBp
ZiAoYWRkcmVzcy5zY2FsZSA9PSBUaW1lc09uZSkKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFk
ZChkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgpOworICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgIFNoaWZ0VHlwZUFuZEFtb3VudCBzaGlmdCB7IEFSTVNoaWZ0
VHlwZTo6U1JUeXBlX0xTTCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGFkZHJlc3Muc2NhbGUpIH07
CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGQoZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzcy5i
YXNlLCBhZGRyZXNzLmluZGV4LCBzaGlmdCk7CisgICAgICAgIH0KKyAgICAgICAgc3RvcmVQYWly
MzIoc3JjMSwgc3JjMiwgQWRkcmVzcyhkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzLm9mZnNldCkp
OwogICAgIH0KIAogICAgIC8vIFBvc3NpYmx5IGNsb2JiZXJzIHNyYywgYnV0IG5vdCBvbiB0aGlz
IGFyY2hpdGVjdHVyZS4KQEAgLTE1NDksOCArMTYxNyw5IEBAIHByaXZhdGU6CiAgICAgICAgIGVs
c2UgaWYgKChhcm1JbW0gPSBBUk1UaHVtYkltbWVkaWF0ZTo6bWFrZUVuY29kZWRJbW0oLWltbSkp
LmlzVmFsaWQoKSkKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNtbihsZWZ0LCBhcm1JbW0pOwog
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKGltbSksIGRhdGFU
ZW1wUmVnaXN0ZXIpOwotICAgICAgICAgICAgbV9hc3NlbWJsZXIuY21wKGxlZnQsIGRhdGFUZW1w
UmVnaXN0ZXIpOworICAgICAgICAgICAgUmVnaXN0ZXJJRCBzY3JhdGNoID0gYmVzdFRlbXBSZWdp
c3RlcihsZWZ0KTsKKyAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKGltbSksIHNjcmF0Y2gp
OworICAgICAgICAgICAgbV9hc3NlbWJsZXIuY21wKGxlZnQsIHNjcmF0Y2gpOwogICAgICAgICB9
CiAgICAgfQogCkBAIC0xNjE2LDEyICsxNjg1LDEzIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAg
ICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIudHN0KHJlZywgYXJtSW1t
KTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgbW92ZShtYXNrLCBkYXRh
VGVtcFJlZ2lzdGVyKTsKICAgICAgICAgICAgICAgICBpZiAocmVnID09IEFSTVJlZ2lzdGVyczo6
c3ApIHsKLSAgICAgICAgICAgICAgICAgICAgbW92ZShyZWcsIGFkZHJlc3NUZW1wUmVnaXN0ZXIp
OwotICAgICAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci50c3QoYWRkcmVzc1RlbXBSZWdpc3Rl
ciwgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLnRzdChyZWcsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAg
ICAgICAgICAgICAgICBtb3ZlKHJlZywgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICAg
ICAgICAgIHJlZyA9IGRhdGFUZW1wUmVnaXN0ZXI7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIFJlZ2lzdGVySUQgc2NyYXRjaCA9IGJlc3RUZW1wUmVnaXN0ZXIocmVnKTsKKyAg
ICAgICAgICAgICAgICBtb3ZlKG1hc2ssIHNjcmF0Y2gpOworICAgICAgICAgICAgICAgIG1fYXNz
ZW1ibGVyLnRzdChyZWcsIHNjcmF0Y2gpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAg
fQpAQCAtMTY1MiwxNCArMTcyMiwxNCBAQCBwdWJsaWM6CiAKICAgICBKdW1wIGJyYW5jaDMyKFJl
bGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBBZGRyZXNzIHJpZ2h0KQog
ICAgIHsKLSAgICAgICAgbG9hZDMyKHJpZ2h0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAg
cmV0dXJuIGJyYW5jaDMyKGNvbmQsIGxlZnQsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICBs
b2FkMzIocmlnaHQsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOworICAgICAgICByZXR1cm4gYnJhbmNo
MzIoY29uZCwgbGVmdCwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CiAgICAgfQogCiAgICAgSnVtcCBi
cmFuY2gzMihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgbGVmdCwgUmVnaXN0ZXJJ
RCByaWdodCkKICAgICB7Ci0gICAgICAgIGxvYWQzMihsZWZ0LCBkYXRhVGVtcFJlZ2lzdGVyKTsK
LSAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIHJpZ2h0KTsK
KyAgICAgICAgbG9hZDMyKGxlZnQsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOworICAgICAgICByZXR1
cm4gYnJhbmNoMzIoY29uZCwgYWRkcmVzc1RlbXBSZWdpc3RlciwgcmlnaHQpOwogICAgIH0KIAog
ICAgIEp1bXAgYnJhbmNoMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGxlZnQs
IFRydXN0ZWRJbW0zMiByaWdodCkKQEAgLTE2ODUsMTMgKzE3NTUsMTIgQEAgcHVibGljOgogCiAg
ICAgSnVtcCBicmFuY2gzMihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFic29sdXRlQWRkcmVz
cyBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0KQogICAgIHsKLSAgICAgICAgbG9hZDMyKGxlZnQubV9w
dHIsIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgZGF0
YVRlbXBSZWdpc3RlciwgcmlnaHQpOworICAgICAgICBsb2FkMzIobGVmdC5tX3B0ciwgYWRkcmVz
c1RlbXBSZWdpc3Rlcik7CisgICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBhZGRyZXNzVGVt
cFJlZ2lzdGVyLCByaWdodCk7CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2gzMihSZWxhdGlvbmFs
Q29uZGl0aW9uIGNvbmQsIEFic29sdXRlQWRkcmVzcyBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQp
CiAgICAgewotICAgICAgICAvLyB1c2UgYWRkcmVzc1RlbXBSZWdpc3RlciBpbmNhc2UgdGhlIGJy
YW5jaDMyIHdlIGNhbGwgdXNlcyBkYXRhVGVtcFJlZ2lzdGVyLiA6LS8KICAgICAgICAgbG9hZDMy
KGxlZnQubV9wdHIsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwogICAgICAgICByZXR1cm4gYnJhbmNo
MzIoY29uZCwgYWRkcmVzc1RlbXBSZWdpc3RlciwgcmlnaHQpOwogICAgIH0KQEAgLTE4MjcsMjIg
KzE4OTYsMjIgQEAgcHVibGljOgogCiAgICAgdm9pZCBmYXJKdW1wKFRydXN0ZWRJbW1QdHIgdGFy
Z2V0LCBQdHJUYWcpCiAgICAgewotICAgICAgICBtb3ZlKHRhcmdldCwgZGF0YVRlbXBSZWdpc3Rl
cik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmJ4KGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICBt
b3ZlKHRhcmdldCwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CisgICAgICAgIG1fYXNzZW1ibGVyLmJ4
KGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwogICAgIH0KIAogICAgIC8vIEFkZHJlc3MgaXMgYSBtZW1v
cnkgbG9jYXRpb24gY29udGFpbmluZyB0aGUgYWRkcmVzcyB0byBqdW1wIHRvCiAgICAgdm9pZCBm
YXJKdW1wKEFkZHJlc3MgYWRkcmVzcywgUHRyVGFnKQogICAgIHsKLSAgICAgICAgbG9hZDMyKGFk
ZHJlc3MsIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICBtX2Fzc2VtYmxlci5ieChkYXRhVGVt
cFJlZ2lzdGVyKTsKKyAgICAgICAgbG9hZDMyKGFkZHJlc3MsIGFkZHJlc3NUZW1wUmVnaXN0ZXIp
OworICAgICAgICBtX2Fzc2VtYmxlci5ieChhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKICAgICB9CiAg
ICAgCiAgICAgdm9pZCBmYXJKdW1wKEFic29sdXRlQWRkcmVzcyBhZGRyZXNzLCBQdHJUYWcpCiAg
ICAgewotICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciksIGRhdGFUZW1w
UmVnaXN0ZXIpOwotICAgICAgICBsb2FkMzIoQWRkcmVzcyhkYXRhVGVtcFJlZ2lzdGVyKSwgZGF0
YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmJ4KGRhdGFUZW1wUmVnaXN0ZXIp
OworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciksIGFkZHJlc3NUZW1w
UmVnaXN0ZXIpOworICAgICAgICBsb2FkMzIoQWRkcmVzcyhhZGRyZXNzVGVtcFJlZ2lzdGVyKSwg
YWRkcmVzc1RlbXBSZWdpc3Rlcik7CisgICAgICAgIG1fYXNzZW1ibGVyLmJ4KGFkZHJlc3NUZW1w
UmVnaXN0ZXIpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBmYXJKdW1wKFJlZ2lz
dGVySUQgdGFyZ2V0LCBSZWdpc3RlcklEIGp1bXBUYWcpIHsgVU5VU0VEX1BBUkFNKGp1bXBUYWcp
LCBmYXJKdW1wKHRhcmdldCwgTm9QdHJUYWcpOyB9CkBAIC0yMDE4LDggKzIwODcsOCBAQCBwdWJs
aWM6CiAKICAgICBBTFdBWVNfSU5MSU5FIENhbGwgY2FsbChBZGRyZXNzIGFkZHJlc3MsIFB0clRh
ZykKICAgICB7Ci0gICAgICAgIGxvYWQzMihhZGRyZXNzLCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAg
ICAgICAgcmV0dXJuIENhbGwobV9hc3NlbWJsZXIuYmx4KGRhdGFUZW1wUmVnaXN0ZXIpLCBDYWxs
OjpOb25lKTsKKyAgICAgICAgbG9hZDMyKGFkZHJlc3MsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwor
ICAgICAgICByZXR1cm4gQ2FsbChtX2Fzc2VtYmxlci5ibHgoYWRkcmVzc1RlbXBSZWdpc3Rlciks
IENhbGw6Ok5vbmUpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgQ2FsbCBjYWxsKFJlZ2lz
dGVySUQgY2FsbFRhZykgeyByZXR1cm4gVU5VU0VEX1BBUkFNKGNhbGxUYWcpLCBjYWxsKE5vUHRy
VGFnKTsgfQpAQCAtMjA0MSw4ICsyMTEwLDggQEAgcHVibGljOgogCiAgICAgdm9pZCBjb21wYXJl
MzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGxlZnQsIFJlZ2lzdGVySUQgcmln
aHQsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIGxvYWQzMihsZWZ0LCBkYXRhVGVt
cFJlZ2lzdGVyKTsKLSAgICAgICAgY29tcGFyZTMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIHJp
Z2h0LCBkZXN0KTsKKyAgICAgICAgbG9hZDMyKGxlZnQsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwor
ICAgICAgICBjb21wYXJlMzIoY29uZCwgYWRkcmVzc1RlbXBSZWdpc3RlciwgcmlnaHQsIGRlc3Qp
OwogICAgIH0KIAogICAgIHZvaWQgY29tcGFyZTgoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBB
ZGRyZXNzIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgK
aW5kZXggOWEyODE5N2IxNWM3NTUxNjYyNTE5MGE0YTBhYjZlMGNkZTg3NjkzYS4uNDYwZTdkOTZj
MGVjMTYwN2I4NGE5ODdlY2ExMzJhZGM1NzcyMDdhNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oCkBAIC0xMzQ0LDE0ICsx
MzQ0LDMzIEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB2b2lkIGxvYWRQYWlyMzIoUmVnaXN0ZXJJ
RCBzcmMsIFRydXN0ZWRJbW0zMiBvZmZzZXQsIFJlZ2lzdGVySUQgZGVzdDEsIFJlZ2lzdGVySUQg
ZGVzdDIpCisgICAgeworICAgICAgICBsb2FkUGFpcjMyKEFkZHJlc3Moc3JjLCBvZmZzZXQubV92
YWx1ZSksIGRlc3QxLCBkZXN0Mik7CisgICAgfQorCisgICAgdm9pZCBsb2FkUGFpcjMyKEFkZHJl
c3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0MSwgUmVnaXN0ZXJJRCBkZXN0MikKICAgICB7CiAg
ICAgICAgIEFTU0VSVChkZXN0MSAhPSBkZXN0Mik7IC8vIElmIGl0IGlzIHRoZSBzYW1lLCBsZHAg
YmVjb21lcyBpbGxlZ2FsIGluc3RydWN0aW9uLgotICAgICAgICBpZiAoc3JjID09IGRlc3QxKSB7
Ci0gICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhzcmMsIG9mZnNldC5tX3ZhbHVlICsgNCksIGRl
c3QyKTsKLSAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUpLCBk
ZXN0MSk7CisgICAgICAgIGlmIChhZGRyZXNzLmJhc2UgPT0gZGVzdDEpIHsKKyAgICAgICAgICAg
IGxvYWQzMihhZGRyZXNzLndpdGhPZmZzZXQoNCksIGRlc3QyKTsKKyAgICAgICAgICAgIGxvYWQz
MihhZGRyZXNzLCBkZXN0MSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBsb2FkMzIo
QWRkcmVzcyhzcmMsIG9mZnNldC5tX3ZhbHVlKSwgZGVzdDEpOwotICAgICAgICAgICAgbG9hZDMy
KEFkZHJlc3Moc3JjLCBvZmZzZXQubV92YWx1ZSArIDQpLCBkZXN0Mik7CisgICAgICAgICAgICBs
b2FkMzIoYWRkcmVzcywgZGVzdDEpOworICAgICAgICAgICAgbG9hZDMyKGFkZHJlc3Mud2l0aE9m
ZnNldCg0KSwgZGVzdDIpOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBsb2FkUGFpcjMy
KEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QxLCBSZWdpc3RlcklEIGRlc3QyKQor
ICAgIHsKKyAgICAgICAgaWYgKGFkZHJlc3MuYmFzZSA9PSBkZXN0MSB8fCBhZGRyZXNzLmluZGV4
ID09IGRlc3QxKSB7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChhZGRyZXNzLmJhc2UgIT0g
ZGVzdDIpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoYWRkcmVzcy5pbmRleCAhPSBkZXN0
Mik7CisKKyAgICAgICAgICAgIGxvYWQzMihhZGRyZXNzLndpdGhPZmZzZXQoNCksIGRlc3QyKTsK
KyAgICAgICAgICAgIGxvYWQzMihhZGRyZXNzLCBkZXN0MSk7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBsb2FkMzIoYWRkcmVzcywgZGVzdDEpOworICAgICAgICAgICAgbG9hZDMyKGFk
ZHJlc3Mud2l0aE9mZnNldCg0KSwgZGVzdDIpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xNjcy
LDggKzE2OTEsMTkgQEAgcHVibGljOgogCiAgICAgdm9pZCBzdG9yZVBhaXIzMihSZWdpc3RlcklE
IHNyYzEsIFJlZ2lzdGVySUQgc3JjMiwgUmVnaXN0ZXJJRCBkZXN0LCBUcnVzdGVkSW1tMzIgb2Zm
c2V0KQogICAgIHsKLSAgICAgICAgc3RvcmUzMihzcmMxLCBBZGRyZXNzKGRlc3QsIG9mZnNldC5t
X3ZhbHVlKSk7Ci0gICAgICAgIHN0b3JlMzIoc3JjMiwgQWRkcmVzcyhkZXN0LCBvZmZzZXQubV92
YWx1ZSArIDQpKTsKKyAgICAgICAgc3RvcmVQYWlyMzIoc3JjMSwgc3JjMiwgQWRkcmVzcyhkZXN0
LCBvZmZzZXQubV92YWx1ZSkpOworICAgIH0KKworICAgIHZvaWQgc3RvcmVQYWlyMzIoUmVnaXN0
ZXJJRCBzcmMxLCBSZWdpc3RlcklEIHNyYzIsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIHN0b3JlMzIoc3JjMSwgYWRkcmVzcyk7CisgICAgICAgIHN0b3JlMzIoc3JjMiwgYWRkcmVz
cy53aXRoT2Zmc2V0KDQpKTsKKyAgICB9CisKKyAgICB2b2lkIHN0b3JlUGFpcjMyKFJlZ2lzdGVy
SUQgc3JjMSwgUmVnaXN0ZXJJRCBzcmMyLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIHN0b3JlMzIoc3JjMSwgYWRkcmVzcyk7CisgICAgICAgIHN0b3JlMzIoc3JjMiwgYWRkcmVz
cy53aXRoT2Zmc2V0KDQpKTsKICAgICB9CiAKICAgICAvLyBGbG9hdGluZy1wb2ludCBvcGVyYXRp
b25zOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBl
cnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKaW5kZXgg
ZTZjNzM2YzY3Y2ExMDJkNTI1NzBhNzE4OWMxMDA2MmVlYTVjNDI3Yy4uNWY4M2YxYTlmMzhiOWZj
MGVjZDg2OWE0YjY4YjcxNTU2ODQyZWM4MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0Fzc2VtYmx5SGVscGVycy5oCkBAIC0xNjQsOCArMTY0LDExIEBAIHB1YmxpYzoKICNpZiBVU0Uo
SlNWQUxVRTY0KQogICAgICAgICBzdG9yZTY0KHJlZ3MuZ3ByKCksIGFkZHJlc3MpOwogI2Vsc2UK
LSAgICAgICAgc3RvcmUzMihyZWdzLnBheWxvYWRHUFIoKSwgYWRkcmVzcy53aXRoT2Zmc2V0KFBh
eWxvYWRPZmZzZXQpKTsKLSAgICAgICAgc3RvcmUzMihyZWdzLnRhZ0dQUigpLCBhZGRyZXNzLndp
dGhPZmZzZXQoVGFnT2Zmc2V0KSk7CisgICAgICAgIHN0YXRpY19hc3NlcnQoKFBheWxvYWRPZmZz
ZXQgPT0gNCAmJiAhVGFnT2Zmc2V0KSB8fCAoIVBheWxvYWRPZmZzZXQgJiYgVGFnT2Zmc2V0ID09
IDQpKTsKKyAgICAgICAgaWYgY29uc3RleHByIChQYXlsb2FkT2Zmc2V0IDwgVGFnT2Zmc2V0KQor
ICAgICAgICAgICAgc3RvcmVQYWlyMzIocmVncy5wYXlsb2FkR1BSKCksIHJlZ3MudGFnR1BSKCks
IGFkZHJlc3MpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzdG9yZVBhaXIzMihyZWdzLnRh
Z0dQUigpLCByZWdzLnBheWxvYWRHUFIoKSwgYWRkcmVzcyk7CiAjZW5kaWYKICAgICB9CiAgICAg
CkBAIC0xNzQsOCArMTc3LDExIEBAIHB1YmxpYzoKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAg
ICBzdG9yZTY0KHJlZ3MuZ3ByKCksIGFkZHJlc3MpOwogI2Vsc2UKLSAgICAgICAgc3RvcmUzMihy
ZWdzLnBheWxvYWRHUFIoKSwgYWRkcmVzcy53aXRoT2Zmc2V0KFBheWxvYWRPZmZzZXQpKTsKLSAg
ICAgICAgc3RvcmUzMihyZWdzLnRhZ0dQUigpLCBhZGRyZXNzLndpdGhPZmZzZXQoVGFnT2Zmc2V0
KSk7CisgICAgICAgIHN0YXRpY19hc3NlcnQoKFBheWxvYWRPZmZzZXQgPT0gNCAmJiAhVGFnT2Zm
c2V0KSB8fCAoIVBheWxvYWRPZmZzZXQgJiYgVGFnT2Zmc2V0ID09IDQpKTsKKyAgICAgICAgaWYg
Y29uc3RleHByIChQYXlsb2FkT2Zmc2V0IDwgVGFnT2Zmc2V0KQorICAgICAgICAgICAgc3RvcmVQ
YWlyMzIocmVncy5wYXlsb2FkR1BSKCksIHJlZ3MudGFnR1BSKCksIGFkZHJlc3MpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBzdG9yZVBhaXIzMihyZWdzLnRhZ0dQUigpLCByZWdzLnBheWxv
YWRHUFIoKSwgYWRkcmVzcyk7CiAjZW5kaWYKICAgICB9CiAgICAgCkBAIC0xOTQsMTMgKzIwMCwx
MSBAQCBwdWJsaWM6CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgbG9hZDY0KGFkZHJlc3Ms
IHJlZ3MuZ3ByKCkpOwogI2Vsc2UKLSAgICAgICAgaWYgKGFkZHJlc3MuYmFzZSA9PSByZWdzLnBh
eWxvYWRHUFIoKSkgewotICAgICAgICAgICAgbG9hZDMyKGFkZHJlc3Mud2l0aE9mZnNldChUYWdP
ZmZzZXQpLCByZWdzLnRhZ0dQUigpKTsKLSAgICAgICAgICAgIGxvYWQzMihhZGRyZXNzLndpdGhP
ZmZzZXQoUGF5bG9hZE9mZnNldCksIHJlZ3MucGF5bG9hZEdQUigpKTsKLSAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgIGxvYWQzMihhZGRyZXNzLndpdGhPZmZzZXQoUGF5bG9hZE9mZnNldCks
IHJlZ3MucGF5bG9hZEdQUigpKTsKLSAgICAgICAgICAgIGxvYWQzMihhZGRyZXNzLndpdGhPZmZz
ZXQoVGFnT2Zmc2V0KSwgcmVncy50YWdHUFIoKSk7Ci0gICAgICAgIH0KKyAgICAgICAgc3RhdGlj
X2Fzc2VydCgoUGF5bG9hZE9mZnNldCA9PSA0ICYmICFUYWdPZmZzZXQpIHx8ICghUGF5bG9hZE9m
ZnNldCAmJiBUYWdPZmZzZXQgPT0gNCkpOworICAgICAgICBpZiBjb25zdGV4cHIgKFBheWxvYWRP
ZmZzZXQgPCBUYWdPZmZzZXQpCisgICAgICAgICAgICBsb2FkUGFpcjMyKGFkZHJlc3MsIHJlZ3Mu
cGF5bG9hZEdQUigpLCByZWdzLnRhZ0dQUigpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
bG9hZFBhaXIzMihhZGRyZXNzLCByZWdzLnRhZ0dQUigpLCByZWdzLnBheWxvYWRHUFIoKSk7CiAj
ZW5kaWYKICAgICB9CiAgICAgCkBAIC0yMDksMTggKzIxMywxMSBAQCBwdWJsaWM6CiAjaWYgVVNF
KEpTVkFMVUU2NCkKICAgICAgICAgbG9hZDY0KGFkZHJlc3MsIHJlZ3MuZ3ByKCkpOwogI2Vsc2UK
LSAgICAgICAgaWYgKGFkZHJlc3MuYmFzZSA9PSByZWdzLnBheWxvYWRHUFIoKSB8fCBhZGRyZXNz
LmluZGV4ID09IHJlZ3MucGF5bG9hZEdQUigpKSB7Ci0gICAgICAgICAgICAvLyBXZSBhY3R1YWxs
eSBjb3VsZCBoYW5kbGUgdGhlIGNhc2Ugd2hlcmUgdGhlIHJlZ2lzdGVycyBhcmUgYWxpYXNlZCB0
byBib3RoCi0gICAgICAgICAgICAvLyB0YWcgYW5kIHBheWxvYWQsIGJ1dCB3ZSBkb24ndCBmb3Ig
bm93LgotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoYWRkcmVzcy5iYXNlICE9IHJlZ3MudGFn
R1BSKCkpOwotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoYWRkcmVzcy5pbmRleCAhPSByZWdz
LnRhZ0dQUigpKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgbG9hZDMyKGFkZHJlc3Mud2l0
aE9mZnNldChUYWdPZmZzZXQpLCByZWdzLnRhZ0dQUigpKTsKLSAgICAgICAgICAgIGxvYWQzMihh
ZGRyZXNzLndpdGhPZmZzZXQoUGF5bG9hZE9mZnNldCksIHJlZ3MucGF5bG9hZEdQUigpKTsKLSAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGxvYWQzMihhZGRyZXNzLndpdGhPZmZzZXQoUGF5
bG9hZE9mZnNldCksIHJlZ3MucGF5bG9hZEdQUigpKTsKLSAgICAgICAgICAgIGxvYWQzMihhZGRy
ZXNzLndpdGhPZmZzZXQoVGFnT2Zmc2V0KSwgcmVncy50YWdHUFIoKSk7Ci0gICAgICAgIH0KKyAg
ICAgICAgc3RhdGljX2Fzc2VydCgoUGF5bG9hZE9mZnNldCA9PSA0ICYmICFUYWdPZmZzZXQpIHx8
ICghUGF5bG9hZE9mZnNldCAmJiBUYWdPZmZzZXQgPT0gNCkpOworICAgICAgICBpZiBjb25zdGV4
cHIgKFBheWxvYWRPZmZzZXQgPCBUYWdPZmZzZXQpCisgICAgICAgICAgICBsb2FkUGFpcjMyKGFk
ZHJlc3MsIHJlZ3MucGF5bG9hZEdQUigpLCByZWdzLnRhZ0dQUigpKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgbG9hZFBhaXIzMihhZGRyZXNzLCByZWdzLnRhZ0dQUigpLCByZWdzLnBheWxv
YWRHUFIoKSk7CiAjZW5kaWYKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRl
eCAyYjMxY2FlMDFiYmJjYWMwNGE3ZWRkMzEzODlhZDlkZWI4MDZmODA1Li5mNTdhNmUxMzQ1MDU4
ZmRiZTg0MjM4ZjIyNzM3NjU3ZDA2Mzk5YTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3Bw
CkBAIC0xNTksMTQgKzE1OSwxMSBAQCB2b2lkIEpJVDo6cmVzZXRTUCgpCiAgICAgY2hlY2tTdGFj
a1BvaW50ZXJBbGlnbm1lbnQoKTsKIH0KIAotI2RlZmluZSBORVhUX09QQ09ERShuYW1lKSBcCi0g
ICAgbV9ieXRlY29kZUluZGV4ID0gQnl0ZWNvZGVJbmRleChtX2J5dGVjb2RlSW5kZXgub2Zmc2V0
KCkgKyBjdXJyZW50SW5zdHJ1Y3Rpb24tPnNpemUoKSk7IFwKLSAgICBicmVhazsKLQogI2RlZmlu
ZSBORVhUX09QQ09ERV9JTl9NQUlOKG5hbWUpIFwKICAgICBpZiAocHJldmlvdXNTbG93Q2FzZXNT
aXplICE9IG1fc2xvd0Nhc2VzLnNpemUoKSkgXAogICAgICAgICArK21fYnl0ZWNvZGVDb3VudEhh
dmluZ1Nsb3dDYXNlOyBcCi0gICAgTkVYVF9PUENPREUobmFtZSkKKyAgICBtX2J5dGVjb2RlSW5k
ZXggPSBCeXRlY29kZUluZGV4KG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSArIGN1cnJlbnRJbnN0
cnVjdGlvbi0+c2l6ZSgpKTsgXAorICAgIGJyZWFrOwogCiAjZGVmaW5lIERFRklORV9TTE9XX09Q
KG5hbWUpIFwKICAgICBjYXNlIG9wXyMjbmFtZTogeyBcCkBAIC0xODgsMTMgKzE4NSwxMyBAQCB2
b2lkIEpJVDo6cmVzZXRTUCgpCiAjZGVmaW5lIERFRklORV9TTE9XQ0FTRV9PUChuYW1lKSBcCiAg
ICAgY2FzZSBuYW1lOiB7IFwKICAgICAgICAgZW1pdFNsb3dfIyNuYW1lKGN1cnJlbnRJbnN0cnVj
dGlvbiwgaXRlcik7IFwKLSAgICAgICAgTkVYVF9PUENPREUobmFtZSk7IFwKKyAgICAgICAgYnJl
YWs7IFwKICAgICB9CiAKICNkZWZpbmUgREVGSU5FX1NMT1dDQVNFX1NMT1dfT1AobmFtZSkgXAog
ICAgIGNhc2Ugb3BfIyNuYW1lOiB7IFwKICAgICAgICAgZW1pdFNsb3dDYXNlQ2FsbChjdXJyZW50
SW5zdHJ1Y3Rpb24sIGl0ZXIsIHNsb3dfcGF0aF8jI25hbWUpOyBcCi0gICAgICAgIE5FWFRfT1BD
T0RFKG9wXyMjbmFtZSk7IFwKKyAgICAgICAgYnJlYWs7IFwKICAgICB9CiAKIHZvaWQgSklUOjpl
bWl0U2xvd0Nhc2VDYWxsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIsIFNsb3dQYXRoRnVuY3Rpb24gc3R1
YikKQEAgLTY3NSwxMiArNjcyLDE0IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNl
cygpCiAKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKGl0ZXIgPT0gbV9zbG93
Q2FzZXMuZW5kKCkgfHwgZmlyc3RUby5vZmZzZXQoKSAhPSBpdGVyLT50by5vZmZzZXQoKSwgIk5v
dCBlbm91Z2gganVtcHMgbGlua2VkIGluIHNsb3cgY2FzZSBjb2RlZ2VuLiIpOwogICAgICAgICBS
RUxFQVNFX0FTU0VSVF9XSVRIX01FU1NBR0UoZmlyc3RUby5vZmZzZXQoKSA9PSAoaXRlciAtIDEp
LT50by5vZmZzZXQoKSwgIlRvbyBtYW55IGp1bXBzIGxpbmtlZCBpbiBzbG93IGNhc2UgY29kZWdl
bi4iKTsKLSAgICAgICAgCi0gICAgICAgIGVtaXRKdW1wU2xvd1RvSG90KGp1bXAoKSwgMCk7CisK
KyAgICAgICAganVtcCgpLmxpbmtUbyhmYXN0UGF0aFJlc3VtZVBvaW50KCksIHRoaXMpOwogICAg
ICAgICArK2J5dGVjb2RlQ291bnRIYXZpbmdTbG93Q2FzZTsKIAotICAgICAgICBpZiAoVU5MSUtF
TFkoc2l6ZU1hcmtlcikpCisgICAgICAgIGlmIChVTkxJS0VMWShzaXplTWFya2VyKSkgeworICAg
ICAgICAgICAgbV9ieXRlY29kZUluZGV4ID0gQnl0ZWNvZGVJbmRleChtX2J5dGVjb2RlSW5kZXgu
b2Zmc2V0KCkgKyBjdXJyZW50SW5zdHJ1Y3Rpb24tPnNpemUoKSk7CiAgICAgICAgICAgICBtX3Zt
LT5qaXRTaXplU3RhdGlzdGljcy0+bWFya0VuZChXVEZNb3ZlKCpzaXplTWFya2VyKSwgKnRoaXMp
OworICAgICAgICB9CiAgICAgfQogCiAgICAgUkVMRUFTRV9BU1NFUlQoYnl0ZWNvZGVDb3VudEhh
dmluZ1Nsb3dDYXNlID09IG1fYnl0ZWNvZGVDb3VudEhhdmluZ1Nsb3dDYXNlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oCmluZGV4IDU0ZDU4MmUwZmZiYzRlMDg0ZDk3NDA1ZTgyNDA4YWQwYTQyYTFj
YTEuLjBkYjQ3YTJiYzY1ZmMzOGYyNjkwYTk5YjIxNzEwMzVhOGM5MDgyYTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuaApAQCAtMjgwLDYgKzI4MCw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
ICAgIHZvaWQgYWR2YW5jZVRvTmV4dENoZWNrcG9pbnQoKTsKICAgICAgICAgdm9pZCBlbWl0SnVt
cFNsb3dUb0hvdEZvckNoZWNrcG9pbnQoSnVtcCk7CisgICAgICAgIHZvaWQgc2V0RmFzdFBhdGhS
ZXN1bWVQb2ludCgpOworICAgICAgICBMYWJlbCBmYXN0UGF0aFJlc3VtZVBvaW50KCkgY29uc3Q7
CiAKICAgICAgICAgdm9pZCBhZGRTbG93Q2FzZShKdW1wKTsKICAgICAgICAgdm9pZCBhZGRTbG93
Q2FzZShjb25zdCBKdW1wTGlzdCYpOwpAQCAtNjIwLDcgKzYyMiw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rp
b24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAKICAgICAgICAgdm9pZCBl
bWl0SGFzUHJpdmF0ZShWaXJ0dWFsUmVnaXN0ZXIgZHN0LCBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSwg
VmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5T3JCcmFuZCwgQWNjZXNzVHlwZSk7Ci0gICAgICAgIHZv
aWQgZW1pdEhhc1ByaXZhdGVTbG93KFZpcnR1YWxSZWdpc3RlciBkc3QsIFZpcnR1YWxSZWdpc3Rl
ciBiYXNlLCBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHksIEFjY2Vzc1R5cGUpOworICAgICAgICB2
b2lkIGVtaXRIYXNQcml2YXRlU2xvdyhWaXJ0dWFsUmVnaXN0ZXIgYmFzZSwgVmlydHVhbFJlZ2lz
dGVyIHByb3BlcnR5LCBBY2Nlc3NUeXBlKTsKIAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBP
cD4KICAgICAgICAgdm9pZCBlbWl0TmV3RnVuY0NvbW1vbihjb25zdCBJbnN0cnVjdGlvbiopOwpA
QCAtNjMwLDggKzYzMiw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRWYXJS
ZWFkT25seUNoZWNrKFJlc29sdmVUeXBlLCBHUFJSZWcgc2NyYXRjaEdQUik7CiAgICAgICAgIHZv
aWQgZW1pdE5vdGlmeVdyaXRlV2F0Y2hwb2ludChHUFJSZWcgcG9pbnRlclRvU2V0KTsKIAotICAg
ICAgICB2b2lkIGVtaXRJbml0UmVnaXN0ZXIoVmlydHVhbFJlZ2lzdGVyKTsKLQogICAgICAgICBi
b29sIGlzS25vd25DZWxsKFZpcnR1YWxSZWdpc3Rlcik7CiAKICAgICAgICAgSlNWYWx1ZSBnZXRD
b25zdGFudE9wZXJhbmQoVmlydHVhbFJlZ2lzdGVyKTsKQEAgLTkxMSw2ICs5MTEsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgVmVjdG9yPE5lYXJKdW1wUmVjb3JkPiBtX25lYXJKdW1wczsK
ICAgICAgICAgVmVjdG9yPExhYmVsPiBtX2xhYmVsczsKICAgICAgICAgSGFzaE1hcDxCeXRlY29k
ZUluZGV4LCBMYWJlbD4gbV9jaGVja3BvaW50TGFiZWxzOworICAgICAgICBIYXNoTWFwPEJ5dGVj
b2RlSW5kZXgsIExhYmVsPiBtX2Zhc3RQYXRoUmVzdW1lTGFiZWxzOwogICAgICAgICBWZWN0b3I8
SklUR2V0QnlJZEdlbmVyYXRvcj4gbV9nZXRCeUlkczsKICAgICAgICAgVmVjdG9yPEpJVEdldEJ5
VmFsR2VuZXJhdG9yPiBtX2dldEJ5VmFsczsKICAgICAgICAgVmVjdG9yPEpJVEdldEJ5SWRXaXRo
VGhpc0dlbmVyYXRvcj4gbV9nZXRCeUlkc1dpdGhUaGlzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUQ2FsbC5jcHAKaW5kZXggMTE3ZGZhYzA1MDY3OTUwMzZjNTA0YjNjNzIwNDU1NWE0YjA1ZDIw
NC4uZDM2MzYwZTg5OGM1NjVjZWUyNzQ5MmJlNWJjYzlhNWJhM2RhOGY3MSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVENhbGwuY3BwCkBAIC0xODUsNiArMTg1LDcgQEAgYm9vbCBKSVQ6OmNv
bXBpbGVDYWxsRXZhbChjb25zdCBPcENhbGxFdmFsJiBieXRlY29kZSkKICAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbkNhbGxFdmFsLCBhcmd1bWVudEdQUjAsIGFyZ3VtZW50R1BSMSwgYXJndW1l
bnRHUFIyKTsKICAgICBhZGRTbG93Q2FzZShicmFuY2hJZkVtcHR5KHJldHVyblZhbHVlSlNSKSk7
CiAKKyAgICBzZXRGYXN0UGF0aFJlc3VtZVBvaW50KCk7CiAgICAgZW1pdFB1dENhbGxSZXN1bHQo
Ynl0ZWNvZGUpOwogCiAgICAgcmV0dXJuIHRydWU7CkBAIC0yMDUsOCArMjA2LDYgQEAgdm9pZCBK
SVQ6OmNvbXBpbGVDYWxsRXZhbFNsb3dDYXNlKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlv
biwgVmVjdG9yPFNsb3dDYXMKICAgICBtYXRlcmlhbGl6ZVBvaW50ZXJJbnRvTWV0YWRhdGEoYnl0
ZWNvZGUsIE9wQ2FsbEV2YWw6Ok1ldGFkYXRhOjpvZmZzZXRPZkNhbGxMaW5rSW5mbygpLCBjYWxs
TGlua0luZm9HUFIpOwogICAgIGVtaXRWaXJ0dWFsQ2FsbFdpdGhvdXRNb3ZpbmdHbG9iYWxPYmpl
Y3QoKm1fdm0sIGNhbGxMaW5rSW5mb0dQUiwgQ2FsbE1vZGU6OlJlZ3VsYXIpOwogICAgIHJlc2V0
U1AoKTsKLQotICAgIGVtaXRQdXRDYWxsUmVzdWx0KGJ5dGVjb2RlKTsKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgT3A+CkBAIC0zMDIsOCArMzAxLDkgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCB1bnNpZ25lZCBjYWxsTGlua0luZm9JbmQK
IAogICAgIG1fY2FsbENvbXBpbGF0aW9uSW5mb1tjYWxsTGlua0luZm9JbmRleF0uZG9uZUxvY2F0
aW9uID0gZG9uZUxvY2F0aW9uOwogCisgICAgaWYgY29uc3RleHByIChPcDo6b3Bjb2RlSUQgIT0g
b3BfaXRlcmF0b3Jfb3BlbiAmJiBPcDo6b3Bjb2RlSUQgIT0gb3BfaXRlcmF0b3JfbmV4dCkKKyAg
ICAgICAgc2V0RmFzdFBhdGhSZXN1bWVQb2ludCgpOwogICAgIHJlc2V0U1AoKTsKLQogICAgIGVt
aXRQdXRDYWxsUmVzdWx0KGJ5dGVjb2RlKTsKIH0KIApAQCAtMzI1LDEzICszMjUsMTEgQEAgdm9p
ZCBKSVQ6OmNvbXBpbGVPcENhbGxTbG93Q2FzZShjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rp
b24sIFZlY3RvcjxTbG93Q2FzZUUKICAgICBDYWxsTGlua0luZm86OmVtaXREYXRhSUNTbG93UGF0
aCgqbV92bSwgKnRoaXMsIHJlZ1QyKTsKIAogICAgIGlmIChvcGNvZGVJRCA9PSBvcF90YWlsX2Nh
bGwgfHwgb3Bjb2RlSUQgPT0gb3BfdGFpbF9jYWxsX3ZhcmFyZ3MgfHwgb3Bjb2RlSUQgPT0gb3Bf
dGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzKSB7CisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICAg
ICAgYWJvcnRXaXRoUmVhc29uKEpJVERpZFJldHVybkZyb21UYWlsQ2FsbCk7CisjZW5kaWYKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KLQotICAgIHJlc2V0U1AoKTsKLQotICAgIGVtaXRQdXRDYWxs
UmVzdWx0KGJ5dGVjb2RlKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfY2FsbChjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpAQCAtNDcwLDggKzQ2OCwxMiBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9pdGVyYXRvcl9vcGVuKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikK
IAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24q
IGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewor
ICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck9wZW4+KCk7CisK
ICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogICAgIGNvbXBpbGVPcENhbGxTbG93Q2FzZTxP
cEl0ZXJhdG9yT3Blbj4oaW5zdHJ1Y3Rpb24sIGl0ZXIsIG1fY2FsbExpbmtJbmZvSW5kZXgrKyk7
CisgICAgcmVzZXRTUCgpOworICAgIGVtaXRQdXRDYWxsUmVzdWx0KGJ5dGVjb2RlKTsKICAgICBl
bWl0SnVtcFNsb3dUb0hvdEZvckNoZWNrcG9pbnQoanVtcCgpKTsKIAogICAgIGxpbmtBbGxTbG93
Q2FzZXMoaXRlcik7CkBAIC00ODAsNyArNDgyLDYgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2l0
ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0MK
ICAgICBub3RPYmplY3QuYXBwZW5kKGJyYW5jaElmTm90Q2VsbChpdGVyYXRvckpTUikpOwogICAg
IG5vdE9iamVjdC5hcHBlbmQoYnJhbmNoSWZOb3RPYmplY3QoaXRlcmF0b3JKU1IucGF5bG9hZEdQ
UigpKSk7CiAKLSAgICBhdXRvIGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JP
cGVuPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBuZXh0VlJlZyA9IGJ5dGVjb2RlLm1fbmV4dDsK
ICAgICBVbmlxdWVkU3RyaW5nSW1wbCogaWRlbnQgPSB2bSgpLnByb3BlcnR5TmFtZXMtPm5leHQu
aW1wbCgpOwogCkBAIC02MTUsOCArNjE2LDEyIEBAIHZvaWQgSklUOjplbWl0X29wX2l0ZXJhdG9y
X25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQogCiB2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CisgICAgYXV0byBieXRlY29kZSA9
IGluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yTmV4dD4oKTsKKwogICAgIGxpbmtBbGxTbG93Q2Fz
ZXMoaXRlcik7CiAgICAgY29tcGlsZU9wQ2FsbFNsb3dDYXNlPE9wSXRlcmF0b3JOZXh0PihpbnN0
cnVjdGlvbiwgaXRlciwgbV9jYWxsTGlua0luZm9JbmRleCsrKTsKKyAgICByZXNldFNQKCk7Cisg
ICAgZW1pdFB1dENhbGxSZXN1bHQoYnl0ZWNvZGUpOwogICAgIGVtaXRKdW1wU2xvd1RvSG90Rm9y
Q2hlY2twb2ludChqdW1wKCkpOwogCiAgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJz
OjpyZXN1bHRKU1I7CkBAIC02MjQsNyArNjI5LDYgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2l0
ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0MK
IAogICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBpdGVyQ2FsbFJlc3VsdEpTUiA9IGRvbnRDbG9i
YmVySlNSOwogCi0gICAgYXV0byBieXRlY29kZSA9IGluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9y
TmV4dD4oKTsKICAgICB7CiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBkb25lVlJlZyA9IGJ5dGVj
b2RlLm1fZG9uZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElu
bGluZUNhY2hlR2VuZXJhdG9yLmNwcAppbmRleCA2MmUwOTMwMGM5ZTAwM2NjYzNjZWM2ZWViYWY1
M2I1Y2MyYWI0OGY4Li5jNjdiY2UwOWZmYmM2MGUyNDMzZTYyMmUzNzgyNzhjZjIwNzRiNGJlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJh
dG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2Vu
ZXJhdG9yLmNwcApAQCAtMTM1LDE4ICsxMzUsMTIgQEAgdm9pZCBKSVRHZXRCeUlkR2VuZXJhdG9y
OjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQpCiAKIHN0YXRpYyB2b2lkIGdl
bmVyYXRlR2V0QnlJZElubGluZUFjY2VzcyhKSVQmIGppdCwgR1BSUmVnIHN0dWJJbmZvR1BSLCBK
U1ZhbHVlUmVncyBiYXNlSlNSLCBHUFJSZWcgc2NyYXRjaEdQUiwgSlNWYWx1ZVJlZ3MgcmVzdWx0
SlNSKQogewotICAgIENDYWxsSGVscGVyczo6SnVtcExpc3QgZG9uZTsKLQogICAgIGppdC5sb2Fk
MzIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VKU1IucGF5bG9hZEdQUigpLCBKU0NlbGw6OnN0
cnVjdHVyZUlET2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsKLSAgICBhdXRvIHNraXBJbmxpbmVBY2Nl
c3MgPSBqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgc2NyYXRjaEdQUiwgQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0
T2ZJbmxpbmVBY2Nlc3NCYXNlU3RydWN0dXJlKCkpKTsKKyAgICBhdXRvIGRvSW5saW5lQWNjZXNz
ID0gaml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6RXF1YWwsIHNjcmF0Y2hHUFIsIENDYWxsSGVs
cGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mSW5s
aW5lQWNjZXNzQmFzZVN0cnVjdHVyZSgpKSk7CisgICAgaml0LmZhckp1bXAoQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZDb2RlUHRy
KCkpLCBKSVRTdHViUm91dGluZVB0clRhZyk7CisgICAgZG9JbmxpbmVBY2Nlc3MubGluaygmaml0
KTsKICAgICBqaXQubG9hZDMyKENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3Ry
dWN0dXJlU3R1YkluZm86Om9mZnNldE9mQnlJZFNlbGZPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwog
ICAgIGppdC5sb2FkUHJvcGVydHkoYmFzZUpTUi5wYXlsb2FkR1BSKCksIHNjcmF0Y2hHUFIsIHJl
c3VsdEpTUik7Ci0gICAgYXV0byBmaW5pc2hlZCA9IGppdC5qdW1wKCk7Ci0KLSAgICBza2lwSW5s
aW5lQWNjZXNzLmxpbmsoJmppdCk7Ci0gICAgaml0LmZhckp1bXAoQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZDb2RlUHRyKCkpLCBK
SVRTdHViUm91dGluZVB0clRhZyk7Ci0KLSAgICBmaW5pc2hlZC5saW5rKCZqaXQpOwogfQogCiB2
b2lkIEpJVEdldEJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlQmFzZWxpbmVEYXRhSUNGYXN0UGF0aChK
SVQmIGppdCwgdW5zaWduZWQgc3R1YkluZm8sIEdQUlJlZyBzdHViSW5mb0dQUikKQEAgLTIyNywx
NSArMjIxLDExIEBAIHZvaWQgSklUUHV0QnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVCYXNlbGluZURh
dGFJQ0Zhc3RQYXRoKEpJVCYgaml0LCB1bnNpZ25lZCBzdHViCiAgICAgdXNpbmcgQmFzZWxpbmVQ
dXRCeUlkUmVnaXN0ZXJzOjpzY3JhdGNoMkdQUjsKIAogICAgIGppdC5sb2FkMzIoQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKGJhc2VKU1IucGF5bG9hZEdQUigpLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zm
c2V0KCkpLCBzY3JhdGNoR1BSKTsKLSAgICBhdXRvIHNraXBJbmxpbmVBY2Nlc3MgPSBqaXQuYnJh
bmNoMzIoQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgc2NyYXRjaEdQUiwgQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZJbmxpbmVBY2Nl
c3NCYXNlU3RydWN0dXJlKCkpKTsKKyAgICBhdXRvIGRvSW5saW5lQWNjZXNzID0gaml0LmJyYW5j
aDMyKENDYWxsSGVscGVyczo6RXF1YWwsIHNjcmF0Y2hHUFIsIENDYWxsSGVscGVyczo6QWRkcmVz
cyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mSW5saW5lQWNjZXNzQmFz
ZVN0cnVjdHVyZSgpKSk7CisgICAgaml0LmZhckp1bXAoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0
dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZDb2RlUHRyKCkpLCBKSVRTdHVi
Um91dGluZVB0clRhZyk7CisgICAgZG9JbmxpbmVBY2Nlc3MubGluaygmaml0KTsKICAgICBqaXQu
bG9hZDMyKENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1Yklu
Zm86Om9mZnNldE9mQnlJZFNlbGZPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwogICAgIGppdC5zdG9y
ZVByb3BlcnR5KHZhbHVlSlNSLCBiYXNlSlNSLnBheWxvYWRHUFIoKSwgc2NyYXRjaEdQUiwgc2Ny
YXRjaDJHUFIpOwotICAgIGF1dG8gZmluaXNoZWQgPSBqaXQuanVtcCgpOwotCi0gICAgc2tpcElu
bGluZUFjY2Vzcy5saW5rKCZqaXQpOwotICAgIGppdC5mYXJKdW1wKENDYWxsSGVscGVyczo6QWRk
cmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mQ29kZVB0cigpKSwg
SklUU3R1YlJvdXRpbmVQdHJUYWcpOwotCi0gICAgZmluaXNoZWQubGluaygmaml0KTsKICAgICBt
X2RvbmUgPSBqaXQubGFiZWwoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCmluZGV4IDNlMjZkYjk1N2UzZWQ0NmRmODVj
ZWViN2UzZDUyYmFiNGQ0YzU0MTEuLjYyOTI5YzBjMjQ4NGZiOWNhMGVjNjYxYmI3YzBhN2RlNjQ5
ZmM5OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2Fj
aGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNh
Y2hlR2VuZXJhdG9yLmgKQEAgLTQ5LDQ2ICs0OSw0MyBAQCBlbnVtIGNsYXNzIEFjY2Vzc1R5cGUg
OiBpbnQ4X3Q7CiBlbnVtIGNsYXNzIEpJVFR5cGUgOiB1aW50OF90OwogCiBuYW1lc3BhY2UgQmFz
ZWxpbmVEZWxCeVZhbFJlZ2lzdGVycyB7Citjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNS
IHsgSlNSSW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsKICNpZiBVU0UoSlNWQUxVRTY0KQogY29uc3Rl
eHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMSB9OwogY29uc3RleHByIEpT
VmFsdWVSZWdzIHByb3BlcnR5SlNSIHsgR1BSSW5mbzo6cmVnVDAgfTsKLWNvbnN0ZXhwciBKU1Zh
bHVlUmVncyByZXN1bHRKU1IgeyBwcm9wZXJ0eUpTUiB9OwogY29uc3RleHByIEdQUlJlZyBzdHVi
SW5mb0dQUiB7IEdQUkluZm86OnJlZ1QzIH07CiBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIg
eyBHUFJJbmZvOjpyZWdUMiB9OwogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKIGNvbnN0ZXhwciBK
U1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDMsIEdQUkluZm86OnJlZ1QyIH07CiBj
b25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgeyBHUFJJbmZvOjpyZWdUMSwgR1BSSW5m
bzo6cmVnVDAgfTsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBwcm9wZXJ0eUpT
UiB9OwogY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q3IH07CiBj
b25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUNiB9OwogI2VuZGlmCiB9
CiAKIG5hbWVzcGFjZSBCYXNlbGluZURlbEJ5SWRSZWdpc3RlcnMgeworY29uc3RleHByIEpTVmFs
dWVSZWdzIHJlc3VsdEpTUiB7IEpTUkluZm86OnJldHVyblZhbHVlSlNSIH07CiAjaWYgVVNFKEpT
VkFMVUU2NCkKIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDEg
fTsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBHUFJJbmZvOjpyZWdUMCB9Owog
Y29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QzIH07CiBjb25zdGV4
cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUMiB9OwogI2VsaWYgVVNFKEpTVkFM
VUUzMl82NCkKIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDMs
IEdQUkluZm86OnJlZ1QyIH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgR1BS
SW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1QwIH07CiBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZv
R1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQ
UkluZm86OnJlZ1Q2IH07CiAjZW5kaWYKIH0KIAogbmFtZXNwYWNlIEJhc2VsaW5lR2V0QnlWYWxS
ZWdpc3RlcnMgeworY29uc3RleHByIEpTVmFsdWVSZWdzIHJlc3VsdEpTUiB7IEpTUkluZm86OnJl
dHVyblZhbHVlSlNSIH07CiAjaWYgVVNFKEpTVkFMVUU2NCkKIGNvbnN0ZXhwciBKU1ZhbHVlUmVn
cyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDAgfTsKIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9w
ZXJ0eUpTUiB7IEdQUkluZm86OnJlZ1QxIH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0
SlNSIHsgYmFzZUpTUiB9OwogY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86
OnJlZ1QyIH07CiBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUMyB9
OwogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNS
IHsgR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1QwIH07CiBjb25zdGV4cHIgSlNWYWx1ZVJl
Z3MgcHJvcGVydHlKU1IgeyBHUFJJbmZvOjpyZWdUMywgR1BSSW5mbzo6cmVnVDIgfTsKLWNvbnN0
ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBiYXNlSlNSIH07CiBjb25zdGV4cHIgR1BSUmVn
IHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRj
aEdQUiB7IEdQUkluZm86OnJlZ1Q2IH07CiAjZW5kaWYKQEAgLTEzNiwxNiArMTMzLDE1IEBAIHN0
YXRpY19hc3NlcnQoQXNzZW1ibHlIZWxwZXJzOjpub092ZXJsYXAodmFsdWVKU1IsIHByb3RvSlNS
LCBzdHViSW5mb0dQUiwgc2NyYXRjCiB9CiAKIG5hbWVzcGFjZSBCYXNlbGluZUluQnlWYWxSZWdp
c3RlcnMgeworY29uc3RleHByIEpTVmFsdWVSZWdzIHJlc3VsdEpTUiB7IEpTUkluZm86OnJldHVy
blZhbHVlSlNSIH07CiAjaWYgVVNFKEpTVkFMVUU2NCkKIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBi
YXNlSlNSIHsgR1BSSW5mbzo6cmVnVDAgfTsKIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0
eUpTUiB7IEdQUkluZm86OnJlZ1QxIH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNS
IHsgYmFzZUpTUiB9OwogY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJl
Z1QyIH07CiBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUMyB9Owog
I2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsg
R1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1QwIH07CiBjb25zdGV4cHIgSlNWYWx1ZVJlZ3Mg
cHJvcGVydHlKU1IgIHsgR1BSSW5mbzo6cmVnVDMsIEdQUkluZm86OnJlZ1QyIH07Ci1jb25zdGV4
cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgYmFzZUpTUiB9OwogY29uc3RleHByIEdQUlJlZyBz
dHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q3IH07CiBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hH
UFIgeyBHUFJJbmZvOjpyZWdUNiB9OwogI2VuZGlmCkBAIC0xNTQsMzEgKzE1MCwyOSBAQCBzdGF0
aWNfYXNzZXJ0KHByb3BlcnR5SlNSID09IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnByb3Bl
cnR5SlNSKTsKIH0KIAogbmFtZXNwYWNlIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVycyB7Citjb25z
dGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgSlNSSW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsK
K2NvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgSlNSSW5mbzo6cmV0dXJuVmFsdWVKU1Ig
fTsKICNpZiBVU0UoSlNWQUxVRTY0KQotY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBH
UFJJbmZvOjpyZWdUMCB9OwotY29uc3RleHByIEpTVmFsdWVSZWdzIHJlc3VsdEpTUiB7IGJhc2VK
U1IgfTsKIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMSB9Owog
Y29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKIGNvbnN0ZXhw
ciBKU1ZhbHVlUmVncyBkb250Q2xvYmJlckpTUiB7IEdQUkluZm86OnJlZ1QzIH07CiAjZWxpZiBV
U0UoSlNWQUxVRTMyXzY0KQotY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZv
OjpyZWdUMSwgR1BSSW5mbzo6cmVnVDAgfTsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRK
U1IgeyBiYXNlSlNSIH07CiBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6
cmVnVDIgfTsKIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1QzIH07
CiBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgZG9udENsb2JiZXJKU1IgeyBHUFJJbmZvOjpyZWdUNiwg
R1BSSW5mbzo6cmVnVDcgfTsKICNlbmRpZgorc3RhdGljX2Fzc2VydChBc3NlbWJseUhlbHBlcnM6
Om5vT3ZlcmxhcChiYXNlSlNSLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiwgZG9udENsb2JiZXJK
U1IpKTsKIH0KIAogbmFtZXNwYWNlIEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzIHsK
K2NvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBKU1JJbmZvOjpyZXR1cm5WYWx1ZUpT
UiB9OwogI2lmIFVTRShKU1ZBTFVFNjQpCiBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7
IEdQUkluZm86OnJlZ1QwIH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgYmFz
ZUpTUiB9OwogY29uc3RleHByIEpTVmFsdWVSZWdzIHRoaXNKU1IgeyBHUFJJbmZvOjpyZWdUMSB9
OwogY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QyIH07CiBjb25z
dGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUMyB9OwogI2VsaWYgVVNFKEpT
VkFMVUUzMl82NCkKIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVn
VDEsIEdQUkluZm86OnJlZ1QwIH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsg
YmFzZUpTUiB9OwogY29uc3RleHByIEpTVmFsdWVSZWdzIHRoaXNKU1IgeyBHUFJJbmZvOjpyZWdU
MywgR1BSSW5mbzo6cmVnVDIgfTsKIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJ
bmZvOjpyZWdUNyB9OwogY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVn
VDYgfTsKQEAgLTE4Nyw3ICsxODEsNyBAQCBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBH
UFJJbmZvOjpyZWdUNiB9OwogCiBuYW1lc3BhY2UgQmFzZWxpbmVJbkJ5SWRSZWdpc3RlcnMgewog
Y29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6
OmJhc2VKU1IgfTsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBCYXNlbGluZUdl
dEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUiB9OworY29uc3RleHByIEpTVmFsdWVSZWdzIHJlc3Vs
dEpTUiB7IEpTUkluZm86OnJldHVyblZhbHVlSlNSIH07CiBjb25zdGV4cHIgR1BSUmVnIHN0dWJJ
bmZvR1BSIHsgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpzdHViSW5mb0dQUiB9OwogY29uc3Rl
eHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpzY3JhdGNo
R1BSIH07CiB9CkBAIC0yMDQsNyArMTk4LDcgQEAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VK
U1IgeyBHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVnVDAgfTsKIGNvbnN0ZXhwciBKU1ZhbHVl
UmVncyB2YWx1ZUpTUiB7IEdQUkluZm86OnJlZ1QzLCBHUFJJbmZvOjpyZWdUMiB9OwogY29uc3Rl
eHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q3IH07CiBjb25zdGV4cHIgR1BS
UmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUNiB9OwotY29uc3RleHByIEdQUlJlZyBzY3Jh
dGNoMkdQUiB7IEdQUkluZm86OnJlZ1Q0IH07Citjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyR1BS
IHsgYmFzZUpTUi50YWdHUFIoKSB9OyAvLyBSZXVzaW5nIHJlZ1QxIGZvciBiZXR0ZXIgY29kZSBz
aXplIG9uIEFSTV9USFVNQjIKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lcy5oCmluZGV4IDBlNTJkOGY2MmY4ZDdhNTcyMTU4NDE1YzYyZjk4NmY4M2VjZDJkMDQu
LjE3ZjQ2ZjdhMmQ4OTQ0MzhjM2I5YTBkZTY1YzZmMzFiODZjNjQ0MWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCkBAIC0yMTUsNiArMjE1LDI2IEBAIGlubGluZSB2b2lk
IEpJVDo6ZW1pdEp1bXBTbG93VG9Ib3RGb3JDaGVja3BvaW50KEp1bXAganVtcCkKICAgICBqdW1w
LmxpbmtUbyhpdGVyLT52YWx1ZSwgdGhpcyk7CiB9CiAKK2lubGluZSB2b2lkIEpJVDo6c2V0RmFz
dFBhdGhSZXN1bWVQb2ludCgpCit7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX2J5dGVjb2Rl
SW5kZXgsICJUaGlzIG1ldGhvZCBzaG91bGQgb25seSBiZSBjYWxsZWQgZHVyaW5nIGhvdC9jb2xk
IHBhdGggZ2VuZXJhdGlvbiwgc28gdGhhdCBtX2J5dGVjb2RlSW5kZXggaXMgc2V0Iik7CisgICAg
YXV0byByZXN1bHQgPSBtX2Zhc3RQYXRoUmVzdW1lTGFiZWxzLmFkZChtX2J5dGVjb2RlSW5kZXgs
IGxhYmVsKCkpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7
Cit9CisKK2lubGluZSBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgSklUOjpmYXN0UGF0aFJlc3VtZVBv
aW50KCkgY29uc3QKK3sKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG1fYnl0ZWNvZGVJbmRleCwg
IlRoaXMgbWV0aG9kIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBkdXJpbmcgaG90L2NvbGQgcGF0aCBn
ZW5lcmF0aW9uLCBzbyB0aGF0IG1fYnl0ZWNvZGVJbmRleCBpcyBzZXQiKTsKKyAgICAvLyBMb2Nh
dGlvbiBzZXQgYnkgc2V0RmFzdFBhdGhSZXN1bWVQb2ludAorICAgIGF1dG8gaXRlciA9IG1fZmFz
dFBhdGhSZXN1bWVMYWJlbHMuZmluZChtX2J5dGVjb2RlSW5kZXgpOworICAgIGlmIChpdGVyICE9
IG1fZmFzdFBhdGhSZXN1bWVMYWJlbHMuZW5kKCkpCisgICAgICAgIHJldHVybiBpdGVyLT52YWx1
ZTsKKyAgICAvLyBOZXh0IGluc3RydWN0aW9uIGluIHNlcXVlbmNlCisgICAgY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiA9IG1fdW5saW5rZWRDb2RlQmxvY2stPmluc3RydWN0
aW9ucygpLmF0KG1fYnl0ZWNvZGVJbmRleCkucHRyKCk7CisgICAgcmV0dXJuIG1fbGFiZWxzW21f
Ynl0ZWNvZGVJbmRleC5vZmZzZXQoKSArIGN1cnJlbnRJbnN0cnVjdGlvbi0+c2l6ZSgpXTsKK30K
KworCiBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjphZGRTbG93Q2FzZShKdW1wIGp1bXApCiB7CiAg
ICAgQVNTRVJUKG1fYnl0ZWNvZGVJbmRleCk7IC8vIFRoaXMgbWV0aG9kIHNob3VsZCBvbmx5IGJl
IGNhbGxlZCBkdXJpbmcgaG90L2NvbGQgcGF0aCBnZW5lcmF0aW9uLCBzbyB0aGF0IG1fYnl0ZWNv
ZGVJbmRleCBpcyBzZXQuCkBAIC0zMjksMTEgKzM0OSw2IEBAIEFMV0FZU19JTkxJTkUgZG91Ymxl
IEpJVDo6Z2V0T3BlcmFuZENvbnN0YW50RG91YmxlKFZpcnR1YWxSZWdpc3RlciBzcmMpCiB9CiAj
ZW5kaWYKIAotQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6ZW1pdEluaXRSZWdpc3RlcihWaXJ0dWFs
UmVnaXN0ZXIgZHN0KQotewotICAgIHN0b3JlVHJ1c3RlZFZhbHVlKGpzVW5kZWZpbmVkKCksIGFk
ZHJlc3NGb3IoZHN0KSk7Ci19Ci0KIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRHZXRWaXJ0
dWFsUmVnaXN0ZXIoVmlydHVhbFJlZ2lzdGVyIHNyYywgSlNWYWx1ZVJlZ3MgZHN0KQogewogICAg
IEFTU0VSVChtX2J5dGVjb2RlSW5kZXgpOyAvLyBUaGlzIG1ldGhvZCBzaG91bGQgb25seSBiZSBj
YWxsZWQgZHVyaW5nIGhvdC9jb2xkIHBhdGggZ2VuZXJhdGlvbiwgc28gdGhhdCBtX2J5dGVjb2Rl
SW5kZXggaXMgc2V0LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGNvZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5k
ZXggNGM4NjMxNDlhZGI5YzkzMDAzNDk4ODcxNzExMWMwMjQ5NzM1ZjNmZi4uMGIzYjVmY2Q5M2Fi
MTJlZDQ0MDYyZTJlYmVlNjhjODZmNGRmZjJlZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wY29kZXMuY3BwCkBAIC0xMjUzLDEwICsxMjUzLDEyIEBAIHZvaWQgSklUOjplbWl0X29w
X2VudGVyKGNvbnN0IEluc3RydWN0aW9uKikKICAgICAvLyBvYmplY3QgbGlmZXRpbWUgYW5kIGlu
Y3JlYXNpbmcgR0MgcHJlc3N1cmUuCiAgICAgc2l6ZV90IGNvdW50ID0gbV91bmxpbmtlZENvZGVC
bG9jay0+bnVtVmFycygpOwogI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICBmb3Ig
KHNpemVfdCBqID0gQ29kZUJsb2NrOjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0
dWFsUmVnaXN0ZXJzKCk7IGogPCBjb3VudDsgKytqKQotICAgICAgICBlbWl0SW5pdFJlZ2lzdGVy
KHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGopKTsKKyAgICBzaXplX3QgZmlyc3QgPSBDb2RlQmxv
Y2s6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKTsKKyAg
ICBpZiAoZmlyc3QgPCBjb3VudCkKKyAgICAgICAgbW92ZVRydXN0ZWRWYWx1ZShqc1VuZGVmaW5l
ZCgpLCBqc1JlZ1QxMCk7CisgICAgZm9yIChzaXplX3QgaiA9IGZpcnN0OyBqIDwgY291bnQ7ICsr
aikKKyAgICAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2Nh
bChqKSwganNSZWdUMTApOwogCi0gICAgCiAgICAgbG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFt
ZVNsb3Q6OmNvZGVCbG9jayksIHJlZ1QwKTsKICAgICBlbWl0V3JpdGVCYXJyaWVyKHJlZ1QwKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vz
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApp
bmRleCAxMTRhNzRkNGU0OTEzNzZkY2M1MjVlZDIxNWQxMTljZTUwNzU2ZmE1Li5jYWM0MGNlZDgy
YmQ5NzcyOTY1ZGVlYWExMDkzY2M0NWYyOWQyOTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApAQCAtODksNiArODksNyBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiAgICAgICAgIGFkZFNsb3dDYXNlKCk7CiAgICAgICAgIG1fZ2V0QnlWYWxzLmFwcGVuZChn
ZW4pOwogCisgICAgICAgIHNldEZhc3RQYXRoUmVzdW1lUG9pbnQoKTsKICAgICAgICAgZW1pdFZh
bHVlUHJvZmlsaW5nU2l0ZShieXRlY29kZSwgcmVzdWx0SlNSKTsKICAgICAgICAgZW1pdFB1dFZp
cnR1YWxSZWdpc3Rlcihkc3QsIHJlc3VsdEpTUik7CiAgICAgfQpAQCAtMTAwLDggKzEwMSw2IEBA
IHZvaWQgSklUOjpnZW5lcmF0ZUdldEJ5VmFsU2xvd0Nhc2UoY29uc3QgT3Bjb2RlVHlwZSYgYnl0
ZWNvZGUsIFZlY3RvcjxTbG93Q2FzZUVuCiAgICAgaWYgKCFoYXNBbnlTbG93Q2FzZXMoaXRlcikp
CiAgICAgICAgIHJldHVybjsKIAotICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5t
X2RzdDsKLQogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKICAgICBKSVRHZXRCeVZhbEdl
bmVyYXRvciYgZ2VuID0gbV9nZXRCeVZhbHNbbV9nZXRCeVZhbEluZGV4KytdOwpAQCAtMTIyLDEw
ICsxMjEsOCBAQCB2b2lkIEpJVDo6Z2VuZXJhdGVHZXRCeVZhbFNsb3dDYXNlKGNvbnN0IE9wY29k
ZVR5cGUmIGJ5dGVjb2RlLCBWZWN0b3I8U2xvd0Nhc2VFbgogICAgIGxvYWRHbG9iYWxPYmplY3Qo
Z2xvYmFsT2JqZWN0R1BSKTsKICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5m
b0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKICAgICBtYXRlcmlhbGl6ZVBvaW50ZXJJbnRv
TWV0YWRhdGEoYnl0ZWNvZGUsIE9wY29kZVR5cGU6Ok1ldGFkYXRhOjpvZmZzZXRPZkFycmF5UHJv
ZmlsZSgpLCBwcm9maWxlR1BSKTsKLSAgICBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGU8U2xvd09w
ZXJhdGlvbj4oCi0gICAgICAgIGJ5dGVjb2RlLAorICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJh
dGlvbj4oCiAgICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpv
ZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAgIGRzdCwKICAgICAgICAgZ2xvYmFsT2Jq
ZWN0R1BSLCBzdHViSW5mb0dQUiwgcHJvZmlsZUdQUiwgYXJnM0pTUiwgYXJnNEpTUik7CiAjZWxz
ZQogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CkBAIC0xNDgsOSArMTQ1LDYgQEAgdm9pZCBKSVQ6
OmdlbmVyYXRlR2V0QnlWYWxTbG93Q2FzZShjb25zdCBPcGNvZGVUeXBlJiBieXRlY29kZSwgVmVj
dG9yPFNsb3dDYXNlRW4KICAgICBtYXRlcmlhbGl6ZVBvaW50ZXJJbnRvTWV0YWRhdGEoYnl0ZWNv
ZGUsIE9wY29kZVR5cGU6Ok1ldGFkYXRhOjpvZmZzZXRPZkFycmF5UHJvZmlsZSgpLCBwcm9maWxl
R1BSKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5
X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKICAg
ICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9y
KS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotCi0gICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0
ZShieXRlY29kZSwgcmV0dXJuVmFsdWVKU1IpOwotICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIo
ZHN0LCByZXR1cm5WYWx1ZUpTUik7CiAjZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1Mp
CiAKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7CkBA
IC0yMzEsNiArMjI1LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGFkZFNsb3dDYXNlKCk7CiAg
ICAgbV9nZXRCeVZhbHMuYXBwZW5kKGdlbik7CiAKKyAgICBzZXRGYXN0UGF0aFJlc3VtZVBvaW50
KCk7CiAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShieXRlY29kZSwgcmVzdWx0SlNSKTsKICAg
ICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgcmVzdWx0SlNSKTsKIH0KQEAgLTIzOCwxNSAr
MjMzLDEzIEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfcHJp
dmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgQVNTRVJUKGhhc0FueVNsb3dD
YXNlcyhpdGVyKSk7Ci0gICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8
T3BHZXRQcml2YXRlTmFtZT4oKTsKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUu
bV9kc3Q7Ci0KICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCiAgICAgSklUR2V0QnlWYWxH
ZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlWYWxzW21fZ2V0QnlWYWxJbmRleCsrXTsKICAgICBMYWJl
bCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKIAogI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5L
UykKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldFByaXZh
dGVOYW1lPigpOwogICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25H
ZXRQcml2YXRlTmFtZU9wdGltaXplKTsKICAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVj
dEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7CiAgICAgY29u
c3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVy
YXRpb24sIDE+KCk7CkBAIC0yNTcsMTIgKzI1MCwxMSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
Z2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBW
ZQogICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwg
c3R1YkluZm9HUFIpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9iYXNl
LCBiYXNlSlNSKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fcHJvcGVy
dHksIHByb3BlcnR5SlNSKTsKLSAgICBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGU8U2xvd09wZXJh
dGlvbj4oCi0gICAgICAgIGJ5dGVjb2RlLAorICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlv
bj4oCiAgICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZz
ZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAgIGRzdCwKICAgICAgICAgZ2xvYmFsT2JqZWN0
R1BSLCBzdHViSW5mb0dQUiwgYmFzZUpTUiwgcHJvcGVydHlKU1IpOwogI2Vsc2UKKyAgICBVTlVT
RURfUEFSQU0oY3VycmVudEluc3RydWN0aW9uKTsKICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwog
ICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwog
ICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5k
ZXgpOwpAQCAtMjc5LDExICsyNzEsOSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X3ByaXZh
dGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZQogICAgIGxv
YWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9H
UFIpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfcHJp
dmF0ZV9uYW1lX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkp
OwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5l
cmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0KLSAgICBlbWl0VmFsdWVQcm9maWxp
bmdTaXRlKGJ5dGVjb2RlLCByZXR1cm5WYWx1ZUpTUik7Ci0gICAgZW1pdFB1dFZpcnR1YWxSZWdp
c3Rlcihkc3QsIHJldHVyblZhbHVlSlNSKTsKICNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RI
VU5LUykKIAorICAgIHN0YXRpY19hc3NlcnQoQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cmVz
dWx0SlNSID09IHJldHVyblZhbHVlSlNSKTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNv
bGRQYXRoQmVnaW4sIENhbGwoKSk7CiB9CiAKQEAgLTExMzksOCArMTEyOSwxMCBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF90cnlfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiAgICAgZ2VuLmdlbmVyYXRlQmFzZWxpbmVEYXRhSUNGYXN0UGF0aCgqdGhpcywgc3R1
YkluZm9JbmRleCwgc3R1YkluZm9HUFIpOwogICAgIGFkZFNsb3dDYXNlKCk7CiAgICAgbV9nZXRC
eUlkcy5hcHBlbmQoZ2VuKTsKLSAgICAKKwogICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoYnl0
ZWNvZGUsIHJlc3VsdEpTUik7CisKKyAgICBzZXRGYXN0UGF0aFJlc3VtZVBvaW50KCk7CiAgICAg
ZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihyZXN1bHRWUmVnLCByZXN1bHRKU1IpOwogfQogCkBAIC0x
MTQ5LDcgKzExNDEsNiBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfdHJ5X2dldF9ieV9pZChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0bwogICAgIGxpbmtBbGxTbG93
Q2FzZXMoaXRlcik7CiAKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5h
czxPcFRyeUdldEJ5SWQ+KCk7Ci0gICAgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdFZSZWcgPSBieXRl
Y29kZS5tX2RzdDsKICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENv
ZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7CiAKICAgICBKSVRHZXRC
eUlkR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5SWRzW21fZ2V0QnlJZEluZGV4KytdOwpAQCAtMTE2
Nyw3ICsxMTU4LDYgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3RyeV9nZXRfYnlfaWQoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG8KICAgICBlbWl0R2V0VmlydHVh
bFJlZ2lzdGVyKGJ5dGVjb2RlLm1fYmFzZSwgYmFzZUpTUik7CiAgICAgY2FsbE9wZXJhdGlvbjxT
bG93T3BlcmF0aW9uPigKICAgICAgICAgQWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1
YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwKLSAgICAgICAgcmVzdWx0VlJlZywKICAg
ICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUpTUiwKICAgICAgICAgQ2Fj
aGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1f
dW5saW5rZWRDb2RlQmxvY2ssICppZGVudCkucmF3Qml0cygpKTsKICNlbHNlCkBAIC0xMTg4LDEw
ICsxMTc4LDkgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3RyeV9nZXRfYnlfaWQoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG8KICAgICBzdGF0aWNfYXNzZXJ0KHN0
ZDo6aXNfc2FtZTxkZWNsdHlwZShvcGVyYXRpb25UcnlHZXRCeUlkT3B0aW1pemUpLCBkZWNsdHlw
ZShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpPjo6dmFsdWUpOwogICAgIGVtaXROYWtlZE5lYXJD
YWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3Ip
LnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0
Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigp
KTsKLQotICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0VlJlZywgcmV0dXJuVmFsdWVH
UFIpOwogI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCisgICAgc3RhdGljX2Fz
c2VydChCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUiA9PSByZXR1cm5WYWx1ZUpT
Uik7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwog
fQogCkBAIC0xMjIzLDYgKzEyMTIsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfZGly
ZWN0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgYWRkU2xvd0Nh
c2UoKTsKICAgICBtX2dldEJ5SWRzLmFwcGVuZChnZW4pOwogCisgICAgc2V0RmFzdFBhdGhSZXN1
bWVQb2ludCgpOwogICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoYnl0ZWNvZGUsIHJlc3VsdEpT
Uik7CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihyZXN1bHRWUmVnLCByZXN1bHRKU1IpOwog
fQpAQCAtMTIzMiw3ICsxMjIyLDYgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZF9k
aXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmUKICAgICBsaW5r
QWxsU2xvd0Nhc2VzKGl0ZXIpOwogCiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVj
dGlvbi0+YXM8T3BHZXRCeUlkRGlyZWN0PigpOwotICAgIFZpcnR1YWxSZWdpc3RlciByZXN1bHRW
UmVnID0gYnl0ZWNvZGUubV9kc3Q7CiAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1f
dW5saW5rZWRDb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOwogCiAg
ICAgSklUR2V0QnlJZEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeUlkc1ttX2dldEJ5SWRJbmRleCsr
XTsKQEAgLTEyNDgsMTAgKzEyMzcsOCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lk
X2RpcmVjdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZQogICAgIGxv
YWRHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0R1BSKTsKICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1f
dW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKICAgICBlbWl0R2V0
VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fYmFzZSwgYmFzZUpTUik7Ci0gICAgY2FsbE9wZXJh
dGlvbldpdGhQcm9maWxlPFNsb3dPcGVyYXRpb24+KAotICAgICAgICBieXRlY29kZSwKKyAgICBj
YWxsT3BlcmF0aW9uPFNsb3dPcGVyYXRpb24+KAogICAgICAgICBBZGRyZXNzKHN0dWJJbmZvR1BS
LCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLAotICAgICAgICBy
ZXN1bHRWUmVnLAogICAgICAgICBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlSlNS
LAogICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVk
QnlDb2RlQmxvY2sobV91bmxpbmtlZENvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkpOwogI2Vs
c2UKQEAgLTEyNzIsMTEgKzEyNTksOSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lk
X2RpcmVjdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZQogICAgIHN0
YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWREaXJlY3RP
cHRpbWl6ZSksIGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk+Ojp2YWx1ZSk7CiAg
ICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV9pZF9wcmVw
YXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKICAgICBlbWl0TmFr
ZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dl
ZENvZGU8Tm9QdHJUYWc+KCkpOwotCi0gICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShieXRlY29k
ZSwgcmV0dXJuVmFsdWVKU1IpOwotICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0VlJl
ZywgcmV0dXJuVmFsdWVKU1IpOwogI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQog
CisgICAgc3RhdGljX2Fzc2VydChCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUiA9
PSByZXR1cm5WYWx1ZUpTUik7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJl
Z2luLCBDYWxsKCkpOwogfQogCkBAIC0xMzIwLDYgKzEzMDUsNyBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBh
ZGRTbG93Q2FzZSgpOwogICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CiAKKyAgICBzZXRGYXN0
UGF0aFJlc3VtZVBvaW50KCk7CiAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShieXRlY29kZSwg
cmVzdWx0SlNSKTsKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHJlc3VsdFZSZWcsIHJlc3Vs
dEpTUik7CiB9CkBAIC0xMzI5LDcgKzEzMTUsNiBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0
X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbAog
ICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcEdldEJ5SWQ+KCk7Ci0gICAgVmlydHVhbFJlZ2lzdGVyIHJlc3Vs
dFZSZWcgPSBieXRlY29kZS5tX2RzdDsKICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYo
bV91bmxpbmtlZENvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7CiAK
ICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5SWRzW21fZ2V0QnlJZEluZGV4
KytdOwpAQCAtMTM0NSwxMCArMTMzMCw4IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlf
aWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsCiAgICAg
bG9hZEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIpOwogICAgIGxvYWRDb25zdGFudChnZW4u
bV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwogICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9iYXNlLCBiYXNlSlNSKTsKLSAgICBjYWxsT3Bl
cmF0aW9uV2l0aFByb2ZpbGU8U2xvd09wZXJhdGlvbj4oCi0gICAgICAgIGJ5dGVjb2RlLAorICAg
IGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4oCiAgICAgICAgIEFkZHJlc3Moc3R1YkluZm9H
UFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAg
IHJlc3VsdFZSZWcsCiAgICAgICAgIGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VK
U1IsCiAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3du
ZWRCeUNvZGVCbG9jayhtX3VubGlua2VkQ29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSk7CiAj
ZWxzZQpAQCAtMTM2OCwxMSArMTM1MSw5IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlf
aWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsCiAgICAg
bW92ZShUcnVzdGVkSW1tUHRyKENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlm
aWVyT3duZWRCeUNvZGVCbG9jayhtX3VubGlua2VkQ29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMo
KSksIHByb3BlcnR5R1BSKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNs
b3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJU
YWc+KCkpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRp
b25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0KLSAgICBlbWl0VmFsdWVQ
cm9maWxpbmdTaXRlKGJ5dGVjb2RlLCByZXR1cm5WYWx1ZUpTUik7Ci0gICAgZW1pdFB1dFZpcnR1
YWxSZWdpc3RlcihyZXN1bHRWUmVnLCByZXR1cm5WYWx1ZUpTUik7CiAjZW5kaWYgLy8gRU5BQkxF
KEVYVFJBX0NUSV9USFVOS1MpCiAKKyAgICBzdGF0aWNfYXNzZXJ0KEJhc2VsaW5lR2V0QnlJZFJl
Z2lzdGVyczo6cmVzdWx0SlNSID09IHJldHVyblZhbHVlSlNSKTsKICAgICBnZW4ucmVwb3J0U2xv
d1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7CiB9CiAKQEAgLTE0MDksNiArMTM5MCw3
IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZF93aXRoX3RoaXMoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBhZGRTbG93Q2FzZSgpOwogICAgIG1fZ2V0QnlJ
ZHNXaXRoVGhpcy5hcHBlbmQoZ2VuKTsKIAorICAgIHNldEZhc3RQYXRoUmVzdW1lUG9pbnQoKTsK
ICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKGJ5dGVjb2RlLCByZXN1bHRKU1IpOwogICAgIGVt
aXRQdXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0VlJlZywgcmVzdWx0SlNSKTsKIH0KQEAgLTE0NTUs
NyArMTQzNyw2IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sCiAgICAgbGlua0FsbFNsb3dDYXNl
cyhpdGVyKTsKIAogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
R2V0QnlJZFdpdGhUaGlzPigpOwotICAgIFZpcnR1YWxSZWdpc3RlciByZXN1bHRWUmVnID0gYnl0
ZWNvZGUubV9kc3Q7CiAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fdW5saW5rZWRD
b2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOwogCiAgICAgSklUR2V0
QnlJZFdpdGhUaGlzR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5SWRzV2l0aFRoaXNbbV9nZXRCeUlk
V2l0aFRoaXNJbmRleCsrXTsKQEAgLTE0NzMsMTAgKzE0NTQsOCBAQCB2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uLAogICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJ
bmRleCwgc3R1YkluZm9HUFIpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUu
bV9iYXNlLCBiYXNlSlNSKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1f
dGhpc1ZhbHVlLCB0aGlzSlNSKTsKLSAgICBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGU8U2xvd09w
ZXJhdGlvbj4oCi0gICAgICAgIGJ5dGVjb2RlLAorICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJh
dGlvbj4oCiAgICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpv
ZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAgIHJlc3VsdFZSZWcsCiAgICAgICAgIGds
b2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VKU1IsIHRoaXNKU1IsCiAgICAgICAgIENh
Y2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayht
X3VubGlua2VkQ29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSk7CiAjZWxzZQpAQCAtMTQ5OCwx
MSArMTQ3Nyw5IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sCiAgICAgbW92ZShUcnVzdGVkSW1t
UHRyKENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVC
bG9jayhtX3VubGlua2VkQ29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSksIHByb3BlcnR5R1BS
KTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lk
X3dpdGhfdGhpc19wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigp
KTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2Vu
ZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotCi0gICAgZW1pdFZhbHVlUHJvZmls
aW5nU2l0ZShieXRlY29kZSwgcmV0dXJuVmFsdWVKU1IpOwotICAgIGVtaXRQdXRWaXJ0dWFsUmVn
aXN0ZXIocmVzdWx0VlJlZywgcmV0dXJuVmFsdWVKU1IpOwogI2VuZGlmIC8vIEVOQUJMRShFWFRS
QV9DVElfVEhVTktTKQogCisgICAgc3RhdGljX2Fzc2VydChCYXNlbGluZUdldEJ5SWRXaXRoVGhp
c1JlZ2lzdGVyczo6cmVzdWx0SlNSID09IHJldHVyblZhbHVlSlNSKTsKICAgICBnZW4ucmVwb3J0
U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7CiB9CiAKQEAgLTE3MDgsNiArMTY4
NSw3IEBAIHZvaWQgSklUOjplbWl0X29wX2luX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAgICAgYWRkU2xvd0Nhc2UoKTsKICAgICBtX2luQnlJZHMuYXBwZW5k
KGdlbik7CiAKKyAgICBzZXRGYXN0UGF0aFJlc3VtZVBvaW50KCk7CiAgICAgZW1pdFB1dFZpcnR1
YWxSZWdpc3RlcihyZXN1bHRWUmVnLCByZXN1bHRKU1IpOwogfQogCkBAIC0xNzE2LDcgKzE2OTQs
NiBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsbwogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7
CiAKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEluQnlJZD4o
KTsKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0VlJlZyA9IGJ5dGVjb2RlLm1fZHN0OwogICAg
IGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlm
aWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKIAogICAgIEpJVEluQnlJZEdlbmVyYXRvciYgZ2Vu
ID0gbV9pbkJ5SWRzW21faW5CeUlkSW5kZXgrK107CkBAIC0xNzM0LDcgKzE3MTEsNiBAQCB2b2lk
IEpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbiwgVmVjdG9yPFNsbwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUu
bV9iYXNlLCBiYXNlSlNSKTsKICAgICBjYWxsT3BlcmF0aW9uPFNsb3dPcGVyYXRpb24+KAogICAg
ICAgICBBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93
T3BlcmF0aW9uKCkpLAotICAgICAgICByZXN1bHRWUmVnLAogICAgICAgICBnbG9iYWxPYmplY3RH
UFIsIHN0dWJJbmZvR1BSLCBiYXNlSlNSLAogICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpj
cmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV91bmxpbmtlZENvZGVCbG9jaywg
KmlkZW50KS5yYXdCaXRzKCkpOwogI2Vsc2UKQEAgLTE3NTcsMTAgKzE3MzMsOSBAQCB2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfaW5fYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgVmVjdG9yPFNsbwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGRlY2x0eXBl
KG9wZXJhdGlvbkluQnlJZE9wdGltaXplKSwgZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZE9wdGlt
aXplKT46OnZhbHVlKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3df
b3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+
KCkpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25H
ZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0KLSAgICBlbWl0UHV0VmlydHVh
bFJlZ2lzdGVyKHJlc3VsdFZSZWcsIHJldHVyblZhbHVlR1BSKTsKICNlbmRpZiAvLyBFTkFCTEUo
RVhUUkFfQ1RJX1RIVU5LUykKIAorICAgIHN0YXRpY19hc3NlcnQoQmFzZWxpbmVJbkJ5SWRSZWdp
c3RlcnM6OnJlc3VsdEpTUiA9PSByZXR1cm5WYWx1ZUpTUik7CiAgICAgZ2VuLnJlcG9ydFNsb3dQ
YXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQogCkBAIC0xNzk2LDYgKzE3NzEsNyBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9pbl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKICAgICBhZGRTbG93Q2FzZSgpOwogICAgIG1faW5CeVZhbHMuYXBwZW5kKGdl
bik7CiAKKyAgICBzZXRGYXN0UGF0aFJlc3VtZVBvaW50KCk7CiAgICAgZW1pdFB1dFZpcnR1YWxS
ZWdpc3Rlcihkc3QsIHJlc3VsdEpTUik7CiB9CiAKQEAgLTE4MDQsNyArMTc4MCw2IEBAIHZvaWQg
SklUOjplbWl0U2xvd19vcF9pbl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbiwgVmVjdG9yPFNsCiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAogICAgIGF1
dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSW5CeVZhbD4oKTsKLSAgICBW
aXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CiAKICAgICBKSVRJbkJ5VmFsR2Vu
ZXJhdG9yJiBnZW4gPSBtX2luQnlWYWxzW21faW5CeVZhbEluZGV4KytdOwogCkBAIC0xODI1LDcg
KzE4MDAsNiBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfdmFsKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbAogICAgIGVtaXRHZXRWaXJ0dWFsUmVn
aXN0ZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSwgcHJvcGVydHlKU1IpOwogICAgIGNhbGxPcGVyYXRp
b248U2xvd09wZXJhdGlvbj4oCiAgICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVy
ZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAgIGRzdCwKICAgICAg
ICAgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgcHJvZmlsZUdQUiwgYmFzZUpTUiwgcHJv
cGVydHlKU1IpOwogI2Vsc2UKICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwpAQCAtMTg0OSwxMCAr
MTgyMyw5IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9pbl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsCiAgICAgc3RhdGljX2Fzc2VydChzdGQ6
OmlzX3NhbWU8ZGVjbHR5cGUob3BlcmF0aW9uSW5CeVZhbE9wdGltaXplKSwgZGVjbHR5cGUob3Bl
cmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSk+Ojp2YWx1ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwo
dm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJl
dGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJ
U3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsK
LQotICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCByZXR1cm5WYWx1ZUdQUik7CiAjZW5k
aWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKKyAgICBzdGF0aWNfYXNzZXJ0KEJhc2Vs
aW5lSW5CeVZhbFJlZ2lzdGVyczo6cmVzdWx0SlNSID09IHJldHVyblZhbHVlSlNSKTsKICAgICBn
ZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7CiB9CiAKQEAgLTE4
ODEsMTAgKzE4NTQsMTEgQEAgdm9pZCBKSVQ6OmVtaXRIYXNQcml2YXRlKFZpcnR1YWxSZWdpc3Rl
ciBkc3QsIFZpcnR1YWxSZWdpc3RlciBiYXNlLCBWaXJ0dWFsUmVnaXMKICAgICBhZGRTbG93Q2Fz
ZSgpOwogICAgIG1faW5CeVZhbHMuYXBwZW5kKGdlbik7CiAKKyAgICBzZXRGYXN0UGF0aFJlc3Vt
ZVBvaW50KCk7CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIHJlc3VsdEpTUik7CiB9
CiAKLXZvaWQgSklUOjplbWl0SGFzUHJpdmF0ZVNsb3coVmlydHVhbFJlZ2lzdGVyIGRzdCwgVmly
dHVhbFJlZ2lzdGVyIGJhc2UsIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eSwgQWNjZXNzVHlwZSB0
eXBlKQordm9pZCBKSVQ6OmVtaXRIYXNQcml2YXRlU2xvdyhWaXJ0dWFsUmVnaXN0ZXIgYmFzZSwg
VmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5LCBBY2Nlc3NUeXBlIHR5cGUpCiB7CiAgICAgVU5VU0VE
X1BBUkFNKGJhc2UpOwogICAgIFVOVVNFRF9QQVJBTShwcm9wZXJ0eSk7CkBAIC0xOTA2LDcgKzE4
ODAsNiBAQCB2b2lkIEpJVDo6ZW1pdEhhc1ByaXZhdGVTbG93KFZpcnR1YWxSZWdpc3RlciBkc3Qs
IFZpcnR1YWxSZWdpc3RlciBiYXNlLCBWaXJ0dWFsUgogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXIocHJvcGVydHksIHByb3BlcnR5SlNSKTsKICAgICBjYWxsT3BlcmF0aW9uPFNsb3dPcGVyYXRp
b24+KAogICAgICAgICBBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zm
c2V0T2ZTbG93T3BlcmF0aW9uKCkpLAotICAgICAgICBkc3QsCiAgICAgICAgIGdsb2JhbE9iamVj
dEdQUiwgc3R1YkluZm9HUFIsIGJhc2VKU1IsIHByb3BlcnR5SlNSKTsKICNlbHNlCiAgICAgVk0m
IHZtID0gdGhpcy0+dm0oKTsKQEAgLTE5MjcsMTAgKzE5MDAsOSBAQCB2b2lkIEpJVDo6ZW1pdEhh
c1ByaXZhdGVTbG93KFZpcnR1YWxSZWdpc3RlciBkc3QsIFZpcnR1YWxSZWdpc3RlciBiYXNlLCBW
aXJ0dWFsUgogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKG9wZXJhdGlv
bkhhc1ByaXZhdGVCcmFuZE9wdGltaXplKSwgZGVjbHR5cGUob3BlcmF0aW9uR2V0UHJpdmF0ZU5h
bWVPcHRpbWl6ZSk+Ojp2YWx1ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1
YihzbG93X29wX2dldF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2Vk
Q29kZTxOb1B0clRhZz4oKSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1Yihj
aGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLQotICAg
IGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCByZXR1cm5WYWx1ZUdQUik7CiAjZW5kaWYgLy8g
RU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKKyAgICBzdGF0aWNfYXNzZXJ0KEJhc2VsaW5lSW5C
eVZhbFJlZ2lzdGVyczo6cmVzdWx0SlNSID09IHJldHVyblZhbHVlSlNSKTsKICAgICBnZW4ucmVw
b3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7CiB9CiAKQEAgLTE5NDUsNyAr
MTkxNyw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9uYW1lKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlCiAgICAgbGlua0FsbFNsb3dDYXNlcyhp
dGVyKTsKIAogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSGFz
UHJpdmF0ZU5hbWU+KCk7Ci0gICAgZW1pdEhhc1ByaXZhdGVTbG93KGJ5dGVjb2RlLm1fZHN0LCBi
eXRlY29kZS5tX2Jhc2UsIGJ5dGVjb2RlLm1fcHJvcGVydHksIEFjY2Vzc1R5cGU6Okhhc1ByaXZh
dGVOYW1lKTsKKyAgICBlbWl0SGFzUHJpdmF0ZVNsb3coYnl0ZWNvZGUubV9iYXNlLCBieXRlY29k
ZS5tX3Byb3BlcnR5LCBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlTmFtZSk7CiB9CiAKIHZvaWQgSklU
OjplbWl0X29wX2hhc19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCkBAIC0xOTU5LDcgKzE5MzEsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaGFz
X3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVgog
ICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcEhhc1ByaXZhdGVCcmFuZD4oKTsKLSAgICBlbWl0SGFzUHJpdmF0
ZVNsb3coYnl0ZWNvZGUubV9kc3QsIGJ5dGVjb2RlLm1fYmFzZSwgYnl0ZWNvZGUubV9icmFuZCwg
QWNjZXNzVHlwZTo6SGFzUHJpdmF0ZUJyYW5kKTsKKyAgICBlbWl0SGFzUHJpdmF0ZVNsb3coYnl0
ZWNvZGUubV9iYXNlLCBieXRlY29kZS5tX2JyYW5kLCBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlQnJh
bmQpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9yZXNvbHZlX3Njb3BlKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC0yOTIzLDYgKzI4OTUsNyBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9lbnVtZXJhdG9yX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKIAogICAgIGRvbmVDYXNlcy5saW5rKHRoaXMpOwogCisgICAgc2V0RmFzdFBh
dGhSZXN1bWVQb2ludCgpOwogICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoYnl0ZWNvZGUsIHJl
dHVyblZhbHVlSlNSKTsKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgcmV0dXJuVmFs
dWVKU1IpOwogfQpAQCAtMzAzMSwxMyArMzAwNCwyMSBAQCB2b2lkIEpJVDo6ZW1pdFdyaXRlQmFy
cmllcihWaXJ0dWFsUmVnaXN0ZXIgb3duZXIsIFZpcnR1YWxSZWdpc3RlciB2YWx1ZSwgV3JpdGVC
YQogICAgICAgICB2YWx1ZU5vdENlbGwgPSBicmFuY2hJZk5vdENlbGwocmVnVDApOwogICAgIH0K
IAotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIob3duZXIsIGpzUmVnVDEwKTsKKyAgICBjb25z
dGV4cHIgR1BSUmVnIGFyZzFHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxkZWNsdHlwZShvcGVy
YXRpb25Xcml0ZUJhcnJpZXJTbG93UGF0aCksIDE+KCk7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAg
ICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdG1wSlNSIHsgYXJnMUdQUiB9OworI2VsaWYgVVNFKEpT
VkFMVUUzMl82NCkKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdG1wSlNSIHsgcmVnVDAsIGFy
ZzFHUFIgfTsKKyNlbmRpZgorICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKHJlZ1QwLCBhcmcx
R1BSLCByZWdUMikpOworCisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihvd25lciwgdG1wSlNS
KTsKICAgICBKdW1wIG93bmVyTm90Q2VsbDsKICAgICBpZiAobW9kZSA9PSBTaG91bGRGaWx0ZXJC
YXNlIHx8IG1vZGUgPT0gU2hvdWxkRmlsdGVyQmFzZUFuZFZhbHVlKQotICAgICAgICBvd25lck5v
dENlbGwgPSBicmFuY2hJZk5vdENlbGwoanNSZWdUMTApOworICAgICAgICBvd25lck5vdENlbGwg
PSBicmFuY2hJZk5vdENlbGwodG1wSlNSKTsKIAotICAgIEp1bXAgb3duZXJJc1JlbWVtYmVyZWRP
ckluRWRlbiA9IGJhcnJpZXJCcmFuY2godm0oKSwganNSZWdUMTAucGF5bG9hZEdQUigpLCByZWdU
Mik7Ci0gICAgY2FsbE9wZXJhdGlvbk5vRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uV3JpdGVCYXJy
aWVyU2xvd1BhdGgsICZ2bSgpLCBqc1JlZ1QxMC5wYXlsb2FkR1BSKCkpOworICAgIEp1bXAgb3du
ZXJJc1JlbWVtYmVyZWRPckluRWRlbiA9IGJhcnJpZXJCcmFuY2godm0oKSwgdG1wSlNSLnBheWxv
YWRHUFIoKSwgcmVnVDIpOworICAgIGNhbGxPcGVyYXRpb25Ob0V4Y2VwdGlvbkNoZWNrKG9wZXJh
dGlvbldyaXRlQmFycmllclNsb3dQYXRoLCAmdm0oKSwgdG1wSlNSLnBheWxvYWRHUFIoKSk7CiAg
ICAgb3duZXJJc1JlbWVtYmVyZWRPckluRWRlbi5saW5rKHRoaXMpOwogCiAgICAgaWYgKG1vZGUg
PT0gU2hvdWxkRmlsdGVyQmFzZSB8fCBtb2RlID09IFNob3VsZEZpbHRlckJhc2VBbmRWYWx1ZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445266</attachid>
            <date>2021-11-29 04:33:26 -0800</date>
            <delta_ts>2021-11-30 08:03:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233474-20211129123324.patch</filename>
            <type>text/plain</type>
            <size>66327</size>
            <attacher name="Geza Lore">glore</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MjA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NzNlYTU5NGI3NDViMzhkNGFlZWQ4YTZmZWZhODEwM2FlMmM0OTY2Li45ODcxOTBmNjVlZjI5NDY4
YzE1YThmYTY1YjFhZTVlZWI4NjI5NGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTkgQEAKKzIwMjEtMTEtMjQgIEdlemEgTG9yZSAgPGdsb3JlQGlnYWxpYS5jb20+CisK
KyAgICAgICAgW0pTQ10gR2VuZXJhdGVkIGNvZGUgc2l6ZSByZWR1Y3Rpb25zIGZvciBiYXNlbGlu
ZSBKSVQgKGFsbCBhcmNoaXRlY3R1cmVzKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNDc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgZmV3IGltcHJvdmVtZW50
cyB0aGF0IHJlZHVjZSB0aGUgZ2VuZXJhdGVkCisgICAgICAgIGNvZGUgc2l6ZS4KKworICAgICAg
ICBUYXJnZXQgaW5kZXBlbmRlbnQgaW1wcm92ZW1lbnRzIHRvIHRoZSBCYXNlbGluZSBKSVQ6CisK
KyAgICAgICAgMS4gU29tZSBieXRlY29kZXMgdGhhdCBhcmUgdmVyeSBmcmVxdWVudCAoZS5nLjog
Z2V0X2J5X2lkLCBjYWxsKSBzaGFyZQorICAgICAgICB0aGUgc2FtZSBpbnN0cnVjdGlvbnMgYXQg
dGhlIHRhaWwgZW5kIG9mIHRoZSBmYXN0IGFuZCBzbG93IHBhdGhzLgorICAgICAgICBJbnN0ZWFk
IG9mIGR1cGxpY2F0aW5nIHRoZXNlIGluIHRoZSBzbG93IHBhdGgsIHRoZW4gYnJhbmNoIHRvIHRo
ZSBuZXh0CisgICAgICAgIHNlcXVlbnRpYWwgYnl0ZWNvZGUgb24gdGhlIGZhc3QgcGF0aCwgbWFr
ZSB0aGUgc2xvdyBwYXRoIGJyYW5jaCB0byBhbmQKKyAgICAgICAgcmV1c2UgdGhlc2UgY29tbW9u
IGluc3RydWN0aW9ucywgd2hpY2ggdGhlbiBuYXR1cmFsbHkgZmFsbCB0aHJvdWdoIHRvCisgICAg
ICAgIHRoZSBuZXh0IHNlcXVlbnRpYWwgYnl0ZWNvZGUuCisKKyAgICAgICAgMi4gTWlub3IgdHdl
YWtzIGluIGEgZmV3IHBsYWNlcyB0byByZW1vdmUgcmVkdW5kYW50IHJlbG9hZGluZyBvZgorICAg
ICAgICBpbW1lZGlhdGVzIGFuZCByZW1vdmUgcmVkdW5kYW50IG1vdmVzLgorCisgICAgICAgIDMu
IFJlbW92ZSBhIHNtYWxsIG51bWJlciBvZiByZWR1bmRhbnQgdW5jb25kaXRpb25hbCBicmFuY2hl
cyBmcm9tIHNvbWUKKyAgICAgICAgRGF0YUlDIGZhc3QgcGF0aHMuCisKKyAgICAgICAgQVJNdjcv
VGh1bWItMiBzcGVjaWZpYyBpbXByb3ZlbWVudHM6CisKKyAgICAgICAgNC4gQWRkIGFzc2VtYmxl
ciBzdXBwb3J0IGZvciBMRFJEIGFuZCBTVFJEIChsb2FkL3N0b3JlIGEgcGFpciBvZgorICAgICAg
ICAzMi1iaXQgR1BScykgYW5kIHVzZSB0aGVtIHRocm91Z2hvdXQgdmlhIGxvYWRWYWx1ZS9zdG9y
ZVZhbHVlLiBUaGlzCisgICAgICAgIHlpZWxkcyBkZW5zZXIgY29kZSBhcyBpdCBvZnRlbiBlbGlt
aW5hdGVzIHJlcGVhdGVkIHRlbXBvcmFyeSByZWdpc3RlcgorICAgICAgICBzZXR1cHMgKGVzcGVj
aWFsbHkgZm9yIGEgQmFzZUluZGV4IGFjY2VzcyksIGFuZCBhbHNvIGR1ZSB0byBwb2ludCA0Cisg
ICAgICAgIGJlbG93LiBUaGlzIGlzIGFsc28gcG90ZW50aWFsbHkgYSBwZXJmb3JtYW5jZSBpbXBy
b3ZlbWVudCBvbgorICAgICAgICBtaWNyby1hcmNoaXRlY3R1cmVzIHdpdGggYSA2NC1iaXQgTFNV
IGRhdGEtcGF0aC4KKworICAgICAgICA1LiBJbnN0cnVjdGlvbnMgdXNpbmcgb25seSByMC1yNyBh
cyBvcGVyYW5kcyBjYW4gb2Z0ZW4gdXNlIGEgc2hvcnQsCisgICAgICAgIDE2LWJpdCBlbmNvZGlu
ZyBpbiBUaHVtYi0yLCBzbyBwcmVmZXIgdG8gdXNlIGxvdyBvcmRlciByZWdpc3RlcnMKKyAgICAg
ICAgYXMgdGVtcG9yYXJpZXMgd2hlcmV2ZXIgcG9zc2libGUuCisKKyAgICAgICAgVGhlIG5ldCBl
ZmZlY3Qgb2YgdGhpcyBwYXRjaCBpcyB0aGF0IHRoZSBlbWl0dGVkIGJhc2VsaW5lIGNvZGUgZHVy
aW5nCisgICAgICAgIGEgcnVuIG9mIEpldFN0cmVhbTIgaXMgfjYuNiUgc21hbGxlciBvbiB4ODZf
NjQsIH41LjElIHNtYWxsZXIgb24KKyAgICAgICAgQVJNNjQsIGFuZCB+MjQlIHNtYWxsZXIgb24g
QVJNdjcvVGh1bWItMi4gT24gQVJNdjcvVGh1bWItMiwgREZHIGNvZGUKKyAgICAgICAgaXMgYWxz
byB+NS4zJSBzbWFsbGVyLCB3aGlsZSBvbiBvdGhlciBhcmNoaXRlY3R1cmVzIHRoZSBERkcgY29k
ZSBpcworICAgICAgICB1bmFmZmVjdGVkLgorCisgICAgICAgIE9uIEFSTXY3L1RodW1iLTIsIHRo
aXMgcGF0Y2ggYWxzbyB5aWVsZHMgYW4gfjIlIGltcHJvdmVtZW50IGluCisgICAgICAgIEpldFN0
cmVhbTIgc2NvcmVzIG9uIG15IHRlc3QgbWFjaGluZS4KKworICAgICAgICAqIGFzc2VtYmxlci9B
Uk12N0Fzc2VtYmxlci5oOgorICAgICAgICAoSlNDOjpBUk12N0Fzc2VtYmxlcjo6bGRyZCk6Cisg
ICAgICAgIChKU0M6OkFSTXY3QXNzZW1ibGVyOjpzdHJkKToKKyAgICAgICAgKEpTQzo6QVJNdjdB
c3NlbWJsZXI6OkFSTUluc3RydWN0aW9uRm9ybWF0dGVyOjp0d29Xb3JkT3AxMlJlZzRSZWc0UmVn
NEltbTgpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlcjo6YWRkUHRyKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJBUk12Ny5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3OjpiZXN0
VGVtcFJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6c2NyYXRj
aFJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6YWRkMzIpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3OjpzdWIzMik6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OmxvYWRQYWlyMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlckFSTXY3OjpzdG9yZTMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12
Nzo6c3RvcmVQYWlyMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3Ojpjb21w
YXJlMzJBbmRTZXRGbGFncyk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OnRl
c3QzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OmJyYW5jaDMyKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6ZmFySnVtcCk6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OmNhbGwpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ckFSTXY3Ojpjb21wYXJlMzIpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1J
UFMuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpsb2FkUGFpcjMyKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpzdG9yZVBhaXIzMik6CisgICAgICAgICog
aml0L0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OnN0
b3JlVmFsdWUpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmxvYWRWYWx1ZSk6Cisg
ICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVT
bG93Q2FzZXMpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUQ2FsbC5j
cHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUNhbGxFdmFsKToKKyAgICAgICAgKEpTQzo6
SklUOjpjb21waWxlQ2FsbEV2YWxTbG93Q2FzZSk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGls
ZU9wQ2FsbCk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZU9wQ2FsbFNsb3dDYXNlKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9vcGVuKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9uZXh0KToKKyAgICAgICAgKiBqaXQvSklUSW5s
aW5lQ2FjaGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpnZW5lcmF0ZUdldEJ5SWRJbmxp
bmVBY2Nlc3MpOgorICAgICAgICAoSlNDOjpKSVRQdXRCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUJh
c2VsaW5lRGF0YUlDRmFzdFBhdGgpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVy
YXRvci5oOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpJVDo6
c2V0RmFzdFBhdGhSZXN1bWVQb2ludCk6CisgICAgICAgIChKU0M6OkpJVDo6ZmFzdFBhdGhSZXN1
bWVQb2ludCBjb25zdCk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfZW50ZXIpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vz
cy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKToKKyAgICAgICAg
KEpTQzo6SklUOjpnZW5lcmF0ZUdldEJ5VmFsU2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfZ2V0X3ByaXZhdGVfbmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3df
b3BfZ2V0X3ByaXZhdGVfbmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90cnlfZ2V0
X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF90cnlfZ2V0X2J5X2lkKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV9pZF9kaXJlY3QpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZF9kaXJlY3QpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfZ2V0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9n
ZXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX3dpdGhfdGhp
cyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pbl9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdFNsb3dfb3BfaW5fYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaW5f
YnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9pbl9ieV92YWwpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRIYXNQcml2YXRlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
SGFzUHJpdmF0ZVNsb3cpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2hhc19wcml2
YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2hhc19wcml2YXRlX2Jy
YW5kKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2VudW1lcmF0b3JfZ2V0X2J5X3ZhbCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFdyaXRlQmFycmllcik6CisKIDIwMjEtMTEtMjkgIEdl
emEgTG9yZSAgPGdsb3JlQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0pTQ10gVW5pZnkgbW9zdCBC
YXNlbGluZSBvcHMgYmV0d2VlbiBKU1ZBTFVFNjQgYW5kIEpTVkFMVUUzMl82NApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5oCmluZGV4IGIxMjY1
Mzg1YTVkNzM5NjdlZDVlOTA5NDgyMjA5ZWRkYjRmNDI0MjUuLjQ2OTg5YWViOGRhNzEzYjlkYzBm
MzY5ZDcwMDZlYmIyN2I5ZTMwNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL0FSTXY3QXNzZW1ibGVyLmgKQEAgLTU2Miw2ICs1NjIsOCBAQCBwcml2YXRlOgogICAg
IHR5cGVkZWYgZW51bSB7CiAgICAgICAgIE9QX0JfVDEgICAgICAgICA9IDB4RDAwMCwKICAgICAg
ICAgT1BfQl9UMiAgICAgICAgID0gMHhFMDAwLAorICAgICAgICBPUF9TVFJEX2ltbV9UMSAgPSAw
eEU4NDAsCisgICAgICAgIE9QX0xEUkRfaW1tX1QxICA9IDB4RTg1MCwKICAgICAgICAgT1BfUE9Q
X1QyICAgICAgID0gMHhFOEJELAogICAgICAgICBPUF9QVVNIX1QyICAgICAgPSAweEU5MkQsCiAg
ICAgICAgIE9QX0FORF9yZWdfVDIgICA9IDB4RUEwMCwKQEAgLTEyNDAsNiArMTI0Miw0NyBAQCBw
dWJsaWM6CiAgICAgICAgICAgICBtX2Zvcm1hdHRlci50d29Xb3JkT3AxMlJlZzRGb3VyRm91cnMo
T1BfTERSU0hfcmVnX1QyLCBybiwgRm91ckZvdXJzKHJ0LCAwLCBzaGlmdCwgcm0pKTsKICAgICB9
CiAKKyAgICAvLyBJZiBpbmRleCBpcyBzZXQsIHRoaXMgaXMgYSByZWd1bGFyIG9mZnNldCBvciBh
IHByZS1pbmRleGVkIGxvYWQ7CisgICAgLy8gaWYgaW5kZXggaXMgbm90IHNldCB0aGVuIGl0IGlz
IGEgcG9zdC1pbmRleCBsb2FkLgorICAgIC8vCisgICAgLy8gSWYgd2JhY2sgaXMgc2V0IHJuIGlz
IHVwZGF0ZWQgLSB0aGlzIGlzIGEgcHJlIG9yIHBvc3QgaW5kZXggbG9hZCwKKyAgICAvLyBpZiB3
YmFjayBpcyBub3Qgc2V0IHRoaXMgaXMgYSByZWd1bGFyIG9mZnNldCBtZW1vcnkgYWNjZXNzLgor
ICAgIC8vCisgICAgLy8gKC0xMDIwIDw9IG9mZnNldCA8PSAxMDIwKQorICAgIC8vIG9mZnNldCAl
IDQgPT0gMAorICAgIC8vIF9yZWcgPSBSRUdbcm5dCisgICAgLy8gX3RtcCA9IF9yZWcgKyBvZmZz
ZXQKKyAgICAvLyBfYWRkciA9IGluZGV4ID8gX3RtcCA6IF9yZWcKKyAgICAvLyBSRUdbcnRdID0g
TUVNW19hZGRyXQorICAgIC8vIFJFR1tydDJdID0gTUVNW19hZGRyICsgNF0KKyAgICAvLyBpZiAo
d2JhY2spIFJFR1tybl0gPSBfdG1wCisgICAgQUxXQVlTX0lOTElORSB2b2lkIGxkcmQoUmVnaXN0
ZXJJRCBydCwgUmVnaXN0ZXJJRCBydDIsIFJlZ2lzdGVySUQgcm4sIGludCBvZmZzZXQsIGJvb2wg
aW5kZXgsIGJvb2wgd2JhY2spCisgICAgeworICAgICAgICBBU1NFUlQoIUJhZFJlZyhydCkpOwor
ICAgICAgICBBU1NFUlQoIUJhZFJlZyhydDIpKTsKKyAgICAgICAgQVNTRVJUKHJuICE9IEFSTVJl
Z2lzdGVyczo6cGMpOworICAgICAgICBBU1NFUlQocnQgIT0gcnQyKTsKKyAgICAgICAgQVNTRVJU
KGluZGV4IHx8IHdiYWNrKTsKKyAgICAgICAgQVNTRVJUKCF3YmFjayB8IChydCAhPSBybikpOwor
ICAgICAgICBBU1NFUlQoIXdiYWNrIHwgKHJ0MiAhPSBybikpOworICAgICAgICBBU1NFUlQoIShv
ZmZzZXQgJiAweDMpKTsKKworICAgICAgICBib29sIGFkZCA9IHRydWU7CisgICAgICAgIGlmIChv
ZmZzZXQgPCAwKSB7CisgICAgICAgICAgICBhZGQgPSBmYWxzZTsKKyAgICAgICAgICAgIG9mZnNl
dCA9IC1vZmZzZXQ7CisgICAgICAgIH0KKyAgICAgICAgb2Zmc2V0ID4+PSAyOworICAgICAgICBB
U1NFUlQoIShvZmZzZXQgJiB+MHhmZikpOworCisgICAgICAgIHVpbnQxNl90IG9wY29kZSA9IE9Q
X0xEUkRfaW1tX1QxOworICAgICAgICBvcGNvZGUgfD0gKHdiYWNrIDw8IDUpOworICAgICAgICBv
cGNvZGUgfD0gKGFkZCA8PCA3KTsKKyAgICAgICAgb3Bjb2RlIHw9IChpbmRleCA8PCA4KTsKKwor
ICAgICAgICBtX2Zvcm1hdHRlci50d29Xb3JkT3AxMlJlZzRSZWc0UmVnNEltbTgoc3RhdGljX2Nh
c3Q8T3Bjb2RlSUQxPihvcGNvZGUpLCBybiwgcnQsIHJ0Miwgb2Zmc2V0KTsKKyAgICB9CisKICAg
ICB2b2lkIGxzbChSZWdpc3RlcklEIHJkLCBSZWdpc3RlcklEIHJtLCBpbnQzMl90IHNoaWZ0QW1v
dW50KQogICAgIHsKICAgICAgICAgQVNTRVJUKCFCYWRSZWcocmQpKTsKQEAgLTE2NzYsNiArMTcx
OSw0NiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2Zvcm1hdHRlci50d29Xb3JkT3AxMlJlZzRG
b3VyRm91cnMoT1BfU1RSSF9yZWdfVDIsIHJuLCBGb3VyRm91cnMocnQsIDAsIHNoaWZ0LCBybSkp
OwogICAgIH0KIAorICAgIC8vIElmIGluZGV4IGlzIHNldCwgdGhpcyBpcyBhIHJlZ3VsYXIgb2Zm
c2V0IG9yIGEgcHJlLWluZGV4ZWQgbG9hZDsKKyAgICAvLyBpZiBpbmRleCBpcyBub3Qgc2V0IHRo
ZW4gaXQgaXMgYSBwb3N0LWluZGV4IGxvYWQuCisgICAgLy8KKyAgICAvLyBJZiB3YmFjayBpcyBz
ZXQgcm4gaXMgdXBkYXRlZCAtIHRoaXMgaXMgYSBwcmUgb3IgcG9zdCBpbmRleCBsb2FkLAorICAg
IC8vIGlmIHdiYWNrIGlzIG5vdCBzZXQgdGhpcyBpcyBhIHJlZ3VsYXIgb2Zmc2V0IG1lbW9yeSBh
Y2Nlc3MuCisgICAgLy8KKyAgICAvLyAoLTEwMjAgPD0gb2Zmc2V0IDw9IDEwMjApCisgICAgLy8g
b2Zmc2V0ICUgNCA9PSAwCisgICAgLy8gX3JlZyA9IFJFR1tybl0KKyAgICAvLyBfdG1wID0gX3Jl
ZyArIG9mZnNldAorICAgIC8vIF9hZGRyID0gaW5kZXggPyBfdG1wIDogX3JlZworICAgIC8vIE1F
TVtfYWRkcl0gPSBSRUdbcnRdCisgICAgLy8gTUVNW19hZGRyICsgNF0gPSBSRUdbcnQyXQorICAg
IC8vIGlmICh3YmFjaykgUkVHW3JuXSA9IF90bXAKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc3Ry
ZChSZWdpc3RlcklEIHJ0LCBSZWdpc3RlcklEIHJ0MiwgUmVnaXN0ZXJJRCBybiwgaW50IG9mZnNl
dCwgYm9vbCBpbmRleCwgYm9vbCB3YmFjaykKKyAgICB7CisgICAgICAgIEFTU0VSVCghQmFkUmVn
KHJ0KSk7CisgICAgICAgIEFTU0VSVCghQmFkUmVnKHJ0MikpOworICAgICAgICBBU1NFUlQocm4g
IT0gQVJNUmVnaXN0ZXJzOjpwYyk7CisgICAgICAgIEFTU0VSVChpbmRleCB8fCB3YmFjayk7Cisg
ICAgICAgIEFTU0VSVCghd2JhY2sgfCAocnQgIT0gcm4pKTsKKyAgICAgICAgQVNTRVJUKCF3YmFj
ayB8IChydDIgIT0gcm4pKTsKKyAgICAgICAgQVNTRVJUKCEob2Zmc2V0ICYgMHgzKSk7CisKKyAg
ICAgICAgYm9vbCBhZGQgPSB0cnVlOworICAgICAgICBpZiAob2Zmc2V0IDwgMCkgeworICAgICAg
ICAgICAgYWRkID0gZmFsc2U7CisgICAgICAgICAgICBvZmZzZXQgPSAtb2Zmc2V0OworICAgICAg
ICB9CisgICAgICAgIG9mZnNldCA+Pj0gMjsKKyAgICAgICAgQVNTRVJUKCEob2Zmc2V0ICYgfjB4
ZmYpKTsKKworICAgICAgICB1aW50MTZfdCBvcGNvZGUgPSBPUF9TVFJEX2ltbV9UMTsKKyAgICAg
ICAgb3Bjb2RlIHw9ICh3YmFjayA8PCA1KTsKKyAgICAgICAgb3Bjb2RlIHw9IChhZGQgPDwgNyk7
CisgICAgICAgIG9wY29kZSB8PSAoaW5kZXggPDwgOCk7CisKKyAgICAgICAgbV9mb3JtYXR0ZXIu
dHdvV29yZE9wMTJSZWc0UmVnNFJlZzRJbW04KHN0YXRpY19jYXN0PE9wY29kZUlEMT4ob3Bjb2Rl
KSwgcm4sIHJ0LCBydDIsIG9mZnNldCk7CisgICAgfQorCiAgICAgQUxXQVlTX0lOTElORSB2b2lk
IHN1YihSZWdpc3RlcklEIHJkLCBSZWdpc3RlcklEIHJuLCBBUk1UaHVtYkltbWVkaWF0ZSBpbW0p
CiAgICAgewogICAgICAgICAvLyBSZCBjYW4gb25seSBiZSBTUCBpZiBSbiBpcyBhbHNvIFNQLgpA
QCAtMjg4Nyw2ICsyOTcwLDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBtX2J1ZmZlci5wdXRT
aG9ydCgocmVnMiA8PCAxMikgfCBpbW0pOwogICAgICAgICB9CiAKKyAgICAgICAgQUxXQVlTX0lO
TElORSB2b2lkIHR3b1dvcmRPcDEyUmVnNFJlZzRSZWc0SW1tOChPcGNvZGVJRDEgb3AsIFJlZ2lz
dGVySUQgcmVnMSwgUmVnaXN0ZXJJRCByZWcyLCBSZWdpc3RlcklEIHJlZzMsIHVpbnQ4X3QgaW1t
KQorICAgICAgICB7CisgICAgICAgICAgICBtX2J1ZmZlci5wdXRTaG9ydChvcCB8IHJlZzEpOwor
ICAgICAgICAgICAgbV9idWZmZXIucHV0U2hvcnQoKHJlZzIgPDwgMTIpIHwgKHJlZzMgPDwgOCkg
fCBpbW0pOworICAgICAgICB9CisKICAgICAgICAgQUxXQVlTX0lOTElORSB2b2lkIHR3b1dvcmRP
cDEyUmVnNDBJbW0zUmVnNEltbTIwSW1tNShPcGNvZGVJRDEgb3AsIFJlZ2lzdGVySUQgcmVnMSwg
UmVnaXN0ZXJJRCByZWcyLCB1aW50MTZfdCBpbW0xLCB1aW50MTZfdCBpbW0yLCB1aW50MTZfdCBp
bW0zKQogICAgICAgICB7CiAgICAgICAgICAgICBtX2J1ZmZlci5wdXRTaG9ydChvcCB8IHJlZzEp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
YmxlckFSTXY3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyQVJNdjcuaAppbmRleCBkZjk1OThlMGE3ODg5N2U4YTVlNmJmYThhNDRhNjk2NTNkYzlhNGU0
Li44NzFiOGU1ZmFjOWNmZmYwNGRmYWU5ZjE5Y2RjMDNlMDJlMjM3NzUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaApA
QCAtNDQsMTIgKzQ0LDIyIEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNdjcgOiBwdWJsaWMgQWJz
dHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKICAgICBzdGF0aWMgY29uc3RleHByIEFS
TVJlZ2lzdGVyczo6RlBEb3VibGVSZWdpc3RlcklEIGZwVGVtcFJlZ2lzdGVyID0gQVJNUmVnaXN0
ZXJzOjpkNzsKICAgICBpbmxpbmUgQVJNUmVnaXN0ZXJzOjpGUFNpbmdsZVJlZ2lzdGVySUQgZnBU
ZW1wUmVnaXN0ZXJBc1NpbmdsZSgpIHsgcmV0dXJuIEFSTVJlZ2lzdGVyczo6YXNTaW5nbGUoZnBU
ZW1wUmVnaXN0ZXIpOyB9CiAKKyAgICAvLyBJbiB0aGUgVGh1bWItMiBpbnN0cnVjdGlvbiBzZXQs
IGluc3RydWN0aW9ucyBvcGVyYXRpbmcgb25seSBvbiByZWdpc3RlcnMgcjAtcjcgY2FuIG9mdGVu
CisgICAgLy8gYmUgZW5jb2RlZCB1c2luZyAxNi1iaXQgZW5jb2RpbmdzLCB3aGlsZSB0aGUgdXNl
IG9mIHJlZ2lzdGVycyByOCBhbmQgYWJvdmUgb2Z0ZW4gcmVxdWlyZQorICAgIC8vIDMyLWJpdCBl
bmNvZGluZ3MsIHNvIHByZWZlciB0byB1c2UgdGhlIGFkZHJlc3NUZW1wb3JhcnkgKHI2KSB3aGVu
ZXZlciBwb3NzaWJsZS4KKyAgICBpbmxpbmUgUmVnaXN0ZXJJRCBiZXN0VGVtcFJlZ2lzdGVyKFJl
Z2lzdGVySUQgZXhjbHVkZWQpCisgICAgeworICAgICAgICBpZiAoZXhjbHVkZWQgPT0gYWRkcmVz
c1RlbXBSZWdpc3RlcikKKyAgICAgICAgICAgIHJldHVybiBkYXRhVGVtcFJlZ2lzdGVyOworICAg
ICAgICByZXR1cm4gYWRkcmVzc1RlbXBSZWdpc3RlcjsKKyAgICB9CisKIHB1YmxpYzoKICNkZWZp
bmUgRFVNTVlfUkVHSVNURVJfVkFMVUUoaWQsIG5hbWUsIHIsIGNzKSAwLAogICAgIHN0YXRpYyBj
b25zdGV4cHIgdW5zaWduZWQgbnVtR1BScyA9IHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxpbnQ+KHsg
Rk9SX0VBQ0hfR1BfUkVHSVNURVIoRFVNTVlfUkVHSVNURVJfVkFMVUUpIH0pLnNpemUoKTsKICAg
ICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG51bUZQUnMgPSBzdGQ6OmluaXRpYWxpemVyX2xp
c3Q8aW50Pih7IEZPUl9FQUNIX0ZQX1JFR0lTVEVSKERVTU1ZX1JFR0lTVEVSX1ZBTFVFKSB9KS5z
aXplKCk7CiAjdW5kZWYgRFVNTVlfUkVHSVNURVJfVkFMVUUKLSAgICBSZWdpc3RlcklEIHNjcmF0
Y2hSZWdpc3RlcigpIHsgcmV0dXJuIGRhdGFUZW1wUmVnaXN0ZXI7IH0KKyAgICBSZWdpc3RlcklE
IHNjcmF0Y2hSZWdpc3RlcigpIHsgcmV0dXJuIGFkZHJlc3NUZW1wUmVnaXN0ZXI7IH0KIAogICAg
IE1hY3JvQXNzZW1ibGVyQVJNdjcoKQogICAgICAgICA6IG1fbWFrZUp1bXBQYXRjaGFibGUoZmFs
c2UpCkBAIC0xODEsMjAgKzE5MSwyNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFkZDMyKFRydXN0
ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAg
ICAgICAvLyBGb3IgYWRkcyB3aXRoIHN0YWNrIHBvaW50ZXIgZGVzdGluYXRpb24gYXZvaWQgdW5w
cmVkaWN0YWJsZSBpbnN0cnVjdGlvbgorICAgICAgICAvLyBBdm9pZCB1bnByZWRpY3RhYmxlIGlu
c3RydWN0aW9uIGlmIHRoZSBkZXN0aW5hdGlvbiBpcyB0aGUgc3RhY2sgcG9pbnRlcgogICAgICAg
ICBpZiAoZGVzdCA9PSBBUk1SZWdpc3RlcnM6OnNwICYmIHNyYyAhPSBkZXN0KSB7Ci0gICAgICAg
ICAgICBhZGQzMihpbW0sIHNyYywgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgICAgICBtb3Zl
KGRhdGFUZW1wUmVnaXN0ZXIsIGRlc3QpOworICAgICAgICAgICAgYWRkMzIoaW1tLCBzcmMsIGFk
ZHJlc3NUZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgbW92ZShhZGRyZXNzVGVtcFJlZ2lzdGVy
LCBkZXN0KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIEFSTVRo
dW1iSW1tZWRpYXRlIGFybUltbSA9IEFSTVRodW1iSW1tZWRpYXRlOjptYWtlVUludDEyT3JFbmNv
ZGVkSW1tKGltbS5tX3ZhbHVlKTsKLSAgICAgICAgaWYgKGFybUltbS5pc1ZhbGlkKCkpCisgICAg
ICAgIGlmIChhcm1JbW0uaXNWYWxpZCgpKSB7CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGQo
ZGVzdCwgc3JjLCBhcm1JbW0pOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIG1vdmUoaW1t
LCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZChkZXN0LCBz
cmMsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CisK
KyAgICAgICAgYXJtSW1tID0gQVJNVGh1bWJJbW1lZGlhdGU6Om1ha2VVSW50MTJPckVuY29kZWRJ
bW0oLWltbS5tX3ZhbHVlKTsKKyAgICAgICAgaWYgKGFybUltbS5pc1ZhbGlkKCkpIHsKKyAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLnN1YihkZXN0LCBzcmMsIGFybUltbSk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBtb3ZlKGltbSwgZGF0YVRlbXBSZWdpc3Rlcik7
CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZChkZXN0LCBzcmMsIGRhdGFUZW1wUmVnaXN0ZXIpOwog
ICAgIH0KIAogICAgIHZvaWQgYWRkMzIoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNz
KQpAQCAtODQyLDE3ICs4NTksNDIgQEAgcHVibGljOgogCiAgICAgdm9pZCBsb2FkUGFpcjMyKFJl
Z2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgb2Zmc2V0LCBSZWdpc3RlcklEIGRlc3QxLCBSZWdp
c3RlcklEIGRlc3QyKQogICAgIHsKLSAgICAgICAgLy8gRklYTUU6IGxkcmQvbGRtIGNhbiBiZSB1
c2VkIGlmIGRlc3QxIGFuZCBkZXN0MiBhcmUgY29uc2VjdXRpdmUgcGFpciBvZiByZWdpc3RlcnMu
CisgICAgICAgIGxvYWRQYWlyMzIoQWRkcmVzcyhzcmMsIG9mZnNldC5tX3ZhbHVlKSwgZGVzdDEs
IGRlc3QyKTsKKyAgICB9CisKKyAgICB2b2lkIGxvYWRQYWlyMzIoQWRkcmVzcyBhZGRyZXNzLCBS
ZWdpc3RlcklEIGRlc3QxLCBSZWdpc3RlcklEIGRlc3QyKQorICAgIHsKICAgICAgICAgQVNTRVJU
KGRlc3QxICE9IGRlc3QyKTsgLy8gSWYgaXQgaXMgdGhlIHNhbWUsIGxkcCBiZWNvbWVzIGlsbGVn
YWwgaW5zdHJ1Y3Rpb24uCi0gICAgICAgIGlmIChzcmMgPT0gZGVzdDEpIHsKLSAgICAgICAgICAg
IGxvYWQzMihBZGRyZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUgKyA0KSwgZGVzdDIpOwotICAgICAg
ICAgICAgbG9hZDMyKEFkZHJlc3Moc3JjLCBvZmZzZXQubV92YWx1ZSksIGRlc3QxKTsKKyAgICAg
ICAgaW50MzJfdCBhYnNPZmZzZXQgPSBhZGRyZXNzLm9mZnNldDsKKyAgICAgICAgaWYgKGFic09m
ZnNldCA8IDApCisgICAgICAgICAgICBhYnNPZmZzZXQgPSAtYWJzT2Zmc2V0OworICAgICAgICBp
ZiAoIShhYnNPZmZzZXQgJiB+MHgzZmMpKQorICAgICAgICAgICAgbV9hc3NlbWJsZXIubGRyZChk
ZXN0MSwgZGVzdDIsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5vZmZzZXQsIC8qIGluZGV4OiAqLyB0
cnVlLCAvKiB3YmFjazogKi8gZmFsc2UpOworICAgICAgICBlbHNlIGlmIChhZGRyZXNzLmJhc2Ug
PT0gZGVzdDEpIHsKKyAgICAgICAgICAgIGxvYWQzMihhZGRyZXNzLndpdGhPZmZzZXQoNCksIGRl
c3QyKTsKKyAgICAgICAgICAgIGxvYWQzMihhZGRyZXNzLCBkZXN0MSk7CiAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhzcmMsIG9mZnNldC5tX3ZhbHVlKSwgZGVz
dDEpOwotICAgICAgICAgICAgbG9hZDMyKEFkZHJlc3Moc3JjLCBvZmZzZXQubV92YWx1ZSArIDQp
LCBkZXN0Mik7CisgICAgICAgICAgICBsb2FkMzIoYWRkcmVzcywgZGVzdDEpOworICAgICAgICAg
ICAgbG9hZDMyKGFkZHJlc3Mud2l0aE9mZnNldCg0KSwgZGVzdDIpOwogICAgICAgICB9CiAgICAg
fQogCisgICAgdm9pZCBsb2FkUGFpcjMyKEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIGRl
c3QxLCBSZWdpc3RlcklEIGRlc3QyKQorICAgIHsKKyAgICAgICAgLy8gVXNpbmcgcjAtcjcgY2Fu
IG9mdGVuIGJlIGVuY29kZWQgd2l0aCBhIHNob3J0ZXIgKDE2LWJpdCB2cyAzMi1iaXQpIGluc3Ry
dWN0aW9uLCBzbyB1c2UKKyAgICAgICAgLy8gd2hpY2hldmVyIGRlc3RpbmF0aW9uIHJlZ2lzdGVy
IGlzIGluIHRoYXQgcmFuZ2UgKGlmIGFueSkgYXMgdGhlIGFkZHJlc3MgdGVtcCByZWdpc3Rlcgor
ICAgICAgICBSZWdpc3RlcklEIHNjcmF0Y2ggPSBkZXN0MTsKKyAgICAgICAgaWYgKGRlc3QxID4g
OCkKKyAgICAgICAgICAgIHNjcmF0Y2ggPSBkZXN0MjsKKyAgICAgICAgaWYgKGFkZHJlc3Muc2Nh
bGUgPT0gVGltZXNPbmUpCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGQoc2NyYXRjaCwgYWRk
cmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4KTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBT
aGlmdFR5cGVBbmRBbW91bnQgc2hpZnQgeyBBUk1TaGlmdFR5cGU6OlNSVHlwZV9MU0wsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihhZGRyZXNzLnNjYWxlKSB9OworICAgICAgICAgICAgbV9hc3NlbWJs
ZXIuYWRkKHNjcmF0Y2gsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgc2hpZnQpOworICAg
ICAgICB9CisgICAgICAgIGxvYWRQYWlyMzIoQWRkcmVzcyhzY3JhdGNoLCBhZGRyZXNzLm9mZnNl
dCksIGRlc3QxLCBkZXN0Mik7CisgICAgfQorCiAgICAgdm9pZCBzdG9yZTMyKFJlZ2lzdGVySUQg
c3JjLCBBZGRyZXNzIGFkZHJlc3MpCiAgICAgewogICAgICAgICBzdG9yZTMyKHNyYywgc2V0dXBB
cm1BZGRyZXNzKGFkZHJlc3MpKTsKQEAgLTg2NSw4ICs5MDcsMTIgQEAgcHVibGljOgogCiAgICAg
dm9pZCBzdG9yZTMyKFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKICAgICB7Ci0g
ICAgICAgIG1vdmUoaW1tLCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgc3RvcmUzMihkYXRh
VGVtcFJlZ2lzdGVyLCBzZXR1cEFybUFkZHJlc3MoYWRkcmVzcykpOworICAgICAgICBBcm1BZGRy
ZXNzIGFybUFkZHJlc3MgPSBzZXR1cEFybUFkZHJlc3MoYWRkcmVzcyk7CisgICAgICAgIFJlZ2lz
dGVySUQgc2NyYXRjaCA9IGFkZHJlc3NUZW1wUmVnaXN0ZXI7CisgICAgICAgIGlmIChhcm1BZGRy
ZXNzLnR5cGUgPT0gQXJtQWRkcmVzczo6SGFzSW5kZXgpCisgICAgICAgICAgICBzY3JhdGNoID0g
ZGF0YVRlbXBSZWdpc3RlcjsKKyAgICAgICAgbW92ZShpbW0sIHNjcmF0Y2gpOworICAgICAgICBz
dG9yZTMyKHNjcmF0Y2gsIGFybUFkZHJlc3MpOwogICAgIH0KIAogICAgIHZvaWQgc3RvcmUzMihU
cnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKQEAgLTk1MSw5ICs5OTcsMzMgQEAg
cHVibGljOgogCiAgICAgdm9pZCBzdG9yZVBhaXIzMihSZWdpc3RlcklEIHNyYzEsIFJlZ2lzdGVy
SUQgc3JjMiwgUmVnaXN0ZXJJRCBkZXN0LCBUcnVzdGVkSW1tMzIgb2Zmc2V0KQogICAgIHsKLSAg
ICAgICAgLy8gRklYTUU6IHN0cmQvc3RtIGNhbiBiZSB1c2VkIGlmIHNyYzEgYW5kIHNyYzIgYXJl
IGNvbnNlY3V0aXZlIHBhaXIgb2YgcmVnaXN0ZXJzLgotICAgICAgICBzdG9yZTMyKHNyYzEsIEFk
ZHJlc3MoZGVzdCwgb2Zmc2V0Lm1fdmFsdWUpKTsKLSAgICAgICAgc3RvcmUzMihzcmMyLCBBZGRy
ZXNzKGRlc3QsIG9mZnNldC5tX3ZhbHVlICsgNCkpOworICAgICAgICBzdG9yZVBhaXIzMihzcmMx
LCBzcmMyLCBBZGRyZXNzKGRlc3QsIG9mZnNldC5tX3ZhbHVlKSk7CisgICAgfQorCisgICAgdm9p
ZCBzdG9yZVBhaXIzMihSZWdpc3RlcklEIHNyYzEsIFJlZ2lzdGVySUQgc3JjMiwgQWRkcmVzcyBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgaW50MzJfdCBhYnNPZmZzZXQgPSBhZGRyZXNzLm9mZnNl
dDsKKyAgICAgICAgaWYgKGFic09mZnNldCA8IDApCisgICAgICAgICAgICBhYnNPZmZzZXQgPSAt
YWJzT2Zmc2V0OworICAgICAgICBpZiAoIShhYnNPZmZzZXQgJiB+MHgzZmMpKQorICAgICAgICAg
ICAgbV9hc3NlbWJsZXIuc3RyZChzcmMxLCBzcmMyLCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mub2Zm
c2V0LCAvKiBpbmRleDogKi8gdHJ1ZSwgLyogd2JhY2s6ICovIGZhbHNlKTsKKyAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICBzdG9yZTMyKHNyYzEsIGFkZHJlc3MpOworICAgICAgICAgICAgc3Rv
cmUzMihzcmMyLCBhZGRyZXNzLndpdGhPZmZzZXQoNCkpOworICAgICAgICB9CisgICAgfQorCisg
ICAgdm9pZCBzdG9yZVBhaXIzMihSZWdpc3RlcklEIHNyYzEsIFJlZ2lzdGVySUQgc3JjMiwgQmFz
ZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBBU1NFUlQoc3JjMSAhPSBkYXRhVGVtcFJl
Z2lzdGVyICYmIHNyYzIgIT0gZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgIC8vIFRoZSAnYWRk
cmVzc1RlbXBSZWdpc3RlcicgbWlnaHQgYmUgdXNlZCB3aGVuIHRoZSBvZmZzZXQgaXMgd2lkZSwg
c28gdXNlICdkYXRhVGVtcFJlZ2lzdGVyJworICAgICAgICBpZiAoYWRkcmVzcy5zY2FsZSA9PSBU
aW1lc09uZSkKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZChkYXRhVGVtcFJlZ2lzdGVyLCBh
ZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
IFNoaWZ0VHlwZUFuZEFtb3VudCBzaGlmdCB7IEFSTVNoaWZ0VHlwZTo6U1JUeXBlX0xTTCwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGFkZHJlc3Muc2NhbGUpIH07CisgICAgICAgICAgICBtX2Fzc2Vt
Ymxlci5hZGQoZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBz
aGlmdCk7CisgICAgICAgIH0KKyAgICAgICAgc3RvcmVQYWlyMzIoc3JjMSwgc3JjMiwgQWRkcmVz
cyhkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzLm9mZnNldCkpOwogICAgIH0KIAogICAgIC8vIFBv
c3NpYmx5IGNsb2JiZXJzIHNyYywgYnV0IG5vdCBvbiB0aGlzIGFyY2hpdGVjdHVyZS4KQEAgLTE1
MjIsOCArMTU5Miw5IEBAIHByaXZhdGU6CiAgICAgICAgIGVsc2UgaWYgKChhcm1JbW0gPSBBUk1U
aHVtYkltbWVkaWF0ZTo6bWFrZUVuY29kZWRJbW0oLWltbSkpLmlzVmFsaWQoKSkKICAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLmNtbihsZWZ0LCBhcm1JbW0pOwogICAgICAgICBlbHNlIHsKLSAgICAg
ICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKGltbSksIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAg
ICAgICAgbV9hc3NlbWJsZXIuY21wKGxlZnQsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICAg
ICAgUmVnaXN0ZXJJRCBzY3JhdGNoID0gYmVzdFRlbXBSZWdpc3RlcihsZWZ0KTsKKyAgICAgICAg
ICAgIG1vdmUoVHJ1c3RlZEltbTMyKGltbSksIHNjcmF0Y2gpOworICAgICAgICAgICAgbV9hc3Nl
bWJsZXIuY21wKGxlZnQsIHNjcmF0Y2gpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xNTg5LDEy
ICsxNjYwLDEzIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAg
ICAgICAgICAgbV9hc3NlbWJsZXIudHN0KHJlZywgYXJtSW1tKTsKICAgICAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgbW92ZShtYXNrLCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICAg
ICAgICAgICAgICBpZiAocmVnID09IEFSTVJlZ2lzdGVyczo6c3ApIHsKLSAgICAgICAgICAgICAg
ICAgICAgbW92ZShyZWcsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwotICAgICAgICAgICAgICAgICAg
ICBtX2Fzc2VtYmxlci50c3QoYWRkcmVzc1RlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3Rlcik7
Ci0gICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVy
LnRzdChyZWcsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgICAgICAgICBtb3ZlKHJl
ZywgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAgICAgIHJlZyA9IGRhdGFUZW1w
UmVnaXN0ZXI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFJlZ2lzdGVySUQg
c2NyYXRjaCA9IGJlc3RUZW1wUmVnaXN0ZXIocmVnKTsKKyAgICAgICAgICAgICAgICBtb3ZlKG1h
c2ssIHNjcmF0Y2gpOworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnRzdChyZWcsIHNjcmF0
Y2gpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMTYyNSwxNCArMTY5Nywx
NCBAQCBwdWJsaWM6CiAKICAgICBKdW1wIGJyYW5jaDMyKFJlbGF0aW9uYWxDb25kaXRpb24gY29u
ZCwgUmVnaXN0ZXJJRCBsZWZ0LCBBZGRyZXNzIHJpZ2h0KQogICAgIHsKLSAgICAgICAgbG9hZDMy
KHJpZ2h0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQs
IGxlZnQsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICBsb2FkMzIocmlnaHQsIGFkZHJlc3NU
ZW1wUmVnaXN0ZXIpOworICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgbGVmdCwgYWRkcmVz
c1RlbXBSZWdpc3Rlcik7CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2gzMihSZWxhdGlvbmFsQ29u
ZGl0aW9uIGNvbmQsIEFkZHJlc3MgbGVmdCwgUmVnaXN0ZXJJRCByaWdodCkKICAgICB7Ci0gICAg
ICAgIGxvYWQzMihsZWZ0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgcmV0dXJuIGJyYW5j
aDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIHJpZ2h0KTsKKyAgICAgICAgbG9hZDMyKGxlZnQs
IGFkZHJlc3NUZW1wUmVnaXN0ZXIpOworICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgYWRk
cmVzc1RlbXBSZWdpc3RlciwgcmlnaHQpOwogICAgIH0KIAogICAgIEp1bXAgYnJhbmNoMzIoUmVs
YXRpb25hbENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkK
QEAgLTE2NTgsMTMgKzE3MzAsMTIgQEAgcHVibGljOgogCiAgICAgSnVtcCBicmFuY2gzMihSZWxh
dGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFic29sdXRlQWRkcmVzcyBsZWZ0LCBSZWdpc3RlcklEIHJp
Z2h0KQogICAgIHsKLSAgICAgICAgbG9hZDMyKGxlZnQubV9wdHIsIGRhdGFUZW1wUmVnaXN0ZXIp
OwotICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgZGF0YVRlbXBSZWdpc3RlciwgcmlnaHQp
OworICAgICAgICBsb2FkMzIobGVmdC5tX3B0ciwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CisgICAg
ICAgIHJldHVybiBicmFuY2gzMihjb25kLCBhZGRyZXNzVGVtcFJlZ2lzdGVyLCByaWdodCk7CiAg
ICAgfQogCiAgICAgSnVtcCBicmFuY2gzMihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFic29s
dXRlQWRkcmVzcyBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQpCiAgICAgewotICAgICAgICAvLyB1
c2UgYWRkcmVzc1RlbXBSZWdpc3RlciBpbmNhc2UgdGhlIGJyYW5jaDMyIHdlIGNhbGwgdXNlcyBk
YXRhVGVtcFJlZ2lzdGVyLiA6LS8KICAgICAgICAgbG9hZDMyKGxlZnQubV9wdHIsIGFkZHJlc3NU
ZW1wUmVnaXN0ZXIpOwogICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgYWRkcmVzc1RlbXBS
ZWdpc3RlciwgcmlnaHQpOwogICAgIH0KQEAgLTE4MDAsMjIgKzE4NzEsMjIgQEAgcHVibGljOgog
CiAgICAgdm9pZCBmYXJKdW1wKFRydXN0ZWRJbW1QdHIgdGFyZ2V0LCBQdHJUYWcpCiAgICAgewot
ICAgICAgICBtb3ZlKHRhcmdldCwgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIG1fYXNzZW1i
bGVyLmJ4KGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICBtb3ZlKHRhcmdldCwgYWRkcmVzc1Rl
bXBSZWdpc3Rlcik7CisgICAgICAgIG1fYXNzZW1ibGVyLmJ4KGFkZHJlc3NUZW1wUmVnaXN0ZXIp
OwogICAgIH0KIAogICAgIC8vIEFkZHJlc3MgaXMgYSBtZW1vcnkgbG9jYXRpb24gY29udGFpbmlu
ZyB0aGUgYWRkcmVzcyB0byBqdW1wIHRvCiAgICAgdm9pZCBmYXJKdW1wKEFkZHJlc3MgYWRkcmVz
cywgUHRyVGFnKQogICAgIHsKLSAgICAgICAgbG9hZDMyKGFkZHJlc3MsIGRhdGFUZW1wUmVnaXN0
ZXIpOwotICAgICAgICBtX2Fzc2VtYmxlci5ieChkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAg
bG9hZDMyKGFkZHJlc3MsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOworICAgICAgICBtX2Fzc2VtYmxl
ci5ieChhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBmYXJKdW1w
KEFic29sdXRlQWRkcmVzcyBhZGRyZXNzLCBQdHJUYWcpCiAgICAgewotICAgICAgICBtb3ZlKFRy
dXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciksIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICBs
b2FkMzIoQWRkcmVzcyhkYXRhVGVtcFJlZ2lzdGVyKSwgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAg
ICAgIG1fYXNzZW1ibGVyLmJ4KGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICBtb3ZlKFRydXN0
ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciksIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOworICAgICAgICBs
b2FkMzIoQWRkcmVzcyhhZGRyZXNzVGVtcFJlZ2lzdGVyKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7
CisgICAgICAgIG1fYXNzZW1ibGVyLmJ4KGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwogICAgIH0KIAog
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBmYXJKdW1wKFJlZ2lzdGVySUQgdGFyZ2V0LCBSZWdpc3Rl
cklEIGp1bXBUYWcpIHsgVU5VU0VEX1BBUkFNKGp1bXBUYWcpLCBmYXJKdW1wKHRhcmdldCwgTm9Q
dHJUYWcpOyB9CkBAIC0xOTkxLDggKzIwNjIsOCBAQCBwdWJsaWM6CiAKICAgICBBTFdBWVNfSU5M
SU5FIENhbGwgY2FsbChBZGRyZXNzIGFkZHJlc3MsIFB0clRhZykKICAgICB7Ci0gICAgICAgIGxv
YWQzMihhZGRyZXNzLCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgcmV0dXJuIENhbGwobV9h
c3NlbWJsZXIuYmx4KGRhdGFUZW1wUmVnaXN0ZXIpLCBDYWxsOjpOb25lKTsKKyAgICAgICAgbG9h
ZDMyKGFkZHJlc3MsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOworICAgICAgICByZXR1cm4gQ2FsbCht
X2Fzc2VtYmxlci5ibHgoYWRkcmVzc1RlbXBSZWdpc3RlciksIENhbGw6Ok5vbmUpOwogICAgIH0K
IAogICAgIEFMV0FZU19JTkxJTkUgQ2FsbCBjYWxsKFJlZ2lzdGVySUQgY2FsbFRhZykgeyByZXR1
cm4gVU5VU0VEX1BBUkFNKGNhbGxUYWcpLCBjYWxsKE5vUHRyVGFnKTsgfQpAQCAtMjAxNCw4ICsy
MDg1LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBjb21wYXJlMzIoUmVsYXRpb25hbENvbmRpdGlv
biBjb25kLCBBZGRyZXNzIGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkK
ICAgICB7Ci0gICAgICAgIGxvYWQzMihsZWZ0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAg
Y29tcGFyZTMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIHJpZ2h0LCBkZXN0KTsKKyAgICAgICAg
bG9hZDMyKGxlZnQsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOworICAgICAgICBjb21wYXJlMzIoY29u
ZCwgYWRkcmVzc1RlbXBSZWdpc3RlciwgcmlnaHQsIGRlc3QpOwogICAgIH0KIAogICAgIHZvaWQg
Y29tcGFyZTgoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGxlZnQsIFRydXN0ZWRJ
bW0zMiByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgKaW5kZXggNGZiOWEyOGViYjk0Njli
Yzc0NjcwZTZlMDRhZTg0YWE2MWM4MzFhNy4uNGEzMDk1M2JmM2ZmMGU2OWE3MTZjZmFiZjFhMzRl
OWQwYTk1NDJiOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlck1JUFMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyTUlQUy5oCkBAIC0xMzIwLDE0ICsxMzIwLDMzIEBAIHB1YmxpYzoKICAg
ICB9CiAKICAgICB2b2lkIGxvYWRQYWlyMzIoUmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBv
ZmZzZXQsIFJlZ2lzdGVySUQgZGVzdDEsIFJlZ2lzdGVySUQgZGVzdDIpCisgICAgeworICAgICAg
ICBsb2FkUGFpcjMyKEFkZHJlc3Moc3JjLCBvZmZzZXQubV92YWx1ZSksIGRlc3QxLCBkZXN0Mik7
CisgICAgfQorCisgICAgdm9pZCBsb2FkUGFpcjMyKEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJ
RCBkZXN0MSwgUmVnaXN0ZXJJRCBkZXN0MikKICAgICB7CiAgICAgICAgIEFTU0VSVChkZXN0MSAh
PSBkZXN0Mik7IC8vIElmIGl0IGlzIHRoZSBzYW1lLCBsZHAgYmVjb21lcyBpbGxlZ2FsIGluc3Ry
dWN0aW9uLgotICAgICAgICBpZiAoc3JjID09IGRlc3QxKSB7Ci0gICAgICAgICAgICBsb2FkMzIo
QWRkcmVzcyhzcmMsIG9mZnNldC5tX3ZhbHVlICsgNCksIGRlc3QyKTsKLSAgICAgICAgICAgIGxv
YWQzMihBZGRyZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUpLCBkZXN0MSk7CisgICAgICAgIGlmIChh
ZGRyZXNzLmJhc2UgPT0gZGVzdDEpIHsKKyAgICAgICAgICAgIGxvYWQzMihhZGRyZXNzLndpdGhP
ZmZzZXQoNCksIGRlc3QyKTsKKyAgICAgICAgICAgIGxvYWQzMihhZGRyZXNzLCBkZXN0MSk7CiAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhzcmMsIG9mZnNldC5t
X3ZhbHVlKSwgZGVzdDEpOwotICAgICAgICAgICAgbG9hZDMyKEFkZHJlc3Moc3JjLCBvZmZzZXQu
bV92YWx1ZSArIDQpLCBkZXN0Mik7CisgICAgICAgICAgICBsb2FkMzIoYWRkcmVzcywgZGVzdDEp
OworICAgICAgICAgICAgbG9hZDMyKGFkZHJlc3Mud2l0aE9mZnNldCg0KSwgZGVzdDIpOworICAg
ICAgICB9CisgICAgfQorCisgICAgdm9pZCBsb2FkUGFpcjMyKEJhc2VJbmRleCBhZGRyZXNzLCBS
ZWdpc3RlcklEIGRlc3QxLCBSZWdpc3RlcklEIGRlc3QyKQorICAgIHsKKyAgICAgICAgaWYgKGFk
ZHJlc3MuYmFzZSA9PSBkZXN0MSB8fCBhZGRyZXNzLmluZGV4ID09IGRlc3QxKSB7CisgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVChhZGRyZXNzLmJhc2UgIT0gZGVzdDIpOworICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQoYWRkcmVzcy5pbmRleCAhPSBkZXN0Mik7CisKKyAgICAgICAgICAgIGxv
YWQzMihhZGRyZXNzLndpdGhPZmZzZXQoNCksIGRlc3QyKTsKKyAgICAgICAgICAgIGxvYWQzMihh
ZGRyZXNzLCBkZXN0MSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBsb2FkMzIoYWRk
cmVzcywgZGVzdDEpOworICAgICAgICAgICAgbG9hZDMyKGFkZHJlc3Mud2l0aE9mZnNldCg0KSwg
ZGVzdDIpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xNjMxLDggKzE2NTAsMTkgQEAgcHVibGlj
OgogCiAgICAgdm9pZCBzdG9yZVBhaXIzMihSZWdpc3RlcklEIHNyYzEsIFJlZ2lzdGVySUQgc3Jj
MiwgUmVnaXN0ZXJJRCBkZXN0LCBUcnVzdGVkSW1tMzIgb2Zmc2V0KQogICAgIHsKLSAgICAgICAg
c3RvcmUzMihzcmMxLCBBZGRyZXNzKGRlc3QsIG9mZnNldC5tX3ZhbHVlKSk7Ci0gICAgICAgIHN0
b3JlMzIoc3JjMiwgQWRkcmVzcyhkZXN0LCBvZmZzZXQubV92YWx1ZSArIDQpKTsKKyAgICAgICAg
c3RvcmVQYWlyMzIoc3JjMSwgc3JjMiwgQWRkcmVzcyhkZXN0LCBvZmZzZXQubV92YWx1ZSkpOwor
ICAgIH0KKworICAgIHZvaWQgc3RvcmVQYWlyMzIoUmVnaXN0ZXJJRCBzcmMxLCBSZWdpc3RlcklE
IHNyYzIsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHN0b3JlMzIoc3JjMSwgYWRk
cmVzcyk7CisgICAgICAgIHN0b3JlMzIoc3JjMiwgYWRkcmVzcy53aXRoT2Zmc2V0KDQpKTsKKyAg
ICB9CisKKyAgICB2b2lkIHN0b3JlUGFpcjMyKFJlZ2lzdGVySUQgc3JjMSwgUmVnaXN0ZXJJRCBz
cmMyLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIHN0b3JlMzIoc3JjMSwgYWRk
cmVzcyk7CisgICAgICAgIHN0b3JlMzIoc3JjMiwgYWRkcmVzcy53aXRoT2Zmc2V0KDQpKTsKICAg
ICB9CiAKICAgICAvLyBGbG9hdGluZy1wb2ludCBvcGVyYXRpb25zOgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKaW5kZXggZTZjNzM2YzY3Y2ExMDJkNTI1NzBh
NzE4OWMxMDA2MmVlYTVjNDI3Yy4uNWY4M2YxYTlmMzhiOWZjMGVjZDg2OWE0YjY4YjcxNTU2ODQy
ZWM4MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBl
cnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCkBA
IC0xNjQsOCArMTY0LDExIEBAIHB1YmxpYzoKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBz
dG9yZTY0KHJlZ3MuZ3ByKCksIGFkZHJlc3MpOwogI2Vsc2UKLSAgICAgICAgc3RvcmUzMihyZWdz
LnBheWxvYWRHUFIoKSwgYWRkcmVzcy53aXRoT2Zmc2V0KFBheWxvYWRPZmZzZXQpKTsKLSAgICAg
ICAgc3RvcmUzMihyZWdzLnRhZ0dQUigpLCBhZGRyZXNzLndpdGhPZmZzZXQoVGFnT2Zmc2V0KSk7
CisgICAgICAgIHN0YXRpY19hc3NlcnQoKFBheWxvYWRPZmZzZXQgPT0gNCAmJiAhVGFnT2Zmc2V0
KSB8fCAoIVBheWxvYWRPZmZzZXQgJiYgVGFnT2Zmc2V0ID09IDQpKTsKKyAgICAgICAgaWYgY29u
c3RleHByIChQYXlsb2FkT2Zmc2V0IDwgVGFnT2Zmc2V0KQorICAgICAgICAgICAgc3RvcmVQYWly
MzIocmVncy5wYXlsb2FkR1BSKCksIHJlZ3MudGFnR1BSKCksIGFkZHJlc3MpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBzdG9yZVBhaXIzMihyZWdzLnRhZ0dQUigpLCByZWdzLnBheWxvYWRH
UFIoKSwgYWRkcmVzcyk7CiAjZW5kaWYKICAgICB9CiAgICAgCkBAIC0xNzQsOCArMTc3LDExIEBA
IHB1YmxpYzoKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBzdG9yZTY0KHJlZ3MuZ3ByKCks
IGFkZHJlc3MpOwogI2Vsc2UKLSAgICAgICAgc3RvcmUzMihyZWdzLnBheWxvYWRHUFIoKSwgYWRk
cmVzcy53aXRoT2Zmc2V0KFBheWxvYWRPZmZzZXQpKTsKLSAgICAgICAgc3RvcmUzMihyZWdzLnRh
Z0dQUigpLCBhZGRyZXNzLndpdGhPZmZzZXQoVGFnT2Zmc2V0KSk7CisgICAgICAgIHN0YXRpY19h
c3NlcnQoKFBheWxvYWRPZmZzZXQgPT0gNCAmJiAhVGFnT2Zmc2V0KSB8fCAoIVBheWxvYWRPZmZz
ZXQgJiYgVGFnT2Zmc2V0ID09IDQpKTsKKyAgICAgICAgaWYgY29uc3RleHByIChQYXlsb2FkT2Zm
c2V0IDwgVGFnT2Zmc2V0KQorICAgICAgICAgICAgc3RvcmVQYWlyMzIocmVncy5wYXlsb2FkR1BS
KCksIHJlZ3MudGFnR1BSKCksIGFkZHJlc3MpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBz
dG9yZVBhaXIzMihyZWdzLnRhZ0dQUigpLCByZWdzLnBheWxvYWRHUFIoKSwgYWRkcmVzcyk7CiAj
ZW5kaWYKICAgICB9CiAgICAgCkBAIC0xOTQsMTMgKzIwMCwxMSBAQCBwdWJsaWM6CiAjaWYgVVNF
KEpTVkFMVUU2NCkKICAgICAgICAgbG9hZDY0KGFkZHJlc3MsIHJlZ3MuZ3ByKCkpOwogI2Vsc2UK
LSAgICAgICAgaWYgKGFkZHJlc3MuYmFzZSA9PSByZWdzLnBheWxvYWRHUFIoKSkgewotICAgICAg
ICAgICAgbG9hZDMyKGFkZHJlc3Mud2l0aE9mZnNldChUYWdPZmZzZXQpLCByZWdzLnRhZ0dQUigp
KTsKLSAgICAgICAgICAgIGxvYWQzMihhZGRyZXNzLndpdGhPZmZzZXQoUGF5bG9hZE9mZnNldCks
IHJlZ3MucGF5bG9hZEdQUigpKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGxvYWQz
MihhZGRyZXNzLndpdGhPZmZzZXQoUGF5bG9hZE9mZnNldCksIHJlZ3MucGF5bG9hZEdQUigpKTsK
LSAgICAgICAgICAgIGxvYWQzMihhZGRyZXNzLndpdGhPZmZzZXQoVGFnT2Zmc2V0KSwgcmVncy50
YWdHUFIoKSk7Ci0gICAgICAgIH0KKyAgICAgICAgc3RhdGljX2Fzc2VydCgoUGF5bG9hZE9mZnNl
dCA9PSA0ICYmICFUYWdPZmZzZXQpIHx8ICghUGF5bG9hZE9mZnNldCAmJiBUYWdPZmZzZXQgPT0g
NCkpOworICAgICAgICBpZiBjb25zdGV4cHIgKFBheWxvYWRPZmZzZXQgPCBUYWdPZmZzZXQpCisg
ICAgICAgICAgICBsb2FkUGFpcjMyKGFkZHJlc3MsIHJlZ3MucGF5bG9hZEdQUigpLCByZWdzLnRh
Z0dQUigpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbG9hZFBhaXIzMihhZGRyZXNzLCBy
ZWdzLnRhZ0dQUigpLCByZWdzLnBheWxvYWRHUFIoKSk7CiAjZW5kaWYKICAgICB9CiAgICAgCkBA
IC0yMDksMTggKzIxMywxMSBAQCBwdWJsaWM6CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAg
bG9hZDY0KGFkZHJlc3MsIHJlZ3MuZ3ByKCkpOwogI2Vsc2UKLSAgICAgICAgaWYgKGFkZHJlc3Mu
YmFzZSA9PSByZWdzLnBheWxvYWRHUFIoKSB8fCBhZGRyZXNzLmluZGV4ID09IHJlZ3MucGF5bG9h
ZEdQUigpKSB7Ci0gICAgICAgICAgICAvLyBXZSBhY3R1YWxseSBjb3VsZCBoYW5kbGUgdGhlIGNh
c2Ugd2hlcmUgdGhlIHJlZ2lzdGVycyBhcmUgYWxpYXNlZCB0byBib3RoCi0gICAgICAgICAgICAv
LyB0YWcgYW5kIHBheWxvYWQsIGJ1dCB3ZSBkb24ndCBmb3Igbm93LgotICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlQoYWRkcmVzcy5iYXNlICE9IHJlZ3MudGFnR1BSKCkpOwotICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQoYWRkcmVzcy5pbmRleCAhPSByZWdzLnRhZ0dQUigpKTsKLSAgICAgICAg
ICAgIAotICAgICAgICAgICAgbG9hZDMyKGFkZHJlc3Mud2l0aE9mZnNldChUYWdPZmZzZXQpLCBy
ZWdzLnRhZ0dQUigpKTsKLSAgICAgICAgICAgIGxvYWQzMihhZGRyZXNzLndpdGhPZmZzZXQoUGF5
bG9hZE9mZnNldCksIHJlZ3MucGF5bG9hZEdQUigpKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIGxvYWQzMihhZGRyZXNzLndpdGhPZmZzZXQoUGF5bG9hZE9mZnNldCksIHJlZ3MucGF5
bG9hZEdQUigpKTsKLSAgICAgICAgICAgIGxvYWQzMihhZGRyZXNzLndpdGhPZmZzZXQoVGFnT2Zm
c2V0KSwgcmVncy50YWdHUFIoKSk7Ci0gICAgICAgIH0KKyAgICAgICAgc3RhdGljX2Fzc2VydCgo
UGF5bG9hZE9mZnNldCA9PSA0ICYmICFUYWdPZmZzZXQpIHx8ICghUGF5bG9hZE9mZnNldCAmJiBU
YWdPZmZzZXQgPT0gNCkpOworICAgICAgICBpZiBjb25zdGV4cHIgKFBheWxvYWRPZmZzZXQgPCBU
YWdPZmZzZXQpCisgICAgICAgICAgICBsb2FkUGFpcjMyKGFkZHJlc3MsIHJlZ3MucGF5bG9hZEdQ
UigpLCByZWdzLnRhZ0dQUigpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbG9hZFBhaXIz
MihhZGRyZXNzLCByZWdzLnRhZ0dQUigpLCByZWdzLnBheWxvYWRHUFIoKSk7CiAjZW5kaWYKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCAyYjMxY2FlMDFiYmJjYWMwNGE3
ZWRkMzEzODlhZDlkZWI4MDZmODA1Li5mNTdhNmUxMzQ1MDU4ZmRiZTg0MjM4ZjIyNzM3NjU3ZDA2
Mzk5YTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0xNTksMTQgKzE1OSwxMSBA
QCB2b2lkIEpJVDo6cmVzZXRTUCgpCiAgICAgY2hlY2tTdGFja1BvaW50ZXJBbGlnbm1lbnQoKTsK
IH0KIAotI2RlZmluZSBORVhUX09QQ09ERShuYW1lKSBcCi0gICAgbV9ieXRlY29kZUluZGV4ID0g
Qnl0ZWNvZGVJbmRleChtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCkgKyBjdXJyZW50SW5zdHJ1Y3Rp
b24tPnNpemUoKSk7IFwKLSAgICBicmVhazsKLQogI2RlZmluZSBORVhUX09QQ09ERV9JTl9NQUlO
KG5hbWUpIFwKICAgICBpZiAocHJldmlvdXNTbG93Q2FzZXNTaXplICE9IG1fc2xvd0Nhc2VzLnNp
emUoKSkgXAogICAgICAgICArK21fYnl0ZWNvZGVDb3VudEhhdmluZ1Nsb3dDYXNlOyBcCi0gICAg
TkVYVF9PUENPREUobmFtZSkKKyAgICBtX2J5dGVjb2RlSW5kZXggPSBCeXRlY29kZUluZGV4KG1f
Ynl0ZWNvZGVJbmRleC5vZmZzZXQoKSArIGN1cnJlbnRJbnN0cnVjdGlvbi0+c2l6ZSgpKTsgXAor
ICAgIGJyZWFrOwogCiAjZGVmaW5lIERFRklORV9TTE9XX09QKG5hbWUpIFwKICAgICBjYXNlIG9w
XyMjbmFtZTogeyBcCkBAIC0xODgsMTMgKzE4NSwxMyBAQCB2b2lkIEpJVDo6cmVzZXRTUCgpCiAj
ZGVmaW5lIERFRklORV9TTE9XQ0FTRV9PUChuYW1lKSBcCiAgICAgY2FzZSBuYW1lOiB7IFwKICAg
ICAgICAgZW1pdFNsb3dfIyNuYW1lKGN1cnJlbnRJbnN0cnVjdGlvbiwgaXRlcik7IFwKLSAgICAg
ICAgTkVYVF9PUENPREUobmFtZSk7IFwKKyAgICAgICAgYnJlYWs7IFwKICAgICB9CiAKICNkZWZp
bmUgREVGSU5FX1NMT1dDQVNFX1NMT1dfT1AobmFtZSkgXAogICAgIGNhc2Ugb3BfIyNuYW1lOiB7
IFwKICAgICAgICAgZW1pdFNsb3dDYXNlQ2FsbChjdXJyZW50SW5zdHJ1Y3Rpb24sIGl0ZXIsIHNs
b3dfcGF0aF8jI25hbWUpOyBcCi0gICAgICAgIE5FWFRfT1BDT0RFKG9wXyMjbmFtZSk7IFwKKyAg
ICAgICAgYnJlYWs7IFwKICAgICB9CiAKIHZvaWQgSklUOjplbWl0U2xvd0Nhc2VDYWxsKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImIGl0ZXIsIFNsb3dQYXRoRnVuY3Rpb24gc3R1YikKQEAgLTY3NSwxMiArNjcyLDE0
IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAKICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfV0lUSF9NRVNTQUdFKGl0ZXIgPT0gbV9zbG93Q2FzZXMuZW5kKCkgfHwgZmlyc3RU
by5vZmZzZXQoKSAhPSBpdGVyLT50by5vZmZzZXQoKSwgIk5vdCBlbm91Z2gganVtcHMgbGlua2Vk
IGluIHNsb3cgY2FzZSBjb2RlZ2VuLiIpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX01F
U1NBR0UoZmlyc3RUby5vZmZzZXQoKSA9PSAoaXRlciAtIDEpLT50by5vZmZzZXQoKSwgIlRvbyBt
YW55IGp1bXBzIGxpbmtlZCBpbiBzbG93IGNhc2UgY29kZWdlbi4iKTsKLSAgICAgICAgCi0gICAg
ICAgIGVtaXRKdW1wU2xvd1RvSG90KGp1bXAoKSwgMCk7CisKKyAgICAgICAganVtcCgpLmxpbmtU
byhmYXN0UGF0aFJlc3VtZVBvaW50KCksIHRoaXMpOwogICAgICAgICArK2J5dGVjb2RlQ291bnRI
YXZpbmdTbG93Q2FzZTsKIAotICAgICAgICBpZiAoVU5MSUtFTFkoc2l6ZU1hcmtlcikpCisgICAg
ICAgIGlmIChVTkxJS0VMWShzaXplTWFya2VyKSkgeworICAgICAgICAgICAgbV9ieXRlY29kZUlu
ZGV4ID0gQnl0ZWNvZGVJbmRleChtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCkgKyBjdXJyZW50SW5z
dHJ1Y3Rpb24tPnNpemUoKSk7CiAgICAgICAgICAgICBtX3ZtLT5qaXRTaXplU3RhdGlzdGljcy0+
bWFya0VuZChXVEZNb3ZlKCpzaXplTWFya2VyKSwgKnRoaXMpOworICAgICAgICB9CiAgICAgfQog
CiAgICAgUkVMRUFTRV9BU1NFUlQoYnl0ZWNvZGVDb3VudEhhdmluZ1Nsb3dDYXNlID09IG1fYnl0
ZWNvZGVDb3VudEhhdmluZ1Nsb3dDYXNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmluZGV4IDU0
ZDU4MmUwZmZiYzRlMDg0ZDk3NDA1ZTgyNDA4YWQwYTQyYTFjYTEuLjBkYjQ3YTJiYzY1ZmMzOGYy
NjkwYTk5YjIxNzEwMzVhOGM5MDgyYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtMjgw
LDYgKzI4MCw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgYWR2YW5jZVRvTmV4
dENoZWNrcG9pbnQoKTsKICAgICAgICAgdm9pZCBlbWl0SnVtcFNsb3dUb0hvdEZvckNoZWNrcG9p
bnQoSnVtcCk7CisgICAgICAgIHZvaWQgc2V0RmFzdFBhdGhSZXN1bWVQb2ludCgpOworICAgICAg
ICBMYWJlbCBmYXN0UGF0aFJlc3VtZVBvaW50KCkgY29uc3Q7CiAKICAgICAgICAgdm9pZCBhZGRT
bG93Q2FzZShKdW1wKTsKICAgICAgICAgdm9pZCBhZGRTbG93Q2FzZShjb25zdCBKdW1wTGlzdCYp
OwpAQCAtNjIwLDcgKzYyMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRT
bG93X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VF
bnRyeT46Oml0ZXJhdG9yJik7CiAKICAgICAgICAgdm9pZCBlbWl0SGFzUHJpdmF0ZShWaXJ0dWFs
UmVnaXN0ZXIgZHN0LCBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSwgVmlydHVhbFJlZ2lzdGVyIHByb3Bl
cnR5T3JCcmFuZCwgQWNjZXNzVHlwZSk7Ci0gICAgICAgIHZvaWQgZW1pdEhhc1ByaXZhdGVTbG93
KFZpcnR1YWxSZWdpc3RlciBkc3QsIFZpcnR1YWxSZWdpc3RlciBiYXNlLCBWaXJ0dWFsUmVnaXN0
ZXIgcHJvcGVydHksIEFjY2Vzc1R5cGUpOworICAgICAgICB2b2lkIGVtaXRIYXNQcml2YXRlU2xv
dyhWaXJ0dWFsUmVnaXN0ZXIgYmFzZSwgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5LCBBY2Nlc3NU
eXBlKTsKIAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KICAgICAgICAgdm9pZCBlbWl0
TmV3RnVuY0NvbW1vbihjb25zdCBJbnN0cnVjdGlvbiopOwpAQCAtNjMwLDggKzYzMiw2IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRWYXJSZWFkT25seUNoZWNrKFJlc29sdmVU
eXBlLCBHUFJSZWcgc2NyYXRjaEdQUik7CiAgICAgICAgIHZvaWQgZW1pdE5vdGlmeVdyaXRlV2F0
Y2hwb2ludChHUFJSZWcgcG9pbnRlclRvU2V0KTsKIAotICAgICAgICB2b2lkIGVtaXRJbml0UmVn
aXN0ZXIoVmlydHVhbFJlZ2lzdGVyKTsKLQogICAgICAgICBib29sIGlzS25vd25DZWxsKFZpcnR1
YWxSZWdpc3Rlcik7CiAKICAgICAgICAgSlNWYWx1ZSBnZXRDb25zdGFudE9wZXJhbmQoVmlydHVh
bFJlZ2lzdGVyKTsKQEAgLTkxMSw2ICs5MTEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
VmVjdG9yPE5lYXJKdW1wUmVjb3JkPiBtX25lYXJKdW1wczsKICAgICAgICAgVmVjdG9yPExhYmVs
PiBtX2xhYmVsczsKICAgICAgICAgSGFzaE1hcDxCeXRlY29kZUluZGV4LCBMYWJlbD4gbV9jaGVj
a3BvaW50TGFiZWxzOworICAgICAgICBIYXNoTWFwPEJ5dGVjb2RlSW5kZXgsIExhYmVsPiBtX2Zh
c3RQYXRoUmVzdW1lTGFiZWxzOwogICAgICAgICBWZWN0b3I8SklUR2V0QnlJZEdlbmVyYXRvcj4g
bV9nZXRCeUlkczsKICAgICAgICAgVmVjdG9yPEpJVEdldEJ5VmFsR2VuZXJhdG9yPiBtX2dldEJ5
VmFsczsKICAgICAgICAgVmVjdG9yPEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcj4gbV9nZXRC
eUlkc1dpdGhUaGlzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRD
YWxsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKaW5kZXggMTE3
ZGZhYzA1MDY3OTUwMzZjNTA0YjNjNzIwNDU1NWE0YjA1ZDIwNC4uZDM2MzYwZTg5OGM1NjVjZWUy
NzQ5MmJlNWJjYzlhNWJhM2RhOGY3MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRDYWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwu
Y3BwCkBAIC0xODUsNiArMTg1LDcgQEAgYm9vbCBKSVQ6OmNvbXBpbGVDYWxsRXZhbChjb25zdCBP
cENhbGxFdmFsJiBieXRlY29kZSkKICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNhbGxFdmFs
LCBhcmd1bWVudEdQUjAsIGFyZ3VtZW50R1BSMSwgYXJndW1lbnRHUFIyKTsKICAgICBhZGRTbG93
Q2FzZShicmFuY2hJZkVtcHR5KHJldHVyblZhbHVlSlNSKSk7CiAKKyAgICBzZXRGYXN0UGF0aFJl
c3VtZVBvaW50KCk7CiAgICAgZW1pdFB1dENhbGxSZXN1bHQoYnl0ZWNvZGUpOwogCiAgICAgcmV0
dXJuIHRydWU7CkBAIC0yMDUsOCArMjA2LDYgQEAgdm9pZCBKSVQ6OmNvbXBpbGVDYWxsRXZhbFNs
b3dDYXNlKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXMKICAg
ICBtYXRlcmlhbGl6ZVBvaW50ZXJJbnRvTWV0YWRhdGEoYnl0ZWNvZGUsIE9wQ2FsbEV2YWw6Ok1l
dGFkYXRhOjpvZmZzZXRPZkNhbGxMaW5rSW5mbygpLCBjYWxsTGlua0luZm9HUFIpOwogICAgIGVt
aXRWaXJ0dWFsQ2FsbFdpdGhvdXRNb3ZpbmdHbG9iYWxPYmplY3QoKm1fdm0sIGNhbGxMaW5rSW5m
b0dQUiwgQ2FsbE1vZGU6OlJlZ3VsYXIpOwogICAgIHJlc2V0U1AoKTsKLQotICAgIGVtaXRQdXRD
YWxsUmVzdWx0KGJ5dGVjb2RlKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgT3A+CkBAIC0zMDIs
OCArMzAxLDkgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uLCB1bnNpZ25lZCBjYWxsTGlua0luZm9JbmQKIAogICAgIG1fY2FsbENvbXBpbGF0
aW9uSW5mb1tjYWxsTGlua0luZm9JbmRleF0uZG9uZUxvY2F0aW9uID0gZG9uZUxvY2F0aW9uOwog
CisgICAgaWYgY29uc3RleHByIChPcDo6b3Bjb2RlSUQgIT0gb3BfaXRlcmF0b3Jfb3BlbiAmJiBP
cDo6b3Bjb2RlSUQgIT0gb3BfaXRlcmF0b3JfbmV4dCkKKyAgICAgICAgc2V0RmFzdFBhdGhSZXN1
bWVQb2ludCgpOwogICAgIHJlc2V0U1AoKTsKLQogICAgIGVtaXRQdXRDYWxsUmVzdWx0KGJ5dGVj
b2RlKTsKIH0KIApAQCAtMzI1LDEzICszMjUsMTEgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGxT
bG93Q2FzZShjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUUK
ICAgICBDYWxsTGlua0luZm86OmVtaXREYXRhSUNTbG93UGF0aCgqbV92bSwgKnRoaXMsIHJlZ1Qy
KTsKIAogICAgIGlmIChvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGwgfHwgb3Bjb2RlSUQgPT0gb3Bf
dGFpbF9jYWxsX3ZhcmFyZ3MgfHwgb3Bjb2RlSUQgPT0gb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJn
dW1lbnRzKSB7CisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICAgICAgYWJvcnRXaXRoUmVhc29uKEpJ
VERpZFJldHVybkZyb21UYWlsQ2FsbCk7CisjZW5kaWYKICAgICAgICAgcmV0dXJuOwogICAgIH0K
LQotICAgIHJlc2V0U1AoKTsKLQotICAgIGVtaXRQdXRDYWxsUmVzdWx0KGJ5dGVjb2RlKTsKIH0K
IAogdm9pZCBKSVQ6OmVtaXRfb3BfY2FsbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQpAQCAtNDcwLDggKzQ2OCwxMiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9v
cGVuKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKIAogdm9pZCBKSVQ6OmVtaXRTbG93
X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogeworICAgIGF1dG8gYnl0ZWNvZGUgPSBp
bnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck9wZW4+KCk7CisKICAgICBsaW5rQWxsU2xvd0Nhc2Vz
KGl0ZXIpOwogICAgIGNvbXBpbGVPcENhbGxTbG93Q2FzZTxPcEl0ZXJhdG9yT3Blbj4oaW5zdHJ1
Y3Rpb24sIGl0ZXIsIG1fY2FsbExpbmtJbmZvSW5kZXgrKyk7CisgICAgcmVzZXRTUCgpOworICAg
IGVtaXRQdXRDYWxsUmVzdWx0KGJ5dGVjb2RlKTsKICAgICBlbWl0SnVtcFNsb3dUb0hvdEZvckNo
ZWNrcG9pbnQoanVtcCgpKTsKIAogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CkBAIC00ODAs
NyArNDgyLDYgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSW5z
dHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0MKICAgICBub3RPYmplY3QuYXBwZW5k
KGJyYW5jaElmTm90Q2VsbChpdGVyYXRvckpTUikpOwogICAgIG5vdE9iamVjdC5hcHBlbmQoYnJh
bmNoSWZOb3RPYmplY3QoaXRlcmF0b3JKU1IucGF5bG9hZEdQUigpKSk7CiAKLSAgICBhdXRvIGJ5
dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JPcGVuPigpOwogICAgIFZpcnR1YWxS
ZWdpc3RlciBuZXh0VlJlZyA9IGJ5dGVjb2RlLm1fbmV4dDsKICAgICBVbmlxdWVkU3RyaW5nSW1w
bCogaWRlbnQgPSB2bSgpLnByb3BlcnR5TmFtZXMtPm5leHQuaW1wbCgpOwogCkBAIC02MTUsOCAr
NjE2LDEyIEBAIHZvaWQgSklUOjplbWl0X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rp
b24qIGluc3RydWN0aW9uKQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dChj
b25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImIGl0ZXIpCiB7CisgICAgYXV0byBieXRlY29kZSA9IGluc3RydWN0aW9uLT5hczxPcEl0
ZXJhdG9yTmV4dD4oKTsKKwogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAgICAgY29tcGls
ZU9wQ2FsbFNsb3dDYXNlPE9wSXRlcmF0b3JOZXh0PihpbnN0cnVjdGlvbiwgaXRlciwgbV9jYWxs
TGlua0luZm9JbmRleCsrKTsKKyAgICByZXNldFNQKCk7CisgICAgZW1pdFB1dENhbGxSZXN1bHQo
Ynl0ZWNvZGUpOwogICAgIGVtaXRKdW1wU2xvd1RvSG90Rm9yQ2hlY2twb2ludChqdW1wKCkpOwog
CiAgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1I7CkBAIC02MjQs
NyArNjI5LDYgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSW5z
dHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0MKIAogICAgIGNvbnN0ZXhwciBKU1Zh
bHVlUmVncyBpdGVyQ2FsbFJlc3VsdEpTUiA9IGRvbnRDbG9iYmVySlNSOwogCi0gICAgYXV0byBi
eXRlY29kZSA9IGluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yTmV4dD4oKTsKICAgICB7CiAgICAg
ICAgIFZpcnR1YWxSZWdpc3RlciBkb25lVlJlZyA9IGJ5dGVjb2RlLm1fZG9uZTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNw
cAppbmRleCA2MmUwOTMwMGM5ZTAwM2NjYzNjZWM2ZWViYWY1M2I1Y2MyYWI0OGY4Li5jNjdiY2Uw
OWZmYmM2MGUyNDMzZTYyMmUzNzgyNzhjZjIwNzRiNGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcApAQCAtMTM1LDE4
ICsxMzUsMTIgQEAgdm9pZCBKSVRHZXRCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1h
Y3JvQXNzZW1ibGVyJiBqaXQpCiAKIHN0YXRpYyB2b2lkIGdlbmVyYXRlR2V0QnlJZElubGluZUFj
Y2VzcyhKSVQmIGppdCwgR1BSUmVnIHN0dWJJbmZvR1BSLCBKU1ZhbHVlUmVncyBiYXNlSlNSLCBH
UFJSZWcgc2NyYXRjaEdQUiwgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSKQogewotICAgIENDYWxsSGVs
cGVyczo6SnVtcExpc3QgZG9uZTsKLQogICAgIGppdC5sb2FkMzIoQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKGJhc2VKU1IucGF5bG9hZEdQUigpLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBz
Y3JhdGNoR1BSKTsKLSAgICBhdXRvIHNraXBJbmxpbmVBY2Nlc3MgPSBqaXQuYnJhbmNoMzIoQ0Nh
bGxIZWxwZXJzOjpOb3RFcXVhbCwgc2NyYXRjaEdQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0
dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZJbmxpbmVBY2Nlc3NCYXNlU3Ry
dWN0dXJlKCkpKTsKKyAgICBhdXRvIGRvSW5saW5lQWNjZXNzID0gaml0LmJyYW5jaDMyKENDYWxs
SGVscGVyczo6RXF1YWwsIHNjcmF0Y2hHUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5m
b0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mSW5saW5lQWNjZXNzQmFzZVN0cnVjdHVy
ZSgpKSk7CisgICAgaml0LmZhckp1bXAoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BS
LCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZDb2RlUHRyKCkpLCBKSVRTdHViUm91dGluZVB0
clRhZyk7CisgICAgZG9JbmxpbmVBY2Nlc3MubGluaygmaml0KTsKICAgICBqaXQubG9hZDMyKEND
YWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNl
dE9mQnlJZFNlbGZPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwogICAgIGppdC5sb2FkUHJvcGVydHko
YmFzZUpTUi5wYXlsb2FkR1BSKCksIHNjcmF0Y2hHUFIsIHJlc3VsdEpTUik7Ci0gICAgYXV0byBm
aW5pc2hlZCA9IGppdC5qdW1wKCk7Ci0KLSAgICBza2lwSW5saW5lQWNjZXNzLmxpbmsoJmppdCk7
Ci0gICAgaml0LmZhckp1bXAoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1
Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZDb2RlUHRyKCkpLCBKSVRTdHViUm91dGluZVB0clRhZyk7
Ci0KLSAgICBmaW5pc2hlZC5saW5rKCZqaXQpOwogfQogCiB2b2lkIEpJVEdldEJ5SWRHZW5lcmF0
b3I6OmdlbmVyYXRlQmFzZWxpbmVEYXRhSUNGYXN0UGF0aChKSVQmIGppdCwgdW5zaWduZWQgc3R1
YkluZm8sIEdQUlJlZyBzdHViSW5mb0dQUikKQEAgLTIyNywxNSArMjIxLDExIEBAIHZvaWQgSklU
UHV0QnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVCYXNlbGluZURhdGFJQ0Zhc3RQYXRoKEpJVCYgaml0
LCB1bnNpZ25lZCBzdHViCiAgICAgdXNpbmcgQmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjpzY3Jh
dGNoMkdQUjsKIAogICAgIGppdC5sb2FkMzIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VKU1Iu
cGF5bG9hZEdQUigpLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsK
LSAgICBhdXRvIHNraXBJbmxpbmVBY2Nlc3MgPSBqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpO
b3RFcXVhbCwgc2NyYXRjaEdQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBT
dHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZJbmxpbmVBY2Nlc3NCYXNlU3RydWN0dXJlKCkpKTsK
KyAgICBhdXRvIGRvSW5saW5lQWNjZXNzID0gaml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6RXF1
YWwsIHNjcmF0Y2hHUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0
dXJlU3R1YkluZm86Om9mZnNldE9mSW5saW5lQWNjZXNzQmFzZVN0cnVjdHVyZSgpKSk7CisgICAg
aml0LmZhckp1bXAoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVT
dHViSW5mbzo6b2Zmc2V0T2ZDb2RlUHRyKCkpLCBKSVRTdHViUm91dGluZVB0clRhZyk7CisgICAg
ZG9JbmxpbmVBY2Nlc3MubGluaygmaml0KTsKICAgICBqaXQubG9hZDMyKENDYWxsSGVscGVyczo6
QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mQnlJZFNlbGZP
ZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwogICAgIGppdC5zdG9yZVByb3BlcnR5KHZhbHVlSlNSLCBi
YXNlSlNSLnBheWxvYWRHUFIoKSwgc2NyYXRjaEdQUiwgc2NyYXRjaDJHUFIpOwotICAgIGF1dG8g
ZmluaXNoZWQgPSBqaXQuanVtcCgpOwotCi0gICAgc2tpcElubGluZUFjY2Vzcy5saW5rKCZqaXQp
OwotICAgIGppdC5mYXJKdW1wKENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3Ry
dWN0dXJlU3R1YkluZm86Om9mZnNldE9mQ29kZVB0cigpKSwgSklUU3R1YlJvdXRpbmVQdHJUYWcp
OwotCi0gICAgZmluaXNoZWQubGluaygmaml0KTsKICAgICBtX2RvbmUgPSBqaXQubGFiZWwoKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNo
ZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdl
bmVyYXRvci5oCmluZGV4IDNlMjZkYjk1N2UzZWQ0NmRmODVjZWViN2UzZDUyYmFiNGQ0YzU0MTEu
LjYyOTI5YzBjMjQ4NGZiOWNhMGVjNjYxYmI3YzBhN2RlNjQ5ZmM5OGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKQEAgLTQ5
LDQ2ICs0OSw0MyBAQCBlbnVtIGNsYXNzIEFjY2Vzc1R5cGUgOiBpbnQ4X3Q7CiBlbnVtIGNsYXNz
IEpJVFR5cGUgOiB1aW50OF90OwogCiBuYW1lc3BhY2UgQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVy
cyB7Citjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgSlNSSW5mbzo6cmV0dXJuVmFs
dWVKU1IgfTsKICNpZiBVU0UoSlNWQUxVRTY0KQogY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VK
U1IgeyBHUFJJbmZvOjpyZWdUMSB9OwogY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNS
IHsgR1BSSW5mbzo6cmVnVDAgfTsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBw
cm9wZXJ0eUpTUiB9OwogY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJl
Z1QzIH07CiBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUMiB9Owog
I2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsg
R1BSSW5mbzo6cmVnVDMsIEdQUkluZm86OnJlZ1QyIH07CiBjb25zdGV4cHIgSlNWYWx1ZVJlZ3Mg
cHJvcGVydHlKU1IgeyBHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVnVDAgfTsKLWNvbnN0ZXhw
ciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBwcm9wZXJ0eUpTUiB9OwogY29uc3RleHByIEdQUlJl
ZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q3IH07CiBjb25zdGV4cHIgR1BSUmVnIHNjcmF0
Y2hHUFIgeyBHUFJJbmZvOjpyZWdUNiB9OwogI2VuZGlmCiB9CiAKIG5hbWVzcGFjZSBCYXNlbGlu
ZURlbEJ5SWRSZWdpc3RlcnMgeworY29uc3RleHByIEpTVmFsdWVSZWdzIHJlc3VsdEpTUiB7IEpT
UkluZm86OnJldHVyblZhbHVlSlNSIH07CiAjaWYgVVNFKEpTVkFMVUU2NCkKIGNvbnN0ZXhwciBK
U1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDEgfTsKLWNvbnN0ZXhwciBKU1ZhbHVl
UmVncyByZXN1bHRKU1IgeyBHUFJJbmZvOjpyZWdUMCB9OwogY29uc3RleHByIEdQUlJlZyBzdHVi
SW5mb0dQUiB7IEdQUkluZm86OnJlZ1QzIH07CiBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIg
eyBHUFJJbmZvOjpyZWdUMiB9OwogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKIGNvbnN0ZXhwciBK
U1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDMsIEdQUkluZm86OnJlZ1QyIH07Ci1j
b25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86
OnJlZ1QwIH07CiBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDcg
fTsKIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1Q2IH07CiAjZW5k
aWYKIH0KIAogbmFtZXNwYWNlIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnMgeworY29uc3RleHBy
IEpTVmFsdWVSZWdzIHJlc3VsdEpTUiB7IEpTUkluZm86OnJldHVyblZhbHVlSlNSIH07CiAjaWYg
VVNFKEpTVkFMVUU2NCkKIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6
cmVnVDAgfTsKIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiB7IEdQUkluZm86OnJl
Z1QxIH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgYmFzZUpTUiB9OwogY29u
c3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QyIH07CiBjb25zdGV4cHIg
R1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUMyB9OwogI2VsaWYgVVNFKEpTVkFMVUUz
Ml82NCkKIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDEsIEdQ
UkluZm86OnJlZ1QwIH07CiBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgeyBHUFJJ
bmZvOjpyZWdUMywgR1BSSW5mbzo6cmVnVDIgfTsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1
bHRKU1IgeyBiYXNlSlNSIH07CiBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5m
bzo6cmVnVDcgfTsKIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1Q2
IH07CiAjZW5kaWYKQEAgLTEzNiwxNiArMTMzLDE1IEBAIHN0YXRpY19hc3NlcnQoQXNzZW1ibHlI
ZWxwZXJzOjpub092ZXJsYXAodmFsdWVKU1IsIHByb3RvSlNSLCBzdHViSW5mb0dQUiwgc2NyYXRj
CiB9CiAKIG5hbWVzcGFjZSBCYXNlbGluZUluQnlWYWxSZWdpc3RlcnMgeworY29uc3RleHByIEpT
VmFsdWVSZWdzIHJlc3VsdEpTUiB7IEpTUkluZm86OnJldHVyblZhbHVlSlNSIH07CiAjaWYgVVNF
KEpTVkFMVUU2NCkKIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVn
VDAgfTsKIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiB7IEdQUkluZm86OnJlZ1Qx
IH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgYmFzZUpTUiB9OwogY29uc3Rl
eHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QyIH07CiBjb25zdGV4cHIgR1BS
UmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUMyB9OwogI2VsaWYgVVNFKEpTVkFMVUUzMl82
NCkKIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDEsIEdQUklu
Zm86OnJlZ1QwIH07CiBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgIHsgR1BSSW5m
bzo6cmVnVDMsIEdQUkluZm86OnJlZ1QyIH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0
SlNSIHsgYmFzZUpTUiB9OwogY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86
OnJlZ1Q3IH07CiBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUNiB9
OwogI2VuZGlmCkBAIC0xNTQsMzEgKzE1MCwyOSBAQCBzdGF0aWNfYXNzZXJ0KHByb3BlcnR5SlNS
ID09IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSKTsKIH0KIAogbmFtZXNw
YWNlIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVycyB7Citjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVz
dWx0SlNSIHsgSlNSSW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsKK2NvbnN0ZXhwciBKU1ZhbHVlUmVn
cyBiYXNlSlNSIHsgSlNSSW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsKICNpZiBVU0UoSlNWQUxVRTY0
KQotY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMCB9OwotY29u
c3RleHByIEpTVmFsdWVSZWdzIHJlc3VsdEpTUiB7IGJhc2VKU1IgfTsKIGNvbnN0ZXhwciBHUFJS
ZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMSB9OwogY29uc3RleHByIEdQUlJlZyBzY3Jh
dGNoR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBkb250Q2xv
YmJlckpTUiB7IEdQUkluZm86OnJlZ1QzIH07CiAjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQotY29u
c3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVn
VDAgfTsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBiYXNlSlNSIH07CiBjb25z
dGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKIGNvbnN0ZXhwciBH
UFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1QzIH07CiBjb25zdGV4cHIgSlNWYWx1ZVJl
Z3MgZG9udENsb2JiZXJKU1IgeyBHUFJJbmZvOjpyZWdUNiwgR1BSSW5mbzo6cmVnVDcgfTsKICNl
bmRpZgorc3RhdGljX2Fzc2VydChBc3NlbWJseUhlbHBlcnM6Om5vT3ZlcmxhcChiYXNlSlNSLCBz
dHViSW5mb0dQUiwgc2NyYXRjaEdQUiwgZG9udENsb2JiZXJKU1IpKTsKIH0KIAogbmFtZXNwYWNl
IEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzIHsKK2NvbnN0ZXhwciBKU1ZhbHVlUmVn
cyByZXN1bHRKU1IgeyBKU1JJbmZvOjpyZXR1cm5WYWx1ZUpTUiB9OwogI2lmIFVTRShKU1ZBTFVF
NjQpCiBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QwIH07Ci1j
b25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgYmFzZUpTUiB9OwogY29uc3RleHByIEpT
VmFsdWVSZWdzIHRoaXNKU1IgeyBHUFJJbmZvOjpyZWdUMSB9OwogY29uc3RleHByIEdQUlJlZyBz
dHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QyIH07CiBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hH
UFIgeyBHUFJJbmZvOjpyZWdUMyB9OwogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKIGNvbnN0ZXhw
ciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1QwIH07
Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgYmFzZUpTUiB9OwogY29uc3RleHBy
IEpTVmFsdWVSZWdzIHRoaXNKU1IgeyBHUFJJbmZvOjpyZWdUMywgR1BSSW5mbzo6cmVnVDIgfTsK
IGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNyB9OwogY29uc3Rl
eHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDYgfTsKQEAgLTE4Nyw3ICsxODEs
NyBAQCBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUNiB9OwogCiBu
YW1lc3BhY2UgQmFzZWxpbmVJbkJ5SWRSZWdpc3RlcnMgewogY29uc3RleHByIEpTVmFsdWVSZWdz
IGJhc2VKU1IgeyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1IgfTsKLWNvbnN0ZXhw
ciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnJlc3Vs
dEpTUiB9OworY29uc3RleHByIEpTVmFsdWVSZWdzIHJlc3VsdEpTUiB7IEpTUkluZm86OnJldHVy
blZhbHVlSlNSIH07CiBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgQmFzZWxpbmVHZXRC
eUlkUmVnaXN0ZXJzOjpzdHViSW5mb0dQUiB9OwogY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BS
IHsgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpzY3JhdGNoR1BSIH07CiB9CkBAIC0yMDQsNyAr
MTk4LDcgQEAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMSwg
R1BSSW5mbzo6cmVnVDAgfTsKIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiB7IEdQUklu
Zm86OnJlZ1QzLCBHUFJJbmZvOjpyZWdUMiB9OwogY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQ
UiB7IEdQUkluZm86OnJlZ1Q3IH07CiBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJ
bmZvOjpyZWdUNiB9OwotY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMkdQUiB7IEdQUkluZm86OnJl
Z1Q0IH07Citjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyR1BSIHsgYmFzZUpTUi50YWdHUFIoKSB9
OyAvLyBSZXVzaW5nIHJlZ1QxIGZvciBiZXR0ZXIgY29kZSBzaXplIG9uIEFSTV9USFVNQjIKICNl
bmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGlu
ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCmluZGV4IDBlNTJk
OGY2MmY4ZDdhNTcyMTU4NDE1YzYyZjk4NmY4M2VjZDJkMDQuLjE3ZjQ2ZjdhMmQ4OTQ0MzhjM2I5
YTBkZTY1YzZmMzFiODZjNjQ0MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5l
cy5oCkBAIC0yMTUsNiArMjE1LDI2IEBAIGlubGluZSB2b2lkIEpJVDo6ZW1pdEp1bXBTbG93VG9I
b3RGb3JDaGVja3BvaW50KEp1bXAganVtcCkKICAgICBqdW1wLmxpbmtUbyhpdGVyLT52YWx1ZSwg
dGhpcyk7CiB9CiAKK2lubGluZSB2b2lkIEpJVDo6c2V0RmFzdFBhdGhSZXN1bWVQb2ludCgpCit7
CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX2J5dGVjb2RlSW5kZXgsICJUaGlzIG1ldGhvZCBz
aG91bGQgb25seSBiZSBjYWxsZWQgZHVyaW5nIGhvdC9jb2xkIHBhdGggZ2VuZXJhdGlvbiwgc28g
dGhhdCBtX2J5dGVjb2RlSW5kZXggaXMgc2V0Iik7CisgICAgYXV0byByZXN1bHQgPSBtX2Zhc3RQ
YXRoUmVzdW1lTGFiZWxzLmFkZChtX2J5dGVjb2RlSW5kZXgsIGxhYmVsKCkpOworICAgIEFTU0VS
VF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7Cit9CisKK2lubGluZSBNYWNyb0Fz
c2VtYmxlcjo6TGFiZWwgSklUOjpmYXN0UGF0aFJlc3VtZVBvaW50KCkgY29uc3QKK3sKKyAgICBB
U1NFUlRfV0lUSF9NRVNTQUdFKG1fYnl0ZWNvZGVJbmRleCwgIlRoaXMgbWV0aG9kIHNob3VsZCBv
bmx5IGJlIGNhbGxlZCBkdXJpbmcgaG90L2NvbGQgcGF0aCBnZW5lcmF0aW9uLCBzbyB0aGF0IG1f
Ynl0ZWNvZGVJbmRleCBpcyBzZXQiKTsKKyAgICAvLyBMb2NhdGlvbiBzZXQgYnkgc2V0RmFzdFBh
dGhSZXN1bWVQb2ludAorICAgIGF1dG8gaXRlciA9IG1fZmFzdFBhdGhSZXN1bWVMYWJlbHMuZmlu
ZChtX2J5dGVjb2RlSW5kZXgpOworICAgIGlmIChpdGVyICE9IG1fZmFzdFBhdGhSZXN1bWVMYWJl
bHMuZW5kKCkpCisgICAgICAgIHJldHVybiBpdGVyLT52YWx1ZTsKKyAgICAvLyBOZXh0IGluc3Ry
dWN0aW9uIGluIHNlcXVlbmNlCisgICAgY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiA9IG1fdW5saW5rZWRDb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmF0KG1fYnl0ZWNvZGVJ
bmRleCkucHRyKCk7CisgICAgcmV0dXJuIG1fbGFiZWxzW21fYnl0ZWNvZGVJbmRleC5vZmZzZXQo
KSArIGN1cnJlbnRJbnN0cnVjdGlvbi0+c2l6ZSgpXTsKK30KKworCiBBTFdBWVNfSU5MSU5FIHZv
aWQgSklUOjphZGRTbG93Q2FzZShKdW1wIGp1bXApCiB7CiAgICAgQVNTRVJUKG1fYnl0ZWNvZGVJ
bmRleCk7IC8vIFRoaXMgbWV0aG9kIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBkdXJpbmcgaG90L2Nv
bGQgcGF0aCBnZW5lcmF0aW9uLCBzbyB0aGF0IG1fYnl0ZWNvZGVJbmRleCBpcyBzZXQuCkBAIC0z
MjksMTEgKzM0OSw2IEBAIEFMV0FZU19JTkxJTkUgZG91YmxlIEpJVDo6Z2V0T3BlcmFuZENvbnN0
YW50RG91YmxlKFZpcnR1YWxSZWdpc3RlciBzcmMpCiB9CiAjZW5kaWYKIAotQUxXQVlTX0lOTElO
RSB2b2lkIEpJVDo6ZW1pdEluaXRSZWdpc3RlcihWaXJ0dWFsUmVnaXN0ZXIgZHN0KQotewotICAg
IHN0b3JlVHJ1c3RlZFZhbHVlKGpzVW5kZWZpbmVkKCksIGFkZHJlc3NGb3IoZHN0KSk7Ci19Ci0K
IEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoVmlydHVhbFJl
Z2lzdGVyIHNyYywgSlNWYWx1ZVJlZ3MgZHN0KQogewogICAgIEFTU0VSVChtX2J5dGVjb2RlSW5k
ZXgpOyAvLyBUaGlzIG1ldGhvZCBzaG91bGQgb25seSBiZSBjYWxsZWQgZHVyaW5nIGhvdC9jb2xk
IHBhdGggZ2VuZXJhdGlvbiwgc28gdGhhdCBtX2J5dGVjb2RlSW5kZXggaXMgc2V0LgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggNGM4NjMxNDlhZGI5YzkzMDAz
NDk4ODcxNzExMWMwMjQ5NzM1ZjNmZi4uMGIzYjVmY2Q5M2FiMTJlZDQ0MDYyZTJlYmVlNjhjODZm
NGRmZjJlZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCkBAIC0x
MjUzLDEwICsxMjUzLDEyIEBAIHZvaWQgSklUOjplbWl0X29wX2VudGVyKGNvbnN0IEluc3RydWN0
aW9uKikKICAgICAvLyBvYmplY3QgbGlmZXRpbWUgYW5kIGluY3JlYXNpbmcgR0MgcHJlc3N1cmUu
CiAgICAgc2l6ZV90IGNvdW50ID0gbV91bmxpbmtlZENvZGVCbG9jay0+bnVtVmFycygpOwogI2lm
ICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICBmb3IgKHNpemVfdCBqID0gQ29kZUJsb2Nr
OjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCk7IGogPCBj
b3VudDsgKytqKQotICAgICAgICBlbWl0SW5pdFJlZ2lzdGVyKHZpcnR1YWxSZWdpc3RlckZvckxv
Y2FsKGopKTsKKyAgICBzaXplX3QgZmlyc3QgPSBDb2RlQmxvY2s6OmxsaW50QmFzZWxpbmVDYWxs
ZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKTsKKyAgICBpZiAoZmlyc3QgPCBjb3VudCkK
KyAgICAgICAgbW92ZVRydXN0ZWRWYWx1ZShqc1VuZGVmaW5lZCgpLCBqc1JlZ1QxMCk7CisgICAg
Zm9yIChzaXplX3QgaiA9IGZpcnN0OyBqIDwgY291bnQ7ICsraikKKyAgICAgICAgZW1pdFB1dFZp
cnR1YWxSZWdpc3Rlcih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChqKSwganNSZWdUMTApOwogCi0g
ICAgCiAgICAgbG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIHJl
Z1QwKTsKICAgICBlbWl0V3JpdGVCYXJyaWVyKHJlZ1QwKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCAxMTRhNzRkNGU0OTEzNzZk
Y2M1MjVlZDIxNWQxMTljZTUwNzU2ZmE1Li5jYWM0MGNlZDgyYmQ5NzcyOTY1ZGVlYWExMDkzY2M0
NWYyOWQyOTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3Bl
cnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5
QWNjZXNzLmNwcApAQCAtODksNiArODksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFs
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgICAgIGFkZFNsb3dD
YXNlKCk7CiAgICAgICAgIG1fZ2V0QnlWYWxzLmFwcGVuZChnZW4pOwogCisgICAgICAgIHNldEZh
c3RQYXRoUmVzdW1lUG9pbnQoKTsKICAgICAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShieXRl
Y29kZSwgcmVzdWx0SlNSKTsKICAgICAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIHJl
c3VsdEpTUik7CiAgICAgfQpAQCAtMTAwLDggKzEwMSw2IEBAIHZvaWQgSklUOjpnZW5lcmF0ZUdl
dEJ5VmFsU2xvd0Nhc2UoY29uc3QgT3Bjb2RlVHlwZSYgYnl0ZWNvZGUsIFZlY3RvcjxTbG93Q2Fz
ZUVuCiAgICAgaWYgKCFoYXNBbnlTbG93Q2FzZXMoaXRlcikpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKLQogICAgIGxpbmtBbGxT
bG93Q2FzZXMoaXRlcik7CiAKICAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9nZXRC
eVZhbHNbbV9nZXRCeVZhbEluZGV4KytdOwpAQCAtMTIyLDEwICsxMjEsOCBAQCB2b2lkIEpJVDo6
Z2VuZXJhdGVHZXRCeVZhbFNsb3dDYXNlKGNvbnN0IE9wY29kZVR5cGUmIGJ5dGVjb2RlLCBWZWN0
b3I8U2xvd0Nhc2VFbgogICAgIGxvYWRHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0R1BSKTsKICAg
ICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJ
bmZvR1BSKTsKICAgICBtYXRlcmlhbGl6ZVBvaW50ZXJJbnRvTWV0YWRhdGEoYnl0ZWNvZGUsIE9w
Y29kZVR5cGU6Ok1ldGFkYXRhOjpvZmZzZXRPZkFycmF5UHJvZmlsZSgpLCBwcm9maWxlR1BSKTsK
LSAgICBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGU8U2xvd09wZXJhdGlvbj4oCi0gICAgICAgIGJ5
dGVjb2RlLAorICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4oCiAgICAgICAgIEFkZHJl
c3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24o
KSksCi0gICAgICAgIGRzdCwKICAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwg
cHJvZmlsZUdQUiwgYXJnM0pTUiwgYXJnNEpTUik7CiAjZWxzZQogICAgIFZNJiB2bSA9IHRoaXMt
PnZtKCk7CkBAIC0xNDgsOSArMTQ1LDYgQEAgdm9pZCBKSVQ6OmdlbmVyYXRlR2V0QnlWYWxTbG93
Q2FzZShjb25zdCBPcGNvZGVUeXBlJiBieXRlY29kZSwgVmVjdG9yPFNsb3dDYXNlRW4KICAgICBt
YXRlcmlhbGl6ZVBvaW50ZXJJbnRvTWV0YWRhdGEoYnl0ZWNvZGUsIE9wY29kZVR5cGU6Ok1ldGFk
YXRhOjpvZmZzZXRPZkFycmF5UHJvZmlsZSgpLCBwcm9maWxlR1BSKTsKICAgICBlbWl0TmFrZWRO
ZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVy
YXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2
bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJU
YWc+KCkpOwotCi0gICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShieXRlY29kZSwgcmV0dXJuVmFs
dWVKU1IpOwotICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCByZXR1cm5WYWx1ZUpTUik7
CiAjZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKICAgICBnZW4ucmVwb3J0U2xv
d1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7CkBAIC0yMzEsNiArMjI1LDcgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogICAgIGFkZFNsb3dDYXNlKCk7CiAgICAgbV9nZXRCeVZhbHMuYXBwZW5k
KGdlbik7CiAKKyAgICBzZXRGYXN0UGF0aFJlc3VtZVBvaW50KCk7CiAgICAgZW1pdFZhbHVlUHJv
ZmlsaW5nU2l0ZShieXRlY29kZSwgcmVzdWx0SlNSKTsKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lz
dGVyKGRzdCwgcmVzdWx0SlNSKTsKIH0KQEAgLTIzOCwxNSArMjMzLDEzIEBAIHZvaWQgSklUOjpl
bWl0X29wX2dldF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0
b3ImIGl0ZXIpCiB7CiAgICAgQVNTRVJUKGhhc0FueVNsb3dDYXNlcyhpdGVyKSk7Ci0gICAgYXV0
byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRQcml2YXRlTmFtZT4oKTsK
LSAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7Ci0KICAgICBsaW5rQWxs
U2xvd0Nhc2VzKGl0ZXIpOwogCiAgICAgSklUR2V0QnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0
QnlWYWxzW21fZ2V0QnlWYWxJbmRleCsrXTsKICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFi
ZWwoKTsKIAogI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKKyAgICBhdXRvIGJ5dGVjb2Rl
ID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldFByaXZhdGVOYW1lPigpOwogICAgIHVzaW5n
IFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXpl
KTsKICAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3Vt
ZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7CiAgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5m
b0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCk7CkBAIC0yNTcs
MTIgKzI1MCwxMSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZQogICAgIGxvYWRDb25zdGFudChn
ZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwogICAgIGVt
aXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9iYXNlLCBiYXNlSlNSKTsKICAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fcHJvcGVydHksIHByb3BlcnR5SlNSKTsKLSAg
ICBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGU8U2xvd09wZXJhdGlvbj4oCi0gICAgICAgIGJ5dGVj
b2RlLAorICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4oCiAgICAgICAgIEFkZHJlc3Mo
c3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSks
Ci0gICAgICAgIGRzdCwKICAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFz
ZUpTUiwgcHJvcGVydHlKU1IpOwogI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oY3VycmVudEluc3Ry
dWN0aW9uKTsKICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgIHVpbnQzMl90IGJ5dGVjb2Rl
T2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUlu
ZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwpAQCAtMjc5LDExICsyNzEs
OSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZQogICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxp
bmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwogICAgIGVtaXROYWtlZE5l
YXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxs
R2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogICAgIGVtaXROYWtlZE5lYXJD
YWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxO
b1B0clRhZz4oKSk7Ci0KLSAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKGJ5dGVjb2RlLCByZXR1
cm5WYWx1ZUpTUik7Ci0gICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIHJldHVyblZhbHVl
SlNSKTsKICNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAorICAgIHN0YXRpY19h
c3NlcnQoQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cmVzdWx0SlNSID09IHJldHVyblZhbHVl
SlNSKTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7
CiB9CiAKQEAgLTExMzksOCArMTEyOSwxMCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90cnlfZ2V0X2J5
X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZ2VuLmdlbmVy
YXRlQmFzZWxpbmVEYXRhSUNGYXN0UGF0aCgqdGhpcywgc3R1YkluZm9JbmRleCwgc3R1YkluZm9H
UFIpOwogICAgIGFkZFNsb3dDYXNlKCk7CiAgICAgbV9nZXRCeUlkcy5hcHBlbmQoZ2VuKTsKLSAg
ICAKKwogICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoYnl0ZWNvZGUsIHJlc3VsdEpTUik7CisK
KyAgICBzZXRGYXN0UGF0aFJlc3VtZVBvaW50KCk7CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rl
cihyZXN1bHRWUmVnLCByZXN1bHRKU1IpOwogfQogCkBAIC0xMTQ5LDcgKzExNDEsNiBAQCB2b2lk
IEpJVDo6ZW1pdFNsb3dfb3BfdHJ5X2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uLCBWZWN0bwogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKICAgICBh
dXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFRyeUdldEJ5SWQ+KCk7Ci0g
ICAgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdFZSZWcgPSBieXRlY29kZS5tX2RzdDsKICAgICBjb25z
dCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+aWRlbnRpZmllcihi
eXRlY29kZS5tX3Byb3BlcnR5KSk7CiAKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yJiBnZW4gPSBt
X2dldEJ5SWRzW21fZ2V0QnlJZEluZGV4KytdOwpAQCAtMTE2Nyw3ICsxMTU4LDYgQEAgdm9pZCBK
SVQ6OmVtaXRTbG93X29wX3RyeV9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgVmVjdG8KICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1f
YmFzZSwgYmFzZUpTUik7CiAgICAgY2FsbE9wZXJhdGlvbjxTbG93T3BlcmF0aW9uPigKICAgICAg
ICAgQWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09w
ZXJhdGlvbigpKSwKLSAgICAgICAgcmVzdWx0VlJlZywKICAgICAgICAgZ2xvYmFsT2JqZWN0R1BS
LCBzdHViSW5mb0dQUiwgYmFzZUpTUiwKICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3Jl
YXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fdW5saW5rZWRDb2RlQmxvY2ssICpp
ZGVudCkucmF3Qml0cygpKTsKICNlbHNlCkBAIC0xMTg4LDEwICsxMTc4LDkgQEAgdm9pZCBKSVQ6
OmVtaXRTbG93X29wX3RyeV9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbiwgVmVjdG8KICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShv
cGVyYXRpb25UcnlHZXRCeUlkT3B0aW1pemUpLCBkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0
aW1pemUpPjo6dmFsdWUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xv
d19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRh
Zz4oKSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlv
bkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLQotICAgIGVtaXRQdXRWaXJ0
dWFsUmVnaXN0ZXIocmVzdWx0VlJlZywgcmV0dXJuVmFsdWVHUFIpOwogI2VuZGlmIC8vIEVOQUJM
RShFWFRSQV9DVElfVEhVTktTKQogCisgICAgc3RhdGljX2Fzc2VydChCYXNlbGluZUdldEJ5SWRS
ZWdpc3RlcnM6OnJlc3VsdEpTUiA9PSByZXR1cm5WYWx1ZUpTUik7CiAgICAgZ2VuLnJlcG9ydFNs
b3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQogCkBAIC0xMjIzLDYgKzEyMTIs
NyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgYWRkU2xvd0Nhc2UoKTsKICAgICBtX2dldEJ5SWRz
LmFwcGVuZChnZW4pOwogCisgICAgc2V0RmFzdFBhdGhSZXN1bWVQb2ludCgpOwogICAgIGVtaXRW
YWx1ZVByb2ZpbGluZ1NpdGUoYnl0ZWNvZGUsIHJlc3VsdEpTUik7CiAgICAgZW1pdFB1dFZpcnR1
YWxSZWdpc3RlcihyZXN1bHRWUmVnLCByZXN1bHRKU1IpOwogfQpAQCAtMTIzMiw3ICsxMjIyLDYg
QEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmUKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwog
CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkRGly
ZWN0PigpOwotICAgIFZpcnR1YWxSZWdpc3RlciByZXN1bHRWUmVnID0gYnl0ZWNvZGUubV9kc3Q7
CiAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fdW5saW5rZWRDb2RlQmxvY2stPmlk
ZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOwogCiAgICAgSklUR2V0QnlJZEdlbmVyYXRv
ciYgZ2VuID0gbV9nZXRCeUlkc1ttX2dldEJ5SWRJbmRleCsrXTsKQEAgLTEyNDgsMTAgKzEyMzcs
OCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX2RpcmVjdChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZQogICAgIGxvYWRHbG9iYWxPYmplY3QoZ2xvYmFs
T2JqZWN0R1BSKTsKICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0
YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVj
b2RlLm1fYmFzZSwgYmFzZUpTUik7Ci0gICAgY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlPFNsb3dP
cGVyYXRpb24+KAotICAgICAgICBieXRlY29kZSwKKyAgICBjYWxsT3BlcmF0aW9uPFNsb3dPcGVy
YXRpb24+KAogICAgICAgICBBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6
b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLAotICAgICAgICByZXN1bHRWUmVnLAogICAgICAgICBn
bG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlSlNSLAogICAgICAgICBDYWNoZWFibGVJ
ZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV91bmxpbmtl
ZENvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkpOwogI2Vsc2UKQEAgLTEyNzIsMTEgKzEyNTks
OSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX2RpcmVjdChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZQogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19z
YW1lPGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWREaXJlY3RPcHRpbWl6ZSksIGRlY2x0eXBlKG9w
ZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk+Ojp2YWx1ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwo
dm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0
YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElT
dHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwot
Ci0gICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShieXRlY29kZSwgcmV0dXJuVmFsdWVKU1IpOwot
ICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0VlJlZywgcmV0dXJuVmFsdWVKU1IpOwog
I2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCisgICAgc3RhdGljX2Fzc2VydChC
YXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUiA9PSByZXR1cm5WYWx1ZUpTUik7CiAg
ICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQogCkBA
IC0xMzIwLDYgKzEzMDUsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBhZGRTbG93Q2FzZSgpOwogICAgIG1f
Z2V0QnlJZHMuYXBwZW5kKGdlbik7CiAKKyAgICBzZXRGYXN0UGF0aFJlc3VtZVBvaW50KCk7CiAg
ICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShieXRlY29kZSwgcmVzdWx0SlNSKTsKICAgICBlbWl0
UHV0VmlydHVhbFJlZ2lzdGVyKHJlc3VsdFZSZWcsIHJlc3VsdEpTUik7CiB9CkBAIC0xMzI5LDcg
KzEzMTUsNiBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbAogICAgIGxpbmtBbGxTbG93Q2FzZXMo
aXRlcik7CiAKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdl
dEJ5SWQ+KCk7Ci0gICAgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdFZSZWcgPSBieXRlY29kZS5tX2Rz
dDsKICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+
aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7CiAKICAgICBKSVRHZXRCeUlkR2VuZXJh
dG9yJiBnZW4gPSBtX2dldEJ5SWRzW21fZ2V0QnlJZEluZGV4KytdOwpAQCAtMTM0NSwxMCArMTMz
MCw4IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsCiAgICAgbG9hZEdsb2JhbE9iamVjdChnbG9i
YWxPYmplY3RHUFIpOwogICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29u
c3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0
ZWNvZGUubV9iYXNlLCBiYXNlSlNSKTsKLSAgICBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGU8U2xv
d09wZXJhdGlvbj4oCi0gICAgICAgIGJ5dGVjb2RlLAorICAgIGNhbGxPcGVyYXRpb248U2xvd09w
ZXJhdGlvbj4oCiAgICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZv
OjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAgIHJlc3VsdFZSZWcsCiAgICAgICAg
IGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VKU1IsCiAgICAgICAgIENhY2hlYWJs
ZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX3VubGlu
a2VkQ29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSk7CiAjZWxzZQpAQCAtMTM2OCwxMSArMTM1
MSw5IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsCiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKENh
Y2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayht
X3VubGlua2VkQ29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSksIHByb3BlcnR5R1BSKTsKICAg
ICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBh
cmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogICAgIGVtaXROYWtl
ZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2Vk
Q29kZTxOb1B0clRhZz4oKSk7Ci0KLSAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKGJ5dGVjb2Rl
LCByZXR1cm5WYWx1ZUpTUik7Ci0gICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihyZXN1bHRWUmVn
LCByZXR1cm5WYWx1ZUpTUik7CiAjZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAK
KyAgICBzdGF0aWNfYXNzZXJ0KEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSID09
IHJldHVyblZhbHVlSlNSKTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVn
aW4sIENhbGwoKSk7CiB9CiAKQEAgLTE0MDksNiArMTM5MCw3IEBAIHZvaWQgSklUOjplbWl0X29w
X2dldF9ieV9pZF93aXRoX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKICAgICBhZGRTbG93Q2FzZSgpOwogICAgIG1fZ2V0QnlJZHNXaXRoVGhpcy5hcHBlbmQoZ2Vu
KTsKIAorICAgIHNldEZhc3RQYXRoUmVzdW1lUG9pbnQoKTsKICAgICBlbWl0VmFsdWVQcm9maWxp
bmdTaXRlKGJ5dGVjb2RlLCByZXN1bHRKU1IpOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIo
cmVzdWx0VlJlZywgcmVzdWx0SlNSKTsKIH0KQEAgLTE0NTUsNyArMTQzNyw2IEBAIHZvaWQgSklU
OjplbWl0U2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24sCiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAogICAgIGF1dG8g
Ynl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZFdpdGhUaGlzPigpOwot
ICAgIFZpcnR1YWxSZWdpc3RlciByZXN1bHRWUmVnID0gYnl0ZWNvZGUubV9kc3Q7CiAgICAgY29u
c3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fdW5saW5rZWRDb2RlQmxvY2stPmlkZW50aWZpZXIo
Ynl0ZWNvZGUubV9wcm9wZXJ0eSkpOwogCiAgICAgSklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9y
JiBnZW4gPSBtX2dldEJ5SWRzV2l0aFRoaXNbbV9nZXRCeUlkV2l0aFRoaXNJbmRleCsrXTsKQEAg
LTE0NzMsMTAgKzE0NTQsOCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhf
dGhpcyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLAogICAgIGxvYWRDb25z
dGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwog
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9iYXNlLCBiYXNlSlNSKTsKICAg
ICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fdGhpc1ZhbHVlLCB0aGlzSlNSKTsK
LSAgICBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGU8U2xvd09wZXJhdGlvbj4oCi0gICAgICAgIGJ5
dGVjb2RlLAorICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4oCiAgICAgICAgIEFkZHJl
c3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24o
KSksCi0gICAgICAgIHJlc3VsdFZSZWcsCiAgICAgICAgIGdsb2JhbE9iamVjdEdQUiwgc3R1Yklu
Zm9HUFIsIGJhc2VKU1IsIHRoaXNKU1IsCiAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNy
ZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX3VubGlua2VkQ29kZUJsb2NrLCAq
aWRlbnQpLnJhd0JpdHMoKSk7CiAjZWxzZQpAQCAtMTQ5OCwxMSArMTQ3Nyw5IEBAIHZvaWQgSklU
OjplbWl0U2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24sCiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKENhY2hlYWJsZUlkZW50aWZp
ZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX3VubGlua2VkQ29kZUJs
b2NrLCAqaWRlbnQpLnJhd0JpdHMoKSksIHByb3BlcnR5R1BSKTsKICAgICBlbWl0TmFrZWROZWFy
Q2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpc19wcmVwYXJlQ2Fs
bEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKICAgICBlbWl0TmFrZWROZWFy
Q2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8
Tm9QdHJUYWc+KCkpOwotCi0gICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShieXRlY29kZSwgcmV0
dXJuVmFsdWVKU1IpOwotICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0VlJlZywgcmV0
dXJuVmFsdWVKU1IpOwogI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCisgICAg
c3RhdGljX2Fzc2VydChCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6cmVzdWx0SlNS
ID09IHJldHVyblZhbHVlSlNSKTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRo
QmVnaW4sIENhbGwoKSk7CiB9CiAKQEAgLTE3MDgsNiArMTY4NSw3IEBAIHZvaWQgSklUOjplbWl0
X29wX2luX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAg
YWRkU2xvd0Nhc2UoKTsKICAgICBtX2luQnlJZHMuYXBwZW5kKGdlbik7CiAKKyAgICBzZXRGYXN0
UGF0aFJlc3VtZVBvaW50KCk7CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihyZXN1bHRWUmVn
LCByZXN1bHRKU1IpOwogfQogCkBAIC0xNzE2LDcgKzE2OTQsNiBAQCB2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfaW5fYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVj
dG9yPFNsbwogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKICAgICBhdXRvIGJ5dGVjb2Rl
ID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEluQnlJZD4oKTsKLSAgICBWaXJ0dWFsUmVnaXN0
ZXIgcmVzdWx0VlJlZyA9IGJ5dGVjb2RlLm1fZHN0OwogICAgIGNvbnN0IElkZW50aWZpZXIqIGlk
ZW50ID0gJihtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVy
dHkpKTsKIAogICAgIEpJVEluQnlJZEdlbmVyYXRvciYgZ2VuID0gbV9pbkJ5SWRzW21faW5CeUlk
SW5kZXgrK107CkBAIC0xNzM0LDcgKzE3MTEsNiBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5f
YnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsbwog
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9iYXNlLCBiYXNlSlNSKTsKICAg
ICBjYWxsT3BlcmF0aW9uPFNsb3dPcGVyYXRpb24+KAogICAgICAgICBBZGRyZXNzKHN0dWJJbmZv
R1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLAotICAgICAg
ICByZXN1bHRWUmVnLAogICAgICAgICBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNl
SlNSLAogICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93
bmVkQnlDb2RlQmxvY2sobV91bmxpbmtlZENvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkpOwog
I2Vsc2UKQEAgLTE3NTcsMTAgKzE3MzMsOSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlf
aWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsbwogICAg
IHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKG9wZXJhdGlvbkluQnlJZE9wdGlt
aXplKSwgZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKT46OnZhbHVlKTsKICAgICBl
bWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVD
YWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogICAgIGVtaXROYWtlZE5l
YXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29k
ZTxOb1B0clRhZz4oKSk7Ci0KLSAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHJlc3VsdFZSZWcs
IHJldHVyblZhbHVlR1BSKTsKICNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAor
ICAgIHN0YXRpY19hc3NlcnQoQmFzZWxpbmVJbkJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUiA9PSBy
ZXR1cm5WYWx1ZUpTUik7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2lu
LCBDYWxsKCkpOwogfQogCkBAIC0xNzk2LDYgKzE3NzEsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9p
bl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBhZGRT
bG93Q2FzZSgpOwogICAgIG1faW5CeVZhbHMuYXBwZW5kKGdlbik7CiAKKyAgICBzZXRGYXN0UGF0
aFJlc3VtZVBvaW50KCk7CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIHJlc3VsdEpT
Uik7CiB9CiAKQEAgLTE4MDQsNyArMTc4MCw2IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9pbl9i
eV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsCiAg
ICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50
SW5zdHJ1Y3Rpb24tPmFzPE9wSW5CeVZhbD4oKTsKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0g
Ynl0ZWNvZGUubV9kc3Q7CiAKICAgICBKSVRJbkJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2luQnlW
YWxzW21faW5CeVZhbEluZGV4KytdOwogCkBAIC0xODI1LDcgKzE4MDAsNiBAQCB2b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfaW5fYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24sIFZlY3RvcjxTbAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9wcm9w
ZXJ0eSwgcHJvcGVydHlKU1IpOwogICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4oCiAg
ICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNs
b3dPcGVyYXRpb24oKSksCi0gICAgICAgIGRzdCwKICAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBz
dHViSW5mb0dQUiwgcHJvZmlsZUdQUiwgYmFzZUpTUiwgcHJvcGVydHlKU1IpOwogI2Vsc2UKICAg
ICBWTSYgdm0gPSB0aGlzLT52bSgpOwpAQCAtMTg0OSwxMCArMTgyMyw5IEBAIHZvaWQgSklUOjpl
bWl0U2xvd19vcF9pbl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
biwgVmVjdG9yPFNsCiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUob3Bl
cmF0aW9uSW5CeVZhbE9wdGltaXplKSwgZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6
ZSk+Ojp2YWx1ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29w
X2dldF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4o
KSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdl
bmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLQotICAgIGVtaXRQdXRWaXJ0dWFs
UmVnaXN0ZXIoZHN0LCByZXR1cm5WYWx1ZUdQUik7CiAjZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NU
SV9USFVOS1MpCiAKKyAgICBzdGF0aWNfYXNzZXJ0KEJhc2VsaW5lSW5CeVZhbFJlZ2lzdGVyczo6
cmVzdWx0SlNSID09IHJldHVyblZhbHVlSlNSKTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxs
KGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7CiB9CiAKQEAgLTE4ODEsMTAgKzE4NTQsMTEgQEAgdm9p
ZCBKSVQ6OmVtaXRIYXNQcml2YXRlKFZpcnR1YWxSZWdpc3RlciBkc3QsIFZpcnR1YWxSZWdpc3Rl
ciBiYXNlLCBWaXJ0dWFsUmVnaXMKICAgICBhZGRTbG93Q2FzZSgpOwogICAgIG1faW5CeVZhbHMu
YXBwZW5kKGdlbik7CiAKKyAgICBzZXRGYXN0UGF0aFJlc3VtZVBvaW50KCk7CiAgICAgZW1pdFB1
dFZpcnR1YWxSZWdpc3Rlcihkc3QsIHJlc3VsdEpTUik7CiB9CiAKLXZvaWQgSklUOjplbWl0SGFz
UHJpdmF0ZVNsb3coVmlydHVhbFJlZ2lzdGVyIGRzdCwgVmlydHVhbFJlZ2lzdGVyIGJhc2UsIFZp
cnR1YWxSZWdpc3RlciBwcm9wZXJ0eSwgQWNjZXNzVHlwZSB0eXBlKQordm9pZCBKSVQ6OmVtaXRI
YXNQcml2YXRlU2xvdyhWaXJ0dWFsUmVnaXN0ZXIgYmFzZSwgVmlydHVhbFJlZ2lzdGVyIHByb3Bl
cnR5LCBBY2Nlc3NUeXBlIHR5cGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGJhc2UpOwogICAgIFVO
VVNFRF9QQVJBTShwcm9wZXJ0eSk7CkBAIC0xOTA2LDcgKzE4ODAsNiBAQCB2b2lkIEpJVDo6ZW1p
dEhhc1ByaXZhdGVTbG93KFZpcnR1YWxSZWdpc3RlciBkc3QsIFZpcnR1YWxSZWdpc3RlciBiYXNl
LCBWaXJ0dWFsUgogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHByb3BlcnR5
SlNSKTsKICAgICBjYWxsT3BlcmF0aW9uPFNsb3dPcGVyYXRpb24+KAogICAgICAgICBBZGRyZXNz
KHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkp
LAotICAgICAgICBkc3QsCiAgICAgICAgIGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJh
c2VKU1IsIHByb3BlcnR5SlNSKTsKICNlbHNlCiAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKQEAg
LTE5MjcsMTAgKzE5MDAsOSBAQCB2b2lkIEpJVDo6ZW1pdEhhc1ByaXZhdGVTbG93KFZpcnR1YWxS
ZWdpc3RlciBkc3QsIFZpcnR1YWxSZWdpc3RlciBiYXNlLCBWaXJ0dWFsUgogICAgIHN0YXRpY19h
c3NlcnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKG9wZXJhdGlvbkhhc1ByaXZhdGVCcmFuZE9wdGlt
aXplKSwgZGVjbHR5cGUob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk+Ojp2YWx1ZSk7
CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9wcml2YXRl
X25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAg
ICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRv
cikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLQotICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0
ZXIoZHN0LCByZXR1cm5WYWx1ZUdQUik7CiAjZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVO
S1MpCiAKKyAgICBzdGF0aWNfYXNzZXJ0KEJhc2VsaW5lSW5CeVZhbFJlZ2lzdGVyczo6cmVzdWx0
SlNSID09IHJldHVyblZhbHVlSlNSKTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQ
YXRoQmVnaW4sIENhbGwoKSk7CiB9CiAKQEAgLTE5NDUsNyArMTkxNyw3IEBAIHZvaWQgSklUOjpl
bWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24sIFZlCiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAogICAgIGF1dG8gYnl0
ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSGFzUHJpdmF0ZU5hbWU+KCk7Ci0gICAg
ZW1pdEhhc1ByaXZhdGVTbG93KGJ5dGVjb2RlLm1fZHN0LCBieXRlY29kZS5tX2Jhc2UsIGJ5dGVj
b2RlLm1fcHJvcGVydHksIEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVOYW1lKTsKKyAgICBlbWl0SGFz
UHJpdmF0ZVNsb3coYnl0ZWNvZGUubV9iYXNlLCBieXRlY29kZS5tX3Byb3BlcnR5LCBBY2Nlc3NU
eXBlOjpIYXNQcml2YXRlTmFtZSk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2hhc19wcml2YXRl
X2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC0xOTU5LDcg
KzE5MzEsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaGFzX3ByaXZhdGVfYnJhbmQoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVgogICAgIGxpbmtBbGxTbG93Q2FzZXMo
aXRlcik7CiAKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEhh
c1ByaXZhdGVCcmFuZD4oKTsKLSAgICBlbWl0SGFzUHJpdmF0ZVNsb3coYnl0ZWNvZGUubV9kc3Qs
IGJ5dGVjb2RlLm1fYmFzZSwgYnl0ZWNvZGUubV9icmFuZCwgQWNjZXNzVHlwZTo6SGFzUHJpdmF0
ZUJyYW5kKTsKKyAgICBlbWl0SGFzUHJpdmF0ZVNsb3coYnl0ZWNvZGUubV9iYXNlLCBieXRlY29k
ZS5tX2JyYW5kLCBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlQnJhbmQpOwogfQogCiB2b2lkIEpJVDo6
ZW1pdF9vcF9yZXNvbHZlX3Njb3BlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCkBAIC0yOTIzLDYgKzI4OTUsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2dl
dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogICAgIGRv
bmVDYXNlcy5saW5rKHRoaXMpOwogCisgICAgc2V0RmFzdFBhdGhSZXN1bWVQb2ludCgpOwogICAg
IGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoYnl0ZWNvZGUsIHJldHVyblZhbHVlSlNSKTsKICAgICBl
bWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgcmV0dXJuVmFsdWVKU1IpOwogfQpAQCAtMzAzMSwx
MyArMzAwNCwyMSBAQCB2b2lkIEpJVDo6ZW1pdFdyaXRlQmFycmllcihWaXJ0dWFsUmVnaXN0ZXIg
b3duZXIsIFZpcnR1YWxSZWdpc3RlciB2YWx1ZSwgV3JpdGVCYQogICAgICAgICB2YWx1ZU5vdENl
bGwgPSBicmFuY2hJZk5vdENlbGwocmVnVDApOwogICAgIH0KIAotICAgIGVtaXRHZXRWaXJ0dWFs
UmVnaXN0ZXIob3duZXIsIGpzUmVnVDEwKTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIGFyZzFHUFIg
PSBwcmVmZXJyZWRBcmd1bWVudEdQUjxkZWNsdHlwZShvcGVyYXRpb25Xcml0ZUJhcnJpZXJTbG93
UGF0aCksIDE+KCk7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJl
Z3MgdG1wSlNSIHsgYXJnMUdQUiB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICBjb25z
dGV4cHIgSlNWYWx1ZVJlZ3MgdG1wSlNSIHsgcmVnVDAsIGFyZzFHUFIgfTsKKyNlbmRpZgorICAg
IHN0YXRpY19hc3NlcnQobm9PdmVybGFwKHJlZ1QwLCBhcmcxR1BSLCByZWdUMikpOworCisgICAg
ZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihvd25lciwgdG1wSlNSKTsKICAgICBKdW1wIG93bmVyTm90
Q2VsbDsKICAgICBpZiAobW9kZSA9PSBTaG91bGRGaWx0ZXJCYXNlIHx8IG1vZGUgPT0gU2hvdWxk
RmlsdGVyQmFzZUFuZFZhbHVlKQotICAgICAgICBvd25lck5vdENlbGwgPSBicmFuY2hJZk5vdENl
bGwoanNSZWdUMTApOworICAgICAgICBvd25lck5vdENlbGwgPSBicmFuY2hJZk5vdENlbGwodG1w
SlNSKTsKIAotICAgIEp1bXAgb3duZXJJc1JlbWVtYmVyZWRPckluRWRlbiA9IGJhcnJpZXJCcmFu
Y2godm0oKSwganNSZWdUMTAucGF5bG9hZEdQUigpLCByZWdUMik7Ci0gICAgY2FsbE9wZXJhdGlv
bk5vRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uV3JpdGVCYXJyaWVyU2xvd1BhdGgsICZ2bSgpLCBq
c1JlZ1QxMC5wYXlsb2FkR1BSKCkpOworICAgIEp1bXAgb3duZXJJc1JlbWVtYmVyZWRPckluRWRl
biA9IGJhcnJpZXJCcmFuY2godm0oKSwgdG1wSlNSLnBheWxvYWRHUFIoKSwgcmVnVDIpOworICAg
IGNhbGxPcGVyYXRpb25Ob0V4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbldyaXRlQmFycmllclNsb3dQ
YXRoLCAmdm0oKSwgdG1wSlNSLnBheWxvYWRHUFIoKSk7CiAgICAgb3duZXJJc1JlbWVtYmVyZWRP
ckluRWRlbi5saW5rKHRoaXMpOwogCiAgICAgaWYgKG1vZGUgPT0gU2hvdWxkRmlsdGVyQmFzZSB8
fCBtb2RlID09IFNob3VsZEZpbHRlckJhc2VBbmRWYWx1ZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445419</attachid>
            <date>2021-11-30 08:04:03 -0800</date>
            <delta_ts>2021-12-02 03:17:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233474-20211130160401.patch</filename>
            <type>text/plain</type>
            <size>66678</size>
            <attacher name="Geza Lore">glore</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2Mjk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
MzMwMGU0MGNmYzQ5YWUwNjIwZWZmNTdmN2UwMWNlODQ0MjMzZWI4Li4wZDg2NTBhODMzZGJhNjQ2
ZWQzNDI4MDFjNjg5MDUwMmFmNzBiMGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTkgQEAKKzIwMjEtMTEtMzAgIEdlemEgTG9yZSAgPGdsb3JlQGlnYWxpYS5jb20+CisK
KyAgICAgICAgW0pTQ10gR2VuZXJhdGVkIGNvZGUgc2l6ZSByZWR1Y3Rpb25zIGZvciBiYXNlbGlu
ZSBKSVQgKGFsbCBhcmNoaXRlY3R1cmVzKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNDc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgZmV3IGltcHJvdmVtZW50
cyB0aGF0IHJlZHVjZSB0aGUgZ2VuZXJhdGVkCisgICAgICAgIGNvZGUgc2l6ZS4KKworICAgICAg
ICBUYXJnZXQgaW5kZXBlbmRlbnQgaW1wcm92ZW1lbnRzIHRvIHRoZSBCYXNlbGluZSBKSVQ6CisK
KyAgICAgICAgMS4gU29tZSBieXRlY29kZXMgdGhhdCBhcmUgdmVyeSBmcmVxdWVudCAoZS5nLjog
Z2V0X2J5X2lkLCBjYWxsKSBzaGFyZQorICAgICAgICB0aGUgc2FtZSBpbnN0cnVjdGlvbnMgYXQg
dGhlIHRhaWwgZW5kIG9mIHRoZSBmYXN0IGFuZCBzbG93IHBhdGhzLgorICAgICAgICBJbnN0ZWFk
IG9mIGR1cGxpY2F0aW5nIHRoZXNlIGluIHRoZSBzbG93IHBhdGgsIHRoZW4gYnJhbmNoIHRvIHRo
ZSBuZXh0CisgICAgICAgIHNlcXVlbnRpYWwgYnl0ZWNvZGUgb24gdGhlIGZhc3QgcGF0aCwgbWFr
ZSB0aGUgc2xvdyBwYXRoIGJyYW5jaCB0byBhbmQKKyAgICAgICAgcmV1c2UgdGhlc2UgY29tbW9u
IGluc3RydWN0aW9ucywgd2hpY2ggdGhlbiBuYXR1cmFsbHkgZmFsbCB0aHJvdWdoIHRvCisgICAg
ICAgIHRoZSBuZXh0IHNlcXVlbnRpYWwgYnl0ZWNvZGUuCisKKyAgICAgICAgMi4gTWlub3IgdHdl
YWtzIGluIGEgZmV3IHBsYWNlcyB0byByZW1vdmUgcmVkdW5kYW50IHJlbG9hZGluZyBvZgorICAg
ICAgICBpbW1lZGlhdGVzIGFuZCByZW1vdmUgcmVkdW5kYW50IG1vdmVzLgorCisgICAgICAgIDMu
IFJlbW92ZSBhIHNtYWxsIG51bWJlciBvZiByZWR1bmRhbnQgdW5jb25kaXRpb25hbCBicmFuY2hl
cyBmcm9tIHNvbWUKKyAgICAgICAgRGF0YUlDIGZhc3QgcGF0aHMuCisKKyAgICAgICAgQVJNdjcv
VGh1bWItMiBzcGVjaWZpYyBpbXByb3ZlbWVudHM6CisKKyAgICAgICAgNC4gQWRkIGFzc2VtYmxl
ciBzdXBwb3J0IGZvciBMRFJEIGFuZCBTVFJEIChsb2FkL3N0b3JlIGEgcGFpciBvZgorICAgICAg
ICAzMi1iaXQgR1BScykgYW5kIHVzZSB0aGVtIHRocm91Z2hvdXQgdmlhIGxvYWRWYWx1ZS9zdG9y
ZVZhbHVlLiBUaGlzCisgICAgICAgIHlpZWxkcyBkZW5zZXIgY29kZSBhcyBpdCBvZnRlbiBlbGlt
aW5hdGVzIHJlcGVhdGVkIHRlbXBvcmFyeSByZWdpc3RlcgorICAgICAgICBzZXR1cHMgKGVzcGVj
aWFsbHkgZm9yIGEgQmFzZUluZGV4IGFjY2VzcyksIGFuZCBhbHNvIGR1ZSB0byBwb2ludCA0Cisg
ICAgICAgIGJlbG93LiBUaGlzIGlzIGFsc28gcG90ZW50aWFsbHkgYSBwZXJmb3JtYW5jZSBpbXBy
b3ZlbWVudCBvbgorICAgICAgICBtaWNyby1hcmNoaXRlY3R1cmVzIHdpdGggYSA2NC1iaXQgTFNV
IGRhdGEtcGF0aC4KKworICAgICAgICA1LiBJbnN0cnVjdGlvbnMgdXNpbmcgb25seSByMC1yNyBh
cyBvcGVyYW5kcyBjYW4gb2Z0ZW4gdXNlIGEgc2hvcnQsCisgICAgICAgIDE2LWJpdCBlbmNvZGlu
ZyBpbiBUaHVtYi0yLCBzbyBwcmVmZXIgdG8gdXNlIGxvdyBvcmRlciByZWdpc3RlcnMKKyAgICAg
ICAgYXMgdGVtcG9yYXJpZXMgd2hlcmV2ZXIgcG9zc2libGUuCisKKyAgICAgICAgVGhlIG5ldCBl
ZmZlY3Qgb2YgdGhpcyBwYXRjaCBpcyB0aGF0IHRoZSBlbWl0dGVkIGJhc2VsaW5lIGNvZGUgZHVy
aW5nCisgICAgICAgIGEgcnVuIG9mIEpldFN0cmVhbTIgaXMgfjYuNiUgc21hbGxlciBvbiB4ODZf
NjQsIH41LjElIHNtYWxsZXIgb24KKyAgICAgICAgQVJNNjQsIGFuZCB+MjQlIHNtYWxsZXIgb24g
QVJNdjcvVGh1bWItMi4gT24gQVJNdjcvVGh1bWItMiwgREZHIGNvZGUKKyAgICAgICAgaXMgYWxz
byB+NS4zJSBzbWFsbGVyLCB3aGlsZSBvbiBvdGhlciBhcmNoaXRlY3R1cmVzIHRoZSBERkcgY29k
ZSBpcworICAgICAgICB1bmFmZmVjdGVkLgorCisgICAgICAgIE9uIEFSTXY3L1RodW1iLTIsIHRo
aXMgcGF0Y2ggYWxzbyB5aWVsZHMgYW4gfjIlIGltcHJvdmVtZW50IGluCisgICAgICAgIEpldFN0
cmVhbTIgc2NvcmVzIG9uIG15IHRlc3QgbWFjaGluZS4KKworICAgICAgICAqIGFzc2VtYmxlci9B
Uk12N0Fzc2VtYmxlci5oOgorICAgICAgICAoSlNDOjpBUk12N0Fzc2VtYmxlcjo6bGRyZCk6Cisg
ICAgICAgIChKU0M6OkFSTXY3QXNzZW1ibGVyOjpzdHJkKToKKyAgICAgICAgKEpTQzo6QVJNdjdB
c3NlbWJsZXI6OkFSTUluc3RydWN0aW9uRm9ybWF0dGVyOjp0d29Xb3JkT3AxMlJlZzRSZWc0UmVn
NEltbTgpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlcjo6YWRkUHRyKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJBUk12Ny5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3OjpiZXN0
VGVtcFJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6c2NyYXRj
aFJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6YWRkMzIpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3OjpzdWIzMik6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OmxvYWRQYWlyMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlckFSTXY3OjpzdG9yZTMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12
Nzo6c3RvcmVQYWlyMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3Ojpjb21w
YXJlMzJBbmRTZXRGbGFncyk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OnRl
c3QzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OmJyYW5jaDMyKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6ZmFySnVtcCk6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OmNhbGwpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ckFSTXY3Ojpjb21wYXJlMzIpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1J
UFMuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpsb2FkUGFpcjMyKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpzdG9yZVBhaXIzMik6CisgICAgICAgICog
aml0L0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OnN0
b3JlVmFsdWUpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmxvYWRWYWx1ZSk6Cisg
ICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVT
bG93Q2FzZXMpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUQ2FsbC5j
cHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUNhbGxFdmFsKToKKyAgICAgICAgKEpTQzo6
SklUOjpjb21waWxlQ2FsbEV2YWxTbG93Q2FzZSk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGls
ZU9wQ2FsbCk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZU9wQ2FsbFNsb3dDYXNlKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9vcGVuKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9uZXh0KToKKyAgICAgICAgKiBqaXQvSklUSW5s
aW5lQ2FjaGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpnZW5lcmF0ZUdldEJ5SWRJbmxp
bmVBY2Nlc3MpOgorICAgICAgICAoSlNDOjpKSVRQdXRCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUJh
c2VsaW5lRGF0YUlDRmFzdFBhdGgpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVy
YXRvci5oOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpJVDo6
c2V0RmFzdFBhdGhSZXN1bWVQb2ludCk6CisgICAgICAgIChKU0M6OkpJVDo6ZmFzdFBhdGhSZXN1
bWVQb2ludCBjb25zdCk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfZW50ZXIpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vz
cy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKToKKyAgICAgICAg
KEpTQzo6SklUOjpnZW5lcmF0ZUdldEJ5VmFsU2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfZ2V0X3ByaXZhdGVfbmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3df
b3BfZ2V0X3ByaXZhdGVfbmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90cnlfZ2V0
X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF90cnlfZ2V0X2J5X2lkKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV9pZF9kaXJlY3QpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZF9kaXJlY3QpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfZ2V0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9n
ZXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX3dpdGhfdGhp
cyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pbl9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdFNsb3dfb3BfaW5fYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaW5f
YnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9pbl9ieV92YWwpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRIYXNQcml2YXRlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
SGFzUHJpdmF0ZVNsb3cpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2hhc19wcml2
YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2hhc19wcml2YXRlX2Jy
YW5kKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2VudW1lcmF0b3JfZ2V0X2J5X3ZhbCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFdyaXRlQmFycmllcik6CisKIDIwMjEtMTEtMzAgIEdl
emEgTG9yZSAgPGdsb3JlQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0pTQ10gVW5pZnkgbW9zdCBC
YXNlbGluZSBvcHMgYmV0d2VlbiBKU1ZBTFVFNjQgYW5kIEpTVkFMVUUzMl82NApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5oCmluZGV4IGIxMjY1
Mzg1YTVkNzM5NjdlZDVlOTA5NDgyMjA5ZWRkYjRmNDI0MjUuLjc3NjRkZjFlMTllNGJhNzY2NWU4
ODFmMmIzZjhkNGQxYTVlZWNmZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL0FSTXY3QXNzZW1ibGVyLmgKQEAgLTU2Miw2ICs1NjIsOCBAQCBwcml2YXRlOgogICAg
IHR5cGVkZWYgZW51bSB7CiAgICAgICAgIE9QX0JfVDEgICAgICAgICA9IDB4RDAwMCwKICAgICAg
ICAgT1BfQl9UMiAgICAgICAgID0gMHhFMDAwLAorICAgICAgICBPUF9TVFJEX2ltbV9UMSAgPSAw
eEU4NDAsCisgICAgICAgIE9QX0xEUkRfaW1tX1QxICA9IDB4RTg1MCwKICAgICAgICAgT1BfUE9Q
X1QyICAgICAgID0gMHhFOEJELAogICAgICAgICBPUF9QVVNIX1QyICAgICAgPSAweEU5MkQsCiAg
ICAgICAgIE9QX0FORF9yZWdfVDIgICA9IDB4RUEwMCwKQEAgLTgxMCw3ICs4MTIsNyBAQCBwdWJs
aWM6CiAgICAgLy8gTk9URTogSW4gYW4gSVQgYmxvY2ssIGFkZCBkb2Vzbid0IG1vZGlmeSB0aGUg
ZmxhZ3MgcmVnaXN0ZXIuCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIGFkZChSZWdpc3RlcklEIHJk
LCBSZWdpc3RlcklEIHJuLCBSZWdpc3RlcklEIHJtKQogICAgIHsKLSAgICAgICAgaWYgKHJkID09
IEFSTVJlZ2lzdGVyczo6c3ApIHsKKyAgICAgICAgaWYgKHJkID09IEFSTVJlZ2lzdGVyczo6c3Ag
JiYgcmQgIT0gcm4pIHsKICAgICAgICAgICAgIG1vdihyZCwgcm4pOwogICAgICAgICAgICAgcm4g
PSByZDsKICAgICAgICAgfQpAQCAtMTI0MCw2ICsxMjQyLDQ3IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgIG1fZm9ybWF0dGVyLnR3b1dvcmRPcDEyUmVnNEZvdXJGb3VycyhPUF9MRFJTSF9yZWdfVDIs
IHJuLCBGb3VyRm91cnMocnQsIDAsIHNoaWZ0LCBybSkpOwogICAgIH0KIAorICAgIC8vIElmIGlu
ZGV4IGlzIHNldCwgdGhpcyBpcyBhIHJlZ3VsYXIgb2Zmc2V0IG9yIGEgcHJlLWluZGV4ZWQgbG9h
ZDsKKyAgICAvLyBpZiBpbmRleCBpcyBub3Qgc2V0IHRoZW4gaXQgaXMgYSBwb3N0LWluZGV4IGxv
YWQuCisgICAgLy8KKyAgICAvLyBJZiB3YmFjayBpcyBzZXQgcm4gaXMgdXBkYXRlZCAtIHRoaXMg
aXMgYSBwcmUgb3IgcG9zdCBpbmRleCBsb2FkLAorICAgIC8vIGlmIHdiYWNrIGlzIG5vdCBzZXQg
dGhpcyBpcyBhIHJlZ3VsYXIgb2Zmc2V0IG1lbW9yeSBhY2Nlc3MuCisgICAgLy8KKyAgICAvLyAo
LTEwMjAgPD0gb2Zmc2V0IDw9IDEwMjApCisgICAgLy8gb2Zmc2V0ICUgNCA9PSAwCisgICAgLy8g
X3JlZyA9IFJFR1tybl0KKyAgICAvLyBfdG1wID0gX3JlZyArIG9mZnNldAorICAgIC8vIF9hZGRy
ID0gaW5kZXggPyBfdG1wIDogX3JlZworICAgIC8vIFJFR1tydF0gPSBNRU1bX2FkZHJdCisgICAg
Ly8gUkVHW3J0Ml0gPSBNRU1bX2FkZHIgKyA0XQorICAgIC8vIGlmICh3YmFjaykgUkVHW3JuXSA9
IF90bXAKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbGRyZChSZWdpc3RlcklEIHJ0LCBSZWdpc3Rl
cklEIHJ0MiwgUmVnaXN0ZXJJRCBybiwgaW50IG9mZnNldCwgYm9vbCBpbmRleCwgYm9vbCB3YmFj
aykKKyAgICB7CisgICAgICAgIEFTU0VSVCghQmFkUmVnKHJ0KSk7CisgICAgICAgIEFTU0VSVCgh
QmFkUmVnKHJ0MikpOworICAgICAgICBBU1NFUlQocm4gIT0gQVJNUmVnaXN0ZXJzOjpwYyk7Cisg
ICAgICAgIEFTU0VSVChydCAhPSBydDIpOworICAgICAgICBBU1NFUlQoaW5kZXggfHwgd2JhY2sp
OworICAgICAgICBBU1NFUlQoIXdiYWNrIHwgKHJ0ICE9IHJuKSk7CisgICAgICAgIEFTU0VSVCgh
d2JhY2sgfCAocnQyICE9IHJuKSk7CisgICAgICAgIEFTU0VSVCghKG9mZnNldCAmIDB4MykpOwor
CisgICAgICAgIGJvb2wgYWRkID0gdHJ1ZTsKKyAgICAgICAgaWYgKG9mZnNldCA8IDApIHsKKyAg
ICAgICAgICAgIGFkZCA9IGZhbHNlOworICAgICAgICAgICAgb2Zmc2V0ID0gLW9mZnNldDsKKyAg
ICAgICAgfQorICAgICAgICBvZmZzZXQgPj49IDI7CisgICAgICAgIEFTU0VSVCghKG9mZnNldCAm
IH4weGZmKSk7CisKKyAgICAgICAgdWludDE2X3Qgb3Bjb2RlID0gT1BfTERSRF9pbW1fVDE7Cisg
ICAgICAgIG9wY29kZSB8PSAod2JhY2sgPDwgNSk7CisgICAgICAgIG9wY29kZSB8PSAoYWRkIDw8
IDcpOworICAgICAgICBvcGNvZGUgfD0gKGluZGV4IDw8IDgpOworCisgICAgICAgIG1fZm9ybWF0
dGVyLnR3b1dvcmRPcDEyUmVnNFJlZzRSZWc0SW1tOChzdGF0aWNfY2FzdDxPcGNvZGVJRDE+KG9w
Y29kZSksIHJuLCBydCwgcnQyLCBvZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQgbHNsKFJlZ2lz
dGVySUQgcmQsIFJlZ2lzdGVySUQgcm0sIGludDMyX3Qgc2hpZnRBbW91bnQpCiAgICAgewogICAg
ICAgICBBU1NFUlQoIUJhZFJlZyhyZCkpOwpAQCAtMTMyOSw2ICsxMzcyLDcgQEAgcHVibGljOgog
CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIG1vdihSZWdpc3RlcklEIHJkLCBSZWdpc3RlcklEIHJt
KQogICAgIHsKKyAgICAgICAgQVNTRVJUKHJkICE9IHJtKTsgLy8gVXNlIGEgTk9QIGluc3RlYWQK
ICAgICAgICAgbV9mb3JtYXR0ZXIub25lV29yZE9wOFJlZ1JlZzE0MyhPUF9NT1ZfcmVnX1QxLCBy
bSwgcmQpOwogICAgIH0KIApAQCAtMTY3Niw2ICsxNzIwLDQ2IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgIG1fZm9ybWF0dGVyLnR3b1dvcmRPcDEyUmVnNEZvdXJGb3VycyhPUF9TVFJIX3JlZ19UMiwg
cm4sIEZvdXJGb3VycyhydCwgMCwgc2hpZnQsIHJtKSk7CiAgICAgfQogCisgICAgLy8gSWYgaW5k
ZXggaXMgc2V0LCB0aGlzIGlzIGEgcmVndWxhciBvZmZzZXQgb3IgYSBwcmUtaW5kZXhlZCBsb2Fk
OworICAgIC8vIGlmIGluZGV4IGlzIG5vdCBzZXQgdGhlbiBpdCBpcyBhIHBvc3QtaW5kZXggbG9h
ZC4KKyAgICAvLworICAgIC8vIElmIHdiYWNrIGlzIHNldCBybiBpcyB1cGRhdGVkIC0gdGhpcyBp
cyBhIHByZSBvciBwb3N0IGluZGV4IGxvYWQsCisgICAgLy8gaWYgd2JhY2sgaXMgbm90IHNldCB0
aGlzIGlzIGEgcmVndWxhciBvZmZzZXQgbWVtb3J5IGFjY2Vzcy4KKyAgICAvLworICAgIC8vICgt
MTAyMCA8PSBvZmZzZXQgPD0gMTAyMCkKKyAgICAvLyBvZmZzZXQgJSA0ID09IDAKKyAgICAvLyBf
cmVnID0gUkVHW3JuXQorICAgIC8vIF90bXAgPSBfcmVnICsgb2Zmc2V0CisgICAgLy8gX2FkZHIg
PSBpbmRleCA/IF90bXAgOiBfcmVnCisgICAgLy8gTUVNW19hZGRyXSA9IFJFR1tydF0KKyAgICAv
LyBNRU1bX2FkZHIgKyA0XSA9IFJFR1tydDJdCisgICAgLy8gaWYgKHdiYWNrKSBSRUdbcm5dID0g
X3RtcAorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzdHJkKFJlZ2lzdGVySUQgcnQsIFJlZ2lzdGVy
SUQgcnQyLCBSZWdpc3RlcklEIHJuLCBpbnQgb2Zmc2V0LCBib29sIGluZGV4LCBib29sIHdiYWNr
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFCYWRSZWcocnQpKTsKKyAgICAgICAgQVNTRVJUKCFC
YWRSZWcocnQyKSk7CisgICAgICAgIEFTU0VSVChybiAhPSBBUk1SZWdpc3RlcnM6OnBjKTsKKyAg
ICAgICAgQVNTRVJUKGluZGV4IHx8IHdiYWNrKTsKKyAgICAgICAgQVNTRVJUKCF3YmFjayB8IChy
dCAhPSBybikpOworICAgICAgICBBU1NFUlQoIXdiYWNrIHwgKHJ0MiAhPSBybikpOworICAgICAg
ICBBU1NFUlQoIShvZmZzZXQgJiAweDMpKTsKKworICAgICAgICBib29sIGFkZCA9IHRydWU7Cisg
ICAgICAgIGlmIChvZmZzZXQgPCAwKSB7CisgICAgICAgICAgICBhZGQgPSBmYWxzZTsKKyAgICAg
ICAgICAgIG9mZnNldCA9IC1vZmZzZXQ7CisgICAgICAgIH0KKyAgICAgICAgb2Zmc2V0ID4+PSAy
OworICAgICAgICBBU1NFUlQoIShvZmZzZXQgJiB+MHhmZikpOworCisgICAgICAgIHVpbnQxNl90
IG9wY29kZSA9IE9QX1NUUkRfaW1tX1QxOworICAgICAgICBvcGNvZGUgfD0gKHdiYWNrIDw8IDUp
OworICAgICAgICBvcGNvZGUgfD0gKGFkZCA8PCA3KTsKKyAgICAgICAgb3Bjb2RlIHw9IChpbmRl
eCA8PCA4KTsKKworICAgICAgICBtX2Zvcm1hdHRlci50d29Xb3JkT3AxMlJlZzRSZWc0UmVnNElt
bTgoc3RhdGljX2Nhc3Q8T3Bjb2RlSUQxPihvcGNvZGUpLCBybiwgcnQsIHJ0Miwgb2Zmc2V0KTsK
KyAgICB9CisKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc3ViKFJlZ2lzdGVySUQgcmQsIFJlZ2lz
dGVySUQgcm4sIEFSTVRodW1iSW1tZWRpYXRlIGltbSkKICAgICB7CiAgICAgICAgIC8vIFJkIGNh
biBvbmx5IGJlIFNQIGlmIFJuIGlzIGFsc28gU1AuCkBAIC0yODg3LDYgKzI5NzEsMTIgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgIG1fYnVmZmVyLnB1dFNob3J0KChyZWcyIDw8IDEyKSB8IGltbSk7
CiAgICAgICAgIH0KIAorICAgICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgdHdvV29yZE9wMTJSZWc0
UmVnNFJlZzRJbW04KE9wY29kZUlEMSBvcCwgUmVnaXN0ZXJJRCByZWcxLCBSZWdpc3RlcklEIHJl
ZzIsIFJlZ2lzdGVySUQgcmVnMywgdWludDhfdCBpbW0pCisgICAgICAgIHsKKyAgICAgICAgICAg
IG1fYnVmZmVyLnB1dFNob3J0KG9wIHwgcmVnMSk7CisgICAgICAgICAgICBtX2J1ZmZlci5wdXRT
aG9ydCgocmVnMiA8PCAxMikgfCAocmVnMyA8PCA4KSB8IGltbSk7CisgICAgICAgIH0KKwogICAg
ICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgdHdvV29yZE9wMTJSZWc0MEltbTNSZWc0SW1tMjBJbW01
KE9wY29kZUlEMSBvcCwgUmVnaXN0ZXJJRCByZWcxLCBSZWdpc3RlcklEIHJlZzIsIHVpbnQxNl90
IGltbTEsIHVpbnQxNl90IGltbTIsIHVpbnQxNl90IGltbTMpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIG1fYnVmZmVyLnB1dFNob3J0KG9wIHwgcmVnMSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCmluZGV4IGRmOTU5OGUw
YTc4ODk3ZThhNWU2YmZhOGE0NGE2OTY1M2RjOWE0ZTQuLjI5ZGZmYzhiMzU2NjBmZWRiMTI3MmEz
MzgyYTUyMWY1YWIyMTExYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCkBAIC00NCwxMiArNDQsMjIgQEAgY2xhc3Mg
TWFjcm9Bc3NlbWJsZXJBUk12NyA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2Vt
Ymxlcj4gewogICAgIHN0YXRpYyBjb25zdGV4cHIgQVJNUmVnaXN0ZXJzOjpGUERvdWJsZVJlZ2lz
dGVySUQgZnBUZW1wUmVnaXN0ZXIgPSBBUk1SZWdpc3RlcnM6OmQ3OwogICAgIGlubGluZSBBUk1S
ZWdpc3RlcnM6OkZQU2luZ2xlUmVnaXN0ZXJJRCBmcFRlbXBSZWdpc3RlckFzU2luZ2xlKCkgeyBy
ZXR1cm4gQVJNUmVnaXN0ZXJzOjphc1NpbmdsZShmcFRlbXBSZWdpc3Rlcik7IH0KIAorICAgIC8v
IEluIHRoZSBUaHVtYi0yIGluc3RydWN0aW9uIHNldCwgaW5zdHJ1Y3Rpb25zIG9wZXJhdGluZyBv
bmx5IG9uIHJlZ2lzdGVycyByMC1yNyBjYW4gb2Z0ZW4KKyAgICAvLyBiZSBlbmNvZGVkIHVzaW5n
IDE2LWJpdCBlbmNvZGluZ3MsIHdoaWxlIHRoZSB1c2Ugb2YgcmVnaXN0ZXJzIHI4IGFuZCBhYm92
ZSBvZnRlbiByZXF1aXJlCisgICAgLy8gMzItYml0IGVuY29kaW5ncywgc28gcHJlZmVyIHRvIHVz
ZSB0aGUgYWRkcmVzc1RlbXBvcmFyeSAocjYpIHdoZW5ldmVyIHBvc3NpYmxlLgorICAgIGlubGlu
ZSBSZWdpc3RlcklEIGJlc3RUZW1wUmVnaXN0ZXIoUmVnaXN0ZXJJRCBleGNsdWRlZCkKKyAgICB7
CisgICAgICAgIGlmIChleGNsdWRlZCA9PSBhZGRyZXNzVGVtcFJlZ2lzdGVyKQorICAgICAgICAg
ICAgcmV0dXJuIGRhdGFUZW1wUmVnaXN0ZXI7CisgICAgICAgIHJldHVybiBhZGRyZXNzVGVtcFJl
Z2lzdGVyOworICAgIH0KKwogcHVibGljOgogI2RlZmluZSBEVU1NWV9SRUdJU1RFUl9WQUxVRShp
ZCwgbmFtZSwgciwgY3MpIDAsCiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBudW1HUFJz
ID0gc3RkOjppbml0aWFsaXplcl9saXN0PGludD4oeyBGT1JfRUFDSF9HUF9SRUdJU1RFUihEVU1N
WV9SRUdJU1RFUl9WQUxVRSkgfSkuc2l6ZSgpOwogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWdu
ZWQgbnVtRlBScyA9IHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxpbnQ+KHsgRk9SX0VBQ0hfRlBfUkVH
SVNURVIoRFVNTVlfUkVHSVNURVJfVkFMVUUpIH0pLnNpemUoKTsKICN1bmRlZiBEVU1NWV9SRUdJ
U1RFUl9WQUxVRQotICAgIFJlZ2lzdGVySUQgc2NyYXRjaFJlZ2lzdGVyKCkgeyByZXR1cm4gZGF0
YVRlbXBSZWdpc3RlcjsgfQorICAgIFJlZ2lzdGVySUQgc2NyYXRjaFJlZ2lzdGVyKCkgeyByZXR1
cm4gYWRkcmVzc1RlbXBSZWdpc3RlcjsgfQogCiAgICAgTWFjcm9Bc3NlbWJsZXJBUk12NygpCiAg
ICAgICAgIDogbV9tYWtlSnVtcFBhdGNoYWJsZShmYWxzZSkKQEAgLTE4MSwyMCArMTkxLDI3IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgYWRkMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBz
cmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIC8vIEZvciBhZGRzIHdpdGggc3Rh
Y2sgcG9pbnRlciBkZXN0aW5hdGlvbiBhdm9pZCB1bnByZWRpY3RhYmxlIGluc3RydWN0aW9uCisg
ICAgICAgIC8vIEF2b2lkIHVucHJlZGljdGFibGUgaW5zdHJ1Y3Rpb24gaWYgdGhlIGRlc3RpbmF0
aW9uIGlzIHRoZSBzdGFjayBwb2ludGVyCiAgICAgICAgIGlmIChkZXN0ID09IEFSTVJlZ2lzdGVy
czo6c3AgJiYgc3JjICE9IGRlc3QpIHsKLSAgICAgICAgICAgIGFkZDMyKGltbSwgc3JjLCBkYXRh
VGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgICAgIG1vdmUoZGF0YVRlbXBSZWdpc3RlciwgZGVzdCk7
CisgICAgICAgICAgICBhZGQzMihpbW0sIHNyYywgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CisgICAg
ICAgICAgICBtb3ZlKGFkZHJlc3NUZW1wUmVnaXN0ZXIsIGRlc3QpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKICAgICAgICAgQVJNVGh1bWJJbW1lZGlhdGUgYXJtSW1tID0gQVJN
VGh1bWJJbW1lZGlhdGU6Om1ha2VVSW50MTJPckVuY29kZWRJbW0oaW1tLm1fdmFsdWUpOwotICAg
ICAgICBpZiAoYXJtSW1tLmlzVmFsaWQoKSkKKyAgICAgICAgaWYgKGFybUltbS5pc1ZhbGlkKCkp
IHsKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZChkZXN0LCBzcmMsIGFybUltbSk7Ci0gICAg
ICAgIGVsc2UgewotICAgICAgICAgICAgbW92ZShpbW0sIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAg
ICAgICAgICAgbV9hc3NlbWJsZXIuYWRkKGRlc3QsIHNyYywgZGF0YVRlbXBSZWdpc3Rlcik7Cisg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKworICAgICAgICBhcm1JbW0gPSBBUk1UaHVt
YkltbWVkaWF0ZTo6bWFrZVVJbnQxMk9yRW5jb2RlZEltbSgtaW1tLm1fdmFsdWUpOworICAgICAg
ICBpZiAoYXJtSW1tLmlzVmFsaWQoKSkgeworICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3ViKGRl
c3QsIHNyYywgYXJtSW1tKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAg
ICAgIG1vdmUoaW1tLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRk
KGRlc3QsIHNyYywgZGF0YVRlbXBSZWdpc3Rlcik7CiAgICAgfQogCiAgICAgdm9pZCBhZGQzMihU
cnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCkBAIC04NDIsMTcgKzg1OSw0MiBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIGxvYWRQYWlyMzIoUmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW0z
MiBvZmZzZXQsIFJlZ2lzdGVySUQgZGVzdDEsIFJlZ2lzdGVySUQgZGVzdDIpCiAgICAgewotICAg
ICAgICAvLyBGSVhNRTogbGRyZC9sZG0gY2FuIGJlIHVzZWQgaWYgZGVzdDEgYW5kIGRlc3QyIGFy
ZSBjb25zZWN1dGl2ZSBwYWlyIG9mIHJlZ2lzdGVycy4KKyAgICAgICAgbG9hZFBhaXIzMihBZGRy
ZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUpLCBkZXN0MSwgZGVzdDIpOworICAgIH0KKworICAgIHZv
aWQgbG9hZFBhaXIzMihBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdDEsIFJlZ2lzdGVy
SUQgZGVzdDIpCisgICAgewogICAgICAgICBBU1NFUlQoZGVzdDEgIT0gZGVzdDIpOyAvLyBJZiBp
dCBpcyB0aGUgc2FtZSwgbGRwIGJlY29tZXMgaWxsZWdhbCBpbnN0cnVjdGlvbi4KLSAgICAgICAg
aWYgKHNyYyA9PSBkZXN0MSkgewotICAgICAgICAgICAgbG9hZDMyKEFkZHJlc3Moc3JjLCBvZmZz
ZXQubV92YWx1ZSArIDQpLCBkZXN0Mik7Ci0gICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhzcmMs
IG9mZnNldC5tX3ZhbHVlKSwgZGVzdDEpOworICAgICAgICBpbnQzMl90IGFic09mZnNldCA9IGFk
ZHJlc3Mub2Zmc2V0OworICAgICAgICBpZiAoYWJzT2Zmc2V0IDwgMCkKKyAgICAgICAgICAgIGFi
c09mZnNldCA9IC1hYnNPZmZzZXQ7CisgICAgICAgIGlmICghKGFic09mZnNldCAmIH4weDNmYykp
CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5sZHJkKGRlc3QxLCBkZXN0MiwgYWRkcmVzcy5iYXNl
LCBhZGRyZXNzLm9mZnNldCwgLyogaW5kZXg6ICovIHRydWUsIC8qIHdiYWNrOiAqLyBmYWxzZSk7
CisgICAgICAgIGVsc2UgaWYgKGFkZHJlc3MuYmFzZSA9PSBkZXN0MSkgeworICAgICAgICAgICAg
bG9hZDMyKGFkZHJlc3Mud2l0aE9mZnNldCg0KSwgZGVzdDIpOworICAgICAgICAgICAgbG9hZDMy
KGFkZHJlc3MsIGRlc3QxKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGxvYWQzMihB
ZGRyZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUpLCBkZXN0MSk7Ci0gICAgICAgICAgICBsb2FkMzIo
QWRkcmVzcyhzcmMsIG9mZnNldC5tX3ZhbHVlICsgNCksIGRlc3QyKTsKKyAgICAgICAgICAgIGxv
YWQzMihhZGRyZXNzLCBkZXN0MSk7CisgICAgICAgICAgICBsb2FkMzIoYWRkcmVzcy53aXRoT2Zm
c2V0KDQpLCBkZXN0Mik7CiAgICAgICAgIH0KICAgICB9CiAKKyAgICB2b2lkIGxvYWRQYWlyMzIo
QmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdDEsIFJlZ2lzdGVySUQgZGVzdDIpCisg
ICAgeworICAgICAgICAvLyBVc2luZyByMC1yNyBjYW4gb2Z0ZW4gYmUgZW5jb2RlZCB3aXRoIGEg
c2hvcnRlciAoMTYtYml0IHZzIDMyLWJpdCkgaW5zdHJ1Y3Rpb24sIHNvIHVzZQorICAgICAgICAv
LyB3aGljaGV2ZXIgZGVzdGluYXRpb24gcmVnaXN0ZXIgaXMgaW4gdGhhdCByYW5nZSAoaWYgYW55
KSBhcyB0aGUgYWRkcmVzcyB0ZW1wIHJlZ2lzdGVyCisgICAgICAgIFJlZ2lzdGVySUQgc2NyYXRj
aCA9IGRlc3QxOworICAgICAgICBpZiAoZGVzdDEgPj0gQVJNUmVnaXN0ZXJzOjpyOCkKKyAgICAg
ICAgICAgIHNjcmF0Y2ggPSBkZXN0MjsKKyAgICAgICAgaWYgKGFkZHJlc3Muc2NhbGUgPT0gVGlt
ZXNPbmUpCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGQoc2NyYXRjaCwgYWRkcmVzcy5iYXNl
LCBhZGRyZXNzLmluZGV4KTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBTaGlmdFR5cGVB
bmRBbW91bnQgc2hpZnQgeyBBUk1TaGlmdFR5cGU6OlNSVHlwZV9MU0wsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihhZGRyZXNzLnNjYWxlKSB9OworICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkKHNj
cmF0Y2gsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgc2hpZnQpOworICAgICAgICB9Cisg
ICAgICAgIGxvYWRQYWlyMzIoQWRkcmVzcyhzY3JhdGNoLCBhZGRyZXNzLm9mZnNldCksIGRlc3Qx
LCBkZXN0Mik7CisgICAgfQorCiAgICAgdm9pZCBzdG9yZTMyKFJlZ2lzdGVySUQgc3JjLCBBZGRy
ZXNzIGFkZHJlc3MpCiAgICAgewogICAgICAgICBzdG9yZTMyKHNyYywgc2V0dXBBcm1BZGRyZXNz
KGFkZHJlc3MpKTsKQEAgLTg2NSw4ICs5MDcsMTIgQEAgcHVibGljOgogCiAgICAgdm9pZCBzdG9y
ZTMyKFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKICAgICB7Ci0gICAgICAgIG1v
dmUoaW1tLCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgc3RvcmUzMihkYXRhVGVtcFJlZ2lz
dGVyLCBzZXR1cEFybUFkZHJlc3MoYWRkcmVzcykpOworICAgICAgICBBcm1BZGRyZXNzIGFybUFk
ZHJlc3MgPSBzZXR1cEFybUFkZHJlc3MoYWRkcmVzcyk7CisgICAgICAgIFJlZ2lzdGVySUQgc2Ny
YXRjaCA9IGFkZHJlc3NUZW1wUmVnaXN0ZXI7CisgICAgICAgIGlmIChhcm1BZGRyZXNzLnR5cGUg
PT0gQXJtQWRkcmVzczo6SGFzSW5kZXgpCisgICAgICAgICAgICBzY3JhdGNoID0gZGF0YVRlbXBS
ZWdpc3RlcjsKKyAgICAgICAgbW92ZShpbW0sIHNjcmF0Y2gpOworICAgICAgICBzdG9yZTMyKHNj
cmF0Y2gsIGFybUFkZHJlc3MpOwogICAgIH0KIAogICAgIHZvaWQgc3RvcmUzMihUcnVzdGVkSW1t
MzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKQEAgLTk1MSw5ICs5OTcsMzMgQEAgcHVibGljOgog
CiAgICAgdm9pZCBzdG9yZVBhaXIzMihSZWdpc3RlcklEIHNyYzEsIFJlZ2lzdGVySUQgc3JjMiwg
UmVnaXN0ZXJJRCBkZXN0LCBUcnVzdGVkSW1tMzIgb2Zmc2V0KQogICAgIHsKLSAgICAgICAgLy8g
RklYTUU6IHN0cmQvc3RtIGNhbiBiZSB1c2VkIGlmIHNyYzEgYW5kIHNyYzIgYXJlIGNvbnNlY3V0
aXZlIHBhaXIgb2YgcmVnaXN0ZXJzLgotICAgICAgICBzdG9yZTMyKHNyYzEsIEFkZHJlc3MoZGVz
dCwgb2Zmc2V0Lm1fdmFsdWUpKTsKLSAgICAgICAgc3RvcmUzMihzcmMyLCBBZGRyZXNzKGRlc3Qs
IG9mZnNldC5tX3ZhbHVlICsgNCkpOworICAgICAgICBzdG9yZVBhaXIzMihzcmMxLCBzcmMyLCBB
ZGRyZXNzKGRlc3QsIG9mZnNldC5tX3ZhbHVlKSk7CisgICAgfQorCisgICAgdm9pZCBzdG9yZVBh
aXIzMihSZWdpc3RlcklEIHNyYzEsIFJlZ2lzdGVySUQgc3JjMiwgQWRkcmVzcyBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgaW50MzJfdCBhYnNPZmZzZXQgPSBhZGRyZXNzLm9mZnNldDsKKyAgICAg
ICAgaWYgKGFic09mZnNldCA8IDApCisgICAgICAgICAgICBhYnNPZmZzZXQgPSAtYWJzT2Zmc2V0
OworICAgICAgICBpZiAoIShhYnNPZmZzZXQgJiB+MHgzZmMpKQorICAgICAgICAgICAgbV9hc3Nl
bWJsZXIuc3RyZChzcmMxLCBzcmMyLCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mub2Zmc2V0LCAvKiBp
bmRleDogKi8gdHJ1ZSwgLyogd2JhY2s6ICovIGZhbHNlKTsKKyAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICBzdG9yZTMyKHNyYzEsIGFkZHJlc3MpOworICAgICAgICAgICAgc3RvcmUzMihzcmMy
LCBhZGRyZXNzLndpdGhPZmZzZXQoNCkpOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBz
dG9yZVBhaXIzMihSZWdpc3RlcklEIHNyYzEsIFJlZ2lzdGVySUQgc3JjMiwgQmFzZUluZGV4IGFk
ZHJlc3MpCisgICAgeworICAgICAgICBBU1NFUlQoc3JjMSAhPSBkYXRhVGVtcFJlZ2lzdGVyICYm
IHNyYzIgIT0gZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgIC8vIFRoZSAnYWRkcmVzc1RlbXBS
ZWdpc3RlcicgbWlnaHQgYmUgdXNlZCB3aGVuIHRoZSBvZmZzZXQgaXMgd2lkZSwgc28gdXNlICdk
YXRhVGVtcFJlZ2lzdGVyJworICAgICAgICBpZiAoYWRkcmVzcy5zY2FsZSA9PSBUaW1lc09uZSkK
KyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZChkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzLmJh
c2UsIGFkZHJlc3MuaW5kZXgpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFNoaWZ0VHlw
ZUFuZEFtb3VudCBzaGlmdCB7IEFSTVNoaWZ0VHlwZTo6U1JUeXBlX0xTTCwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGFkZHJlc3Muc2NhbGUpIH07CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGQo
ZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBzaGlmdCk7Cisg
ICAgICAgIH0KKyAgICAgICAgc3RvcmVQYWlyMzIoc3JjMSwgc3JjMiwgQWRkcmVzcyhkYXRhVGVt
cFJlZ2lzdGVyLCBhZGRyZXNzLm9mZnNldCkpOwogICAgIH0KIAogICAgIC8vIFBvc3NpYmx5IGNs
b2JiZXJzIHNyYywgYnV0IG5vdCBvbiB0aGlzIGFyY2hpdGVjdHVyZS4KQEAgLTE1MjIsOCArMTU5
Miw5IEBAIHByaXZhdGU6CiAgICAgICAgIGVsc2UgaWYgKChhcm1JbW0gPSBBUk1UaHVtYkltbWVk
aWF0ZTo6bWFrZUVuY29kZWRJbW0oLWltbSkpLmlzVmFsaWQoKSkKICAgICAgICAgICAgIG1fYXNz
ZW1ibGVyLmNtbihsZWZ0LCBhcm1JbW0pOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIG1v
dmUoVHJ1c3RlZEltbTMyKGltbSksIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICAgICAgbV9h
c3NlbWJsZXIuY21wKGxlZnQsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgUmVnaXN0
ZXJJRCBzY3JhdGNoID0gYmVzdFRlbXBSZWdpc3RlcihsZWZ0KTsKKyAgICAgICAgICAgIG1vdmUo
VHJ1c3RlZEltbTMyKGltbSksIHNjcmF0Y2gpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuY21w
KGxlZnQsIHNjcmF0Y2gpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xNTg5LDEyICsxNjYwLDEz
IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAg
bV9hc3NlbWJsZXIudHN0KHJlZywgYXJtSW1tKTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgbW92ZShtYXNrLCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgICAgICAg
ICBpZiAocmVnID09IEFSTVJlZ2lzdGVyczo6c3ApIHsKLSAgICAgICAgICAgICAgICAgICAgbW92
ZShyZWcsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwotICAgICAgICAgICAgICAgICAgICBtX2Fzc2Vt
Ymxlci50c3QoYWRkcmVzc1RlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAg
ICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnRzdChyZWcs
IGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgICAgICAgICBtb3ZlKHJlZywgZGF0YVRl
bXBSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAgICAgIHJlZyA9IGRhdGFUZW1wUmVnaXN0ZXI7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFJlZ2lzdGVySUQgc2NyYXRjaCA9
IGJlc3RUZW1wUmVnaXN0ZXIocmVnKTsKKyAgICAgICAgICAgICAgICBtb3ZlKG1hc2ssIHNjcmF0
Y2gpOworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnRzdChyZWcsIHNjcmF0Y2gpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMTYyNSwxNCArMTY5NywxNCBAQCBwdWJs
aWM6CiAKICAgICBKdW1wIGJyYW5jaDMyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0
ZXJJRCBsZWZ0LCBBZGRyZXNzIHJpZ2h0KQogICAgIHsKLSAgICAgICAgbG9hZDMyKHJpZ2h0LCBk
YXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGxlZnQsIGRh
dGFUZW1wUmVnaXN0ZXIpOworICAgICAgICBsb2FkMzIocmlnaHQsIGFkZHJlc3NUZW1wUmVnaXN0
ZXIpOworICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgbGVmdCwgYWRkcmVzc1RlbXBSZWdp
c3Rlcik7CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2gzMihSZWxhdGlvbmFsQ29uZGl0aW9uIGNv
bmQsIEFkZHJlc3MgbGVmdCwgUmVnaXN0ZXJJRCByaWdodCkKICAgICB7Ci0gICAgICAgIGxvYWQz
MihsZWZ0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQs
IGRhdGFUZW1wUmVnaXN0ZXIsIHJpZ2h0KTsKKyAgICAgICAgbG9hZDMyKGxlZnQsIGFkZHJlc3NU
ZW1wUmVnaXN0ZXIpOworICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgYWRkcmVzc1RlbXBS
ZWdpc3RlciwgcmlnaHQpOwogICAgIH0KIAogICAgIEp1bXAgYnJhbmNoMzIoUmVsYXRpb25hbENv
bmRpdGlvbiBjb25kLCBBZGRyZXNzIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkKQEAgLTE2NTgs
MTMgKzE3MzAsMTIgQEAgcHVibGljOgogCiAgICAgSnVtcCBicmFuY2gzMihSZWxhdGlvbmFsQ29u
ZGl0aW9uIGNvbmQsIEFic29sdXRlQWRkcmVzcyBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0KQogICAg
IHsKLSAgICAgICAgbG9hZDMyKGxlZnQubV9wdHIsIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAg
ICByZXR1cm4gYnJhbmNoMzIoY29uZCwgZGF0YVRlbXBSZWdpc3RlciwgcmlnaHQpOworICAgICAg
ICBsb2FkMzIobGVmdC5tX3B0ciwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CisgICAgICAgIHJldHVy
biBicmFuY2gzMihjb25kLCBhZGRyZXNzVGVtcFJlZ2lzdGVyLCByaWdodCk7CiAgICAgfQogCiAg
ICAgSnVtcCBicmFuY2gzMihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFic29sdXRlQWRkcmVz
cyBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQpCiAgICAgewotICAgICAgICAvLyB1c2UgYWRkcmVz
c1RlbXBSZWdpc3RlciBpbmNhc2UgdGhlIGJyYW5jaDMyIHdlIGNhbGwgdXNlcyBkYXRhVGVtcFJl
Z2lzdGVyLiA6LS8KICAgICAgICAgbG9hZDMyKGxlZnQubV9wdHIsIGFkZHJlc3NUZW1wUmVnaXN0
ZXIpOwogICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgYWRkcmVzc1RlbXBSZWdpc3Rlciwg
cmlnaHQpOwogICAgIH0KQEAgLTE4MDAsMjIgKzE4NzEsMjIgQEAgcHVibGljOgogCiAgICAgdm9p
ZCBmYXJKdW1wKFRydXN0ZWRJbW1QdHIgdGFyZ2V0LCBQdHJUYWcpCiAgICAgewotICAgICAgICBt
b3ZlKHRhcmdldCwgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmJ4KGRh
dGFUZW1wUmVnaXN0ZXIpOworICAgICAgICBtb3ZlKHRhcmdldCwgYWRkcmVzc1RlbXBSZWdpc3Rl
cik7CisgICAgICAgIG1fYXNzZW1ibGVyLmJ4KGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwogICAgIH0K
IAogICAgIC8vIEFkZHJlc3MgaXMgYSBtZW1vcnkgbG9jYXRpb24gY29udGFpbmluZyB0aGUgYWRk
cmVzcyB0byBqdW1wIHRvCiAgICAgdm9pZCBmYXJKdW1wKEFkZHJlc3MgYWRkcmVzcywgUHRyVGFn
KQogICAgIHsKLSAgICAgICAgbG9hZDMyKGFkZHJlc3MsIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAg
ICAgICBtX2Fzc2VtYmxlci5ieChkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgbG9hZDMyKGFk
ZHJlc3MsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOworICAgICAgICBtX2Fzc2VtYmxlci5ieChhZGRy
ZXNzVGVtcFJlZ2lzdGVyKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBmYXJKdW1wKEFic29sdXRl
QWRkcmVzcyBhZGRyZXNzLCBQdHJUYWcpCiAgICAgewotICAgICAgICBtb3ZlKFRydXN0ZWRJbW1Q
dHIoYWRkcmVzcy5tX3B0ciksIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICBsb2FkMzIoQWRk
cmVzcyhkYXRhVGVtcFJlZ2lzdGVyKSwgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIG1fYXNz
ZW1ibGVyLmJ4KGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIo
YWRkcmVzcy5tX3B0ciksIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOworICAgICAgICBsb2FkMzIoQWRk
cmVzcyhhZGRyZXNzVGVtcFJlZ2lzdGVyKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CisgICAgICAg
IG1fYXNzZW1ibGVyLmJ4KGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwogICAgIH0KIAogICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBmYXJKdW1wKFJlZ2lzdGVySUQgdGFyZ2V0LCBSZWdpc3RlcklEIGp1bXBU
YWcpIHsgVU5VU0VEX1BBUkFNKGp1bXBUYWcpLCBmYXJKdW1wKHRhcmdldCwgTm9QdHJUYWcpOyB9
CkBAIC0xOTkxLDggKzIwNjIsOCBAQCBwdWJsaWM6CiAKICAgICBBTFdBWVNfSU5MSU5FIENhbGwg
Y2FsbChBZGRyZXNzIGFkZHJlc3MsIFB0clRhZykKICAgICB7Ci0gICAgICAgIGxvYWQzMihhZGRy
ZXNzLCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgcmV0dXJuIENhbGwobV9hc3NlbWJsZXIu
Ymx4KGRhdGFUZW1wUmVnaXN0ZXIpLCBDYWxsOjpOb25lKTsKKyAgICAgICAgbG9hZDMyKGFkZHJl
c3MsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOworICAgICAgICByZXR1cm4gQ2FsbChtX2Fzc2VtYmxl
ci5ibHgoYWRkcmVzc1RlbXBSZWdpc3RlciksIENhbGw6Ok5vbmUpOwogICAgIH0KIAogICAgIEFM
V0FZU19JTkxJTkUgQ2FsbCBjYWxsKFJlZ2lzdGVySUQgY2FsbFRhZykgeyByZXR1cm4gVU5VU0VE
X1BBUkFNKGNhbGxUYWcpLCBjYWxsKE5vUHRyVGFnKTsgfQpAQCAtMjAxNCw4ICsyMDg1LDggQEAg
cHVibGljOgogCiAgICAgdm9pZCBjb21wYXJlMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBB
ZGRyZXNzIGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0g
ICAgICAgIGxvYWQzMihsZWZ0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgY29tcGFyZTMy
KGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIHJpZ2h0LCBkZXN0KTsKKyAgICAgICAgbG9hZDMyKGxl
ZnQsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOworICAgICAgICBjb21wYXJlMzIoY29uZCwgYWRkcmVz
c1RlbXBSZWdpc3RlciwgcmlnaHQsIGRlc3QpOwogICAgIH0KIAogICAgIHZvaWQgY29tcGFyZTgo
UmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdo
dCwgUmVnaXN0ZXJJRCBkZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgKaW5kZXggNGZiOWEyOGViYjk0NjliYzc0NjcwZTZl
MDRhZTg0YWE2MWM4MzFhNy4uNGEzMDk1M2JmM2ZmMGU2OWE3MTZjZmFiZjFhMzRlOWQwYTk1NDJi
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlck1JUFMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyTUlQUy5oCkBAIC0xMzIwLDE0ICsxMzIwLDMzIEBAIHB1YmxpYzoKICAgICB9CiAKICAg
ICB2b2lkIGxvYWRQYWlyMzIoUmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBvZmZzZXQsIFJl
Z2lzdGVySUQgZGVzdDEsIFJlZ2lzdGVySUQgZGVzdDIpCisgICAgeworICAgICAgICBsb2FkUGFp
cjMyKEFkZHJlc3Moc3JjLCBvZmZzZXQubV92YWx1ZSksIGRlc3QxLCBkZXN0Mik7CisgICAgfQor
CisgICAgdm9pZCBsb2FkUGFpcjMyKEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0MSwg
UmVnaXN0ZXJJRCBkZXN0MikKICAgICB7CiAgICAgICAgIEFTU0VSVChkZXN0MSAhPSBkZXN0Mik7
IC8vIElmIGl0IGlzIHRoZSBzYW1lLCBsZHAgYmVjb21lcyBpbGxlZ2FsIGluc3RydWN0aW9uLgot
ICAgICAgICBpZiAoc3JjID09IGRlc3QxKSB7Ci0gICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhz
cmMsIG9mZnNldC5tX3ZhbHVlICsgNCksIGRlc3QyKTsKLSAgICAgICAgICAgIGxvYWQzMihBZGRy
ZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUpLCBkZXN0MSk7CisgICAgICAgIGlmIChhZGRyZXNzLmJh
c2UgPT0gZGVzdDEpIHsKKyAgICAgICAgICAgIGxvYWQzMihhZGRyZXNzLndpdGhPZmZzZXQoNCks
IGRlc3QyKTsKKyAgICAgICAgICAgIGxvYWQzMihhZGRyZXNzLCBkZXN0MSk7CiAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhzcmMsIG9mZnNldC5tX3ZhbHVlKSwg
ZGVzdDEpOwotICAgICAgICAgICAgbG9hZDMyKEFkZHJlc3Moc3JjLCBvZmZzZXQubV92YWx1ZSAr
IDQpLCBkZXN0Mik7CisgICAgICAgICAgICBsb2FkMzIoYWRkcmVzcywgZGVzdDEpOworICAgICAg
ICAgICAgbG9hZDMyKGFkZHJlc3Mud2l0aE9mZnNldCg0KSwgZGVzdDIpOworICAgICAgICB9Cisg
ICAgfQorCisgICAgdm9pZCBsb2FkUGFpcjMyKEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklE
IGRlc3QxLCBSZWdpc3RlcklEIGRlc3QyKQorICAgIHsKKyAgICAgICAgaWYgKGFkZHJlc3MuYmFz
ZSA9PSBkZXN0MSB8fCBhZGRyZXNzLmluZGV4ID09IGRlc3QxKSB7CisgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVChhZGRyZXNzLmJhc2UgIT0gZGVzdDIpOworICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlQoYWRkcmVzcy5pbmRleCAhPSBkZXN0Mik7CisKKyAgICAgICAgICAgIGxvYWQzMihhZGRy
ZXNzLndpdGhPZmZzZXQoNCksIGRlc3QyKTsKKyAgICAgICAgICAgIGxvYWQzMihhZGRyZXNzLCBk
ZXN0MSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBsb2FkMzIoYWRkcmVzcywgZGVz
dDEpOworICAgICAgICAgICAgbG9hZDMyKGFkZHJlc3Mud2l0aE9mZnNldCg0KSwgZGVzdDIpOwog
ICAgICAgICB9CiAgICAgfQogCkBAIC0xNjMxLDggKzE2NTAsMTkgQEAgcHVibGljOgogCiAgICAg
dm9pZCBzdG9yZVBhaXIzMihSZWdpc3RlcklEIHNyYzEsIFJlZ2lzdGVySUQgc3JjMiwgUmVnaXN0
ZXJJRCBkZXN0LCBUcnVzdGVkSW1tMzIgb2Zmc2V0KQogICAgIHsKLSAgICAgICAgc3RvcmUzMihz
cmMxLCBBZGRyZXNzKGRlc3QsIG9mZnNldC5tX3ZhbHVlKSk7Ci0gICAgICAgIHN0b3JlMzIoc3Jj
MiwgQWRkcmVzcyhkZXN0LCBvZmZzZXQubV92YWx1ZSArIDQpKTsKKyAgICAgICAgc3RvcmVQYWly
MzIoc3JjMSwgc3JjMiwgQWRkcmVzcyhkZXN0LCBvZmZzZXQubV92YWx1ZSkpOworICAgIH0KKwor
ICAgIHZvaWQgc3RvcmVQYWlyMzIoUmVnaXN0ZXJJRCBzcmMxLCBSZWdpc3RlcklEIHNyYzIsIEFk
ZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHN0b3JlMzIoc3JjMSwgYWRkcmVzcyk7Cisg
ICAgICAgIHN0b3JlMzIoc3JjMiwgYWRkcmVzcy53aXRoT2Zmc2V0KDQpKTsKKyAgICB9CisKKyAg
ICB2b2lkIHN0b3JlUGFpcjMyKFJlZ2lzdGVySUQgc3JjMSwgUmVnaXN0ZXJJRCBzcmMyLCBCYXNl
SW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIHN0b3JlMzIoc3JjMSwgYWRkcmVzcyk7Cisg
ICAgICAgIHN0b3JlMzIoc3JjMiwgYWRkcmVzcy53aXRoT2Zmc2V0KDQpKTsKICAgICB9CiAKICAg
ICAvLyBGbG9hdGluZy1wb2ludCBvcGVyYXRpb25zOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvQXNzZW1ibHlIZWxwZXJzLmgKaW5kZXggZTZjNzM2YzY3Y2ExMDJkNTI1NzBhNzE4OWMxMDA2
MmVlYTVjNDI3Yy4uNWY4M2YxYTlmMzhiOWZjMGVjZDg2OWE0YjY4YjcxNTU2ODQyZWM4MSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCkBAIC0xNjQsOCAr
MTY0LDExIEBAIHB1YmxpYzoKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBzdG9yZTY0KHJl
Z3MuZ3ByKCksIGFkZHJlc3MpOwogI2Vsc2UKLSAgICAgICAgc3RvcmUzMihyZWdzLnBheWxvYWRH
UFIoKSwgYWRkcmVzcy53aXRoT2Zmc2V0KFBheWxvYWRPZmZzZXQpKTsKLSAgICAgICAgc3RvcmUz
MihyZWdzLnRhZ0dQUigpLCBhZGRyZXNzLndpdGhPZmZzZXQoVGFnT2Zmc2V0KSk7CisgICAgICAg
IHN0YXRpY19hc3NlcnQoKFBheWxvYWRPZmZzZXQgPT0gNCAmJiAhVGFnT2Zmc2V0KSB8fCAoIVBh
eWxvYWRPZmZzZXQgJiYgVGFnT2Zmc2V0ID09IDQpKTsKKyAgICAgICAgaWYgY29uc3RleHByIChQ
YXlsb2FkT2Zmc2V0IDwgVGFnT2Zmc2V0KQorICAgICAgICAgICAgc3RvcmVQYWlyMzIocmVncy5w
YXlsb2FkR1BSKCksIHJlZ3MudGFnR1BSKCksIGFkZHJlc3MpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBzdG9yZVBhaXIzMihyZWdzLnRhZ0dQUigpLCByZWdzLnBheWxvYWRHUFIoKSwgYWRk
cmVzcyk7CiAjZW5kaWYKICAgICB9CiAgICAgCkBAIC0xNzQsOCArMTc3LDExIEBAIHB1YmxpYzoK
ICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBzdG9yZTY0KHJlZ3MuZ3ByKCksIGFkZHJlc3Mp
OwogI2Vsc2UKLSAgICAgICAgc3RvcmUzMihyZWdzLnBheWxvYWRHUFIoKSwgYWRkcmVzcy53aXRo
T2Zmc2V0KFBheWxvYWRPZmZzZXQpKTsKLSAgICAgICAgc3RvcmUzMihyZWdzLnRhZ0dQUigpLCBh
ZGRyZXNzLndpdGhPZmZzZXQoVGFnT2Zmc2V0KSk7CisgICAgICAgIHN0YXRpY19hc3NlcnQoKFBh
eWxvYWRPZmZzZXQgPT0gNCAmJiAhVGFnT2Zmc2V0KSB8fCAoIVBheWxvYWRPZmZzZXQgJiYgVGFn
T2Zmc2V0ID09IDQpKTsKKyAgICAgICAgaWYgY29uc3RleHByIChQYXlsb2FkT2Zmc2V0IDwgVGFn
T2Zmc2V0KQorICAgICAgICAgICAgc3RvcmVQYWlyMzIocmVncy5wYXlsb2FkR1BSKCksIHJlZ3Mu
dGFnR1BSKCksIGFkZHJlc3MpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzdG9yZVBhaXIz
MihyZWdzLnRhZ0dQUigpLCByZWdzLnBheWxvYWRHUFIoKSwgYWRkcmVzcyk7CiAjZW5kaWYKICAg
ICB9CiAgICAgCkBAIC0xOTQsMTMgKzIwMCwxMSBAQCBwdWJsaWM6CiAjaWYgVVNFKEpTVkFMVUU2
NCkKICAgICAgICAgbG9hZDY0KGFkZHJlc3MsIHJlZ3MuZ3ByKCkpOwogI2Vsc2UKLSAgICAgICAg
aWYgKGFkZHJlc3MuYmFzZSA9PSByZWdzLnBheWxvYWRHUFIoKSkgewotICAgICAgICAgICAgbG9h
ZDMyKGFkZHJlc3Mud2l0aE9mZnNldChUYWdPZmZzZXQpLCByZWdzLnRhZ0dQUigpKTsKLSAgICAg
ICAgICAgIGxvYWQzMihhZGRyZXNzLndpdGhPZmZzZXQoUGF5bG9hZE9mZnNldCksIHJlZ3MucGF5
bG9hZEdQUigpKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGxvYWQzMihhZGRyZXNz
LndpdGhPZmZzZXQoUGF5bG9hZE9mZnNldCksIHJlZ3MucGF5bG9hZEdQUigpKTsKLSAgICAgICAg
ICAgIGxvYWQzMihhZGRyZXNzLndpdGhPZmZzZXQoVGFnT2Zmc2V0KSwgcmVncy50YWdHUFIoKSk7
Ci0gICAgICAgIH0KKyAgICAgICAgc3RhdGljX2Fzc2VydCgoUGF5bG9hZE9mZnNldCA9PSA0ICYm
ICFUYWdPZmZzZXQpIHx8ICghUGF5bG9hZE9mZnNldCAmJiBUYWdPZmZzZXQgPT0gNCkpOworICAg
ICAgICBpZiBjb25zdGV4cHIgKFBheWxvYWRPZmZzZXQgPCBUYWdPZmZzZXQpCisgICAgICAgICAg
ICBsb2FkUGFpcjMyKGFkZHJlc3MsIHJlZ3MucGF5bG9hZEdQUigpLCByZWdzLnRhZ0dQUigpKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgbG9hZFBhaXIzMihhZGRyZXNzLCByZWdzLnRhZ0dQ
UigpLCByZWdzLnBheWxvYWRHUFIoKSk7CiAjZW5kaWYKICAgICB9CiAgICAgCkBAIC0yMDksMTgg
KzIxMywxMSBAQCBwdWJsaWM6CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgbG9hZDY0KGFk
ZHJlc3MsIHJlZ3MuZ3ByKCkpOwogI2Vsc2UKLSAgICAgICAgaWYgKGFkZHJlc3MuYmFzZSA9PSBy
ZWdzLnBheWxvYWRHUFIoKSB8fCBhZGRyZXNzLmluZGV4ID09IHJlZ3MucGF5bG9hZEdQUigpKSB7
Ci0gICAgICAgICAgICAvLyBXZSBhY3R1YWxseSBjb3VsZCBoYW5kbGUgdGhlIGNhc2Ugd2hlcmUg
dGhlIHJlZ2lzdGVycyBhcmUgYWxpYXNlZCB0byBib3RoCi0gICAgICAgICAgICAvLyB0YWcgYW5k
IHBheWxvYWQsIGJ1dCB3ZSBkb24ndCBmb3Igbm93LgotICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlQoYWRkcmVzcy5iYXNlICE9IHJlZ3MudGFnR1BSKCkpOwotICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlQoYWRkcmVzcy5pbmRleCAhPSByZWdzLnRhZ0dQUigpKTsKLSAgICAgICAgICAgIAotICAg
ICAgICAgICAgbG9hZDMyKGFkZHJlc3Mud2l0aE9mZnNldChUYWdPZmZzZXQpLCByZWdzLnRhZ0dQ
UigpKTsKLSAgICAgICAgICAgIGxvYWQzMihhZGRyZXNzLndpdGhPZmZzZXQoUGF5bG9hZE9mZnNl
dCksIHJlZ3MucGF5bG9hZEdQUigpKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGxv
YWQzMihhZGRyZXNzLndpdGhPZmZzZXQoUGF5bG9hZE9mZnNldCksIHJlZ3MucGF5bG9hZEdQUigp
KTsKLSAgICAgICAgICAgIGxvYWQzMihhZGRyZXNzLndpdGhPZmZzZXQoVGFnT2Zmc2V0KSwgcmVn
cy50YWdHUFIoKSk7Ci0gICAgICAgIH0KKyAgICAgICAgc3RhdGljX2Fzc2VydCgoUGF5bG9hZE9m
ZnNldCA9PSA0ICYmICFUYWdPZmZzZXQpIHx8ICghUGF5bG9hZE9mZnNldCAmJiBUYWdPZmZzZXQg
PT0gNCkpOworICAgICAgICBpZiBjb25zdGV4cHIgKFBheWxvYWRPZmZzZXQgPCBUYWdPZmZzZXQp
CisgICAgICAgICAgICBsb2FkUGFpcjMyKGFkZHJlc3MsIHJlZ3MucGF5bG9hZEdQUigpLCByZWdz
LnRhZ0dQUigpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbG9hZFBhaXIzMihhZGRyZXNz
LCByZWdzLnRhZ0dQUigpLCByZWdzLnBheWxvYWRHUFIoKSk7CiAjZW5kaWYKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCAyYjMxY2FlMDFiYmJjYWMwNGE3ZWRkMzEzODlh
ZDlkZWI4MDZmODA1Li5mNTdhNmUxMzQ1MDU4ZmRiZTg0MjM4ZjIyNzM3NjU3ZDA2Mzk5YTBiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0xNTksMTQgKzE1OSwxMSBAQCB2b2lkIEpJ
VDo6cmVzZXRTUCgpCiAgICAgY2hlY2tTdGFja1BvaW50ZXJBbGlnbm1lbnQoKTsKIH0KIAotI2Rl
ZmluZSBORVhUX09QQ09ERShuYW1lKSBcCi0gICAgbV9ieXRlY29kZUluZGV4ID0gQnl0ZWNvZGVJ
bmRleChtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCkgKyBjdXJyZW50SW5zdHJ1Y3Rpb24tPnNpemUo
KSk7IFwKLSAgICBicmVhazsKLQogI2RlZmluZSBORVhUX09QQ09ERV9JTl9NQUlOKG5hbWUpIFwK
ICAgICBpZiAocHJldmlvdXNTbG93Q2FzZXNTaXplICE9IG1fc2xvd0Nhc2VzLnNpemUoKSkgXAog
ICAgICAgICArK21fYnl0ZWNvZGVDb3VudEhhdmluZ1Nsb3dDYXNlOyBcCi0gICAgTkVYVF9PUENP
REUobmFtZSkKKyAgICBtX2J5dGVjb2RlSW5kZXggPSBCeXRlY29kZUluZGV4KG1fYnl0ZWNvZGVJ
bmRleC5vZmZzZXQoKSArIGN1cnJlbnRJbnN0cnVjdGlvbi0+c2l6ZSgpKTsgXAorICAgIGJyZWFr
OwogCiAjZGVmaW5lIERFRklORV9TTE9XX09QKG5hbWUpIFwKICAgICBjYXNlIG9wXyMjbmFtZTog
eyBcCkBAIC0xODgsMTMgKzE4NSwxMyBAQCB2b2lkIEpJVDo6cmVzZXRTUCgpCiAjZGVmaW5lIERF
RklORV9TTE9XQ0FTRV9PUChuYW1lKSBcCiAgICAgY2FzZSBuYW1lOiB7IFwKICAgICAgICAgZW1p
dFNsb3dfIyNuYW1lKGN1cnJlbnRJbnN0cnVjdGlvbiwgaXRlcik7IFwKLSAgICAgICAgTkVYVF9P
UENPREUobmFtZSk7IFwKKyAgICAgICAgYnJlYWs7IFwKICAgICB9CiAKICNkZWZpbmUgREVGSU5F
X1NMT1dDQVNFX1NMT1dfT1AobmFtZSkgXAogICAgIGNhc2Ugb3BfIyNuYW1lOiB7IFwKICAgICAg
ICAgZW1pdFNsb3dDYXNlQ2FsbChjdXJyZW50SW5zdHJ1Y3Rpb24sIGl0ZXIsIHNsb3dfcGF0aF8j
I25hbWUpOyBcCi0gICAgICAgIE5FWFRfT1BDT0RFKG9wXyMjbmFtZSk7IFwKKyAgICAgICAgYnJl
YWs7IFwKICAgICB9CiAKIHZvaWQgSklUOjplbWl0U2xvd0Nhc2VDYWxsKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
IGl0ZXIsIFNsb3dQYXRoRnVuY3Rpb24gc3R1YikKQEAgLTY3NSwxMiArNjcyLDE0IEBAIHZvaWQg
SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAKICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
V0lUSF9NRVNTQUdFKGl0ZXIgPT0gbV9zbG93Q2FzZXMuZW5kKCkgfHwgZmlyc3RUby5vZmZzZXQo
KSAhPSBpdGVyLT50by5vZmZzZXQoKSwgIk5vdCBlbm91Z2gganVtcHMgbGlua2VkIGluIHNsb3cg
Y2FzZSBjb2RlZ2VuLiIpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX01FU1NBR0UoZmly
c3RUby5vZmZzZXQoKSA9PSAoaXRlciAtIDEpLT50by5vZmZzZXQoKSwgIlRvbyBtYW55IGp1bXBz
IGxpbmtlZCBpbiBzbG93IGNhc2UgY29kZWdlbi4iKTsKLSAgICAgICAgCi0gICAgICAgIGVtaXRK
dW1wU2xvd1RvSG90KGp1bXAoKSwgMCk7CisKKyAgICAgICAganVtcCgpLmxpbmtUbyhmYXN0UGF0
aFJlc3VtZVBvaW50KCksIHRoaXMpOwogICAgICAgICArK2J5dGVjb2RlQ291bnRIYXZpbmdTbG93
Q2FzZTsKIAotICAgICAgICBpZiAoVU5MSUtFTFkoc2l6ZU1hcmtlcikpCisgICAgICAgIGlmIChV
TkxJS0VMWShzaXplTWFya2VyKSkgeworICAgICAgICAgICAgbV9ieXRlY29kZUluZGV4ID0gQnl0
ZWNvZGVJbmRleChtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCkgKyBjdXJyZW50SW5zdHJ1Y3Rpb24t
PnNpemUoKSk7CiAgICAgICAgICAgICBtX3ZtLT5qaXRTaXplU3RhdGlzdGljcy0+bWFya0VuZChX
VEZNb3ZlKCpzaXplTWFya2VyKSwgKnRoaXMpOworICAgICAgICB9CiAgICAgfQogCiAgICAgUkVM
RUFTRV9BU1NFUlQoYnl0ZWNvZGVDb3VudEhhdmluZ1Nsb3dDYXNlID09IG1fYnl0ZWNvZGVDb3Vu
dEhhdmluZ1Nsb3dDYXNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmluZGV4IGYyNWY5Zjk3NGUy
NGU2YzQyMDhhMTA1MDc0OTg4OWM3MDFmZTVhMzcuLjI5N2YzY2E1ODI1ZjA0MzdkYTJmZjFkM2Fk
MWQxOTNjYzYzNmZiNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtMjgwLDYgKzI4MCw4
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgYWR2YW5jZVRvTmV4dENoZWNrcG9p
bnQoKTsKICAgICAgICAgdm9pZCBlbWl0SnVtcFNsb3dUb0hvdEZvckNoZWNrcG9pbnQoSnVtcCk7
CisgICAgICAgIHZvaWQgc2V0RmFzdFBhdGhSZXN1bWVQb2ludCgpOworICAgICAgICBMYWJlbCBm
YXN0UGF0aFJlc3VtZVBvaW50KCkgY29uc3Q7CiAKICAgICAgICAgdm9pZCBhZGRTbG93Q2FzZShK
dW1wKTsKICAgICAgICAgdm9pZCBhZGRTbG93Q2FzZShjb25zdCBKdW1wTGlzdCYpOwpAQCAtNjIw
LDcgKzYyMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2l0
ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJik7CiAKICAgICAgICAgdm9pZCBlbWl0SGFzUHJpdmF0ZShWaXJ0dWFsUmVnaXN0ZXIg
ZHN0LCBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSwgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5T3JCcmFu
ZCwgQWNjZXNzVHlwZSk7Ci0gICAgICAgIHZvaWQgZW1pdEhhc1ByaXZhdGVTbG93KFZpcnR1YWxS
ZWdpc3RlciBkc3QsIFZpcnR1YWxSZWdpc3RlciBiYXNlLCBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVy
dHksIEFjY2Vzc1R5cGUpOworICAgICAgICB2b2lkIGVtaXRIYXNQcml2YXRlU2xvdyhWaXJ0dWFs
UmVnaXN0ZXIgYmFzZSwgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5LCBBY2Nlc3NUeXBlKTsKIAog
ICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KICAgICAgICAgdm9pZCBlbWl0TmV3RnVuY0Nv
bW1vbihjb25zdCBJbnN0cnVjdGlvbiopOwpAQCAtNjMwLDggKzYzMiw2IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICB2b2lkIGVtaXRWYXJSZWFkT25seUNoZWNrKFJlc29sdmVUeXBlLCBHUFJS
ZWcgc2NyYXRjaEdQUik7CiAgICAgICAgIHZvaWQgZW1pdE5vdGlmeVdyaXRlV2F0Y2hwb2ludChH
UFJSZWcgcG9pbnRlclRvU2V0KTsKIAotICAgICAgICB2b2lkIGVtaXRJbml0UmVnaXN0ZXIoVmly
dHVhbFJlZ2lzdGVyKTsKLQogICAgICAgICBib29sIGlzS25vd25DZWxsKFZpcnR1YWxSZWdpc3Rl
cik7CiAKICAgICAgICAgSlNWYWx1ZSBnZXRDb25zdGFudE9wZXJhbmQoVmlydHVhbFJlZ2lzdGVy
KTsKQEAgLTkxMSw2ICs5MTEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVmVjdG9yPE5l
YXJKdW1wUmVjb3JkPiBtX25lYXJKdW1wczsKICAgICAgICAgVmVjdG9yPExhYmVsPiBtX2xhYmVs
czsKICAgICAgICAgSGFzaE1hcDxCeXRlY29kZUluZGV4LCBMYWJlbD4gbV9jaGVja3BvaW50TGFi
ZWxzOworICAgICAgICBIYXNoTWFwPEJ5dGVjb2RlSW5kZXgsIExhYmVsPiBtX2Zhc3RQYXRoUmVz
dW1lTGFiZWxzOwogICAgICAgICBWZWN0b3I8SklUR2V0QnlJZEdlbmVyYXRvcj4gbV9nZXRCeUlk
czsKICAgICAgICAgVmVjdG9yPEpJVEdldEJ5VmFsR2VuZXJhdG9yPiBtX2dldEJ5VmFsczsKICAg
ICAgICAgVmVjdG9yPEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcj4gbV9nZXRCeUlkc1dpdGhU
aGlzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKaW5kZXggMTE3ZGZhYzA1MDY3
OTUwMzZjNTA0YjNjNzIwNDU1NWE0YjA1ZDIwNC4uMjQ0YjNmZWI2OWI0YTBmNDlmMGJjNDNkMWU0
YWI0NDlhMzJlNmI5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRD
YWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCkBAIC0x
ODUsNiArMTg1LDcgQEAgYm9vbCBKSVQ6OmNvbXBpbGVDYWxsRXZhbChjb25zdCBPcENhbGxFdmFs
JiBieXRlY29kZSkKICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNhbGxFdmFsLCBhcmd1bWVu
dEdQUjAsIGFyZ3VtZW50R1BSMSwgYXJndW1lbnRHUFIyKTsKICAgICBhZGRTbG93Q2FzZShicmFu
Y2hJZkVtcHR5KHJldHVyblZhbHVlSlNSKSk7CiAKKyAgICBzZXRGYXN0UGF0aFJlc3VtZVBvaW50
KCk7CiAgICAgZW1pdFB1dENhbGxSZXN1bHQoYnl0ZWNvZGUpOwogCiAgICAgcmV0dXJuIHRydWU7
CkBAIC0yMDUsOCArMjA2LDYgQEAgdm9pZCBKSVQ6OmNvbXBpbGVDYWxsRXZhbFNsb3dDYXNlKGNv
bnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXMKICAgICBtYXRlcmlh
bGl6ZVBvaW50ZXJJbnRvTWV0YWRhdGEoYnl0ZWNvZGUsIE9wQ2FsbEV2YWw6Ok1ldGFkYXRhOjpv
ZmZzZXRPZkNhbGxMaW5rSW5mbygpLCBjYWxsTGlua0luZm9HUFIpOwogICAgIGVtaXRWaXJ0dWFs
Q2FsbFdpdGhvdXRNb3ZpbmdHbG9iYWxPYmplY3QoKm1fdm0sIGNhbGxMaW5rSW5mb0dQUiwgQ2Fs
bE1vZGU6OlJlZ3VsYXIpOwogICAgIHJlc2V0U1AoKTsKLQotICAgIGVtaXRQdXRDYWxsUmVzdWx0
KGJ5dGVjb2RlKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgT3A+CkBAIC0zMDIsOCArMzAxLDkg
QEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9u
LCB1bnNpZ25lZCBjYWxsTGlua0luZm9JbmQKIAogICAgIG1fY2FsbENvbXBpbGF0aW9uSW5mb1tj
YWxsTGlua0luZm9JbmRleF0uZG9uZUxvY2F0aW9uID0gZG9uZUxvY2F0aW9uOwogCisgICAgaWYg
Y29uc3RleHByIChPcDo6b3Bjb2RlSUQgIT0gb3BfaXRlcmF0b3Jfb3BlbiAmJiBPcDo6b3Bjb2Rl
SUQgIT0gb3BfaXRlcmF0b3JfbmV4dCkKKyAgICAgICAgc2V0RmFzdFBhdGhSZXN1bWVQb2ludCgp
OwogICAgIHJlc2V0U1AoKTsKLQogICAgIGVtaXRQdXRDYWxsUmVzdWx0KGJ5dGVjb2RlKTsKIH0K
IApAQCAtMzI4LDEwICszMjgsNiBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbFNsb3dDYXNlKGNv
bnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRQogICAgICAgICBh
Ym9ydFdpdGhSZWFzb24oSklURGlkUmV0dXJuRnJvbVRhaWxDYWxsKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KLQotICAgIHJlc2V0U1AoKTsKLQotICAgIGVtaXRQdXRDYWxsUmVzdWx0KGJ5dGVj
b2RlKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfY2FsbChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQpAQCAtNDcwLDggKzQ2NiwxMiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9p
dGVyYXRvcl9vcGVuKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKIAogdm9pZCBKSVQ6
OmVtaXRTbG93X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9u
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogeworICAgIGF1dG8gYnl0
ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck9wZW4+KCk7CisKICAgICBsaW5rQWxs
U2xvd0Nhc2VzKGl0ZXIpOwogICAgIGNvbXBpbGVPcENhbGxTbG93Q2FzZTxPcEl0ZXJhdG9yT3Bl
bj4oaW5zdHJ1Y3Rpb24sIGl0ZXIsIG1fY2FsbExpbmtJbmZvSW5kZXgrKyk7CisgICAgcmVzZXRT
UCgpOworICAgIGVtaXRQdXRDYWxsUmVzdWx0KGJ5dGVjb2RlKTsKICAgICBlbWl0SnVtcFNsb3dU
b0hvdEZvckNoZWNrcG9pbnQoanVtcCgpKTsKIAogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7
CkBAIC00ODAsNyArNDgwLDYgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX29wZW4o
Y29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0MKICAgICBub3RPYmpl
Y3QuYXBwZW5kKGJyYW5jaElmTm90Q2VsbChpdGVyYXRvckpTUikpOwogICAgIG5vdE9iamVjdC5h
cHBlbmQoYnJhbmNoSWZOb3RPYmplY3QoaXRlcmF0b3JKU1IucGF5bG9hZEdQUigpKSk7CiAKLSAg
ICBhdXRvIGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JPcGVuPigpOwogICAg
IFZpcnR1YWxSZWdpc3RlciBuZXh0VlJlZyA9IGJ5dGVjb2RlLm1fbmV4dDsKICAgICBVbmlxdWVk
U3RyaW5nSW1wbCogaWRlbnQgPSB2bSgpLnByb3BlcnR5TmFtZXMtPm5leHQuaW1wbCgpOwogCkBA
IC02MTUsOCArNjE0LDEyIEBAIHZvaWQgSklUOjplbWl0X29wX2l0ZXJhdG9yX25leHQoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0
b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CisgICAgYXV0byBieXRlY29kZSA9IGluc3RydWN0aW9u
LT5hczxPcEl0ZXJhdG9yTmV4dD4oKTsKKwogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAg
ICAgY29tcGlsZU9wQ2FsbFNsb3dDYXNlPE9wSXRlcmF0b3JOZXh0PihpbnN0cnVjdGlvbiwgaXRl
ciwgbV9jYWxsTGlua0luZm9JbmRleCsrKTsKKyAgICByZXNldFNQKCk7CisgICAgZW1pdFB1dENh
bGxSZXN1bHQoYnl0ZWNvZGUpOwogICAgIGVtaXRKdW1wU2xvd1RvSG90Rm9yQ2hlY2twb2ludChq
dW1wKCkpOwogCiAgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1I7
CkBAIC02MjQsNyArNjI3LDYgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX25leHQo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0MKIAogICAgIGNvbnN0
ZXhwciBKU1ZhbHVlUmVncyBpdGVyQ2FsbFJlc3VsdEpTUiA9IGRvbnRDbG9iYmVySlNSOwogCi0g
ICAgYXV0byBieXRlY29kZSA9IGluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yTmV4dD4oKTsKICAg
ICB7CiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBkb25lVlJlZyA9IGJ5dGVjb2RlLm1fZG9uZTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdl
bmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2Vu
ZXJhdG9yLmNwcAppbmRleCA2MmUwOTMwMGM5ZTAwM2NjYzNjZWM2ZWViYWY1M2I1Y2MyYWI0OGY4
Li5jNjdiY2UwOWZmYmM2MGUyNDMzZTYyMmUzNzgyNzhjZjIwNzRiNGJlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcApA
QCAtMTM1LDE4ICsxMzUsMTIgQEAgdm9pZCBKSVRHZXRCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZh
c3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQpCiAKIHN0YXRpYyB2b2lkIGdlbmVyYXRlR2V0QnlJ
ZElubGluZUFjY2VzcyhKSVQmIGppdCwgR1BSUmVnIHN0dWJJbmZvR1BSLCBKU1ZhbHVlUmVncyBi
YXNlSlNSLCBHUFJSZWcgc2NyYXRjaEdQUiwgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSKQogewotICAg
IENDYWxsSGVscGVyczo6SnVtcExpc3QgZG9uZTsKLQogICAgIGppdC5sb2FkMzIoQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKGJhc2VKU1IucGF5bG9hZEdQUigpLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zm
c2V0KCkpLCBzY3JhdGNoR1BSKTsKLSAgICBhdXRvIHNraXBJbmxpbmVBY2Nlc3MgPSBqaXQuYnJh
bmNoMzIoQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgc2NyYXRjaEdQUiwgQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZJbmxpbmVBY2Nl
c3NCYXNlU3RydWN0dXJlKCkpKTsKKyAgICBhdXRvIGRvSW5saW5lQWNjZXNzID0gaml0LmJyYW5j
aDMyKENDYWxsSGVscGVyczo6RXF1YWwsIHNjcmF0Y2hHUFIsIENDYWxsSGVscGVyczo6QWRkcmVz
cyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mSW5saW5lQWNjZXNzQmFz
ZVN0cnVjdHVyZSgpKSk7CisgICAgaml0LmZhckp1bXAoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0
dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZDb2RlUHRyKCkpLCBKSVRTdHVi
Um91dGluZVB0clRhZyk7CisgICAgZG9JbmxpbmVBY2Nlc3MubGluaygmaml0KTsKICAgICBqaXQu
bG9hZDMyKENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1Yklu
Zm86Om9mZnNldE9mQnlJZFNlbGZPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwogICAgIGppdC5sb2Fk
UHJvcGVydHkoYmFzZUpTUi5wYXlsb2FkR1BSKCksIHNjcmF0Y2hHUFIsIHJlc3VsdEpTUik7Ci0g
ICAgYXV0byBmaW5pc2hlZCA9IGppdC5qdW1wKCk7Ci0KLSAgICBza2lwSW5saW5lQWNjZXNzLmxp
bmsoJmppdCk7Ci0gICAgaml0LmZhckp1bXAoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZv
R1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZDb2RlUHRyKCkpLCBKSVRTdHViUm91dGlu
ZVB0clRhZyk7Ci0KLSAgICBmaW5pc2hlZC5saW5rKCZqaXQpOwogfQogCiB2b2lkIEpJVEdldEJ5
SWRHZW5lcmF0b3I6OmdlbmVyYXRlQmFzZWxpbmVEYXRhSUNGYXN0UGF0aChKSVQmIGppdCwgdW5z
aWduZWQgc3R1YkluZm8sIEdQUlJlZyBzdHViSW5mb0dQUikKQEAgLTIyNywxNSArMjIxLDExIEBA
IHZvaWQgSklUUHV0QnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVCYXNlbGluZURhdGFJQ0Zhc3RQYXRo
KEpJVCYgaml0LCB1bnNpZ25lZCBzdHViCiAgICAgdXNpbmcgQmFzZWxpbmVQdXRCeUlkUmVnaXN0
ZXJzOjpzY3JhdGNoMkdQUjsKIAogICAgIGppdC5sb2FkMzIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KGJhc2VKU1IucGF5bG9hZEdQUigpLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBzY3Jh
dGNoR1BSKTsKLSAgICBhdXRvIHNraXBJbmxpbmVBY2Nlc3MgPSBqaXQuYnJhbmNoMzIoQ0NhbGxI
ZWxwZXJzOjpOb3RFcXVhbCwgc2NyYXRjaEdQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJ
bmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZJbmxpbmVBY2Nlc3NCYXNlU3RydWN0
dXJlKCkpKTsKKyAgICBhdXRvIGRvSW5saW5lQWNjZXNzID0gaml0LmJyYW5jaDMyKENDYWxsSGVs
cGVyczo6RXF1YWwsIHNjcmF0Y2hHUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQ
UiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mSW5saW5lQWNjZXNzQmFzZVN0cnVjdHVyZSgp
KSk7CisgICAgaml0LmZhckp1bXAoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBT
dHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZDb2RlUHRyKCkpLCBKSVRTdHViUm91dGluZVB0clRh
Zyk7CisgICAgZG9JbmxpbmVBY2Nlc3MubGluaygmaml0KTsKICAgICBqaXQubG9hZDMyKENDYWxs
SGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9m
QnlJZFNlbGZPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwogICAgIGppdC5zdG9yZVByb3BlcnR5KHZh
bHVlSlNSLCBiYXNlSlNSLnBheWxvYWRHUFIoKSwgc2NyYXRjaEdQUiwgc2NyYXRjaDJHUFIpOwot
ICAgIGF1dG8gZmluaXNoZWQgPSBqaXQuanVtcCgpOwotCi0gICAgc2tpcElubGluZUFjY2Vzcy5s
aW5rKCZqaXQpOwotICAgIGppdC5mYXJKdW1wKENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5m
b0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mQ29kZVB0cigpKSwgSklUU3R1YlJvdXRp
bmVQdHJUYWcpOwotCi0gICAgZmluaXNoZWQubGluaygmaml0KTsKICAgICBtX2RvbmUgPSBqaXQu
bGFiZWwoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxp
bmVDYWNoZUdlbmVyYXRvci5oCmluZGV4IDNlMjZkYjk1N2UzZWQ0NmRmODVjZWViN2UzZDUyYmFi
NGQ0YzU0MTEuLjYyOTI5YzBjMjQ4NGZiOWNhMGVjNjYxYmI3YzBhN2RlNjQ5ZmM5OGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3Iu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9y
LmgKQEAgLTQ5LDQ2ICs0OSw0MyBAQCBlbnVtIGNsYXNzIEFjY2Vzc1R5cGUgOiBpbnQ4X3Q7CiBl
bnVtIGNsYXNzIEpJVFR5cGUgOiB1aW50OF90OwogCiBuYW1lc3BhY2UgQmFzZWxpbmVEZWxCeVZh
bFJlZ2lzdGVycyB7Citjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgSlNSSW5mbzo6
cmV0dXJuVmFsdWVKU1IgfTsKICNpZiBVU0UoSlNWQUxVRTY0KQogY29uc3RleHByIEpTVmFsdWVS
ZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMSB9OwogY29uc3RleHByIEpTVmFsdWVSZWdzIHBy
b3BlcnR5SlNSIHsgR1BSSW5mbzo6cmVnVDAgfTsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1
bHRKU1IgeyBwcm9wZXJ0eUpTUiB9OwogY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQ
UkluZm86OnJlZ1QzIH07CiBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpy
ZWdUMiB9OwogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBi
YXNlSlNSIHsgR1BSSW5mbzo6cmVnVDMsIEdQUkluZm86OnJlZ1QyIH07CiBjb25zdGV4cHIgSlNW
YWx1ZVJlZ3MgcHJvcGVydHlKU1IgeyBHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVnVDAgfTsK
LWNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBwcm9wZXJ0eUpTUiB9OwogY29uc3Rl
eHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q3IH07CiBjb25zdGV4cHIgR1BS
UmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUNiB9OwogI2VuZGlmCiB9CiAKIG5hbWVzcGFj
ZSBCYXNlbGluZURlbEJ5SWRSZWdpc3RlcnMgeworY29uc3RleHByIEpTVmFsdWVSZWdzIHJlc3Vs
dEpTUiB7IEpTUkluZm86OnJldHVyblZhbHVlSlNSIH07CiAjaWYgVVNFKEpTVkFMVUU2NCkKIGNv
bnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDEgfTsKLWNvbnN0ZXhw
ciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBHUFJJbmZvOjpyZWdUMCB9OwogY29uc3RleHByIEdQ
UlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QzIH07CiBjb25zdGV4cHIgR1BSUmVnIHNj
cmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUMiB9OwogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKIGNv
bnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDMsIEdQUkluZm86OnJl
Z1QyIH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgR1BSSW5mbzo6cmVnVDEs
IEdQUkluZm86OnJlZ1QwIH07CiBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5m
bzo6cmVnVDcgfTsKIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1Q2
IH07CiAjZW5kaWYKIH0KIAogbmFtZXNwYWNlIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnMgewor
Y29uc3RleHByIEpTVmFsdWVSZWdzIHJlc3VsdEpTUiB7IEpTUkluZm86OnJldHVyblZhbHVlSlNS
IH07CiAjaWYgVVNFKEpTVkFMVUU2NCkKIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsg
R1BSSW5mbzo6cmVnVDAgfTsKIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiB7IEdQ
UkluZm86OnJlZ1QxIH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgYmFzZUpT
UiB9OwogY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QyIH07CiBj
b25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUMyB9OwogI2VsaWYgVVNF
KEpTVkFMVUUzMl82NCkKIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6
cmVnVDEsIEdQUkluZm86OnJlZ1QwIH07CiBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlK
U1IgeyBHUFJJbmZvOjpyZWdUMywgR1BSSW5mbzo6cmVnVDIgfTsKLWNvbnN0ZXhwciBKU1ZhbHVl
UmVncyByZXN1bHRKU1IgeyBiYXNlSlNSIH07CiBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BS
IHsgR1BSSW5mbzo6cmVnVDcgfTsKIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUklu
Zm86OnJlZ1Q2IH07CiAjZW5kaWYKQEAgLTEzNiwxNiArMTMzLDE1IEBAIHN0YXRpY19hc3NlcnQo
QXNzZW1ibHlIZWxwZXJzOjpub092ZXJsYXAodmFsdWVKU1IsIHByb3RvSlNSLCBzdHViSW5mb0dQ
Uiwgc2NyYXRjCiB9CiAKIG5hbWVzcGFjZSBCYXNlbGluZUluQnlWYWxSZWdpc3RlcnMgeworY29u
c3RleHByIEpTVmFsdWVSZWdzIHJlc3VsdEpTUiB7IEpTUkluZm86OnJldHVyblZhbHVlSlNSIH07
CiAjaWYgVVNFKEpTVkFMVUU2NCkKIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BS
SW5mbzo6cmVnVDAgfTsKIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiB7IEdQUklu
Zm86OnJlZ1QxIH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgYmFzZUpTUiB9
OwogY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QyIH07CiBjb25z
dGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUMyB9OwogI2VsaWYgVVNFKEpT
VkFMVUUzMl82NCkKIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVn
VDEsIEdQUkluZm86OnJlZ1QwIH07CiBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1Ig
IHsgR1BSSW5mbzo6cmVnVDMsIEdQUkluZm86OnJlZ1QyIH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJl
Z3MgcmVzdWx0SlNSIHsgYmFzZUpTUiB9OwogY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7
IEdQUkluZm86OnJlZ1Q3IH07CiBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZv
OjpyZWdUNiB9OwogI2VuZGlmCkBAIC0xNTQsMzEgKzE1MCwyOSBAQCBzdGF0aWNfYXNzZXJ0KHBy
b3BlcnR5SlNSID09IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSKTsKIH0K
IAogbmFtZXNwYWNlIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVycyB7Citjb25zdGV4cHIgSlNWYWx1
ZVJlZ3MgcmVzdWx0SlNSIHsgSlNSSW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsKK2NvbnN0ZXhwciBK
U1ZhbHVlUmVncyBiYXNlSlNSIHsgSlNSSW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsKICNpZiBVU0Uo
SlNWQUxVRTY0KQotY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdU
MCB9OwotY29uc3RleHByIEpTVmFsdWVSZWdzIHJlc3VsdEpTUiB7IGJhc2VKU1IgfTsKIGNvbnN0
ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMSB9OwogY29uc3RleHByIEdQ
UlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKIGNvbnN0ZXhwciBKU1ZhbHVlUmVn
cyBkb250Q2xvYmJlckpTUiB7IEdQUkluZm86OnJlZ1QzIH07CiAjZWxpZiBVU0UoSlNWQUxVRTMy
XzY0KQotY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMSwgR1BS
SW5mbzo6cmVnVDAgfTsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBiYXNlSlNS
IH07CiBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKIGNv
bnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1QzIH07CiBjb25zdGV4cHIg
SlNWYWx1ZVJlZ3MgZG9udENsb2JiZXJKU1IgeyBHUFJJbmZvOjpyZWdUNiwgR1BSSW5mbzo6cmVn
VDcgfTsKICNlbmRpZgorc3RhdGljX2Fzc2VydChBc3NlbWJseUhlbHBlcnM6Om5vT3ZlcmxhcChi
YXNlSlNSLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiwgZG9udENsb2JiZXJKU1IpKTsKIH0KIAog
bmFtZXNwYWNlIEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzIHsKK2NvbnN0ZXhwciBK
U1ZhbHVlUmVncyByZXN1bHRKU1IgeyBKU1JJbmZvOjpyZXR1cm5WYWx1ZUpTUiB9OwogI2lmIFVT
RShKU1ZBTFVFNjQpCiBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJl
Z1QwIH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgYmFzZUpTUiB9OwogY29u
c3RleHByIEpTVmFsdWVSZWdzIHRoaXNKU1IgeyBHUFJJbmZvOjpyZWdUMSB9OwogY29uc3RleHBy
IEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QyIH07CiBjb25zdGV4cHIgR1BSUmVn
IHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUMyB9OwogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkK
IGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86
OnJlZ1QwIH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgYmFzZUpTUiB9Owog
Y29uc3RleHByIEpTVmFsdWVSZWdzIHRoaXNKU1IgeyBHUFJJbmZvOjpyZWdUMywgR1BSSW5mbzo6
cmVnVDIgfTsKIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNyB9
OwogY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDYgfTsKQEAgLTE4
Nyw3ICsxODEsNyBAQCBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdU
NiB9OwogCiBuYW1lc3BhY2UgQmFzZWxpbmVJbkJ5SWRSZWdpc3RlcnMgewogY29uc3RleHByIEpT
VmFsdWVSZWdzIGJhc2VKU1IgeyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1IgfTsK
LWNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBCYXNlbGluZUdldEJ5SWRSZWdpc3Rl
cnM6OnJlc3VsdEpTUiB9OworY29uc3RleHByIEpTVmFsdWVSZWdzIHJlc3VsdEpTUiB7IEpTUklu
Zm86OnJldHVyblZhbHVlSlNSIH07CiBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgQmFz
ZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpzdHViSW5mb0dQUiB9OwogY29uc3RleHByIEdQUlJlZyBz
Y3JhdGNoR1BSIHsgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpzY3JhdGNoR1BSIH07CiB9CkBA
IC0yMDQsNyArMTk4LDcgQEAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZv
OjpyZWdUMSwgR1BSSW5mbzo6cmVnVDAgfTsKIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpT
UiB7IEdQUkluZm86OnJlZ1QzLCBHUFJJbmZvOjpyZWdUMiB9OwogY29uc3RleHByIEdQUlJlZyBz
dHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q3IH07CiBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hH
UFIgeyBHUFJJbmZvOjpyZWdUNiB9OwotY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMkdQUiB7IEdQ
UkluZm86OnJlZ1Q0IH07Citjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyR1BSIHsgYmFzZUpTUi50
YWdHUFIoKSB9OyAvLyBSZXVzaW5nIHJlZ1QxIGZvciBiZXR0ZXIgY29kZSBzaXplIG9uIEFSTV9U
SFVNQjIKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCmlu
ZGV4IDBlNTJkOGY2MmY4ZDdhNTcyMTU4NDE1YzYyZjk4NmY4M2VjZDJkMDQuLjE3ZjQ2ZjdhMmQ4
OTQ0MzhjM2I5YTBkZTY1YzZmMzFiODZjNjQ0MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUSW5saW5lcy5oCkBAIC0yMTUsNiArMjE1LDI2IEBAIGlubGluZSB2b2lkIEpJVDo6ZW1pdEp1
bXBTbG93VG9Ib3RGb3JDaGVja3BvaW50KEp1bXAganVtcCkKICAgICBqdW1wLmxpbmtUbyhpdGVy
LT52YWx1ZSwgdGhpcyk7CiB9CiAKK2lubGluZSB2b2lkIEpJVDo6c2V0RmFzdFBhdGhSZXN1bWVQ
b2ludCgpCit7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX2J5dGVjb2RlSW5kZXgsICJUaGlz
IG1ldGhvZCBzaG91bGQgb25seSBiZSBjYWxsZWQgZHVyaW5nIGhvdC9jb2xkIHBhdGggZ2VuZXJh
dGlvbiwgc28gdGhhdCBtX2J5dGVjb2RlSW5kZXggaXMgc2V0Iik7CisgICAgYXV0byByZXN1bHQg
PSBtX2Zhc3RQYXRoUmVzdW1lTGFiZWxzLmFkZChtX2J5dGVjb2RlSW5kZXgsIGxhYmVsKCkpOwor
ICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7Cit9CisKK2lubGlu
ZSBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgSklUOjpmYXN0UGF0aFJlc3VtZVBvaW50KCkgY29uc3QK
K3sKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG1fYnl0ZWNvZGVJbmRleCwgIlRoaXMgbWV0aG9k
IHNob3VsZCBvbmx5IGJlIGNhbGxlZCBkdXJpbmcgaG90L2NvbGQgcGF0aCBnZW5lcmF0aW9uLCBz
byB0aGF0IG1fYnl0ZWNvZGVJbmRleCBpcyBzZXQiKTsKKyAgICAvLyBMb2NhdGlvbiBzZXQgYnkg
c2V0RmFzdFBhdGhSZXN1bWVQb2ludAorICAgIGF1dG8gaXRlciA9IG1fZmFzdFBhdGhSZXN1bWVM
YWJlbHMuZmluZChtX2J5dGVjb2RlSW5kZXgpOworICAgIGlmIChpdGVyICE9IG1fZmFzdFBhdGhS
ZXN1bWVMYWJlbHMuZW5kKCkpCisgICAgICAgIHJldHVybiBpdGVyLT52YWx1ZTsKKyAgICAvLyBO
ZXh0IGluc3RydWN0aW9uIGluIHNlcXVlbmNlCisgICAgY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbiA9IG1fdW5saW5rZWRDb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmF0KG1f
Ynl0ZWNvZGVJbmRleCkucHRyKCk7CisgICAgcmV0dXJuIG1fbGFiZWxzW21fYnl0ZWNvZGVJbmRl
eC5vZmZzZXQoKSArIGN1cnJlbnRJbnN0cnVjdGlvbi0+c2l6ZSgpXTsKK30KKworCiBBTFdBWVNf
SU5MSU5FIHZvaWQgSklUOjphZGRTbG93Q2FzZShKdW1wIGp1bXApCiB7CiAgICAgQVNTRVJUKG1f
Ynl0ZWNvZGVJbmRleCk7IC8vIFRoaXMgbWV0aG9kIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBkdXJp
bmcgaG90L2NvbGQgcGF0aCBnZW5lcmF0aW9uLCBzbyB0aGF0IG1fYnl0ZWNvZGVJbmRleCBpcyBz
ZXQuCkBAIC0zMjksMTEgKzM0OSw2IEBAIEFMV0FZU19JTkxJTkUgZG91YmxlIEpJVDo6Z2V0T3Bl
cmFuZENvbnN0YW50RG91YmxlKFZpcnR1YWxSZWdpc3RlciBzcmMpCiB9CiAjZW5kaWYKIAotQUxX
QVlTX0lOTElORSB2b2lkIEpJVDo6ZW1pdEluaXRSZWdpc3RlcihWaXJ0dWFsUmVnaXN0ZXIgZHN0
KQotewotICAgIHN0b3JlVHJ1c3RlZFZhbHVlKGpzVW5kZWZpbmVkKCksIGFkZHJlc3NGb3IoZHN0
KSk7Ci19Ci0KIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIo
VmlydHVhbFJlZ2lzdGVyIHNyYywgSlNWYWx1ZVJlZ3MgZHN0KQogewogICAgIEFTU0VSVChtX2J5
dGVjb2RlSW5kZXgpOyAvLyBUaGlzIG1ldGhvZCBzaG91bGQgb25seSBiZSBjYWxsZWQgZHVyaW5n
IGhvdC9jb2xkIHBhdGggZ2VuZXJhdGlvbiwgc28gdGhhdCBtX2J5dGVjb2RlSW5kZXggaXMgc2V0
LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggNGM4NjMxNDlh
ZGI5YzkzMDAzNDk4ODcxNzExMWMwMjQ5NzM1ZjNmZi4uMGIzYjVmY2Q5M2FiMTJlZDQ0MDYyZTJl
YmVlNjhjODZmNGRmZjJlZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMu
Y3BwCkBAIC0xMjUzLDEwICsxMjUzLDEyIEBAIHZvaWQgSklUOjplbWl0X29wX2VudGVyKGNvbnN0
IEluc3RydWN0aW9uKikKICAgICAvLyBvYmplY3QgbGlmZXRpbWUgYW5kIGluY3JlYXNpbmcgR0Mg
cHJlc3N1cmUuCiAgICAgc2l6ZV90IGNvdW50ID0gbV91bmxpbmtlZENvZGVCbG9jay0+bnVtVmFy
cygpOwogI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICBmb3IgKHNpemVfdCBqID0g
Q29kZUJsb2NrOjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJz
KCk7IGogPCBjb3VudDsgKytqKQotICAgICAgICBlbWl0SW5pdFJlZ2lzdGVyKHZpcnR1YWxSZWdp
c3RlckZvckxvY2FsKGopKTsKKyAgICBzaXplX3QgZmlyc3QgPSBDb2RlQmxvY2s6OmxsaW50QmFz
ZWxpbmVDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKTsKKyAgICBpZiAoZmlyc3Qg
PCBjb3VudCkKKyAgICAgICAgbW92ZVRydXN0ZWRWYWx1ZShqc1VuZGVmaW5lZCgpLCBqc1JlZ1Qx
MCk7CisgICAgZm9yIChzaXplX3QgaiA9IGZpcnN0OyBqIDwgY291bnQ7ICsraikKKyAgICAgICAg
ZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChqKSwganNSZWdU
MTApOwogCi0gICAgCiAgICAgbG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVC
bG9jayksIHJlZ1QwKTsKICAgICBlbWl0V3JpdGVCYXJyaWVyKHJlZ1QwKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCAxMTRhNzRk
NGU0OTEzNzZkY2M1MjVlZDIxNWQxMTljZTUwNzU2ZmE1Li5jYWM0MGNlZDgyYmQ5NzcyOTY1ZGVl
YWExMDkzY2M0NWYyOWQyOTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFByb3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFByb3BlcnR5QWNjZXNzLmNwcApAQCAtODksNiArODksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9n
ZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgICAg
IGFkZFNsb3dDYXNlKCk7CiAgICAgICAgIG1fZ2V0QnlWYWxzLmFwcGVuZChnZW4pOwogCisgICAg
ICAgIHNldEZhc3RQYXRoUmVzdW1lUG9pbnQoKTsKICAgICAgICAgZW1pdFZhbHVlUHJvZmlsaW5n
U2l0ZShieXRlY29kZSwgcmVzdWx0SlNSKTsKICAgICAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rl
cihkc3QsIHJlc3VsdEpTUik7CiAgICAgfQpAQCAtMTAwLDggKzEwMSw2IEBAIHZvaWQgSklUOjpn
ZW5lcmF0ZUdldEJ5VmFsU2xvd0Nhc2UoY29uc3QgT3Bjb2RlVHlwZSYgYnl0ZWNvZGUsIFZlY3Rv
cjxTbG93Q2FzZUVuCiAgICAgaWYgKCFoYXNBbnlTbG93Q2FzZXMoaXRlcikpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKLQogICAg
IGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKICAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciYgZ2Vu
ID0gbV9nZXRCeVZhbHNbbV9nZXRCeVZhbEluZGV4KytdOwpAQCAtMTIyLDEwICsxMjEsOCBAQCB2
b2lkIEpJVDo6Z2VuZXJhdGVHZXRCeVZhbFNsb3dDYXNlKGNvbnN0IE9wY29kZVR5cGUmIGJ5dGVj
b2RlLCBWZWN0b3I8U2xvd0Nhc2VFbgogICAgIGxvYWRHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0
R1BSKTsKICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5k
ZXgsIHN0dWJJbmZvR1BSKTsKICAgICBtYXRlcmlhbGl6ZVBvaW50ZXJJbnRvTWV0YWRhdGEoYnl0
ZWNvZGUsIE9wY29kZVR5cGU6Ok1ldGFkYXRhOjpvZmZzZXRPZkFycmF5UHJvZmlsZSgpLCBwcm9m
aWxlR1BSKTsKLSAgICBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGU8U2xvd09wZXJhdGlvbj4oCi0g
ICAgICAgIGJ5dGVjb2RlLAorICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4oCiAgICAg
ICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dP
cGVyYXRpb24oKSksCi0gICAgICAgIGRzdCwKICAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBzdHVi
SW5mb0dQUiwgcHJvZmlsZUdQUiwgYXJnM0pTUiwgYXJnNEpTUik7CiAjZWxzZQogICAgIFZNJiB2
bSA9IHRoaXMtPnZtKCk7CkBAIC0xNDgsOSArMTQ1LDYgQEAgdm9pZCBKSVQ6OmdlbmVyYXRlR2V0
QnlWYWxTbG93Q2FzZShjb25zdCBPcGNvZGVUeXBlJiBieXRlY29kZSwgVmVjdG9yPFNsb3dDYXNl
RW4KICAgICBtYXRlcmlhbGl6ZVBvaW50ZXJJbnRvTWV0YWRhdGEoYnl0ZWNvZGUsIE9wY29kZVR5
cGU6Ok1ldGFkYXRhOjpvZmZzZXRPZkFycmF5UHJvZmlsZSgpLCBwcm9maWxlR1BSKTsKICAgICBl
bWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X3ZhbF9wcmVwYXJl
Q2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKICAgICBlbWl0TmFrZWRO
ZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENv
ZGU8Tm9QdHJUYWc+KCkpOwotCi0gICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShieXRlY29kZSwg
cmV0dXJuVmFsdWVKU1IpOwotICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCByZXR1cm5W
YWx1ZUpTUik7CiAjZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKICAgICBnZW4u
cmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7CkBAIC0yMzEsNiArMjI1
LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogICAgIGFkZFNsb3dDYXNlKCk7CiAgICAgbV9nZXRCeVZh
bHMuYXBwZW5kKGdlbik7CiAKKyAgICBzZXRGYXN0UGF0aFJlc3VtZVBvaW50KCk7CiAgICAgZW1p
dFZhbHVlUHJvZmlsaW5nU2l0ZShieXRlY29kZSwgcmVzdWx0SlNSKTsKICAgICBlbWl0UHV0Vmly
dHVhbFJlZ2lzdGVyKGRzdCwgcmVzdWx0SlNSKTsKIH0KQEAgLTIzOCwxNSArMjMzLDEzIEBAIHZv
aWQgSklUOjplbWl0X29wX2dldF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgQVNTRVJUKGhhc0FueVNsb3dDYXNlcyhpdGVyKSk7
Ci0gICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRQcml2YXRl
TmFtZT4oKTsKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7Ci0KICAg
ICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCiAgICAgSklUR2V0QnlWYWxHZW5lcmF0b3ImIGdl
biA9IG1fZ2V0QnlWYWxzW21fZ2V0QnlWYWxJbmRleCsrXTsKICAgICBMYWJlbCBjb2xkUGF0aEJl
Z2luID0gbGFiZWwoKTsKIAogI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKKyAgICBhdXRv
IGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldFByaXZhdGVOYW1lPigpOwog
ICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25HZXRQcml2YXRlTmFt
ZU9wdGltaXplKTsKICAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZl
cnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7CiAgICAgY29uc3RleHByIEdQUlJl
ZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCk7
CkBAIC0yNTcsMTIgKzI1MCwxMSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVf
bmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZQogICAgIGxvYWRD
b25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIp
OwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9iYXNlLCBiYXNlSlNSKTsK
ICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fcHJvcGVydHksIHByb3BlcnR5
SlNSKTsKLSAgICBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGU8U2xvd09wZXJhdGlvbj4oCi0gICAg
ICAgIGJ5dGVjb2RlLAorICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4oCiAgICAgICAg
IEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVy
YXRpb24oKSksCi0gICAgICAgIGRzdCwKICAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5m
b0dQUiwgYmFzZUpTUiwgcHJvcGVydHlKU1IpOwogI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oY3Vy
cmVudEluc3RydWN0aW9uKTsKICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgIHVpbnQzMl90
IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChC
eXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwpAQCAtMjc5
LDExICsyNzEsOSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZQogICAgIGxvYWRDb25zdGFudChn
ZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwogICAgIGVt
aXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX3By
ZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogICAgIGVtaXRO
YWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFn
Z2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0KLSAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKGJ5dGVj
b2RlLCByZXR1cm5WYWx1ZUpTUik7Ci0gICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIHJl
dHVyblZhbHVlSlNSKTsKICNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAorICAg
IHN0YXRpY19hc3NlcnQoQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cmVzdWx0SlNSID09IHJl
dHVyblZhbHVlSlNSKTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4s
IENhbGwoKSk7CiB9CiAKQEAgLTExMzksOCArMTEyOSwxMCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90
cnlfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAg
Z2VuLmdlbmVyYXRlQmFzZWxpbmVEYXRhSUNGYXN0UGF0aCgqdGhpcywgc3R1YkluZm9JbmRleCwg
c3R1YkluZm9HUFIpOwogICAgIGFkZFNsb3dDYXNlKCk7CiAgICAgbV9nZXRCeUlkcy5hcHBlbmQo
Z2VuKTsKLSAgICAKKwogICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoYnl0ZWNvZGUsIHJlc3Vs
dEpTUik7CisKKyAgICBzZXRGYXN0UGF0aFJlc3VtZVBvaW50KCk7CiAgICAgZW1pdFB1dFZpcnR1
YWxSZWdpc3RlcihyZXN1bHRWUmVnLCByZXN1bHRKU1IpOwogfQogCkBAIC0xMTQ5LDcgKzExNDEs
NiBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfdHJ5X2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uLCBWZWN0bwogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7
CiAKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFRyeUdldEJ5
SWQ+KCk7Ci0gICAgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdFZSZWcgPSBieXRlY29kZS5tX2RzdDsK
ICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+aWRl
bnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7CiAKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9y
JiBnZW4gPSBtX2dldEJ5SWRzW21fZ2V0QnlJZEluZGV4KytdOwpAQCAtMTE2Nyw3ICsxMTU4LDYg
QEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3RyeV9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG8KICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5
dGVjb2RlLm1fYmFzZSwgYmFzZUpTUik7CiAgICAgY2FsbE9wZXJhdGlvbjxTbG93T3BlcmF0aW9u
PigKICAgICAgICAgQWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNl
dE9mU2xvd09wZXJhdGlvbigpKSwKLSAgICAgICAgcmVzdWx0VlJlZywKICAgICAgICAgZ2xvYmFs
T2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUpTUiwKICAgICAgICAgQ2FjaGVhYmxlSWRlbnRp
Zmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fdW5saW5rZWRDb2Rl
QmxvY2ssICppZGVudCkucmF3Qml0cygpKTsKICNlbHNlCkBAIC0xMTg4LDEwICsxMTc4LDkgQEAg
dm9pZCBKSVQ6OmVtaXRTbG93X29wX3RyeV9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG8KICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxk
ZWNsdHlwZShvcGVyYXRpb25UcnlHZXRCeUlkT3B0aW1pemUpLCBkZWNsdHlwZShvcGVyYXRpb25H
ZXRCeUlkT3B0aW1pemUpPjo6dmFsdWUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENU
SVN0dWIoc2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29k
ZTxOb1B0clRhZz4oKSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVj
a0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLQotICAgIGVt
aXRQdXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0VlJlZywgcmV0dXJuVmFsdWVHUFIpOwogI2VuZGlm
IC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCisgICAgc3RhdGljX2Fzc2VydChCYXNlbGlu
ZUdldEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUiA9PSByZXR1cm5WYWx1ZUpTUik7CiAgICAgZ2Vu
LnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQogCkBAIC0xMjIz
LDYgKzEyMTIsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfZGlyZWN0KGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgYWRkU2xvd0Nhc2UoKTsKICAgICBt
X2dldEJ5SWRzLmFwcGVuZChnZW4pOwogCisgICAgc2V0RmFzdFBhdGhSZXN1bWVQb2ludCgpOwog
ICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoYnl0ZWNvZGUsIHJlc3VsdEpTUik7CiAgICAgZW1p
dFB1dFZpcnR1YWxSZWdpc3RlcihyZXN1bHRWUmVnLCByZXN1bHRKU1IpOwogfQpAQCAtMTIzMiw3
ICsxMjIyLDYgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZF9kaXJlY3QoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmUKICAgICBsaW5rQWxsU2xvd0Nhc2Vz
KGl0ZXIpOwogCiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BH
ZXRCeUlkRGlyZWN0PigpOwotICAgIFZpcnR1YWxSZWdpc3RlciByZXN1bHRWUmVnID0gYnl0ZWNv
ZGUubV9kc3Q7CiAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fdW5saW5rZWRDb2Rl
QmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOwogCiAgICAgSklUR2V0QnlJ
ZEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeUlkc1ttX2dldEJ5SWRJbmRleCsrXTsKQEAgLTEyNDgs
MTAgKzEyMzcsOCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX2RpcmVjdChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZQogICAgIGxvYWRHbG9iYWxPYmpl
Y3QoZ2xvYmFsT2JqZWN0R1BSKTsKICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHVi
SW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyKGJ5dGVjb2RlLm1fYmFzZSwgYmFzZUpTUik7Ci0gICAgY2FsbE9wZXJhdGlvbldpdGhQcm9m
aWxlPFNsb3dPcGVyYXRpb24+KAotICAgICAgICBieXRlY29kZSwKKyAgICBjYWxsT3BlcmF0aW9u
PFNsb3dPcGVyYXRpb24+KAogICAgICAgICBBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVT
dHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLAotICAgICAgICByZXN1bHRWUmVnLAog
ICAgICAgICBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlSlNSLAogICAgICAgICBD
YWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2so
bV91bmxpbmtlZENvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkpOwogI2Vsc2UKQEAgLTEyNzIs
MTEgKzEyNTksOSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX2RpcmVjdChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZQogICAgIHN0YXRpY19hc3NlcnQo
c3RkOjppc19zYW1lPGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWREaXJlY3RPcHRpbWl6ZSksIGRl
Y2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk+Ojp2YWx1ZSk7CiAgICAgZW1pdE5ha2Vk
TmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVy
YXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2
bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJU
YWc+KCkpOwotCi0gICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShieXRlY29kZSwgcmV0dXJuVmFs
dWVKU1IpOwotICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0VlJlZywgcmV0dXJuVmFs
dWVKU1IpOwogI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCisgICAgc3RhdGlj
X2Fzc2VydChCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUiA9PSByZXR1cm5WYWx1
ZUpTUik7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkp
OwogfQogCkBAIC0xMzIwLDYgKzEzMDUsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBhZGRTbG93Q2FzZSgp
OwogICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CiAKKyAgICBzZXRGYXN0UGF0aFJlc3VtZVBv
aW50KCk7CiAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShieXRlY29kZSwgcmVzdWx0SlNSKTsK
ICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHJlc3VsdFZSZWcsIHJlc3VsdEpTUik7CiB9CkBA
IC0xMzI5LDcgKzEzMTUsNiBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbAogICAgIGxpbmtBbGxT
bG93Q2FzZXMoaXRlcik7CiAKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9u
LT5hczxPcEdldEJ5SWQ+KCk7Ci0gICAgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdFZSZWcgPSBieXRl
Y29kZS5tX2RzdDsKICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENv
ZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7CiAKICAgICBKSVRHZXRC
eUlkR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5SWRzW21fZ2V0QnlJZEluZGV4KytdOwpAQCAtMTM0
NSwxMCArMTMzMCw4IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWQoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsCiAgICAgbG9hZEdsb2JhbE9i
amVjdChnbG9iYWxPYmplY3RHUFIpOwogICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0
dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVn
aXN0ZXIoYnl0ZWNvZGUubV9iYXNlLCBiYXNlSlNSKTsKLSAgICBjYWxsT3BlcmF0aW9uV2l0aFBy
b2ZpbGU8U2xvd09wZXJhdGlvbj4oCi0gICAgICAgIGJ5dGVjb2RlLAorICAgIGNhbGxPcGVyYXRp
b248U2xvd09wZXJhdGlvbj4oCiAgICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVy
ZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAgIHJlc3VsdFZSZWcs
CiAgICAgICAgIGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VKU1IsCiAgICAgICAg
IENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9j
ayhtX3VubGlua2VkQ29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSk7CiAjZWxzZQpAQCAtMTM2
OCwxMSArMTM1MSw5IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWQoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsCiAgICAgbW92ZShUcnVzdGVk
SW1tUHRyKENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNv
ZGVCbG9jayhtX3VubGlua2VkQ29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSksIHByb3BlcnR5
R1BSKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5
X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogICAg
IGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3Ip
LnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0KLSAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRl
KGJ5dGVjb2RlLCByZXR1cm5WYWx1ZUpTUik7Ci0gICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihy
ZXN1bHRWUmVnLCByZXR1cm5WYWx1ZUpTUik7CiAjZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9U
SFVOS1MpCiAKKyAgICBzdGF0aWNfYXNzZXJ0KEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6cmVz
dWx0SlNSID09IHJldHVyblZhbHVlSlNSKTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNv
bGRQYXRoQmVnaW4sIENhbGwoKSk7CiB9CiAKQEAgLTE0MDksNiArMTM5MCw3IEBAIHZvaWQgSklU
OjplbWl0X29wX2dldF9ieV9pZF93aXRoX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKICAgICBhZGRTbG93Q2FzZSgpOwogICAgIG1fZ2V0QnlJZHNXaXRoVGhpcy5h
cHBlbmQoZ2VuKTsKIAorICAgIHNldEZhc3RQYXRoUmVzdW1lUG9pbnQoKTsKICAgICBlbWl0VmFs
dWVQcm9maWxpbmdTaXRlKGJ5dGVjb2RlLCByZXN1bHRKU1IpOwogICAgIGVtaXRQdXRWaXJ0dWFs
UmVnaXN0ZXIocmVzdWx0VlJlZywgcmVzdWx0SlNSKTsKIH0KQEAgLTE0NTUsNyArMTQzNyw2IEBA
IHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sCiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAog
ICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZFdpdGhU
aGlzPigpOwotICAgIFZpcnR1YWxSZWdpc3RlciByZXN1bHRWUmVnID0gYnl0ZWNvZGUubV9kc3Q7
CiAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fdW5saW5rZWRDb2RlQmxvY2stPmlk
ZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOwogCiAgICAgSklUR2V0QnlJZFdpdGhUaGlz
R2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5SWRzV2l0aFRoaXNbbV9nZXRCeUlkV2l0aFRoaXNJbmRl
eCsrXTsKQEAgLTE0NzMsMTAgKzE0NTQsOCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5
X2lkX3dpdGhfdGhpcyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLAogICAg
IGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1Yklu
Zm9HUFIpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9iYXNlLCBiYXNl
SlNSKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fdGhpc1ZhbHVlLCB0
aGlzSlNSKTsKLSAgICBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGU8U2xvd09wZXJhdGlvbj4oCi0g
ICAgICAgIGJ5dGVjb2RlLAorICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4oCiAgICAg
ICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dP
cGVyYXRpb24oKSksCi0gICAgICAgIHJlc3VsdFZSZWcsCiAgICAgICAgIGdsb2JhbE9iamVjdEdQ
Uiwgc3R1YkluZm9HUFIsIGJhc2VKU1IsIHRoaXNKU1IsCiAgICAgICAgIENhY2hlYWJsZUlkZW50
aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX3VubGlua2VkQ29k
ZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSk7CiAjZWxzZQpAQCAtMTQ5OCwxMSArMTQ3Nyw5IEBA
IHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sCiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKENhY2hlYWJs
ZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX3VubGlu
a2VkQ29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSksIHByb3BlcnR5R1BSKTsKICAgICBlbWl0
TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpc19w
cmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKICAgICBlbWl0
TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRh
Z2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotCi0gICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShieXRl
Y29kZSwgcmV0dXJuVmFsdWVKU1IpOwotICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0
VlJlZywgcmV0dXJuVmFsdWVKU1IpOwogI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktT
KQogCisgICAgc3RhdGljX2Fzc2VydChCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6
cmVzdWx0SlNSID09IHJldHVyblZhbHVlSlNSKTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxs
KGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7CiB9CiAKQEAgLTE3MDgsNiArMTY4NSw3IEBAIHZvaWQg
SklUOjplbWl0X29wX2luX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiAgICAgYWRkU2xvd0Nhc2UoKTsKICAgICBtX2luQnlJZHMuYXBwZW5kKGdlbik7CiAKKyAg
ICBzZXRGYXN0UGF0aFJlc3VtZVBvaW50KCk7CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihy
ZXN1bHRWUmVnLCByZXN1bHRKU1IpOwogfQogCkBAIC0xNzE2LDcgKzE2OTQsNiBAQCB2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfaW5fYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgVmVjdG9yPFNsbwogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKICAgICBhdXRv
IGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEluQnlJZD4oKTsKLSAgICBWaXJ0
dWFsUmVnaXN0ZXIgcmVzdWx0VlJlZyA9IGJ5dGVjb2RlLm1fZHN0OwogICAgIGNvbnN0IElkZW50
aWZpZXIqIGlkZW50ID0gJihtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2Rl
Lm1fcHJvcGVydHkpKTsKIAogICAgIEpJVEluQnlJZEdlbmVyYXRvciYgZ2VuID0gbV9pbkJ5SWRz
W21faW5CeUlkSW5kZXgrK107CkBAIC0xNzM0LDcgKzE3MTEsNiBAQCB2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfaW5fYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVj
dG9yPFNsbwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9iYXNlLCBiYXNl
SlNSKTsKICAgICBjYWxsT3BlcmF0aW9uPFNsb3dPcGVyYXRpb24+KAogICAgICAgICBBZGRyZXNz
KHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkp
LAotICAgICAgICByZXN1bHRWUmVnLAogICAgICAgICBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZv
R1BSLCBiYXNlSlNSLAogICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRl
bnRpZmllck93bmVkQnlDb2RlQmxvY2sobV91bmxpbmtlZENvZGVCbG9jaywgKmlkZW50KS5yYXdC
aXRzKCkpOwogI2Vsc2UKQEAgLTE3NTcsMTAgKzE3MzMsOSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfaW5fYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9y
PFNsbwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKG9wZXJhdGlvbklu
QnlJZE9wdGltaXplKSwgZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKT46OnZhbHVl
KTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lk
X3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogICAgIGVt
aXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJl
dGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0KLSAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHJl
c3VsdFZSZWcsIHJldHVyblZhbHVlR1BSKTsKICNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RI
VU5LUykKIAorICAgIHN0YXRpY19hc3NlcnQoQmFzZWxpbmVJbkJ5SWRSZWdpc3RlcnM6OnJlc3Vs
dEpTUiA9PSByZXR1cm5WYWx1ZUpTUik7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xk
UGF0aEJlZ2luLCBDYWxsKCkpOwogfQogCkBAIC0xNzk2LDYgKzE3NzEsNyBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9pbl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
ICAgICBhZGRTbG93Q2FzZSgpOwogICAgIG1faW5CeVZhbHMuYXBwZW5kKGdlbik7CiAKKyAgICBz
ZXRGYXN0UGF0aFJlc3VtZVBvaW50KCk7CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3Qs
IHJlc3VsdEpTUik7CiB9CiAKQEAgLTE4MDQsNyArMTc4MCw2IEBAIHZvaWQgSklUOjplbWl0U2xv
d19vcF9pbl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVj
dG9yPFNsCiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAogICAgIGF1dG8gYnl0ZWNvZGUg
PSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSW5CeVZhbD4oKTsKLSAgICBWaXJ0dWFsUmVnaXN0
ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CiAKICAgICBKSVRJbkJ5VmFsR2VuZXJhdG9yJiBnZW4g
PSBtX2luQnlWYWxzW21faW5CeVZhbEluZGV4KytdOwogCkBAIC0xODI1LDcgKzE4MDAsNiBAQCB2
b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNv
ZGUubV9wcm9wZXJ0eSwgcHJvcGVydHlKU1IpOwogICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJh
dGlvbj4oCiAgICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpv
ZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAgIGRzdCwKICAgICAgICAgZ2xvYmFsT2Jq
ZWN0R1BSLCBzdHViSW5mb0dQUiwgcHJvZmlsZUdQUiwgYmFzZUpTUiwgcHJvcGVydHlKU1IpOwog
I2Vsc2UKICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwpAQCAtMTg0OSwxMCArMTgyMyw5IEBAIHZv
aWQgSklUOjplbWl0U2xvd19vcF9pbl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgVmVjdG9yPFNsCiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8ZGVj
bHR5cGUob3BlcmF0aW9uSW5CeVZhbE9wdGltaXplKSwgZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlW
YWxPcHRpbWl6ZSk+Ojp2YWx1ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1
YihzbG93X29wX2dldF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxO
b1B0clRhZz4oKSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4
Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLQotICAgIGVtaXRQ
dXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCByZXR1cm5WYWx1ZUdQUik7CiAjZW5kaWYgLy8gRU5BQkxF
KEVYVFJBX0NUSV9USFVOS1MpCiAKKyAgICBzdGF0aWNfYXNzZXJ0KEJhc2VsaW5lSW5CeVZhbFJl
Z2lzdGVyczo6cmVzdWx0SlNSID09IHJldHVyblZhbHVlSlNSKTsKICAgICBnZW4ucmVwb3J0U2xv
d1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7CiB9CiAKQEAgLTE4ODEsMTAgKzE4NTQs
MTEgQEAgdm9pZCBKSVQ6OmVtaXRIYXNQcml2YXRlKFZpcnR1YWxSZWdpc3RlciBkc3QsIFZpcnR1
YWxSZWdpc3RlciBiYXNlLCBWaXJ0dWFsUmVnaXMKICAgICBhZGRTbG93Q2FzZSgpOwogICAgIG1f
aW5CeVZhbHMuYXBwZW5kKGdlbik7CiAKKyAgICBzZXRGYXN0UGF0aFJlc3VtZVBvaW50KCk7CiAg
ICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIHJlc3VsdEpTUik7CiB9CiAKLXZvaWQgSklU
OjplbWl0SGFzUHJpdmF0ZVNsb3coVmlydHVhbFJlZ2lzdGVyIGRzdCwgVmlydHVhbFJlZ2lzdGVy
IGJhc2UsIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eSwgQWNjZXNzVHlwZSB0eXBlKQordm9pZCBK
SVQ6OmVtaXRIYXNQcml2YXRlU2xvdyhWaXJ0dWFsUmVnaXN0ZXIgYmFzZSwgVmlydHVhbFJlZ2lz
dGVyIHByb3BlcnR5LCBBY2Nlc3NUeXBlIHR5cGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGJhc2Up
OwogICAgIFVOVVNFRF9QQVJBTShwcm9wZXJ0eSk7CkBAIC0xOTA2LDcgKzE4ODAsNiBAQCB2b2lk
IEpJVDo6ZW1pdEhhc1ByaXZhdGVTbG93KFZpcnR1YWxSZWdpc3RlciBkc3QsIFZpcnR1YWxSZWdp
c3RlciBiYXNlLCBWaXJ0dWFsUgogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHks
IHByb3BlcnR5SlNSKTsKICAgICBjYWxsT3BlcmF0aW9uPFNsb3dPcGVyYXRpb24+KAogICAgICAg
ICBBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3Bl
cmF0aW9uKCkpLAotICAgICAgICBkc3QsCiAgICAgICAgIGdsb2JhbE9iamVjdEdQUiwgc3R1Yklu
Zm9HUFIsIGJhc2VKU1IsIHByb3BlcnR5SlNSKTsKICNlbHNlCiAgICAgVk0mIHZtID0gdGhpcy0+
dm0oKTsKQEAgLTE5MjcsMTAgKzE5MDAsOSBAQCB2b2lkIEpJVDo6ZW1pdEhhc1ByaXZhdGVTbG93
KFZpcnR1YWxSZWdpc3RlciBkc3QsIFZpcnR1YWxSZWdpc3RlciBiYXNlLCBWaXJ0dWFsUgogICAg
IHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKG9wZXJhdGlvbkhhc1ByaXZhdGVC
cmFuZE9wdGltaXplKSwgZGVjbHR5cGUob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk+
Ojp2YWx1ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dl
dF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRh
Zz4oKSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlv
bkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLQotICAgIGVtaXRQdXRWaXJ0
dWFsUmVnaXN0ZXIoZHN0LCByZXR1cm5WYWx1ZUdQUik7CiAjZW5kaWYgLy8gRU5BQkxFKEVYVFJB
X0NUSV9USFVOS1MpCiAKKyAgICBzdGF0aWNfYXNzZXJ0KEJhc2VsaW5lSW5CeVZhbFJlZ2lzdGVy
czo6cmVzdWx0SlNSID09IHJldHVyblZhbHVlSlNSKTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhD
YWxsKGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7CiB9CiAKQEAgLTE5NDUsNyArMTkxNyw3IEBAIHZv
aWQgSklUOjplbWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24sIFZlCiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAogICAg
IGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSGFzUHJpdmF0ZU5hbWU+
KCk7Ci0gICAgZW1pdEhhc1ByaXZhdGVTbG93KGJ5dGVjb2RlLm1fZHN0LCBieXRlY29kZS5tX2Jh
c2UsIGJ5dGVjb2RlLm1fcHJvcGVydHksIEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVOYW1lKTsKKyAg
ICBlbWl0SGFzUHJpdmF0ZVNsb3coYnl0ZWNvZGUubV9iYXNlLCBieXRlY29kZS5tX3Byb3BlcnR5
LCBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlTmFtZSk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2hh
c19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBA
IC0xOTU5LDcgKzE5MzEsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaGFzX3ByaXZhdGVfYnJh
bmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVgogICAgIGxpbmtBbGxT
bG93Q2FzZXMoaXRlcik7CiAKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9u
LT5hczxPcEhhc1ByaXZhdGVCcmFuZD4oKTsKLSAgICBlbWl0SGFzUHJpdmF0ZVNsb3coYnl0ZWNv
ZGUubV9kc3QsIGJ5dGVjb2RlLm1fYmFzZSwgYnl0ZWNvZGUubV9icmFuZCwgQWNjZXNzVHlwZTo6
SGFzUHJpdmF0ZUJyYW5kKTsKKyAgICBlbWl0SGFzUHJpdmF0ZVNsb3coYnl0ZWNvZGUubV9iYXNl
LCBieXRlY29kZS5tX2JyYW5kLCBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlQnJhbmQpOwogfQogCiB2
b2lkIEpJVDo6ZW1pdF9vcF9yZXNvbHZlX3Njb3BlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCkBAIC0yOTIzLDYgKzI4OTUsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9lbnVt
ZXJhdG9yX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
IAogICAgIGRvbmVDYXNlcy5saW5rKHRoaXMpOwogCisgICAgc2V0RmFzdFBhdGhSZXN1bWVQb2lu
dCgpOwogICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoYnl0ZWNvZGUsIHJldHVyblZhbHVlSlNS
KTsKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgcmV0dXJuVmFsdWVKU1IpOwogfQpA
QCAtMzAzMSwxMyArMzAwNCwyMSBAQCB2b2lkIEpJVDo6ZW1pdFdyaXRlQmFycmllcihWaXJ0dWFs
UmVnaXN0ZXIgb3duZXIsIFZpcnR1YWxSZWdpc3RlciB2YWx1ZSwgV3JpdGVCYQogICAgICAgICB2
YWx1ZU5vdENlbGwgPSBicmFuY2hJZk5vdENlbGwocmVnVDApOwogICAgIH0KIAotICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIob3duZXIsIGpzUmVnVDEwKTsKKyAgICBjb25zdGV4cHIgR1BSUmVn
IGFyZzFHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxkZWNsdHlwZShvcGVyYXRpb25Xcml0ZUJh
cnJpZXJTbG93UGF0aCksIDE+KCk7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBjb25zdGV4cHIg
SlNWYWx1ZVJlZ3MgdG1wSlNSIHsgYXJnMUdQUiB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkK
KyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdG1wSlNSIHsgcmVnVDAsIGFyZzFHUFIgfTsKKyNl
bmRpZgorICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKHJlZ1QwLCBhcmcxR1BSLCByZWdUMikp
OworCisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihvd25lciwgdG1wSlNSKTsKICAgICBKdW1w
IG93bmVyTm90Q2VsbDsKICAgICBpZiAobW9kZSA9PSBTaG91bGRGaWx0ZXJCYXNlIHx8IG1vZGUg
PT0gU2hvdWxkRmlsdGVyQmFzZUFuZFZhbHVlKQotICAgICAgICBvd25lck5vdENlbGwgPSBicmFu
Y2hJZk5vdENlbGwoanNSZWdUMTApOworICAgICAgICBvd25lck5vdENlbGwgPSBicmFuY2hJZk5v
dENlbGwodG1wSlNSKTsKIAotICAgIEp1bXAgb3duZXJJc1JlbWVtYmVyZWRPckluRWRlbiA9IGJh
cnJpZXJCcmFuY2godm0oKSwganNSZWdUMTAucGF5bG9hZEdQUigpLCByZWdUMik7Ci0gICAgY2Fs
bE9wZXJhdGlvbk5vRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uV3JpdGVCYXJyaWVyU2xvd1BhdGgs
ICZ2bSgpLCBqc1JlZ1QxMC5wYXlsb2FkR1BSKCkpOworICAgIEp1bXAgb3duZXJJc1JlbWVtYmVy
ZWRPckluRWRlbiA9IGJhcnJpZXJCcmFuY2godm0oKSwgdG1wSlNSLnBheWxvYWRHUFIoKSwgcmVn
VDIpOworICAgIGNhbGxPcGVyYXRpb25Ob0V4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbldyaXRlQmFy
cmllclNsb3dQYXRoLCAmdm0oKSwgdG1wSlNSLnBheWxvYWRHUFIoKSk7CiAgICAgb3duZXJJc1Jl
bWVtYmVyZWRPckluRWRlbi5saW5rKHRoaXMpOwogCiAgICAgaWYgKG1vZGUgPT0gU2hvdWxkRmls
dGVyQmFzZSB8fCBtb2RlID09IFNob3VsZEZpbHRlckJhc2VBbmRWYWx1ZSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445699</attachid>
            <date>2021-12-02 03:17:56 -0800</date>
            <delta_ts>2021-12-02 06:26:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233474-20211202111755.patch</filename>
            <type>text/plain</type>
            <size>66098</size>
            <attacher name="Geza Lore">glore</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MzQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
Y2YyYzQ0MzMyZmJjZTcyZmY2YWFiMDRmOGQ4NzMxNjE2MmFjMTQzLi5jNTQ5NGZiNzNmZWUzZDkw
Y2UzYjBkOTdmYzYxODFhNTNhZjVmZWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTkgQEAKKzIwMjEtMTItMDIgIEdlemEgTG9yZSAgPGdsb3JlQGlnYWxpYS5jb20+CisK
KyAgICAgICAgW0pTQ10gR2VuZXJhdGVkIGNvZGUgc2l6ZSByZWR1Y3Rpb25zIGZvciBiYXNlbGlu
ZSBKSVQgKGFsbCBhcmNoaXRlY3R1cmVzKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNDc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1
enVraS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgYSBmZXcgaW1wcm92ZW1lbnRz
IHRoYXQgcmVkdWNlIHRoZSBnZW5lcmF0ZWQKKyAgICAgICAgY29kZSBzaXplLgorCisgICAgICAg
IFRhcmdldCBpbmRlcGVuZGVudCBpbXByb3ZlbWVudHMgdG8gdGhlIEJhc2VsaW5lIEpJVDoKKwor
ICAgICAgICAxLiBTb21lIGJ5dGVjb2RlcyB0aGF0IGFyZSB2ZXJ5IGZyZXF1ZW50IChlLmcuOiBn
ZXRfYnlfaWQsIGNhbGwpIHNoYXJlCisgICAgICAgIHRoZSBzYW1lIGluc3RydWN0aW9ucyBhdCB0
aGUgdGFpbCBlbmQgb2YgdGhlIGZhc3QgYW5kIHNsb3cgcGF0aHMuCisgICAgICAgIEluc3RlYWQg
b2YgZHVwbGljYXRpbmcgdGhlc2UgaW4gdGhlIHNsb3cgcGF0aCwgdGhlbiBicmFuY2ggdG8gdGhl
IG5leHQKKyAgICAgICAgc2VxdWVudGlhbCBieXRlY29kZSBvbiB0aGUgZmFzdCBwYXRoLCBtYWtl
IHRoZSBzbG93IHBhdGggYnJhbmNoIHRvIGFuZAorICAgICAgICByZXVzZSB0aGVzZSBjb21tb24g
aW5zdHJ1Y3Rpb25zLCB3aGljaCB0aGVuIG5hdHVyYWxseSBmYWxsIHRocm91Z2ggdG8KKyAgICAg
ICAgdGhlIG5leHQgc2VxdWVudGlhbCBieXRlY29kZS4KKworICAgICAgICAyLiBNaW5vciB0d2Vh
a3MgaW4gYSBmZXcgcGxhY2VzIHRvIHJlbW92ZSByZWR1bmRhbnQgcmVsb2FkaW5nIG9mCisgICAg
ICAgIGltbWVkaWF0ZXMgYW5kIHJlbW92ZSByZWR1bmRhbnQgbW92ZXMuCisKKyAgICAgICAgMy4g
UmVtb3ZlIGEgc21hbGwgbnVtYmVyIG9mIHJlZHVuZGFudCB1bmNvbmRpdGlvbmFsIGJyYW5jaGVz
IGZyb20gc29tZQorICAgICAgICBEYXRhSUMgZmFzdCBwYXRocy4KKworICAgICAgICBBUk12Ny9U
aHVtYi0yIHNwZWNpZmljIGltcHJvdmVtZW50czoKKworICAgICAgICA0LiBBZGQgYXNzZW1ibGVy
IHN1cHBvcnQgZm9yIExEUkQgYW5kIFNUUkQgKGxvYWQvc3RvcmUgYSBwYWlyIG9mCisgICAgICAg
IDMyLWJpdCBHUFJzKSBhbmQgdXNlIHRoZW0gdGhyb3VnaG91dCB2aWEgbG9hZFZhbHVlL3N0b3Jl
VmFsdWUuIFRoaXMKKyAgICAgICAgeWllbGRzIGRlbnNlciBjb2RlIGFzIGl0IG9mdGVuIGVsaW1p
bmF0ZXMgcmVwZWF0ZWQgdGVtcG9yYXJ5IHJlZ2lzdGVyCisgICAgICAgIHNldHVwcyAoZXNwZWNp
YWxseSBmb3IgYSBCYXNlSW5kZXggYWNjZXNzKSwgYW5kIGFsc28gZHVlIHRvIHBvaW50IDQKKyAg
ICAgICAgYmVsb3cuIFRoaXMgaXMgYWxzbyBwb3RlbnRpYWxseSBhIHBlcmZvcm1hbmNlIGltcHJv
dmVtZW50IG9uCisgICAgICAgIG1pY3JvLWFyY2hpdGVjdHVyZXMgd2l0aCBhIDY0LWJpdCBMU1Ug
ZGF0YS1wYXRoLgorCisgICAgICAgIDUuIEluc3RydWN0aW9ucyB1c2luZyBvbmx5IHIwLXI3IGFz
IG9wZXJhbmRzIGNhbiBvZnRlbiB1c2UgYSBzaG9ydCwKKyAgICAgICAgMTYtYml0IGVuY29kaW5n
IGluIFRodW1iLTIsIHNvIHByZWZlciB0byB1c2UgbG93IG9yZGVyIHJlZ2lzdGVycworICAgICAg
ICBhcyB0ZW1wb3JhcmllcyB3aGVyZXZlciBwb3NzaWJsZS4KKworICAgICAgICBUaGUgbmV0IGVm
ZmVjdCBvZiB0aGlzIHBhdGNoIGlzIHRoYXQgdGhlIGVtaXR0ZWQgYmFzZWxpbmUgY29kZSBkdXJp
bmcKKyAgICAgICAgYSBydW4gb2YgSmV0U3RyZWFtMiBpcyB+Ni42JSBzbWFsbGVyIG9uIHg4Nl82
NCwgfjUuMSUgc21hbGxlciBvbgorICAgICAgICBBUk02NCwgYW5kIH4yNCUgc21hbGxlciBvbiBB
Uk12Ny9UaHVtYi0yLiBPbiBBUk12Ny9UaHVtYi0yLCBERkcgY29kZQorICAgICAgICBpcyBhbHNv
IH41LjMlIHNtYWxsZXIsIHdoaWxlIG9uIG90aGVyIGFyY2hpdGVjdHVyZXMgdGhlIERGRyBjb2Rl
IGlzCisgICAgICAgIHVuYWZmZWN0ZWQuCisKKyAgICAgICAgT24gQVJNdjcvVGh1bWItMiwgdGhp
cyBwYXRjaCBhbHNvIHlpZWxkcyBhbiB+MiUgaW1wcm92ZW1lbnQgaW4KKyAgICAgICAgSmV0U3Ry
ZWFtMiBzY29yZXMgb24gbXkgdGVzdCBtYWNoaW5lLgorCisgICAgICAgICogYXNzZW1ibGVyL0FS
TXY3QXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6OkFSTXY3QXNzZW1ibGVyOjpsZHJkKToKKyAg
ICAgICAgKEpTQzo6QVJNdjdBc3NlbWJsZXI6OnN0cmQpOgorICAgICAgICAoSlNDOjpBUk12N0Fz
c2VtYmxlcjo6QVJNSW5zdHJ1Y3Rpb25Gb3JtYXR0ZXI6OnR3b1dvcmRPcDEyUmVnNFJlZzRSZWc0
SW1tOCk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmg6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyOjphZGRQdHIpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckFSTXY3Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OmJlc3RU
ZW1wUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3OjpzY3JhdGNo
UmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3OjphZGQzMik6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OnN1YjMyKToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJBUk12Nzo6bG9hZFBhaXIzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyQVJNdjc6OnN0b3JlMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3
OjpzdG9yZVBhaXIzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OmNvbXBh
cmUzMkFuZFNldEZsYWdzKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6dGVz
dDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6YnJhbmNoMzIpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3OjpmYXJKdW1wKToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJBUk12Nzo6Y2FsbCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
QVJNdjc6OmNvbXBhcmUzMik6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQ
Uy5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmxvYWRQYWlyMzIpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnN0b3JlUGFpcjMyKToKKyAgICAgICAgKiBq
aXQvQXNzZW1ibHlIZWxwZXJzLmg6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6c3Rv
cmVWYWx1ZSk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6bG9hZFZhbHVlKToKKyAg
ICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNs
b3dDYXNlcyk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRDYWxsLmNw
cDoKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlQ2FsbEV2YWwpOgorICAgICAgICAoSlNDOjpK
SVQ6OmNvbXBpbGVDYWxsRXZhbFNsb3dDYXNlKToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxl
T3BDYWxsKToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlT3BDYWxsU2xvd0Nhc2UpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX29wZW4pOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX25leHQpOgorICAgICAgICAqIGppdC9KSVRJbmxp
bmVDYWNoZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlR2V0QnlJZElubGlu
ZUFjY2Vzcyk6CisgICAgICAgIChKU0M6OkpJVFB1dEJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlQmFz
ZWxpbmVEYXRhSUNGYXN0UGF0aCk6CisgICAgICAgICogaml0L0pJVElubGluZUNhY2hlR2VuZXJh
dG9yLmg6CisgICAgICAgICogaml0L0pJVElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SklUOjpz
ZXRGYXN0UGF0aFJlc3VtZVBvaW50KToKKyAgICAgICAgKEpTQzo6SklUOjpmYXN0UGF0aFJlc3Vt
ZVBvaW50IGNvbnN0KToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdF9vcF9lbnRlcik6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNz
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV92YWwpOgorICAgICAgICAo
SlNDOjpKSVQ6OmdlbmVyYXRlR2V0QnlWYWxTbG93Q2FzZSk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19v
cF9nZXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RyeV9nZXRf
YnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3RyeV9nZXRfYnlfaWQpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX2RpcmVjdCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX2RpcmVjdCk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF9nZXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dl
dF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfd2l0aF90aGlz
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2luX2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0U2xvd19vcF9pbl9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pbl9i
eV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2luX2J5X3ZhbCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdEhhc1ByaXZhdGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRI
YXNQcml2YXRlU2xvdyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaGFzX3ByaXZh
dGVfbmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaGFzX3ByaXZhdGVfYnJh
bmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9nZXRfYnlfdmFsKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0V3JpdGVCYXJyaWVyKToKKwogMjAyMS0xMS0zMCAgQWxl
eGV5IFNodmF5a2EgIDxhc2h2YXlrYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lICJxdWV1
ZVRhc2tUb0V2ZW50TG9vcCIgdG8gInF1ZXVlTWljcm90YXNrVG9FdmVudExvb3AiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTXY3QXNzZW1ibGVyLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTXY3QXNzZW1ibGVyLmgKaW5kZXggYjEy
NjUzODVhNWQ3Mzk2N2VkNWU5MDk0ODIyMDllZGRiNGY0MjQyNS4uNzc2NGRmMWUxOWU0YmE3NjY1
ZTg4MWYyYjNmOGQ0ZDFhNWVlY2ZlZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaApAQCAtNTYyLDYgKzU2Miw4IEBAIHByaXZhdGU6CiAg
ICAgdHlwZWRlZiBlbnVtIHsKICAgICAgICAgT1BfQl9UMSAgICAgICAgID0gMHhEMDAwLAogICAg
ICAgICBPUF9CX1QyICAgICAgICAgPSAweEUwMDAsCisgICAgICAgIE9QX1NUUkRfaW1tX1QxICA9
IDB4RTg0MCwKKyAgICAgICAgT1BfTERSRF9pbW1fVDEgID0gMHhFODUwLAogICAgICAgICBPUF9Q
T1BfVDIgICAgICAgPSAweEU4QkQsCiAgICAgICAgIE9QX1BVU0hfVDIgICAgICA9IDB4RTkyRCwK
ICAgICAgICAgT1BfQU5EX3JlZ19UMiAgID0gMHhFQTAwLApAQCAtODEwLDcgKzgxMiw3IEBAIHB1
YmxpYzoKICAgICAvLyBOT1RFOiBJbiBhbiBJVCBibG9jaywgYWRkIGRvZXNuJ3QgbW9kaWZ5IHRo
ZSBmbGFncyByZWdpc3Rlci4KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgYWRkKFJlZ2lzdGVySUQg
cmQsIFJlZ2lzdGVySUQgcm4sIFJlZ2lzdGVySUQgcm0pCiAgICAgewotICAgICAgICBpZiAocmQg
PT0gQVJNUmVnaXN0ZXJzOjpzcCkgeworICAgICAgICBpZiAocmQgPT0gQVJNUmVnaXN0ZXJzOjpz
cCAmJiByZCAhPSBybikgewogICAgICAgICAgICAgbW92KHJkLCBybik7CiAgICAgICAgICAgICBy
biA9IHJkOwogICAgICAgICB9CkBAIC0xMjQwLDYgKzEyNDIsNDcgQEAgcHVibGljOgogICAgICAg
ICAgICAgbV9mb3JtYXR0ZXIudHdvV29yZE9wMTJSZWc0Rm91ckZvdXJzKE9QX0xEUlNIX3JlZ19U
Miwgcm4sIEZvdXJGb3VycyhydCwgMCwgc2hpZnQsIHJtKSk7CiAgICAgfQogCisgICAgLy8gSWYg
aW5kZXggaXMgc2V0LCB0aGlzIGlzIGEgcmVndWxhciBvZmZzZXQgb3IgYSBwcmUtaW5kZXhlZCBs
b2FkOworICAgIC8vIGlmIGluZGV4IGlzIG5vdCBzZXQgdGhlbiBpdCBpcyBhIHBvc3QtaW5kZXgg
bG9hZC4KKyAgICAvLworICAgIC8vIElmIHdiYWNrIGlzIHNldCBybiBpcyB1cGRhdGVkIC0gdGhp
cyBpcyBhIHByZSBvciBwb3N0IGluZGV4IGxvYWQsCisgICAgLy8gaWYgd2JhY2sgaXMgbm90IHNl
dCB0aGlzIGlzIGEgcmVndWxhciBvZmZzZXQgbWVtb3J5IGFjY2Vzcy4KKyAgICAvLworICAgIC8v
ICgtMTAyMCA8PSBvZmZzZXQgPD0gMTAyMCkKKyAgICAvLyBvZmZzZXQgJSA0ID09IDAKKyAgICAv
LyBfcmVnID0gUkVHW3JuXQorICAgIC8vIF90bXAgPSBfcmVnICsgb2Zmc2V0CisgICAgLy8gX2Fk
ZHIgPSBpbmRleCA/IF90bXAgOiBfcmVnCisgICAgLy8gUkVHW3J0XSA9IE1FTVtfYWRkcl0KKyAg
ICAvLyBSRUdbcnQyXSA9IE1FTVtfYWRkciArIDRdCisgICAgLy8gaWYgKHdiYWNrKSBSRUdbcm5d
ID0gX3RtcAorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBsZHJkKFJlZ2lzdGVySUQgcnQsIFJlZ2lz
dGVySUQgcnQyLCBSZWdpc3RlcklEIHJuLCBpbnQgb2Zmc2V0LCBib29sIGluZGV4LCBib29sIHdi
YWNrKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFCYWRSZWcocnQpKTsKKyAgICAgICAgQVNTRVJU
KCFCYWRSZWcocnQyKSk7CisgICAgICAgIEFTU0VSVChybiAhPSBBUk1SZWdpc3RlcnM6OnBjKTsK
KyAgICAgICAgQVNTRVJUKHJ0ICE9IHJ0Mik7CisgICAgICAgIEFTU0VSVChpbmRleCB8fCB3YmFj
ayk7CisgICAgICAgIEFTU0VSVCghd2JhY2sgfCAocnQgIT0gcm4pKTsKKyAgICAgICAgQVNTRVJU
KCF3YmFjayB8IChydDIgIT0gcm4pKTsKKyAgICAgICAgQVNTRVJUKCEob2Zmc2V0ICYgMHgzKSk7
CisKKyAgICAgICAgYm9vbCBhZGQgPSB0cnVlOworICAgICAgICBpZiAob2Zmc2V0IDwgMCkgewor
ICAgICAgICAgICAgYWRkID0gZmFsc2U7CisgICAgICAgICAgICBvZmZzZXQgPSAtb2Zmc2V0Owor
ICAgICAgICB9CisgICAgICAgIG9mZnNldCA+Pj0gMjsKKyAgICAgICAgQVNTRVJUKCEob2Zmc2V0
ICYgfjB4ZmYpKTsKKworICAgICAgICB1aW50MTZfdCBvcGNvZGUgPSBPUF9MRFJEX2ltbV9UMTsK
KyAgICAgICAgb3Bjb2RlIHw9ICh3YmFjayA8PCA1KTsKKyAgICAgICAgb3Bjb2RlIHw9IChhZGQg
PDwgNyk7CisgICAgICAgIG9wY29kZSB8PSAoaW5kZXggPDwgOCk7CisKKyAgICAgICAgbV9mb3Jt
YXR0ZXIudHdvV29yZE9wMTJSZWc0UmVnNFJlZzRJbW04KHN0YXRpY19jYXN0PE9wY29kZUlEMT4o
b3Bjb2RlKSwgcm4sIHJ0LCBydDIsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCBsc2woUmVn
aXN0ZXJJRCByZCwgUmVnaXN0ZXJJRCBybSwgaW50MzJfdCBzaGlmdEFtb3VudCkKICAgICB7CiAg
ICAgICAgIEFTU0VSVCghQmFkUmVnKHJkKSk7CkBAIC0xMzI5LDYgKzEzNzIsNyBAQCBwdWJsaWM6
CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbW92KFJlZ2lzdGVySUQgcmQsIFJlZ2lzdGVySUQg
cm0pCiAgICAgeworICAgICAgICBBU1NFUlQocmQgIT0gcm0pOyAvLyBVc2UgYSBOT1AgaW5zdGVh
ZAogICAgICAgICBtX2Zvcm1hdHRlci5vbmVXb3JkT3A4UmVnUmVnMTQzKE9QX01PVl9yZWdfVDEs
IHJtLCByZCk7CiAgICAgfQogCkBAIC0xNjc2LDYgKzE3MjAsNDYgQEAgcHVibGljOgogICAgICAg
ICAgICAgbV9mb3JtYXR0ZXIudHdvV29yZE9wMTJSZWc0Rm91ckZvdXJzKE9QX1NUUkhfcmVnX1Qy
LCBybiwgRm91ckZvdXJzKHJ0LCAwLCBzaGlmdCwgcm0pKTsKICAgICB9CiAKKyAgICAvLyBJZiBp
bmRleCBpcyBzZXQsIHRoaXMgaXMgYSByZWd1bGFyIG9mZnNldCBvciBhIHByZS1pbmRleGVkIGxv
YWQ7CisgICAgLy8gaWYgaW5kZXggaXMgbm90IHNldCB0aGVuIGl0IGlzIGEgcG9zdC1pbmRleCBs
b2FkLgorICAgIC8vCisgICAgLy8gSWYgd2JhY2sgaXMgc2V0IHJuIGlzIHVwZGF0ZWQgLSB0aGlz
IGlzIGEgcHJlIG9yIHBvc3QgaW5kZXggbG9hZCwKKyAgICAvLyBpZiB3YmFjayBpcyBub3Qgc2V0
IHRoaXMgaXMgYSByZWd1bGFyIG9mZnNldCBtZW1vcnkgYWNjZXNzLgorICAgIC8vCisgICAgLy8g
KC0xMDIwIDw9IG9mZnNldCA8PSAxMDIwKQorICAgIC8vIG9mZnNldCAlIDQgPT0gMAorICAgIC8v
IF9yZWcgPSBSRUdbcm5dCisgICAgLy8gX3RtcCA9IF9yZWcgKyBvZmZzZXQKKyAgICAvLyBfYWRk
ciA9IGluZGV4ID8gX3RtcCA6IF9yZWcKKyAgICAvLyBNRU1bX2FkZHJdID0gUkVHW3J0XQorICAg
IC8vIE1FTVtfYWRkciArIDRdID0gUkVHW3J0Ml0KKyAgICAvLyBpZiAod2JhY2spIFJFR1tybl0g
PSBfdG1wCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHN0cmQoUmVnaXN0ZXJJRCBydCwgUmVnaXN0
ZXJJRCBydDIsIFJlZ2lzdGVySUQgcm4sIGludCBvZmZzZXQsIGJvb2wgaW5kZXgsIGJvb2wgd2Jh
Y2spCisgICAgeworICAgICAgICBBU1NFUlQoIUJhZFJlZyhydCkpOworICAgICAgICBBU1NFUlQo
IUJhZFJlZyhydDIpKTsKKyAgICAgICAgQVNTRVJUKHJuICE9IEFSTVJlZ2lzdGVyczo6cGMpOwor
ICAgICAgICBBU1NFUlQoaW5kZXggfHwgd2JhY2spOworICAgICAgICBBU1NFUlQoIXdiYWNrIHwg
KHJ0ICE9IHJuKSk7CisgICAgICAgIEFTU0VSVCghd2JhY2sgfCAocnQyICE9IHJuKSk7CisgICAg
ICAgIEFTU0VSVCghKG9mZnNldCAmIDB4MykpOworCisgICAgICAgIGJvb2wgYWRkID0gdHJ1ZTsK
KyAgICAgICAgaWYgKG9mZnNldCA8IDApIHsKKyAgICAgICAgICAgIGFkZCA9IGZhbHNlOworICAg
ICAgICAgICAgb2Zmc2V0ID0gLW9mZnNldDsKKyAgICAgICAgfQorICAgICAgICBvZmZzZXQgPj49
IDI7CisgICAgICAgIEFTU0VSVCghKG9mZnNldCAmIH4weGZmKSk7CisKKyAgICAgICAgdWludDE2
X3Qgb3Bjb2RlID0gT1BfU1RSRF9pbW1fVDE7CisgICAgICAgIG9wY29kZSB8PSAod2JhY2sgPDwg
NSk7CisgICAgICAgIG9wY29kZSB8PSAoYWRkIDw8IDcpOworICAgICAgICBvcGNvZGUgfD0gKGlu
ZGV4IDw8IDgpOworCisgICAgICAgIG1fZm9ybWF0dGVyLnR3b1dvcmRPcDEyUmVnNFJlZzRSZWc0
SW1tOChzdGF0aWNfY2FzdDxPcGNvZGVJRDE+KG9wY29kZSksIHJuLCBydCwgcnQyLCBvZmZzZXQp
OworICAgIH0KKwogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzdWIoUmVnaXN0ZXJJRCByZCwgUmVn
aXN0ZXJJRCBybiwgQVJNVGh1bWJJbW1lZGlhdGUgaW1tKQogICAgIHsKICAgICAgICAgLy8gUmQg
Y2FuIG9ubHkgYmUgU1AgaWYgUm4gaXMgYWxzbyBTUC4KQEAgLTI4ODcsNiArMjk3MSwxMiBAQCBw
cml2YXRlOgogICAgICAgICAgICAgbV9idWZmZXIucHV0U2hvcnQoKHJlZzIgPDwgMTIpIHwgaW1t
KTsKICAgICAgICAgfQogCisgICAgICAgIEFMV0FZU19JTkxJTkUgdm9pZCB0d29Xb3JkT3AxMlJl
ZzRSZWc0UmVnNEltbTgoT3Bjb2RlSUQxIG9wLCBSZWdpc3RlcklEIHJlZzEsIFJlZ2lzdGVySUQg
cmVnMiwgUmVnaXN0ZXJJRCByZWczLCB1aW50OF90IGltbSkKKyAgICAgICAgeworICAgICAgICAg
ICAgbV9idWZmZXIucHV0U2hvcnQob3AgfCByZWcxKTsKKyAgICAgICAgICAgIG1fYnVmZmVyLnB1
dFNob3J0KChyZWcyIDw8IDEyKSB8IChyZWczIDw8IDgpIHwgaW1tKTsKKyAgICAgICAgfQorCiAg
ICAgICAgIEFMV0FZU19JTkxJTkUgdm9pZCB0d29Xb3JkT3AxMlJlZzQwSW1tM1JlZzRJbW0yMElt
bTUoT3Bjb2RlSUQxIG9wLCBSZWdpc3RlcklEIHJlZzEsIFJlZ2lzdGVySUQgcmVnMiwgdWludDE2
X3QgaW1tMSwgdWludDE2X3QgaW1tMiwgdWludDE2X3QgaW1tMykKICAgICAgICAgewogICAgICAg
ICAgICAgbV9idWZmZXIucHV0U2hvcnQob3AgfCByZWcxKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKaW5kZXggZGY5NTk4
ZTBhNzg4OTdlOGE1ZTZiZmE4YTQ0YTY5NjUzZGM5YTRlNC4uMjlkZmZjOGIzNTY2MGZlZGIxMjcy
YTMzODJhNTIxZjVhYjIxMTFiNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKQEAgLTQ0LDEyICs0NCwyMiBAQCBjbGFz
cyBNYWNyb0Fzc2VtYmxlckFSTXY3IDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNz
ZW1ibGVyPiB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBBUk1SZWdpc3RlcnM6OkZQRG91YmxlUmVn
aXN0ZXJJRCBmcFRlbXBSZWdpc3RlciA9IEFSTVJlZ2lzdGVyczo6ZDc7CiAgICAgaW5saW5lIEFS
TVJlZ2lzdGVyczo6RlBTaW5nbGVSZWdpc3RlcklEIGZwVGVtcFJlZ2lzdGVyQXNTaW5nbGUoKSB7
IHJldHVybiBBUk1SZWdpc3RlcnM6OmFzU2luZ2xlKGZwVGVtcFJlZ2lzdGVyKTsgfQogCisgICAg
Ly8gSW4gdGhlIFRodW1iLTIgaW5zdHJ1Y3Rpb24gc2V0LCBpbnN0cnVjdGlvbnMgb3BlcmF0aW5n
IG9ubHkgb24gcmVnaXN0ZXJzIHIwLXI3IGNhbiBvZnRlbgorICAgIC8vIGJlIGVuY29kZWQgdXNp
bmcgMTYtYml0IGVuY29kaW5ncywgd2hpbGUgdGhlIHVzZSBvZiByZWdpc3RlcnMgcjggYW5kIGFi
b3ZlIG9mdGVuIHJlcXVpcmUKKyAgICAvLyAzMi1iaXQgZW5jb2RpbmdzLCBzbyBwcmVmZXIgdG8g
dXNlIHRoZSBhZGRyZXNzVGVtcG9yYXJ5IChyNikgd2hlbmV2ZXIgcG9zc2libGUuCisgICAgaW5s
aW5lIFJlZ2lzdGVySUQgYmVzdFRlbXBSZWdpc3RlcihSZWdpc3RlcklEIGV4Y2x1ZGVkKQorICAg
IHsKKyAgICAgICAgaWYgKGV4Y2x1ZGVkID09IGFkZHJlc3NUZW1wUmVnaXN0ZXIpCisgICAgICAg
ICAgICByZXR1cm4gZGF0YVRlbXBSZWdpc3RlcjsKKyAgICAgICAgcmV0dXJuIGFkZHJlc3NUZW1w
UmVnaXN0ZXI7CisgICAgfQorCiBwdWJsaWM6CiAjZGVmaW5lIERVTU1ZX1JFR0lTVEVSX1ZBTFVF
KGlkLCBuYW1lLCByLCBjcykgMCwKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG51bUdQ
UnMgPSBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8aW50Pih7IEZPUl9FQUNIX0dQX1JFR0lTVEVSKERV
TU1ZX1JFR0lTVEVSX1ZBTFVFKSB9KS5zaXplKCk7CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNp
Z25lZCBudW1GUFJzID0gc3RkOjppbml0aWFsaXplcl9saXN0PGludD4oeyBGT1JfRUFDSF9GUF9S
RUdJU1RFUihEVU1NWV9SRUdJU1RFUl9WQUxVRSkgfSkuc2l6ZSgpOwogI3VuZGVmIERVTU1ZX1JF
R0lTVEVSX1ZBTFVFCi0gICAgUmVnaXN0ZXJJRCBzY3JhdGNoUmVnaXN0ZXIoKSB7IHJldHVybiBk
YXRhVGVtcFJlZ2lzdGVyOyB9CisgICAgUmVnaXN0ZXJJRCBzY3JhdGNoUmVnaXN0ZXIoKSB7IHJl
dHVybiBhZGRyZXNzVGVtcFJlZ2lzdGVyOyB9CiAKICAgICBNYWNyb0Fzc2VtYmxlckFSTXY3KCkK
ICAgICAgICAgOiBtX21ha2VKdW1wUGF0Y2hhYmxlKGZhbHNlKQpAQCAtMTgxLDIwICsxOTEsMjcg
QEAgcHVibGljOgogCiAgICAgdm9pZCBhZGQzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklE
IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgLy8gRm9yIGFkZHMgd2l0aCBz
dGFjayBwb2ludGVyIGRlc3RpbmF0aW9uIGF2b2lkIHVucHJlZGljdGFibGUgaW5zdHJ1Y3Rpb24K
KyAgICAgICAgLy8gQXZvaWQgdW5wcmVkaWN0YWJsZSBpbnN0cnVjdGlvbiBpZiB0aGUgZGVzdGlu
YXRpb24gaXMgdGhlIHN0YWNrIHBvaW50ZXIKICAgICAgICAgaWYgKGRlc3QgPT0gQVJNUmVnaXN0
ZXJzOjpzcCAmJiBzcmMgIT0gZGVzdCkgewotICAgICAgICAgICAgYWRkMzIoaW1tLCBzcmMsIGRh
dGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICAgICAgbW92ZShkYXRhVGVtcFJlZ2lzdGVyLCBkZXN0
KTsKKyAgICAgICAgICAgIGFkZDMyKGltbSwgc3JjLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKKyAg
ICAgICAgICAgIG1vdmUoYWRkcmVzc1RlbXBSZWdpc3RlciwgZGVzdCk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBBUk1UaHVtYkltbWVkaWF0ZSBhcm1JbW0gPSBB
Uk1UaHVtYkltbWVkaWF0ZTo6bWFrZVVJbnQxMk9yRW5jb2RlZEltbShpbW0ubV92YWx1ZSk7Ci0g
ICAgICAgIGlmIChhcm1JbW0uaXNWYWxpZCgpKQorICAgICAgICBpZiAoYXJtSW1tLmlzVmFsaWQo
KSkgewogICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkKGRlc3QsIHNyYywgYXJtSW1tKTsKLSAg
ICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBtb3ZlKGltbSwgZGF0YVRlbXBSZWdpc3Rlcik7Ci0g
ICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGQoZGVzdCwgc3JjLCBkYXRhVGVtcFJlZ2lzdGVyKTsK
KyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQorCisgICAgICAgIGFybUltbSA9IEFSTVRo
dW1iSW1tZWRpYXRlOjptYWtlVUludDEyT3JFbmNvZGVkSW1tKC1pbW0ubV92YWx1ZSk7CisgICAg
ICAgIGlmIChhcm1JbW0uaXNWYWxpZCgpKSB7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdWIo
ZGVzdCwgc3JjLCBhcm1JbW0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAg
ICAgICAgbW92ZShpbW0sIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICBtX2Fzc2VtYmxlci5h
ZGQoZGVzdCwgc3JjLCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICB9CiAKICAgICB2b2lkIGFkZDMy
KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKQEAgLTg0MiwxNyArODU5LDQyIEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgbG9hZFBhaXIzMihSZWdpc3RlcklEIHNyYywgVHJ1c3RlZElt
bTMyIG9mZnNldCwgUmVnaXN0ZXJJRCBkZXN0MSwgUmVnaXN0ZXJJRCBkZXN0MikKICAgICB7Ci0g
ICAgICAgIC8vIEZJWE1FOiBsZHJkL2xkbSBjYW4gYmUgdXNlZCBpZiBkZXN0MSBhbmQgZGVzdDIg
YXJlIGNvbnNlY3V0aXZlIHBhaXIgb2YgcmVnaXN0ZXJzLgorICAgICAgICBsb2FkUGFpcjMyKEFk
ZHJlc3Moc3JjLCBvZmZzZXQubV92YWx1ZSksIGRlc3QxLCBkZXN0Mik7CisgICAgfQorCisgICAg
dm9pZCBsb2FkUGFpcjMyKEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0MSwgUmVnaXN0
ZXJJRCBkZXN0MikKKyAgICB7CiAgICAgICAgIEFTU0VSVChkZXN0MSAhPSBkZXN0Mik7IC8vIElm
IGl0IGlzIHRoZSBzYW1lLCBsZHAgYmVjb21lcyBpbGxlZ2FsIGluc3RydWN0aW9uLgotICAgICAg
ICBpZiAoc3JjID09IGRlc3QxKSB7Ci0gICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhzcmMsIG9m
ZnNldC5tX3ZhbHVlICsgNCksIGRlc3QyKTsKLSAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKHNy
Yywgb2Zmc2V0Lm1fdmFsdWUpLCBkZXN0MSk7CisgICAgICAgIGludDMyX3QgYWJzT2Zmc2V0ID0g
YWRkcmVzcy5vZmZzZXQ7CisgICAgICAgIGlmIChhYnNPZmZzZXQgPCAwKQorICAgICAgICAgICAg
YWJzT2Zmc2V0ID0gLWFic09mZnNldDsKKyAgICAgICAgaWYgKCEoYWJzT2Zmc2V0ICYgfjB4M2Zj
KSkKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmxkcmQoZGVzdDEsIGRlc3QyLCBhZGRyZXNzLmJh
c2UsIGFkZHJlc3Mub2Zmc2V0LCAvKiBpbmRleDogKi8gdHJ1ZSwgLyogd2JhY2s6ICovIGZhbHNl
KTsKKyAgICAgICAgZWxzZSBpZiAoYWRkcmVzcy5iYXNlID09IGRlc3QxKSB7CisgICAgICAgICAg
ICBsb2FkMzIoYWRkcmVzcy53aXRoT2Zmc2V0KDQpLCBkZXN0Mik7CisgICAgICAgICAgICBsb2Fk
MzIoYWRkcmVzcywgZGVzdDEpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbG9hZDMy
KEFkZHJlc3Moc3JjLCBvZmZzZXQubV92YWx1ZSksIGRlc3QxKTsKLSAgICAgICAgICAgIGxvYWQz
MihBZGRyZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUgKyA0KSwgZGVzdDIpOworICAgICAgICAgICAg
bG9hZDMyKGFkZHJlc3MsIGRlc3QxKTsKKyAgICAgICAgICAgIGxvYWQzMihhZGRyZXNzLndpdGhP
ZmZzZXQoNCksIGRlc3QyKTsKICAgICAgICAgfQogICAgIH0KIAorICAgIHZvaWQgbG9hZFBhaXIz
MihCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0MSwgUmVnaXN0ZXJJRCBkZXN0MikK
KyAgICB7CisgICAgICAgIC8vIFVzaW5nIHIwLXI3IGNhbiBvZnRlbiBiZSBlbmNvZGVkIHdpdGgg
YSBzaG9ydGVyICgxNi1iaXQgdnMgMzItYml0KSBpbnN0cnVjdGlvbiwgc28gdXNlCisgICAgICAg
IC8vIHdoaWNoZXZlciBkZXN0aW5hdGlvbiByZWdpc3RlciBpcyBpbiB0aGF0IHJhbmdlIChpZiBh
bnkpIGFzIHRoZSBhZGRyZXNzIHRlbXAgcmVnaXN0ZXIKKyAgICAgICAgUmVnaXN0ZXJJRCBzY3Jh
dGNoID0gZGVzdDE7CisgICAgICAgIGlmIChkZXN0MSA+PSBBUk1SZWdpc3RlcnM6OnI4KQorICAg
ICAgICAgICAgc2NyYXRjaCA9IGRlc3QyOworICAgICAgICBpZiAoYWRkcmVzcy5zY2FsZSA9PSBU
aW1lc09uZSkKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZChzY3JhdGNoLCBhZGRyZXNzLmJh
c2UsIGFkZHJlc3MuaW5kZXgpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFNoaWZ0VHlw
ZUFuZEFtb3VudCBzaGlmdCB7IEFSTVNoaWZ0VHlwZTo6U1JUeXBlX0xTTCwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGFkZHJlc3Muc2NhbGUpIH07CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGQo
c2NyYXRjaCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBzaGlmdCk7CisgICAgICAgIH0K
KyAgICAgICAgbG9hZFBhaXIzMihBZGRyZXNzKHNjcmF0Y2gsIGFkZHJlc3Mub2Zmc2V0KSwgZGVz
dDEsIGRlc3QyKTsKKyAgICB9CisKICAgICB2b2lkIHN0b3JlMzIoUmVnaXN0ZXJJRCBzcmMsIEFk
ZHJlc3MgYWRkcmVzcykKICAgICB7CiAgICAgICAgIHN0b3JlMzIoc3JjLCBzZXR1cEFybUFkZHJl
c3MoYWRkcmVzcykpOwpAQCAtODY1LDggKzkwNywxMiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHN0
b3JlMzIoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQogICAgIHsKLSAgICAgICAg
bW92ZShpbW0sIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICBzdG9yZTMyKGRhdGFUZW1wUmVn
aXN0ZXIsIHNldHVwQXJtQWRkcmVzcyhhZGRyZXNzKSk7CisgICAgICAgIEFybUFkZHJlc3MgYXJt
QWRkcmVzcyA9IHNldHVwQXJtQWRkcmVzcyhhZGRyZXNzKTsKKyAgICAgICAgUmVnaXN0ZXJJRCBz
Y3JhdGNoID0gYWRkcmVzc1RlbXBSZWdpc3RlcjsKKyAgICAgICAgaWYgKGFybUFkZHJlc3MudHlw
ZSA9PSBBcm1BZGRyZXNzOjpIYXNJbmRleCkKKyAgICAgICAgICAgIHNjcmF0Y2ggPSBkYXRhVGVt
cFJlZ2lzdGVyOworICAgICAgICBtb3ZlKGltbSwgc2NyYXRjaCk7CisgICAgICAgIHN0b3JlMzIo
c2NyYXRjaCwgYXJtQWRkcmVzcyk7CiAgICAgfQogCiAgICAgdm9pZCBzdG9yZTMyKFRydXN0ZWRJ
bW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQpAQCAtOTUxLDkgKzk5NywzMyBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIHN0b3JlUGFpcjMyKFJlZ2lzdGVySUQgc3JjMSwgUmVnaXN0ZXJJRCBzcmMy
LCBSZWdpc3RlcklEIGRlc3QsIFRydXN0ZWRJbW0zMiBvZmZzZXQpCiAgICAgewotICAgICAgICAv
LyBGSVhNRTogc3RyZC9zdG0gY2FuIGJlIHVzZWQgaWYgc3JjMSBhbmQgc3JjMiBhcmUgY29uc2Vj
dXRpdmUgcGFpciBvZiByZWdpc3RlcnMuCi0gICAgICAgIHN0b3JlMzIoc3JjMSwgQWRkcmVzcyhk
ZXN0LCBvZmZzZXQubV92YWx1ZSkpOwotICAgICAgICBzdG9yZTMyKHNyYzIsIEFkZHJlc3MoZGVz
dCwgb2Zmc2V0Lm1fdmFsdWUgKyA0KSk7CisgICAgICAgIHN0b3JlUGFpcjMyKHNyYzEsIHNyYzIs
IEFkZHJlc3MoZGVzdCwgb2Zmc2V0Lm1fdmFsdWUpKTsKKyAgICB9CisKKyAgICB2b2lkIHN0b3Jl
UGFpcjMyKFJlZ2lzdGVySUQgc3JjMSwgUmVnaXN0ZXJJRCBzcmMyLCBBZGRyZXNzIGFkZHJlc3Mp
CisgICAgeworICAgICAgICBpbnQzMl90IGFic09mZnNldCA9IGFkZHJlc3Mub2Zmc2V0OworICAg
ICAgICBpZiAoYWJzT2Zmc2V0IDwgMCkKKyAgICAgICAgICAgIGFic09mZnNldCA9IC1hYnNPZmZz
ZXQ7CisgICAgICAgIGlmICghKGFic09mZnNldCAmIH4weDNmYykpCisgICAgICAgICAgICBtX2Fz
c2VtYmxlci5zdHJkKHNyYzEsIHNyYzIsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5vZmZzZXQsIC8q
IGluZGV4OiAqLyB0cnVlLCAvKiB3YmFjazogKi8gZmFsc2UpOworICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgIHN0b3JlMzIoc3JjMSwgYWRkcmVzcyk7CisgICAgICAgICAgICBzdG9yZTMyKHNy
YzIsIGFkZHJlc3Mud2l0aE9mZnNldCg0KSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lk
IHN0b3JlUGFpcjMyKFJlZ2lzdGVySUQgc3JjMSwgUmVnaXN0ZXJJRCBzcmMyLCBCYXNlSW5kZXgg
YWRkcmVzcykKKyAgICB7CisgICAgICAgIEFTU0VSVChzcmMxICE9IGRhdGFUZW1wUmVnaXN0ZXIg
JiYgc3JjMiAhPSBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgLy8gVGhlICdhZGRyZXNzVGVt
cFJlZ2lzdGVyJyBtaWdodCBiZSB1c2VkIHdoZW4gdGhlIG9mZnNldCBpcyB3aWRlLCBzbyB1c2Ug
J2RhdGFUZW1wUmVnaXN0ZXInCisgICAgICAgIGlmIChhZGRyZXNzLnNjYWxlID09IFRpbWVzT25l
KQorICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkKGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3Mu
YmFzZSwgYWRkcmVzcy5pbmRleCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgU2hpZnRU
eXBlQW5kQW1vdW50IHNoaWZ0IHsgQVJNU2hpZnRUeXBlOjpTUlR5cGVfTFNMLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oYWRkcmVzcy5zY2FsZSkgfTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFk
ZChkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIHNoaWZ0KTsK
KyAgICAgICAgfQorICAgICAgICBzdG9yZVBhaXIzMihzcmMxLCBzcmMyLCBBZGRyZXNzKGRhdGFU
ZW1wUmVnaXN0ZXIsIGFkZHJlc3Mub2Zmc2V0KSk7CiAgICAgfQogCiAgICAgLy8gUG9zc2libHkg
Y2xvYmJlcnMgc3JjLCBidXQgbm90IG9uIHRoaXMgYXJjaGl0ZWN0dXJlLgpAQCAtMTUyMiw4ICsx
NTkyLDkgQEAgcHJpdmF0ZToKICAgICAgICAgZWxzZSBpZiAoKGFybUltbSA9IEFSTVRodW1iSW1t
ZWRpYXRlOjptYWtlRW5jb2RlZEltbSgtaW1tKSkuaXNWYWxpZCgpKQogICAgICAgICAgICAgbV9h
c3NlbWJsZXIuY21uKGxlZnQsIGFybUltbSk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAg
bW92ZShUcnVzdGVkSW1tMzIoaW1tKSwgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgICAgICBt
X2Fzc2VtYmxlci5jbXAobGVmdCwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICBSZWdp
c3RlcklEIHNjcmF0Y2ggPSBiZXN0VGVtcFJlZ2lzdGVyKGxlZnQpOworICAgICAgICAgICAgbW92
ZShUcnVzdGVkSW1tMzIoaW1tKSwgc2NyYXRjaCk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5j
bXAobGVmdCwgc2NyYXRjaCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTE1ODksMTIgKzE2NjAs
MTMgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAg
ICBtX2Fzc2VtYmxlci50c3QocmVnLCBhcm1JbW0pOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICBtb3ZlKG1hc2ssIGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgICAgICAgICAg
ICAgIGlmIChyZWcgPT0gQVJNUmVnaXN0ZXJzOjpzcCkgewotICAgICAgICAgICAgICAgICAgICBt
b3ZlKHJlZywgYWRkcmVzc1RlbXBSZWdpc3Rlcik7Ci0gICAgICAgICAgICAgICAgICAgIG1fYXNz
ZW1ibGVyLnRzdChhZGRyZXNzVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAg
ICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIudHN0KHJl
ZywgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAgICAgIG1vdmUocmVnLCBkYXRh
VGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICAgICAgcmVnID0gZGF0YVRlbXBSZWdpc3Rl
cjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgUmVnaXN0ZXJJRCBzY3JhdGNo
ID0gYmVzdFRlbXBSZWdpc3RlcihyZWcpOworICAgICAgICAgICAgICAgIG1vdmUobWFzaywgc2Ny
YXRjaCk7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIudHN0KHJlZywgc2NyYXRjaCk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0xNjI1LDE0ICsxNjk3LDE0IEBAIHB1
YmxpYzoKIAogICAgIEp1bXAgYnJhbmNoMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdp
c3RlcklEIGxlZnQsIEFkZHJlc3MgcmlnaHQpCiAgICAgewotICAgICAgICBsb2FkMzIocmlnaHQs
IGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgbGVmdCwg
ZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgIGxvYWQzMihyaWdodCwgYWRkcmVzc1RlbXBSZWdp
c3Rlcik7CisgICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBsZWZ0LCBhZGRyZXNzVGVtcFJl
Z2lzdGVyKTsKICAgICB9CiAKICAgICBKdW1wIGJyYW5jaDMyKFJlbGF0aW9uYWxDb25kaXRpb24g
Y29uZCwgQWRkcmVzcyBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0KQogICAgIHsKLSAgICAgICAgbG9h
ZDMyKGxlZnQsIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29u
ZCwgZGF0YVRlbXBSZWdpc3RlciwgcmlnaHQpOworICAgICAgICBsb2FkMzIobGVmdCwgYWRkcmVz
c1RlbXBSZWdpc3Rlcik7CisgICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBhZGRyZXNzVGVt
cFJlZ2lzdGVyLCByaWdodCk7CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2gzMihSZWxhdGlvbmFs
Q29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0KQpAQCAtMTY1
OCwxMyArMTczMCwxMiBAQCBwdWJsaWM6CiAKICAgICBKdW1wIGJyYW5jaDMyKFJlbGF0aW9uYWxD
b25kaXRpb24gY29uZCwgQWJzb2x1dGVBZGRyZXNzIGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQpCiAg
ICAgewotICAgICAgICBsb2FkMzIobGVmdC5tX3B0ciwgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAg
ICAgIHJldHVybiBicmFuY2gzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCByaWdodCk7CisgICAg
ICAgIGxvYWQzMihsZWZ0Lm1fcHRyLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgcmV0
dXJuIGJyYW5jaDMyKGNvbmQsIGFkZHJlc3NUZW1wUmVnaXN0ZXIsIHJpZ2h0KTsKICAgICB9CiAK
ICAgICBKdW1wIGJyYW5jaDMyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWJzb2x1dGVBZGRy
ZXNzIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkKICAgICB7Ci0gICAgICAgIC8vIHVzZSBhZGRy
ZXNzVGVtcFJlZ2lzdGVyIGluY2FzZSB0aGUgYnJhbmNoMzIgd2UgY2FsbCB1c2VzIGRhdGFUZW1w
UmVnaXN0ZXIuIDotLwogICAgICAgICBsb2FkMzIobGVmdC5tX3B0ciwgYWRkcmVzc1RlbXBSZWdp
c3Rlcik7CiAgICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBhZGRyZXNzVGVtcFJlZ2lzdGVy
LCByaWdodCk7CiAgICAgfQpAQCAtMTgwMCwyMiArMTg3MSwyMiBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIGZhckp1bXAoVHJ1c3RlZEltbVB0ciB0YXJnZXQsIFB0clRhZykKICAgICB7Ci0gICAgICAg
IG1vdmUodGFyZ2V0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYngo
ZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgIG1vdmUodGFyZ2V0LCBhZGRyZXNzVGVtcFJlZ2lz
dGVyKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYngoYWRkcmVzc1RlbXBSZWdpc3Rlcik7CiAgICAg
fQogCiAgICAgLy8gQWRkcmVzcyBpcyBhIG1lbW9yeSBsb2NhdGlvbiBjb250YWluaW5nIHRoZSBh
ZGRyZXNzIHRvIGp1bXAgdG8KICAgICB2b2lkIGZhckp1bXAoQWRkcmVzcyBhZGRyZXNzLCBQdHJU
YWcpCiAgICAgewotICAgICAgICBsb2FkMzIoYWRkcmVzcywgZGF0YVRlbXBSZWdpc3Rlcik7Ci0g
ICAgICAgIG1fYXNzZW1ibGVyLmJ4KGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICBsb2FkMzIo
YWRkcmVzcywgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CisgICAgICAgIG1fYXNzZW1ibGVyLmJ4KGFk
ZHJlc3NUZW1wUmVnaXN0ZXIpOwogICAgIH0KICAgICAKICAgICB2b2lkIGZhckp1bXAoQWJzb2x1
dGVBZGRyZXNzIGFkZHJlc3MsIFB0clRhZykKICAgICB7Ci0gICAgICAgIG1vdmUoVHJ1c3RlZElt
bVB0cihhZGRyZXNzLm1fcHRyKSwgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIGxvYWQzMihB
ZGRyZXNzKGRhdGFUZW1wUmVnaXN0ZXIpLCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgbV9h
c3NlbWJsZXIuYngoZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0
cihhZGRyZXNzLm1fcHRyKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CisgICAgICAgIGxvYWQzMihB
ZGRyZXNzKGFkZHJlc3NUZW1wUmVnaXN0ZXIpLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKKyAgICAg
ICAgbV9hc3NlbWJsZXIuYngoYWRkcmVzc1RlbXBSZWdpc3Rlcik7CiAgICAgfQogCiAgICAgQUxX
QVlTX0lOTElORSB2b2lkIGZhckp1bXAoUmVnaXN0ZXJJRCB0YXJnZXQsIFJlZ2lzdGVySUQganVt
cFRhZykgeyBVTlVTRURfUEFSQU0oanVtcFRhZyksIGZhckp1bXAodGFyZ2V0LCBOb1B0clRhZyk7
IH0KQEAgLTE5OTEsOCArMjA2Miw4IEBAIHB1YmxpYzoKIAogICAgIEFMV0FZU19JTkxJTkUgQ2Fs
bCBjYWxsKEFkZHJlc3MgYWRkcmVzcywgUHRyVGFnKQogICAgIHsKLSAgICAgICAgbG9hZDMyKGFk
ZHJlc3MsIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICByZXR1cm4gQ2FsbChtX2Fzc2VtYmxl
ci5ibHgoZGF0YVRlbXBSZWdpc3RlciksIENhbGw6Ok5vbmUpOworICAgICAgICBsb2FkMzIoYWRk
cmVzcywgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CisgICAgICAgIHJldHVybiBDYWxsKG1fYXNzZW1i
bGVyLmJseChhZGRyZXNzVGVtcFJlZ2lzdGVyKSwgQ2FsbDo6Tm9uZSk7CiAgICAgfQogCiAgICAg
QUxXQVlTX0lOTElORSBDYWxsIGNhbGwoUmVnaXN0ZXJJRCBjYWxsVGFnKSB7IHJldHVybiBVTlVT
RURfUEFSQU0oY2FsbFRhZyksIGNhbGwoTm9QdHJUYWcpOyB9CkBAIC0yMDE0LDggKzIwODUsOCBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIGNvbXBhcmUzMihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQs
IEFkZHJlc3MgbGVmdCwgUmVnaXN0ZXJJRCByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsK
LSAgICAgICAgbG9hZDMyKGxlZnQsIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICBjb21wYXJl
MzIoY29uZCwgZGF0YVRlbXBSZWdpc3RlciwgcmlnaHQsIGRlc3QpOworICAgICAgICBsb2FkMzIo
bGVmdCwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CisgICAgICAgIGNvbXBhcmUzMihjb25kLCBhZGRy
ZXNzVGVtcFJlZ2lzdGVyLCByaWdodCwgZGVzdCk7CiAgICAgfQogCiAgICAgdm9pZCBjb21wYXJl
OChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgbGVmdCwgVHJ1c3RlZEltbTMyIHJp
Z2h0LCBSZWdpc3RlcklEIGRlc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaAppbmRleCA0ZmI5YTI4ZWJiOTQ2OWJjNzQ2NzBl
NmUwNGFlODRhYTYxYzgzMWE3Li40YTMwOTUzYmYzZmYwZTY5YTcxNmNmYWJmMWEzNGU5ZDBhOTU0
MmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyTUlQUy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJNSVBTLmgKQEAgLTEzMjAsMTQgKzEzMjAsMzMgQEAgcHVibGljOgogICAgIH0KIAog
ICAgIHZvaWQgbG9hZFBhaXIzMihSZWdpc3RlcklEIHNyYywgVHJ1c3RlZEltbTMyIG9mZnNldCwg
UmVnaXN0ZXJJRCBkZXN0MSwgUmVnaXN0ZXJJRCBkZXN0MikKKyAgICB7CisgICAgICAgIGxvYWRQ
YWlyMzIoQWRkcmVzcyhzcmMsIG9mZnNldC5tX3ZhbHVlKSwgZGVzdDEsIGRlc3QyKTsKKyAgICB9
CisKKyAgICB2b2lkIGxvYWRQYWlyMzIoQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3Qx
LCBSZWdpc3RlcklEIGRlc3QyKQogICAgIHsKICAgICAgICAgQVNTRVJUKGRlc3QxICE9IGRlc3Qy
KTsgLy8gSWYgaXQgaXMgdGhlIHNhbWUsIGxkcCBiZWNvbWVzIGlsbGVnYWwgaW5zdHJ1Y3Rpb24u
Ci0gICAgICAgIGlmIChzcmMgPT0gZGVzdDEpIHsKLSAgICAgICAgICAgIGxvYWQzMihBZGRyZXNz
KHNyYywgb2Zmc2V0Lm1fdmFsdWUgKyA0KSwgZGVzdDIpOwotICAgICAgICAgICAgbG9hZDMyKEFk
ZHJlc3Moc3JjLCBvZmZzZXQubV92YWx1ZSksIGRlc3QxKTsKKyAgICAgICAgaWYgKGFkZHJlc3Mu
YmFzZSA9PSBkZXN0MSkgeworICAgICAgICAgICAgbG9hZDMyKGFkZHJlc3Mud2l0aE9mZnNldCg0
KSwgZGVzdDIpOworICAgICAgICAgICAgbG9hZDMyKGFkZHJlc3MsIGRlc3QxKTsKICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUp
LCBkZXN0MSk7Ci0gICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhzcmMsIG9mZnNldC5tX3ZhbHVl
ICsgNCksIGRlc3QyKTsKKyAgICAgICAgICAgIGxvYWQzMihhZGRyZXNzLCBkZXN0MSk7CisgICAg
ICAgICAgICBsb2FkMzIoYWRkcmVzcy53aXRoT2Zmc2V0KDQpLCBkZXN0Mik7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICB2b2lkIGxvYWRQYWlyMzIoQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVy
SUQgZGVzdDEsIFJlZ2lzdGVySUQgZGVzdDIpCisgICAgeworICAgICAgICBpZiAoYWRkcmVzcy5i
YXNlID09IGRlc3QxIHx8IGFkZHJlc3MuaW5kZXggPT0gZGVzdDEpIHsKKyAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKGFkZHJlc3MuYmFzZSAhPSBkZXN0Mik7CisgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVChhZGRyZXNzLmluZGV4ICE9IGRlc3QyKTsKKworICAgICAgICAgICAgbG9hZDMyKGFk
ZHJlc3Mud2l0aE9mZnNldCg0KSwgZGVzdDIpOworICAgICAgICAgICAgbG9hZDMyKGFkZHJlc3Ms
IGRlc3QxKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGxvYWQzMihhZGRyZXNzLCBk
ZXN0MSk7CisgICAgICAgICAgICBsb2FkMzIoYWRkcmVzcy53aXRoT2Zmc2V0KDQpLCBkZXN0Mik7
CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTE2MzEsOCArMTY1MCwxOSBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIHN0b3JlUGFpcjMyKFJlZ2lzdGVySUQgc3JjMSwgUmVnaXN0ZXJJRCBzcmMyLCBSZWdp
c3RlcklEIGRlc3QsIFRydXN0ZWRJbW0zMiBvZmZzZXQpCiAgICAgewotICAgICAgICBzdG9yZTMy
KHNyYzEsIEFkZHJlc3MoZGVzdCwgb2Zmc2V0Lm1fdmFsdWUpKTsKLSAgICAgICAgc3RvcmUzMihz
cmMyLCBBZGRyZXNzKGRlc3QsIG9mZnNldC5tX3ZhbHVlICsgNCkpOworICAgICAgICBzdG9yZVBh
aXIzMihzcmMxLCBzcmMyLCBBZGRyZXNzKGRlc3QsIG9mZnNldC5tX3ZhbHVlKSk7CisgICAgfQor
CisgICAgdm9pZCBzdG9yZVBhaXIzMihSZWdpc3RlcklEIHNyYzEsIFJlZ2lzdGVySUQgc3JjMiwg
QWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgc3RvcmUzMihzcmMxLCBhZGRyZXNzKTsK
KyAgICAgICAgc3RvcmUzMihzcmMyLCBhZGRyZXNzLndpdGhPZmZzZXQoNCkpOworICAgIH0KKwor
ICAgIHZvaWQgc3RvcmVQYWlyMzIoUmVnaXN0ZXJJRCBzcmMxLCBSZWdpc3RlcklEIHNyYzIsIEJh
c2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgc3RvcmUzMihzcmMxLCBhZGRyZXNzKTsK
KyAgICAgICAgc3RvcmUzMihzcmMyLCBhZGRyZXNzLndpdGhPZmZzZXQoNCkpOwogICAgIH0KIAog
ICAgIC8vIEZsb2F0aW5nLXBvaW50IG9wZXJhdGlvbnM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9Bc3NlbWJseUhlbHBlcnMuaAppbmRleCBlNmM3MzZjNjdjYTEwMmQ1MjU3MGE3MTg5YzEw
MDYyZWVhNWM0MjdjLi43ZWY1MWNkODFkMDkyY2EzZWY3NGRjMjMyODljNjU2ZjNmOTQzNTI2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKQEAgLTE2NCw4
ICsxNjQsOCBAQCBwdWJsaWM6CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgc3RvcmU2NChy
ZWdzLmdwcigpLCBhZGRyZXNzKTsKICNlbHNlCi0gICAgICAgIHN0b3JlMzIocmVncy5wYXlsb2Fk
R1BSKCksIGFkZHJlc3Mud2l0aE9mZnNldChQYXlsb2FkT2Zmc2V0KSk7Ci0gICAgICAgIHN0b3Jl
MzIocmVncy50YWdHUFIoKSwgYWRkcmVzcy53aXRoT2Zmc2V0KFRhZ09mZnNldCkpOworICAgICAg
ICBzdGF0aWNfYXNzZXJ0KCFQYXlsb2FkT2Zmc2V0ICYmIFRhZ09mZnNldCA9PSA0LCAiQXNzdW1l
cyBsaXR0bGUtZW5kaWFuIHN5c3RlbSIpOworICAgICAgICBzdG9yZVBhaXIzMihyZWdzLnBheWxv
YWRHUFIoKSwgcmVncy50YWdHUFIoKSwgYWRkcmVzcyk7CiAjZW5kaWYKICAgICB9CiAgICAgCkBA
IC0xNzQsOCArMTc0LDggQEAgcHVibGljOgogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIHN0
b3JlNjQocmVncy5ncHIoKSwgYWRkcmVzcyk7CiAjZWxzZQotICAgICAgICBzdG9yZTMyKHJlZ3Mu
cGF5bG9hZEdQUigpLCBhZGRyZXNzLndpdGhPZmZzZXQoUGF5bG9hZE9mZnNldCkpOwotICAgICAg
ICBzdG9yZTMyKHJlZ3MudGFnR1BSKCksIGFkZHJlc3Mud2l0aE9mZnNldChUYWdPZmZzZXQpKTsK
KyAgICAgICAgc3RhdGljX2Fzc2VydCghUGF5bG9hZE9mZnNldCAmJiBUYWdPZmZzZXQgPT0gNCwg
IkFzc3VtZXMgbGl0dGxlLWVuZGlhbiBzeXN0ZW0iKTsKKyAgICAgICAgc3RvcmVQYWlyMzIocmVn
cy5wYXlsb2FkR1BSKCksIHJlZ3MudGFnR1BSKCksIGFkZHJlc3MpOwogI2VuZGlmCiAgICAgfQog
ICAgIApAQCAtMTk0LDEzICsxOTQsOCBAQCBwdWJsaWM6CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAg
ICAgICAgbG9hZDY0KGFkZHJlc3MsIHJlZ3MuZ3ByKCkpOwogI2Vsc2UKLSAgICAgICAgaWYgKGFk
ZHJlc3MuYmFzZSA9PSByZWdzLnBheWxvYWRHUFIoKSkgewotICAgICAgICAgICAgbG9hZDMyKGFk
ZHJlc3Mud2l0aE9mZnNldChUYWdPZmZzZXQpLCByZWdzLnRhZ0dQUigpKTsKLSAgICAgICAgICAg
IGxvYWQzMihhZGRyZXNzLndpdGhPZmZzZXQoUGF5bG9hZE9mZnNldCksIHJlZ3MucGF5bG9hZEdQ
UigpKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGxvYWQzMihhZGRyZXNzLndpdGhP
ZmZzZXQoUGF5bG9hZE9mZnNldCksIHJlZ3MucGF5bG9hZEdQUigpKTsKLSAgICAgICAgICAgIGxv
YWQzMihhZGRyZXNzLndpdGhPZmZzZXQoVGFnT2Zmc2V0KSwgcmVncy50YWdHUFIoKSk7Ci0gICAg
ICAgIH0KKyAgICAgICAgc3RhdGljX2Fzc2VydCghUGF5bG9hZE9mZnNldCAmJiBUYWdPZmZzZXQg
PT0gNCwgIkFzc3VtZXMgbGl0dGxlLWVuZGlhbiBzeXN0ZW0iKTsKKyAgICAgICAgbG9hZFBhaXIz
MihhZGRyZXNzLCByZWdzLnBheWxvYWRHUFIoKSwgcmVncy50YWdHUFIoKSk7CiAjZW5kaWYKICAg
ICB9CiAgICAgCkBAIC0yMDksMTggKzIwNCw4IEBAIHB1YmxpYzoKICNpZiBVU0UoSlNWQUxVRTY0
KQogICAgICAgICBsb2FkNjQoYWRkcmVzcywgcmVncy5ncHIoKSk7CiAjZWxzZQotICAgICAgICBp
ZiAoYWRkcmVzcy5iYXNlID09IHJlZ3MucGF5bG9hZEdQUigpIHx8IGFkZHJlc3MuaW5kZXggPT0g
cmVncy5wYXlsb2FkR1BSKCkpIHsKLSAgICAgICAgICAgIC8vIFdlIGFjdHVhbGx5IGNvdWxkIGhh
bmRsZSB0aGUgY2FzZSB3aGVyZSB0aGUgcmVnaXN0ZXJzIGFyZSBhbGlhc2VkIHRvIGJvdGgKLSAg
ICAgICAgICAgIC8vIHRhZyBhbmQgcGF5bG9hZCwgYnV0IHdlIGRvbid0IGZvciBub3cuCi0gICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVChhZGRyZXNzLmJhc2UgIT0gcmVncy50YWdHUFIoKSk7Ci0g
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChhZGRyZXNzLmluZGV4ICE9IHJlZ3MudGFnR1BSKCkp
OwotICAgICAgICAgICAgCi0gICAgICAgICAgICBsb2FkMzIoYWRkcmVzcy53aXRoT2Zmc2V0KFRh
Z09mZnNldCksIHJlZ3MudGFnR1BSKCkpOwotICAgICAgICAgICAgbG9hZDMyKGFkZHJlc3Mud2l0
aE9mZnNldChQYXlsb2FkT2Zmc2V0KSwgcmVncy5wYXlsb2FkR1BSKCkpOwotICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgbG9hZDMyKGFkZHJlc3Mud2l0aE9mZnNldChQYXlsb2FkT2Zmc2V0
KSwgcmVncy5wYXlsb2FkR1BSKCkpOwotICAgICAgICAgICAgbG9hZDMyKGFkZHJlc3Mud2l0aE9m
ZnNldChUYWdPZmZzZXQpLCByZWdzLnRhZ0dQUigpKTsKLSAgICAgICAgfQorICAgICAgICBzdGF0
aWNfYXNzZXJ0KCFQYXlsb2FkT2Zmc2V0ICYmIFRhZ09mZnNldCA9PSA0LCAiQXNzdW1lcyBsaXR0
bGUtZW5kaWFuIHN5c3RlbSIpOworICAgICAgICBsb2FkUGFpcjMyKGFkZHJlc3MsIHJlZ3MucGF5
bG9hZEdQUigpLCByZWdzLnRhZ0dQUigpKTsKICNlbmRpZgogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwCmluZGV4IDJiMzFjYWUwMWJiYmNhYzA0YTdlZGQzMTM4OWFkOWRlYjgwNmY4
MDUuLmY1N2E2ZTEzNDUwNThmZGJlODQyMzhmMjI3Mzc2NTdkMDYzOTlhMGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAKQEAgLTE1OSwxNCArMTU5LDExIEBAIHZvaWQgSklUOjpyZXNldFNQ
KCkKICAgICBjaGVja1N0YWNrUG9pbnRlckFsaWdubWVudCgpOwogfQogCi0jZGVmaW5lIE5FWFRf
T1BDT0RFKG5hbWUpIFwKLSAgICBtX2J5dGVjb2RlSW5kZXggPSBCeXRlY29kZUluZGV4KG1fYnl0
ZWNvZGVJbmRleC5vZmZzZXQoKSArIGN1cnJlbnRJbnN0cnVjdGlvbi0+c2l6ZSgpKTsgXAotICAg
IGJyZWFrOwotCiAjZGVmaW5lIE5FWFRfT1BDT0RFX0lOX01BSU4obmFtZSkgXAogICAgIGlmIChw
cmV2aW91c1Nsb3dDYXNlc1NpemUgIT0gbV9zbG93Q2FzZXMuc2l6ZSgpKSBcCiAgICAgICAgICsr
bV9ieXRlY29kZUNvdW50SGF2aW5nU2xvd0Nhc2U7IFwKLSAgICBORVhUX09QQ09ERShuYW1lKQor
ICAgIG1fYnl0ZWNvZGVJbmRleCA9IEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9mZnNl
dCgpICsgY3VycmVudEluc3RydWN0aW9uLT5zaXplKCkpOyBcCisgICAgYnJlYWs7CiAKICNkZWZp
bmUgREVGSU5FX1NMT1dfT1AobmFtZSkgXAogICAgIGNhc2Ugb3BfIyNuYW1lOiB7IFwKQEAgLTE4
OCwxMyArMTg1LDEzIEBAIHZvaWQgSklUOjpyZXNldFNQKCkKICNkZWZpbmUgREVGSU5FX1NMT1dD
QVNFX09QKG5hbWUpIFwKICAgICBjYXNlIG5hbWU6IHsgXAogICAgICAgICBlbWl0U2xvd18jI25h
bWUoY3VycmVudEluc3RydWN0aW9uLCBpdGVyKTsgXAotICAgICAgICBORVhUX09QQ09ERShuYW1l
KTsgXAorICAgICAgICBicmVhazsgXAogICAgIH0KIAogI2RlZmluZSBERUZJTkVfU0xPV0NBU0Vf
U0xPV19PUChuYW1lKSBcCiAgICAgY2FzZSBvcF8jI25hbWU6IHsgXAogICAgICAgICBlbWl0U2xv
d0Nhc2VDYWxsKGN1cnJlbnRJbnN0cnVjdGlvbiwgaXRlciwgc2xvd19wYXRoXyMjbmFtZSk7IFwK
LSAgICAgICAgTkVYVF9PUENPREUob3BfIyNuYW1lKTsgXAorICAgICAgICBicmVhazsgXAogICAg
IH0KIAogdm9pZCBKSVQ6OmVtaXRTbG93Q2FzZUNhbGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlciwgU2xv
d1BhdGhGdW5jdGlvbiBzdHViKQpAQCAtNjc1LDEyICs2NzIsMTQgQEAgdm9pZCBKSVQ6OnByaXZh
dGVDb21waWxlU2xvd0Nhc2VzKCkKIAogICAgICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX01FU1NB
R0UoaXRlciA9PSBtX3Nsb3dDYXNlcy5lbmQoKSB8fCBmaXJzdFRvLm9mZnNldCgpICE9IGl0ZXIt
PnRvLm9mZnNldCgpLCAiTm90IGVub3VnaCBqdW1wcyBsaW5rZWQgaW4gc2xvdyBjYXNlIGNvZGVn
ZW4uIik7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FHRShmaXJzdFRvLm9mZnNl
dCgpID09IChpdGVyIC0gMSktPnRvLm9mZnNldCgpLCAiVG9vIG1hbnkganVtcHMgbGlua2VkIGlu
IHNsb3cgY2FzZSBjb2RlZ2VuLiIpOwotICAgICAgICAKLSAgICAgICAgZW1pdEp1bXBTbG93VG9I
b3QoanVtcCgpLCAwKTsKKworICAgICAgICBqdW1wKCkubGlua1RvKGZhc3RQYXRoUmVzdW1lUG9p
bnQoKSwgdGhpcyk7CiAgICAgICAgICsrYnl0ZWNvZGVDb3VudEhhdmluZ1Nsb3dDYXNlOwogCi0g
ICAgICAgIGlmIChVTkxJS0VMWShzaXplTWFya2VyKSkKKyAgICAgICAgaWYgKFVOTElLRUxZKHNp
emVNYXJrZXIpKSB7CisgICAgICAgICAgICBtX2J5dGVjb2RlSW5kZXggPSBCeXRlY29kZUluZGV4
KG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSArIGN1cnJlbnRJbnN0cnVjdGlvbi0+c2l6ZSgpKTsK
ICAgICAgICAgICAgIG1fdm0tPmppdFNpemVTdGF0aXN0aWNzLT5tYXJrRW5kKFdURk1vdmUoKnNp
emVNYXJrZXIpLCAqdGhpcyk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBSRUxFQVNFX0FTU0VS
VChieXRlY29kZUNvdW50SGF2aW5nU2xvd0Nhc2UgPT0gbV9ieXRlY29kZUNvdW50SGF2aW5nU2xv
d0Nhc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggZjI1ZjlmOTc0ZTI0ZTZjNDIwOGEx
MDUwNzQ5ODg5YzcwMWZlNWEzNy4uMjk3ZjNjYTU4MjVmMDQzN2RhMmZmMWQzYWQxZDE5M2NjNjM2
ZmI0YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC0yODAsNiArMjgwLDggQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBhZHZhbmNlVG9OZXh0Q2hlY2twb2ludCgpOwogICAg
ICAgICB2b2lkIGVtaXRKdW1wU2xvd1RvSG90Rm9yQ2hlY2twb2ludChKdW1wKTsKKyAgICAgICAg
dm9pZCBzZXRGYXN0UGF0aFJlc3VtZVBvaW50KCk7CisgICAgICAgIExhYmVsIGZhc3RQYXRoUmVz
dW1lUG9pbnQoKSBjb25zdDsKIAogICAgICAgICB2b2lkIGFkZFNsb3dDYXNlKEp1bXApOwogICAg
ICAgICB2b2lkIGFkZFNsb3dDYXNlKGNvbnN0IEp1bXBMaXN0Jik7CkBAIC02MjAsNyArNjIyLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4
dChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsK
IAogICAgICAgICB2b2lkIGVtaXRIYXNQcml2YXRlKFZpcnR1YWxSZWdpc3RlciBkc3QsIFZpcnR1
YWxSZWdpc3RlciBiYXNlLCBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHlPckJyYW5kLCBBY2Nlc3NU
eXBlKTsKLSAgICAgICAgdm9pZCBlbWl0SGFzUHJpdmF0ZVNsb3coVmlydHVhbFJlZ2lzdGVyIGRz
dCwgVmlydHVhbFJlZ2lzdGVyIGJhc2UsIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eSwgQWNjZXNz
VHlwZSk7CisgICAgICAgIHZvaWQgZW1pdEhhc1ByaXZhdGVTbG93KFZpcnR1YWxSZWdpc3RlciBi
YXNlLCBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHksIEFjY2Vzc1R5cGUpOwogCiAgICAgICAgIHRl
bXBsYXRlPHR5cGVuYW1lIE9wPgogICAgICAgICB2b2lkIGVtaXROZXdGdW5jQ29tbW9uKGNvbnN0
IEluc3RydWN0aW9uKik7CkBAIC02MzAsOCArNjMyLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIHZvaWQgZW1pdFZhclJlYWRPbmx5Q2hlY2soUmVzb2x2ZVR5cGUsIEdQUlJlZyBzY3JhdGNo
R1BSKTsKICAgICAgICAgdm9pZCBlbWl0Tm90aWZ5V3JpdGVXYXRjaHBvaW50KEdQUlJlZyBwb2lu
dGVyVG9TZXQpOwogCi0gICAgICAgIHZvaWQgZW1pdEluaXRSZWdpc3RlcihWaXJ0dWFsUmVnaXN0
ZXIpOwotCiAgICAgICAgIGJvb2wgaXNLbm93bkNlbGwoVmlydHVhbFJlZ2lzdGVyKTsKIAogICAg
ICAgICBKU1ZhbHVlIGdldENvbnN0YW50T3BlcmFuZChWaXJ0dWFsUmVnaXN0ZXIpOwpAQCAtOTEx
LDYgKzkxMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBWZWN0b3I8TmVhckp1bXBSZWNv
cmQ+IG1fbmVhckp1bXBzOwogICAgICAgICBWZWN0b3I8TGFiZWw+IG1fbGFiZWxzOwogICAgICAg
ICBIYXNoTWFwPEJ5dGVjb2RlSW5kZXgsIExhYmVsPiBtX2NoZWNrcG9pbnRMYWJlbHM7CisgICAg
ICAgIEhhc2hNYXA8Qnl0ZWNvZGVJbmRleCwgTGFiZWw+IG1fZmFzdFBhdGhSZXN1bWVMYWJlbHM7
CiAgICAgICAgIFZlY3RvcjxKSVRHZXRCeUlkR2VuZXJhdG9yPiBtX2dldEJ5SWRzOwogICAgICAg
ICBWZWN0b3I8SklUR2V0QnlWYWxHZW5lcmF0b3I+IG1fZ2V0QnlWYWxzOwogICAgICAgICBWZWN0
b3I8SklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yPiBtX2dldEJ5SWRzV2l0aFRoaXM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAppbmRleCAxMTdkZmFjMDUwNjc5NTAzNmM1MDRi
M2M3MjA0NTU1YTRiMDVkMjA0Li4yNDRiM2ZlYjY5YjRhMGY0OWYwYmM0M2QxZTRhYjQ0OWEzMmU2
Yjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKQEAgLTE4NSw2ICsxODUs
NyBAQCBib29sIEpJVDo6Y29tcGlsZUNhbGxFdmFsKGNvbnN0IE9wQ2FsbEV2YWwmIGJ5dGVjb2Rl
KQogICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ2FsbEV2YWwsIGFyZ3VtZW50R1BSMCwgYXJn
dW1lbnRHUFIxLCBhcmd1bWVudEdQUjIpOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmRW1wdHko
cmV0dXJuVmFsdWVKU1IpKTsKIAorICAgIHNldEZhc3RQYXRoUmVzdW1lUG9pbnQoKTsKICAgICBl
bWl0UHV0Q2FsbFJlc3VsdChieXRlY29kZSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTIwNSw4
ICsyMDYsNiBAQCB2b2lkIEpJVDo6Y29tcGlsZUNhbGxFdmFsU2xvd0Nhc2UoY29uc3QgSW5zdHJ1
Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0NhcwogICAgIG1hdGVyaWFsaXplUG9pbnRl
ckludG9NZXRhZGF0YShieXRlY29kZSwgT3BDYWxsRXZhbDo6TWV0YWRhdGE6Om9mZnNldE9mQ2Fs
bExpbmtJbmZvKCksIGNhbGxMaW5rSW5mb0dQUik7CiAgICAgZW1pdFZpcnR1YWxDYWxsV2l0aG91
dE1vdmluZ0dsb2JhbE9iamVjdCgqbV92bSwgY2FsbExpbmtJbmZvR1BSLCBDYWxsTW9kZTo6UmVn
dWxhcik7CiAgICAgcmVzZXRTUCgpOwotCi0gICAgZW1pdFB1dENhbGxSZXN1bHQoYnl0ZWNvZGUp
OwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KQEAgLTMwMiw4ICszMDEsOSBAQCB2b2lkIEpJ
VDo6Y29tcGlsZU9wQ2FsbChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIHVuc2lnbmVk
IGNhbGxMaW5rSW5mb0luZAogCiAgICAgbV9jYWxsQ29tcGlsYXRpb25JbmZvW2NhbGxMaW5rSW5m
b0luZGV4XS5kb25lTG9jYXRpb24gPSBkb25lTG9jYXRpb247CiAKKyAgICBpZiBjb25zdGV4cHIg
KE9wOjpvcGNvZGVJRCAhPSBvcF9pdGVyYXRvcl9vcGVuICYmIE9wOjpvcGNvZGVJRCAhPSBvcF9p
dGVyYXRvcl9uZXh0KQorICAgICAgICBzZXRGYXN0UGF0aFJlc3VtZVBvaW50KCk7CiAgICAgcmVz
ZXRTUCgpOwotCiAgICAgZW1pdFB1dENhbGxSZXN1bHQoYnl0ZWNvZGUpOwogfQogCkBAIC0zMjgs
MTAgKzMyOCw2IEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsU2xvd0Nhc2UoY29uc3QgSW5zdHJ1
Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFCiAgICAgICAgIGFib3J0V2l0aFJl
YXNvbihKSVREaWRSZXR1cm5Gcm9tVGFpbENhbGwpOwogICAgICAgICByZXR1cm47CiAgICAgfQot
Ci0gICAgcmVzZXRTUCgpOwotCi0gICAgZW1pdFB1dENhbGxSZXN1bHQoYnl0ZWNvZGUpOwogfQog
CiB2b2lkIEpJVDo6ZW1pdF9vcF9jYWxsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCkBAIC00NzAsOCArNDY2LDEyIEBAIHZvaWQgSklUOjplbWl0X29wX2l0ZXJhdG9yX29w
ZW4oY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQogCiB2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfaXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CisgICAgYXV0byBieXRlY29kZSA9IGlu
c3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yT3Blbj4oKTsKKwogICAgIGxpbmtBbGxTbG93Q2FzZXMo
aXRlcik7CiAgICAgY29tcGlsZU9wQ2FsbFNsb3dDYXNlPE9wSXRlcmF0b3JPcGVuPihpbnN0cnVj
dGlvbiwgaXRlciwgbV9jYWxsTGlua0luZm9JbmRleCsrKTsKKyAgICByZXNldFNQKCk7CisgICAg
ZW1pdFB1dENhbGxSZXN1bHQoYnl0ZWNvZGUpOwogICAgIGVtaXRKdW1wU2xvd1RvSG90Rm9yQ2hl
Y2twb2ludChqdW1wKCkpOwogCiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKQEAgLTQ4MCw3
ICs0ODAsNiBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0
cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93QwogICAgIG5vdE9iamVjdC5hcHBlbmQo
YnJhbmNoSWZOb3RDZWxsKGl0ZXJhdG9ySlNSKSk7CiAgICAgbm90T2JqZWN0LmFwcGVuZChicmFu
Y2hJZk5vdE9iamVjdChpdGVyYXRvckpTUi5wYXlsb2FkR1BSKCkpKTsKIAotICAgIGF1dG8gYnl0
ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck9wZW4+KCk7CiAgICAgVmlydHVhbFJl
Z2lzdGVyIG5leHRWUmVnID0gYnl0ZWNvZGUubV9uZXh0OwogICAgIFVuaXF1ZWRTdHJpbmdJbXBs
KiBpZGVudCA9IHZtKCkucHJvcGVydHlOYW1lcy0+bmV4dC5pbXBsKCk7CiAKQEAgLTYxNSw4ICs2
MTQsMTIgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlv
biogaW5zdHJ1Y3Rpb24pCiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9uZXh0KGNv
bnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYgaXRlcikKIHsKKyAgICBhdXRvIGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wSXRl
cmF0b3JOZXh0PigpOworCiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKICAgICBjb21waWxl
T3BDYWxsU2xvd0Nhc2U8T3BJdGVyYXRvck5leHQ+KGluc3RydWN0aW9uLCBpdGVyLCBtX2NhbGxM
aW5rSW5mb0luZGV4KyspOworICAgIHJlc2V0U1AoKTsKKyAgICBlbWl0UHV0Q2FsbFJlc3VsdChi
eXRlY29kZSk7CiAgICAgZW1pdEp1bXBTbG93VG9Ib3RGb3JDaGVja3BvaW50KGp1bXAoKSk7CiAK
ICAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUjsKQEAgLTYyNCw3
ICs2MjcsNiBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0
cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93QwogCiAgICAgY29uc3RleHByIEpTVmFs
dWVSZWdzIGl0ZXJDYWxsUmVzdWx0SlNSID0gZG9udENsb2JiZXJKU1I7CiAKLSAgICBhdXRvIGJ5
dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JOZXh0PigpOwogICAgIHsKICAgICAg
ICAgVmlydHVhbFJlZ2lzdGVyIGRvbmVWUmVnID0gYnl0ZWNvZGUubV9kb25lOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3Bw
CmluZGV4IDYyZTA5MzAwYzllMDAzY2NjM2NlYzZlZWJhZjUzYjVjYzJhYjQ4ZjguLmM2N2JjZTA5
ZmZiYzYwZTI0MzNlNjIyZTM3ODI3OGNmMjA3NGI0YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCkBAIC0xMzUsMTgg
KzEzNSwxMiBAQCB2b2lkIEpJVEdldEJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFj
cm9Bc3NlbWJsZXImIGppdCkKIAogc3RhdGljIHZvaWQgZ2VuZXJhdGVHZXRCeUlkSW5saW5lQWNj
ZXNzKEpJVCYgaml0LCBHUFJSZWcgc3R1YkluZm9HUFIsIEpTVmFsdWVSZWdzIGJhc2VKU1IsIEdQ
UlJlZyBzY3JhdGNoR1BSLCBKU1ZhbHVlUmVncyByZXN1bHRKU1IpCiB7Ci0gICAgQ0NhbGxIZWxw
ZXJzOjpKdW1wTGlzdCBkb25lOwotCiAgICAgaml0LmxvYWQzMihDQ2FsbEhlbHBlcnM6OkFkZHJl
c3MoYmFzZUpTUi5wYXlsb2FkR1BSKCksIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHNj
cmF0Y2hHUFIpOwotICAgIGF1dG8gc2tpcElubGluZUFjY2VzcyA9IGppdC5icmFuY2gzMihDQ2Fs
bEhlbHBlcnM6Ok5vdEVxdWFsLCBzY3JhdGNoR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1
YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZklubGluZUFjY2Vzc0Jhc2VTdHJ1
Y3R1cmUoKSkpOworICAgIGF1dG8gZG9JbmxpbmVBY2Nlc3MgPSBqaXQuYnJhbmNoMzIoQ0NhbGxI
ZWxwZXJzOjpFcXVhbCwgc2NyYXRjaEdQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZv
R1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZJbmxpbmVBY2Nlc3NCYXNlU3RydWN0dXJl
KCkpKTsKKyAgICBqaXQuZmFySnVtcChDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIs
IFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZkNvZGVQdHIoKSksIEpJVFN0dWJSb3V0aW5lUHRy
VGFnKTsKKyAgICBkb0lubGluZUFjY2Vzcy5saW5rKCZqaXQpOwogICAgIGppdC5sb2FkMzIoQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0
T2ZCeUlkU2VsZk9mZnNldCgpKSwgc2NyYXRjaEdQUik7CiAgICAgaml0LmxvYWRQcm9wZXJ0eShi
YXNlSlNSLnBheWxvYWRHUFIoKSwgc2NyYXRjaEdQUiwgcmVzdWx0SlNSKTsKLSAgICBhdXRvIGZp
bmlzaGVkID0gaml0Lmp1bXAoKTsKLQotICAgIHNraXBJbmxpbmVBY2Nlc3MubGluaygmaml0KTsK
LSAgICBqaXQuZmFySnVtcChDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVj
dHVyZVN0dWJJbmZvOjpvZmZzZXRPZkNvZGVQdHIoKSksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsK
LQotICAgIGZpbmlzaGVkLmxpbmsoJmppdCk7CiB9CiAKIHZvaWQgSklUR2V0QnlJZEdlbmVyYXRv
cjo6Z2VuZXJhdGVCYXNlbGluZURhdGFJQ0Zhc3RQYXRoKEpJVCYgaml0LCB1bnNpZ25lZCBzdHVi
SW5mbywgR1BSUmVnIHN0dWJJbmZvR1BSKQpAQCAtMjI3LDE1ICsyMjEsMTEgQEAgdm9pZCBKSVRQ
dXRCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUJhc2VsaW5lRGF0YUlDRmFzdFBhdGgoSklUJiBqaXQs
IHVuc2lnbmVkIHN0dWIKICAgICB1c2luZyBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OnNjcmF0
Y2gyR1BSOwogCiAgICAgaml0LmxvYWQzMihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUpTUi5w
YXlsb2FkR1BSKCksIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwot
ICAgIGF1dG8gc2tpcElubGluZUFjY2VzcyA9IGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6Ok5v
dEVxdWFsLCBzY3JhdGNoR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0
cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZklubGluZUFjY2Vzc0Jhc2VTdHJ1Y3R1cmUoKSkpOwor
ICAgIGF1dG8gZG9JbmxpbmVBY2Nlc3MgPSBqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpFcXVh
bCwgc2NyYXRjaEdQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1
cmVTdHViSW5mbzo6b2Zmc2V0T2ZJbmxpbmVBY2Nlc3NCYXNlU3RydWN0dXJlKCkpKTsKKyAgICBq
aXQuZmFySnVtcChDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0
dWJJbmZvOjpvZmZzZXRPZkNvZGVQdHIoKSksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAgICBk
b0lubGluZUFjY2Vzcy5saW5rKCZqaXQpOwogICAgIGppdC5sb2FkMzIoQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZCeUlkU2VsZk9m
ZnNldCgpKSwgc2NyYXRjaEdQUik7CiAgICAgaml0LnN0b3JlUHJvcGVydHkodmFsdWVKU1IsIGJh
c2VKU1IucGF5bG9hZEdQUigpLCBzY3JhdGNoR1BSLCBzY3JhdGNoMkdQUik7Ci0gICAgYXV0byBm
aW5pc2hlZCA9IGppdC5qdW1wKCk7Ci0KLSAgICBza2lwSW5saW5lQWNjZXNzLmxpbmsoJmppdCk7
Ci0gICAgaml0LmZhckp1bXAoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1
Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZDb2RlUHRyKCkpLCBKSVRTdHViUm91dGluZVB0clRhZyk7
Ci0KLSAgICBmaW5pc2hlZC5saW5rKCZqaXQpOwogICAgIG1fZG9uZSA9IGppdC5sYWJlbCgpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hl
R2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2Vu
ZXJhdG9yLmgKaW5kZXggM2UyNmRiOTU3ZTNlZDQ2ZGY4NWNlZWI3ZTNkNTJiYWI0ZDRjNTQxMS4u
NjI5MjljMGMyNDg0ZmI5Y2EwZWM2NjFiYjdjMGE3ZGU2NDlmYzk4YyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaApAQCAtNDks
NDYgKzQ5LDQzIEBAIGVudW0gY2xhc3MgQWNjZXNzVHlwZSA6IGludDhfdDsKIGVudW0gY2xhc3Mg
SklUVHlwZSA6IHVpbnQ4X3Q7CiAKIG5hbWVzcGFjZSBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJz
IHsKK2NvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBKU1JJbmZvOjpyZXR1cm5WYWx1
ZUpTUiB9OwogI2lmIFVTRShKU1ZBTFVFNjQpCiBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpT
UiB7IEdQUkluZm86OnJlZ1QxIH07CiBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1Ig
eyBHUFJJbmZvOjpyZWdUMCB9OwotY29uc3RleHByIEpTVmFsdWVSZWdzIHJlc3VsdEpTUiB7IHBy
b3BlcnR5SlNSIH07CiBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVn
VDMgfTsKIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1QyIH07CiAj
ZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQogY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBH
UFJJbmZvOjpyZWdUMywgR1BSSW5mbzo6cmVnVDIgfTsKIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBw
cm9wZXJ0eUpTUiB7IEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMCB9OwotY29uc3RleHBy
IEpTVmFsdWVSZWdzIHJlc3VsdEpTUiB7IHByb3BlcnR5SlNSIH07CiBjb25zdGV4cHIgR1BSUmVn
IHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRj
aEdQUiB7IEdQUkluZm86OnJlZ1Q2IH07CiAjZW5kaWYKIH0KIAogbmFtZXNwYWNlIEJhc2VsaW5l
RGVsQnlJZFJlZ2lzdGVycyB7Citjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgSlNS
SW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsKICNpZiBVU0UoSlNWQUxVRTY0KQogY29uc3RleHByIEpT
VmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMSB9OwotY29uc3RleHByIEpTVmFsdWVS
ZWdzIHJlc3VsdEpTUiB7IEdQUkluZm86OnJlZ1QwIH07CiBjb25zdGV4cHIgR1BSUmVnIHN0dWJJ
bmZvR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7
IEdQUkluZm86OnJlZ1QyIH07CiAjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQogY29uc3RleHByIEpT
VmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMywgR1BSSW5mbzo6cmVnVDIgfTsKLWNv
bnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6
cmVnVDAgfTsKIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNyB9
OwogY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDYgfTsKICNlbmRp
ZgogfQogCiBuYW1lc3BhY2UgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVycyB7Citjb25zdGV4cHIg
SlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgSlNSSW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsKICNpZiBV
U0UoSlNWQUxVRTY0KQogY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpy
ZWdUMCB9OwogY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSIHsgR1BSSW5mbzo6cmVn
VDEgfTsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBiYXNlSlNSIH07CiBjb25z
dGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKIGNvbnN0ZXhwciBH
UFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1QzIH07CiAjZWxpZiBVU0UoSlNWQUxVRTMy
XzY0KQogY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMSwgR1BS
SW5mbzo6cmVnVDAgfTsKIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiB7IEdQUklu
Zm86OnJlZ1QzLCBHUFJJbmZvOjpyZWdUMiB9OwotY29uc3RleHByIEpTVmFsdWVSZWdzIHJlc3Vs
dEpTUiB7IGJhc2VKU1IgfTsKIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZv
OjpyZWdUNyB9OwogY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDYg
fTsKICNlbmRpZgpAQCAtMTM2LDE2ICsxMzMsMTUgQEAgc3RhdGljX2Fzc2VydChBc3NlbWJseUhl
bHBlcnM6Om5vT3ZlcmxhcCh2YWx1ZUpTUiwgcHJvdG9KU1IsIHN0dWJJbmZvR1BSLCBzY3JhdGMK
IH0KIAogbmFtZXNwYWNlIEJhc2VsaW5lSW5CeVZhbFJlZ2lzdGVycyB7Citjb25zdGV4cHIgSlNW
YWx1ZVJlZ3MgcmVzdWx0SlNSIHsgSlNSSW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsKICNpZiBVU0Uo
SlNWQUxVRTY0KQogY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdU
MCB9OwogY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSIHsgR1BSSW5mbzo6cmVnVDEg
fTsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBiYXNlSlNSIH07CiBjb25zdGV4
cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKIGNvbnN0ZXhwciBHUFJS
ZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1QzIH07CiAjZWxpZiBVU0UoSlNWQUxVRTMyXzY0
KQogY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMSwgR1BSSW5m
bzo6cmVnVDAgfTsKIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiAgeyBHUFJJbmZv
OjpyZWdUMywgR1BSSW5mbzo6cmVnVDIgfTsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRK
U1IgeyBiYXNlSlNSIH07CiBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6
cmVnVDcgfTsKIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1Q2IH07
CiAjZW5kaWYKQEAgLTE1NCwzMSArMTUwLDI5IEBAIHN0YXRpY19hc3NlcnQocHJvcGVydHlKU1Ig
PT0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1IpOwogfQogCiBuYW1lc3Bh
Y2UgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzIHsKK2NvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1
bHRKU1IgeyBKU1JJbmZvOjpyZXR1cm5WYWx1ZUpTUiB9OworY29uc3RleHByIEpTVmFsdWVSZWdz
IGJhc2VKU1IgeyBKU1JJbmZvOjpyZXR1cm5WYWx1ZUpTUiB9OwogI2lmIFVTRShKU1ZBTFVFNjQp
Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QwIH07Ci1jb25z
dGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgYmFzZUpTUiB9OwogY29uc3RleHByIEdQUlJl
ZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QxIH07CiBjb25zdGV4cHIgR1BSUmVnIHNjcmF0
Y2hHUFIgeyBHUFJJbmZvOjpyZWdUMiB9OwogY29uc3RleHByIEpTVmFsdWVSZWdzIGRvbnRDbG9i
YmVySlNSIHsgR1BSSW5mbzo6cmVnVDMgfTsKICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi1jb25z
dGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdU
MCB9OwotY29uc3RleHByIEpTVmFsdWVSZWdzIHJlc3VsdEpTUiB7IGJhc2VKU1IgfTsKIGNvbnN0
ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMiB9OwogY29uc3RleHByIEdQ
UlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKIGNvbnN0ZXhwciBKU1ZhbHVlUmVn
cyBkb250Q2xvYmJlckpTUiB7IEdQUkluZm86OnJlZ1Q2LCBHUFJJbmZvOjpyZWdUNyB9OwogI2Vu
ZGlmCitzdGF0aWNfYXNzZXJ0KEFzc2VtYmx5SGVscGVyczo6bm9PdmVybGFwKGJhc2VKU1IsIHN0
dWJJbmZvR1BSLCBzY3JhdGNoR1BSLCBkb250Q2xvYmJlckpTUikpOwogfQogCiBuYW1lc3BhY2Ug
QmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnMgeworY29uc3RleHByIEpTVmFsdWVSZWdz
IHJlc3VsdEpTUiB7IEpTUkluZm86OnJldHVyblZhbHVlSlNSIH07CiAjaWYgVVNFKEpTVkFMVUU2
NCkKIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDAgfTsKLWNv
bnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBiYXNlSlNSIH07CiBjb25zdGV4cHIgSlNW
YWx1ZVJlZ3MgdGhpc0pTUiB7IEdQUkluZm86OnJlZ1QxIH07CiBjb25zdGV4cHIgR1BSUmVnIHN0
dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQ
UiB7IEdQUkluZm86OnJlZ1QzIH07CiAjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQogY29uc3RleHBy
IEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVnVDAgfTsK
LWNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBiYXNlSlNSIH07CiBjb25zdGV4cHIg
SlNWYWx1ZVJlZ3MgdGhpc0pTUiB7IEdQUkluZm86OnJlZ1QzLCBHUFJJbmZvOjpyZWdUMiB9Owog
Y29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q3IH07CiBjb25zdGV4
cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUNiB9OwpAQCAtMTg3LDcgKzE4MSw3
IEBAIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1Q2IH07CiAKIG5h
bWVzcGFjZSBCYXNlbGluZUluQnlJZFJlZ2lzdGVycyB7CiBjb25zdGV4cHIgSlNWYWx1ZVJlZ3Mg
YmFzZUpTUiB7IEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6YmFzZUpTUiB9OwotY29uc3RleHBy
IEpTVmFsdWVSZWdzIHJlc3VsdEpTUiB7IEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6cmVzdWx0
SlNSIH07Citjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgSlNSSW5mbzo6cmV0dXJu
VmFsdWVKU1IgfTsKIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBCYXNlbGluZUdldEJ5
SWRSZWdpc3RlcnM6OnN0dWJJbmZvR1BSIH07CiBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIg
eyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnNjcmF0Y2hHUFIgfTsKIH0KQEAgLTIwNCw3ICsx
OTgsNyBAQCBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QxLCBH
UFJJbmZvOjpyZWdUMCB9OwogY29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNSIHsgR1BSSW5m
bzo6cmVnVDMsIEdQUkluZm86OnJlZ1QyIH07CiBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BS
IHsgR1BSSW5mbzo6cmVnVDcgfTsKIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUklu
Zm86OnJlZ1Q2IH07Ci1jb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyR1BSIHsgR1BSSW5mbzo6cmVn
VDQgfTsKK2NvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDJHUFIgeyBiYXNlSlNSLnRhZ0dQUigpIH07
IC8vIFJldXNpbmcgcmVnVDEgZm9yIGJldHRlciBjb2RlIHNpemUgb24gQVJNX1RIVU1CMgogI2Vu
ZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5l
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKaW5kZXggMGU1MmQ4
ZjYyZjhkN2E1NzIxNTg0MTVjNjJmOTg2ZjgzZWNkMmQwNC4uMTdmNDZmN2EyZDg5NDQzOGMzYjlh
MGRlNjVjNmYzMWI4NmM2NDQxYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVz
LmgKQEAgLTIxNSw2ICsyMTUsMjYgQEAgaW5saW5lIHZvaWQgSklUOjplbWl0SnVtcFNsb3dUb0hv
dEZvckNoZWNrcG9pbnQoSnVtcCBqdW1wKQogICAgIGp1bXAubGlua1RvKGl0ZXItPnZhbHVlLCB0
aGlzKTsKIH0KIAoraW5saW5lIHZvaWQgSklUOjpzZXRGYXN0UGF0aFJlc3VtZVBvaW50KCkKK3sK
KyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG1fYnl0ZWNvZGVJbmRleCwgIlRoaXMgbWV0aG9kIHNo
b3VsZCBvbmx5IGJlIGNhbGxlZCBkdXJpbmcgaG90L2NvbGQgcGF0aCBnZW5lcmF0aW9uLCBzbyB0
aGF0IG1fYnl0ZWNvZGVJbmRleCBpcyBzZXQiKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fZmFzdFBh
dGhSZXN1bWVMYWJlbHMuYWRkKG1fYnl0ZWNvZGVJbmRleCwgbGFiZWwoKSk7CisgICAgQVNTRVJU
X1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKK30KKworaW5saW5lIE1hY3JvQXNz
ZW1ibGVyOjpMYWJlbCBKSVQ6OmZhc3RQYXRoUmVzdW1lUG9pbnQoKSBjb25zdAoreworICAgIEFT
U0VSVF9XSVRIX01FU1NBR0UobV9ieXRlY29kZUluZGV4LCAiVGhpcyBtZXRob2Qgc2hvdWxkIG9u
bHkgYmUgY2FsbGVkIGR1cmluZyBob3QvY29sZCBwYXRoIGdlbmVyYXRpb24sIHNvIHRoYXQgbV9i
eXRlY29kZUluZGV4IGlzIHNldCIpOworICAgIC8vIExvY2F0aW9uIHNldCBieSBzZXRGYXN0UGF0
aFJlc3VtZVBvaW50CisgICAgYXV0byBpdGVyID0gbV9mYXN0UGF0aFJlc3VtZUxhYmVscy5maW5k
KG1fYnl0ZWNvZGVJbmRleCk7CisgICAgaWYgKGl0ZXIgIT0gbV9mYXN0UGF0aFJlc3VtZUxhYmVs
cy5lbmQoKSkKKyAgICAgICAgcmV0dXJuIGl0ZXItPnZhbHVlOworICAgIC8vIE5leHQgaW5zdHJ1
Y3Rpb24gaW4gc2VxdWVuY2UKKyAgICBjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uID0gbV91bmxpbmtlZENvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYXQobV9ieXRlY29kZUlu
ZGV4KS5wdHIoKTsKKyAgICByZXR1cm4gbV9sYWJlbHNbbV9ieXRlY29kZUluZGV4Lm9mZnNldCgp
ICsgY3VycmVudEluc3RydWN0aW9uLT5zaXplKCldOworfQorCisKIEFMV0FZU19JTkxJTkUgdm9p
ZCBKSVQ6OmFkZFNsb3dDYXNlKEp1bXAganVtcCkKIHsKICAgICBBU1NFUlQobV9ieXRlY29kZUlu
ZGV4KTsgLy8gVGhpcyBtZXRob2Qgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGR1cmluZyBob3QvY29s
ZCBwYXRoIGdlbmVyYXRpb24sIHNvIHRoYXQgbV9ieXRlY29kZUluZGV4IGlzIHNldC4KQEAgLTMy
OSwxMSArMzQ5LDYgQEAgQUxXQVlTX0lOTElORSBkb3VibGUgSklUOjpnZXRPcGVyYW5kQ29uc3Rh
bnREb3VibGUoVmlydHVhbFJlZ2lzdGVyIHNyYykKIH0KICNlbmRpZgogCi1BTFdBWVNfSU5MSU5F
IHZvaWQgSklUOjplbWl0SW5pdFJlZ2lzdGVyKFZpcnR1YWxSZWdpc3RlciBkc3QpCi17Ci0gICAg
c3RvcmVUcnVzdGVkVmFsdWUoanNVbmRlZmluZWQoKSwgYWRkcmVzc0Zvcihkc3QpKTsKLX0KLQog
QUxXQVlTX0lOTElORSB2b2lkIEpJVDo6ZW1pdEdldFZpcnR1YWxSZWdpc3RlcihWaXJ0dWFsUmVn
aXN0ZXIgc3JjLCBKU1ZhbHVlUmVncyBkc3QpCiB7CiAgICAgQVNTRVJUKG1fYnl0ZWNvZGVJbmRl
eCk7IC8vIFRoaXMgbWV0aG9kIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBkdXJpbmcgaG90L2NvbGQg
cGF0aCBnZW5lcmF0aW9uLCBzbyB0aGF0IG1fYnl0ZWNvZGVJbmRleCBpcyBzZXQuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAppbmRleCA0Yzg2MzE0OWFkYjljOTMwMDM0
OTg4NzE3MTExYzAyNDk3MzVmM2ZmLi4wYjNiNWZjZDkzYWIxMmVkNDQwNjJlMmViZWU2OGM4NmY0
ZGZmMmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTEy
NTMsMTAgKzEyNTMsMTIgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZW50ZXIoY29uc3QgSW5zdHJ1Y3Rp
b24qKQogICAgIC8vIG9iamVjdCBsaWZldGltZSBhbmQgaW5jcmVhc2luZyBHQyBwcmVzc3VyZS4K
ICAgICBzaXplX3QgY291bnQgPSBtX3VubGlua2VkQ29kZUJsb2NrLT5udW1WYXJzKCk7CiAjaWYg
IUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIGZvciAoc2l6ZV90IGogPSBDb2RlQmxvY2s6
OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKTsgaiA8IGNv
dW50OyArK2opCi0gICAgICAgIGVtaXRJbml0UmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVyRm9yTG9j
YWwoaikpOworICAgIHNpemVfdCBmaXJzdCA9IENvZGVCbG9jazo6bGxpbnRCYXNlbGluZUNhbGxl
ZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpOworICAgIGlmIChmaXJzdCA8IGNvdW50KQor
ICAgICAgICBtb3ZlVHJ1c3RlZFZhbHVlKGpzVW5kZWZpbmVkKCksIGpzUmVnVDEwKTsKKyAgICBm
b3IgKHNpemVfdCBqID0gZmlyc3Q7IGogPCBjb3VudDsgKytqKQorICAgICAgICBlbWl0UHV0Vmly
dHVhbFJlZ2lzdGVyKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGopLCBqc1JlZ1QxMCk7CiAKLSAg
ICAKICAgICBsb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgcmVn
VDApOwogICAgIGVtaXRXcml0ZUJhcnJpZXIocmVnVDApOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IDExNGE3NGQ0ZTQ5MTM3NmRj
YzUyNWVkMjE1ZDExOWNlNTA3NTZmYTUuLmNhYzQwY2VkODJiZDk3NzI5NjVkZWVhYTEwOTNjYzQ1
ZjI5ZDI5MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlB
Y2Nlc3MuY3BwCkBAIC04OSw2ICs4OSw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV92YWwo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICAgICAgYWRkU2xvd0Nh
c2UoKTsKICAgICAgICAgbV9nZXRCeVZhbHMuYXBwZW5kKGdlbik7CiAKKyAgICAgICAgc2V0RmFz
dFBhdGhSZXN1bWVQb2ludCgpOwogICAgICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKGJ5dGVj
b2RlLCByZXN1bHRKU1IpOwogICAgICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgcmVz
dWx0SlNSKTsKICAgICB9CkBAIC0xMDAsOCArMTAxLDYgQEAgdm9pZCBKSVQ6OmdlbmVyYXRlR2V0
QnlWYWxTbG93Q2FzZShjb25zdCBPcGNvZGVUeXBlJiBieXRlY29kZSwgVmVjdG9yPFNsb3dDYXNl
RW4KICAgICBpZiAoIWhhc0FueVNsb3dDYXNlcyhpdGVyKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwotCiAgICAgbGlua0FsbFNs
b3dDYXNlcyhpdGVyKTsKIAogICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5
VmFsc1ttX2dldEJ5VmFsSW5kZXgrK107CkBAIC0xMjIsMTAgKzEyMSw4IEBAIHZvaWQgSklUOjpn
ZW5lcmF0ZUdldEJ5VmFsU2xvd0Nhc2UoY29uc3QgT3Bjb2RlVHlwZSYgYnl0ZWNvZGUsIFZlY3Rv
cjxTbG93Q2FzZUVuCiAgICAgbG9hZEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIpOwogICAg
IGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1Yklu
Zm9HUFIpOwogICAgIG1hdGVyaWFsaXplUG9pbnRlckludG9NZXRhZGF0YShieXRlY29kZSwgT3Bj
b2RlVHlwZTo6TWV0YWRhdGE6Om9mZnNldE9mQXJyYXlQcm9maWxlKCksIHByb2ZpbGVHUFIpOwot
ICAgIGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZTxTbG93T3BlcmF0aW9uPigKLSAgICAgICAgYnl0
ZWNvZGUsCisgICAgY2FsbE9wZXJhdGlvbjxTbG93T3BlcmF0aW9uPigKICAgICAgICAgQWRkcmVz
cyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigp
KSwKLSAgICAgICAgZHN0LAogICAgICAgICBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBw
cm9maWxlR1BSLCBhcmczSlNSLCBhcmc0SlNSKTsKICNlbHNlCiAgICAgVk0mIHZtID0gdGhpcy0+
dm0oKTsKQEAgLTE0OCw5ICsxNDUsNiBAQCB2b2lkIEpJVDo6Z2VuZXJhdGVHZXRCeVZhbFNsb3dD
YXNlKGNvbnN0IE9wY29kZVR5cGUmIGJ5dGVjb2RlLCBWZWN0b3I8U2xvd0Nhc2VFbgogICAgIG1h
dGVyaWFsaXplUG9pbnRlckludG9NZXRhZGF0YShieXRlY29kZSwgT3Bjb2RlVHlwZTo6TWV0YWRh
dGE6Om9mZnNldE9mQXJyYXlQcm9maWxlKCksIHByb2ZpbGVHUFIpOwogICAgIGVtaXROYWtlZE5l
YXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJh
dG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZt
LmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRh
Zz4oKSk7Ci0KLSAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKGJ5dGVjb2RlLCByZXR1cm5WYWx1
ZUpTUik7Ci0gICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIHJldHVyblZhbHVlSlNSKTsK
ICNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAogICAgIGdlbi5yZXBvcnRTbG93
UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsKQEAgLTIzMSw2ICsyMjUsNyBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiAgICAgYWRkU2xvd0Nhc2UoKTsKICAgICBtX2dldEJ5VmFscy5hcHBlbmQo
Z2VuKTsKIAorICAgIHNldEZhc3RQYXRoUmVzdW1lUG9pbnQoKTsKICAgICBlbWl0VmFsdWVQcm9m
aWxpbmdTaXRlKGJ5dGVjb2RlLCByZXN1bHRKU1IpOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0
ZXIoZHN0LCByZXN1bHRKU1IpOwogfQpAQCAtMjM4LDE1ICsyMzMsMTMgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYgaXRlcikKIHsKICAgICBBU1NFUlQoaGFzQW55U2xvd0Nhc2VzKGl0ZXIpKTsKLSAgICBhdXRv
IGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldFByaXZhdGVOYW1lPigpOwot
ICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKLQogICAgIGxpbmtBbGxT
bG93Q2FzZXMoaXRlcik7CiAKICAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9nZXRC
eVZhbHNbbV9nZXRCeVZhbEluZGV4KytdOwogICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJl
bCgpOwogCiAjaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQorICAgIGF1dG8gYnl0ZWNvZGUg
PSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0UHJpdmF0ZU5hbWU+KCk7CiAgICAgdXNpbmcg
U2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUp
OwogICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcHJlZmVycmVkQXJndW1l
bnRHUFI8U2xvd09wZXJhdGlvbiwgMD4oKTsKICAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZv
R1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKTsKQEAgLTI1Nywx
MiArMjUwLDExIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlCiAgICAgbG9hZENvbnN0YW50KGdl
bi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7CiAgICAgZW1p
dEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2Jhc2UsIGJhc2VKU1IpOwogICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSwgcHJvcGVydHlKU1IpOwotICAg
IGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZTxTbG93T3BlcmF0aW9uPigKLSAgICAgICAgYnl0ZWNv
ZGUsCisgICAgY2FsbE9wZXJhdGlvbjxTbG93T3BlcmF0aW9uPigKICAgICAgICAgQWRkcmVzcyhz
dHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwK
LSAgICAgICAgZHN0LAogICAgICAgICBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNl
SlNSLCBwcm9wZXJ0eUpTUik7CiAjZWxzZQorICAgIFVOVVNFRF9QQVJBTShjdXJyZW50SW5zdHJ1
Y3Rpb24pOwogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVP
ZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5k
ZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CkBAIC0yNzksMTEgKzI3MSw5
IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlCiAgICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlu
a2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7CiAgICAgZW1pdE5ha2VkTmVh
ckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxH
ZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAgICAgZW1pdE5ha2VkTmVhckNh
bGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5v
UHRyVGFnPigpKTsKLQotICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoYnl0ZWNvZGUsIHJldHVy
blZhbHVlSlNSKTsKLSAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgcmV0dXJuVmFsdWVK
U1IpOwogI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCisgICAgc3RhdGljX2Fz
c2VydChCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpyZXN1bHRKU1IgPT0gcmV0dXJuVmFsdWVK
U1IpOwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsK
IH0KIApAQCAtMTEzOSw4ICsxMTI5LDEwIEBAIHZvaWQgSklUOjplbWl0X29wX3RyeV9nZXRfYnlf
aWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBnZW4uZ2VuZXJh
dGVCYXNlbGluZURhdGFJQ0Zhc3RQYXRoKCp0aGlzLCBzdHViSW5mb0luZGV4LCBzdHViSW5mb0dQ
Uik7CiAgICAgYWRkU2xvd0Nhc2UoKTsKICAgICBtX2dldEJ5SWRzLmFwcGVuZChnZW4pOwotICAg
IAorCiAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShieXRlY29kZSwgcmVzdWx0SlNSKTsKKwor
ICAgIHNldEZhc3RQYXRoUmVzdW1lUG9pbnQoKTsKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVy
KHJlc3VsdFZSZWcsIHJlc3VsdEpTUik7CiB9CiAKQEAgLTExNDksNyArMTE0MSw2IEBAIHZvaWQg
SklUOjplbWl0U2xvd19vcF90cnlfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24sIFZlY3RvCiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAogICAgIGF1
dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wVHJ5R2V0QnlJZD4oKTsKLSAg
ICBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0VlJlZyA9IGJ5dGVjb2RlLm1fZHN0OwogICAgIGNvbnN0
IElkZW50aWZpZXIqIGlkZW50ID0gJihtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5
dGVjb2RlLm1fcHJvcGVydHkpKTsKIAogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1f
Z2V0QnlJZHNbbV9nZXRCeUlkSW5kZXgrK107CkBAIC0xMTY3LDcgKzExNTgsNiBAQCB2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfdHJ5X2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uLCBWZWN0bwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9i
YXNlLCBiYXNlSlNSKTsKICAgICBjYWxsT3BlcmF0aW9uPFNsb3dPcGVyYXRpb24+KAogICAgICAg
ICBBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3Bl
cmF0aW9uKCkpLAotICAgICAgICByZXN1bHRWUmVnLAogICAgICAgICBnbG9iYWxPYmplY3RHUFIs
IHN0dWJJbmZvR1BSLCBiYXNlSlNSLAogICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVh
dGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV91bmxpbmtlZENvZGVCbG9jaywgKmlk
ZW50KS5yYXdCaXRzKCkpOwogI2Vsc2UKQEAgLTExODgsMTAgKzExNzgsOSBAQCB2b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfdHJ5X2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uLCBWZWN0bwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKG9w
ZXJhdGlvblRyeUdldEJ5SWRPcHRpbWl6ZSksIGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRPcHRp
bWl6ZSk+Ojp2YWx1ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93
X29wX2dldF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFn
PigpKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9u
R2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotCi0gICAgZW1pdFB1dFZpcnR1
YWxSZWdpc3RlcihyZXN1bHRWUmVnLCByZXR1cm5WYWx1ZUdQUik7CiAjZW5kaWYgLy8gRU5BQkxF
KEVYVFJBX0NUSV9USFVOS1MpCiAKKyAgICBzdGF0aWNfYXNzZXJ0KEJhc2VsaW5lR2V0QnlJZFJl
Z2lzdGVyczo6cmVzdWx0SlNSID09IHJldHVyblZhbHVlSlNSKTsKICAgICBnZW4ucmVwb3J0U2xv
d1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7CiB9CiAKQEAgLTEyMjMsNiArMTIxMiw3
IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBhZGRTbG93Q2FzZSgpOwogICAgIG1fZ2V0QnlJZHMu
YXBwZW5kKGdlbik7CiAKKyAgICBzZXRGYXN0UGF0aFJlc3VtZVBvaW50KCk7CiAgICAgZW1pdFZh
bHVlUHJvZmlsaW5nU2l0ZShieXRlY29kZSwgcmVzdWx0SlNSKTsKICAgICBlbWl0UHV0VmlydHVh
bFJlZ2lzdGVyKHJlc3VsdFZSZWcsIHJlc3VsdEpTUik7CiB9CkBAIC0xMjMyLDcgKzEyMjIsNiBA
QCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX2RpcmVjdChjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uLCBWZQogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAK
ICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldEJ5SWREaXJl
Y3Q+KCk7Ci0gICAgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdFZSZWcgPSBieXRlY29kZS5tX2RzdDsK
ICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+aWRl
bnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7CiAKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9y
JiBnZW4gPSBtX2dldEJ5SWRzW21fZ2V0QnlJZEluZGV4KytdOwpAQCAtMTI0OCwxMCArMTIzNyw4
IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWRfZGlyZWN0KGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlCiAgICAgbG9hZEdsb2JhbE9iamVjdChnbG9iYWxP
YmplY3RHUFIpOwogICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3Rh
bnRJbmRleCwgc3R1YkluZm9HUFIpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNv
ZGUubV9iYXNlLCBiYXNlSlNSKTsKLSAgICBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGU8U2xvd09w
ZXJhdGlvbj4oCi0gICAgICAgIGJ5dGVjb2RlLAorICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJh
dGlvbj4oCiAgICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpv
ZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAgIHJlc3VsdFZSZWcsCiAgICAgICAgIGds
b2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VKU1IsCiAgICAgICAgIENhY2hlYWJsZUlk
ZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX3VubGlua2Vk
Q29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSk7CiAjZWxzZQpAQCAtMTI3MiwxMSArMTI1OSw5
IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWRfZGlyZWN0KGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlCiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3Nh
bWU8ZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZERpcmVjdE9wdGltaXplKSwgZGVjbHR5cGUob3Bl
cmF0aW9uR2V0QnlJZE9wdGltaXplKT46OnZhbHVlKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2
bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRh
Z2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0
dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0K
LSAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKGJ5dGVjb2RlLCByZXR1cm5WYWx1ZUpTUik7Ci0g
ICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihyZXN1bHRWUmVnLCByZXR1cm5WYWx1ZUpTUik7CiAj
ZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKKyAgICBzdGF0aWNfYXNzZXJ0KEJh
c2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSID09IHJldHVyblZhbHVlSlNSKTsKICAg
ICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7CiB9CiAKQEAg
LTEzMjAsNiArMTMwNSw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZChjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGFkZFNsb3dDYXNlKCk7CiAgICAgbV9n
ZXRCeUlkcy5hcHBlbmQoZ2VuKTsKIAorICAgIHNldEZhc3RQYXRoUmVzdW1lUG9pbnQoKTsKICAg
ICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKGJ5dGVjb2RlLCByZXN1bHRKU1IpOwogICAgIGVtaXRQ
dXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0VlJlZywgcmVzdWx0SlNSKTsKIH0KQEAgLTEzMjksNyAr
MTMxNSw2IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsCiAgICAgbGlua0FsbFNsb3dDYXNlcyhp
dGVyKTsKIAogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0
QnlJZD4oKTsKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0VlJlZyA9IGJ5dGVjb2RlLm1fZHN0
OwogICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX3VubGlua2VkQ29kZUJsb2NrLT5p
ZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKIAogICAgIEpJVEdldEJ5SWRHZW5lcmF0
b3ImIGdlbiA9IG1fZ2V0QnlJZHNbbV9nZXRCeUlkSW5kZXgrK107CkBAIC0xMzQ1LDEwICsxMzMw
LDggQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2wKICAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2Jh
bE9iamVjdEdQUik7CiAgICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25z
dGFudEluZGV4LCBzdHViSW5mb0dQUik7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRl
Y29kZS5tX2Jhc2UsIGJhc2VKU1IpOwotICAgIGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZTxTbG93
T3BlcmF0aW9uPigKLSAgICAgICAgYnl0ZWNvZGUsCisgICAgY2FsbE9wZXJhdGlvbjxTbG93T3Bl
cmF0aW9uPigKICAgICAgICAgQWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86
Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwKLSAgICAgICAgcmVzdWx0VlJlZywKICAgICAgICAg
Z2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUpTUiwKICAgICAgICAgQ2FjaGVhYmxl
SWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fdW5saW5r
ZWRDb2RlQmxvY2ssICppZGVudCkucmF3Qml0cygpKTsKICNlbHNlCkBAIC0xMzY4LDExICsxMzUx
LDkgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2wKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoQ2Fj
aGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1f
dW5saW5rZWRDb2RlQmxvY2ssICppZGVudCkucmF3Qml0cygpKSwgcHJvcGVydHlHUFIpOwogICAg
IGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlfaWRfcHJlcGFy
ZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAgICAgZW1pdE5ha2Vk
TmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRD
b2RlPE5vUHRyVGFnPigpKTsKLQotICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoYnl0ZWNvZGUs
IHJldHVyblZhbHVlSlNSKTsKLSAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHJlc3VsdFZSZWcs
IHJldHVyblZhbHVlSlNSKTsKICNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAor
ICAgIHN0YXRpY19hc3NlcnQoQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1IgPT0g
cmV0dXJuVmFsdWVKU1IpOwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdp
biwgQ2FsbCgpKTsKIH0KIApAQCAtMTQwOSw2ICsxMzkwLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
Z2V0X2J5X2lkX3dpdGhfdGhpcyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogICAgIGFkZFNsb3dDYXNlKCk7CiAgICAgbV9nZXRCeUlkc1dpdGhUaGlzLmFwcGVuZChnZW4p
OwogCisgICAgc2V0RmFzdFBhdGhSZXN1bWVQb2ludCgpOwogICAgIGVtaXRWYWx1ZVByb2ZpbGlu
Z1NpdGUoYnl0ZWNvZGUsIHJlc3VsdEpTUik7CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihy
ZXN1bHRWUmVnLCByZXN1bHRKU1IpOwogfQpAQCAtMTQ1NSw3ICsxNDM3LDYgQEAgdm9pZCBKSVQ6
OmVtaXRTbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbiwKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCiAgICAgYXV0byBi
eXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkV2l0aFRoaXM+KCk7Ci0g
ICAgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdFZSZWcgPSBieXRlY29kZS5tX2RzdDsKICAgICBjb25z
dCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+aWRlbnRpZmllcihi
eXRlY29kZS5tX3Byb3BlcnR5KSk7CiAKICAgICBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3Im
IGdlbiA9IG1fZ2V0QnlJZHNXaXRoVGhpc1ttX2dldEJ5SWRXaXRoVGhpc0luZGV4KytdOwpAQCAt
MTQ3MywxMCArMTQ1NCw4IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWRfd2l0aF90
aGlzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sCiAgICAgbG9hZENvbnN0
YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7CiAg
ICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2Jhc2UsIGJhc2VKU1IpOwogICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV90aGlzVmFsdWUsIHRoaXNKU1IpOwot
ICAgIGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZTxTbG93T3BlcmF0aW9uPigKLSAgICAgICAgYnl0
ZWNvZGUsCisgICAgY2FsbE9wZXJhdGlvbjxTbG93T3BlcmF0aW9uPigKICAgICAgICAgQWRkcmVz
cyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigp
KSwKLSAgICAgICAgcmVzdWx0VlJlZywKICAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5m
b0dQUiwgYmFzZUpTUiwgdGhpc0pTUiwKICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3Jl
YXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fdW5saW5rZWRDb2RlQmxvY2ssICpp
ZGVudCkucmF3Qml0cygpKTsKICNlbHNlCkBAIC0xNDk4LDExICsxNDc3LDkgQEAgdm9pZCBKSVQ6
OmVtaXRTbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbiwKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoQ2FjaGVhYmxlSWRlbnRpZmll
cjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fdW5saW5rZWRDb2RlQmxv
Y2ssICppZGVudCkucmF3Qml0cygpKSwgcHJvcGVydHlHUFIpOwogICAgIGVtaXROYWtlZE5lYXJD
YWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzX3ByZXBhcmVDYWxs
R2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogICAgIGVtaXROYWtlZE5lYXJD
YWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxO
b1B0clRhZz4oKSk7Ci0KLSAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKGJ5dGVjb2RlLCByZXR1
cm5WYWx1ZUpTUik7Ci0gICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihyZXN1bHRWUmVnLCByZXR1
cm5WYWx1ZUpTUik7CiAjZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKKyAgICBz
dGF0aWNfYXNzZXJ0KEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjpyZXN1bHRKU1Ig
PT0gcmV0dXJuVmFsdWVKU1IpOwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhC
ZWdpbiwgQ2FsbCgpKTsKIH0KIApAQCAtMTcwOCw2ICsxNjg1LDcgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfaW5fYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBh
ZGRTbG93Q2FzZSgpOwogICAgIG1faW5CeUlkcy5hcHBlbmQoZ2VuKTsKIAorICAgIHNldEZhc3RQ
YXRoUmVzdW1lUG9pbnQoKTsKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHJlc3VsdFZSZWcs
IHJlc3VsdEpTUik7CiB9CiAKQEAgLTE3MTYsNyArMTY5NCw2IEBAIHZvaWQgSklUOjplbWl0U2xv
d19vcF9pbl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0
b3I8U2xvCiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAogICAgIGF1dG8gYnl0ZWNvZGUg
PSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSW5CeUlkPigpOwotICAgIFZpcnR1YWxSZWdpc3Rl
ciByZXN1bHRWUmVnID0gYnl0ZWNvZGUubV9kc3Q7CiAgICAgY29uc3QgSWRlbnRpZmllciogaWRl
bnQgPSAmKG1fdW5saW5rZWRDb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0
eSkpOwogCiAgICAgSklUSW5CeUlkR2VuZXJhdG9yJiBnZW4gPSBtX2luQnlJZHNbbV9pbkJ5SWRJ
bmRleCsrXTsKQEAgLTE3MzQsNyArMTcxMSw2IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9pbl9i
eV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvCiAg
ICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2Jhc2UsIGJhc2VKU1IpOwogICAg
IGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4oCiAgICAgICAgIEFkZHJlc3Moc3R1YkluZm9H
UFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAg
IHJlc3VsdFZSZWcsCiAgICAgICAgIGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VK
U1IsCiAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3du
ZWRCeUNvZGVCbG9jayhtX3VubGlua2VkQ29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSk7CiAj
ZWxzZQpAQCAtMTc1NywxMCArMTczMyw5IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9pbl9ieV9p
ZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvCiAgICAg
c3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUob3BlcmF0aW9uSW5CeUlkT3B0aW1p
emUpLCBkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpPjo6dmFsdWUpOwogICAgIGVt
aXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNh
bGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAgICAgZW1pdE5ha2VkTmVh
ckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2Rl
PE5vUHRyVGFnPigpKTsKLQotICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0VlJlZywg
cmV0dXJuVmFsdWVHUFIpOwogI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCisg
ICAgc3RhdGljX2Fzc2VydChCYXNlbGluZUluQnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSID09IHJl
dHVyblZhbHVlSlNSKTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4s
IENhbGwoKSk7CiB9CiAKQEAgLTE3OTYsNiArMTc3MSw3IEBAIHZvaWQgSklUOjplbWl0X29wX2lu
X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGFkZFNs
b3dDYXNlKCk7CiAgICAgbV9pbkJ5VmFscy5hcHBlbmQoZ2VuKTsKIAorICAgIHNldEZhc3RQYXRo
UmVzdW1lUG9pbnQoKTsKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgcmVzdWx0SlNS
KTsKIH0KIApAQCAtMTgwNCw3ICsxNzgwLDYgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2luX2J5
X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2wKICAg
ICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJ
bnN0cnVjdGlvbi0+YXM8T3BJbkJ5VmFsPigpOwotICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBi
eXRlY29kZS5tX2RzdDsKIAogICAgIEpJVEluQnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1faW5CeVZh
bHNbbV9pbkJ5VmFsSW5kZXgrK107CiAKQEAgLTE4MjUsNyArMTgwMCw2IEBAIHZvaWQgSklUOjpl
bWl0U2xvd19vcF9pbl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
biwgVmVjdG9yPFNsCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3Byb3Bl
cnR5LCBwcm9wZXJ0eUpTUik7CiAgICAgY2FsbE9wZXJhdGlvbjxTbG93T3BlcmF0aW9uPigKICAg
ICAgICAgQWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xv
d09wZXJhdGlvbigpKSwKLSAgICAgICAgZHN0LAogICAgICAgICBnbG9iYWxPYmplY3RHUFIsIHN0
dWJJbmZvR1BSLCBwcm9maWxlR1BSLCBiYXNlSlNSLCBwcm9wZXJ0eUpTUik7CiAjZWxzZQogICAg
IFZNJiB2bSA9IHRoaXMtPnZtKCk7CkBAIC0xODQ5LDEwICsxODIzLDkgQEAgdm9pZCBKSVQ6OmVt
aXRTbG93X29wX2luX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
LCBWZWN0b3I8U2wKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShvcGVy
YXRpb25JbkJ5VmFsT3B0aW1pemUpLCBkZWNsdHlwZShvcGVyYXRpb25HZXRCeVZhbE9wdGltaXpl
KT46OnZhbHVlKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3Bf
Z2V0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigp
KTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2Vu
ZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotCi0gICAgZW1pdFB1dFZpcnR1YWxS
ZWdpc3Rlcihkc3QsIHJldHVyblZhbHVlR1BSKTsKICNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJ
X1RIVU5LUykKIAorICAgIHN0YXRpY19hc3NlcnQoQmFzZWxpbmVJbkJ5VmFsUmVnaXN0ZXJzOjpy
ZXN1bHRKU1IgPT0gcmV0dXJuVmFsdWVKU1IpOwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwo
Y29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsKIH0KIApAQCAtMTg4MSwxMCArMTg1NCwxMSBAQCB2b2lk
IEpJVDo6ZW1pdEhhc1ByaXZhdGUoVmlydHVhbFJlZ2lzdGVyIGRzdCwgVmlydHVhbFJlZ2lzdGVy
IGJhc2UsIFZpcnR1YWxSZWdpcwogICAgIGFkZFNsb3dDYXNlKCk7CiAgICAgbV9pbkJ5VmFscy5h
cHBlbmQoZ2VuKTsKIAorICAgIHNldEZhc3RQYXRoUmVzdW1lUG9pbnQoKTsKICAgICBlbWl0UHV0
VmlydHVhbFJlZ2lzdGVyKGRzdCwgcmVzdWx0SlNSKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRIYXNQ
cml2YXRlU2xvdyhWaXJ0dWFsUmVnaXN0ZXIgZHN0LCBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSwgVmly
dHVhbFJlZ2lzdGVyIHByb3BlcnR5LCBBY2Nlc3NUeXBlIHR5cGUpCit2b2lkIEpJVDo6ZW1pdEhh
c1ByaXZhdGVTbG93KFZpcnR1YWxSZWdpc3RlciBiYXNlLCBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVy
dHksIEFjY2Vzc1R5cGUgdHlwZSkKIHsKICAgICBVTlVTRURfUEFSQU0oYmFzZSk7CiAgICAgVU5V
U0VEX1BBUkFNKHByb3BlcnR5KTsKQEAgLTE5MDYsNyArMTg4MCw2IEBAIHZvaWQgSklUOjplbWl0
SGFzUHJpdmF0ZVNsb3coVmlydHVhbFJlZ2lzdGVyIGRzdCwgVmlydHVhbFJlZ2lzdGVyIGJhc2Us
IFZpcnR1YWxSCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcHJvcGVydHlK
U1IpOwogICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4oCiAgICAgICAgIEFkZHJlc3Mo
c3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSks
Ci0gICAgICAgIGRzdCwKICAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFz
ZUpTUiwgcHJvcGVydHlKU1IpOwogI2Vsc2UKICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwpAQCAt
MTkyNywxMCArMTkwMCw5IEBAIHZvaWQgSklUOjplbWl0SGFzUHJpdmF0ZVNsb3coVmlydHVhbFJl
Z2lzdGVyIGRzdCwgVmlydHVhbFJlZ2lzdGVyIGJhc2UsIFZpcnR1YWxSCiAgICAgc3RhdGljX2Fz
c2VydChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUob3BlcmF0aW9uSGFzUHJpdmF0ZUJyYW5kT3B0aW1p
emUpLCBkZWNsdHlwZShvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplKT46OnZhbHVlKTsK
ICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X3ByaXZhdGVf
bmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKICAg
ICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9y
KS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotCi0gICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rl
cihkc3QsIHJldHVyblZhbHVlR1BSKTsKICNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5L
UykKIAorICAgIHN0YXRpY19hc3NlcnQoQmFzZWxpbmVJbkJ5VmFsUmVnaXN0ZXJzOjpyZXN1bHRK
U1IgPT0gcmV0dXJuVmFsdWVKU1IpOwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBh
dGhCZWdpbiwgQ2FsbCgpKTsKIH0KIApAQCAtMTk0NSw3ICsxOTE3LDcgQEAgdm9pZCBKSVQ6OmVt
aXRTbG93X29wX2hhc19wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbiwgVmUKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCiAgICAgYXV0byBieXRl
Y29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BIYXNQcml2YXRlTmFtZT4oKTsKLSAgICBl
bWl0SGFzUHJpdmF0ZVNsb3coYnl0ZWNvZGUubV9kc3QsIGJ5dGVjb2RlLm1fYmFzZSwgYnl0ZWNv
ZGUubV9wcm9wZXJ0eSwgQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZU5hbWUpOworICAgIGVtaXRIYXNQ
cml2YXRlU2xvdyhieXRlY29kZS5tX2Jhc2UsIGJ5dGVjb2RlLm1fcHJvcGVydHksIEFjY2Vzc1R5
cGU6Okhhc1ByaXZhdGVOYW1lKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfaGFzX3ByaXZhdGVf
YnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTE5NTksNyAr
MTkzMSw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9icmFuZChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWCiAgICAgbGlua0FsbFNsb3dDYXNlcyhp
dGVyKTsKIAogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSGFz
UHJpdmF0ZUJyYW5kPigpOwotICAgIGVtaXRIYXNQcml2YXRlU2xvdyhieXRlY29kZS5tX2RzdCwg
Ynl0ZWNvZGUubV9iYXNlLCBieXRlY29kZS5tX2JyYW5kLCBBY2Nlc3NUeXBlOjpIYXNQcml2YXRl
QnJhbmQpOworICAgIGVtaXRIYXNQcml2YXRlU2xvdyhieXRlY29kZS5tX2Jhc2UsIGJ5dGVjb2Rl
Lm1fYnJhbmQsIEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVCcmFuZCk7CiB9CiAKIHZvaWQgSklUOjpl
bWl0X29wX3Jlc29sdmVfc2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKQEAgLTI5MjMsNiArMjg5NSw3IEBAIHZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0b3JfZ2V0
X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiAgICAgZG9u
ZUNhc2VzLmxpbmsodGhpcyk7CiAKKyAgICBzZXRGYXN0UGF0aFJlc3VtZVBvaW50KCk7CiAgICAg
ZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShieXRlY29kZSwgcmV0dXJuVmFsdWVKU1IpOwogICAgIGVt
aXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCByZXR1cm5WYWx1ZUpTUik7CiB9CkBAIC0zMDMxLDEz
ICszMDA0LDIxIEBAIHZvaWQgSklUOjplbWl0V3JpdGVCYXJyaWVyKFZpcnR1YWxSZWdpc3RlciBv
d25lciwgVmlydHVhbFJlZ2lzdGVyIHZhbHVlLCBXcml0ZUJhCiAgICAgICAgIHZhbHVlTm90Q2Vs
bCA9IGJyYW5jaElmTm90Q2VsbChyZWdUMCk7CiAgICAgfQogCi0gICAgZW1pdEdldFZpcnR1YWxS
ZWdpc3Rlcihvd25lciwganNSZWdUMTApOworICAgIGNvbnN0ZXhwciBHUFJSZWcgYXJnMUdQUiA9
IHByZWZlcnJlZEFyZ3VtZW50R1BSPGRlY2x0eXBlKG9wZXJhdGlvbldyaXRlQmFycmllclNsb3dQ
YXRoKSwgMT4oKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVn
cyB0bXBKU1IgeyBhcmcxR1BSIH07CisjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgIGNvbnN0
ZXhwciBKU1ZhbHVlUmVncyB0bXBKU1IgeyByZWdUMCwgYXJnMUdQUiB9OworI2VuZGlmCisgICAg
c3RhdGljX2Fzc2VydChub092ZXJsYXAocmVnVDAsIGFyZzFHUFIsIHJlZ1QyKSk7CisKKyAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKG93bmVyLCB0bXBKU1IpOwogICAgIEp1bXAgb3duZXJOb3RD
ZWxsOwogICAgIGlmIChtb2RlID09IFNob3VsZEZpbHRlckJhc2UgfHwgbW9kZSA9PSBTaG91bGRG
aWx0ZXJCYXNlQW5kVmFsdWUpCi0gICAgICAgIG93bmVyTm90Q2VsbCA9IGJyYW5jaElmTm90Q2Vs
bChqc1JlZ1QxMCk7CisgICAgICAgIG93bmVyTm90Q2VsbCA9IGJyYW5jaElmTm90Q2VsbCh0bXBK
U1IpOwogCi0gICAgSnVtcCBvd25lcklzUmVtZW1iZXJlZE9ySW5FZGVuID0gYmFycmllckJyYW5j
aCh2bSgpLCBqc1JlZ1QxMC5wYXlsb2FkR1BSKCksIHJlZ1QyKTsKLSAgICBjYWxsT3BlcmF0aW9u
Tm9FeGNlcHRpb25DaGVjayhvcGVyYXRpb25Xcml0ZUJhcnJpZXJTbG93UGF0aCwgJnZtKCksIGpz
UmVnVDEwLnBheWxvYWRHUFIoKSk7CisgICAgSnVtcCBvd25lcklzUmVtZW1iZXJlZE9ySW5FZGVu
ID0gYmFycmllckJyYW5jaCh2bSgpLCB0bXBKU1IucGF5bG9hZEdQUigpLCByZWdUMik7CisgICAg
Y2FsbE9wZXJhdGlvbk5vRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uV3JpdGVCYXJyaWVyU2xvd1Bh
dGgsICZ2bSgpLCB0bXBKU1IucGF5bG9hZEdQUigpKTsKICAgICBvd25lcklzUmVtZW1iZXJlZE9y
SW5FZGVuLmxpbmsodGhpcyk7CiAKICAgICBpZiAobW9kZSA9PSBTaG91bGRGaWx0ZXJCYXNlIHx8
IG1vZGUgPT0gU2hvdWxkRmlsdGVyQmFzZUFuZFZhbHVlKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>