<?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>227039</bug_id>
          
          <creation_ts>2021-06-15 12:07:15 -0700</creation_ts>
          <short_desc>Use ldp and stp more for saving / restoring registers on ARM64.</short_desc>
          <delta_ts>2021-06-24 17:07:59 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</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="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>annulen</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1769903</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-06-15 12:07:15 -0700</bug_when>
    <thetext>Details coming in ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769904</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-06-15 12:07:43 -0700</bug_when>
    <thetext>&lt;rdar://problem/79354736&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769907</commentid>
    <comment_count>2</comment_count>
      <attachid>431463</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-06-15 12:10:53 -0700</bug_when>
    <thetext>Created attachment 431463
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769912</commentid>
    <comment_count>3</comment_count>
      <attachid>431464</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-06-15 12:19:30 -0700</bug_when>
    <thetext>Created attachment 431464
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769929</commentid>
    <comment_count>4</comment_count>
      <attachid>431472</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-06-15 13:10:29 -0700</bug_when>
    <thetext>Created attachment 431472
patch to test workaround for gcc weakness.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769937</commentid>
    <comment_count>5</comment_count>
      <attachid>431473</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-06-15 13:29:03 -0700</bug_when>
    <thetext>Created attachment 431473
take 2 at working around gcc being weak sauce.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769958</commentid>
    <comment_count>6</comment_count>
      <attachid>431479</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-06-15 14:17:30 -0700</bug_when>
    <thetext>Created attachment 431479
take 3: testing workaround for gcc being weak sauce.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769963</commentid>
    <comment_count>7</comment_count>
      <attachid>431482</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-06-15 14:34:53 -0700</bug_when>
    <thetext>Created attachment 431482
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769966</commentid>
    <comment_count>8</comment_count>
      <attachid>431483</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-06-15 14:41:54 -0700</bug_when>
    <thetext>Created attachment 431483
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769967</commentid>
    <comment_count>9</comment_count>
      <attachid>431484</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-06-15 14:46:20 -0700</bug_when>
    <thetext>Created attachment 431484
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770228</commentid>
    <comment_count>10</comment_count>
      <attachid>431484</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-06-16 09:30:41 -0700</bug_when>
    <thetext>Comment on attachment 431484
proposed patch.

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

&gt; Source/JavaScriptCore/jit/AssemblyHelpers.cpp:1232
&gt; +void AssemblyHelpers::emitSaveCalleeSavesFor(const RegisterAtOffsetList* calleeSaves)
&gt; +{
&gt; +    RegisterSet dontSaveRegisters = RegisterSet(RegisterSet::stackRegisters(), RegisterSet::allFPRs());
&gt; +    unsigned registerCount = calleeSaves-&gt;size();
&gt; +
&gt; +    StoreRegSpooler spooler(*this, framePointerRegister);
&gt; +
&gt; +    unsigned i = 0;
&gt; +    for (; i &lt; registerCount; i++) {
&gt; +        RegisterAtOffset entry = calleeSaves-&gt;at(i);
&gt; +        if (dontSaveRegisters.contains(entry.reg()))
&gt; +            continue;
&gt; +        spooler.storeGPR(entry);
&gt; +    }
&gt; +    spooler.flushGPR();
&gt; +    for (; i &lt; registerCount; i++) {
&gt; +        RegisterAtOffset entry = calleeSaves-&gt;at(i);
&gt; +        if (dontSaveRegisters.contains(entry.reg()))
&gt; +            continue;
&gt; +        spooler.storeFPR(entry);
&gt; +    }
&gt; +    spooler.flushFPR();
&gt; +}

This code doesn&apos;t really make sense given you ignore allFPRs. I think it needs reconsidering. Either handle FPRs properly, or assert we don&apos;t see them.

For example, the second loop is completely dead since we iterate everything in the first loop.

The second loop is also dead because we ignore FPRs above.

&gt; Source/JavaScriptCore/jit/AssemblyHelpers.cpp:1256
&gt; +void AssemblyHelpers::emitRestoreCalleeSavesFor(const RegisterAtOffsetList* calleeSaves)
&gt; +{
&gt; +    RegisterSet dontRestoreRegisters = RegisterSet(RegisterSet::stackRegisters(), RegisterSet::allFPRs());
&gt; +    unsigned registerCount = calleeSaves-&gt;size();
&gt; +    
&gt; +    LoadRegSpooler spooler(*this, framePointerRegister);
&gt; +
&gt; +    unsigned i = 0;
&gt; +    for (; i &lt; registerCount; i++) {
&gt; +        RegisterAtOffset entry = calleeSaves-&gt;at(i);
&gt; +        if (dontRestoreRegisters.get(entry.reg()))
&gt; +            continue;
&gt; +        spooler.loadGPR(entry);
&gt; +    }
&gt; +    spooler.flushGPR();
&gt; +    for (; i &lt; registerCount; i++) {
&gt; +        RegisterAtOffset entry = calleeSaves-&gt;at(i);
&gt; +        if (dontRestoreRegisters.get(entry.reg()))
&gt; +            continue;
&gt; +        spooler.loadFPR(entry);
&gt; +    }
&gt; +    spooler.flushFPR();
&gt; +}

ditto

&gt; Source/JavaScriptCore/jit/AssemblyHelpers.cpp:1286
&gt; +        if (!entry.reg().isGPR())
&gt; +            break;

They&apos;re guaranteed to be sorted GPRs then FPRs?

&gt; Source/JavaScriptCore/jit/AssemblyHelpers.cpp:1323
&gt; +    RegisterSet dontSaveRegisters = RegisterSet(RegisterSet::stackRegisters(), RegisterSet::allFPRs());

were you gonna rebaseline this? Let&apos;s not ignore fprs. And instead, assert in the loop below. That&apos;s less error prone in the future.

&gt; Source/JavaScriptCore/jit/AssemblyHelpersSpoolers.h:46
&gt; +        ASSERT(entry.reg().isGPR());

nit: RELEASE_ASSERT

&gt; Source/JavaScriptCore/jit/AssemblyHelpersSpoolers.h:69
&gt; +    void flushGPR()

name nit: I sorta feel like this should be called &quot;commit&quot; or something like that?

&gt; Source/JavaScriptCore/jit/AssemblyHelpersSpoolers.h:79
&gt; +    void handleFPR(const RegisterAtOffset&amp; entry)

the code for FPR and GPR are so similar. Can we share code somehow?

same in the flush functions

&gt; Source/JavaScriptCore/jit/AssemblyHelpersSpoolers.h:81
&gt; +        ASSERT(entry.reg().isFPR());

nit: RELEASE_ASSERT

&gt; Source/JavaScriptCore/jit/AssemblyHelpersSpoolers.h:342
&gt; +    };

no semicolon

&gt; Source/JavaScriptCore/jit/AssemblyHelpersSpoolers.h:398
&gt; +                if constexpr (regTypeIsGPR) {

shouldn&apos;t this be like an assert?

&gt; Source/JavaScriptCore/jit/AssemblyHelpersSpoolers.h:407
&gt; +                if constexpr (regTypeIsGPR) {

ditto

&gt; Source/JavaScriptCore/jit/AssemblyHelpersSpoolers.h:418
&gt; +                if constexpr (regTypeIsGPR) {

ditto

&gt; Source/JavaScriptCore/jit/AssemblyHelpersSpoolers.h:426
&gt; +                if constexpr (regTypeIsGPR) {

ditto

&gt; Source/JavaScriptCore/jit/AssemblyHelpersSpoolers.h:461
&gt; +    };

no semicolon</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771984</commentid>
    <comment_count>11</comment_count>
      <attachid>431484</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-06-23 10:10:54 -0700</bug_when>
    <thetext>Comment on attachment 431484
proposed patch.

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

&gt;&gt; Source/JavaScriptCore/jit/AssemblyHelpers.cpp:1232
&gt;&gt; +}
&gt; 
&gt; This code doesn&apos;t really make sense given you ignore allFPRs. I think it needs reconsidering. Either handle FPRs properly, or assert we don&apos;t see them.
&gt; 
&gt; For example, the second loop is completely dead since we iterate everything in the first loop.
&gt; 
&gt; The second loop is also dead because we ignore FPRs above.

After Tadeu&apos;s fix, we will need this loop to handle FPRs as well.  Leaving as is.

&gt;&gt; Source/JavaScriptCore/jit/AssemblyHelpers.cpp:1256
&gt;&gt; +}
&gt; 
&gt; ditto

Ditto.

&gt;&gt; Source/JavaScriptCore/jit/AssemblyHelpers.cpp:1286
&gt;&gt; +            break;
&gt; 
&gt; They&apos;re guaranteed to be sorted GPRs then FPRs?

Yes.  RegisterAtOffsetList can only be constructed from a RegisterSet, by iterating the RegisterSet from begin() to end().   RegisterSet organizes its tracked registers with a bitmap, where bits 0 to MacroAssembler::numGPRs are for GPRReg, and bits MacroAssembler::numGPRs to MacroAssembler::numGPRs + MacroAssembler::numFPRs are for FPRRegs.  As a result, RegisterAtOffsetList is sorted with GPRRegs first (from low to high) followed by FPRRegs (from low to high).

&gt;&gt; Source/JavaScriptCore/jit/AssemblyHelpers.cpp:1323
&gt;&gt; +    RegisterSet dontSaveRegisters = RegisterSet(RegisterSet::stackRegisters(), RegisterSet::allFPRs());
&gt; 
&gt; were you gonna rebaseline this? Let&apos;s not ignore fprs. And instead, assert in the loop below. That&apos;s less error prone in the future.

CodeBlock here is always a baseline codeBlock.  Hence, we&apos;re only visiting RegisterAtOffsetList::llintBaselineCalleeSaveRegisters(), which is guaranteed to not have any FPRs.  The rebased code will have a `RELEASE_ASSERT(entry.reg().isGPR())`.

&gt;&gt; Source/JavaScriptCore/jit/AssemblyHelpersSpoolers.h:46
&gt;&gt; +        ASSERT(entry.reg().isGPR());
&gt; 
&gt; nit: RELEASE_ASSERT

Changed.

&gt;&gt; Source/JavaScriptCore/jit/AssemblyHelpersSpoolers.h:69
&gt;&gt; +    void flushGPR()
&gt; 
&gt; name nit: I sorta feel like this should be called &quot;commit&quot; or something like that?

Renamed to finalizeGPR.

&gt;&gt; Source/JavaScriptCore/jit/AssemblyHelpersSpoolers.h:79
&gt;&gt; +    void handleFPR(const RegisterAtOffset&amp; entry)
&gt; 
&gt; the code for FPR and GPR are so similar. Can we share code somehow?
&gt; 
&gt; same in the flush functions

Refactored into a common template.

&gt;&gt; Source/JavaScriptCore/jit/AssemblyHelpersSpoolers.h:81
&gt;&gt; +        ASSERT(entry.reg().isFPR());
&gt; 
&gt; nit: RELEASE_ASSERT

Changed.

&gt;&gt; Source/JavaScriptCore/jit/AssemblyHelpersSpoolers.h:342
&gt;&gt; +    };
&gt; 
&gt; no semicolon

Fixed.

&gt;&gt; Source/JavaScriptCore/jit/AssemblyHelpersSpoolers.h:398
&gt;&gt; +                if constexpr (regTypeIsGPR) {
&gt; 
&gt; shouldn&apos;t this be like an assert?

I&apos;ll add a RELEASE_ASSERT_NOT_REACHED for the FPR case.

&gt;&gt; Source/JavaScriptCore/jit/AssemblyHelpersSpoolers.h:461
&gt;&gt; +    };
&gt; 
&gt; no semicolon

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771991</commentid>
    <comment_count>12</comment_count>
      <attachid>432068</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-06-23 10:35:38 -0700</bug_when>
    <thetext>Created attachment 432068
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1772482</commentid>
    <comment_count>13</comment_count>
      <attachid>432068</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-06-24 16:30:21 -0700</bug_when>
    <thetext>Comment on attachment 432068
proposed patch.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1772497</commentid>
    <comment_count>14</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-06-24 17:07:59 -0700</bug_when>
    <thetext>Thanks for the review.  Landed in r279256: &lt;http://trac.webkit.org/r279256&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431463</attachid>
            <date>2021-06-15 12:10:53 -0700</date>
            <delta_ts>2021-06-15 12:18:58 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-227039.patch</filename>
            <type>text/plain</type>
            <size>83714</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjc4ODg2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2OCBA
QAorMjAyMS0wNi0xNSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
VXNlIGxkcCBhbmQgc3RwIG1vcmUgZm9yIHNhdmluZyAvIHJlc3RvcmluZyByZWdpc3RlcnMgb24g
QVJNNjQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjcwMzkKKyAgICAgICAgcmRhcjovLzc5MzU0NzM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgc3Bvb2xlciBh
YnN0cmFjdGlvbiBpbiBBc3NlbWJseUhlbHBlcnMuICBUaGUgc3Bvb2xlcgorICAgICAgICBiYXNp
Y2FsbHkgYmF0Y2hlcyB1cCBsb2FkIC8gc3RvcmUgb3BlcmF0aW9ucyBhbmQgZW1pdCB0aGVtIGFz
IHBhaXIgaW5zdHJ1Y3Rpb25zCisgICAgICAgIGlmIGFwcHJvcHJpYXRlLgorCisgICAgICAgIFRo
ZXJlIGFyZSA0IHNwb29sZXIgY2xhc3NlczoKKyAgICAgICAgYS4gU3Bvb2xlcgorICAgICAgICAg
ICAtIHRlbXBsYXRlIGJhc2UgY2xhc3MgZm9yIExvYWRSZWdTcG9vbGVyIGFuZCBTdG9yZVJlZ1Nw
b29sZXIuCisgICAgICAgICAgIC0gZW5jYXBzdWxhdGVzIHRoZSBiYXRjaGluZyBzdHJhdGVneSBm
b3IgbG9hZCAvIHN0b3JlIHBhaXJzLgorCisgICAgICAgIGIuIExvYWRSZWdTcG9vbGVyIC0gc3Bl
Y2lhbGl6ZXMgU3Bvb2xlciB0byBoYW5kbGUgbG9hZCBwYWlycy4KKyAgICAgICAgYi4gU3RvcmVS
ZWdTcG9vbGVyIC0gc3BlY2lhbGl6ZXMgU3Bvb2xlciB0byBoYW5kbGUgc3RvcmUgcGFpcnMuCisK
KyAgICAgICAgZC4gQ29weVNwb29sZXIKKyAgICAgICAgICAgLSBoYW5kbGVzIG1hdGNoaW5nIGxv
YWRzIHdpdGggc3RvcmVzLgorICAgICAgICAgICAtIHRyaWVzIHRvIGVtaXQgbG9hZHMgYXMgbG9h
ZCBwYWlycyBpZiBwb3NzaWJsZS4KKyAgICAgICAgICAgLSB0cmllcyB0byBlbW90IHN0b3JlcyBh
cyBzdG9yZSBwYWlycyBpZiBwb3NzaWJsZS4KKyAgICAgICAgICAgLSBlbnN1cmVzIHRoYXQgcHJl
LXJlcXVpc2l0ZSBsb2FkcyBhcmUgZW1pdHRlZCBiZWZvcmUgc3RvcmVzIGFyZSBlbWl0dGVkLgor
ICAgICAgICAgICAtIG90aGVyIHRoYW4gbG9hZHMsIGFsc28gc3VwcG9ydCBjb25zdGFudHMgYW5k
IHJlZ2lzdGVycyBhcyBzb3VyY2VzIG9mIHZhbHVlcworICAgICAgICAgICAgIHRvIGJlIHN0b3Jl
ZC4gIFRoaXMgaXMgdXNlZnVsIGluIE9TUiBleGl0IHJhbXBzIHdoZXJlIHdlIG1heSBtYXRlcmlh
bGl6ZSBhCisgICAgICAgICAgICAgc3RhY2sgdmFsdWUgdG8gc3RvcmUgZnJvbSBjb25zdGFudHMg
b3IgcmVnaXN0ZXJzIGluIGFkZGl0aW9uIHRvIHZhbHVlcyB3ZQorICAgICAgICAgICAgIGxvYWQg
ZnJvbSB0aGUgb2xkIHN0YWNrIGZyYW1lIG9yIGZyb20gYSBzY3JhdGNoIGJ1ZmZlci4KKworICAg
ICAgICBJbiB0aGlzIHBhdGNoLCB3ZSBhbHNvIGRvIHRoZSBmb2xsb3dpbmc6CisKKyAgICAgICAg
MS4gVXNlIHNwb29sZXJzIGluIG1hbnkgcGxhY2VzIHNvIHRoYXQgd2UgY2FuIGVtaXQgbG9hZCAv
IHN0b3JlIHBhaXJzIGluc3RlYWQgb2YKKyAgICAgICAgICAgc2luZ2xlIGxvYWQgLyBzdG9yZXMu
ICBUaGlzIGhlbHBzIHNocmluayBKSVQgY29kZSBzaWRlLCBhbmQgYWxzbyBwb3RlbnRpYWxseQor
ICAgICAgICAgICBpbXByb3ZlcyBwZXJmb3JtYW5jZS4KKworICAgICAgICAyLiBJbiBERkc6Ok9T
UkV4aXQ6OmNvbXBpbGVFeGl0KCksIHdlIHVzZWQgdG8gcmVjb3ZlciBjb25zdGFudHMgaW50byBh
IHNjcmF0Y2gKKyAgICAgICAgICAgYnVmZmVyLCBhbmQgdGhlbiBsYXRlciwgbG9hZCBmcm9tIHRo
YXQgc2NyYXRjaCBidWZmZXIgdG8gc3RvcmUgaW50byB0aGUKKyAgICAgICAgICAgbmV3IHN0YWNr
IGZyYW1lKHMpLgorCisgICAgICAgICAgIFRoaXMgcGF0Y2ggY2hhbmdlcyBpdCBzbyB0aGF0IHdl
IGRlZmVyIGNvbnN0YW50IHJlY292ZXJ5IHVudGlsIHRoZSBmaW5hbAorICAgICAgICAgICBsb29w
IHdoZXJlIHdlIHN0b3JlIHRoZSByZWNvdmVyZWQgdmFsdWUgZGlyZWN0bHkgaW50byB0aGUgbmV3
IHN0YWNrIGZyYW1lKHMpLgorICAgICAgICAgICBUaGlzIHNhdmVzIHVzIHRoZSB3b3JrIChhbmQg
SklUIGNvZGUgc3BhY2UpIGZvciBzdG9yaW5nIGludG8gYSBzY3JhdGNoIGJ1ZmZlcgorICAgICAg
ICAgICBhbmQgdGhlbiByZWxvYWRpbmcgZnJvbSB0aGUgc2NyYXRjaCBidWZmZXIuCisKKyAgICAg
ICAgICAgVGhlcmUgaXMgb25lIGV4Y2VwdGlvbjogdG1wIHZhbHVlcyB1c2VkIGJ5IGFjdGl2ZSBj
aGVja3BvaW50cy4gIFdlIG5lZWQgdG8gY2FsbAorICAgICAgICAgICBvcGVyYXRpb25NYXRlcmlh
bGl6ZU9TUkV4aXRTaWRlU3RhdGUoKSB0byBtYXRlcmlhbGl6ZSB0aGUgYWN0aXZlIGNoZWNrcG9p
bnQKKyAgICAgICAgICAgc2lkZSBzdGF0ZSBiZWZvcmUgdGhlIGZpbmFsIGxvb3Agd2hlcmUgd2Ug
bm93IHJlY292ZXIgY29uc3RhbnRzLiAgSGVuY2UsIHdlCisgICAgICAgICAgIG5lZWQgdGhlc2Ug
dG1wIHZhbHVlcyByZWNvdmVyZWQgYmVmb3JlIGhhbmQuCisKKyAgICAgICAgICAgU28sIHdlIGNo
ZWNrIHVwZnJvbnQgaWYgd2UgaGF2ZSBhY3RpdmUgY2hlY2twb2ludCBzaWRlIHN0YXRlIHRvIG1h
dGVyaWFsaXplLgorICAgICAgICAgICBJZiBzbywgd2UnbGwgZWFnZXJseSByZWNvdmVyIHRoZSBj
b25zdGFudHMgZm9yIGluaXRpYWxpemluZyB0aG9zZSB0bXBzLgorCisgICAgICAgICAgIFdlIGFs
c28gdXNlIHRoZSBDb3B5U3Bvb2xlciBpbiB0aGUgZmluYWwgbG9vcCB0byBlbWl0IGxvYWQgLyBz
dG9yZSBwYWlycyBmb3IKKyAgICAgICAgICAgZmlsbGluZyBpbiB0aGUgbmV3IHN0YWNrIGZyYW1l
KHMpLgorCisgICAgICAgICAgIE9uZSBtb3JlIHRoaW5nOiBpdCB0dXJucyBvdXQgdGhhdCB0aGUg
dmFzdCBtYWpvcml0eSBvZiBjb25zdGFudHMgdG8gYmUgcmVjb3ZlcmVkCisgICAgICAgICAgIGlz
IHNpbXBseSB0aGUgdW5kZWZpbmVkIHZhbHVlLiAgU28sIGFzIGFuIG9wdGltaXphdGlvbiwgdGhl
IGZpbmFsIGxvb3Aga2VlcHMKKyAgICAgICAgICAgdGhlIHVuZGVmaW5lZCB2YWx1ZSBpbiBhIHJl
Z2lzdGVyLCBhbmQgaGFzIHRoZSBzcG9vbGVyIHN0b3JlIGRpcmVjdGx5IGZyb20KKyAgICAgICAg
ICAgdGhhdCByZWdpc3RlciB3aGVuIGFwcHJvcHJpYXRlLiAgVGhpcyBzYXZlcyBvbiBKSVQgY29k
ZSB0byByZXBlYXRlZGx5IG1hdGVyaWFsaXplCisgICAgICAgICAgIHRoZSB1bmRlZmluZWQgSlNW
YWx1ZSBjb25zdGFudC4KKworICAgICAgICAzLiBJbiByZWlmeUlubGluZWRDYWxsRnJhbWVzKCks
IHJlcGxhY2UgdGhlIHVzZSBvZiBHUFJJbmZvOjpub25BcmdHUFIwIHdpdGgKKyAgICAgICAgICAg
R1BSSW5mbzo6cmVnVDQuICBub25BcmdHUFJzIGFyZSBzb21ldGltZXMgbWFwIHRvIGNlcnRhaW4g
cmVnVFhzIG9uIGNlcnRhaW4gcG9ydHMuCisgICAgICAgICAgIFJlcGxhY2luZyB3aXRoIHJlZ1Q0
IG1ha2VzIGl0IGVhc2llciB0byBlbnN1cmUgdGhhdCB3ZSdyZSBub3QgdHJhc2hpbmcgdGhlCisg
ICAgICAgICAgIHJlZ2lzdGVyIHdoZW4gd2UgdXNlIG1vcmUgdGVtcCByZWdpc3RlcnMuCisKKyAg
ICAgICAgICAgcmVpZnlJbmxpbmVkQ2FsbEZyYW1lcygpIHdpbGwgYmUgdXNpbmcgZW1pdFNhdmVP
ckNvcHlMTEludEJhc2VsaW5lQ2FsbGVlU2F2ZXNGb3IoKQorICAgICAgICAgICBsYXRlciB3aGVy
ZSB3ZSBuZWVkIG1vcmUgdGVtcCByZWdpc3RlcnMuCisKKyAgICAgICAgNC4gTW92ZSB0aGUgZm9s
bG93aW5nIGZ1bmN0aW9ucyB0byBBc3NlbWJseUhlbHBlcnMuY3BwLiAgVGhleSBkb24ndCBuZWVk
IHRvIGJlCisgICAgICAgICAgIGlubGluZSBmdW5jdGlvbnMuICBTcGVlZG9tZXRlcjIgYW5kIEpl
dFN0cmVhbTIgc2hvd3MgdGhhdCBtYWtpbmcgdGhlc2Ugbm9uCisgICAgICAgICAgIGlubGluZSBk
b2VzIG5vdCBodXJ0IHBlcmZvcm1hbmNlOgorCisgICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxw
ZXJzOjplbWl0U2F2ZShjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCYpOworICAgICAgICAgICAg
ICAgIEFzc2VtYmx5SGVscGVyczo6ZW1pdFJlc3RvcmUoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExp
c3QmKTsKKyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OmVtaXRTYXZlQ2FsbGVlU2F2
ZXNGb3IoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QqKTsKKyAgICAgICAgICAgICAgICBBc3Nl
bWJseUhlbHBlcnM6OmVtaXRTYXZlT3JDb3B5Q2FsbGVlU2F2ZXNGb3IoLi4uKTsKKyAgICAgICAg
ICAgICAgICBBc3NlbWJseUhlbHBlcnM6OmVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXNGb3IoY29uc3Qg
UmVnaXN0ZXJBdE9mZnNldExpc3QqKTsKKyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6
OmNvcHlMTEludEJhc2VsaW5lQ2FsbGVlU2F2ZXNGcm9tRnJhbWVPclJlZ2lzdGVyVG9FbnRyeUZy
YW1lQ2FsbGVlU2F2ZXNCdWZmZXIoLi4uKTsKKworICAgICAgICAgICBBbHNvIHJlbmFtZWQgZW1p
dFNhdmVPckNvcHlDYWxsZWVTYXZlc0ZvcigpIHRvIGVtaXRTYXZlT3JDb3B5TExJbnRCYXNlbGlu
ZUNhbGxlZVNhdmVzRm9yKCkKKyAgICAgICAgICAgYmVjYXVzZSBpdCBpcyBvbmx5IHVzZWQgd2l0
aCBiYXNlbGluZSBjb2RlQmxvY2tzLgorCisgICAgICAgIFJlc3VsdHM6CisgICAgICAgIEN1bW11
bGF0aXZlIExpbmtCdWZmZXIgcHJvZmlsZSBzaXplcyBzaHJ1bmsgYnkgfjJNIGluIGFnZ3JlZ2F0
ZToKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UgICAgICAgICAgICAgICAgICAg
ICAgICAgICBuZXcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PT09ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPT09CisgICAgICAgICAgICAgICBCYXNlbGluZUpJVDogODM4MjcwNDgg
KDc5Ljk0MzcwMyBNQikgICAgID0+IDgzNzE4NzM2ICg3OS44NDA0MDggTUIpCisgICAgICAgICAg
ICAgICAgICAgICAgIERGRzogNTY1OTQ4MzYgKDUzLjk3MzA0MiBNQikgICAgID0+IDU2NjAzNTA4
ICg1My45ODEzMTIgTUIpCisgICAgICAgICAgICAgICBJbmxpbmVDYWNoZTogMzM5MjM5MDAgKDMy
LjM1MjM1MiBNQikgICAgID0+IDMzMTgzMTU2ICgzMS42NDU5MjQgTUIpCisgICAgICAgICAgICAg
ICAgICAgICAgIEZUTDogNjc3MDk1NiAoNi40NTcyODcgTUIpICAgICAgID0+IDY1Njg5NjQgKDYu
MjY0NjUyIE1CKQorICAgICAgICAgICAgICAgIERGR09TUkV4aXQ6IDUyMTIwOTYgKDQuOTcwNjQy
IE1CKSAgICAgICA9PiAzNzI4MDg4ICgzLjU1NTM4MiBNQikKKyAgICAgICAgICAgICAgICAgICAg
Q1NTSklUOiA3NDg0MjggKDczMC44ODY3MTkgS0IpICAgICAgPT4gNzQ4NDI4ICg3MzAuODg2NzE5
IEtCKQorICAgICAgICAgICAgICAgIEZUTE9TUkV4aXQ6IDY5MjI3NiAoNjc2LjA1MDc4MSBLQikg
ICAgICA9PiA2NTY4ODQgKDY0MS40ODgyODEgS0IpCisgICAgICAgICAgICAgICAgICAgWWFyckpJ
VDogNDQ1MjgwICg0MzQuODQzNzUwIEtCKSAgICAgID0+IDUxMjk4OCAoNTAwLjk2NDg0NCBLQikK
KyAgICAgICAgICAgICAgICAgIEZUTFRodW5rOiAyMjkwOCAoMjIuMzcxMDk0IEtCKSAgICAgICAg
PT4gMjI1NTYgKDIyLjAyNzM0NCBLQikKKyAgICAgICAgQm91bmRGdW5jdGlvblRodW5rOiA4NDAw
ICg4LjIwMzEyNSBLQikgICAgICAgICAgPT4gMTAwODggKDkuODUxNTYyIEtCKQorICAgICAgICAg
ICAgIEV4dHJhQ1RJVGh1bms6IDY5NTIgKDYuNzg5MDYyIEtCKSAgICAgICAgICA9PiA2ODI0ICg2
LjY2NDA2MiBLQikKKyAgICAgICAgICBTcGVjaWFsaXplZFRodW5rOiA0NTA4ICg0LjQwMjM0NCBL
QikgICAgICAgICAgPT4gNDUwOCAoNC40MDIzNDQgS0IpCisgICAgICAgICAgICAgICAgICAgICBU
aHVuazogMzkxMiAoMy44MjAzMTIgS0IpICAgICAgICAgID0+IDM3ODQgKDMuNjk1MzEyIEtCKQor
ICAgICAgICAgICAgICAgIExMSW50VGh1bms6IDI5MDggKDIuODM5ODQ0IEtCKSAgICAgICAgICA9
PiAyOTA4ICgyLjgzOTg0NCBLQikKKyAgICAgICAgICAgICAgVmlydHVhbFRodW5rOiAxMjQ4ICgx
LjIxODc1MCBLQikgICAgICAgICAgPT4gMTI0OCAoMS4yMTg3NTAgS0IpCisgICAgICAgICAgICAg
ICAgICBERkdUaHVuazogMTA4NCAoMS4wNTg1OTQgS0IpICAgICAgICAgID0+IDQ0NAorICAgICAg
ICAgICAgICAgREZHT1NSRW50cnk6IDIxNiAgICAgICAgICAgICAgICAgICAgICAgICA9PiAxODQK
KyAgICAgICAgICAgICAgICBKdW1wSXNsYW5kOiAwCisgICAgICAgICAgICAgICAgIFdhc21UaHVu
azogMAorICAgICAgICAgICAgICAgICAgICAgIFdhc206IDAKKyAgICAgICAgICAgICBVbmNhdGVn
b3JpemVkOiAwCisgICAgICAgICAgICAgICAgICAgICBUb3RhbDogMTg4MjY2OTU2ICgxNzkuNTQ1
MzYxIE1CKSAgID0+IDE4NTc3MzI5NiAoMTc3LjE2NzIyMSBNQikKKworICAgICAgICBTcGVlZG9t
ZXRlcjIgYW5kIEpldFN0cmVhbTIgcmVzdWx0cyBzaG93cyB0aGF0IHBlcmZvcm1hbmNlIGlzIG5l
dXRyYWwgZm9yIHRoaXMKKyAgICAgICAgcGF0Y2ggKGFzIG1lYXN1cmVkIG9uIGFuIE0xIE1hYyk6
CisKKyAgICAgICAgU3BlZWRvbWV0ZXIyOgorICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAg
ICAgIHwgICAgICAgICAgICAgICBzdWJ0ZXN0ICAgICAgICAgICAgICAgIHwgICAgIG1zICAgICAg
fCAgICAgbXMgICAgICB8ICBiIC8gYSAgIHwgcFZhbHVlIChzaWduaWZpY2FuY2UgdXNpbmcgRmFs
c2UgRGlzY292ZXJ5IFJhdGUpIHwKKyAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICB8
IEVsbS1Ub2RvTVZDICAgICAgICAgICAgICAgICAgICAgICAgICB8MTI5LjAzNzUwMCAgIHwxMjcu
MjEyNTAwICAgfDAuOTg1ODU3ICB8IDAuMDEyNzA2ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8CisgICAgICAgIHwgVnVlSlMtVG9kb01WQyAgICAgICAgICAgICAgICAg
ICAgICAgIHwyOC4zMTI1MDAgICAgfDI3LjUyNTAwMCAgICB8MC45NzIxODUgIHwgMC4yNDAzMTUg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBFbWJl
ckpTLVRvZG9NVkMgICAgICAgICAgICAgICAgICAgICAgfDEzMi41NTAwMDAgICB8MTMyLjAyNTAw
MCAgIHwwLjk5NjAzOSAgfCAwLjUzODAzNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfAorICAgICAgICB8IEZsaWdodC1Ub2RvTVZDICAgICAgICAgICAgICAgICAgICAg
ICB8ODAuNzYyNTAwICAgIHw4MC44NzUwMDAgICAgfDEuMDAxMzkzICB8IDAuOTE0NzQ5ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgQmFja2JvbmVK
Uy1Ub2RvTVZDICAgICAgICAgICAgICAgICAgIHw1MS42Mzc1MDAgICAgfDUxLjE3NTAwMCAgICB8
MC45OTEwNDMgIHwgMC4yODU0MjcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwKKyAgICAgICAgfCBQcmVhY3QtVG9kb01WQyAgICAgICAgICAgICAgICAgICAgICAgfDIx
LjAyNTAwMCAgICB8MjIuMDc1MDAwICAgIHwxLjA0OTk0MSAgfCAwLjIwNjE0MCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IEFuZ3VsYXJKUy1Ub2Rv
TVZDICAgICAgICAgICAgICAgICAgICB8MTQyLjkwMDAwMCAgIHwxNDIuODg3NTAwICAgfDAuOTk5
OTEzICB8IDAuOTkwNjgxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
CisgICAgICAgIHwgSW5mZXJuby1Ub2RvTVZDICAgICAgICAgICAgICAgICAgICAgIHw2OS4zMDAw
MDAgICAgfDY5Ljc3NTAwMCAgICB8MS4wMDY4NTQgIHwgMC41MDUyMDEgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBWYW5pbGxhLUVTMjAxNS1Ub2Rv
TVZDICAgICAgICAgICAgICAgfDcxLjUwMDAwMCAgICB8NzEuMjI1MDAwICAgIHwwLjk5NjE1NCAg
fCAwLjYwODY1MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAg
ICAgICB8IEFuZ3VsYXIyLVR5cGVTY3JpcHQtVG9kb01WQyAgICAgICAgICB8NDMuMjg3NTAwICAg
IHw0My4yNzUwMDAgICAgfDAuOTk5NzExICB8IDAuOTg3OTI2ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgVmFuaWxsYUpTLVRvZG9NVkMgICAgICAg
ICAgICAgICAgICAgIHw1Ny4yMTI1MDAgICAgfDU3LjgxMjUwMCAgICB8MS4wMTA0ODcgIHwgMC4z
MzMzNTcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAg
fCBqUXVlcnktVG9kb01WQyAgICAgICAgICAgICAgICAgICAgICAgfDI3Ni4xNTAwMDAgICB8Mjc2
Ljc3NTAwMCAgIHwxLjAwMjI2MyAgfCAwLjYxNDQwNCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfAorICAgICAgICB8IEVtYmVySlMtRGVidWctVG9kb01WQyAgICAgICAg
ICAgICAgICB8MzUzLjYxMjUwMCAgIHwzNTIuNzYyNTAwICAgfDAuOTk3NTk2ICB8IDAuNTE4ODM2
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgUmVh
Y3QtVG9kb01WQyAgICAgICAgICAgICAgICAgICAgICAgIHw5My42Mzc1MDAgICAgfDkyLjYzNzUw
MCAgICB8MC45ODkzMjEgIHwgMC4wMzYyNzcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwKKyAgICAgICAgfCBSZWFjdC1SZWR1eC1Ub2RvTVZDICAgICAgICAgICAgICAg
ICAgfDE1OC4yMzc1MDAgICB8MTU2LjU4NzUwMCAgIHwwLjk4OTU3MyAgfCAwLjA0MjE1NCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IFZhbmlsbGEt
RVMyMDE1LUJhYmVsLVdlYnBhY2stVG9kb01WQyB8NjguMDUwMDAwICAgIHw2OC4wODc1MDAgICAg
fDEuMDAwNTUxICB8IDAuODk3MTQ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8CisgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgICAgICBhIG1lYW4gPSAyMzYu
MjY5NTAKKyAgICAgICAgYiBtZWFuID0gMjM2LjU3OTY0CisgICAgICAgIHBWYWx1ZSA9IDAuNzgz
MDc4NTkzOAorICAgICAgICAoQmlnZ2VyIG1lYW5zIGFyZSBiZXR0ZXIuKQorICAgICAgICAxLjAw
MSB0aW1lcyBiZXR0ZXIKKyAgICAgICAgUmVzdWx0cyBBUkUgTk9UIHNpZ25pZmljYW50CisKKyAg
ICAgICAgSmV0U3RyZWFtMjoKKyAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICB8ICAgICAgICAgIHN1
YnRlc3QgICAgICAgICAgfCAgICAgcHRzICAgICAgfCAgICAgcHRzICAgICAgfCAgYiAvIGEgICB8
IHBWYWx1ZSAoc2lnbmlmaWNhbmNlIHVzaW5nIEZhbHNlIERpc2NvdmVyeSBSYXRlKSB8CisgICAg
ICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKyAgICAgICAgfCBnYXVzc2lhbi1ibHVyICAgICAgICAgICAgIHw1NDIuNTcw
MDU3ICAgIHw1NDIuNjcxODg1ICAgIHwxLjAwMDE4OCAgfCAwLjk4MjU3MyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IEhhc2hTZXQtd2FzbSAgICAg
ICAgICAgICAgfDU3LjcxMDQ5OCAgICAgfDY0LjQwNjM3MSAgICAgfDEuMTE2MDI1ICB8IDAuNDAx
NDI0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwg
Z2NjLWxvb3BzLXdhc20gICAgICAgICAgICB8NDQuNTE2MDA5ICAgICB8NDQuNDUzNTM1ICAgICB8
MC45OTg1OTcgIHwgMC45NzM2NTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwKKyAgICAgICAgfCBqc29uLXBhcnNlLWluc3BlY3RvciAgICAgIHwyNDEuMjc1MDg1ICAg
IHwyNDAuNzIwNDkxICAgIHwwLjk5NzcwMSAgfCAwLjcwNDczMiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IHByZXBhY2std3RiICAgICAgICAgICAg
ICAgfDYyLjY0MDExNCAgICAgfDYzLjc1NDg3OCAgICAgfDEuMDE3Nzk2ICB8IDAuMjA1ODQwICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgZGF0ZS1m
b3JtYXQteHBhcmItU1AgICAgICB8NDE2Ljk3NjgxNyAgICB8NDQ4LjkyMTQwOSAgICB8MS4wNzY2
MTAgIHwgMC4wNTI5NzcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwK
KyAgICAgICAgfCBXU0wgICAgICAgICAgICAgICAgICAgICAgIHwxLjU1NTI1NyAgICAgIHwxLjU3
MDIzMyAgICAgIHwxLjAwOTYyOSAgfCAwLjQyNzkyNCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfAorICAgICAgICB8IE9mZmxpbmVBc3NlbWJsZXIgICAgICAgICAgfDE3
Ny4wNTIzNTIgICAgfDE3OS43NDY1MTEgICAgfDEuMDE1MjE3ICB8IDAuMTEyMTE0ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgY2RqcyAgICAgICAg
ICAgICAgICAgICAgICB8MTkyLjUxNzU4NiAgICB8MTk0LjU5ODkwNiAgICB8MS4wMTA4MTEgIHwg
MC4wMjU4MDcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAg
ICAgfCBVbmlQb2tlciAgICAgICAgICAgICAgICAgIHw1MTQuMDIzNjk0ICAgIHw1MjYuMTExNTAw
ICAgIHwxLjAyMzUxNiAgfCAwLjI2OTg5MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfAorICAgICAgICB8IGpzb24tc3RyaW5naWZ5LWluc3BlY3RvciAgfDIyNy41ODQ3
MjUgICAgfDIyMy42MTkzOTAgICAgfDAuOTgyNTc2ICB8IDAuMTAyNzE0ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgY3J5cHRvLXNoYTEtU1AgICAg
ICAgICAgICB8OTgwLjcyODc4OCAgICB8OTg0LjE5MjEwNCAgICB8MS4wMDM1MzEgIHwgMC44Mzg2
MTggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBC
YXNpYyAgICAgICAgICAgICAgICAgICAgIHw2ODUuMTQ4NDgzICAgIHw3MTEuNTkwMjQ3ICAgIHwx
LjAzODU5MyAgfCAwLjE0Mjk1MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfAorICAgICAgICB8IGNoYWktd3RiICAgICAgICAgICAgICAgICAgfDEwNi4yNTYzNzYgICAg
fDEwNi41OTAzMTggICAgfDEuMDAzMTQzICB8IDAuODY1ODk0ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgY3J5cHRvLWFlcy1TUCAgICAgICAgICAg
ICB8NzIyLjMwODgyOSAgICB8NzI4LjcwMjMxMCAgICB8MS4wMDg4NTEgIHwgMC40ODY3NjYgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBCYWJ5bG9u
ICAgICAgICAgICAgICAgICAgIHw2NTUuODU3NTYxICAgIHw2NTQuMjA0OTAxICAgIHwwLjk5NzQ4
MCAgfCAwLjkzMTUyMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAor
ICAgICAgICB8IHN0cmluZy11bnBhY2stY29kZS1TUCAgICAgfDQwNy44MzcyNzEgICAgfDQwNS43
MTA3NTIgICAgfDAuOTk0Nzg2ICB8IDAuNzI5MTIyICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8CisgICAgICAgIHwgc3RhbmZvcmQtY3J5cHRvLWFlcyAgICAgICB8NDU2
LjkwNjAyMSAgICB8NDQ5Ljk5Mzg1NiAgICB8MC45ODQ4NzIgIHwgMC4yNzI5OTQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCByYXl0cmFjZSAgICAg
ICAgICAgICAgICAgIHw4ODMuOTExMzM1ICAgIHw5MDIuODg3MjM4ICAgIHwxLjAyMTQ2OCAgfCAw
LjE4OTc4NSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAg
ICB8IG11bHRpLWluc3BlY3Rvci1jb2RlLWxvYWQgfDQwOS45OTczNDcgICAgfDQwNS42NDM2Mzkg
ICAgfDAuOTg5MzgxICB8IDAuNjQ0NDQ3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8CisgICAgICAgIHwgaGFzaC1tYXAgICAgICAgICAgICAgICAgICB8NTkzLjU5MDE2
MCAgICB8NjAxLjU3NjMzMiAgICB8MS4wMTM0NTQgIHwgMC4yNDk0MTQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBzdGFuZm9yZC1jcnlwdG8tcGJr
ZGYyICAgIHw3MjIuMTc4NjM4ICAgIHw3MjguMjgzNTMyICAgIHwxLjAwODQ1MyAgfCAwLjY2MTE5
NSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IGNv
ZmZlZXNjcmlwdC13dGIgICAgICAgICAgfDQyLjM5MzU0NCAgICAgfDQxLjg2OTU0NSAgICAgfDAu
OTg3NjQwICB8IDAuMTk3NDQxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8CisgICAgICAgIHwgQm94MkQgICAgICAgICAgICAgICAgICAgICB8NDUyLjAzNDY4NSAgICB8
NDU0LjEwNDg2OCAgICB8MS4wMDQ1ODAgIHwgMC41MzUzNDIgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCByaWNoYXJkcy13YXNtICAgICAgICAgICAg
IHwxNDAuODczNjg4ICAgIHwxNDguMzk0MDUwICAgIHwxLjA1MzM4NCAgfCAwLjMwMzY1MSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IGxlYmFiLXd0
YiAgICAgICAgICAgICAgICAgfDYxLjY3MTMxOCAgICAgfDYyLjExOTQwMyAgICAgfDEuMDA3MjY2
ICB8IDAuNjIwOTk4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cisg
ICAgICAgIHwgdHNmLXdhc20gICAgICAgICAgICAgICAgICB8MTA4LjU5Mjc5NCAgICB8MTE5LjQ5
ODM5OCAgICB8MS4xMDA0MjcgIHwgMC41MDQ3MTAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwKKyAgICAgICAgfCBiYXNlNjQtU1AgICAgICAgICAgICAgICAgIHw2Mjku
NzQ0NjQzICAgIHw2MDMuNDI1NTY1ICAgIHwwLjk1ODIwNyAgfCAwLjA0OTk5NyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IG5hdmllci1zdG9rZXMg
ICAgICAgICAgICAgfDc0MC41ODg1MjMgICAgfDczOS45NTE2NjIgICAgfDAuOTk5MTQwICB8IDAu
ODcxNDQ1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAg
IHwganNoaW50LXd0YiAgICAgICAgICAgICAgICB8NTEuOTM4MzU5ICAgICB8NTIuNjUxMTA0ICAg
ICB8MS4wMTM3MjMgIHwgMC4yMTcxMzcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwKKyAgICAgICAgfCByZWdleC1kbmEtU1AgICAgICAgICAgICAgIHw0NTkuMjUxMTQ4
ICAgIHw0NjMuNDkyNDg5ICAgIHwxLjAwOTIzNSAgfCAwLjM3MTg5MSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IGFzeW5jLWZzICAgICAgICAgICAg
ICAgICAgfDIzNS44NTM4MjAgICAgfDIzNi4wMzExODkgICAgfDEuMDAwNzUyICB8IDAuOTM4NDU5
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgZmly
c3QtaW5zcGVjdG9yLWNvZGUtbG9hZCB8Mjc1LjI5ODMyNSAgICB8Mjc0LjE3MjEyNSAgICB8MC45
OTU5MDkgIHwgMC42MjM0MDMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwKKyAgICAgICAgfCBzZWdtZW50YXRpb24gICAgICAgICAgICAgIHw0NC4wMDI4NDIgICAgIHw0
My40NDU5NjAgICAgIHwwLjk4NzM0NCAgfCAwLjIwNzEzNCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IHR5cGVzY3JpcHQgICAgICAgICAgICAgICAg
fDI2LjM2MDE2MSAgICAgfDI2LjQ1ODgyMCAgICAgfDEuMDAzNzQzICB8IDAuNjA5OTQyICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgb2N0YW5lLWNv
ZGUtbG9hZCAgICAgICAgICB8MTEyNi43NDkwMzYgICB8MTA4Ny4xMzIwMjQgICB8MC45NjQ4NDAg
IHwgMC41MjQxNzEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAg
ICAgICAgfCBmbG9hdC1tbS5jICAgICAgICAgICAgICAgIHwxNi42OTE5MzUgICAgIHwxNi43MjEz
NTQgICAgIHwxLjAwMTc2MiAgfCAwLjE5NDQyNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfAorICAgICAgICB8IHF1aWNrc29ydC13YXNtICAgICAgICAgICAgfDQ2MS42
MzAwOTEgICAgfDQ1MC4xNjExMjcgICAgfDAuOTc1MTU2ICB8IDAuMzcxMzk0ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgQWlyICAgICAgICAgICAg
ICAgICAgICAgICB8MzkyLjQ0MjM3NSAgICB8NDEyLjIwMTgxMCAgICB8MS4wNTAzNTAgIHwgMC4w
NDY4ODcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAg
fCBzcGxheSAgICAgICAgICAgICAgICAgICAgIHw1MTAuMTExODg2ICAgIHw0NzUuMTMxNjU3ICAg
IHwwLjkzMTQyNiAgfCAwLjAyNDczMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfAorICAgICAgICB8IGFpLWFzdGFyICAgICAgICAgICAgICAgICAgfDYwNy45NjY5NzQg
ICAgfDYyNi41NzMxODEgICAgfDEuMDMwNjA0ICB8IDAuNDY4NzExICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgYWNvcm4td3RiICAgICAgICAgICAg
ICAgICB8NjcuNTEwNzY2ICAgICB8NjguMTQzOTU2ICAgICB8MS4wMDkzNzkgIHwgMC40ODE2NjMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBnYmVt
dSAgICAgICAgICAgICAgICAgICAgIHwxNDQuMTMzODQyICAgIHwxNDUuNjIwMzA0ICAgIHwxLjAx
MDMxMyAgfCAwLjgwMjE1NCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fAorICAgICAgICB8IHJpY2hhcmRzICAgICAgICAgICAgICAgICAgfDk2My40NzUwNzggICAgfDk0
Ni42NTg4NzkgICAgfDAuOTgyNTQ2ICB8IDAuMjMxMTg5ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgM2QtY3ViZS1TUCAgICAgICAgICAgICAgICB8
NTQ5LjQyNjc4NCAgICB8NTUwLjQ3OTE1NCAgICB8MS4wMDE5MTUgIHwgMC44MzEzMDcgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBlc3ByZWUtd3Ri
ICAgICAgICAgICAgICAgIHw2OC43MDc0ODMgICAgIHw3My43NjIyMDIgICAgIHwxLjA3MzU2OSAg
fCAwLjAzMzYwMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAg
ICAgICB8IGJvbWItd29ya2VycyAgICAgICAgICAgICAgfDk2Ljg4MjU5NiAgICAgfDk2LjExNjEy
MSAgICAgfDAuOTkyMDg5ICB8IDAuNjg3OTUyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8CisgICAgICAgIHwgdGFnY2xvdWQtU1AgICAgICAgICAgICAgICB8MzA5Ljg4
ODc2NyAgICB8MzAzLjUzODUxMSAgICB8MC45Nzk1MDggIHwgMC4xODc3NjggICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBtYW5kcmVlbCAgICAgICAg
ICAgICAgICAgIHwxMzMuNjY3MDMxICAgIHwxMzUuMDA5OTI5ICAgIHwxLjAxMDA0NyAgfCAwLjA3
NTIzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8
IDNkLXJheXRyYWNlLVNQICAgICAgICAgICAgfDQ5MS45Njc2NDkgICAgfDQ5Mi41Mjg5OTIgICAg
fDEuMDAxMTQxICB8IDAuOTU3ODQyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8CisgICAgICAgIHwgZGVsdGEtYmx1ZSAgICAgICAgICAgICAgICB8MTA2Ni43MTgzMTIg
ICB8MTA4MC4yMzA3NzIgICB8MS4wMTI2NjcgIHwgMC41NDkzODIgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBNTCAgICAgICAgICAgICAgICAgICAg
ICAgIHwxMzkuNjE3MjkzICAgIHwxNDAuMDg4NjMwICAgIHwxLjAwMzM3NiAgfCAwLjY2MTY1MSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IHJlZ2V4
cCAgICAgICAgICAgICAgICAgICAgfDM1MS43NzM5NTYgICAgfDM1MS4wNzU5MzUgICAgfDAuOTk4
MDE2ICB8IDAuNzY5MjUwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
CisgICAgICAgIHwgY3J5cHRvICAgICAgICAgICAgICAgICAgICB8MTUxMC40NzQ2NjMgICB8MTUx
OS4yMTg4NDIgICB8MS4wMDU3ODkgIHwgMC42Mzg0MjAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBjcnlwdG8tbWQ1LVNQICAgICAgICAgICAgIHw3
OTUuNDQ3ODk5ICAgIHw3NzQuMDgyNDkzICAgIHwwLjk3MzE0MCAgfCAwLjA3OTcyOCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IGVhcmxleS1ib3ll
ciAgICAgICAgICAgICAgfDgxMi41NzQ1NDUgICAgfDg3MC42NzgzNzIgICAgfDEuMDcxNTA2ICB8
IDAuMDQ0MDgxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAg
ICAgIHwgb2N0YW5lLXpsaWIgICAgICAgICAgICAgICB8MjUuMTYyNDcwICAgICB8MjUuNjYwMjYx
ICAgICB8MS4wMTk3ODMgIHwgMC41NTQ1OTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwKKyAgICAgICAgfCBkYXRlLWZvcm1hdC10b2Z0ZS1TUCAgICAgIHwzOTUuMjk2
MTM1ICAgIHwzOTguMDA4OTkyICAgIHwxLjAwNjg2MyAgfCAwLjY1MDQ3NSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IG4tYm9keS1TUCAgICAgICAg
ICAgICAgICAgfDExNjUuMzg2NjExICAgfDExNTAuNTI1MTEwICAgfDAuOTg3MjQ4ICB8IDAuMjI3
OTA4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwg
cGRmanMgICAgICAgICAgICAgICAgICAgICB8MTg5LjA2MDI1MiAgICB8MTkxLjAxNTYyOCAgICB8
MS4wMTAzNDMgIHwgMC42MzM3NzcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwKKyAgICAgICAgfCBGbGlnaHRQbGFubmVyICAgICAgICAgICAgIHw5MDguNDI2MTkyICAg
IHw5MDMuNjM2NjQyICAgIHwwLjk5NDcyOCAgfCAwLjgzODgyMSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IHVnbGlmeS1qcy13dGIgICAgICAgICAg
ICAgfDM0LjAyOTM5OSAgICAgfDM0LjE2NDM0MiAgICAgfDEuMDAzOTY1ICB8IDAuNjU1NjUyICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgYmFieWxv
bi13dGIgICAgICAgICAgICAgICB8ODEuMzI5ODY5ICAgICB8ODAuODU1NjgwICAgICB8MC45OTQx
NzAgIHwgMC44NTQzOTMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwK
KyAgICAgICAgfCBzdGFuZm9yZC1jcnlwdG8tc2hhMjU2ICAgIHw4MjYuODUwNTMzICAgIHw4Mzgu
NDk0MTY0ICAgIHwxLjAxNDA4MiAgfCAwLjU3OTYzNiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfAorICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAgICAgYSBtZWFuID0gMjM3
LjkxMDg0CisgICAgICAgIGIgbWVhbiA9IDIzOS45MjY3MAorICAgICAgICBwVmFsdWUgPSAwLjA2
NTc3MTA4OTcKKyAgICAgICAgKEJpZ2dlciBtZWFucyBhcmUgYmV0dGVyLikKKyAgICAgICAgMS4w
MDggdGltZXMgYmV0dGVyCisgICAgICAgIFJlc3VsdHMgQVJFIE5PVCBzaWduaWZpY2FudAorCisg
ICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIu
aDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OnB1c2hUb1NhdmVCeXRlT2Zmc2V0KToK
KyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpwdXNoVG9TYXZlQnl0ZU9mZnNldCk6CisgICAgICAgICog
ZGZnL0RGR09TUkV4aXQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXQ6OmNvbXBpbGVF
eGl0KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpyZWlmeUlubGluZWRDYWxsRnJhbWVzKToKKyAgICAgICAgKiBkZmcvREZH
VGh1bmtzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpvc3JFeGl0R2VuZXJhdGlvblRodW5rR2Vu
ZXJhdG9yKToKKyAgICAgICAgKiBmdGwvRlRMU2F2ZVJlc3RvcmUuY3BwOgorICAgICAgICAoSlND
OjpGVEw6OnNhdmVBbGxSZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpGVEw6OnJlc3RvcmVBbGxS
ZWdpc3RlcnMpOgorICAgICAgICAqIGZ0bC9GVExTYXZlUmVzdG9yZS5oOgorICAgICAgICAqIGZ0
bC9GVExUaHVua3MuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmdlbmVyaWNHZW5lcmF0aW9uVGh1
bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpGVEw6OnNsb3dQYXRoQ2FsbFRodW5rR2VuZXJh
dG9yKToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6
QXNzZW1ibHlIZWxwZXJzOjpyZXN0b3JlQ2FsbGVlU2F2ZXNGcm9tRW50cnlGcmFtZUNhbGxlZVNh
dmVzQnVmZmVyKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpjb3B5Q2FsbGVlU2F2
ZXNUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlckltcGwpOgorICAgICAgICAoSlNDOjpBc3Nl
bWJseUhlbHBlcnM6OmVtaXRTYXZlKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpl
bWl0UmVzdG9yZSk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdFNhdmVDYWxs
ZWVTYXZlc0Zvcik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdFJlc3RvcmVD
YWxsZWVTYXZlc0Zvcik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6Y29weUxMSW50
QmFzZWxpbmVDYWxsZWVTYXZlc0Zyb21GcmFtZU9yUmVnaXN0ZXJUb0VudHJ5RnJhbWVDYWxsZWVT
YXZlc0J1ZmZlcik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdFNhdmVPckNv
cHlMTEludEJhc2VsaW5lQ2FsbGVlU2F2ZXNGb3IpOgorICAgICAgICAqIGppdC9Bc3NlbWJseUhl
bHBlcnMuaDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpjb3B5TExJbnRCYXNlbGlu
ZUNhbGxlZVNhdmVzRnJvbUZyYW1lT3JSZWdpc3RlclRvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVm
ZmVyKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0U2F2ZSk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdFJlc3RvcmUpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRTYXZlT3JDb3B5Q2FsbGVlU2F2ZXNG
b3IpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9TY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuY3Bw
OgorICAgICAgICAoSlNDOjpTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OnByZXNlcnZlUmV1c2Vk
UmVnaXN0ZXJzQnlQdXNoaW5nKToKKyAgICAgICAgKEpTQzo6U2NyYXRjaFJlZ2lzdGVyQWxsb2Nh
dG9yOjpyZXN0b3JlUmV1c2VkUmVnaXN0ZXJzQnlQb3BwaW5nKToKKyAgICAgICAgKEpTQzo6U2Ny
YXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpwcmVzZXJ2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKToK
KyAgICAgICAgKEpTQzo6U2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpyZXN0b3JlUmVnaXN0ZXJz
RnJvbVN0YWNrRm9yQ2FsbCk6CisgICAgICAgICogaml0L1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRv
ci5oOgorICAgICAgICAqIHdhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpT
Qzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OmFkZFJldHVybik6CisgICAgICAgICogd2FzbS9XYXNt
QjNJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmFk
ZFJldHVybik6CisKIDIwMjEtMDYtMTUgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0Bn
bm9tZS5vcmc+CiAKICAgICAgICAgLVdhcnJheS1ib3VuZHMgd2FybmluZyBpbiBQYWNrZWQuaApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjc4ODg2KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC03NTcsNiArNzU3LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hF
QQogICAgIGludGVycHJldGVyL1ZNRW50cnlSZWNvcmQuaAogCiAgICAgaml0L0Fzc2VtYmx5SGVs
cGVycy5oCisgICAgaml0L0Fzc2VtYmx5SGVscGVyc1Nwb29sZXJzLmgKICAgICBqaXQvQ0NhbGxI
ZWxwZXJzLmgKICAgICBqaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5oCiAgICAgaml0L0ZQUkluZm8u
aApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI3ODg4NikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQ4LDYgKzExNDgsNyBAQAogCQk2NUI4MzkyRTFC
QUNBRDM2MDA0NEU4MjQgLyogQ2FjaGVkUmVjb3ZlcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1QjgzOTJDMUJBQ0E5MkEwMDQ0RTgyNCAvKiBDYWNo
ZWRSZWNvdmVyeS5oICovOyB9OwogCQk2QTM4Q0ZBQTFFMzJCNUFCMDA2MDIwNkYgLyogQXN5bmNT
dGFja1RyYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA2QTM4Q0ZBODFFMzJCNThCMDA2MDIwNkYgLyogQXN5bmNTdGFja1RyYWNlLmggKi87IH07CiAJ
CTZBRDJDQjREMTlCOTE0MDEwMDA2NTcxOSAvKiBEZWJ1Z2dlckV2YWxFbmFibGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QUQyQ0I0QzE5QjkxNDAx
MDAwNjU3MTkgLyogRGVidWdnZXJFdmFsRW5hYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTZCNzY3RTdCMjY3OTFGMjcwMDE3RjhEMSAvKiBB
c3NlbWJseUhlbHBlcnNTcG9vbGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNkI3NjdFN0EyNjc5MUYyNzAwMTdGOEQxIC8qIEFzc2VtYmx5SGVscGVy
c1Nwb29sZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNkJDQ0VDMDQyNUQxRkEyNzAwMEYzOTFEIC8qIFZlcmlmaWVyU2xvdFZpc2l0b3JJbmxp
bmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QkND
RUMwMzI1RDFGQTI3MDAwRjM5MUQgLyogVmVyaWZpZXJTbG90VmlzaXRvcklubGluZXMuaCAqLzsg
fTsKIAkJNzAxMTNENEMxQThEQjA5MzAwMzg0OEM0IC8qIEl0ZXJhdG9yT3BlcmF0aW9ucy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzAxMTNENEExQThE
QjA5MzAwMzg0OEM0IC8qIEl0ZXJhdG9yT3BlcmF0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcwMTNDQThDMUI0OTFBOTQwMENBRTYxMyAv
KiBKU01pY3JvdGFzay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzAxM0NBOEExQjQ5MUE5NDAwQ0FFNjEzIC8qIEpTTWljcm90YXNrLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM5OTcsNiArMzk5OCw3
IEBACiAJCTZBMzhDRkE4MUUzMkI1OEIwMDYwMjA2RiAvKiBBc3luY1N0YWNrVHJhY2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXN5bmNTdGFja1RyYWNlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZBRDJDQjRDMTlCOTE0MDEwMDA2NTcxOSAvKiBEZWJ1Z2dl
ckV2YWxFbmFibGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlYnVnZ2Vy
RXZhbEVuYWJsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkI3MzFDQzAyNjQ3
QTgzNzAwMTQ2NDZGIC8qIFNsb3dQYXRoQ2FsbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTbG93
UGF0aENhbGwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2Qjc2N0U3QTI2Nzkx
RjI3MDAxN0Y4RDEgLyogQXNzZW1ibHlIZWxwZXJzU3Bvb2xlcnMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQXNzZW1ibHlIZWxwZXJzU3Bvb2xlcnMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNkJBOTNDOTU5MDQ4NEM1QkFEOTMxNkVBIC8qIEpTU2NyaXB0RmV0
Y2hlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NjcmlwdEZldGNoZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkJDQ0VDMDMyNUQxRkEyNzAwMEYzOTFE
IC8qIFZlcmlmaWVyU2xvdFZpc2l0b3JJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFZlcmlmaWVyU2xvdFZpc2l0b3JJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTcwMTEzRDQ5MUE4REIwOTMwMDM4NDhDNCAvKiBJdGVyYXRvck9wZXJhdGlv
bnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSXRlcmF0b3JPcGVy
YXRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYxOTcsNiArNjE5OSw3
IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQkwRjI0RTUzQjE3RUE5RjU5MDBBQkIyMTcgLyogQXNz
ZW1ibHlIZWxwZXJzLmNwcCAqLywKIAkJCQkwRjI0RTUzQzE3RUE5RjU5MDBBQkIyMTcgLyogQXNz
ZW1ibHlIZWxwZXJzLmggKi8sCisJCQkJNkI3NjdFN0EyNjc5MUYyNzAwMTdGOEQxIC8qIEFzc2Vt
Ymx5SGVscGVyc1Nwb29sZXJzLmggKi8sCiAJCQkJNzIzOTk4RjYyNjVEQkNEQjAwNTc4NjdGIC8q
IEJhc2VsaW5lSklUUGxhbi5jcHAgKi8sCiAJCQkJNzIzOTk4RjUyNjVEQkNEQjAwNTc4NjdGIC8q
IEJhc2VsaW5lSklUUGxhbi5oICovLAogCQkJCTBGNjRCMjZGMUE3ODRCQUYwMDZFNEU2NiAvKiBC
aW5hcnlTd2l0Y2guY3BwICovLApAQCAtOTE1MSw2ICs5MTU0LDcgQEAKIAkJCQlGRTkxMkI1MTI1
MzExQUQxMDBGQUJEREYgLyogQWJzdHJhY3RTbG90VmlzaXRvcklubGluZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTUzNEUwMzRFMUU0RDRCMTYwMDIxM0Y2NCAvKiBBY2Nlc3NDYXNlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlFM0JGRDBCQzFEQUY4MDhFMDA2NURFQTIgLyogQWNjZXNzQ2FzZVNuaXBw
ZXRQYXJhbXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTZCNzY3RTdCMjY3OTFGMjcwMDE3RjhEMSAv
KiBBc3NlbWJseUhlbHBlcnNTcG9vbGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTM3MEI0RjYx
QkYyNjIwNTAwNUM0MEZDIC8qIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2lu
dEJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTkxNjhCRDg3MjQ0N0JBNEUwMDgwRkZCNCAvKiBB
Z2dyZWdhdGVFcnJvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTE4RTE1QzMyNDQ3QjIyNzAwNDQ3
QTU2IC8qIEFnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAko
cmV2aXNpb24gMjc4ODg2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMzcsNyArMzM3LDcgQEAgcHVibGljOgog
ICAgICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKHNpemVvZihkb3VibGUpKSwgc3RhY2tQb2ludGVy
UmVnaXN0ZXIpOwogICAgIH0KICAgICAKLSAgICBzdGF0aWMgcHRyZGlmZl90IHB1c2hUb1NhdmVC
eXRlT2Zmc2V0KCkgeyByZXR1cm4gc2l6ZW9mKHZvaWQqKTsgfQorICAgIHN0YXRpYyBjb25zdGV4
cHIgcHRyZGlmZl90IHB1c2hUb1NhdmVCeXRlT2Zmc2V0KCkgeyByZXR1cm4gc2l6ZW9mKHZvaWQq
KTsgfQogI2VuZGlmIC8vICFDUFUoQVJNNjQpCiAKICNpZiBDUFUoWDg2XzY0KSB8fCBDUFUoQVJN
NjQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
QVJNNjQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyQVJNNjQuaAkocmV2aXNpb24gMjc4ODg2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTI1MDQsNyArMjUwNCw3IEBAIHB1YmxpYzoKICAgICAgICAgc3RvcmVEb3VibGUoc3JjLCBzdGFj
a1BvaW50ZXJSZWdpc3Rlcik7CiAgICAgfQogCi0gICAgc3RhdGljIHB0cmRpZmZfdCBwdXNoVG9T
YXZlQnl0ZU9mZnNldCgpIHsgcmV0dXJuIDE2OyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBwdHJk
aWZmX3QgcHVzaFRvU2F2ZUJ5dGVPZmZzZXQoKSB7IHJldHVybiAxNjsgfQogCiAgICAgLy8gUmVn
aXN0ZXIgbW92ZSBvcGVyYXRpb25zOgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09TUkV4aXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT1NSRXhpdC5jcHAJKHJldmlzaW9uIDI3ODg4NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT1NSRXhpdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIAog
I2lmIEVOQUJMRShERkdfSklUKQogCi0jaW5jbHVkZSAiQXNzZW1ibHlIZWxwZXJzLmgiCisjaW5j
bHVkZSAiQXNzZW1ibHlIZWxwZXJzU3Bvb2xlcnMuaCIKICNpbmNsdWRlICJCeXRlY29kZVN0cnVj
dHMuaCIKICNpbmNsdWRlICJDaGVja3BvaW50T1NSRXhpdFNpZGVTdGF0ZS5oIgogI2luY2x1ZGUg
IkRGR0dyYXBoLmgiCkBAIC01NjIsMTMgKzU2MiwxOSBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVF
eGl0KENDYWxsSGVscGVycyYgCiAgICAgLy8gZG8gdGhpcyBldmVuIGZvciBzdGF0ZSB0aGF0J3Mg
YWxyZWFkeSBpbiB0aGUgcmlnaHQgcGxhY2Ugb24gdGhlIHN0YWNrLgogICAgIC8vIEl0IG1ha2Vz
IHRoaW5ncyBzaW1wbGVyIGxhdGVyLgogCisgICAgYm9vbCBpbmxpbmVTdGFja0NvbnRhaW5zQWN0
aXZlQ2hlY2twb2ludCA9IGV4aXQubV9jb2RlT3JpZ2luLmlubGluZVN0YWNrQ29udGFpbnNBY3Rp
dmVDaGVja3BvaW50KCk7CisgICAgc2l6ZV90IGZpcnN0VG1wVG9SZXN0b3JlRWFybHkgPSBvcGVy
YW5kcy5zaXplKCkgLSBvcGVyYW5kcy5udW1iZXJPZlRtcHMoKTsKKyAgICBpZiAoIWlubGluZVN0
YWNrQ29udGFpbnNBY3RpdmVDaGVja3BvaW50KQorICAgICAgICBmaXJzdFRtcFRvUmVzdG9yZUVh
cmx5ID0gb3BlcmFuZHMuc2l6ZSgpOyAvLyBEb24ndCBlYWdlcmx5IHJlc3RvcmUuCisKICAgICAv
LyBUaGUgdGFnIHJlZ2lzdGVycyBhcmUgbmVlZGVkIHRvIG1hdGVyaWFsaXplIHJlY292ZXJpZXMg
YmVsb3cuCiAgICAgaml0LmVtaXRNYXRlcmlhbGl6ZVRhZ0NoZWNrUmVnaXN0ZXJzKCk7CiAKICAg
ICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgb3BlcmFuZHMuc2l6ZSgpOyArK2luZGV4
KSB7CiAgICAgICAgIGNvbnN0IFZhbHVlUmVjb3ZlcnkmIHJlY292ZXJ5ID0gb3BlcmFuZHNbaW5k
ZXhdOwogCi0gICAgICAgIHN3aXRjaCAocmVjb3ZlcnkudGVjaG5pcXVlKCkpIHsKKyAgICAgICAg
YXV0byBjdXJyZW50VGVjaG5pcXVlID0gcmVjb3ZlcnkudGVjaG5pcXVlKCk7CisgICAgICAgIHN3
aXRjaCAoY3VycmVudFRlY2huaXF1ZSkgewogICAgICAgICBjYXNlIERpc3BsYWNlZEluSlNTdGFj
azoKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBjYXNlIENlbGxEaXNwbGFjZWRJbkpTU3Rh
Y2s6CkBAIC01OTQsOSArNjAwLDEyIEBAIHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxI
ZWxwZXJzJiAKIAogICAgICAgICBjYXNlIENvbnN0YW50OiB7CiAjaWYgVVNFKEpTVkFMVUU2NCkK
LSAgICAgICAgICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTY0KEpTVmFs
dWU6OmVuY29kZShyZWNvdmVyeS5jb25zdGFudCgpKSksIEdQUkluZm86OnJlZ1QwKTsKLSAgICAg
ICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBzY3JhdGNoICsgaW5kZXgpOwotI2Vs
c2UKKyAgICAgICAgICAgIGlmIChpbmRleCA+PSBmaXJzdFRtcFRvUmVzdG9yZUVhcmx5KSB7Cisg
ICAgICAgICAgICAgICAgQVNTRVJUKG9wZXJhbmRzLm9wZXJhbmRGb3JJbmRleChpbmRleCkuaXNU
bXAoKSk7CisgICAgICAgICAgICAgICAgaml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVk
SW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKHJlY292ZXJ5LmNvbnN0YW50KCkpKSwgR1BSSW5mbzo6cmVn
VDApOworICAgICAgICAgICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBzY3JhdGNo
ICsgaW5kZXgpOworICAgICAgICAgICAgfQorI2Vsc2UgLy8gbm90IFVTRShKU1ZBTFVFNjQpCiAg
ICAgICAgICAgICBqaXQuc3RvcmUzMigKICAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6
OlRydXN0ZWRJbW0zMihyZWNvdmVyeS5jb25zdGFudCgpLnRhZygpKSwKICAgICAgICAgICAgICAg
ICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgp
LT5hc0JpdHMudGFnKTsKQEAgLTc2Niw3ICs3NzUsNyBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVF
eGl0KENDYWxsSGVscGVycyYgCiAgICAgaWYgKGV4aXQuaXNFeGNlcHRpb25IYW5kbGVyKCkpCiAg
ICAgICAgIGppdC5jb3B5Q2FsbGVlU2F2ZXNUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcih2
bS50b3BFbnRyeUZyYW1lKTsKIAotICAgIGlmIChleGl0Lm1fY29kZU9yaWdpbi5pbmxpbmVTdGFj
a0NvbnRhaW5zQWN0aXZlQ2hlY2twb2ludCgpKSB7CisgICAgaWYgKGlubGluZVN0YWNrQ29udGFp
bnNBY3RpdmVDaGVja3BvaW50KSB7CiAgICAgICAgIEVuY29kZWRKU1ZhbHVlKiB0bXBTY3JhdGNo
ID0gc2NyYXRjaCArIG9wZXJhbmRzLnRtcEluZGV4KDApOwogICAgICAgICBqaXQuc2V0dXBBcmd1
bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uTWF0ZXJpYWxpemVPU1JFeGl0U2lkZVN0YXRlKT4oJnZt
LCAmZXhpdCwgdG1wU2NyYXRjaCk7CiAgICAgICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2
bSk7CkBAIC03NzYsNiArNzg1LDE2IEBAIHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxI
ZWxwZXJzJiAKIAogICAgIC8vIERvIGFsbCBkYXRhIGZvcm1hdCBjb252ZXJzaW9ucyBhbmQgc3Rv
cmUgdGhlIHJlc3VsdHMgaW50byB0aGUgc3RhY2suCiAKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAg
IGNvbnN0ZXhwciBHUFJSZWcgc3JjQnVmZmVyR1BSID0gR1BSSW5mbzo6cmVnVDI7CisgICAgY29u
c3RleHByIEdQUlJlZyBkZXN0QnVmZmVyR1BSID0gR1BSSW5mbzo6cmVnVDM7CisgICAgY29uc3Rl
eHByIEdQUlJlZyB1bmRlZmluZWRHUFIgPSBHUFJJbmZvOjpyZWdUNDsKKyAgICBib29sIHVuZGVm
aW5lZEdQUklzSW5pdGlhbGl6ZWQgPSBmYWxzZTsKKworICAgIGppdC5tb3ZlKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbVB0cihzY3JhdGNoKSwgc3JjQnVmZmVyR1BSKTsKKyAgICBqaXQubW92ZShD
Q2FsbEhlbHBlcnM6OmZyYW1lUG9pbnRlclJlZ2lzdGVyLCBkZXN0QnVmZmVyR1BSKTsKKyAgICBD
Q2FsbEhlbHBlcnM6OkNvcHlTcG9vbGVyIHNwb29sZXIoQ0NhbGxIZWxwZXJzOjpDb3B5U3Bvb2xl
cjo6QnVmZmVyUmVnczo6QWxsb3dNb2RpZmljYXRpb24sIGppdCwgc3JjQnVmZmVyR1BSLCBkZXN0
QnVmZmVyR1BSLCBHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDEpOworI2VuZGlmCiAgICAg
Zm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG9wZXJhbmRzLnNpemUoKTsgKytpbmRleCkg
ewogICAgICAgICBjb25zdCBWYWx1ZVJlY292ZXJ5JiByZWNvdmVyeSA9IG9wZXJhbmRzW2luZGV4
XTsKICAgICAgICAgT3BlcmFuZCBvcGVyYW5kID0gb3BlcmFuZHMub3BlcmFuZEZvckluZGV4KGlu
ZGV4KTsKQEAgLTc4Niw2ICs4MDUsMjMgQEAgdm9pZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2Fs
bEhlbHBlcnMmIAogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgc3dpdGNoIChyZWNv
dmVyeS50ZWNobmlxdWUoKSkgeworICAgICAgICBjYXNlIENvbnN0YW50OiB7CisjaWYgVVNFKEpT
VkFMVUU2NCkKKyAgICAgICAgICAgIEVuY29kZWRKU1ZhbHVlIGN1cnJlbnRDb25zdGFudCA9IEpT
VmFsdWU6OmVuY29kZShyZWNvdmVyeS5jb25zdGFudCgpKTsKKyAgICAgICAgICAgIGlmIChjdXJy
ZW50Q29uc3RhbnQgPT0gZW5jb2RlZEpTVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoIXVuZGVmaW5lZEdQUklzSW5pdGlhbGl6ZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgaml0
Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQoZW5jb2RlZEpTVW5kZWZpbmVkKCkpLCB1
bmRlZmluZWRHUFIpOworICAgICAgICAgICAgICAgICAgICB1bmRlZmluZWRHUFJJc0luaXRpYWxp
emVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgc3Bvb2xlci5j
b3B5R1BSKHVuZGVmaW5lZEdQUik7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAg
ICBzcG9vbGVyLm1vdmVDb25zdGFudChjdXJyZW50Q29uc3RhbnQpOworICAgICAgICAgICAgc3Bv
b2xlci5zdG9yZUdQUihvcGVyYW5kLnZpcnR1YWxSZWdpc3RlcigpLm9mZnNldCgpICogc2l6ZW9m
KENQVVJlZ2lzdGVyKSk7CisgICAgICAgICAgICBicmVhazsKKyNlbHNlCisgICAgICAgICAgICBG
QUxMVEhST1VHSDsKKyNlbmRpZgorICAgICAgICB9CiAgICAgICAgIGNhc2UgRGlzcGxhY2VkSW5K
U1N0YWNrOgogICAgICAgICBjYXNlIEJvb2xlYW5EaXNwbGFjZWRJbkpTU3RhY2s6CiAgICAgICAg
IGNhc2UgSW50MzJEaXNwbGFjZWRJbkpTU3RhY2s6CkBAIC03OTUsNyArODMxLDYgQEAgdm9pZCBP
U1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIAogICAgICAgICBjYXNlIFVuYm94ZWRJ
bnQzMkluR1BSOgogICAgICAgICBjYXNlIFVuYm94ZWRDZWxsSW5HUFI6CiAgICAgICAgIGNhc2Ug
VW5ib3hlZERvdWJsZUluRlBSOgotICAgICAgICBjYXNlIENvbnN0YW50OgogICAgICAgICBjYXNl
IEluRlBSOgogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIGNhc2UgSW5HUFI6CkBAIC04MDMs
OCArODM4LDggQEAgdm9pZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIAogICAg
ICAgICBjYXNlIEludDUyRGlzcGxhY2VkSW5KU1N0YWNrOgogICAgICAgICBjYXNlIFVuYm94ZWRT
dHJpY3RJbnQ1MkluR1BSOgogICAgICAgICBjYXNlIFN0cmljdEludDUyRGlzcGxhY2VkSW5KU1N0
YWNrOgotICAgICAgICAgICAgaml0LmxvYWQ2NChzY3JhdGNoICsgaW5kZXgsIEdQUkluZm86OnJl
Z1QwKTsKLSAgICAgICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBBc3NlbWJseUhl
bHBlcnM6OmFkZHJlc3NGb3Iob3BlcmFuZCkpOworICAgICAgICAgICAgc3Bvb2xlci5sb2FkR1BS
KGluZGV4ICogc2l6ZW9mKENQVVJlZ2lzdGVyKSk7CisgICAgICAgICAgICBzcG9vbGVyLnN0b3Jl
R1BSKG9wZXJhbmQudmlydHVhbFJlZ2lzdGVyKCkub2Zmc2V0KCkgKiBzaXplb2YoQ1BVUmVnaXN0
ZXIpKTsKICAgICAgICAgICAgIGJyZWFrOwogI2Vsc2UgLy8gbm90IFVTRShKU1ZBTFVFNjQpCiAg
ICAgICAgIGNhc2UgSW5QYWlyOgpAQCAtODMzLDYgKzg2OCw5IEBAIHZvaWQgT1NSRXhpdDo6Y29t
cGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiAKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgfQorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgc3Bvb2xlci5mbHVzaEdQUigpOworI2VuZGlm
CiAKICAgICAvLyBOb3cgdGhhdCB0aGluZ3Mgb24gdGhlIHN0YWNrIGFyZSByZWNvdmVyZWQsIGRv
IHRoZSBhcmd1bWVudHMgcmVjb3ZlcnkuIFdlIGFzc3VtZSB0aGF0IGFyZ3VtZW50cwogICAgIC8v
IHJlY292ZXJpZXMgZG9uJ3QgcmVjdXJzaXZlbHkgcmVmZXIgdG8gZWFjaCBvdGhlci4gQnV0LCB3
ZSBkb24ndCB0cnkgdG8gYXNzdW1lIHRoYXQgdGhleSBvbmx5CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCShy
ZXZpc2lvbiAyNzg4ODYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRD
b21waWxlckNvbW1vbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4NCw3ICsyODQsNyBAQCB2b2lk
IHJlaWZ5SW5saW5lZENhbGxGcmFtZXMoQ0NhbGxIZWxwZXJzCiAgICAgICAgICAgICBqaXQuYWRk
UHRyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKHNpemVvZihDYWxsZXJGcmFtZUFuZFBD
KSksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjpyZWdUMik7CiAgICAgICAg
ICAgICBqaXQudW50YWdQdHIoR1BSSW5mbzo6cmVnVDIsIEdQUkluZm86OnJlZ1QzKTsKICAgICAg
ICAgICAgIGppdC5hZGRQdHIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoaW5saW5lQ2Fs
bEZyYW1lLT5yZXR1cm5QQ09mZnNldCgpICsgc2l6ZW9mKHZvaWQqKSksIEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjpyZWdUMik7Ci0gICAgICAgICAgICBqaXQudmFsaWRhdGVV
bnRhZ2dlZFB0cihHUFJJbmZvOjpyZWdUMywgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgICAg
ICAgICBqaXQudmFsaWRhdGVVbnRhZ2dlZFB0cihHUFJJbmZvOjpyZWdUMywgR1BSSW5mbzo6cmVn
VDQpOwogICAgICAgICAgICAgaml0LnRhZ1B0cihHUFJJbmZvOjpyZWdUMiwgR1BSSW5mbzo6cmVn
VDMpOwogI2VuZGlmCiAgICAgICAgICAgICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6cmVnVDMsIEFz
c2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvckJ5dGVPZmZzZXQoaW5saW5lQ2FsbEZyYW1lLT5yZXR1
cm5QQ09mZnNldCgpKSk7CkBAIC0zMDUsOSArMzA1LDkgQEAgdm9pZCByZWlmeUlubGluZWRDYWxs
RnJhbWVzKENDYWxsSGVscGVycwogCiAjaWYgQ1BVKEFSTTY0RSkKICAgICAgICAgICAgIGppdC5h
ZGRQdHIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoaW5saW5lQ2FsbEZyYW1lLT5yZXR1
cm5QQ09mZnNldCgpICsgc2l6ZW9mKHZvaWQqKSksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
LCBHUFJJbmZvOjpyZWdUMik7Ci0gICAgICAgICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIoanVtcFRhcmdldC51bnRhZ2dlZEV4ZWN1dGFibGVBZGRyZXNzKCkpLCBH
UFJJbmZvOjpub25BcmdHUFIwKTsKLSAgICAgICAgICAgIGppdC50YWdQdHIoR1BSSW5mbzo6cmVn
VDIsIEdQUkluZm86Om5vbkFyZ0dQUjApOwotICAgICAgICAgICAgaml0LnN0b3JlUHRyKEdQUklu
Zm86Om5vbkFyZ0dQUjAsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvckJ5dGVPZmZzZXQoaW5s
aW5lQ2FsbEZyYW1lLT5yZXR1cm5QQ09mZnNldCgpKSk7CisgICAgICAgICAgICBqaXQubW92ZShB
c3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoanVtcFRhcmdldC51bnRhZ2dlZEV4ZWN1dGFi
bGVBZGRyZXNzKCkpLCBHUFJJbmZvOjpyZWdUNCk7CisgICAgICAgICAgICBqaXQudGFnUHRyKEdQ
UkluZm86OnJlZ1QyLCBHUFJJbmZvOjpyZWdUNCk7CisgICAgICAgICAgICBqaXQuc3RvcmVQdHIo
R1BSSW5mbzo6cmVnVDQsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvckJ5dGVPZmZzZXQoaW5s
aW5lQ2FsbEZyYW1lLT5yZXR1cm5QQ09mZnNldCgpKSk7CiAjZWxzZQogICAgICAgICAgICAgaml0
LnN0b3JlUHRyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cihqdW1wVGFyZ2V0LnVudGFn
Z2VkRXhlY3V0YWJsZUFkZHJlc3MoKSksIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvckJ5dGVP
ZmZzZXQoaW5saW5lQ2FsbEZyYW1lLT5yZXR1cm5QQ09mZnNldCgpKSk7CiAjZW5kaWYKQEAgLTMx
OCwxMSArMzE4LDExIEBAIHZvaWQgcmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyhDQ2FsbEhlbHBlcnMK
ICAgICAgICAgLy8gUmVzdG9yZSB0aGUgaW5saW5lIGNhbGwgZnJhbWUncyBjYWxsZWUgc2F2ZSBy
ZWdpc3RlcnMuCiAgICAgICAgIC8vIElmIHRoaXMgaW5saW5lZCBmcmFtZSBpcyBhIHRhaWwgY2Fs
bCB0aGF0IHdpbGwgcmV0dXJuIGJhY2sgdG8gdGhlIG9yaWdpbmFsIGNhbGxlciwgd2UgbmVlZCB0
bwogICAgICAgICAvLyBjb3B5IHRoZSBwcmlvciBjb250ZW50cyBvZiB0aGUgdGFnIHJlZ2lzdGVy
cyBhbHJlYWR5IHNhdmVkIGZvciB0aGUgb3V0ZXIgZnJhbWUgdG8gdGhpcyBmcmFtZS4KLSAgICAg
ICAgaml0LmVtaXRTYXZlT3JDb3B5Q2FsbGVlU2F2ZXNGb3IoCisgICAgICAgIGppdC5lbWl0U2F2
ZU9yQ29weUxMSW50QmFzZWxpbmVDYWxsZWVTYXZlc0ZvcigKICAgICAgICAgICAgIGJhc2VsaW5l
Q29kZUJsb2NrLAogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8VmlydHVhbFJlZ2lzdGVyPihpbmxp
bmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0KSwKICAgICAgICAgICAgIHRydWVDYWxsZXIgPyBBc3Nl
bWJseUhlbHBlcnM6OlVzZUV4aXN0aW5nVGFnUmVnaXN0ZXJDb250ZW50cyA6IEFzc2VtYmx5SGVs
cGVyczo6Q29weUJhc2VsaW5lQ2FsbGVlU2F2ZWRSZWdpc3RlcnNGcm9tQmFzZUZyYW1lLAotICAg
ICAgICAgICAgR1BSSW5mbzo6cmVnVDIpOworICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDIsIEdQ
UkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUNCk7CiAKICAgICAgICAgaWYgKGNhbGxlcklzTExJ
bnQpIHsKICAgICAgICAgICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2tGb3JDYWxsZXIg
PSBqaXQuYmFzZWxpbmVDb2RlQmxvY2tGb3IoKnRydWVDYWxsZXIpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmNwcAkocmV2aXNpb24gMjc4ODg2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2
ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoREZHX0pJVCkKIAorI2luY2x1ZGUgIkFzc2VtYmx5SGVs
cGVyc1Nwb29sZXJzLmgiCiAjaW5jbHVkZSAiQ0NhbGxIZWxwZXJzLmgiCiAjaW5jbHVkZSAiREZH
SklUQ29kZS5oIgogI2luY2x1ZGUgIkRGR09TUkV4aXQuaCIKQEAgLTQ5LDM0ICs1MCw3MyBAQCBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IG9zCiAgICAgc2l6ZV90IHNjcmF0
Y2hTaXplID0gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAqIChHUFJJbmZvOjpudW1iZXJPZlJlZ2lz
dGVycyArIEZQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzKTsKICAgICBTY3JhdGNoQnVmZmVyKiBz
Y3JhdGNoQnVmZmVyID0gdm0uc2NyYXRjaEJ1ZmZlckZvclNpemUoc2NyYXRjaFNpemUpOwogICAg
IEVuY29kZWRKU1ZhbHVlKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxFbmNvZGVkSlNWYWx1ZSo+KHNj
cmF0Y2hCdWZmZXItPmRhdGFCdWZmZXIoKSk7Ci0gICAgCi0gICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyArK2kpIHsKKworI2lmIENQVShBUk02
NCkKKyAgICBjb25zdGV4cHIgR1BSUmVnIGJ1ZmZlckdQUiA9IENDYWxsSGVscGVyczo6bWVtb3J5
VGVtcFJlZ2lzdGVyOworICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBmaXJzdEdQUiA9IDA7CisjZWxp
ZiBDUFUoWDg2XzY0KQorICAgIEdQUlJlZyBidWZmZXJHUFIgPSBqaXQuc2NyYXRjaFJlZ2lzdGVy
KCk7CisgICAgY29uc3RleHByIHVuc2lnbmVkIGZpcnN0R1BSID0gMDsKKyNlbHNlCisgICAgR1BS
UmVnIGJ1ZmZlckdQUiA9IEdQUkluZm86OnRvUmVnaXN0ZXIoMCk7CisgICAgY29uc3RleHByIHVu
c2lnbmVkIGZpcnN0R1BSID0gMTsKKyNlbmRpZgorCisgICAgaWYgY29uc3RleHByIChmaXJzdEdQ
UikgeworICAgICAgICAvLyBXZSdyZSB1c2luZyB0aGUgZmlyc3RHUFIgYXMgdGhlIGJ1ZmZlckdQ
UiwgYW5kIG5lZWQgdG8gc2F2ZSBpdCBtYW51YWxseS4KKyAgICAgICAgUkVMRUFTRV9BU1NFUlQo
R1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgPj0gMSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGJ1ZmZlckdQUiA9PSBHUFJJbmZvOjp0b1JlZ2lzdGVyKDApKTsKICNpZiBVU0UoSlNWQUxVRTY0
KQotICAgICAgICBqaXQuc3RvcmU2NChHUFJJbmZvOjp0b1JlZ2lzdGVyKGkpLCBidWZmZXIgKyBp
KTsKKyAgICAgICAgaml0LnN0b3JlNjQoYnVmZmVyR1BSLCBidWZmZXIpOwogI2Vsc2UKLSAgICAg
ICAgaml0LnN0b3JlMzIoR1BSSW5mbzo6dG9SZWdpc3RlcihpKSwgYnVmZmVyICsgaSk7CisgICAg
ICAgIGppdC5zdG9yZTMyKGJ1ZmZlckdQUiwgYnVmZmVyKTsKICNlbmRpZgogICAgIH0KKworICAg
IGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihidWZmZXIpLCBidWZmZXJHUFIp
OworCisgICAgQ0NhbGxIZWxwZXJzOjpTdG9yZVJlZ1Nwb29sZXIgc3RvcmVTcG9vbGVyKGppdCwg
YnVmZmVyR1BSKTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IGZpcnN0R1BSOyBpIDwgR1BSSW5m
bzo6bnVtYmVyT2ZSZWdpc3RlcnM7ICsraSkgeworICAgICAgICBwdHJkaWZmX3Qgb2Zmc2V0ID0g
aSAqIHNpemVvZihDUFVSZWdpc3Rlcik7CisgICAgICAgIHN0b3JlU3Bvb2xlci5zdG9yZUdQUih7
IEdQUkluZm86OnRvUmVnaXN0ZXIoaSksIG9mZnNldCB9KTsKKyAgICB9CisgICAgc3RvcmVTcG9v
bGVyLmZsdXNoR1BSKCk7CisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgRlBSSW5mbzo6
bnVtYmVyT2ZSZWdpc3RlcnM7ICsraSkgewotICAgICAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbVB0cihidWZmZXIgKyBHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyArIGkp
LCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgIGppdC5zdG9yZURvdWJsZShGUFJJbmZvOjp0b1Jl
Z2lzdGVyKGkpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCkpOworICAg
ICAgICBwdHJkaWZmX3Qgb2Zmc2V0ID0gKEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzICsgaSkg
KiBzaXplb2YoZG91YmxlKTsKKyAgICAgICAgc3RvcmVTcG9vbGVyLnN0b3JlRlBSKHsgRlBSSW5m
bzo6dG9SZWdpc3RlcihpKSwgb2Zmc2V0IH0pOwogICAgIH0KLSAgICAKKyAgICBzdG9yZVNwb29s
ZXIuZmx1c2hGUFIoKTsKKwogICAgIC8vIFNldCB1cCBvbmUgYXJndW1lbnQuCiAgICAgaml0Lm1v
dmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAg
ICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKIAogICAgIE1hY3JvQXNzZW1ibGVyOjpD
YWxsIGZ1bmN0aW9uQ2FsbCA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7CiAKKyAgICBqaXQu
bW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoYnVmZmVyKSwgYnVmZmVyR1BSKTsKKyAg
ICBDQ2FsbEhlbHBlcnM6OkxvYWRSZWdTcG9vbGVyIGxvYWRsU3Bvb2xlcihqaXQsIGJ1ZmZlckdQ
Uik7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBmaXJzdEdQUjsgaSA8IEdQUkluZm86Om51bWJl
ck9mUmVnaXN0ZXJzOyArK2kpIHsKKyAgICAgICAgcHRyZGlmZl90IG9mZnNldCA9IGkgKiBzaXpl
b2YoQ1BVUmVnaXN0ZXIpOworICAgICAgICBsb2FkbFNwb29sZXIubG9hZEdQUih7IEdQUkluZm86
OnRvUmVnaXN0ZXIoaSksIG9mZnNldCB9KTsKKyAgICB9CisgICAgbG9hZGxTcG9vbGVyLmZsdXNo
R1BSKCk7CisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgRlBSSW5mbzo6bnVtYmVyT2ZS
ZWdpc3RlcnM7ICsraSkgewotICAgICAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbVB0cihidWZmZXIgKyBHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyArIGkpLCBHUFJJbmZv
OjpyZWdUMCk7Ci0gICAgICAgIGppdC5sb2FkRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KEdQUkluZm86OnJlZ1QwKSwgRlBSSW5mbzo6dG9SZWdpc3RlcihpKSk7CisgICAgICAgIHB0cmRp
ZmZfdCBvZmZzZXQgPSAoR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgKyBpKSAqIHNpemVvZihk
b3VibGUpOworICAgICAgICBsb2FkbFNwb29sZXIubG9hZEZQUih7IEZQUkluZm86OnRvUmVnaXN0
ZXIoaSksIG9mZnNldCB9KTsKICAgICB9Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEdQ
UkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyArK2kpIHsKKyAgICBsb2FkbFNwb29sZXIuZmx1c2hG
UFIoKTsKKworICAgIGlmIGNvbnN0ZXhwciAoZmlyc3RHUFIpIHsKKyAgICAgICAgLy8gV2UncmUg
dXNpbmcgdGhlIGZpcnN0R1BSIGFzIHRoZSBidWZmZXJHUFIsIGFuZCBuZWVkIHRvIHJlc3RvcmUg
aXQgbWFudWFsbHkuCisgICAgICAgIEFTU0VSVChidWZmZXJHUFIgPT0gR1BSSW5mbzo6dG9SZWdp
c3RlcigwKSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgaml0LmxvYWQ2NChidWZmZXIg
KyBpLCBHUFJJbmZvOjp0b1JlZ2lzdGVyKGkpKTsKKyAgICAgICAgaml0LmxvYWQ2NChidWZmZXIs
IGJ1ZmZlckdQUik7CiAjZWxzZQotICAgICAgICBqaXQubG9hZDMyKGJ1ZmZlciArIGksIEdQUklu
Zm86OnRvUmVnaXN0ZXIoaSkpOworICAgICAgICBqaXQubG9hZDMyKGJ1ZmZlciwgYnVmZmVyR1BS
KTsKICNlbmRpZgogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExT
YXZlUmVzdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExTYXZlUmVzdG9yZS5jcHAJKHJldmlzaW9uIDI3ODg4NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMU2F2ZVJlc3RvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDkgKzI4
LDEwIEBACiAKICNpZiBFTkFCTEUoRlRMX0pJVCkKIAorI2luY2x1ZGUgIkFzc2VtYmx5SGVscGVy
c1Nwb29sZXJzLmgiCiAjaW5jbHVkZSAiRlBSSW5mby5oIgogI2luY2x1ZGUgIkdQUkluZm8uaCIK
LSNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgorI2luY2x1ZGUgIlJlZy5oIgogI2luY2x1ZGUg
IlJlZ2lzdGVyU2V0LmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKQEAgLTc3
LDcwICs3OCwxMDQgQEAgc3RydWN0IFJlZ3MgewogICAgIHsKICAgICAgICAgc3BlY2lhbCA9IFJl
Z2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpOwogICAgICAgICBzcGVjaWFsLm1lcmdlKFJlZ2lz
dGVyU2V0OjpyZXNlcnZlZEhhcmR3YXJlUmVnaXN0ZXJzKCkpOwotICAgICAgICAKKwogICAgICAg
ICBmaXJzdCA9IE1hY3JvQXNzZW1ibGVyOjpmaXJzdFJlZ2lzdGVyKCk7CiAgICAgICAgIHdoaWxl
IChzcGVjaWFsLmdldChmaXJzdCkpCiAgICAgICAgICAgICBmaXJzdCA9IE1hY3JvQXNzZW1ibGVy
OjpuZXh0UmVnaXN0ZXIoZmlyc3QpOwotICAgICAgICBzZWNvbmQgPSBNYWNyb0Fzc2VtYmxlcjo6
bmV4dFJlZ2lzdGVyKGZpcnN0KTsKLSAgICAgICAgd2hpbGUgKHNwZWNpYWwuZ2V0KHNlY29uZCkp
Ci0gICAgICAgICAgICBzZWNvbmQgPSBNYWNyb0Fzc2VtYmxlcjo6bmV4dFJlZ2lzdGVyKHNlY29u
ZCk7CiAgICAgfQotICAgIAorCisgICAgR1BSUmVnIG5leHRSZWdpc3RlcihHUFJSZWcgY3VycmVu
dCkKKyAgICB7CisgICAgICAgIGF1dG8gbmV4dCA9IE1hY3JvQXNzZW1ibGVyOjpuZXh0UmVnaXN0
ZXIoY3VycmVudCk7CisgICAgICAgIHdoaWxlIChzcGVjaWFsLmdldChuZXh0KSkKKyAgICAgICAg
ICAgIG5leHQgPSBNYWNyb0Fzc2VtYmxlcjo6bmV4dFJlZ2lzdGVyKG5leHQpOworICAgICAgICBy
ZXR1cm4gbmV4dDsKKyAgICB9CisKKyAgICBGUFJSZWcgbmV4dEZQUmVnaXN0ZXIoRlBSUmVnIGN1
cnJlbnQpCisgICAgeworICAgICAgICBhdXRvIG5leHQgPSBNYWNyb0Fzc2VtYmxlcjo6bmV4dEZQ
UmVnaXN0ZXIoY3VycmVudCk7CisgICAgICAgIHdoaWxlIChzcGVjaWFsLmdldChuZXh0KSkKKyAg
ICAgICAgICAgIG5leHQgPSBNYWNyb0Fzc2VtYmxlcjo6bmV4dEZQUmVnaXN0ZXIobmV4dCk7Cisg
ICAgICAgIHJldHVybiBuZXh0OworICAgIH0KKwogICAgIFJlZ2lzdGVyU2V0IHNwZWNpYWw7CiAg
ICAgR1BSUmVnIGZpcnN0OwotICAgIEdQUlJlZyBzZWNvbmQ7CiB9OwogCiB9IC8vIGFub255bW91
cyBuYW1lc3BhY2UKIAotdm9pZCBzYXZlQWxsUmVnaXN0ZXJzKE1hY3JvQXNzZW1ibGVyJiBqaXQs
IGNoYXIqIHNjcmF0Y2hNZW1vcnkpCit2b2lkIHNhdmVBbGxSZWdpc3RlcnMoQXNzZW1ibHlIZWxw
ZXJzJiBqaXQsIGNoYXIqIHNjcmF0Y2hNZW1vcnkpCiB7CiAgICAgUmVncyByZWdzOwogICAgIAog
ICAgIC8vIEdldCB0aGUgZmlyc3QgcmVnaXN0ZXIgb3V0IG9mIHRoZSB3YXksIHNvIHRoYXQgd2Ug
Y2FuIHVzZSBpdCBhcyBhIHBvaW50ZXIuCi0gICAgaml0LnBva2U2NChyZWdzLmZpcnN0LCAwKTsK
LSAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihzY3JhdGNoTWVtb3J5
KSwgcmVncy5maXJzdCk7Ci0gICAgCisgICAgR1BSUmVnIGJhc2VHUFIgPSByZWdzLmZpcnN0Owor
I2lmIENQVShBUk02NCkKKyAgICBHUFJSZWcgbmV4dEdQUiA9IHJlZ3MubmV4dFJlZ2lzdGVyKGJh
c2VHUFIpOworICAgIEdQUlJlZyBmaXJzdFRvU2F2ZUdQUiA9IHJlZ3MubmV4dFJlZ2lzdGVyKG5l
eHRHUFIpOworICAgIEFTU0VSVChiYXNlR1BSID09IEFSTTY0UmVnaXN0ZXJzOjp4MCk7CisgICAg
QVNTRVJUKG5leHRHUFIgPT0gQVJNNjRSZWdpc3RlcnM6OngxKTsKKyNlbHNlCisgICAgR1BSUmVn
IGZpcnN0VG9TYXZlR1BSID0gcmVncy5uZXh0UmVnaXN0ZXIoYmFzZUdQUik7CisjZW5kaWYKKyAg
ICBqaXQucG9rZTY0KGJhc2VHUFIsIDApOworICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tUHRyKHNjcmF0Y2hNZW1vcnkpLCBiYXNlR1BSKTsKKworICAgIEFzc2VtYmx5SGVs
cGVyczo6U3RvcmVSZWdTcG9vbGVyIHNwb29sZXIoaml0LCBiYXNlR1BSKTsKKwogICAgIC8vIEdl
dCBhbGwgb2YgdGhlIG90aGVyIEdQUnMgb3V0IG9mIHRoZSB3YXkuCi0gICAgZm9yIChNYWNyb0Fz
c2VtYmxlcjo6UmVnaXN0ZXJJRCByZWcgPSByZWdzLnNlY29uZDsgcmVnIDw9IE1hY3JvQXNzZW1i
bGVyOjpsYXN0UmVnaXN0ZXIoKTsgcmVnID0gTWFjcm9Bc3NlbWJsZXI6Om5leHRSZWdpc3Rlcihy
ZWcpKSB7Ci0gICAgICAgIGlmIChyZWdzLnNwZWNpYWwuZ2V0KHJlZykpCi0gICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgaml0LnN0b3JlNjQocmVnLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhyZWdzLmZpcnN0LCBvZmZzZXRPZkdQUihyZWcpKSk7Ci0gICAgfQorICAgIGZvciAoR1BSUmVn
IHJlZyA9IGZpcnN0VG9TYXZlR1BSOyByZWcgPD0gTWFjcm9Bc3NlbWJsZXI6Omxhc3RSZWdpc3Rl
cigpOyByZWcgPSByZWdzLm5leHRSZWdpc3RlcihyZWcpKQorICAgICAgICBzcG9vbGVyLnN0b3Jl
R1BSKHsgcmVnLCBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KG9mZnNldE9mR1BSKHJlZykpIH0pOwor
ICAgIHNwb29sZXIuZmx1c2hHUFIoKTsKICAgICAKICAgICAvLyBSZXN0b3JlIHRoZSBmaXJzdCBy
ZWdpc3RlciBpbnRvIHRoZSBzZWNvbmQgb25lIGFuZCBzYXZlIGl0LgotICAgIGppdC5wZWVrNjQo
cmVncy5zZWNvbmQsIDApOwotICAgIGppdC5zdG9yZTY0KHJlZ3Muc2Vjb25kLCBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhyZWdzLmZpcnN0LCBvZmZzZXRPZkdQUihyZWdzLmZpcnN0KSkpOworICAg
IGppdC5wZWVrNjQoZmlyc3RUb1NhdmVHUFIsIDApOworI2lmIENQVShBUk02NCkKKyAgICBqaXQu
c3RvcmVQYWlyNjQoZmlyc3RUb1NhdmVHUFIsIG5leHRHUFIsIGJhc2VHUFIsIEFzc2VtYmx5SGVs
cGVyczo6VHJ1c3RlZEltbTMyKG9mZnNldE9mR1BSKGJhc2VHUFIpKSk7CisjZWxzZQorICAgIGpp
dC5zdG9yZTY0KGZpcnN0VG9TYXZlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BS
LCBvZmZzZXRPZkdQUihiYXNlR1BSKSkpOworI2VuZGlmCiAgICAgCiAgICAgLy8gRmluYWxseSBz
YXZlIGFsbCBGUFIncy4KLSAgICBmb3IgKE1hY3JvQXNzZW1ibGVyOjpGUFJlZ2lzdGVySUQgcmVn
ID0gTWFjcm9Bc3NlbWJsZXI6OmZpcnN0RlBSZWdpc3RlcigpOyByZWcgPD0gTWFjcm9Bc3NlbWJs
ZXI6Omxhc3RGUFJlZ2lzdGVyKCk7IHJlZyA9IE1hY3JvQXNzZW1ibGVyOjpuZXh0RlBSZWdpc3Rl
cihyZWcpKSB7Ci0gICAgICAgIGlmIChyZWdzLnNwZWNpYWwuZ2V0KHJlZykpCi0gICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgaml0LnN0b3JlRG91YmxlKHJlZywgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MocmVncy5maXJzdCwgb2Zmc2V0T2ZGUFIocmVnKSkpOwotICAgIH0KKyAgICBmb3Ig
KE1hY3JvQXNzZW1ibGVyOjpGUFJlZ2lzdGVySUQgcmVnID0gTWFjcm9Bc3NlbWJsZXI6OmZpcnN0
RlBSZWdpc3RlcigpOyByZWcgPD0gTWFjcm9Bc3NlbWJsZXI6Omxhc3RGUFJlZ2lzdGVyKCk7IHJl
ZyA9IHJlZ3MubmV4dEZQUmVnaXN0ZXIocmVnKSkKKyAgICAgICAgc3Bvb2xlci5zdG9yZUZQUih7
IHJlZywgc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihvZmZzZXRPZkZQUihyZWcpKSB9KTsKKyAgICBz
cG9vbGVyLmZsdXNoRlBSKCk7CiB9CiAKLXZvaWQgcmVzdG9yZUFsbFJlZ2lzdGVycyhNYWNyb0Fz
c2VtYmxlciYgaml0LCBjaGFyKiBzY3JhdGNoTWVtb3J5KQordm9pZCByZXN0b3JlQWxsUmVnaXN0
ZXJzKEFzc2VtYmx5SGVscGVycyYgaml0LCBjaGFyKiBzY3JhdGNoTWVtb3J5KQogewogICAgIFJl
Z3MgcmVnczsKICAgICAKICAgICAvLyBHaXZlIG91cnNlbHZlcyBhIHBvaW50ZXIgdG8gdGhlIHNj
cmF0Y2ggbWVtb3J5LgotICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
KHNjcmF0Y2hNZW1vcnkpLCByZWdzLmZpcnN0KTsKKyAgICBHUFJSZWcgYmFzZUdQUiA9IHJlZ3Mu
Zmlyc3Q7CisgICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoc2NyYXRj
aE1lbW9yeSksIGJhc2VHUFIpOwogICAgIAorICAgIEFzc2VtYmx5SGVscGVyczo6TG9hZFJlZ1Nw
b29sZXIgc3Bvb2xlcihqaXQsIGJhc2VHUFIpOworCiAgICAgLy8gUmVzdG9yZSBhbGwgRlBSJ3Mu
Ci0gICAgZm9yIChNYWNyb0Fzc2VtYmxlcjo6RlBSZWdpc3RlcklEIHJlZyA9IE1hY3JvQXNzZW1i
bGVyOjpmaXJzdEZQUmVnaXN0ZXIoKTsgcmVnIDw9IE1hY3JvQXNzZW1ibGVyOjpsYXN0RlBSZWdp
c3RlcigpOyByZWcgPSBNYWNyb0Fzc2VtYmxlcjo6bmV4dEZQUmVnaXN0ZXIocmVnKSkgewotICAg
ICAgICBpZiAocmVncy5zcGVjaWFsLmdldChyZWcpKQotICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgIGppdC5sb2FkRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlZ3MuZmlyc3Qs
IG9mZnNldE9mRlBSKHJlZykpLCByZWcpOwotICAgIH0KLSAgICAKLSAgICBmb3IgKE1hY3JvQXNz
ZW1ibGVyOjpSZWdpc3RlcklEIHJlZyA9IHJlZ3Muc2Vjb25kOyByZWcgPD0gTWFjcm9Bc3NlbWJs
ZXI6Omxhc3RSZWdpc3RlcigpOyByZWcgPSBNYWNyb0Fzc2VtYmxlcjo6bmV4dFJlZ2lzdGVyKHJl
ZykpIHsKLSAgICAgICAgaWYgKHJlZ3Muc3BlY2lhbC5nZXQocmVnKSkKLSAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICBqaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlZ3Mu
Zmlyc3QsIG9mZnNldE9mR1BSKHJlZykpLCByZWcpOwotICAgIH0KLSAgICAKLSAgICBqaXQubG9h
ZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlZ3MuZmlyc3QsIG9mZnNldE9mR1BSKHJlZ3Mu
Zmlyc3QpKSwgcmVncy5maXJzdCk7CisgICAgZm9yIChNYWNyb0Fzc2VtYmxlcjo6RlBSZWdpc3Rl
cklEIHJlZyA9IE1hY3JvQXNzZW1ibGVyOjpmaXJzdEZQUmVnaXN0ZXIoKTsgcmVnIDw9IE1hY3Jv
QXNzZW1ibGVyOjpsYXN0RlBSZWdpc3RlcigpOyByZWcgPSByZWdzLm5leHRGUFJlZ2lzdGVyKHJl
ZykpCisgICAgICAgIHNwb29sZXIubG9hZEZQUih7IHJlZywgc3RhdGljX2Nhc3Q8cHRyZGlmZl90
PihvZmZzZXRPZkZQUihyZWcpKSB9KTsKKyAgICBzcG9vbGVyLmZsdXNoRlBSKCk7CisgICAgCisj
aWYgQ1BVKEFSTTY0KQorICAgIEdQUlJlZyBuZXh0R1BSID0gcmVncy5uZXh0UmVnaXN0ZXIoYmFz
ZUdQUik7CisgICAgR1BSUmVnIGZpcnN0VG9SZXN0b3JlR1BSID0gcmVncy5uZXh0UmVnaXN0ZXIo
bmV4dEdQUik7CisgICAgQVNTRVJUKGJhc2VHUFIgPT0gQVJNNjRSZWdpc3RlcnM6OngwKTsKKyAg
ICBBU1NFUlQobmV4dEdQUiA9PSBBUk02NFJlZ2lzdGVyczo6eDEpOworI2Vsc2UKKyAgICBHUFJS
ZWcgZmlyc3RUb1Jlc3RvcmVHUFIgPSByZWdzLm5leHRSZWdpc3RlcihiYXNlR1BSKTsKKyNlbmRp
ZgorICAgIGZvciAoTWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgcmVnID0gZmlyc3RUb1Jlc3Rv
cmVHUFI7IHJlZyA8PSBNYWNyb0Fzc2VtYmxlcjo6bGFzdFJlZ2lzdGVyKCk7IHJlZyA9IHJlZ3Mu
bmV4dFJlZ2lzdGVyKHJlZykpCisgICAgICAgIHNwb29sZXIubG9hZEdQUih7IHJlZywgc3RhdGlj
X2Nhc3Q8cHRyZGlmZl90PihvZmZzZXRPZkdQUihyZWcpKSB9KTsKKyAgICBzcG9vbGVyLmZsdXNo
R1BSKCk7CisKKyNpZiBDUFUoQVJNNjQpCisgICAgaml0LmxvYWRQYWlyNjQoYmFzZUdQUiwgQXNz
ZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIob2Zmc2V0T2ZHUFIoYmFzZUdQUikpLCBiYXNlR1BS
LCBuZXh0R1BSKTsKKyNlbHNlCisgICAgaml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhiYXNlR1BSLCBvZmZzZXRPZkdQUihiYXNlR1BSKSksIGJhc2VHUFIpOworI2VuZGlmCiB9CiAK
IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpGVEwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMU2F2ZVJlc3RvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTFNhdmVSZXN0b3JlLmgJKHJldmlzaW9uIDI3ODg4NikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMU2F2ZVJlc3RvcmUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMyw3ICszMyw3IEBA
CiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBNYWNyb0Fzc2VtYmxlcjsKK2NsYXNzIEFzc2Vt
Ymx5SGVscGVyczsKIAogbmFtZXNwYWNlIEZUTCB7CiAKQEAgLTQ2LDkgKzQ2LDkgQEAgc2l6ZV90
IG9mZnNldE9mRlBSKEZQUlJlZyk7CiAvLyBBc3N1bWVzIHRoYXQgdG9wLW9mLXN0YWNrIGNhbiBi
ZSB1c2VkIGFzIGEgcG9pbnRlci1zaXplZCBzY3JhdGNocGFkLiBTYXZlcyBhbGwgb2YKIC8vIHRo
ZSByZWdpc3RlcnMgaW50byB0aGUgc2NyYXRjaCBidWZmZXIgc3VjaCB0aGF0IFJlZ2lzdGVySUQg
KiBzaXplb2YoaW50NjRfdCkgaXMgdGhlCiAvLyBvZmZzZXQgb2YgZXZlcnkgcmVnaXN0ZXIuCi12
b2lkIHNhdmVBbGxSZWdpc3RlcnMoTWFjcm9Bc3NlbWJsZXImIGppdCwgY2hhciogc2NyYXRjaE1l
bW9yeSk7Cit2b2lkIHNhdmVBbGxSZWdpc3RlcnMoQXNzZW1ibHlIZWxwZXJzJiBqaXQsIGNoYXIq
IHNjcmF0Y2hNZW1vcnkpOwogCi12b2lkIHJlc3RvcmVBbGxSZWdpc3RlcnMoTWFjcm9Bc3NlbWJs
ZXImIGppdCwgY2hhciogc2NyYXRjaE1lbW9yeSk7Cit2b2lkIHJlc3RvcmVBbGxSZWdpc3RlcnMo
QXNzZW1ibHlIZWxwZXJzJiBqaXQsIGNoYXIqIHNjcmF0Y2hNZW1vcnkpOwogCiB9IH0gLy8gbmFt
ZXNwYWNlIEpTQzo6RlRMCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVGh1
bmtzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFRodW5r
cy5jcHAJKHJldmlzaW9uIDI3ODg4NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
VGh1bmtzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogCiAjaWYgRU5BQkxF
KEZUTF9KSVQpCiAKLSNpbmNsdWRlICJBc3NlbWJseUhlbHBlcnMuaCIKKyNpbmNsdWRlICJBc3Nl
bWJseUhlbHBlcnNTcG9vbGVycy5oIgogI2luY2x1ZGUgIkRGR09TUkV4aXRDb21waWxlckNvbW1v
bi5oIgogI2luY2x1ZGUgIkZUTE9TUkV4aXRDb21waWxlci5oIgogI2luY2x1ZGUgIkZUTE9wZXJh
dGlvbnMuaCIKQEAgLTU2LDMxICs1NiwzNCBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyCiAgICAgfQogICAgIAogICAgIC8vIE5vdGUgdGhhdCB0aGUgInJldHVybiBh
ZGRyZXNzIiB3aWxsIGJlIHRoZSBJRCB0aGF0IHdlIHBhc3MgdG8gdGhlIGdlbmVyYXRpb24gZnVu
Y3Rpb24uCi0gICAgCi0gICAgcHRyZGlmZl90IHN0YWNrTWlzYWxpZ25tZW50ID0gTWFjcm9Bc3Nl
bWJsZXI6OnB1c2hUb1NhdmVCeXRlT2Zmc2V0KCk7Ci0gICAgCisKKyAgICBjb25zdGV4cHIgR1BS
UmVnIHN0YWNrUG9pbnRlclJlZ2lzdGVyID0gTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJl
Z2lzdGVyOworICAgIGNvbnN0ZXhwciBHUFJSZWcgZnJhbWVQb2ludGVyUmVnaXN0ZXIgPSBNYWNy
b0Fzc2VtYmxlcjo6ZnJhbWVQb2ludGVyUmVnaXN0ZXI7CisgICAgY29uc3RleHByIHB0cmRpZmZf
dCBwdXNoVG9TYXZlQnl0ZU9mZnNldCA9IE1hY3JvQXNzZW1ibGVyOjpwdXNoVG9TYXZlQnl0ZU9m
ZnNldCgpOworICAgIHB0cmRpZmZfdCBzdGFja01pc2FsaWdubWVudCA9IHB1c2hUb1NhdmVCeXRl
T2Zmc2V0OworCiAgICAgLy8gUHJldGVuZCB0aGF0IHdlJ3JlIGEgQyBjYWxsIGZyYW1lLgotICAg
IGppdC5wdXNoVG9TYXZlKE1hY3JvQXNzZW1ibGVyOjpmcmFtZVBvaW50ZXJSZWdpc3Rlcik7Ci0g
ICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBNYWNyb0Fz
c2VtYmxlcjo6ZnJhbWVQb2ludGVyUmVnaXN0ZXIpOwotICAgIHN0YWNrTWlzYWxpZ25tZW50ICs9
IE1hY3JvQXNzZW1ibGVyOjpwdXNoVG9TYXZlQnl0ZU9mZnNldCgpOwotICAgIAorICAgIGppdC5w
dXNoVG9TYXZlKGZyYW1lUG9pbnRlclJlZ2lzdGVyKTsKKyAgICBqaXQubW92ZShzdGFja1BvaW50
ZXJSZWdpc3RlciwgZnJhbWVQb2ludGVyUmVnaXN0ZXIpOworICAgIHN0YWNrTWlzYWxpZ25tZW50
ICs9IHB1c2hUb1NhdmVCeXRlT2Zmc2V0OworCiAgICAgLy8gTm93IGNyZWF0ZSBvdXJzZWx2ZXMg
ZW5vdWdoIHN0YWNrIHNwYWNlIHRvIGdpdmUgc2F2ZUFsbFJlZ2lzdGVycygpIGEgc2NyYXRjaCBz
bG90LgogICAgIHVuc2lnbmVkIG51bWJlck9mUmVxdWlyZWRQb3BzID0gMDsKICAgICBkbyB7Ci0g
ICAgICAgIGppdC5wdXNoVG9TYXZlKEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgc3RhY2tNaXNh
bGlnbm1lbnQgKz0gTWFjcm9Bc3NlbWJsZXI6OnB1c2hUb1NhdmVCeXRlT2Zmc2V0KCk7CisgICAg
ICAgIHN0YWNrTWlzYWxpZ25tZW50ICs9IHB1c2hUb1NhdmVCeXRlT2Zmc2V0OwogICAgICAgICBu
dW1iZXJPZlJlcXVpcmVkUG9wcysrOwogICAgIH0gd2hpbGUgKHN0YWNrTWlzYWxpZ25tZW50ICUg
c3RhY2tBbGlnbm1lbnRCeXRlcygpKTsKLSAgICAKKyAgICBqaXQuc3ViUHRyKE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tMzIobnVtYmVyT2ZSZXF1aXJlZFBvcHMgKiBwdXNoVG9TYXZlQnl0ZU9m
ZnNldCksIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKwogICAgIFNjcmF0Y2hCdWZmZXIqIHNjcmF0
Y2hCdWZmZXIgPSB2bS5zY3JhdGNoQnVmZmVyRm9yU2l6ZShyZXF1aXJlZFNjcmF0Y2hNZW1vcnlT
aXplSW5CeXRlcygpKTsKICAgICBjaGFyKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxjaGFyKj4oc2Ny
YXRjaEJ1ZmZlci0+ZGF0YUJ1ZmZlcigpKTsKICAgICAKICAgICBzYXZlQWxsUmVnaXN0ZXJzKGpp
dCwgYnVmZmVyKTsKIAotICAgIGppdC5sb2FkUHRyKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIGppdC5sb2FkUHRyKGZyYW1lUG9pbnRlclJl
Z2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwogICAgIGppdC5wZWVrKAogICAgICAgICBH
UFJJbmZvOjphcmd1bWVudEdQUjEsCi0gICAgICAgIChzdGFja01pc2FsaWdubWVudCAtIE1hY3Jv
QXNzZW1ibGVyOjpwdXNoVG9TYXZlQnl0ZU9mZnNldCgpKSAvIHNpemVvZih2b2lkKikpOworICAg
ICAgICAoc3RhY2tNaXNhbGlnbm1lbnQgLSBwdXNoVG9TYXZlQnl0ZU9mZnNldCkgLyBzaXplb2Yo
dm9pZCopKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogICAgIE1hY3JvQXNz
ZW1ibGVyOjpDYWxsIGZ1bmN0aW9uQ2FsbCA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7CiAK
QEAgLTkyLDE0ICs5NSwxMyBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5r
UHRyCiAgICAgaml0Lm1vdmUoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIEdQUkluZm86OnJlZ1Qw
KTsKIAogICAgIC8vIFByZXBhcmUgZm9yIHRhaWwgY2FsbC4KLSAgICB3aGlsZSAobnVtYmVyT2ZS
ZXF1aXJlZFBvcHMtLSkKLSAgICAgICAgaml0LnBvcFRvUmVzdG9yZShHUFJJbmZvOjpyZWdUMSk7
Ci0gICAgaml0LnBvcFRvUmVzdG9yZShNYWNyb0Fzc2VtYmxlcjo6ZnJhbWVQb2ludGVyUmVnaXN0
ZXIpOwotCi0gICAgLy8gV2hlbiB3ZSBjYW1lIGluIGhlcmUsIHRoZXJlIHdhcyBhbiBhZGRpdGlv
bmFsIHRoaW5nIHB1c2hlZCB0byB0aGUgc3RhY2suIFNvbWUgY2xpZW50cyB3YW50IGl0Ci0gICAg
Ly8gcG9wcGVkIGJlZm9yZSBwcm9jZWVkaW5nLgotICAgIHdoaWxlIChleHRyYVBvcHNUb1Jlc3Rv
cmUtLSkKLSAgICAgICAgaml0LnBvcFRvUmVzdG9yZShHUFJJbmZvOjpyZWdUMSk7CisKKyAgICBq
aXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3Rlciwg
bnVtYmVyT2ZSZXF1aXJlZFBvcHMgKiBwdXNoVG9TYXZlQnl0ZU9mZnNldCksIGZyYW1lUG9pbnRl
clJlZ2lzdGVyKTsKKworICAgIC8vIFdoZW4gd2UgY2FtZSBpbiBoZXJlLCB0aGVyZSB3YXMgYW4g
YWRkaXRpb25hbCB0aGluZyBwdXNoZWQgdG8gdGhlIHN0YWNrIChleHRyYVBvcHNUb1Jlc3RvcmUp
LgorICAgIC8vIFNvbWUgY2xpZW50cyB3YW50IGl0IHBvcHBlZCBiZWZvcmUgcHJvY2VlZGluZy4g
QWxzbyBhZGQgMSBmb3IgdGhlIHB1c2hUb1NhdmUgb2YgdGhlIGZyYW1lUG9pbnRlclJlZ2lzdGVy
LgorICAgIG51bWJlck9mUmVxdWlyZWRQb3BzICs9IDEgKyBleHRyYVBvcHNUb1Jlc3RvcmU7Cisg
ICAgaml0LmFkZFB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKG51bWJlck9mUmVxdWly
ZWRQb3BzICogcHVzaFRvU2F2ZUJ5dGVPZmZzZXQpLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAK
ICAgICAvLyBQdXQgdGhlIHJldHVybiBhZGRyZXNzIHdoZXJldmVyIHRoZSByZXR1cm4gaW5zdHJ1
Y3Rpb24gd2FudHMgaXQuIE9uIGFsbCBwbGF0Zm9ybXMsIHRoaXMKICAgICAvLyBlbnN1cmVzIHRo
YXQgdGhlIHJldHVybiBhZGRyZXNzIGlzIG91dCBvZiB0aGUgd2F5IG9mIHJlZ2lzdGVyIHJlc3Rv
cmF0aW9uLgpAQCAtMTc3LDIxICsxNzksMjUgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBzbAogI2lmIENQVShYODZfNjQpCiAgICAgY3VycmVudE9mZnNldCArPSBzaXpl
b2Yodm9pZCopOwogI2VuZGlmCi0gICAgCisKKyAgICBBc3NlbWJseUhlbHBlcnM6OlN0b3JlUmVn
U3Bvb2xlciBzdG9yZVNwb29sZXIoaml0LCBNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVn
aXN0ZXIpOworCiAgICAgZm9yIChNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRCByZWcgPSBNYWNy
b0Fzc2VtYmxlcjo6Zmlyc3RSZWdpc3RlcigpOyByZWcgPD0gTWFjcm9Bc3NlbWJsZXI6Omxhc3RS
ZWdpc3RlcigpOyByZWcgPSBzdGF0aWNfY2FzdDxNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRD4o
cmVnICsgMSkpIHsKICAgICAgICAgaWYgKCFrZXkudXNlZFJlZ2lzdGVycygpLmdldChyZWcpKQog
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGppdC5zdG9yZVB0cihyZWcsIEFzc2VtYmx5
SGVscGVyczo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIGN1
cnJlbnRPZmZzZXQpKTsKKyAgICAgICAgc3RvcmVTcG9vbGVyLnN0b3JlR1BSKHsgcmVnLCBzdGF0
aWNfY2FzdDxwdHJkaWZmX3Q+KGN1cnJlbnRPZmZzZXQpIH0pOwogICAgICAgICBjdXJyZW50T2Zm
c2V0ICs9IHNpemVvZih2b2lkKik7CiAgICAgfQotICAgIAorICAgIHN0b3JlU3Bvb2xlci5mbHVz
aEdQUigpOworCiAgICAgZm9yIChNYWNyb0Fzc2VtYmxlcjo6RlBSZWdpc3RlcklEIHJlZyA9IE1h
Y3JvQXNzZW1ibGVyOjpmaXJzdEZQUmVnaXN0ZXIoKTsgcmVnIDw9IE1hY3JvQXNzZW1ibGVyOjps
YXN0RlBSZWdpc3RlcigpOyByZWcgPSBzdGF0aWNfY2FzdDxNYWNyb0Fzc2VtYmxlcjo6RlBSZWdp
c3RlcklEPihyZWcgKyAxKSkgewogICAgICAgICBpZiAoIWtleS51c2VkUmVnaXN0ZXJzKCkuZ2V0
KHJlZykpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaml0LnN0b3JlRG91YmxlKHJl
ZywgQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJS
ZWdpc3RlciwgY3VycmVudE9mZnNldCkpOworICAgICAgICBzdG9yZVNwb29sZXIuc3RvcmVGUFIo
eyByZWcsIHN0YXRpY19jYXN0PHB0cmRpZmZfdD4oY3VycmVudE9mZnNldCkgfSk7CiAgICAgICAg
IGN1cnJlbnRPZmZzZXQgKz0gc2l6ZW9mKGRvdWJsZSk7CiAgICAgfQotICAgIAorICAgIHN0b3Jl
U3Bvb2xlci5mbHVzaEZQUigpOworCiAgICAgaml0LnByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVy
Q2FsbChHUFJJbmZvOjpub25BcmdHUFIxKTsKICAgICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6bm9u
QXJnR1BSMSwgQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKE1hY3JvQXNzZW1ibGVyOjpzdGFja1Bv
aW50ZXJSZWdpc3Rlciwga2V5Lm9mZnNldCgpKSk7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0
aW9uKHZtKTsKQEAgLTIxMCwyNCArMjE2LDI4IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz4gc2wKICAgICBqaXQubG9hZFB0cihBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3Mo
TWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBrZXkub2Zmc2V0KCkpLCBHUFJJ
bmZvOjpub25QcmVzZXJ2ZWROb25SZXR1cm5HUFIpOwogICAgIGppdC5yZXN0b3JlUmV0dXJuQWRk
cmVzc0JlZm9yZVJldHVybihHUFJJbmZvOjpub25QcmVzZXJ2ZWROb25SZXR1cm5HUFIpOwogICAg
IAorICAgIEFzc2VtYmx5SGVscGVyczo6TG9hZFJlZ1Nwb29sZXIgbG9hZFNwb29sZXIoaml0LCBN
YWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOworCiAgICAgZm9yIChNYWNyb0Fz
c2VtYmxlcjo6RlBSZWdpc3RlcklEIHJlZyA9IE1hY3JvQXNzZW1ibGVyOjpsYXN0RlBSZWdpc3Rl
cigpOyA7IHJlZyA9IHN0YXRpY19jYXN0PE1hY3JvQXNzZW1ibGVyOjpGUFJlZ2lzdGVySUQ+KHJl
ZyAtIDEpKSB7CiAgICAgICAgIGlmIChrZXkudXNlZFJlZ2lzdGVycygpLmdldChyZWcpKSB7CiAg
ICAgICAgICAgICBjdXJyZW50T2Zmc2V0IC09IHNpemVvZihkb3VibGUpOwotICAgICAgICAgICAg
aml0LmxvYWREb3VibGUoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKE1hY3JvQXNzZW1ibGVyOjpz
dGFja1BvaW50ZXJSZWdpc3RlciwgY3VycmVudE9mZnNldCksIHJlZyk7CisgICAgICAgICAgICBs
b2FkU3Bvb2xlci5sb2FkRlBSKHsgcmVnLCBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KGN1cnJlbnRP
ZmZzZXQpIH0pOwogICAgICAgICB9CiAgICAgICAgIGlmIChyZWcgPT0gTWFjcm9Bc3NlbWJsZXI6
OmZpcnN0RlBSZWdpc3RlcigpKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIAorICAg
IGxvYWRTcG9vbGVyLmZsdXNoRlBSKCk7CisKICAgICBmb3IgKE1hY3JvQXNzZW1ibGVyOjpSZWdp
c3RlcklEIHJlZyA9IE1hY3JvQXNzZW1ibGVyOjpsYXN0UmVnaXN0ZXIoKTsgOyByZWcgPSBzdGF0
aWNfY2FzdDxNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRD4ocmVnIC0gMSkpIHsKICAgICAgICAg
aWYgKGtleS51c2VkUmVnaXN0ZXJzKCkuZ2V0KHJlZykpIHsKICAgICAgICAgICAgIGN1cnJlbnRP
ZmZzZXQgLT0gc2l6ZW9mKHZvaWQqKTsKLSAgICAgICAgICAgIGppdC5sb2FkUHRyKEFzc2VtYmx5
SGVscGVyczo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIGN1
cnJlbnRPZmZzZXQpLCByZWcpOworICAgICAgICAgICAgbG9hZFNwb29sZXIubG9hZEdQUih7IHJl
Zywgc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihjdXJyZW50T2Zmc2V0KSB9KTsKICAgICAgICAgfQog
ICAgICAgICBpZiAocmVnID09IE1hY3JvQXNzZW1ibGVyOjpmaXJzdFJlZ2lzdGVyKCkpCiAgICAg
ICAgICAgICBicmVhazsKICAgICB9Ci0gICAgCisgICAgbG9hZFNwb29sZXIuZmx1c2hHUFIoKTsK
KwogICAgIGppdC5yZXQoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9C
QUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkZUTFRodW5rKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAJKHJldmlzaW9uIDI3
ODg4NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShKSVQpCiAKICNpbmNs
dWRlICJBY2Nlc3NDYXNlLmgiCisjaW5jbHVkZSAiQXNzZW1ibHlIZWxwZXJzU3Bvb2xlcnMuaCIK
ICNpbmNsdWRlICJKSVRPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlclZpZXcu
aCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgpAQCAtNjA2LDQyICs2MDcsOTMgQEAg
dm9pZCBBc3NlbWJseUhlbHBlcnM6OnJlc3RvcmVDYWxsZWVTYXZlcwogCiAgICAgR1BSUmVnIHNj
cmF0Y2ggPSBJbnZhbGlkR1BSUmVnOwogICAgIHVuc2lnbmVkIHNjcmF0Y2hHUFJFbnRyeUluZGV4
ID0gMDsKKyNpZiBDUFUoQVJNNjQpCisgICAgLy8gV2UgZG9uJ3QgbmVlZCBhIHNlY29uZCBzY3Jh
dGNoIEdQUiwgYnV0IHdlJ2xsIGFsc28gZGVmZXIgcmVzdG9yaW5nIHRoaXMKKyAgICAvLyBHUFIg
KGluIHRoZSBuZXh0IHNsb3QgYWZ0ZXIgdGhlIHNjcmF0Y2gpIHNvIHRoYXQgd2UgY2FuIHJlc3Rv
cmUgdGhlbSB0b2dldGhlcgorICAgIC8vIGxhdGVyIHVzaW5nIGEgbG9hZFBhaXI2NC4KKyAgICBH
UFJSZWcgdW51c2VkTmV4dFNsb3RHUFIgPSBJbnZhbGlkR1BSUmVnOworI2VuZGlmCiAKLSAgICAv
LyBVc2UgdGhlIGZpcnN0IEdQUiBlbnRyeSdzIHJlZ2lzdGVyIGFzIG91ciBzY3JhdGNoLgorICAg
IC8vIFVzZSB0aGUgZmlyc3QgR1BSIGVudHJ5J3MgcmVnaXN0ZXIgYXMgb3VyIGJhc2VHUFIuCiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkrKykgewogICAgICAg
ICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5ID0gYWxsQ2FsbGVlU2F2ZXMtPmF0KGkpOwotICAgICAg
ICBpZiAoZG9udFJlc3RvcmVSZWdpc3RlcnMuZ2V0KGVudHJ5LnJlZygpKSkKKyAgICAgICAgaWYg
KGRvbnRSZXN0b3JlUmVnaXN0ZXJzLmNvbnRhaW5zKGVudHJ5LnJlZygpKSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICBpZiAoZW50cnkucmVnKCkuaXNHUFIoKSkgeworI2lmIENQVShB
Uk02NCkKKyAgICAgICAgICAgIGlmIChpICsgMSA8IHJlZ2lzdGVyQ291bnQpIHsKKyAgICAgICAg
ICAgICAgICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5MiA9IGFsbENhbGxlZVNhdmVzLT5hdChpICsg
MSk7CisgICAgICAgICAgICAgICAgaWYgKCFkb250UmVzdG9yZVJlZ2lzdGVycy5jb250YWlucyhl
bnRyeTIucmVnKCkpCisgICAgICAgICAgICAgICAgICAgICYmIGVudHJ5Mi5yZWcoKS5pc0dQUigp
CisgICAgICAgICAgICAgICAgICAgICYmIGVudHJ5Mi5vZmZzZXQoKSA9PSBlbnRyeS5vZmZzZXQo
KSArIHN0YXRpY19jYXN0PHB0cmRpZmZfdD4oc2l6ZW9mKENQVVJlZ2lzdGVyKSkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgc2NyYXRjaEdQUkVudHJ5SW5kZXggPSBpOworICAgICAgICAgICAgICAg
ICAgICBzY3JhdGNoID0gZW50cnkucmVnKCkuZ3ByKCk7CisgICAgICAgICAgICAgICAgICAgIHVu
dXNlZE5leHRTbG90R1BSID0gZW50cnkyLnJlZygpLmdwcigpOworICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisjZWxzZQogICAgICAg
ICAgICAgc2NyYXRjaEdQUkVudHJ5SW5kZXggPSBpOwogICAgICAgICAgICAgc2NyYXRjaCA9IGVu
dHJ5LnJlZygpLmdwcigpOwogICAgICAgICAgICAgYnJlYWs7CisjZW5kaWYKICAgICAgICAgfQog
ICAgIH0KICAgICBBU1NFUlQoc2NyYXRjaCAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAKKyAgICBS
ZWdpc3RlclNldCBza2lwTGlzdDsKKyAgICBza2lwTGlzdC5zZXQoZG9udFJlc3RvcmVSZWdpc3Rl
cnMpOworCisgICAgLy8gU2tpcCB0aGUgc2NyYXRjaCByZWdpc3RlcihzKS4gV2UnbGwgcmVzdG9y
ZSB0aGVtIGxhdGVyLgorICAgIHNraXBMaXN0LmFkZChzY3JhdGNoKTsKKyNpZiBDUFUoQVJNNjQp
CisgICAgUkVMRUFTRV9BU1NFUlQodW51c2VkTmV4dFNsb3RHUFIgIT0gSW52YWxpZEdQUlJlZyk7
CisgICAgc2tpcExpc3QuYWRkKHVudXNlZE5leHRTbG90R1BSKTsKKyNlbmRpZgogCiAgICAgbG9h
ZFB0cigmdG9wRW50cnlGcmFtZSwgc2NyYXRjaCk7CiAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihF
bnRyeUZyYW1lOjpjYWxsZWVTYXZlUmVnaXN0ZXJzQnVmZmVyT2Zmc2V0KCkpLCBzY3JhdGNoKTsK
IAorICAgIExvYWRSZWdTcG9vbGVyIHNwb29sZXIoKnRoaXMsIHNjcmF0Y2gpOworCiAgICAgLy8g
UmVzdG9yZSBhbGwgY2FsbGVlIHNhdmVzIGV4Y2VwdCBmb3IgdGhlIHNjcmF0Y2guCi0gICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkrKykgeworICAgIHVuc2lnbmVk
IGkgPSAwOworICAgIGZvciAoOyBpIDwgcmVnaXN0ZXJDb3VudDsgaSsrKSB7CiAgICAgICAgIFJl
Z2lzdGVyQXRPZmZzZXQgZW50cnkgPSBhbGxDYWxsZWVTYXZlcy0+YXQoaSk7Ci0gICAgICAgIGlm
IChkb250UmVzdG9yZVJlZ2lzdGVycy5nZXQoZW50cnkucmVnKCkpKQorICAgICAgICBpZiAoc2tp
cExpc3QuY29udGFpbnMoZW50cnkucmVnKCkpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgIGlmIChpID09IHNjcmF0Y2hHUFJFbnRyeUluZGV4KQorICAgICAgICBpZiAoIWVudHJ5LnJl
ZygpLmlzR1BSKCkpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgc3Bvb2xlci5sb2FkR1BS
KGVudHJ5KTsKKyAgICB9CisgICAgc3Bvb2xlci5mbHVzaEdQUigpOworICAgIGZvciAoOyBpIDwg
cmVnaXN0ZXJDb3VudDsgaSsrKSB7CisgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQgZW50cnkgPSBh
bGxDYWxsZWVTYXZlcy0+YXQoaSk7CisgICAgICAgIGlmIChza2lwTGlzdC5jb250YWlucyhlbnRy
eS5yZWcoKSkpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgbG9hZFJlZyhBZGRyZXNz
KHNjcmF0Y2gsIGVudHJ5Lm9mZnNldCgpKSwgZW50cnkucmVnKCkpOworICAgICAgICBBU1NFUlQo
IWVudHJ5LnJlZygpLmlzR1BSKCkpOworICAgICAgICBzcG9vbGVyLmxvYWRGUFIoZW50cnkpOwog
ICAgIH0KKyAgICBzcG9vbGVyLmZsdXNoRlBSKCk7CiAKICAgICAvLyBSZXN0b3JlIHRoZSBjYWxs
ZWUgc2F2ZSB2YWx1ZSBvZiB0aGUgc2NyYXRjaC4KICAgICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5
ID0gYWxsQ2FsbGVlU2F2ZXMtPmF0KHNjcmF0Y2hHUFJFbnRyeUluZGV4KTsKICAgICBBU1NFUlQo
IWRvbnRSZXN0b3JlUmVnaXN0ZXJzLmdldChlbnRyeS5yZWcoKSkpOwogICAgIEFTU0VSVChlbnRy
eS5yZWcoKS5pc0dQUigpKTsKICAgICBBU1NFUlQoc2NyYXRjaCA9PSBlbnRyeS5yZWcoKS5ncHIo
KSk7Ci0gICAgbG9hZFJlZyhBZGRyZXNzKHNjcmF0Y2gsIGVudHJ5Lm9mZnNldCgpKSwgc2NyYXRj
aCk7CisjaWYgQ1BVKEFSTTY0KQorICAgIFJlZ2lzdGVyQXRPZmZzZXQgZW50cnkyID0gYWxsQ2Fs
bGVlU2F2ZXMtPmF0KHNjcmF0Y2hHUFJFbnRyeUluZGV4ICsgMSk7CisgICAgQVNTRVJUX1VOVVNF
RChlbnRyeTIsICFkb250UmVzdG9yZVJlZ2lzdGVycy5nZXQoZW50cnkyLnJlZygpKSk7CisgICAg
QVNTRVJUKGVudHJ5Mi5yZWcoKS5pc0dQUigpKTsKKyAgICBBU1NFUlQodW51c2VkTmV4dFNsb3RH
UFIgPT0gZW50cnkyLnJlZygpLmdwcigpKTsKKyAgICBsb2FkUGFpcjY0KHNjcmF0Y2gsIFRydXN0
ZWRJbW0zMihlbnRyeS5vZmZzZXQoKSksIHNjcmF0Y2gsIHVudXNlZE5leHRTbG90R1BSKTsKICNl
bHNlCi0gICAgVU5VU0VEX1BBUkFNKHRvcEVudHJ5RnJhbWUpOworICAgIGxvYWRQdHIoQWRkcmVz
cyhzY3JhdGNoLCBlbnRyeS5vZmZzZXQoKSksIHNjcmF0Y2gpOwogI2VuZGlmCisKKyNlbHNlCisg
ICAgVU5VU0VEX1BBUkFNKHRvcEVudHJ5RnJhbWUpOworI2VuZGlmIC8vIE5VTUJFUl9PRl9DQUxM
RUVfU0FWRVNfUkVHSVNURVJTID4gMAogfQogCiB2b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1pdFZp
cnR1YWxDYWxsKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbExpbmtJ
bmZvKiBpbmZvKQpAQCAtOTk5LDEzICsxMDUxLDI3IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjpj
b3B5Q2FsbGVlU2F2ZXNUb0UKICAgICBSZWdpc3RlckF0T2Zmc2V0TGlzdCogYWxsQ2FsbGVlU2F2
ZXMgPSBSZWdpc3RlclNldDo6dm1DYWxsZWVTYXZlUmVnaXN0ZXJPZmZzZXRzKCk7CiAgICAgUmVn
aXN0ZXJTZXQgZG9udENvcHlSZWdpc3RlcnMgPSBSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMo
KTsKICAgICB1bnNpZ25lZCByZWdpc3RlckNvdW50ID0gYWxsQ2FsbGVlU2F2ZXMtPnNpemUoKTsK
LSAgICAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVnaXN0ZXJDb3VudDsgaSsrKSB7
CisKKyAgICBTdG9yZVJlZ1Nwb29sZXIgc3Bvb2xlcigqdGhpcywgY2FsbGVlU2F2ZXNCdWZmZXIp
OworCisgICAgdW5zaWduZWQgaSA9IDA7CisgICAgZm9yICg7IGkgPCByZWdpc3RlckNvdW50OyBp
KyspIHsKICAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCBlbnRyeSA9IGFsbENhbGxlZVNhdmVzLT5h
dChpKTsKLSAgICAgICAgaWYgKGRvbnRDb3B5UmVnaXN0ZXJzLmdldChlbnRyeS5yZWcoKSkpCisg
ICAgICAgIGlmIChkb250Q29weVJlZ2lzdGVycy5jb250YWlucyhlbnRyeS5yZWcoKSkpCisgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKCFlbnRyeS5yZWcoKS5pc0dQUigpKQorICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIHNwb29sZXIuc3RvcmVHUFIoZW50cnkpOworICAgIH0K
KyAgICBzcG9vbGVyLmZsdXNoR1BSKCk7CisgICAgZm9yICg7IGkgPCByZWdpc3RlckNvdW50OyBp
KyspIHsKKyAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCBlbnRyeSA9IGFsbENhbGxlZVNhdmVzLT5h
dChpKTsKKyAgICAgICAgaWYgKGRvbnRDb3B5UmVnaXN0ZXJzLmNvbnRhaW5zKGVudHJ5LnJlZygp
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBzdG9yZVJlZyhlbnRyeS5yZWcoKSwg
QWRkcmVzcyhjYWxsZWVTYXZlc0J1ZmZlciwgZW50cnkub2Zmc2V0KCkpKTsKKyAgICAgICAgc3Bv
b2xlci5zdG9yZUZQUihlbnRyeSk7CiAgICAgfQorICAgIHNwb29sZXIuZmx1c2hGUFIoKTsKKwog
I2Vsc2UKICAgICBVTlVTRURfUEFSQU0oY2FsbGVlU2F2ZXNCdWZmZXIpOwogI2VuZGlmCkBAIC0x
MTAzLDYgKzExNjksMTg0IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjpjYWdlQ29uZGl0aW9uYWxs
eUEKICAgICBVTlVTRURfUEFSQU0oc2NyYXRjaCk7CiB9CiAKK3ZvaWQgQXNzZW1ibHlIZWxwZXJz
OjplbWl0U2F2ZShjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCYgbGlzdCkKK3sKKyAgICBTdG9y
ZVJlZ1Nwb29sZXIgc3Bvb2xlcigqdGhpcywgZnJhbWVQb2ludGVyUmVnaXN0ZXIpOworCisgICAg
c2l6ZV90IGxpc3RTaXplID0gbGlzdC5zaXplKCk7CisgICAgc2l6ZV90IGkgPSAwOworICAgIGZv
ciAoOyBpIDwgbGlzdFNpemU7IGkrKykgeworICAgICAgICBhdXRvIGVudHJ5ID0gbGlzdC5hdChp
KTsKKyAgICAgICAgaWYgKCFlbnRyeS5yZWcoKS5pc0dQUigpKQorICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIHNwb29sZXIuc3RvcmVHUFIoZW50cnkpOworICAgIH0KKyAgICBzcG9vbGVyLmZs
dXNoR1BSKCk7CisKKyAgICBmb3IgKDsgaSA8IGxpc3RTaXplOyBpKyspCisgICAgICAgIHNwb29s
ZXIuc3RvcmVGUFIobGlzdC5hdChpKSk7CisgICAgc3Bvb2xlci5mbHVzaEZQUigpOworfQorCit2
b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1pdFJlc3RvcmUoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExp
c3QmIGxpc3QpCit7CisgICAgTG9hZFJlZ1Nwb29sZXIgc3Bvb2xlcigqdGhpcywgZnJhbWVQb2lu
dGVyUmVnaXN0ZXIpOworCisgICAgc2l6ZV90IGxpc3RTaXplID0gbGlzdC5zaXplKCk7CisgICAg
c2l6ZV90IGkgPSAwOworICAgIGZvciAoOyBpIDwgbGlzdFNpemU7IGkrKykgeworICAgICAgICBh
dXRvIGVudHJ5ID0gbGlzdC5hdChpKTsKKyAgICAgICAgaWYgKCFlbnRyeS5yZWcoKS5pc0dQUigp
KQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIHNwb29sZXIubG9hZEdQUihlbnRyeSk7Cisg
ICAgfQorICAgIHNwb29sZXIuZmx1c2hHUFIoKTsKKworICAgIGZvciAoOyBpIDwgbGlzdFNpemU7
IGkrKykKKyAgICAgICAgc3Bvb2xlci5sb2FkRlBSKGxpc3QuYXQoaSkpOworICAgIHNwb29sZXIu
Zmx1c2hGUFIoKTsKK30KKwordm9pZCBBc3NlbWJseUhlbHBlcnM6OmVtaXRTYXZlQ2FsbGVlU2F2
ZXNGb3IoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGNhbGxlZVNhdmVzKQoreworICAgIFJl
Z2lzdGVyU2V0IGRvbnRTYXZlUmVnaXN0ZXJzID0gUmVnaXN0ZXJTZXQoUmVnaXN0ZXJTZXQ6OnN0
YWNrUmVnaXN0ZXJzKCksIFJlZ2lzdGVyU2V0OjphbGxGUFJzKCkpOworICAgIHVuc2lnbmVkIHJl
Z2lzdGVyQ291bnQgPSBjYWxsZWVTYXZlcy0+c2l6ZSgpOworCisgICAgU3RvcmVSZWdTcG9vbGVy
IHNwb29sZXIoKnRoaXMsIGZyYW1lUG9pbnRlclJlZ2lzdGVyKTsKKworICAgIHVuc2lnbmVkIGkg
PSAwOworICAgIGZvciAoOyBpIDwgcmVnaXN0ZXJDb3VudDsgaSsrKSB7CisgICAgICAgIFJlZ2lz
dGVyQXRPZmZzZXQgZW50cnkgPSBjYWxsZWVTYXZlcy0+YXQoaSk7CisgICAgICAgIGlmIChkb250
U2F2ZVJlZ2lzdGVycy5jb250YWlucyhlbnRyeS5yZWcoKSkpCisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgc3Bvb2xlci5zdG9yZUdQUihlbnRyeSk7CisgICAgfQorICAgIHNwb29sZXIu
Zmx1c2hHUFIoKTsKKyAgICBmb3IgKDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkrKykgeworICAgICAg
ICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5ID0gY2FsbGVlU2F2ZXMtPmF0KGkpOworICAgICAgICBp
ZiAoZG9udFNhdmVSZWdpc3RlcnMuY29udGFpbnMoZW50cnkucmVnKCkpKQorICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIHNwb29sZXIuc3RvcmVGUFIoZW50cnkpOworICAgIH0KKyAgICBz
cG9vbGVyLmZsdXNoRlBSKCk7Cit9CisKK3ZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0UmVzdG9y
ZUNhbGxlZVNhdmVzRm9yKGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBjYWxsZWVTYXZlcykK
K3sKKyAgICBSZWdpc3RlclNldCBkb250UmVzdG9yZVJlZ2lzdGVycyA9IFJlZ2lzdGVyU2V0KFJl
Z2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpLCBSZWdpc3RlclNldDo6YWxsRlBScygpKTsKKyAg
ICB1bnNpZ25lZCByZWdpc3RlckNvdW50ID0gY2FsbGVlU2F2ZXMtPnNpemUoKTsKKyAgICAKKyAg
ICBMb2FkUmVnU3Bvb2xlciBzcG9vbGVyKCp0aGlzLCBmcmFtZVBvaW50ZXJSZWdpc3Rlcik7CisK
KyAgICB1bnNpZ25lZCBpID0gMDsKKyAgICBmb3IgKDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkrKykg
eworICAgICAgICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5ID0gY2FsbGVlU2F2ZXMtPmF0KGkpOwor
ICAgICAgICBpZiAoZG9udFJlc3RvcmVSZWdpc3RlcnMuZ2V0KGVudHJ5LnJlZygpKSkKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICBzcG9vbGVyLmxvYWRHUFIoZW50cnkpOworICAgIH0K
KyAgICBzcG9vbGVyLmZsdXNoR1BSKCk7CisgICAgZm9yICg7IGkgPCByZWdpc3RlckNvdW50OyBp
KyspIHsKKyAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCBlbnRyeSA9IGNhbGxlZVNhdmVzLT5hdChp
KTsKKyAgICAgICAgaWYgKGRvbnRSZXN0b3JlUmVnaXN0ZXJzLmdldChlbnRyeS5yZWcoKSkpCisg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgc3Bvb2xlci5sb2FkRlBSKGVudHJ5KTsKKyAg
ICB9CisgICAgc3Bvb2xlci5mbHVzaEZQUigpOworfQorCit2b2lkIEFzc2VtYmx5SGVscGVyczo6
Y29weUxMSW50QmFzZWxpbmVDYWxsZWVTYXZlc0Zyb21GcmFtZU9yUmVnaXN0ZXJUb0VudHJ5RnJh
bWVDYWxsZWVTYXZlc0J1ZmZlcihFbnRyeUZyYW1lKiYgdG9wRW50cnlGcmFtZSwgY29uc3QgVGVt
cFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzKQoreworI2lmIE5VTUJFUl9PRl9DQUxMRUVfU0FW
RVNfUkVHSVNURVJTID4gMAorICAgIC8vIENvcHkgc2F2ZWQgY2FsbGVlU2F2ZXMgb24gc3RhY2sg
b3IgdW5zYXZlZCBjYWxsZWVTYXZlcyBpbiByZWdpc3RlciB0byB2bSBjYWxsZWVTYXZlIGJ1ZmZl
cgorICAgIEdQUlJlZyBkZXN0QnVmZmVyR1BSID0gdXNlZFJlZ2lzdGVycy5nZXRGcmVlR1BSKDAp
OworICAgIEdQUlJlZyB0ZW1wMSA9IHVzZWRSZWdpc3RlcnMuZ2V0RnJlZUdQUigxKTsKKyAgICBG
UFJSZWcgZnBUZW1wMSA9IHVzZWRSZWdpc3RlcnMuZ2V0RnJlZUZQUigwKTsKKyAgICBHUFJSZWcg
dGVtcDIgPSBpc0FSTTY0KCkgPyB1c2VkUmVnaXN0ZXJzLmdldEZyZWVHUFIoMikgOiBJbnZhbGlk
R1BSUmVnOworICAgIEZQUlJlZyBmcFRlbXAyID0gaXNBUk02NCgpID8gdXNlZFJlZ2lzdGVycy5n
ZXRGcmVlRlBSKDEpIDogSW52YWxpZEZQUlJlZzsKKworICAgIGxvYWRQdHIoJnRvcEVudHJ5RnJh
bWUsIGRlc3RCdWZmZXJHUFIpOworICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoRW50cnlGcmFtZTo6
Y2FsbGVlU2F2ZVJlZ2lzdGVyc0J1ZmZlck9mZnNldCgpKSwgZGVzdEJ1ZmZlckdQUik7CisKKyAg
ICBDb3B5U3Bvb2xlciBzcG9vbGVyKCp0aGlzLCBmcmFtZVBvaW50ZXJSZWdpc3RlciwgZGVzdEJ1
ZmZlckdQUiwgdGVtcDEsIHRlbXAyLCBmcFRlbXAxLCBmcFRlbXAyKTsKKworICAgIFJlZ2lzdGVy
QXRPZmZzZXRMaXN0KiBhbGxDYWxsZWVTYXZlcyA9IFJlZ2lzdGVyU2V0Ojp2bUNhbGxlZVNhdmVS
ZWdpc3Rlck9mZnNldHMoKTsKKyAgICBjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCogY3VycmVu
dENhbGxlZVNhdmVzID0gJlJlZ2lzdGVyQXRPZmZzZXRMaXN0OjpsbGludEJhc2VsaW5lQ2FsbGVl
U2F2ZVJlZ2lzdGVycygpOworICAgIFJlZ2lzdGVyU2V0IGRvbnRDb3B5UmVnaXN0ZXJzID0gUmVn
aXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCk7CisgICAgdW5zaWduZWQgcmVnaXN0ZXJDb3VudCA9
IGFsbENhbGxlZVNhdmVzLT5zaXplKCk7CisKKyAgICB1bnNpZ25lZCBpID0gMDsKKyAgICBmb3Ig
KDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkrKykgeworICAgICAgICBSZWdpc3RlckF0T2Zmc2V0IGVu
dHJ5ID0gYWxsQ2FsbGVlU2F2ZXMtPmF0KGkpOworICAgICAgICBpZiAoZG9udENvcHlSZWdpc3Rl
cnMuY29udGFpbnMoZW50cnkucmVnKCkpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
IFJlZ2lzdGVyQXRPZmZzZXQqIGN1cnJlbnRGcmFtZUVudHJ5ID0gY3VycmVudENhbGxlZVNhdmVz
LT5maW5kKGVudHJ5LnJlZygpKTsKKworICAgICAgICBpZiAoIWVudHJ5LnJlZygpLmlzR1BSKCkp
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKGN1cnJlbnRGcmFtZUVudHJ5KQorICAg
ICAgICAgICAgc3Bvb2xlci5sb2FkR1BSKGN1cnJlbnRGcmFtZUVudHJ5LT5vZmZzZXQoKSk7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNwb29sZXIuY29weUdQUihlbnRyeS5yZWcoKS5ncHIo
KSk7CisgICAgICAgIHNwb29sZXIuc3RvcmVHUFIoZW50cnkub2Zmc2V0KCkpOworICAgIH0KKyAg
ICBzcG9vbGVyLmZsdXNoR1BSKCk7CisKKyAgICBmb3IgKDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkr
KykgeworICAgICAgICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5ID0gYWxsQ2FsbGVlU2F2ZXMtPmF0
KGkpOworICAgICAgICBpZiAoZG9udENvcHlSZWdpc3RlcnMuZ2V0KGVudHJ5LnJlZygpKSkKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBSZWdpc3RlckF0T2Zmc2V0KiBjdXJyZW50RnJh
bWVFbnRyeSA9IGN1cnJlbnRDYWxsZWVTYXZlcy0+ZmluZChlbnRyeS5yZWcoKSk7CisKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoZW50cnkucmVnKCkuaXNGUFIoKSk7CisgICAgICAgIGlmIChjdXJy
ZW50RnJhbWVFbnRyeSkKKyAgICAgICAgICAgIHNwb29sZXIubG9hZEZQUihjdXJyZW50RnJhbWVF
bnRyeS0+b2Zmc2V0KCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzcG9vbGVyLmNvcHlG
UFIoZW50cnkucmVnKCkuZnByKCkpOworICAgICAgICBzcG9vbGVyLnN0b3JlRlBSKGVudHJ5Lm9m
ZnNldCgpKTsKKyAgICB9CisgICAgc3Bvb2xlci5mbHVzaEZQUigpOworCisjZWxzZQorICAgIFVO
VVNFRF9QQVJBTSh0b3BFbnRyeUZyYW1lKTsKKyAgICBVTlVTRURfUEFSQU0odXNlZFJlZ2lzdGVy
cyk7CisjZW5kaWYKK30KKwordm9pZCBBc3NlbWJseUhlbHBlcnM6OmVtaXRTYXZlT3JDb3B5TExJ
bnRCYXNlbGluZUNhbGxlZVNhdmVzRm9yKENvZGVCbG9jayogY29kZUJsb2NrLCBWaXJ0dWFsUmVn
aXN0ZXIgb2Zmc2V0VmlydHVhbFJlZ2lzdGVyLCBSZXN0b3JlVGFnUmVnaXN0ZXJNb2RlIHRhZ1Jl
Z2lzdGVyTW9kZSwgR1BSUmVnIHRlbXAxLCBHUFJSZWcgdGVtcDIsIEdQUlJlZyB0ZW1wMykKK3sK
KyAgICBBU1NFUlQoY29kZUJsb2NrKTsKKworICAgIFJFTEVBU0VfQVNTRVJUKCFKSVRDb2RlOjpp
c09wdGltaXppbmdKSVQoY29kZUJsb2NrLT5qaXRUeXBlKCkpKTsKKyAgICBSRUxFQVNFX0FTU0VS
VChjb2RlQmxvY2stPmNhbGxlZVNhdmVSZWdpc3RlcnMoKSA9PSAmUmVnaXN0ZXJBdE9mZnNldExp
c3Q6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCkpOworICAgIGNvbnN0IFJlZ2lz
dGVyQXRPZmZzZXRMaXN0KiBjYWxsZWVTYXZlcyA9ICZSZWdpc3RlckF0T2Zmc2V0TGlzdDo6bGxp
bnRCYXNlbGluZUNhbGxlZVNhdmVSZWdpc3RlcnMoKTsKKyAgICBSZWdpc3RlclNldCBkb250U2F2
ZVJlZ2lzdGVycyA9IFJlZ2lzdGVyU2V0KFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpLCBS
ZWdpc3RlclNldDo6YWxsRlBScygpKTsKKyAgICB1bnNpZ25lZCByZWdpc3RlckNvdW50ID0gY2Fs
bGVlU2F2ZXMtPnNpemUoKTsKKworICAgIEdQUlJlZyBkc3RCdWZmZXJHUFIgPSB0ZW1wMTsKKyAg
ICBhZGRQdHIoVHJ1c3RlZEltbTMyKG9mZnNldFZpcnR1YWxSZWdpc3Rlci5vZmZzZXRJbkJ5dGVz
KCkpLCBmcmFtZVBvaW50ZXJSZWdpc3RlciwgZHN0QnVmZmVyR1BSKTsKKworICAgIENvcHlTcG9v
bGVyIHNwb29sZXIoKnRoaXMsIGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBkc3RCdWZmZXJHUFIsIHRl
bXAyLCB0ZW1wMyk7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVnaXN0ZXJDb3Vu
dDsgaSsrKSB7CisgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQgZW50cnkgPSBjYWxsZWVTYXZlcy0+
YXQoaSk7CisgICAgICAgIGlmIChkb250U2F2ZVJlZ2lzdGVycy5nZXQoZW50cnkucmVnKCkpKQor
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIAorI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisg
ICAgICAgIFVOVVNFRF9QQVJBTSh0YWdSZWdpc3Rlck1vZGUpOworICAgICAgICBVTlVTRURfUEFS
QU0odGVtcCk7CisjZWxzZQorICAgICAgICBpZiAodGFnUmVnaXN0ZXJNb2RlID09IENvcHlCYXNl
bGluZUNhbGxlZVNhdmVkUmVnaXN0ZXJzRnJvbUJhc2VGcmFtZSkKKyAgICAgICAgICAgIHNwb29s
ZXIubG9hZEdQUihlbnRyeS5vZmZzZXQoKSk7CisgICAgICAgIGVsc2UKKyNlbmRpZgorICAgICAg
ICAgICAgc3Bvb2xlci5jb3B5R1BSKGVudHJ5LnJlZygpLmdwcigpKTsKKyAgICAgICAgc3Bvb2xl
ci5zdG9yZUdQUihlbnRyeS5vZmZzZXQoKSk7CisgICAgfQorICAgIHNwb29sZXIuZmx1c2hHUFIo
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCShyZXZpc2lv
biAyNzg4ODYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yOTUsMzEgKzI5NSwxOSBAQCBwdWJsaWM6CiAgICAgICAgIHN0
b3JlMzIoVHJ1c3RlZEltbTMyKHZhbHVlLnBheWxvYWQoKSksIGFkZHJlc3Mud2l0aE9mZnNldChQ
YXlsb2FkT2Zmc2V0KSk7CiAjZW5kaWYKICAgICB9Ci0gICAgCisKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBPcD4gY2xhc3MgU3Bvb2xlcjsKKyAgICBjbGFzcyBMb2FkUmVnU3Bvb2xlcjsKKyAgICBj
bGFzcyBTdG9yZVJlZ1Nwb29sZXI7CisgICAgY2xhc3MgQ29weVNwb29sZXI7CisKICAgICBBZGRy
ZXNzIGFkZHJlc3NGb3IoY29uc3QgUmVnaXN0ZXJBdE9mZnNldCYgZW50cnkpCiAgICAgewogICAg
ICAgICByZXR1cm4gQWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgZW50cnkub2Zm
c2V0KCkpOwogICAgIH0KLSAgICAKLSAgICB2b2lkIGVtaXRTYXZlKGNvbnN0IFJlZ2lzdGVyQXRP
ZmZzZXRMaXN0JiBsaXN0KQotICAgIHsKLSAgICAgICAgZm9yIChjb25zdCBSZWdpc3RlckF0T2Zm
c2V0JiBlbnRyeSA6IGxpc3QpIHsKLSAgICAgICAgICAgIGlmIChlbnRyeS5yZWcoKS5pc0dQUigp
KQotICAgICAgICAgICAgICAgIHN0b3JlUHRyKGVudHJ5LnJlZygpLmdwcigpLCBhZGRyZXNzRm9y
KGVudHJ5KSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgc3RvcmVEb3VibGUo
ZW50cnkucmVnKCkuZnByKCksIGFkZHJlc3NGb3IoZW50cnkpKTsKLSAgICAgICAgfQotICAgIH0K
LSAgICAKLSAgICB2b2lkIGVtaXRSZXN0b3JlKGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRMaXN0JiBs
aXN0KQotICAgIHsKLSAgICAgICAgZm9yIChjb25zdCBSZWdpc3RlckF0T2Zmc2V0JiBlbnRyeSA6
IGxpc3QpIHsKLSAgICAgICAgICAgIGlmIChlbnRyeS5yZWcoKS5pc0dQUigpKQotICAgICAgICAg
ICAgICAgIGxvYWRQdHIoYWRkcmVzc0ZvcihlbnRyeSksIGVudHJ5LnJlZygpLmdwcigpKTsKLSAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBsb2FkRG91YmxlKGFkZHJlc3NGb3IoZW50
cnkpLCBlbnRyeS5yZWcoKS5mcHIoKSk7Ci0gICAgICAgIH0KLSAgICB9CisKKyAgICB2b2lkIGVt
aXRTYXZlKGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRMaXN0Jik7CisgICAgdm9pZCBlbWl0UmVzdG9y
ZShjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCYpOwogCiAgICAgdm9pZCBlbWl0U2F2ZUNhbGxl
ZVNhdmVzRm9yKENvZGVCbG9jayogY29kZUJsb2NrKQogICAgIHsKQEAgLTMyOSw1NCArMzE3LDEx
IEBAIHB1YmxpYzoKICAgICAgICAgZW1pdFNhdmVDYWxsZWVTYXZlc0ZvcihjYWxsZWVTYXZlcyk7
CiAgICAgfQogCi0gICAgdm9pZCBlbWl0U2F2ZUNhbGxlZVNhdmVzRm9yKGNvbnN0IFJlZ2lzdGVy
QXRPZmZzZXRMaXN0KiBjYWxsZWVTYXZlcykKLSAgICB7Ci0gICAgICAgIFJlZ2lzdGVyU2V0IGRv
bnRTYXZlUmVnaXN0ZXJzID0gUmVnaXN0ZXJTZXQoUmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJz
KCksIFJlZ2lzdGVyU2V0OjphbGxGUFJzKCkpOwotICAgICAgICB1bnNpZ25lZCByZWdpc3RlckNv
dW50ID0gY2FsbGVlU2F2ZXMtPnNpemUoKTsKLQotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgcmVnaXN0ZXJDb3VudDsgaSsrKSB7Ci0gICAgICAgICAgICBSZWdpc3RlckF0T2Zmc2V0
IGVudHJ5ID0gY2FsbGVlU2F2ZXMtPmF0KGkpOwotICAgICAgICAgICAgaWYgKGRvbnRTYXZlUmVn
aXN0ZXJzLmdldChlbnRyeS5yZWcoKSkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgICAgICBzdG9yZVB0cihlbnRyeS5yZWcoKS5ncHIoKSwgQWRkcmVzcyhmcmFtZVBvaW50ZXJS
ZWdpc3RlciwgZW50cnkub2Zmc2V0KCkpKTsKLSAgICAgICAgfQotICAgIH0KKyAgICB2b2lkIGVt
aXRTYXZlQ2FsbGVlU2F2ZXNGb3IoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGNhbGxlZVNh
dmVzKTsKICAgICAKICAgICBlbnVtIFJlc3RvcmVUYWdSZWdpc3Rlck1vZGUgeyBVc2VFeGlzdGlu
Z1RhZ1JlZ2lzdGVyQ29udGVudHMsIENvcHlCYXNlbGluZUNhbGxlZVNhdmVkUmVnaXN0ZXJzRnJv
bUJhc2VGcmFtZSB9OwogCi0gICAgdm9pZCBlbWl0U2F2ZU9yQ29weUNhbGxlZVNhdmVzRm9yKENv
ZGVCbG9jayogY29kZUJsb2NrLCBWaXJ0dWFsUmVnaXN0ZXIgb2Zmc2V0VmlydHVhbFJlZ2lzdGVy
LCBSZXN0b3JlVGFnUmVnaXN0ZXJNb2RlIHRhZ1JlZ2lzdGVyTW9kZSwgR1BSUmVnIHRlbXApCi0g
ICAgewotICAgICAgICBBU1NFUlQoY29kZUJsb2NrKTsKLSAgICAgICAgCi0gICAgICAgIGNvbnN0
IFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBjYWxsZWVTYXZlcyA9IGNvZGVCbG9jay0+Y2FsbGVlU2F2
ZVJlZ2lzdGVycygpOwotICAgICAgICBSZWdpc3RlclNldCBkb250U2F2ZVJlZ2lzdGVycyA9IFJl
Z2lzdGVyU2V0KFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpLCBSZWdpc3RlclNldDo6YWxs
RlBScygpKTsKLSAgICAgICAgdW5zaWduZWQgcmVnaXN0ZXJDb3VudCA9IGNhbGxlZVNhdmVzLT5z
aXplKCk7Ci0KLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBSZWdpc3RlclNldCBiYXNlbGlu
ZUNhbGxlZVNhdmVzID0gUmVnaXN0ZXJTZXQ6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0
ZXJzKCk7Ci0jZW5kaWYKLSAgICAgICAgCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCByZWdpc3RlckNvdW50OyBpKyspIHsKLSAgICAgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQgZW50
cnkgPSBjYWxsZWVTYXZlcy0+YXQoaSk7Ci0gICAgICAgICAgICBpZiAoZG9udFNhdmVSZWdpc3Rl
cnMuZ2V0KGVudHJ5LnJlZygpKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
ICAgIAotICAgICAgICAgICAgR1BSUmVnIHJlZ2lzdGVyVG9Xcml0ZTsKLSAgICAgICAgICAgIAot
I2lmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgICAgICAgICBVTlVTRURfUEFSQU0odGFnUmVnaXN0
ZXJNb2RlKTsKLSAgICAgICAgICAgIFVOVVNFRF9QQVJBTSh0ZW1wKTsKLSNlbHNlCi0gICAgICAg
ICAgICBpZiAodGFnUmVnaXN0ZXJNb2RlID09IENvcHlCYXNlbGluZUNhbGxlZVNhdmVkUmVnaXN0
ZXJzRnJvbUJhc2VGcmFtZSAmJiBiYXNlbGluZUNhbGxlZVNhdmVzLmdldChlbnRyeS5yZWcoKSkp
IHsKLSAgICAgICAgICAgICAgICByZWdpc3RlclRvV3JpdGUgPSB0ZW1wOwotICAgICAgICAgICAg
ICAgIGxvYWRQdHIoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyLCBlbnRyeS5vZmZzZXQoKSksIHJlZ2lzdGVyVG9Xcml0ZSk7Ci0gICAgICAgICAgICB9
IGVsc2UKLSNlbmRpZgotICAgICAgICAgICAgICAgIHJlZ2lzdGVyVG9Xcml0ZSA9IGVudHJ5LnJl
ZygpLmdwcigpOwotCi0gICAgICAgICAgICBzdG9yZVB0cihyZWdpc3RlclRvV3JpdGUsIEFkZHJl
c3MoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIG9mZnNldFZpcnR1YWxSZWdpc3Rlci5vZmZzZXRJbkJ5
dGVzKCkgKyBlbnRyeS5vZmZzZXQoKSkpOwotICAgICAgICB9Ci0gICAgfQorICAgIHZvaWQgZW1p
dFNhdmVPckNvcHlMTEludEJhc2VsaW5lQ2FsbGVlU2F2ZXNGb3IoQ29kZUJsb2NrKiwgVmlydHVh
bFJlZ2lzdGVyIG9mZnNldFZpcnR1YWxSZWdpc3RlciwgUmVzdG9yZVRhZ1JlZ2lzdGVyTW9kZSwg
R1BSUmVnIHRlbXAxLCBHUFJSZWcgdGVtcDIsIEdQUlJlZyB0ZW1wMyk7CiAgICAgCiAgICAgdm9p
ZCBlbWl0UmVzdG9yZUNhbGxlZVNhdmVzRm9yKENvZGVCbG9jayogY29kZUJsb2NrKQogICAgIHsK
QEAgLTM4NiwxOCArMzMxLDcgQEAgcHVibGljOgogICAgICAgICBlbWl0UmVzdG9yZUNhbGxlZVNh
dmVzRm9yKGNhbGxlZVNhdmVzKTsKICAgICB9CiAKLSAgICB2b2lkIGVtaXRSZXN0b3JlQ2FsbGVl
U2F2ZXNGb3IoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGNhbGxlZVNhdmVzKQotICAgIHsK
LSAgICAgICAgUmVnaXN0ZXJTZXQgZG9udFJlc3RvcmVSZWdpc3RlcnMgPSBSZWdpc3RlclNldChS
ZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKSwgUmVnaXN0ZXJTZXQ6OmFsbEZQUnMoKSk7Ci0g
ICAgICAgIHVuc2lnbmVkIHJlZ2lzdGVyQ291bnQgPSBjYWxsZWVTYXZlcy0+c2l6ZSgpOwotICAg
ICAgICAKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkr
KykgewotICAgICAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCBlbnRyeSA9IGNhbGxlZVNhdmVzLT5h
dChpKTsKLSAgICAgICAgICAgIGlmIChkb250UmVzdG9yZVJlZ2lzdGVycy5nZXQoZW50cnkucmVn
KCkpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgbG9hZFB0cihBZGRy
ZXNzKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBlbnRyeS5vZmZzZXQoKSksIGVudHJ5LnJlZygpLmdw
cigpKTsKLSAgICAgICAgfQotICAgIH0KKyAgICB2b2lkIGVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXNG
b3IoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGNhbGxlZVNhdmVzKTsKIAogICAgIHZvaWQg
ZW1pdFNhdmVDYWxsZWVTYXZlcygpCiAgICAgewpAQCAtNDc4LDU4ICs0MTIsNyBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIHJlc3RvcmVDYWxsZWVTYXZlc0Zyb21FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNC
dWZmZXIoRW50cnlGcmFtZSomKTsKIAotICAgIHZvaWQgY29weUxMSW50QmFzZWxpbmVDYWxsZWVT
YXZlc0Zyb21GcmFtZU9yUmVnaXN0ZXJUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcihFbnRy
eUZyYW1lKiYgdG9wRW50cnlGcmFtZSwgY29uc3QgVGVtcFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0
ZXJzID0geyBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCkgfSkKLSAgICB7
Ci0jaWYgTlVNQkVSX09GX0NBTExFRV9TQVZFU19SRUdJU1RFUlMgPiAwCi0gICAgICAgIEdQUlJl
ZyB0ZW1wMSA9IHVzZWRSZWdpc3RlcnMuZ2V0RnJlZUdQUigwKTsKLSAgICAgICAgR1BSUmVnIHRl
bXAyID0gdXNlZFJlZ2lzdGVycy5nZXRGcmVlR1BSKDEpOwotICAgICAgICBGUFJSZWcgZnBUZW1w
ID0gdXNlZFJlZ2lzdGVycy5nZXRGcmVlRlBSKCk7Ci0gICAgICAgIEFTU0VSVCh0ZW1wMiAhPSBJ
bnZhbGlkR1BSUmVnKTsKLQotICAgICAgICAvLyBDb3B5IHNhdmVkIGNhbGxlZVNhdmVzIG9uIHN0
YWNrIG9yIHVuc2F2ZWQgY2FsbGVlU2F2ZXMgaW4gcmVnaXN0ZXIgdG8gdm0gY2FsbGVlU2F2ZSBi
dWZmZXIKLSAgICAgICAgbG9hZFB0cigmdG9wRW50cnlGcmFtZSwgdGVtcDEpOwotICAgICAgICBh
ZGRQdHIoVHJ1c3RlZEltbTMyKEVudHJ5RnJhbWU6OmNhbGxlZVNhdmVSZWdpc3RlcnNCdWZmZXJP
ZmZzZXQoKSksIHRlbXAxKTsKLQotICAgICAgICBSZWdpc3RlckF0T2Zmc2V0TGlzdCogYWxsQ2Fs
bGVlU2F2ZXMgPSBSZWdpc3RlclNldDo6dm1DYWxsZWVTYXZlUmVnaXN0ZXJPZmZzZXRzKCk7Ci0g
ICAgICAgIGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBjdXJyZW50Q2FsbGVlU2F2ZXMgPSAm
UmVnaXN0ZXJBdE9mZnNldExpc3Q6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCk7
Ci0gICAgICAgIFJlZ2lzdGVyU2V0IGRvbnRDb3B5UmVnaXN0ZXJzID0gUmVnaXN0ZXJTZXQ6OnN0
YWNrUmVnaXN0ZXJzKCk7Ci0gICAgICAgIHVuc2lnbmVkIHJlZ2lzdGVyQ291bnQgPSBhbGxDYWxs
ZWVTYXZlcy0+c2l6ZSgpOwotCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZWdp
c3RlckNvdW50OyBpKyspIHsKLSAgICAgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQgZW50cnkgPSBh
bGxDYWxsZWVTYXZlcy0+YXQoaSk7Ci0gICAgICAgICAgICBpZiAoZG9udENvcHlSZWdpc3RlcnMu
Z2V0KGVudHJ5LnJlZygpKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAg
IFJlZ2lzdGVyQXRPZmZzZXQqIGN1cnJlbnRGcmFtZUVudHJ5ID0gY3VycmVudENhbGxlZVNhdmVz
LT5maW5kKGVudHJ5LnJlZygpKTsKLQotICAgICAgICAgICAgaWYgKGVudHJ5LnJlZygpLmlzR1BS
KCkpIHsKLSAgICAgICAgICAgICAgICBHUFJSZWcgcmVnVG9TdG9yZTsKLSAgICAgICAgICAgICAg
ICBpZiAoY3VycmVudEZyYW1lRW50cnkpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gTG9hZCBj
YWxsZWVTYXZlIGZyb20gc3RhY2sgaW50byB0ZW1wIHJlZ2lzdGVyCi0gICAgICAgICAgICAgICAg
ICAgIHJlZ1RvU3RvcmUgPSB0ZW1wMjsKLSAgICAgICAgICAgICAgICAgICAgbG9hZFB0cihBZGRy
ZXNzKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBjdXJyZW50RnJhbWVFbnRyeS0+b2Zmc2V0KCkpLCBy
ZWdUb1N0b3JlKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAg
Ly8gSnVzdCBzdG9yZSBjYWxsZWUgc2F2ZSBkaXJlY3RseQotICAgICAgICAgICAgICAgICAgICBy
ZWdUb1N0b3JlID0gZW50cnkucmVnKCkuZ3ByKCk7Ci0KLSAgICAgICAgICAgICAgICBzdG9yZVB0
cihyZWdUb1N0b3JlLCBBZGRyZXNzKHRlbXAxLCBlbnRyeS5vZmZzZXQoKSkpOwotICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBGUFJSZWcgZnBSZWdUb1N0b3JlOwotICAgICAg
ICAgICAgICAgIGlmIChjdXJyZW50RnJhbWVFbnRyeSkgewotICAgICAgICAgICAgICAgICAgICAv
LyBMb2FkIGNhbGxlZVNhdmUgZnJvbSBzdGFjayBpbnRvIHRlbXAgcmVnaXN0ZXIKLSAgICAgICAg
ICAgICAgICAgICAgZnBSZWdUb1N0b3JlID0gZnBUZW1wOwotICAgICAgICAgICAgICAgICAgICBs
b2FkRG91YmxlKEFkZHJlc3MoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGN1cnJlbnRGcmFtZUVudHJ5
LT5vZmZzZXQoKSksIGZwUmVnVG9TdG9yZSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlCi0gICAg
ICAgICAgICAgICAgICAgIC8vIEp1c3Qgc3RvcmUgY2FsbGVlIHNhdmUgZGlyZWN0bHkKLSAgICAg
ICAgICAgICAgICAgICAgZnBSZWdUb1N0b3JlID0gZW50cnkucmVnKCkuZnByKCk7Ci0KLSAgICAg
ICAgICAgICAgICBzdG9yZURvdWJsZShmcFJlZ1RvU3RvcmUsIEFkZHJlc3ModGVtcDEsIGVudHJ5
Lm9mZnNldCgpKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSNlbHNlCi0gICAgICAgIFVO
VVNFRF9QQVJBTSh0b3BFbnRyeUZyYW1lKTsKLSAgICAgICAgVU5VU0VEX1BBUkFNKHVzZWRSZWdp
c3RlcnMpOwotI2VuZGlmCi0gICAgfQorICAgIHZvaWQgY29weUxMSW50QmFzZWxpbmVDYWxsZWVT
YXZlc0Zyb21GcmFtZU9yUmVnaXN0ZXJUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcihFbnRy
eUZyYW1lKiYsIGNvbnN0IFRlbXBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycyA9IHsgUmVnaXN0
ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpIH0pOwogCiAgICAgdm9pZCBlbWl0TWF0
ZXJpYWxpemVUYWdDaGVja1JlZ2lzdGVycygpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9TY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmNwcAkocmV2
aXNpb24gMjc4ODg2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TY3JhdGNoUmVnaXN0
ZXJBbGxvY2F0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxNC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYg
RU5BQkxFKEpJVCkKIAorI2luY2x1ZGUgIkFzc2VtYmx5SGVscGVyc1Nwb29sZXJzLmgiCiAjaW5j
bHVkZSAiTWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwuaCIKICNpbmNsdWRlICJWTS5oIgog
CkBAIC0xMDEsNyArMTAyLDcgQEAgdHlwZW5hbWUgQmFua0luZm86OlJlZ2lzdGVyVHlwZSBTY3Jh
dGNoUgogR1BSUmVnIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6YWxsb2NhdGVTY3JhdGNoR1BS
KCkgeyByZXR1cm4gYWxsb2NhdGVTY3JhdGNoPEdQUkluZm8+KCk7IH0KIEZQUlJlZyBTY3JhdGNo
UmVnaXN0ZXJBbGxvY2F0b3I6OmFsbG9jYXRlU2NyYXRjaEZQUigpIHsgcmV0dXJuIGFsbG9jYXRl
U2NyYXRjaDxGUFJJbmZvPigpOyB9CiAKLVNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6UHJlc2Vy
dmVkU3RhdGUgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpwcmVzZXJ2ZVJldXNlZFJlZ2lzdGVy
c0J5UHVzaGluZyhNYWNyb0Fzc2VtYmxlciYgaml0LCBFeHRyYVN0YWNrU3BhY2UgZXh0cmFTdGFj
a1NwYWNlKQorU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpQcmVzZXJ2ZWRTdGF0ZSBTY3JhdGNo
UmVnaXN0ZXJBbGxvY2F0b3I6OnByZXNlcnZlUmV1c2VkUmVnaXN0ZXJzQnlQdXNoaW5nKEFzc2Vt
Ymx5SGVscGVycyYgaml0LCBFeHRyYVN0YWNrU3BhY2UgZXh0cmFTdGFja1NwYWNlKQogewogICAg
IGlmICghZGlkUmV1c2VSZWdpc3RlcnMoKSkKICAgICAgICAgcmV0dXJuIFByZXNlcnZlZFN0YXRl
KDAsIGV4dHJhU3RhY2tTcGFjZSk7CkBAIC0xMjQsNyArMTI1LDcgQEAgU2NyYXRjaFJlZ2lzdGVy
QWxsb2NhdG9yOjpQcmVzZXJ2ZWRTdGF0ZQogICAgIHJldHVybiBQcmVzZXJ2ZWRTdGF0ZShzdGFj
a0FkanVzdG1lbnRTaXplLCBleHRyYVN0YWNrU3BhY2UpOwogfQogCi12b2lkIFNjcmF0Y2hSZWdp
c3RlckFsbG9jYXRvcjo6cmVzdG9yZVJldXNlZFJlZ2lzdGVyc0J5UG9wcGluZyhNYWNyb0Fzc2Vt
YmxlciYgaml0LCBjb25zdCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OlByZXNlcnZlZFN0YXRl
JiBwcmVzZXJ2ZWRTdGF0ZSkKK3ZvaWQgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpyZXN0b3Jl
UmV1c2VkUmVnaXN0ZXJzQnlQb3BwaW5nKEFzc2VtYmx5SGVscGVycyYgaml0LCBjb25zdCBTY3Jh
dGNoUmVnaXN0ZXJBbGxvY2F0b3I6OlByZXNlcnZlZFN0YXRlJiBwcmVzZXJ2ZWRTdGF0ZSkKIHsK
ICAgICBSRUxFQVNFX0FTU0VSVChwcmVzZXJ2ZWRTdGF0ZSk7CiAgICAgaWYgKCFkaWRSZXVzZVJl
Z2lzdGVycygpKQpAQCAtMTYxLDcgKzE2Miw3IEBAIHVuc2lnbmVkIFNjcmF0Y2hSZWdpc3RlckFs
bG9jYXRvcjo6ZGVzaXIKICAgICByZXR1cm4gdXNlZFJlZ2lzdGVyc0ZvckNhbGwoKS5udW1iZXJP
ZlNldFJlZ2lzdGVycygpICogc2l6ZW9mKEpTVmFsdWUpOwogfQogCi11bnNpZ25lZCBTY3JhdGNo
UmVnaXN0ZXJBbGxvY2F0b3I6OnByZXNlcnZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGwoTWFjcm9B
c3NlbWJsZXImIGppdCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIHVuc2lnbmVk
IGV4dHJhQnl0ZXNBdFRvcE9mU3RhY2spCit1bnNpZ25lZCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0
b3I6OnByZXNlcnZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGwoQXNzZW1ibHlIZWxwZXJzJiBqaXQs
IGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCB1bnNpZ25lZCBleHRyYUJ5dGVzQXRU
b3BPZlN0YWNrKQogewogICAgIFJFTEVBU0VfQVNTRVJUKGV4dHJhQnl0ZXNBdFRvcE9mU3RhY2sg
JSBzaXplb2Yodm9pZCopID09IDApOwogICAgIGlmICghdXNlZFJlZ2lzdGVycy5udW1iZXJPZlNl
dFJlZ2lzdGVycygpKQpAQCAtMTc0LDI2ICsxNzUsMzEgQEAgdW5zaWduZWQgU2NyYXRjaFJlZ2lz
dGVyQWxsb2NhdG9yOjpwcmVzZQogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMy
KHN0YWNrT2Zmc2V0KSwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lz
dGVyKTsKIAorICAgIEFzc2VtYmx5SGVscGVyczo6U3RvcmVSZWdTcG9vbGVyIHNwb29sZXIoaml0
LCBNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOworCiAgICAgdW5zaWduZWQg
Y291bnQgPSAwOwogICAgIGZvciAoR1BSUmVnIHJlZyA9IE1hY3JvQXNzZW1ibGVyOjpmaXJzdFJl
Z2lzdGVyKCk7IHJlZyA8PSBNYWNyb0Fzc2VtYmxlcjo6bGFzdFJlZ2lzdGVyKCk7IHJlZyA9IE1h
Y3JvQXNzZW1ibGVyOjpuZXh0UmVnaXN0ZXIocmVnKSkgewogICAgICAgICBpZiAodXNlZFJlZ2lz
dGVycy5nZXQocmVnKSkgewotICAgICAgICAgICAgaml0LnN0b3JlUHRyKHJlZywgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MoTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBleHRy
YUJ5dGVzQXRUb3BPZlN0YWNrICsgKGNvdW50ICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSkpKTsK
KyAgICAgICAgICAgIHNwb29sZXIuc3RvcmVHUFIoeyByZWcsIHN0YXRpY19jYXN0PHB0cmRpZmZf
dD4oZXh0cmFCeXRlc0F0VG9wT2ZTdGFjayArIChjb3VudCAqIHNpemVvZihFbmNvZGVkSlNWYWx1
ZSkpKSB9KTsKICAgICAgICAgICAgIGNvdW50Kys7CiAgICAgICAgIH0KICAgICB9CisgICAgc3Bv
b2xlci5mbHVzaEdQUigpOworCiAgICAgZm9yIChGUFJSZWcgcmVnID0gTWFjcm9Bc3NlbWJsZXI6
OmZpcnN0RlBSZWdpc3RlcigpOyByZWcgPD0gTWFjcm9Bc3NlbWJsZXI6Omxhc3RGUFJlZ2lzdGVy
KCk7IHJlZyA9IE1hY3JvQXNzZW1ibGVyOjpuZXh0RlBSZWdpc3RlcihyZWcpKSB7CiAgICAgICAg
IGlmICh1c2VkUmVnaXN0ZXJzLmdldChyZWcpKSB7Ci0gICAgICAgICAgICBqaXQuc3RvcmVEb3Vi
bGUocmVnLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2lu
dGVyUmVnaXN0ZXIsIGV4dHJhQnl0ZXNBdFRvcE9mU3RhY2sgKyAoY291bnQgKiBzaXplb2YoRW5j
b2RlZEpTVmFsdWUpKSkpOworICAgICAgICAgICAgc3Bvb2xlci5zdG9yZUZQUih7IHJlZywgc3Rh
dGljX2Nhc3Q8cHRyZGlmZl90PihleHRyYUJ5dGVzQXRUb3BPZlN0YWNrICsgKGNvdW50ICogc2l6
ZW9mKEVuY29kZWRKU1ZhbHVlKSkpIH0pOwogICAgICAgICAgICAgY291bnQrKzsKICAgICAgICAg
fQogICAgIH0KKyAgICBzcG9vbGVyLmZsdXNoRlBSKCk7CiAKICAgICBSRUxFQVNFX0FTU0VSVChj
b3VudCA9PSB1c2VkUmVnaXN0ZXJzLm51bWJlck9mU2V0UmVnaXN0ZXJzKCkpOwogCiAgICAgcmV0
dXJuIHN0YWNrT2Zmc2V0OwogfQogCi12b2lkIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6cmVz
dG9yZVJlZ2lzdGVyc0Zyb21TdGFja0ZvckNhbGwoTWFjcm9Bc3NlbWJsZXImIGppdCwgY29uc3Qg
UmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIGNvbnN0IFJlZ2lzdGVyU2V0JiBpZ25vcmUsIHVu
c2lnbmVkIG51bWJlck9mU3RhY2tCeXRlc1VzZWRGb3JSZWdpc3RlclByZXNlcnZhdGlvbiwgdW5z
aWduZWQgZXh0cmFCeXRlc0F0VG9wT2ZTdGFjaykKK3ZvaWQgU2NyYXRjaFJlZ2lzdGVyQWxsb2Nh
dG9yOjpyZXN0b3JlUmVnaXN0ZXJzRnJvbVN0YWNrRm9yQ2FsbChBc3NlbWJseUhlbHBlcnMmIGpp
dCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIGNvbnN0IFJlZ2lzdGVyU2V0JiBp
Z25vcmUsIHVuc2lnbmVkIG51bWJlck9mU3RhY2tCeXRlc1VzZWRGb3JSZWdpc3RlclByZXNlcnZh
dGlvbiwgdW5zaWduZWQgZXh0cmFCeXRlc0F0VG9wT2ZTdGFjaykKIHsKICAgICBSRUxFQVNFX0FT
U0VSVChleHRyYUJ5dGVzQXRUb3BPZlN0YWNrICUgc2l6ZW9mKHZvaWQqKSA9PSAwKTsKICAgICBp
ZiAoIXVzZWRSZWdpc3RlcnMubnVtYmVyT2ZTZXRSZWdpc3RlcnMoKSkgewpAQCAtMjAxLDIxICsy
MDcsMjYgQEAgdm9pZCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OnJlc3RvcmVSZQogICAgICAg
ICByZXR1cm47CiAgICAgfQogCisgICAgQXNzZW1ibHlIZWxwZXJzOjpMb2FkUmVnU3Bvb2xlciBz
cG9vbGVyKGppdCwgTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKwogICAg
IHVuc2lnbmVkIGNvdW50ID0gMDsKICAgICBmb3IgKEdQUlJlZyByZWcgPSBNYWNyb0Fzc2VtYmxl
cjo6Zmlyc3RSZWdpc3RlcigpOyByZWcgPD0gTWFjcm9Bc3NlbWJsZXI6Omxhc3RSZWdpc3Rlcigp
OyByZWcgPSBNYWNyb0Fzc2VtYmxlcjo6bmV4dFJlZ2lzdGVyKHJlZykpIHsKICAgICAgICAgaWYg
KHVzZWRSZWdpc3RlcnMuZ2V0KHJlZykpIHsKICAgICAgICAgICAgIGlmICghaWdub3JlLmdldChy
ZWcpKQotICAgICAgICAgICAgICAgIGppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3RlciwgZXh0cmFCeXRlc0F0VG9wT2ZT
dGFjayArIChzaXplb2YoRW5jb2RlZEpTVmFsdWUpICogY291bnQpKSwgcmVnKTsKKyAgICAgICAg
ICAgICAgICBzcG9vbGVyLmxvYWRHUFIoeyByZWcsIHN0YXRpY19jYXN0PHB0cmRpZmZfdD4oZXh0
cmFCeXRlc0F0VG9wT2ZTdGFjayArIChzaXplb2YoRW5jb2RlZEpTVmFsdWUpICogY291bnQpKSB9
KTsKICAgICAgICAgICAgIGNvdW50Kys7CiAgICAgICAgIH0KICAgICB9CisgICAgc3Bvb2xlci5m
bHVzaEdQUigpOworCiAgICAgZm9yIChGUFJSZWcgcmVnID0gTWFjcm9Bc3NlbWJsZXI6OmZpcnN0
RlBSZWdpc3RlcigpOyByZWcgPD0gTWFjcm9Bc3NlbWJsZXI6Omxhc3RGUFJlZ2lzdGVyKCk7IHJl
ZyA9IE1hY3JvQXNzZW1ibGVyOjpuZXh0RlBSZWdpc3RlcihyZWcpKSB7CiAgICAgICAgIGlmICh1
c2VkUmVnaXN0ZXJzLmdldChyZWcpKSB7CiAgICAgICAgICAgICBpZiAoIWlnbm9yZS5nZXQocmVn
KSkKLSAgICAgICAgICAgICAgICBqaXQubG9hZERvdWJsZShNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIGV4dHJhQnl0ZXNBdFRvcE9m
U3RhY2sgKyAoc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAqIGNvdW50KSksIHJlZyk7CisgICAgICAg
ICAgICAgICAgc3Bvb2xlci5sb2FkRlBSKHsgcmVnLCBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KGV4
dHJhQnl0ZXNBdFRvcE9mU3RhY2sgKyAoc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAqIGNvdW50KSkg
fSk7CiAgICAgICAgICAgICBjb3VudCsrOwogICAgICAgICB9CiAgICAgfQorICAgIHNwb29sZXIu
Zmx1c2hGUFIoKTsKIAogICAgIHVuc2lnbmVkIHN0YWNrT2Zmc2V0ID0gKHVzZWRSZWdpc3RlcnMu
bnVtYmVyT2ZTZXRSZWdpc3RlcnMoKSkgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpOwogICAgIHN0
YWNrT2Zmc2V0ICs9IGV4dHJhQnl0ZXNBdFRvcE9mU3RhY2s7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmgJKHJldmlz
aW9uIDI3ODg4NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2NyYXRjaFJlZ2lzdGVy
QWxsb2NhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEyLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsMTIgKzI3LDEyIEBACiAKICNpZiBF
TkFCTEUoSklUKQogCi0jaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKICNpbmNsdWRlICJSZWdp
c3RlclNldC5oIgogI2luY2x1ZGUgIlRlbXBSZWdpc3RlclNldC5oIgogCiBuYW1lc3BhY2UgSlND
IHsKIAorY2xhc3MgQXNzZW1ibHlIZWxwZXJzOwogc3RydWN0IFNjcmF0Y2hCdWZmZXI7CiAKIC8v
IFRoaXMgY2xhc3MgcHJvdmlkZXMgYSBsb3ctbGV2ZWwgcmVnaXN0ZXIgYWxsb2NhdG9yIGZvciB1
c2UgaW4gc3R1YnMuCkBAIC04NCwxNSArODQsMTUgQEAgcHVibGljOgogICAgICAgICBFeHRyYVN0
YWNrU3BhY2UgZXh0cmFTdGFja1NwYWNlUmVxdWlyZW1lbnQ7CiAgICAgfTsKIAotICAgIFByZXNl
cnZlZFN0YXRlIHByZXNlcnZlUmV1c2VkUmVnaXN0ZXJzQnlQdXNoaW5nKE1hY3JvQXNzZW1ibGVy
JiBqaXQsIEV4dHJhU3RhY2tTcGFjZSk7Ci0gICAgdm9pZCByZXN0b3JlUmV1c2VkUmVnaXN0ZXJz
QnlQb3BwaW5nKE1hY3JvQXNzZW1ibGVyJiBqaXQsIGNvbnN0IFByZXNlcnZlZFN0YXRlJik7Cisg
ICAgUHJlc2VydmVkU3RhdGUgcHJlc2VydmVSZXVzZWRSZWdpc3RlcnNCeVB1c2hpbmcoQXNzZW1i
bHlIZWxwZXJzJiBqaXQsIEV4dHJhU3RhY2tTcGFjZSk7CisgICAgdm9pZCByZXN0b3JlUmV1c2Vk
UmVnaXN0ZXJzQnlQb3BwaW5nKEFzc2VtYmx5SGVscGVycyYgaml0LCBjb25zdCBQcmVzZXJ2ZWRT
dGF0ZSYpOwogICAgIAogICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnNGb3JDYWxsKCkgY29u
c3Q7CiAgICAgCiAgICAgdW5zaWduZWQgZGVzaXJlZFNjcmF0Y2hCdWZmZXJTaXplRm9yQ2FsbCgp
IGNvbnN0OwotICAgIAotICAgIHN0YXRpYyB1bnNpZ25lZCBwcmVzZXJ2ZVJlZ2lzdGVyc1RvU3Rh
Y2tGb3JDYWxsKE1hY3JvQXNzZW1ibGVyJiBqaXQsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVn
aXN0ZXJzLCB1bnNpZ25lZCBleHRyYVBhZGRpbmdJbkJ5dGVzKTsKLSAgICBzdGF0aWMgdm9pZCBy
ZXN0b3JlUmVnaXN0ZXJzRnJvbVN0YWNrRm9yQ2FsbChNYWNyb0Fzc2VtYmxlciYgaml0LCBjb25z
dCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgY29uc3QgUmVnaXN0ZXJTZXQmIGlnbm9yZSwg
dW5zaWduZWQgbnVtYmVyT2ZTdGFja0J5dGVzVXNlZEZvclJlZ2lzdGVyUHJlc2VydmF0aW9uLCB1
bnNpZ25lZCBleHRyYVBhZGRpbmdJbkJ5dGVzKTsKKworICAgIHN0YXRpYyB1bnNpZ25lZCBwcmVz
ZXJ2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKEFzc2VtYmx5SGVscGVycyYgaml0LCBjb25zdCBS
ZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgdW5zaWduZWQgZXh0cmFQYWRkaW5nSW5CeXRlcyk7
CisgICAgc3RhdGljIHZvaWQgcmVzdG9yZVJlZ2lzdGVyc0Zyb21TdGFja0ZvckNhbGwoQXNzZW1i
bHlIZWxwZXJzJiBqaXQsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBjb25zdCBS
ZWdpc3RlclNldCYgaWdub3JlLCB1bnNpZ25lZCBudW1iZXJPZlN0YWNrQnl0ZXNVc2VkRm9yUmVn
aXN0ZXJQcmVzZXJ2YXRpb24sIHVuc2lnbmVkIGV4dHJhUGFkZGluZ0luQnl0ZXMpOwogCiBwcml2
YXRlOgogICAgIFJlZ2lzdGVyU2V0IG1fdXNlZFJlZ2lzdGVyczsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcAkocmV2aXNpb24g
Mjc4ODg2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9y
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTktMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5ODEsMTAgKzI5ODEsNyBAQCBhdXRvIEFpcklSR2Vu
ZXJhdG9yOjphZGRSZXR1cm4oY29uc3QgQ29uCiAgICAgQjM6OlBhdGNocG9pbnRWYWx1ZSogcGF0
Y2ggPSBhZGRQYXRjaHBvaW50KEIzOjpWb2lkKTsKICAgICBwYXRjaC0+c2V0R2VuZXJhdG9yKFtd
IChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYg
cGFyYW1zKSB7CiAgICAgICAgIGF1dG8gY2FsbGVlU2F2ZXMgPSBwYXJhbXMuY29kZSgpLmNhbGxl
ZVNhdmVSZWdpc3RlckF0T2Zmc2V0TGlzdCgpOwotCi0gICAgICAgIGZvciAoUmVnaXN0ZXJBdE9m
ZnNldCBjYWxsZWVTYXZlIDogY2FsbGVlU2F2ZXMpCi0gICAgICAgICAgICBqaXQubG9hZDY0VG9S
ZWcoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBjYWxs
ZWVTYXZlLm9mZnNldCgpKSwgY2FsbGVlU2F2ZS5yZWcoKSk7Ci0KKyAgICAgICAgaml0LmVtaXRS
ZXN0b3JlKGNhbGxlZVNhdmVzKTsKICAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7
CiAgICAgICAgIGppdC5yZXQoKTsKICAgICB9KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDI3ODg4NikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTIyODQsMTAgKzIyODQsNyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZFJl
dHVybihjb25zdCBDb250CiAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaCA9IG1fcHJvYy5hZGQ8
UGF0Y2hwb2ludFZhbHVlPihCMzo6Vm9pZCwgb3JpZ2luKCkpOwogICAgIHBhdGNoLT5zZXRHZW5l
cmF0b3IoW10gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9u
UGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgYXV0byBjYWxsZWVTYXZlcyA9IHBhcmFtcy5jb2Rl
KCkuY2FsbGVlU2F2ZVJlZ2lzdGVyQXRPZmZzZXRMaXN0KCk7Ci0KLSAgICAgICAgZm9yIChSZWdp
c3RlckF0T2Zmc2V0IGNhbGxlZVNhdmUgOiBjYWxsZWVTYXZlcykKLSAgICAgICAgICAgIGppdC5s
b2FkNjRUb1JlZyhDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0
ZXIsIGNhbGxlZVNhdmUub2Zmc2V0KCkpLCBjYWxsZWVTYXZlLnJlZygpKTsKLQorICAgICAgICBq
aXQuZW1pdFJlc3RvcmUoY2FsbGVlU2F2ZXMpOwogICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBp
bG9ndWUoKTsKICAgICAgICAgaml0LnJldCgpOwogICAgIH0pOwo=
</data>
<flag name="commit-queue"
          id="453254"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431464</attachid>
            <date>2021-06-15 12:19:30 -0700</date>
            <delta_ts>2021-06-15 13:10:29 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-227039.patch</filename>
            <type>text/plain</type>
            <size>104208</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjc4ODg2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2OCBA
QAorMjAyMS0wNi0xNSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
VXNlIGxkcCBhbmQgc3RwIG1vcmUgZm9yIHNhdmluZyAvIHJlc3RvcmluZyByZWdpc3RlcnMgb24g
QVJNNjQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjcwMzkKKyAgICAgICAgcmRhcjovLzc5MzU0NzM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgc3Bvb2xlciBh
YnN0cmFjdGlvbiBpbiBBc3NlbWJseUhlbHBlcnMuICBUaGUgc3Bvb2xlcgorICAgICAgICBiYXNp
Y2FsbHkgYmF0Y2hlcyB1cCBsb2FkIC8gc3RvcmUgb3BlcmF0aW9ucyBhbmQgZW1pdCB0aGVtIGFz
IHBhaXIgaW5zdHJ1Y3Rpb25zCisgICAgICAgIGlmIGFwcHJvcHJpYXRlLgorCisgICAgICAgIFRo
ZXJlIGFyZSA0IHNwb29sZXIgY2xhc3NlczoKKyAgICAgICAgYS4gU3Bvb2xlcgorICAgICAgICAg
ICAtIHRlbXBsYXRlIGJhc2UgY2xhc3MgZm9yIExvYWRSZWdTcG9vbGVyIGFuZCBTdG9yZVJlZ1Nw
b29sZXIuCisgICAgICAgICAgIC0gZW5jYXBzdWxhdGVzIHRoZSBiYXRjaGluZyBzdHJhdGVneSBm
b3IgbG9hZCAvIHN0b3JlIHBhaXJzLgorCisgICAgICAgIGIuIExvYWRSZWdTcG9vbGVyIC0gc3Bl
Y2lhbGl6ZXMgU3Bvb2xlciB0byBoYW5kbGUgbG9hZCBwYWlycy4KKyAgICAgICAgYi4gU3RvcmVS
ZWdTcG9vbGVyIC0gc3BlY2lhbGl6ZXMgU3Bvb2xlciB0byBoYW5kbGUgc3RvcmUgcGFpcnMuCisK
KyAgICAgICAgZC4gQ29weVNwb29sZXIKKyAgICAgICAgICAgLSBoYW5kbGVzIG1hdGNoaW5nIGxv
YWRzIHdpdGggc3RvcmVzLgorICAgICAgICAgICAtIHRyaWVzIHRvIGVtaXQgbG9hZHMgYXMgbG9h
ZCBwYWlycyBpZiBwb3NzaWJsZS4KKyAgICAgICAgICAgLSB0cmllcyB0byBlbW90IHN0b3JlcyBh
cyBzdG9yZSBwYWlycyBpZiBwb3NzaWJsZS4KKyAgICAgICAgICAgLSBlbnN1cmVzIHRoYXQgcHJl
LXJlcXVpc2l0ZSBsb2FkcyBhcmUgZW1pdHRlZCBiZWZvcmUgc3RvcmVzIGFyZSBlbWl0dGVkLgor
ICAgICAgICAgICAtIG90aGVyIHRoYW4gbG9hZHMsIGFsc28gc3VwcG9ydCBjb25zdGFudHMgYW5k
IHJlZ2lzdGVycyBhcyBzb3VyY2VzIG9mIHZhbHVlcworICAgICAgICAgICAgIHRvIGJlIHN0b3Jl
ZC4gIFRoaXMgaXMgdXNlZnVsIGluIE9TUiBleGl0IHJhbXBzIHdoZXJlIHdlIG1heSBtYXRlcmlh
bGl6ZSBhCisgICAgICAgICAgICAgc3RhY2sgdmFsdWUgdG8gc3RvcmUgZnJvbSBjb25zdGFudHMg
b3IgcmVnaXN0ZXJzIGluIGFkZGl0aW9uIHRvIHZhbHVlcyB3ZQorICAgICAgICAgICAgIGxvYWQg
ZnJvbSB0aGUgb2xkIHN0YWNrIGZyYW1lIG9yIGZyb20gYSBzY3JhdGNoIGJ1ZmZlci4KKworICAg
ICAgICBJbiB0aGlzIHBhdGNoLCB3ZSBhbHNvIGRvIHRoZSBmb2xsb3dpbmc6CisKKyAgICAgICAg
MS4gVXNlIHNwb29sZXJzIGluIG1hbnkgcGxhY2VzIHNvIHRoYXQgd2UgY2FuIGVtaXQgbG9hZCAv
IHN0b3JlIHBhaXJzIGluc3RlYWQgb2YKKyAgICAgICAgICAgc2luZ2xlIGxvYWQgLyBzdG9yZXMu
ICBUaGlzIGhlbHBzIHNocmluayBKSVQgY29kZSBzaWRlLCBhbmQgYWxzbyBwb3RlbnRpYWxseQor
ICAgICAgICAgICBpbXByb3ZlcyBwZXJmb3JtYW5jZS4KKworICAgICAgICAyLiBJbiBERkc6Ok9T
UkV4aXQ6OmNvbXBpbGVFeGl0KCksIHdlIHVzZWQgdG8gcmVjb3ZlciBjb25zdGFudHMgaW50byBh
IHNjcmF0Y2gKKyAgICAgICAgICAgYnVmZmVyLCBhbmQgdGhlbiBsYXRlciwgbG9hZCBmcm9tIHRo
YXQgc2NyYXRjaCBidWZmZXIgdG8gc3RvcmUgaW50byB0aGUKKyAgICAgICAgICAgbmV3IHN0YWNr
IGZyYW1lKHMpLgorCisgICAgICAgICAgIFRoaXMgcGF0Y2ggY2hhbmdlcyBpdCBzbyB0aGF0IHdl
IGRlZmVyIGNvbnN0YW50IHJlY292ZXJ5IHVudGlsIHRoZSBmaW5hbAorICAgICAgICAgICBsb29w
IHdoZXJlIHdlIHN0b3JlIHRoZSByZWNvdmVyZWQgdmFsdWUgZGlyZWN0bHkgaW50byB0aGUgbmV3
IHN0YWNrIGZyYW1lKHMpLgorICAgICAgICAgICBUaGlzIHNhdmVzIHVzIHRoZSB3b3JrIChhbmQg
SklUIGNvZGUgc3BhY2UpIGZvciBzdG9yaW5nIGludG8gYSBzY3JhdGNoIGJ1ZmZlcgorICAgICAg
ICAgICBhbmQgdGhlbiByZWxvYWRpbmcgZnJvbSB0aGUgc2NyYXRjaCBidWZmZXIuCisKKyAgICAg
ICAgICAgVGhlcmUgaXMgb25lIGV4Y2VwdGlvbjogdG1wIHZhbHVlcyB1c2VkIGJ5IGFjdGl2ZSBj
aGVja3BvaW50cy4gIFdlIG5lZWQgdG8gY2FsbAorICAgICAgICAgICBvcGVyYXRpb25NYXRlcmlh
bGl6ZU9TUkV4aXRTaWRlU3RhdGUoKSB0byBtYXRlcmlhbGl6ZSB0aGUgYWN0aXZlIGNoZWNrcG9p
bnQKKyAgICAgICAgICAgc2lkZSBzdGF0ZSBiZWZvcmUgdGhlIGZpbmFsIGxvb3Agd2hlcmUgd2Ug
bm93IHJlY292ZXIgY29uc3RhbnRzLiAgSGVuY2UsIHdlCisgICAgICAgICAgIG5lZWQgdGhlc2Ug
dG1wIHZhbHVlcyByZWNvdmVyZWQgYmVmb3JlIGhhbmQuCisKKyAgICAgICAgICAgU28sIHdlIGNo
ZWNrIHVwZnJvbnQgaWYgd2UgaGF2ZSBhY3RpdmUgY2hlY2twb2ludCBzaWRlIHN0YXRlIHRvIG1h
dGVyaWFsaXplLgorICAgICAgICAgICBJZiBzbywgd2UnbGwgZWFnZXJseSByZWNvdmVyIHRoZSBj
b25zdGFudHMgZm9yIGluaXRpYWxpemluZyB0aG9zZSB0bXBzLgorCisgICAgICAgICAgIFdlIGFs
c28gdXNlIHRoZSBDb3B5U3Bvb2xlciBpbiB0aGUgZmluYWwgbG9vcCB0byBlbWl0IGxvYWQgLyBz
dG9yZSBwYWlycyBmb3IKKyAgICAgICAgICAgZmlsbGluZyBpbiB0aGUgbmV3IHN0YWNrIGZyYW1l
KHMpLgorCisgICAgICAgICAgIE9uZSBtb3JlIHRoaW5nOiBpdCB0dXJucyBvdXQgdGhhdCB0aGUg
dmFzdCBtYWpvcml0eSBvZiBjb25zdGFudHMgdG8gYmUgcmVjb3ZlcmVkCisgICAgICAgICAgIGlz
IHNpbXBseSB0aGUgdW5kZWZpbmVkIHZhbHVlLiAgU28sIGFzIGFuIG9wdGltaXphdGlvbiwgdGhl
IGZpbmFsIGxvb3Aga2VlcHMKKyAgICAgICAgICAgdGhlIHVuZGVmaW5lZCB2YWx1ZSBpbiBhIHJl
Z2lzdGVyLCBhbmQgaGFzIHRoZSBzcG9vbGVyIHN0b3JlIGRpcmVjdGx5IGZyb20KKyAgICAgICAg
ICAgdGhhdCByZWdpc3RlciB3aGVuIGFwcHJvcHJpYXRlLiAgVGhpcyBzYXZlcyBvbiBKSVQgY29k
ZSB0byByZXBlYXRlZGx5IG1hdGVyaWFsaXplCisgICAgICAgICAgIHRoZSB1bmRlZmluZWQgSlNW
YWx1ZSBjb25zdGFudC4KKworICAgICAgICAzLiBJbiByZWlmeUlubGluZWRDYWxsRnJhbWVzKCks
IHJlcGxhY2UgdGhlIHVzZSBvZiBHUFJJbmZvOjpub25BcmdHUFIwIHdpdGgKKyAgICAgICAgICAg
R1BSSW5mbzo6cmVnVDQuICBub25BcmdHUFJzIGFyZSBzb21ldGltZXMgbWFwIHRvIGNlcnRhaW4g
cmVnVFhzIG9uIGNlcnRhaW4gcG9ydHMuCisgICAgICAgICAgIFJlcGxhY2luZyB3aXRoIHJlZ1Q0
IG1ha2VzIGl0IGVhc2llciB0byBlbnN1cmUgdGhhdCB3ZSdyZSBub3QgdHJhc2hpbmcgdGhlCisg
ICAgICAgICAgIHJlZ2lzdGVyIHdoZW4gd2UgdXNlIG1vcmUgdGVtcCByZWdpc3RlcnMuCisKKyAg
ICAgICAgICAgcmVpZnlJbmxpbmVkQ2FsbEZyYW1lcygpIHdpbGwgYmUgdXNpbmcgZW1pdFNhdmVP
ckNvcHlMTEludEJhc2VsaW5lQ2FsbGVlU2F2ZXNGb3IoKQorICAgICAgICAgICBsYXRlciB3aGVy
ZSB3ZSBuZWVkIG1vcmUgdGVtcCByZWdpc3RlcnMuCisKKyAgICAgICAgNC4gTW92ZSB0aGUgZm9s
bG93aW5nIGZ1bmN0aW9ucyB0byBBc3NlbWJseUhlbHBlcnMuY3BwLiAgVGhleSBkb24ndCBuZWVk
IHRvIGJlCisgICAgICAgICAgIGlubGluZSBmdW5jdGlvbnMuICBTcGVlZG9tZXRlcjIgYW5kIEpl
dFN0cmVhbTIgc2hvd3MgdGhhdCBtYWtpbmcgdGhlc2Ugbm9uCisgICAgICAgICAgIGlubGluZSBk
b2VzIG5vdCBodXJ0IHBlcmZvcm1hbmNlOgorCisgICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxw
ZXJzOjplbWl0U2F2ZShjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCYpOworICAgICAgICAgICAg
ICAgIEFzc2VtYmx5SGVscGVyczo6ZW1pdFJlc3RvcmUoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExp
c3QmKTsKKyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OmVtaXRTYXZlQ2FsbGVlU2F2
ZXNGb3IoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QqKTsKKyAgICAgICAgICAgICAgICBBc3Nl
bWJseUhlbHBlcnM6OmVtaXRTYXZlT3JDb3B5Q2FsbGVlU2F2ZXNGb3IoLi4uKTsKKyAgICAgICAg
ICAgICAgICBBc3NlbWJseUhlbHBlcnM6OmVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXNGb3IoY29uc3Qg
UmVnaXN0ZXJBdE9mZnNldExpc3QqKTsKKyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6
OmNvcHlMTEludEJhc2VsaW5lQ2FsbGVlU2F2ZXNGcm9tRnJhbWVPclJlZ2lzdGVyVG9FbnRyeUZy
YW1lQ2FsbGVlU2F2ZXNCdWZmZXIoLi4uKTsKKworICAgICAgICAgICBBbHNvIHJlbmFtZWQgZW1p
dFNhdmVPckNvcHlDYWxsZWVTYXZlc0ZvcigpIHRvIGVtaXRTYXZlT3JDb3B5TExJbnRCYXNlbGlu
ZUNhbGxlZVNhdmVzRm9yKCkKKyAgICAgICAgICAgYmVjYXVzZSBpdCBpcyBvbmx5IHVzZWQgd2l0
aCBiYXNlbGluZSBjb2RlQmxvY2tzLgorCisgICAgICAgIFJlc3VsdHM6CisgICAgICAgIEN1bW11
bGF0aXZlIExpbmtCdWZmZXIgcHJvZmlsZSBzaXplcyBzaHJ1bmsgYnkgfjJNIGluIGFnZ3JlZ2F0
ZToKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UgICAgICAgICAgICAgICAgICAg
ICAgICAgICBuZXcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PT09ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPT09CisgICAgICAgICAgICAgICBCYXNlbGluZUpJVDogODM4MjcwNDgg
KDc5Ljk0MzcwMyBNQikgICAgID0+IDgzNzE4NzM2ICg3OS44NDA0MDggTUIpCisgICAgICAgICAg
ICAgICAgICAgICAgIERGRzogNTY1OTQ4MzYgKDUzLjk3MzA0MiBNQikgICAgID0+IDU2NjAzNTA4
ICg1My45ODEzMTIgTUIpCisgICAgICAgICAgICAgICBJbmxpbmVDYWNoZTogMzM5MjM5MDAgKDMy
LjM1MjM1MiBNQikgICAgID0+IDMzMTgzMTU2ICgzMS42NDU5MjQgTUIpCisgICAgICAgICAgICAg
ICAgICAgICAgIEZUTDogNjc3MDk1NiAoNi40NTcyODcgTUIpICAgICAgID0+IDY1Njg5NjQgKDYu
MjY0NjUyIE1CKQorICAgICAgICAgICAgICAgIERGR09TUkV4aXQ6IDUyMTIwOTYgKDQuOTcwNjQy
IE1CKSAgICAgICA9PiAzNzI4MDg4ICgzLjU1NTM4MiBNQikKKyAgICAgICAgICAgICAgICAgICAg
Q1NTSklUOiA3NDg0MjggKDczMC44ODY3MTkgS0IpICAgICAgPT4gNzQ4NDI4ICg3MzAuODg2NzE5
IEtCKQorICAgICAgICAgICAgICAgIEZUTE9TUkV4aXQ6IDY5MjI3NiAoNjc2LjA1MDc4MSBLQikg
ICAgICA9PiA2NTY4ODQgKDY0MS40ODgyODEgS0IpCisgICAgICAgICAgICAgICAgICAgWWFyckpJ
VDogNDQ1MjgwICg0MzQuODQzNzUwIEtCKSAgICAgID0+IDUxMjk4OCAoNTAwLjk2NDg0NCBLQikK
KyAgICAgICAgICAgICAgICAgIEZUTFRodW5rOiAyMjkwOCAoMjIuMzcxMDk0IEtCKSAgICAgICAg
PT4gMjI1NTYgKDIyLjAyNzM0NCBLQikKKyAgICAgICAgQm91bmRGdW5jdGlvblRodW5rOiA4NDAw
ICg4LjIwMzEyNSBLQikgICAgICAgICAgPT4gMTAwODggKDkuODUxNTYyIEtCKQorICAgICAgICAg
ICAgIEV4dHJhQ1RJVGh1bms6IDY5NTIgKDYuNzg5MDYyIEtCKSAgICAgICAgICA9PiA2ODI0ICg2
LjY2NDA2MiBLQikKKyAgICAgICAgICBTcGVjaWFsaXplZFRodW5rOiA0NTA4ICg0LjQwMjM0NCBL
QikgICAgICAgICAgPT4gNDUwOCAoNC40MDIzNDQgS0IpCisgICAgICAgICAgICAgICAgICAgICBU
aHVuazogMzkxMiAoMy44MjAzMTIgS0IpICAgICAgICAgID0+IDM3ODQgKDMuNjk1MzEyIEtCKQor
ICAgICAgICAgICAgICAgIExMSW50VGh1bms6IDI5MDggKDIuODM5ODQ0IEtCKSAgICAgICAgICA9
PiAyOTA4ICgyLjgzOTg0NCBLQikKKyAgICAgICAgICAgICAgVmlydHVhbFRodW5rOiAxMjQ4ICgx
LjIxODc1MCBLQikgICAgICAgICAgPT4gMTI0OCAoMS4yMTg3NTAgS0IpCisgICAgICAgICAgICAg
ICAgICBERkdUaHVuazogMTA4NCAoMS4wNTg1OTQgS0IpICAgICAgICAgID0+IDQ0NAorICAgICAg
ICAgICAgICAgREZHT1NSRW50cnk6IDIxNiAgICAgICAgICAgICAgICAgICAgICAgICA9PiAxODQK
KyAgICAgICAgICAgICAgICBKdW1wSXNsYW5kOiAwCisgICAgICAgICAgICAgICAgIFdhc21UaHVu
azogMAorICAgICAgICAgICAgICAgICAgICAgIFdhc206IDAKKyAgICAgICAgICAgICBVbmNhdGVn
b3JpemVkOiAwCisgICAgICAgICAgICAgICAgICAgICBUb3RhbDogMTg4MjY2OTU2ICgxNzkuNTQ1
MzYxIE1CKSAgID0+IDE4NTc3MzI5NiAoMTc3LjE2NzIyMSBNQikKKworICAgICAgICBTcGVlZG9t
ZXRlcjIgYW5kIEpldFN0cmVhbTIgcmVzdWx0cyBzaG93cyB0aGF0IHBlcmZvcm1hbmNlIGlzIG5l
dXRyYWwgZm9yIHRoaXMKKyAgICAgICAgcGF0Y2ggKGFzIG1lYXN1cmVkIG9uIGFuIE0xIE1hYyk6
CisKKyAgICAgICAgU3BlZWRvbWV0ZXIyOgorICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAg
ICAgIHwgICAgICAgICAgICAgICBzdWJ0ZXN0ICAgICAgICAgICAgICAgIHwgICAgIG1zICAgICAg
fCAgICAgbXMgICAgICB8ICBiIC8gYSAgIHwgcFZhbHVlIChzaWduaWZpY2FuY2UgdXNpbmcgRmFs
c2UgRGlzY292ZXJ5IFJhdGUpIHwKKyAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICB8
IEVsbS1Ub2RvTVZDICAgICAgICAgICAgICAgICAgICAgICAgICB8MTI5LjAzNzUwMCAgIHwxMjcu
MjEyNTAwICAgfDAuOTg1ODU3ICB8IDAuMDEyNzA2ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8CisgICAgICAgIHwgVnVlSlMtVG9kb01WQyAgICAgICAgICAgICAgICAg
ICAgICAgIHwyOC4zMTI1MDAgICAgfDI3LjUyNTAwMCAgICB8MC45NzIxODUgIHwgMC4yNDAzMTUg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBFbWJl
ckpTLVRvZG9NVkMgICAgICAgICAgICAgICAgICAgICAgfDEzMi41NTAwMDAgICB8MTMyLjAyNTAw
MCAgIHwwLjk5NjAzOSAgfCAwLjUzODAzNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfAorICAgICAgICB8IEZsaWdodC1Ub2RvTVZDICAgICAgICAgICAgICAgICAgICAg
ICB8ODAuNzYyNTAwICAgIHw4MC44NzUwMDAgICAgfDEuMDAxMzkzICB8IDAuOTE0NzQ5ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgQmFja2JvbmVK
Uy1Ub2RvTVZDICAgICAgICAgICAgICAgICAgIHw1MS42Mzc1MDAgICAgfDUxLjE3NTAwMCAgICB8
MC45OTEwNDMgIHwgMC4yODU0MjcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwKKyAgICAgICAgfCBQcmVhY3QtVG9kb01WQyAgICAgICAgICAgICAgICAgICAgICAgfDIx
LjAyNTAwMCAgICB8MjIuMDc1MDAwICAgIHwxLjA0OTk0MSAgfCAwLjIwNjE0MCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IEFuZ3VsYXJKUy1Ub2Rv
TVZDICAgICAgICAgICAgICAgICAgICB8MTQyLjkwMDAwMCAgIHwxNDIuODg3NTAwICAgfDAuOTk5
OTEzICB8IDAuOTkwNjgxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
CisgICAgICAgIHwgSW5mZXJuby1Ub2RvTVZDICAgICAgICAgICAgICAgICAgICAgIHw2OS4zMDAw
MDAgICAgfDY5Ljc3NTAwMCAgICB8MS4wMDY4NTQgIHwgMC41MDUyMDEgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBWYW5pbGxhLUVTMjAxNS1Ub2Rv
TVZDICAgICAgICAgICAgICAgfDcxLjUwMDAwMCAgICB8NzEuMjI1MDAwICAgIHwwLjk5NjE1NCAg
fCAwLjYwODY1MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAg
ICAgICB8IEFuZ3VsYXIyLVR5cGVTY3JpcHQtVG9kb01WQyAgICAgICAgICB8NDMuMjg3NTAwICAg
IHw0My4yNzUwMDAgICAgfDAuOTk5NzExICB8IDAuOTg3OTI2ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgVmFuaWxsYUpTLVRvZG9NVkMgICAgICAg
ICAgICAgICAgICAgIHw1Ny4yMTI1MDAgICAgfDU3LjgxMjUwMCAgICB8MS4wMTA0ODcgIHwgMC4z
MzMzNTcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAg
fCBqUXVlcnktVG9kb01WQyAgICAgICAgICAgICAgICAgICAgICAgfDI3Ni4xNTAwMDAgICB8Mjc2
Ljc3NTAwMCAgIHwxLjAwMjI2MyAgfCAwLjYxNDQwNCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfAorICAgICAgICB8IEVtYmVySlMtRGVidWctVG9kb01WQyAgICAgICAg
ICAgICAgICB8MzUzLjYxMjUwMCAgIHwzNTIuNzYyNTAwICAgfDAuOTk3NTk2ICB8IDAuNTE4ODM2
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgUmVh
Y3QtVG9kb01WQyAgICAgICAgICAgICAgICAgICAgICAgIHw5My42Mzc1MDAgICAgfDkyLjYzNzUw
MCAgICB8MC45ODkzMjEgIHwgMC4wMzYyNzcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwKKyAgICAgICAgfCBSZWFjdC1SZWR1eC1Ub2RvTVZDICAgICAgICAgICAgICAg
ICAgfDE1OC4yMzc1MDAgICB8MTU2LjU4NzUwMCAgIHwwLjk4OTU3MyAgfCAwLjA0MjE1NCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IFZhbmlsbGEt
RVMyMDE1LUJhYmVsLVdlYnBhY2stVG9kb01WQyB8NjguMDUwMDAwICAgIHw2OC4wODc1MDAgICAg
fDEuMDAwNTUxICB8IDAuODk3MTQ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8CisgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgICAgICBhIG1lYW4gPSAyMzYu
MjY5NTAKKyAgICAgICAgYiBtZWFuID0gMjM2LjU3OTY0CisgICAgICAgIHBWYWx1ZSA9IDAuNzgz
MDc4NTkzOAorICAgICAgICAoQmlnZ2VyIG1lYW5zIGFyZSBiZXR0ZXIuKQorICAgICAgICAxLjAw
MSB0aW1lcyBiZXR0ZXIKKyAgICAgICAgUmVzdWx0cyBBUkUgTk9UIHNpZ25pZmljYW50CisKKyAg
ICAgICAgSmV0U3RyZWFtMjoKKyAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICB8ICAgICAgICAgIHN1
YnRlc3QgICAgICAgICAgfCAgICAgcHRzICAgICAgfCAgICAgcHRzICAgICAgfCAgYiAvIGEgICB8
IHBWYWx1ZSAoc2lnbmlmaWNhbmNlIHVzaW5nIEZhbHNlIERpc2NvdmVyeSBSYXRlKSB8CisgICAg
ICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKyAgICAgICAgfCBnYXVzc2lhbi1ibHVyICAgICAgICAgICAgIHw1NDIuNTcw
MDU3ICAgIHw1NDIuNjcxODg1ICAgIHwxLjAwMDE4OCAgfCAwLjk4MjU3MyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IEhhc2hTZXQtd2FzbSAgICAg
ICAgICAgICAgfDU3LjcxMDQ5OCAgICAgfDY0LjQwNjM3MSAgICAgfDEuMTE2MDI1ICB8IDAuNDAx
NDI0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwg
Z2NjLWxvb3BzLXdhc20gICAgICAgICAgICB8NDQuNTE2MDA5ICAgICB8NDQuNDUzNTM1ICAgICB8
MC45OTg1OTcgIHwgMC45NzM2NTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwKKyAgICAgICAgfCBqc29uLXBhcnNlLWluc3BlY3RvciAgICAgIHwyNDEuMjc1MDg1ICAg
IHwyNDAuNzIwNDkxICAgIHwwLjk5NzcwMSAgfCAwLjcwNDczMiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IHByZXBhY2std3RiICAgICAgICAgICAg
ICAgfDYyLjY0MDExNCAgICAgfDYzLjc1NDg3OCAgICAgfDEuMDE3Nzk2ICB8IDAuMjA1ODQwICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgZGF0ZS1m
b3JtYXQteHBhcmItU1AgICAgICB8NDE2Ljk3NjgxNyAgICB8NDQ4LjkyMTQwOSAgICB8MS4wNzY2
MTAgIHwgMC4wNTI5NzcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwK
KyAgICAgICAgfCBXU0wgICAgICAgICAgICAgICAgICAgICAgIHwxLjU1NTI1NyAgICAgIHwxLjU3
MDIzMyAgICAgIHwxLjAwOTYyOSAgfCAwLjQyNzkyNCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfAorICAgICAgICB8IE9mZmxpbmVBc3NlbWJsZXIgICAgICAgICAgfDE3
Ny4wNTIzNTIgICAgfDE3OS43NDY1MTEgICAgfDEuMDE1MjE3ICB8IDAuMTEyMTE0ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgY2RqcyAgICAgICAg
ICAgICAgICAgICAgICB8MTkyLjUxNzU4NiAgICB8MTk0LjU5ODkwNiAgICB8MS4wMTA4MTEgIHwg
MC4wMjU4MDcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAg
ICAgfCBVbmlQb2tlciAgICAgICAgICAgICAgICAgIHw1MTQuMDIzNjk0ICAgIHw1MjYuMTExNTAw
ICAgIHwxLjAyMzUxNiAgfCAwLjI2OTg5MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfAorICAgICAgICB8IGpzb24tc3RyaW5naWZ5LWluc3BlY3RvciAgfDIyNy41ODQ3
MjUgICAgfDIyMy42MTkzOTAgICAgfDAuOTgyNTc2ICB8IDAuMTAyNzE0ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgY3J5cHRvLXNoYTEtU1AgICAg
ICAgICAgICB8OTgwLjcyODc4OCAgICB8OTg0LjE5MjEwNCAgICB8MS4wMDM1MzEgIHwgMC44Mzg2
MTggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBC
YXNpYyAgICAgICAgICAgICAgICAgICAgIHw2ODUuMTQ4NDgzICAgIHw3MTEuNTkwMjQ3ICAgIHwx
LjAzODU5MyAgfCAwLjE0Mjk1MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfAorICAgICAgICB8IGNoYWktd3RiICAgICAgICAgICAgICAgICAgfDEwNi4yNTYzNzYgICAg
fDEwNi41OTAzMTggICAgfDEuMDAzMTQzICB8IDAuODY1ODk0ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgY3J5cHRvLWFlcy1TUCAgICAgICAgICAg
ICB8NzIyLjMwODgyOSAgICB8NzI4LjcwMjMxMCAgICB8MS4wMDg4NTEgIHwgMC40ODY3NjYgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBCYWJ5bG9u
ICAgICAgICAgICAgICAgICAgIHw2NTUuODU3NTYxICAgIHw2NTQuMjA0OTAxICAgIHwwLjk5NzQ4
MCAgfCAwLjkzMTUyMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAor
ICAgICAgICB8IHN0cmluZy11bnBhY2stY29kZS1TUCAgICAgfDQwNy44MzcyNzEgICAgfDQwNS43
MTA3NTIgICAgfDAuOTk0Nzg2ICB8IDAuNzI5MTIyICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8CisgICAgICAgIHwgc3RhbmZvcmQtY3J5cHRvLWFlcyAgICAgICB8NDU2
LjkwNjAyMSAgICB8NDQ5Ljk5Mzg1NiAgICB8MC45ODQ4NzIgIHwgMC4yNzI5OTQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCByYXl0cmFjZSAgICAg
ICAgICAgICAgICAgIHw4ODMuOTExMzM1ICAgIHw5MDIuODg3MjM4ICAgIHwxLjAyMTQ2OCAgfCAw
LjE4OTc4NSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAg
ICB8IG11bHRpLWluc3BlY3Rvci1jb2RlLWxvYWQgfDQwOS45OTczNDcgICAgfDQwNS42NDM2Mzkg
ICAgfDAuOTg5MzgxICB8IDAuNjQ0NDQ3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8CisgICAgICAgIHwgaGFzaC1tYXAgICAgICAgICAgICAgICAgICB8NTkzLjU5MDE2
MCAgICB8NjAxLjU3NjMzMiAgICB8MS4wMTM0NTQgIHwgMC4yNDk0MTQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBzdGFuZm9yZC1jcnlwdG8tcGJr
ZGYyICAgIHw3MjIuMTc4NjM4ICAgIHw3MjguMjgzNTMyICAgIHwxLjAwODQ1MyAgfCAwLjY2MTE5
NSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IGNv
ZmZlZXNjcmlwdC13dGIgICAgICAgICAgfDQyLjM5MzU0NCAgICAgfDQxLjg2OTU0NSAgICAgfDAu
OTg3NjQwICB8IDAuMTk3NDQxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8CisgICAgICAgIHwgQm94MkQgICAgICAgICAgICAgICAgICAgICB8NDUyLjAzNDY4NSAgICB8
NDU0LjEwNDg2OCAgICB8MS4wMDQ1ODAgIHwgMC41MzUzNDIgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCByaWNoYXJkcy13YXNtICAgICAgICAgICAg
IHwxNDAuODczNjg4ICAgIHwxNDguMzk0MDUwICAgIHwxLjA1MzM4NCAgfCAwLjMwMzY1MSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IGxlYmFiLXd0
YiAgICAgICAgICAgICAgICAgfDYxLjY3MTMxOCAgICAgfDYyLjExOTQwMyAgICAgfDEuMDA3MjY2
ICB8IDAuNjIwOTk4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cisg
ICAgICAgIHwgdHNmLXdhc20gICAgICAgICAgICAgICAgICB8MTA4LjU5Mjc5NCAgICB8MTE5LjQ5
ODM5OCAgICB8MS4xMDA0MjcgIHwgMC41MDQ3MTAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwKKyAgICAgICAgfCBiYXNlNjQtU1AgICAgICAgICAgICAgICAgIHw2Mjku
NzQ0NjQzICAgIHw2MDMuNDI1NTY1ICAgIHwwLjk1ODIwNyAgfCAwLjA0OTk5NyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IG5hdmllci1zdG9rZXMg
ICAgICAgICAgICAgfDc0MC41ODg1MjMgICAgfDczOS45NTE2NjIgICAgfDAuOTk5MTQwICB8IDAu
ODcxNDQ1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAg
IHwganNoaW50LXd0YiAgICAgICAgICAgICAgICB8NTEuOTM4MzU5ICAgICB8NTIuNjUxMTA0ICAg
ICB8MS4wMTM3MjMgIHwgMC4yMTcxMzcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwKKyAgICAgICAgfCByZWdleC1kbmEtU1AgICAgICAgICAgICAgIHw0NTkuMjUxMTQ4
ICAgIHw0NjMuNDkyNDg5ICAgIHwxLjAwOTIzNSAgfCAwLjM3MTg5MSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IGFzeW5jLWZzICAgICAgICAgICAg
ICAgICAgfDIzNS44NTM4MjAgICAgfDIzNi4wMzExODkgICAgfDEuMDAwNzUyICB8IDAuOTM4NDU5
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgZmly
c3QtaW5zcGVjdG9yLWNvZGUtbG9hZCB8Mjc1LjI5ODMyNSAgICB8Mjc0LjE3MjEyNSAgICB8MC45
OTU5MDkgIHwgMC42MjM0MDMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwKKyAgICAgICAgfCBzZWdtZW50YXRpb24gICAgICAgICAgICAgIHw0NC4wMDI4NDIgICAgIHw0
My40NDU5NjAgICAgIHwwLjk4NzM0NCAgfCAwLjIwNzEzNCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IHR5cGVzY3JpcHQgICAgICAgICAgICAgICAg
fDI2LjM2MDE2MSAgICAgfDI2LjQ1ODgyMCAgICAgfDEuMDAzNzQzICB8IDAuNjA5OTQyICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgb2N0YW5lLWNv
ZGUtbG9hZCAgICAgICAgICB8MTEyNi43NDkwMzYgICB8MTA4Ny4xMzIwMjQgICB8MC45NjQ4NDAg
IHwgMC41MjQxNzEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAg
ICAgICAgfCBmbG9hdC1tbS5jICAgICAgICAgICAgICAgIHwxNi42OTE5MzUgICAgIHwxNi43MjEz
NTQgICAgIHwxLjAwMTc2MiAgfCAwLjE5NDQyNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfAorICAgICAgICB8IHF1aWNrc29ydC13YXNtICAgICAgICAgICAgfDQ2MS42
MzAwOTEgICAgfDQ1MC4xNjExMjcgICAgfDAuOTc1MTU2ICB8IDAuMzcxMzk0ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgQWlyICAgICAgICAgICAg
ICAgICAgICAgICB8MzkyLjQ0MjM3NSAgICB8NDEyLjIwMTgxMCAgICB8MS4wNTAzNTAgIHwgMC4w
NDY4ODcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAg
fCBzcGxheSAgICAgICAgICAgICAgICAgICAgIHw1MTAuMTExODg2ICAgIHw0NzUuMTMxNjU3ICAg
IHwwLjkzMTQyNiAgfCAwLjAyNDczMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfAorICAgICAgICB8IGFpLWFzdGFyICAgICAgICAgICAgICAgICAgfDYwNy45NjY5NzQg
ICAgfDYyNi41NzMxODEgICAgfDEuMDMwNjA0ICB8IDAuNDY4NzExICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgYWNvcm4td3RiICAgICAgICAgICAg
ICAgICB8NjcuNTEwNzY2ICAgICB8NjguMTQzOTU2ICAgICB8MS4wMDkzNzkgIHwgMC40ODE2NjMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBnYmVt
dSAgICAgICAgICAgICAgICAgICAgIHwxNDQuMTMzODQyICAgIHwxNDUuNjIwMzA0ICAgIHwxLjAx
MDMxMyAgfCAwLjgwMjE1NCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fAorICAgICAgICB8IHJpY2hhcmRzICAgICAgICAgICAgICAgICAgfDk2My40NzUwNzggICAgfDk0
Ni42NTg4NzkgICAgfDAuOTgyNTQ2ICB8IDAuMjMxMTg5ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgM2QtY3ViZS1TUCAgICAgICAgICAgICAgICB8
NTQ5LjQyNjc4NCAgICB8NTUwLjQ3OTE1NCAgICB8MS4wMDE5MTUgIHwgMC44MzEzMDcgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBlc3ByZWUtd3Ri
ICAgICAgICAgICAgICAgIHw2OC43MDc0ODMgICAgIHw3My43NjIyMDIgICAgIHwxLjA3MzU2OSAg
fCAwLjAzMzYwMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAg
ICAgICB8IGJvbWItd29ya2VycyAgICAgICAgICAgICAgfDk2Ljg4MjU5NiAgICAgfDk2LjExNjEy
MSAgICAgfDAuOTkyMDg5ICB8IDAuNjg3OTUyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8CisgICAgICAgIHwgdGFnY2xvdWQtU1AgICAgICAgICAgICAgICB8MzA5Ljg4
ODc2NyAgICB8MzAzLjUzODUxMSAgICB8MC45Nzk1MDggIHwgMC4xODc3NjggICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBtYW5kcmVlbCAgICAgICAg
ICAgICAgICAgIHwxMzMuNjY3MDMxICAgIHwxMzUuMDA5OTI5ICAgIHwxLjAxMDA0NyAgfCAwLjA3
NTIzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8
IDNkLXJheXRyYWNlLVNQICAgICAgICAgICAgfDQ5MS45Njc2NDkgICAgfDQ5Mi41Mjg5OTIgICAg
fDEuMDAxMTQxICB8IDAuOTU3ODQyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8CisgICAgICAgIHwgZGVsdGEtYmx1ZSAgICAgICAgICAgICAgICB8MTA2Ni43MTgzMTIg
ICB8MTA4MC4yMzA3NzIgICB8MS4wMTI2NjcgIHwgMC41NDkzODIgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBNTCAgICAgICAgICAgICAgICAgICAg
ICAgIHwxMzkuNjE3MjkzICAgIHwxNDAuMDg4NjMwICAgIHwxLjAwMzM3NiAgfCAwLjY2MTY1MSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IHJlZ2V4
cCAgICAgICAgICAgICAgICAgICAgfDM1MS43NzM5NTYgICAgfDM1MS4wNzU5MzUgICAgfDAuOTk4
MDE2ICB8IDAuNzY5MjUwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
CisgICAgICAgIHwgY3J5cHRvICAgICAgICAgICAgICAgICAgICB8MTUxMC40NzQ2NjMgICB8MTUx
OS4yMTg4NDIgICB8MS4wMDU3ODkgIHwgMC42Mzg0MjAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBjcnlwdG8tbWQ1LVNQICAgICAgICAgICAgIHw3
OTUuNDQ3ODk5ICAgIHw3NzQuMDgyNDkzICAgIHwwLjk3MzE0MCAgfCAwLjA3OTcyOCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IGVhcmxleS1ib3ll
ciAgICAgICAgICAgICAgfDgxMi41NzQ1NDUgICAgfDg3MC42NzgzNzIgICAgfDEuMDcxNTA2ICB8
IDAuMDQ0MDgxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAg
ICAgIHwgb2N0YW5lLXpsaWIgICAgICAgICAgICAgICB8MjUuMTYyNDcwICAgICB8MjUuNjYwMjYx
ICAgICB8MS4wMTk3ODMgIHwgMC41NTQ1OTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwKKyAgICAgICAgfCBkYXRlLWZvcm1hdC10b2Z0ZS1TUCAgICAgIHwzOTUuMjk2
MTM1ICAgIHwzOTguMDA4OTkyICAgIHwxLjAwNjg2MyAgfCAwLjY1MDQ3NSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IG4tYm9keS1TUCAgICAgICAg
ICAgICAgICAgfDExNjUuMzg2NjExICAgfDExNTAuNTI1MTEwICAgfDAuOTg3MjQ4ICB8IDAuMjI3
OTA4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwg
cGRmanMgICAgICAgICAgICAgICAgICAgICB8MTg5LjA2MDI1MiAgICB8MTkxLjAxNTYyOCAgICB8
MS4wMTAzNDMgIHwgMC42MzM3NzcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwKKyAgICAgICAgfCBGbGlnaHRQbGFubmVyICAgICAgICAgICAgIHw5MDguNDI2MTkyICAg
IHw5MDMuNjM2NjQyICAgIHwwLjk5NDcyOCAgfCAwLjgzODgyMSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IHVnbGlmeS1qcy13dGIgICAgICAgICAg
ICAgfDM0LjAyOTM5OSAgICAgfDM0LjE2NDM0MiAgICAgfDEuMDAzOTY1ICB8IDAuNjU1NjUyICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgYmFieWxv
bi13dGIgICAgICAgICAgICAgICB8ODEuMzI5ODY5ICAgICB8ODAuODU1NjgwICAgICB8MC45OTQx
NzAgIHwgMC44NTQzOTMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwK
KyAgICAgICAgfCBzdGFuZm9yZC1jcnlwdG8tc2hhMjU2ICAgIHw4MjYuODUwNTMzICAgIHw4Mzgu
NDk0MTY0ICAgIHwxLjAxNDA4MiAgfCAwLjU3OTYzNiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfAorICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAgICAgYSBtZWFuID0gMjM3
LjkxMDg0CisgICAgICAgIGIgbWVhbiA9IDIzOS45MjY3MAorICAgICAgICBwVmFsdWUgPSAwLjA2
NTc3MTA4OTcKKyAgICAgICAgKEJpZ2dlciBtZWFucyBhcmUgYmV0dGVyLikKKyAgICAgICAgMS4w
MDggdGltZXMgYmV0dGVyCisgICAgICAgIFJlc3VsdHMgQVJFIE5PVCBzaWduaWZpY2FudAorCisg
ICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIu
aDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OnB1c2hUb1NhdmVCeXRlT2Zmc2V0KToK
KyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpwdXNoVG9TYXZlQnl0ZU9mZnNldCk6CisgICAgICAgICog
ZGZnL0RGR09TUkV4aXQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXQ6OmNvbXBpbGVF
eGl0KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpyZWlmeUlubGluZWRDYWxsRnJhbWVzKToKKyAgICAgICAgKiBkZmcvREZH
VGh1bmtzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpvc3JFeGl0R2VuZXJhdGlvblRodW5rR2Vu
ZXJhdG9yKToKKyAgICAgICAgKiBmdGwvRlRMU2F2ZVJlc3RvcmUuY3BwOgorICAgICAgICAoSlND
OjpGVEw6OnNhdmVBbGxSZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpGVEw6OnJlc3RvcmVBbGxS
ZWdpc3RlcnMpOgorICAgICAgICAqIGZ0bC9GVExTYXZlUmVzdG9yZS5oOgorICAgICAgICAqIGZ0
bC9GVExUaHVua3MuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmdlbmVyaWNHZW5lcmF0aW9uVGh1
bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpGVEw6OnNsb3dQYXRoQ2FsbFRodW5rR2VuZXJh
dG9yKToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6
QXNzZW1ibHlIZWxwZXJzOjpyZXN0b3JlQ2FsbGVlU2F2ZXNGcm9tRW50cnlGcmFtZUNhbGxlZVNh
dmVzQnVmZmVyKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpjb3B5Q2FsbGVlU2F2
ZXNUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlckltcGwpOgorICAgICAgICAoSlNDOjpBc3Nl
bWJseUhlbHBlcnM6OmVtaXRTYXZlKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpl
bWl0UmVzdG9yZSk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdFNhdmVDYWxs
ZWVTYXZlc0Zvcik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdFJlc3RvcmVD
YWxsZWVTYXZlc0Zvcik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6Y29weUxMSW50
QmFzZWxpbmVDYWxsZWVTYXZlc0Zyb21GcmFtZU9yUmVnaXN0ZXJUb0VudHJ5RnJhbWVDYWxsZWVT
YXZlc0J1ZmZlcik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdFNhdmVPckNv
cHlMTEludEJhc2VsaW5lQ2FsbGVlU2F2ZXNGb3IpOgorICAgICAgICAqIGppdC9Bc3NlbWJseUhl
bHBlcnMuaDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpjb3B5TExJbnRCYXNlbGlu
ZUNhbGxlZVNhdmVzRnJvbUZyYW1lT3JSZWdpc3RlclRvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVm
ZmVyKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0U2F2ZSk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdFJlc3RvcmUpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRTYXZlT3JDb3B5Q2FsbGVlU2F2ZXNG
b3IpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9TY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuY3Bw
OgorICAgICAgICAoSlNDOjpTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OnByZXNlcnZlUmV1c2Vk
UmVnaXN0ZXJzQnlQdXNoaW5nKToKKyAgICAgICAgKEpTQzo6U2NyYXRjaFJlZ2lzdGVyQWxsb2Nh
dG9yOjpyZXN0b3JlUmV1c2VkUmVnaXN0ZXJzQnlQb3BwaW5nKToKKyAgICAgICAgKEpTQzo6U2Ny
YXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpwcmVzZXJ2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKToK
KyAgICAgICAgKEpTQzo6U2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpyZXN0b3JlUmVnaXN0ZXJz
RnJvbVN0YWNrRm9yQ2FsbCk6CisgICAgICAgICogaml0L1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRv
ci5oOgorICAgICAgICAqIHdhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpT
Qzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OmFkZFJldHVybik6CisgICAgICAgICogd2FzbS9XYXNt
QjNJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmFk
ZFJldHVybik6CisKIDIwMjEtMDYtMTUgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0Bn
bm9tZS5vcmc+CiAKICAgICAgICAgLVdhcnJheS1ib3VuZHMgd2FybmluZyBpbiBQYWNrZWQuaApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjc4ODg2KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC03NTcsNiArNzU3LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hF
QQogICAgIGludGVycHJldGVyL1ZNRW50cnlSZWNvcmQuaAogCiAgICAgaml0L0Fzc2VtYmx5SGVs
cGVycy5oCisgICAgaml0L0Fzc2VtYmx5SGVscGVyc1Nwb29sZXJzLmgKICAgICBqaXQvQ0NhbGxI
ZWxwZXJzLmgKICAgICBqaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5oCiAgICAgaml0L0ZQUkluZm8u
aApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI3ODg4NikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQ4LDYgKzExNDgsNyBAQAogCQk2NUI4MzkyRTFC
QUNBRDM2MDA0NEU4MjQgLyogQ2FjaGVkUmVjb3ZlcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1QjgzOTJDMUJBQ0E5MkEwMDQ0RTgyNCAvKiBDYWNo
ZWRSZWNvdmVyeS5oICovOyB9OwogCQk2QTM4Q0ZBQTFFMzJCNUFCMDA2MDIwNkYgLyogQXN5bmNT
dGFja1RyYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA2QTM4Q0ZBODFFMzJCNThCMDA2MDIwNkYgLyogQXN5bmNTdGFja1RyYWNlLmggKi87IH07CiAJ
CTZBRDJDQjREMTlCOTE0MDEwMDA2NTcxOSAvKiBEZWJ1Z2dlckV2YWxFbmFibGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QUQyQ0I0QzE5QjkxNDAx
MDAwNjU3MTkgLyogRGVidWdnZXJFdmFsRW5hYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTZCNzY3RTdCMjY3OTFGMjcwMDE3RjhEMSAvKiBB
c3NlbWJseUhlbHBlcnNTcG9vbGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNkI3NjdFN0EyNjc5MUYyNzAwMTdGOEQxIC8qIEFzc2VtYmx5SGVscGVy
c1Nwb29sZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNkJDQ0VDMDQyNUQxRkEyNzAwMEYzOTFEIC8qIFZlcmlmaWVyU2xvdFZpc2l0b3JJbmxp
bmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QkND
RUMwMzI1RDFGQTI3MDAwRjM5MUQgLyogVmVyaWZpZXJTbG90VmlzaXRvcklubGluZXMuaCAqLzsg
fTsKIAkJNzAxMTNENEMxQThEQjA5MzAwMzg0OEM0IC8qIEl0ZXJhdG9yT3BlcmF0aW9ucy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzAxMTNENEExQThE
QjA5MzAwMzg0OEM0IC8qIEl0ZXJhdG9yT3BlcmF0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcwMTNDQThDMUI0OTFBOTQwMENBRTYxMyAv
KiBKU01pY3JvdGFzay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzAxM0NBOEExQjQ5MUE5NDAwQ0FFNjEzIC8qIEpTTWljcm90YXNrLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM5OTcsNiArMzk5OCw3
IEBACiAJCTZBMzhDRkE4MUUzMkI1OEIwMDYwMjA2RiAvKiBBc3luY1N0YWNrVHJhY2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXN5bmNTdGFja1RyYWNlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZBRDJDQjRDMTlCOTE0MDEwMDA2NTcxOSAvKiBEZWJ1Z2dl
ckV2YWxFbmFibGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlYnVnZ2Vy
RXZhbEVuYWJsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkI3MzFDQzAyNjQ3
QTgzNzAwMTQ2NDZGIC8qIFNsb3dQYXRoQ2FsbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTbG93
UGF0aENhbGwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2Qjc2N0U3QTI2Nzkx
RjI3MDAxN0Y4RDEgLyogQXNzZW1ibHlIZWxwZXJzU3Bvb2xlcnMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQXNzZW1ibHlIZWxwZXJzU3Bvb2xlcnMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNkJBOTNDOTU5MDQ4NEM1QkFEOTMxNkVBIC8qIEpTU2NyaXB0RmV0
Y2hlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NjcmlwdEZldGNoZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkJDQ0VDMDMyNUQxRkEyNzAwMEYzOTFE
IC8qIFZlcmlmaWVyU2xvdFZpc2l0b3JJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFZlcmlmaWVyU2xvdFZpc2l0b3JJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTcwMTEzRDQ5MUE4REIwOTMwMDM4NDhDNCAvKiBJdGVyYXRvck9wZXJhdGlv
bnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSXRlcmF0b3JPcGVy
YXRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYxOTcsNiArNjE5OSw3
IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQkwRjI0RTUzQjE3RUE5RjU5MDBBQkIyMTcgLyogQXNz
ZW1ibHlIZWxwZXJzLmNwcCAqLywKIAkJCQkwRjI0RTUzQzE3RUE5RjU5MDBBQkIyMTcgLyogQXNz
ZW1ibHlIZWxwZXJzLmggKi8sCisJCQkJNkI3NjdFN0EyNjc5MUYyNzAwMTdGOEQxIC8qIEFzc2Vt
Ymx5SGVscGVyc1Nwb29sZXJzLmggKi8sCiAJCQkJNzIzOTk4RjYyNjVEQkNEQjAwNTc4NjdGIC8q
IEJhc2VsaW5lSklUUGxhbi5jcHAgKi8sCiAJCQkJNzIzOTk4RjUyNjVEQkNEQjAwNTc4NjdGIC8q
IEJhc2VsaW5lSklUUGxhbi5oICovLAogCQkJCTBGNjRCMjZGMUE3ODRCQUYwMDZFNEU2NiAvKiBC
aW5hcnlTd2l0Y2guY3BwICovLApAQCAtOTE1MSw2ICs5MTU0LDcgQEAKIAkJCQlGRTkxMkI1MTI1
MzExQUQxMDBGQUJEREYgLyogQWJzdHJhY3RTbG90VmlzaXRvcklubGluZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTUzNEUwMzRFMUU0RDRCMTYwMDIxM0Y2NCAvKiBBY2Nlc3NDYXNlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlFM0JGRDBCQzFEQUY4MDhFMDA2NURFQTIgLyogQWNjZXNzQ2FzZVNuaXBw
ZXRQYXJhbXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTZCNzY3RTdCMjY3OTFGMjcwMDE3RjhEMSAv
KiBBc3NlbWJseUhlbHBlcnNTcG9vbGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTM3MEI0RjYx
QkYyNjIwNTAwNUM0MEZDIC8qIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2lu
dEJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTkxNjhCRDg3MjQ0N0JBNEUwMDgwRkZCNCAvKiBB
Z2dyZWdhdGVFcnJvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTE4RTE1QzMyNDQ3QjIyNzAwNDQ3
QTU2IC8qIEFnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAko
cmV2aXNpb24gMjc4ODg2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMzcsNyArMzM3LDcgQEAgcHVibGljOgog
ICAgICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKHNpemVvZihkb3VibGUpKSwgc3RhY2tQb2ludGVy
UmVnaXN0ZXIpOwogICAgIH0KICAgICAKLSAgICBzdGF0aWMgcHRyZGlmZl90IHB1c2hUb1NhdmVC
eXRlT2Zmc2V0KCkgeyByZXR1cm4gc2l6ZW9mKHZvaWQqKTsgfQorICAgIHN0YXRpYyBjb25zdGV4
cHIgcHRyZGlmZl90IHB1c2hUb1NhdmVCeXRlT2Zmc2V0KCkgeyByZXR1cm4gc2l6ZW9mKHZvaWQq
KTsgfQogI2VuZGlmIC8vICFDUFUoQVJNNjQpCiAKICNpZiBDUFUoWDg2XzY0KSB8fCBDUFUoQVJN
NjQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
QVJNNjQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyQVJNNjQuaAkocmV2aXNpb24gMjc4ODg2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTI1MDQsNyArMjUwNCw3IEBAIHB1YmxpYzoKICAgICAgICAgc3RvcmVEb3VibGUoc3JjLCBzdGFj
a1BvaW50ZXJSZWdpc3Rlcik7CiAgICAgfQogCi0gICAgc3RhdGljIHB0cmRpZmZfdCBwdXNoVG9T
YXZlQnl0ZU9mZnNldCgpIHsgcmV0dXJuIDE2OyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBwdHJk
aWZmX3QgcHVzaFRvU2F2ZUJ5dGVPZmZzZXQoKSB7IHJldHVybiAxNjsgfQogCiAgICAgLy8gUmVn
aXN0ZXIgbW92ZSBvcGVyYXRpb25zOgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09TUkV4aXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT1NSRXhpdC5jcHAJKHJldmlzaW9uIDI3ODg4NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT1NSRXhpdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIAog
I2lmIEVOQUJMRShERkdfSklUKQogCi0jaW5jbHVkZSAiQXNzZW1ibHlIZWxwZXJzLmgiCisjaW5j
bHVkZSAiQXNzZW1ibHlIZWxwZXJzU3Bvb2xlcnMuaCIKICNpbmNsdWRlICJCeXRlY29kZVN0cnVj
dHMuaCIKICNpbmNsdWRlICJDaGVja3BvaW50T1NSRXhpdFNpZGVTdGF0ZS5oIgogI2luY2x1ZGUg
IkRGR0dyYXBoLmgiCkBAIC01NjIsMTMgKzU2MiwxOSBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVF
eGl0KENDYWxsSGVscGVycyYgCiAgICAgLy8gZG8gdGhpcyBldmVuIGZvciBzdGF0ZSB0aGF0J3Mg
YWxyZWFkeSBpbiB0aGUgcmlnaHQgcGxhY2Ugb24gdGhlIHN0YWNrLgogICAgIC8vIEl0IG1ha2Vz
IHRoaW5ncyBzaW1wbGVyIGxhdGVyLgogCisgICAgYm9vbCBpbmxpbmVTdGFja0NvbnRhaW5zQWN0
aXZlQ2hlY2twb2ludCA9IGV4aXQubV9jb2RlT3JpZ2luLmlubGluZVN0YWNrQ29udGFpbnNBY3Rp
dmVDaGVja3BvaW50KCk7CisgICAgc2l6ZV90IGZpcnN0VG1wVG9SZXN0b3JlRWFybHkgPSBvcGVy
YW5kcy5zaXplKCkgLSBvcGVyYW5kcy5udW1iZXJPZlRtcHMoKTsKKyAgICBpZiAoIWlubGluZVN0
YWNrQ29udGFpbnNBY3RpdmVDaGVja3BvaW50KQorICAgICAgICBmaXJzdFRtcFRvUmVzdG9yZUVh
cmx5ID0gb3BlcmFuZHMuc2l6ZSgpOyAvLyBEb24ndCBlYWdlcmx5IHJlc3RvcmUuCisKICAgICAv
LyBUaGUgdGFnIHJlZ2lzdGVycyBhcmUgbmVlZGVkIHRvIG1hdGVyaWFsaXplIHJlY292ZXJpZXMg
YmVsb3cuCiAgICAgaml0LmVtaXRNYXRlcmlhbGl6ZVRhZ0NoZWNrUmVnaXN0ZXJzKCk7CiAKICAg
ICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgb3BlcmFuZHMuc2l6ZSgpOyArK2luZGV4
KSB7CiAgICAgICAgIGNvbnN0IFZhbHVlUmVjb3ZlcnkmIHJlY292ZXJ5ID0gb3BlcmFuZHNbaW5k
ZXhdOwogCi0gICAgICAgIHN3aXRjaCAocmVjb3ZlcnkudGVjaG5pcXVlKCkpIHsKKyAgICAgICAg
YXV0byBjdXJyZW50VGVjaG5pcXVlID0gcmVjb3ZlcnkudGVjaG5pcXVlKCk7CisgICAgICAgIHN3
aXRjaCAoY3VycmVudFRlY2huaXF1ZSkgewogICAgICAgICBjYXNlIERpc3BsYWNlZEluSlNTdGFj
azoKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBjYXNlIENlbGxEaXNwbGFjZWRJbkpTU3Rh
Y2s6CkBAIC01OTQsOSArNjAwLDEyIEBAIHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxI
ZWxwZXJzJiAKIAogICAgICAgICBjYXNlIENvbnN0YW50OiB7CiAjaWYgVVNFKEpTVkFMVUU2NCkK
LSAgICAgICAgICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTY0KEpTVmFs
dWU6OmVuY29kZShyZWNvdmVyeS5jb25zdGFudCgpKSksIEdQUkluZm86OnJlZ1QwKTsKLSAgICAg
ICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBzY3JhdGNoICsgaW5kZXgpOwotI2Vs
c2UKKyAgICAgICAgICAgIGlmIChpbmRleCA+PSBmaXJzdFRtcFRvUmVzdG9yZUVhcmx5KSB7Cisg
ICAgICAgICAgICAgICAgQVNTRVJUKG9wZXJhbmRzLm9wZXJhbmRGb3JJbmRleChpbmRleCkuaXNU
bXAoKSk7CisgICAgICAgICAgICAgICAgaml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVk
SW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKHJlY292ZXJ5LmNvbnN0YW50KCkpKSwgR1BSSW5mbzo6cmVn
VDApOworICAgICAgICAgICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBzY3JhdGNo
ICsgaW5kZXgpOworICAgICAgICAgICAgfQorI2Vsc2UgLy8gbm90IFVTRShKU1ZBTFVFNjQpCiAg
ICAgICAgICAgICBqaXQuc3RvcmUzMigKICAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6
OlRydXN0ZWRJbW0zMihyZWNvdmVyeS5jb25zdGFudCgpLnRhZygpKSwKICAgICAgICAgICAgICAg
ICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgp
LT5hc0JpdHMudGFnKTsKQEAgLTc2Niw3ICs3NzUsNyBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVF
eGl0KENDYWxsSGVscGVycyYgCiAgICAgaWYgKGV4aXQuaXNFeGNlcHRpb25IYW5kbGVyKCkpCiAg
ICAgICAgIGppdC5jb3B5Q2FsbGVlU2F2ZXNUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcih2
bS50b3BFbnRyeUZyYW1lKTsKIAotICAgIGlmIChleGl0Lm1fY29kZU9yaWdpbi5pbmxpbmVTdGFj
a0NvbnRhaW5zQWN0aXZlQ2hlY2twb2ludCgpKSB7CisgICAgaWYgKGlubGluZVN0YWNrQ29udGFp
bnNBY3RpdmVDaGVja3BvaW50KSB7CiAgICAgICAgIEVuY29kZWRKU1ZhbHVlKiB0bXBTY3JhdGNo
ID0gc2NyYXRjaCArIG9wZXJhbmRzLnRtcEluZGV4KDApOwogICAgICAgICBqaXQuc2V0dXBBcmd1
bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uTWF0ZXJpYWxpemVPU1JFeGl0U2lkZVN0YXRlKT4oJnZt
LCAmZXhpdCwgdG1wU2NyYXRjaCk7CiAgICAgICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2
bSk7CkBAIC03NzYsNiArNzg1LDE2IEBAIHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxI
ZWxwZXJzJiAKIAogICAgIC8vIERvIGFsbCBkYXRhIGZvcm1hdCBjb252ZXJzaW9ucyBhbmQgc3Rv
cmUgdGhlIHJlc3VsdHMgaW50byB0aGUgc3RhY2suCiAKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAg
IGNvbnN0ZXhwciBHUFJSZWcgc3JjQnVmZmVyR1BSID0gR1BSSW5mbzo6cmVnVDI7CisgICAgY29u
c3RleHByIEdQUlJlZyBkZXN0QnVmZmVyR1BSID0gR1BSSW5mbzo6cmVnVDM7CisgICAgY29uc3Rl
eHByIEdQUlJlZyB1bmRlZmluZWRHUFIgPSBHUFJJbmZvOjpyZWdUNDsKKyAgICBib29sIHVuZGVm
aW5lZEdQUklzSW5pdGlhbGl6ZWQgPSBmYWxzZTsKKworICAgIGppdC5tb3ZlKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbVB0cihzY3JhdGNoKSwgc3JjQnVmZmVyR1BSKTsKKyAgICBqaXQubW92ZShD
Q2FsbEhlbHBlcnM6OmZyYW1lUG9pbnRlclJlZ2lzdGVyLCBkZXN0QnVmZmVyR1BSKTsKKyAgICBD
Q2FsbEhlbHBlcnM6OkNvcHlTcG9vbGVyIHNwb29sZXIoQ0NhbGxIZWxwZXJzOjpDb3B5U3Bvb2xl
cjo6QnVmZmVyUmVnczo6QWxsb3dNb2RpZmljYXRpb24sIGppdCwgc3JjQnVmZmVyR1BSLCBkZXN0
QnVmZmVyR1BSLCBHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDEpOworI2VuZGlmCiAgICAg
Zm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG9wZXJhbmRzLnNpemUoKTsgKytpbmRleCkg
ewogICAgICAgICBjb25zdCBWYWx1ZVJlY292ZXJ5JiByZWNvdmVyeSA9IG9wZXJhbmRzW2luZGV4
XTsKICAgICAgICAgT3BlcmFuZCBvcGVyYW5kID0gb3BlcmFuZHMub3BlcmFuZEZvckluZGV4KGlu
ZGV4KTsKQEAgLTc4Niw2ICs4MDUsMjMgQEAgdm9pZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2Fs
bEhlbHBlcnMmIAogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgc3dpdGNoIChyZWNv
dmVyeS50ZWNobmlxdWUoKSkgeworICAgICAgICBjYXNlIENvbnN0YW50OiB7CisjaWYgVVNFKEpT
VkFMVUU2NCkKKyAgICAgICAgICAgIEVuY29kZWRKU1ZhbHVlIGN1cnJlbnRDb25zdGFudCA9IEpT
VmFsdWU6OmVuY29kZShyZWNvdmVyeS5jb25zdGFudCgpKTsKKyAgICAgICAgICAgIGlmIChjdXJy
ZW50Q29uc3RhbnQgPT0gZW5jb2RlZEpTVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoIXVuZGVmaW5lZEdQUklzSW5pdGlhbGl6ZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgaml0
Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQoZW5jb2RlZEpTVW5kZWZpbmVkKCkpLCB1
bmRlZmluZWRHUFIpOworICAgICAgICAgICAgICAgICAgICB1bmRlZmluZWRHUFJJc0luaXRpYWxp
emVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgc3Bvb2xlci5j
b3B5R1BSKHVuZGVmaW5lZEdQUik7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAg
ICBzcG9vbGVyLm1vdmVDb25zdGFudChjdXJyZW50Q29uc3RhbnQpOworICAgICAgICAgICAgc3Bv
b2xlci5zdG9yZUdQUihvcGVyYW5kLnZpcnR1YWxSZWdpc3RlcigpLm9mZnNldCgpICogc2l6ZW9m
KENQVVJlZ2lzdGVyKSk7CisgICAgICAgICAgICBicmVhazsKKyNlbHNlCisgICAgICAgICAgICBG
QUxMVEhST1VHSDsKKyNlbmRpZgorICAgICAgICB9CiAgICAgICAgIGNhc2UgRGlzcGxhY2VkSW5K
U1N0YWNrOgogICAgICAgICBjYXNlIEJvb2xlYW5EaXNwbGFjZWRJbkpTU3RhY2s6CiAgICAgICAg
IGNhc2UgSW50MzJEaXNwbGFjZWRJbkpTU3RhY2s6CkBAIC03OTUsNyArODMxLDYgQEAgdm9pZCBP
U1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIAogICAgICAgICBjYXNlIFVuYm94ZWRJ
bnQzMkluR1BSOgogICAgICAgICBjYXNlIFVuYm94ZWRDZWxsSW5HUFI6CiAgICAgICAgIGNhc2Ug
VW5ib3hlZERvdWJsZUluRlBSOgotICAgICAgICBjYXNlIENvbnN0YW50OgogICAgICAgICBjYXNl
IEluRlBSOgogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIGNhc2UgSW5HUFI6CkBAIC04MDMs
OCArODM4LDggQEAgdm9pZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIAogICAg
ICAgICBjYXNlIEludDUyRGlzcGxhY2VkSW5KU1N0YWNrOgogICAgICAgICBjYXNlIFVuYm94ZWRT
dHJpY3RJbnQ1MkluR1BSOgogICAgICAgICBjYXNlIFN0cmljdEludDUyRGlzcGxhY2VkSW5KU1N0
YWNrOgotICAgICAgICAgICAgaml0LmxvYWQ2NChzY3JhdGNoICsgaW5kZXgsIEdQUkluZm86OnJl
Z1QwKTsKLSAgICAgICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBBc3NlbWJseUhl
bHBlcnM6OmFkZHJlc3NGb3Iob3BlcmFuZCkpOworICAgICAgICAgICAgc3Bvb2xlci5sb2FkR1BS
KGluZGV4ICogc2l6ZW9mKENQVVJlZ2lzdGVyKSk7CisgICAgICAgICAgICBzcG9vbGVyLnN0b3Jl
R1BSKG9wZXJhbmQudmlydHVhbFJlZ2lzdGVyKCkub2Zmc2V0KCkgKiBzaXplb2YoQ1BVUmVnaXN0
ZXIpKTsKICAgICAgICAgICAgIGJyZWFrOwogI2Vsc2UgLy8gbm90IFVTRShKU1ZBTFVFNjQpCiAg
ICAgICAgIGNhc2UgSW5QYWlyOgpAQCAtODMzLDYgKzg2OCw5IEBAIHZvaWQgT1NSRXhpdDo6Y29t
cGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiAKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgfQorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgc3Bvb2xlci5mbHVzaEdQUigpOworI2VuZGlm
CiAKICAgICAvLyBOb3cgdGhhdCB0aGluZ3Mgb24gdGhlIHN0YWNrIGFyZSByZWNvdmVyZWQsIGRv
IHRoZSBhcmd1bWVudHMgcmVjb3ZlcnkuIFdlIGFzc3VtZSB0aGF0IGFyZ3VtZW50cwogICAgIC8v
IHJlY292ZXJpZXMgZG9uJ3QgcmVjdXJzaXZlbHkgcmVmZXIgdG8gZWFjaCBvdGhlci4gQnV0LCB3
ZSBkb24ndCB0cnkgdG8gYXNzdW1lIHRoYXQgdGhleSBvbmx5CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCShy
ZXZpc2lvbiAyNzg4ODYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRD
b21waWxlckNvbW1vbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4NCw3ICsyODQsNyBAQCB2b2lk
IHJlaWZ5SW5saW5lZENhbGxGcmFtZXMoQ0NhbGxIZWxwZXJzCiAgICAgICAgICAgICBqaXQuYWRk
UHRyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKHNpemVvZihDYWxsZXJGcmFtZUFuZFBD
KSksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjpyZWdUMik7CiAgICAgICAg
ICAgICBqaXQudW50YWdQdHIoR1BSSW5mbzo6cmVnVDIsIEdQUkluZm86OnJlZ1QzKTsKICAgICAg
ICAgICAgIGppdC5hZGRQdHIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoaW5saW5lQ2Fs
bEZyYW1lLT5yZXR1cm5QQ09mZnNldCgpICsgc2l6ZW9mKHZvaWQqKSksIEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjpyZWdUMik7Ci0gICAgICAgICAgICBqaXQudmFsaWRhdGVV
bnRhZ2dlZFB0cihHUFJJbmZvOjpyZWdUMywgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgICAg
ICAgICBqaXQudmFsaWRhdGVVbnRhZ2dlZFB0cihHUFJJbmZvOjpyZWdUMywgR1BSSW5mbzo6cmVn
VDQpOwogICAgICAgICAgICAgaml0LnRhZ1B0cihHUFJJbmZvOjpyZWdUMiwgR1BSSW5mbzo6cmVn
VDMpOwogI2VuZGlmCiAgICAgICAgICAgICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6cmVnVDMsIEFz
c2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvckJ5dGVPZmZzZXQoaW5saW5lQ2FsbEZyYW1lLT5yZXR1
cm5QQ09mZnNldCgpKSk7CkBAIC0zMDUsOSArMzA1LDkgQEAgdm9pZCByZWlmeUlubGluZWRDYWxs
RnJhbWVzKENDYWxsSGVscGVycwogCiAjaWYgQ1BVKEFSTTY0RSkKICAgICAgICAgICAgIGppdC5h
ZGRQdHIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoaW5saW5lQ2FsbEZyYW1lLT5yZXR1
cm5QQ09mZnNldCgpICsgc2l6ZW9mKHZvaWQqKSksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
LCBHUFJJbmZvOjpyZWdUMik7Ci0gICAgICAgICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIoanVtcFRhcmdldC51bnRhZ2dlZEV4ZWN1dGFibGVBZGRyZXNzKCkpLCBH
UFJJbmZvOjpub25BcmdHUFIwKTsKLSAgICAgICAgICAgIGppdC50YWdQdHIoR1BSSW5mbzo6cmVn
VDIsIEdQUkluZm86Om5vbkFyZ0dQUjApOwotICAgICAgICAgICAgaml0LnN0b3JlUHRyKEdQUklu
Zm86Om5vbkFyZ0dQUjAsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvckJ5dGVPZmZzZXQoaW5s
aW5lQ2FsbEZyYW1lLT5yZXR1cm5QQ09mZnNldCgpKSk7CisgICAgICAgICAgICBqaXQubW92ZShB
c3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoanVtcFRhcmdldC51bnRhZ2dlZEV4ZWN1dGFi
bGVBZGRyZXNzKCkpLCBHUFJJbmZvOjpyZWdUNCk7CisgICAgICAgICAgICBqaXQudGFnUHRyKEdQ
UkluZm86OnJlZ1QyLCBHUFJJbmZvOjpyZWdUNCk7CisgICAgICAgICAgICBqaXQuc3RvcmVQdHIo
R1BSSW5mbzo6cmVnVDQsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvckJ5dGVPZmZzZXQoaW5s
aW5lQ2FsbEZyYW1lLT5yZXR1cm5QQ09mZnNldCgpKSk7CiAjZWxzZQogICAgICAgICAgICAgaml0
LnN0b3JlUHRyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cihqdW1wVGFyZ2V0LnVudGFn
Z2VkRXhlY3V0YWJsZUFkZHJlc3MoKSksIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvckJ5dGVP
ZmZzZXQoaW5saW5lQ2FsbEZyYW1lLT5yZXR1cm5QQ09mZnNldCgpKSk7CiAjZW5kaWYKQEAgLTMx
OCwxMSArMzE4LDExIEBAIHZvaWQgcmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyhDQ2FsbEhlbHBlcnMK
ICAgICAgICAgLy8gUmVzdG9yZSB0aGUgaW5saW5lIGNhbGwgZnJhbWUncyBjYWxsZWUgc2F2ZSBy
ZWdpc3RlcnMuCiAgICAgICAgIC8vIElmIHRoaXMgaW5saW5lZCBmcmFtZSBpcyBhIHRhaWwgY2Fs
bCB0aGF0IHdpbGwgcmV0dXJuIGJhY2sgdG8gdGhlIG9yaWdpbmFsIGNhbGxlciwgd2UgbmVlZCB0
bwogICAgICAgICAvLyBjb3B5IHRoZSBwcmlvciBjb250ZW50cyBvZiB0aGUgdGFnIHJlZ2lzdGVy
cyBhbHJlYWR5IHNhdmVkIGZvciB0aGUgb3V0ZXIgZnJhbWUgdG8gdGhpcyBmcmFtZS4KLSAgICAg
ICAgaml0LmVtaXRTYXZlT3JDb3B5Q2FsbGVlU2F2ZXNGb3IoCisgICAgICAgIGppdC5lbWl0U2F2
ZU9yQ29weUxMSW50QmFzZWxpbmVDYWxsZWVTYXZlc0ZvcigKICAgICAgICAgICAgIGJhc2VsaW5l
Q29kZUJsb2NrLAogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8VmlydHVhbFJlZ2lzdGVyPihpbmxp
bmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0KSwKICAgICAgICAgICAgIHRydWVDYWxsZXIgPyBBc3Nl
bWJseUhlbHBlcnM6OlVzZUV4aXN0aW5nVGFnUmVnaXN0ZXJDb250ZW50cyA6IEFzc2VtYmx5SGVs
cGVyczo6Q29weUJhc2VsaW5lQ2FsbGVlU2F2ZWRSZWdpc3RlcnNGcm9tQmFzZUZyYW1lLAotICAg
ICAgICAgICAgR1BSSW5mbzo6cmVnVDIpOworICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDIsIEdQ
UkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUNCk7CiAKICAgICAgICAgaWYgKGNhbGxlcklzTExJ
bnQpIHsKICAgICAgICAgICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2tGb3JDYWxsZXIg
PSBqaXQuYmFzZWxpbmVDb2RlQmxvY2tGb3IoKnRydWVDYWxsZXIpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmNwcAkocmV2aXNpb24gMjc4ODg2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2
ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoREZHX0pJVCkKIAorI2luY2x1ZGUgIkFzc2VtYmx5SGVs
cGVyc1Nwb29sZXJzLmgiCiAjaW5jbHVkZSAiQ0NhbGxIZWxwZXJzLmgiCiAjaW5jbHVkZSAiREZH
SklUQ29kZS5oIgogI2luY2x1ZGUgIkRGR09TUkV4aXQuaCIKQEAgLTQ5LDM0ICs1MCw3MyBAQCBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IG9zCiAgICAgc2l6ZV90IHNjcmF0
Y2hTaXplID0gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAqIChHUFJJbmZvOjpudW1iZXJPZlJlZ2lz
dGVycyArIEZQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzKTsKICAgICBTY3JhdGNoQnVmZmVyKiBz
Y3JhdGNoQnVmZmVyID0gdm0uc2NyYXRjaEJ1ZmZlckZvclNpemUoc2NyYXRjaFNpemUpOwogICAg
IEVuY29kZWRKU1ZhbHVlKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxFbmNvZGVkSlNWYWx1ZSo+KHNj
cmF0Y2hCdWZmZXItPmRhdGFCdWZmZXIoKSk7Ci0gICAgCi0gICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyArK2kpIHsKKworI2lmIENQVShBUk02
NCkKKyAgICBjb25zdGV4cHIgR1BSUmVnIGJ1ZmZlckdQUiA9IENDYWxsSGVscGVyczo6bWVtb3J5
VGVtcFJlZ2lzdGVyOworICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBmaXJzdEdQUiA9IDA7CisjZWxp
ZiBDUFUoWDg2XzY0KQorICAgIEdQUlJlZyBidWZmZXJHUFIgPSBqaXQuc2NyYXRjaFJlZ2lzdGVy
KCk7CisgICAgY29uc3RleHByIHVuc2lnbmVkIGZpcnN0R1BSID0gMDsKKyNlbHNlCisgICAgR1BS
UmVnIGJ1ZmZlckdQUiA9IEdQUkluZm86OnRvUmVnaXN0ZXIoMCk7CisgICAgY29uc3RleHByIHVu
c2lnbmVkIGZpcnN0R1BSID0gMTsKKyNlbmRpZgorCisgICAgaWYgY29uc3RleHByIChmaXJzdEdQ
UikgeworICAgICAgICAvLyBXZSdyZSB1c2luZyB0aGUgZmlyc3RHUFIgYXMgdGhlIGJ1ZmZlckdQ
UiwgYW5kIG5lZWQgdG8gc2F2ZSBpdCBtYW51YWxseS4KKyAgICAgICAgUkVMRUFTRV9BU1NFUlQo
R1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgPj0gMSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGJ1ZmZlckdQUiA9PSBHUFJJbmZvOjp0b1JlZ2lzdGVyKDApKTsKICNpZiBVU0UoSlNWQUxVRTY0
KQotICAgICAgICBqaXQuc3RvcmU2NChHUFJJbmZvOjp0b1JlZ2lzdGVyKGkpLCBidWZmZXIgKyBp
KTsKKyAgICAgICAgaml0LnN0b3JlNjQoYnVmZmVyR1BSLCBidWZmZXIpOwogI2Vsc2UKLSAgICAg
ICAgaml0LnN0b3JlMzIoR1BSSW5mbzo6dG9SZWdpc3RlcihpKSwgYnVmZmVyICsgaSk7CisgICAg
ICAgIGppdC5zdG9yZTMyKGJ1ZmZlckdQUiwgYnVmZmVyKTsKICNlbmRpZgogICAgIH0KKworICAg
IGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihidWZmZXIpLCBidWZmZXJHUFIp
OworCisgICAgQ0NhbGxIZWxwZXJzOjpTdG9yZVJlZ1Nwb29sZXIgc3RvcmVTcG9vbGVyKGppdCwg
YnVmZmVyR1BSKTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IGZpcnN0R1BSOyBpIDwgR1BSSW5m
bzo6bnVtYmVyT2ZSZWdpc3RlcnM7ICsraSkgeworICAgICAgICBwdHJkaWZmX3Qgb2Zmc2V0ID0g
aSAqIHNpemVvZihDUFVSZWdpc3Rlcik7CisgICAgICAgIHN0b3JlU3Bvb2xlci5zdG9yZUdQUih7
IEdQUkluZm86OnRvUmVnaXN0ZXIoaSksIG9mZnNldCB9KTsKKyAgICB9CisgICAgc3RvcmVTcG9v
bGVyLmZsdXNoR1BSKCk7CisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgRlBSSW5mbzo6
bnVtYmVyT2ZSZWdpc3RlcnM7ICsraSkgewotICAgICAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbVB0cihidWZmZXIgKyBHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyArIGkp
LCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgIGppdC5zdG9yZURvdWJsZShGUFJJbmZvOjp0b1Jl
Z2lzdGVyKGkpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCkpOworICAg
ICAgICBwdHJkaWZmX3Qgb2Zmc2V0ID0gKEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzICsgaSkg
KiBzaXplb2YoZG91YmxlKTsKKyAgICAgICAgc3RvcmVTcG9vbGVyLnN0b3JlRlBSKHsgRlBSSW5m
bzo6dG9SZWdpc3RlcihpKSwgb2Zmc2V0IH0pOwogICAgIH0KLSAgICAKKyAgICBzdG9yZVNwb29s
ZXIuZmx1c2hGUFIoKTsKKwogICAgIC8vIFNldCB1cCBvbmUgYXJndW1lbnQuCiAgICAgaml0Lm1v
dmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAg
ICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKIAogICAgIE1hY3JvQXNzZW1ibGVyOjpD
YWxsIGZ1bmN0aW9uQ2FsbCA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7CiAKKyAgICBqaXQu
bW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoYnVmZmVyKSwgYnVmZmVyR1BSKTsKKyAg
ICBDQ2FsbEhlbHBlcnM6OkxvYWRSZWdTcG9vbGVyIGxvYWRsU3Bvb2xlcihqaXQsIGJ1ZmZlckdQ
Uik7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBmaXJzdEdQUjsgaSA8IEdQUkluZm86Om51bWJl
ck9mUmVnaXN0ZXJzOyArK2kpIHsKKyAgICAgICAgcHRyZGlmZl90IG9mZnNldCA9IGkgKiBzaXpl
b2YoQ1BVUmVnaXN0ZXIpOworICAgICAgICBsb2FkbFNwb29sZXIubG9hZEdQUih7IEdQUkluZm86
OnRvUmVnaXN0ZXIoaSksIG9mZnNldCB9KTsKKyAgICB9CisgICAgbG9hZGxTcG9vbGVyLmZsdXNo
R1BSKCk7CisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgRlBSSW5mbzo6bnVtYmVyT2ZS
ZWdpc3RlcnM7ICsraSkgewotICAgICAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbVB0cihidWZmZXIgKyBHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyArIGkpLCBHUFJJbmZv
OjpyZWdUMCk7Ci0gICAgICAgIGppdC5sb2FkRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KEdQUkluZm86OnJlZ1QwKSwgRlBSSW5mbzo6dG9SZWdpc3RlcihpKSk7CisgICAgICAgIHB0cmRp
ZmZfdCBvZmZzZXQgPSAoR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgKyBpKSAqIHNpemVvZihk
b3VibGUpOworICAgICAgICBsb2FkbFNwb29sZXIubG9hZEZQUih7IEZQUkluZm86OnRvUmVnaXN0
ZXIoaSksIG9mZnNldCB9KTsKICAgICB9Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEdQ
UkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyArK2kpIHsKKyAgICBsb2FkbFNwb29sZXIuZmx1c2hG
UFIoKTsKKworICAgIGlmIGNvbnN0ZXhwciAoZmlyc3RHUFIpIHsKKyAgICAgICAgLy8gV2UncmUg
dXNpbmcgdGhlIGZpcnN0R1BSIGFzIHRoZSBidWZmZXJHUFIsIGFuZCBuZWVkIHRvIHJlc3RvcmUg
aXQgbWFudWFsbHkuCisgICAgICAgIEFTU0VSVChidWZmZXJHUFIgPT0gR1BSSW5mbzo6dG9SZWdp
c3RlcigwKSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgaml0LmxvYWQ2NChidWZmZXIg
KyBpLCBHUFJJbmZvOjp0b1JlZ2lzdGVyKGkpKTsKKyAgICAgICAgaml0LmxvYWQ2NChidWZmZXIs
IGJ1ZmZlckdQUik7CiAjZWxzZQotICAgICAgICBqaXQubG9hZDMyKGJ1ZmZlciArIGksIEdQUklu
Zm86OnRvUmVnaXN0ZXIoaSkpOworICAgICAgICBqaXQubG9hZDMyKGJ1ZmZlciwgYnVmZmVyR1BS
KTsKICNlbmRpZgogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExT
YXZlUmVzdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExTYXZlUmVzdG9yZS5jcHAJKHJldmlzaW9uIDI3ODg4NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMU2F2ZVJlc3RvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDkgKzI4
LDEwIEBACiAKICNpZiBFTkFCTEUoRlRMX0pJVCkKIAorI2luY2x1ZGUgIkFzc2VtYmx5SGVscGVy
c1Nwb29sZXJzLmgiCiAjaW5jbHVkZSAiRlBSSW5mby5oIgogI2luY2x1ZGUgIkdQUkluZm8uaCIK
LSNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgorI2luY2x1ZGUgIlJlZy5oIgogI2luY2x1ZGUg
IlJlZ2lzdGVyU2V0LmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKQEAgLTc3
LDcwICs3OCwxMDQgQEAgc3RydWN0IFJlZ3MgewogICAgIHsKICAgICAgICAgc3BlY2lhbCA9IFJl
Z2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpOwogICAgICAgICBzcGVjaWFsLm1lcmdlKFJlZ2lz
dGVyU2V0OjpyZXNlcnZlZEhhcmR3YXJlUmVnaXN0ZXJzKCkpOwotICAgICAgICAKKwogICAgICAg
ICBmaXJzdCA9IE1hY3JvQXNzZW1ibGVyOjpmaXJzdFJlZ2lzdGVyKCk7CiAgICAgICAgIHdoaWxl
IChzcGVjaWFsLmdldChmaXJzdCkpCiAgICAgICAgICAgICBmaXJzdCA9IE1hY3JvQXNzZW1ibGVy
OjpuZXh0UmVnaXN0ZXIoZmlyc3QpOwotICAgICAgICBzZWNvbmQgPSBNYWNyb0Fzc2VtYmxlcjo6
bmV4dFJlZ2lzdGVyKGZpcnN0KTsKLSAgICAgICAgd2hpbGUgKHNwZWNpYWwuZ2V0KHNlY29uZCkp
Ci0gICAgICAgICAgICBzZWNvbmQgPSBNYWNyb0Fzc2VtYmxlcjo6bmV4dFJlZ2lzdGVyKHNlY29u
ZCk7CiAgICAgfQotICAgIAorCisgICAgR1BSUmVnIG5leHRSZWdpc3RlcihHUFJSZWcgY3VycmVu
dCkKKyAgICB7CisgICAgICAgIGF1dG8gbmV4dCA9IE1hY3JvQXNzZW1ibGVyOjpuZXh0UmVnaXN0
ZXIoY3VycmVudCk7CisgICAgICAgIHdoaWxlIChzcGVjaWFsLmdldChuZXh0KSkKKyAgICAgICAg
ICAgIG5leHQgPSBNYWNyb0Fzc2VtYmxlcjo6bmV4dFJlZ2lzdGVyKG5leHQpOworICAgICAgICBy
ZXR1cm4gbmV4dDsKKyAgICB9CisKKyAgICBGUFJSZWcgbmV4dEZQUmVnaXN0ZXIoRlBSUmVnIGN1
cnJlbnQpCisgICAgeworICAgICAgICBhdXRvIG5leHQgPSBNYWNyb0Fzc2VtYmxlcjo6bmV4dEZQ
UmVnaXN0ZXIoY3VycmVudCk7CisgICAgICAgIHdoaWxlIChzcGVjaWFsLmdldChuZXh0KSkKKyAg
ICAgICAgICAgIG5leHQgPSBNYWNyb0Fzc2VtYmxlcjo6bmV4dEZQUmVnaXN0ZXIobmV4dCk7Cisg
ICAgICAgIHJldHVybiBuZXh0OworICAgIH0KKwogICAgIFJlZ2lzdGVyU2V0IHNwZWNpYWw7CiAg
ICAgR1BSUmVnIGZpcnN0OwotICAgIEdQUlJlZyBzZWNvbmQ7CiB9OwogCiB9IC8vIGFub255bW91
cyBuYW1lc3BhY2UKIAotdm9pZCBzYXZlQWxsUmVnaXN0ZXJzKE1hY3JvQXNzZW1ibGVyJiBqaXQs
IGNoYXIqIHNjcmF0Y2hNZW1vcnkpCit2b2lkIHNhdmVBbGxSZWdpc3RlcnMoQXNzZW1ibHlIZWxw
ZXJzJiBqaXQsIGNoYXIqIHNjcmF0Y2hNZW1vcnkpCiB7CiAgICAgUmVncyByZWdzOwogICAgIAog
ICAgIC8vIEdldCB0aGUgZmlyc3QgcmVnaXN0ZXIgb3V0IG9mIHRoZSB3YXksIHNvIHRoYXQgd2Ug
Y2FuIHVzZSBpdCBhcyBhIHBvaW50ZXIuCi0gICAgaml0LnBva2U2NChyZWdzLmZpcnN0LCAwKTsK
LSAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihzY3JhdGNoTWVtb3J5
KSwgcmVncy5maXJzdCk7Ci0gICAgCisgICAgR1BSUmVnIGJhc2VHUFIgPSByZWdzLmZpcnN0Owor
I2lmIENQVShBUk02NCkKKyAgICBHUFJSZWcgbmV4dEdQUiA9IHJlZ3MubmV4dFJlZ2lzdGVyKGJh
c2VHUFIpOworICAgIEdQUlJlZyBmaXJzdFRvU2F2ZUdQUiA9IHJlZ3MubmV4dFJlZ2lzdGVyKG5l
eHRHUFIpOworICAgIEFTU0VSVChiYXNlR1BSID09IEFSTTY0UmVnaXN0ZXJzOjp4MCk7CisgICAg
QVNTRVJUKG5leHRHUFIgPT0gQVJNNjRSZWdpc3RlcnM6OngxKTsKKyNlbHNlCisgICAgR1BSUmVn
IGZpcnN0VG9TYXZlR1BSID0gcmVncy5uZXh0UmVnaXN0ZXIoYmFzZUdQUik7CisjZW5kaWYKKyAg
ICBqaXQucG9rZTY0KGJhc2VHUFIsIDApOworICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tUHRyKHNjcmF0Y2hNZW1vcnkpLCBiYXNlR1BSKTsKKworICAgIEFzc2VtYmx5SGVs
cGVyczo6U3RvcmVSZWdTcG9vbGVyIHNwb29sZXIoaml0LCBiYXNlR1BSKTsKKwogICAgIC8vIEdl
dCBhbGwgb2YgdGhlIG90aGVyIEdQUnMgb3V0IG9mIHRoZSB3YXkuCi0gICAgZm9yIChNYWNyb0Fz
c2VtYmxlcjo6UmVnaXN0ZXJJRCByZWcgPSByZWdzLnNlY29uZDsgcmVnIDw9IE1hY3JvQXNzZW1i
bGVyOjpsYXN0UmVnaXN0ZXIoKTsgcmVnID0gTWFjcm9Bc3NlbWJsZXI6Om5leHRSZWdpc3Rlcihy
ZWcpKSB7Ci0gICAgICAgIGlmIChyZWdzLnNwZWNpYWwuZ2V0KHJlZykpCi0gICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgaml0LnN0b3JlNjQocmVnLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhyZWdzLmZpcnN0LCBvZmZzZXRPZkdQUihyZWcpKSk7Ci0gICAgfQorICAgIGZvciAoR1BSUmVn
IHJlZyA9IGZpcnN0VG9TYXZlR1BSOyByZWcgPD0gTWFjcm9Bc3NlbWJsZXI6Omxhc3RSZWdpc3Rl
cigpOyByZWcgPSByZWdzLm5leHRSZWdpc3RlcihyZWcpKQorICAgICAgICBzcG9vbGVyLnN0b3Jl
R1BSKHsgcmVnLCBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KG9mZnNldE9mR1BSKHJlZykpIH0pOwor
ICAgIHNwb29sZXIuZmx1c2hHUFIoKTsKICAgICAKICAgICAvLyBSZXN0b3JlIHRoZSBmaXJzdCBy
ZWdpc3RlciBpbnRvIHRoZSBzZWNvbmQgb25lIGFuZCBzYXZlIGl0LgotICAgIGppdC5wZWVrNjQo
cmVncy5zZWNvbmQsIDApOwotICAgIGppdC5zdG9yZTY0KHJlZ3Muc2Vjb25kLCBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhyZWdzLmZpcnN0LCBvZmZzZXRPZkdQUihyZWdzLmZpcnN0KSkpOworICAg
IGppdC5wZWVrNjQoZmlyc3RUb1NhdmVHUFIsIDApOworI2lmIENQVShBUk02NCkKKyAgICBqaXQu
c3RvcmVQYWlyNjQoZmlyc3RUb1NhdmVHUFIsIG5leHRHUFIsIGJhc2VHUFIsIEFzc2VtYmx5SGVs
cGVyczo6VHJ1c3RlZEltbTMyKG9mZnNldE9mR1BSKGJhc2VHUFIpKSk7CisjZWxzZQorICAgIGpp
dC5zdG9yZTY0KGZpcnN0VG9TYXZlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BS
LCBvZmZzZXRPZkdQUihiYXNlR1BSKSkpOworI2VuZGlmCiAgICAgCiAgICAgLy8gRmluYWxseSBz
YXZlIGFsbCBGUFIncy4KLSAgICBmb3IgKE1hY3JvQXNzZW1ibGVyOjpGUFJlZ2lzdGVySUQgcmVn
ID0gTWFjcm9Bc3NlbWJsZXI6OmZpcnN0RlBSZWdpc3RlcigpOyByZWcgPD0gTWFjcm9Bc3NlbWJs
ZXI6Omxhc3RGUFJlZ2lzdGVyKCk7IHJlZyA9IE1hY3JvQXNzZW1ibGVyOjpuZXh0RlBSZWdpc3Rl
cihyZWcpKSB7Ci0gICAgICAgIGlmIChyZWdzLnNwZWNpYWwuZ2V0KHJlZykpCi0gICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgaml0LnN0b3JlRG91YmxlKHJlZywgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MocmVncy5maXJzdCwgb2Zmc2V0T2ZGUFIocmVnKSkpOwotICAgIH0KKyAgICBmb3Ig
KE1hY3JvQXNzZW1ibGVyOjpGUFJlZ2lzdGVySUQgcmVnID0gTWFjcm9Bc3NlbWJsZXI6OmZpcnN0
RlBSZWdpc3RlcigpOyByZWcgPD0gTWFjcm9Bc3NlbWJsZXI6Omxhc3RGUFJlZ2lzdGVyKCk7IHJl
ZyA9IHJlZ3MubmV4dEZQUmVnaXN0ZXIocmVnKSkKKyAgICAgICAgc3Bvb2xlci5zdG9yZUZQUih7
IHJlZywgc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihvZmZzZXRPZkZQUihyZWcpKSB9KTsKKyAgICBz
cG9vbGVyLmZsdXNoRlBSKCk7CiB9CiAKLXZvaWQgcmVzdG9yZUFsbFJlZ2lzdGVycyhNYWNyb0Fz
c2VtYmxlciYgaml0LCBjaGFyKiBzY3JhdGNoTWVtb3J5KQordm9pZCByZXN0b3JlQWxsUmVnaXN0
ZXJzKEFzc2VtYmx5SGVscGVycyYgaml0LCBjaGFyKiBzY3JhdGNoTWVtb3J5KQogewogICAgIFJl
Z3MgcmVnczsKICAgICAKICAgICAvLyBHaXZlIG91cnNlbHZlcyBhIHBvaW50ZXIgdG8gdGhlIHNj
cmF0Y2ggbWVtb3J5LgotICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
KHNjcmF0Y2hNZW1vcnkpLCByZWdzLmZpcnN0KTsKKyAgICBHUFJSZWcgYmFzZUdQUiA9IHJlZ3Mu
Zmlyc3Q7CisgICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoc2NyYXRj
aE1lbW9yeSksIGJhc2VHUFIpOwogICAgIAorICAgIEFzc2VtYmx5SGVscGVyczo6TG9hZFJlZ1Nw
b29sZXIgc3Bvb2xlcihqaXQsIGJhc2VHUFIpOworCiAgICAgLy8gUmVzdG9yZSBhbGwgRlBSJ3Mu
Ci0gICAgZm9yIChNYWNyb0Fzc2VtYmxlcjo6RlBSZWdpc3RlcklEIHJlZyA9IE1hY3JvQXNzZW1i
bGVyOjpmaXJzdEZQUmVnaXN0ZXIoKTsgcmVnIDw9IE1hY3JvQXNzZW1ibGVyOjpsYXN0RlBSZWdp
c3RlcigpOyByZWcgPSBNYWNyb0Fzc2VtYmxlcjo6bmV4dEZQUmVnaXN0ZXIocmVnKSkgewotICAg
ICAgICBpZiAocmVncy5zcGVjaWFsLmdldChyZWcpKQotICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgIGppdC5sb2FkRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlZ3MuZmlyc3Qs
IG9mZnNldE9mRlBSKHJlZykpLCByZWcpOwotICAgIH0KLSAgICAKLSAgICBmb3IgKE1hY3JvQXNz
ZW1ibGVyOjpSZWdpc3RlcklEIHJlZyA9IHJlZ3Muc2Vjb25kOyByZWcgPD0gTWFjcm9Bc3NlbWJs
ZXI6Omxhc3RSZWdpc3RlcigpOyByZWcgPSBNYWNyb0Fzc2VtYmxlcjo6bmV4dFJlZ2lzdGVyKHJl
ZykpIHsKLSAgICAgICAgaWYgKHJlZ3Muc3BlY2lhbC5nZXQocmVnKSkKLSAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICBqaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlZ3Mu
Zmlyc3QsIG9mZnNldE9mR1BSKHJlZykpLCByZWcpOwotICAgIH0KLSAgICAKLSAgICBqaXQubG9h
ZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlZ3MuZmlyc3QsIG9mZnNldE9mR1BSKHJlZ3Mu
Zmlyc3QpKSwgcmVncy5maXJzdCk7CisgICAgZm9yIChNYWNyb0Fzc2VtYmxlcjo6RlBSZWdpc3Rl
cklEIHJlZyA9IE1hY3JvQXNzZW1ibGVyOjpmaXJzdEZQUmVnaXN0ZXIoKTsgcmVnIDw9IE1hY3Jv
QXNzZW1ibGVyOjpsYXN0RlBSZWdpc3RlcigpOyByZWcgPSByZWdzLm5leHRGUFJlZ2lzdGVyKHJl
ZykpCisgICAgICAgIHNwb29sZXIubG9hZEZQUih7IHJlZywgc3RhdGljX2Nhc3Q8cHRyZGlmZl90
PihvZmZzZXRPZkZQUihyZWcpKSB9KTsKKyAgICBzcG9vbGVyLmZsdXNoRlBSKCk7CisgICAgCisj
aWYgQ1BVKEFSTTY0KQorICAgIEdQUlJlZyBuZXh0R1BSID0gcmVncy5uZXh0UmVnaXN0ZXIoYmFz
ZUdQUik7CisgICAgR1BSUmVnIGZpcnN0VG9SZXN0b3JlR1BSID0gcmVncy5uZXh0UmVnaXN0ZXIo
bmV4dEdQUik7CisgICAgQVNTRVJUKGJhc2VHUFIgPT0gQVJNNjRSZWdpc3RlcnM6OngwKTsKKyAg
ICBBU1NFUlQobmV4dEdQUiA9PSBBUk02NFJlZ2lzdGVyczo6eDEpOworI2Vsc2UKKyAgICBHUFJS
ZWcgZmlyc3RUb1Jlc3RvcmVHUFIgPSByZWdzLm5leHRSZWdpc3RlcihiYXNlR1BSKTsKKyNlbmRp
ZgorICAgIGZvciAoTWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgcmVnID0gZmlyc3RUb1Jlc3Rv
cmVHUFI7IHJlZyA8PSBNYWNyb0Fzc2VtYmxlcjo6bGFzdFJlZ2lzdGVyKCk7IHJlZyA9IHJlZ3Mu
bmV4dFJlZ2lzdGVyKHJlZykpCisgICAgICAgIHNwb29sZXIubG9hZEdQUih7IHJlZywgc3RhdGlj
X2Nhc3Q8cHRyZGlmZl90PihvZmZzZXRPZkdQUihyZWcpKSB9KTsKKyAgICBzcG9vbGVyLmZsdXNo
R1BSKCk7CisKKyNpZiBDUFUoQVJNNjQpCisgICAgaml0LmxvYWRQYWlyNjQoYmFzZUdQUiwgQXNz
ZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIob2Zmc2V0T2ZHUFIoYmFzZUdQUikpLCBiYXNlR1BS
LCBuZXh0R1BSKTsKKyNlbHNlCisgICAgaml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhiYXNlR1BSLCBvZmZzZXRPZkdQUihiYXNlR1BSKSksIGJhc2VHUFIpOworI2VuZGlmCiB9CiAK
IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpGVEwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMU2F2ZVJlc3RvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTFNhdmVSZXN0b3JlLmgJKHJldmlzaW9uIDI3ODg4NikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMU2F2ZVJlc3RvcmUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMyw3ICszMyw3IEBA
CiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBNYWNyb0Fzc2VtYmxlcjsKK2NsYXNzIEFzc2Vt
Ymx5SGVscGVyczsKIAogbmFtZXNwYWNlIEZUTCB7CiAKQEAgLTQ2LDkgKzQ2LDkgQEAgc2l6ZV90
IG9mZnNldE9mRlBSKEZQUlJlZyk7CiAvLyBBc3N1bWVzIHRoYXQgdG9wLW9mLXN0YWNrIGNhbiBi
ZSB1c2VkIGFzIGEgcG9pbnRlci1zaXplZCBzY3JhdGNocGFkLiBTYXZlcyBhbGwgb2YKIC8vIHRo
ZSByZWdpc3RlcnMgaW50byB0aGUgc2NyYXRjaCBidWZmZXIgc3VjaCB0aGF0IFJlZ2lzdGVySUQg
KiBzaXplb2YoaW50NjRfdCkgaXMgdGhlCiAvLyBvZmZzZXQgb2YgZXZlcnkgcmVnaXN0ZXIuCi12
b2lkIHNhdmVBbGxSZWdpc3RlcnMoTWFjcm9Bc3NlbWJsZXImIGppdCwgY2hhciogc2NyYXRjaE1l
bW9yeSk7Cit2b2lkIHNhdmVBbGxSZWdpc3RlcnMoQXNzZW1ibHlIZWxwZXJzJiBqaXQsIGNoYXIq
IHNjcmF0Y2hNZW1vcnkpOwogCi12b2lkIHJlc3RvcmVBbGxSZWdpc3RlcnMoTWFjcm9Bc3NlbWJs
ZXImIGppdCwgY2hhciogc2NyYXRjaE1lbW9yeSk7Cit2b2lkIHJlc3RvcmVBbGxSZWdpc3RlcnMo
QXNzZW1ibHlIZWxwZXJzJiBqaXQsIGNoYXIqIHNjcmF0Y2hNZW1vcnkpOwogCiB9IH0gLy8gbmFt
ZXNwYWNlIEpTQzo6RlRMCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVGh1
bmtzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFRodW5r
cy5jcHAJKHJldmlzaW9uIDI3ODg4NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
VGh1bmtzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogCiAjaWYgRU5BQkxF
KEZUTF9KSVQpCiAKLSNpbmNsdWRlICJBc3NlbWJseUhlbHBlcnMuaCIKKyNpbmNsdWRlICJBc3Nl
bWJseUhlbHBlcnNTcG9vbGVycy5oIgogI2luY2x1ZGUgIkRGR09TUkV4aXRDb21waWxlckNvbW1v
bi5oIgogI2luY2x1ZGUgIkZUTE9TUkV4aXRDb21waWxlci5oIgogI2luY2x1ZGUgIkZUTE9wZXJh
dGlvbnMuaCIKQEAgLTU2LDMxICs1NiwzNCBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyCiAgICAgfQogICAgIAogICAgIC8vIE5vdGUgdGhhdCB0aGUgInJldHVybiBh
ZGRyZXNzIiB3aWxsIGJlIHRoZSBJRCB0aGF0IHdlIHBhc3MgdG8gdGhlIGdlbmVyYXRpb24gZnVu
Y3Rpb24uCi0gICAgCi0gICAgcHRyZGlmZl90IHN0YWNrTWlzYWxpZ25tZW50ID0gTWFjcm9Bc3Nl
bWJsZXI6OnB1c2hUb1NhdmVCeXRlT2Zmc2V0KCk7Ci0gICAgCisKKyAgICBjb25zdGV4cHIgR1BS
UmVnIHN0YWNrUG9pbnRlclJlZ2lzdGVyID0gTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJl
Z2lzdGVyOworICAgIGNvbnN0ZXhwciBHUFJSZWcgZnJhbWVQb2ludGVyUmVnaXN0ZXIgPSBNYWNy
b0Fzc2VtYmxlcjo6ZnJhbWVQb2ludGVyUmVnaXN0ZXI7CisgICAgY29uc3RleHByIHB0cmRpZmZf
dCBwdXNoVG9TYXZlQnl0ZU9mZnNldCA9IE1hY3JvQXNzZW1ibGVyOjpwdXNoVG9TYXZlQnl0ZU9m
ZnNldCgpOworICAgIHB0cmRpZmZfdCBzdGFja01pc2FsaWdubWVudCA9IHB1c2hUb1NhdmVCeXRl
T2Zmc2V0OworCiAgICAgLy8gUHJldGVuZCB0aGF0IHdlJ3JlIGEgQyBjYWxsIGZyYW1lLgotICAg
IGppdC5wdXNoVG9TYXZlKE1hY3JvQXNzZW1ibGVyOjpmcmFtZVBvaW50ZXJSZWdpc3Rlcik7Ci0g
ICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBNYWNyb0Fz
c2VtYmxlcjo6ZnJhbWVQb2ludGVyUmVnaXN0ZXIpOwotICAgIHN0YWNrTWlzYWxpZ25tZW50ICs9
IE1hY3JvQXNzZW1ibGVyOjpwdXNoVG9TYXZlQnl0ZU9mZnNldCgpOwotICAgIAorICAgIGppdC5w
dXNoVG9TYXZlKGZyYW1lUG9pbnRlclJlZ2lzdGVyKTsKKyAgICBqaXQubW92ZShzdGFja1BvaW50
ZXJSZWdpc3RlciwgZnJhbWVQb2ludGVyUmVnaXN0ZXIpOworICAgIHN0YWNrTWlzYWxpZ25tZW50
ICs9IHB1c2hUb1NhdmVCeXRlT2Zmc2V0OworCiAgICAgLy8gTm93IGNyZWF0ZSBvdXJzZWx2ZXMg
ZW5vdWdoIHN0YWNrIHNwYWNlIHRvIGdpdmUgc2F2ZUFsbFJlZ2lzdGVycygpIGEgc2NyYXRjaCBz
bG90LgogICAgIHVuc2lnbmVkIG51bWJlck9mUmVxdWlyZWRQb3BzID0gMDsKICAgICBkbyB7Ci0g
ICAgICAgIGppdC5wdXNoVG9TYXZlKEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgc3RhY2tNaXNh
bGlnbm1lbnQgKz0gTWFjcm9Bc3NlbWJsZXI6OnB1c2hUb1NhdmVCeXRlT2Zmc2V0KCk7CisgICAg
ICAgIHN0YWNrTWlzYWxpZ25tZW50ICs9IHB1c2hUb1NhdmVCeXRlT2Zmc2V0OwogICAgICAgICBu
dW1iZXJPZlJlcXVpcmVkUG9wcysrOwogICAgIH0gd2hpbGUgKHN0YWNrTWlzYWxpZ25tZW50ICUg
c3RhY2tBbGlnbm1lbnRCeXRlcygpKTsKLSAgICAKKyAgICBqaXQuc3ViUHRyKE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tMzIobnVtYmVyT2ZSZXF1aXJlZFBvcHMgKiBwdXNoVG9TYXZlQnl0ZU9m
ZnNldCksIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKwogICAgIFNjcmF0Y2hCdWZmZXIqIHNjcmF0
Y2hCdWZmZXIgPSB2bS5zY3JhdGNoQnVmZmVyRm9yU2l6ZShyZXF1aXJlZFNjcmF0Y2hNZW1vcnlT
aXplSW5CeXRlcygpKTsKICAgICBjaGFyKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxjaGFyKj4oc2Ny
YXRjaEJ1ZmZlci0+ZGF0YUJ1ZmZlcigpKTsKICAgICAKICAgICBzYXZlQWxsUmVnaXN0ZXJzKGpp
dCwgYnVmZmVyKTsKIAotICAgIGppdC5sb2FkUHRyKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIGppdC5sb2FkUHRyKGZyYW1lUG9pbnRlclJl
Z2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwogICAgIGppdC5wZWVrKAogICAgICAgICBH
UFJJbmZvOjphcmd1bWVudEdQUjEsCi0gICAgICAgIChzdGFja01pc2FsaWdubWVudCAtIE1hY3Jv
QXNzZW1ibGVyOjpwdXNoVG9TYXZlQnl0ZU9mZnNldCgpKSAvIHNpemVvZih2b2lkKikpOworICAg
ICAgICAoc3RhY2tNaXNhbGlnbm1lbnQgLSBwdXNoVG9TYXZlQnl0ZU9mZnNldCkgLyBzaXplb2Yo
dm9pZCopKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogICAgIE1hY3JvQXNz
ZW1ibGVyOjpDYWxsIGZ1bmN0aW9uQ2FsbCA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7CiAK
QEAgLTkyLDE0ICs5NSwxMyBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5r
UHRyCiAgICAgaml0Lm1vdmUoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIEdQUkluZm86OnJlZ1Qw
KTsKIAogICAgIC8vIFByZXBhcmUgZm9yIHRhaWwgY2FsbC4KLSAgICB3aGlsZSAobnVtYmVyT2ZS
ZXF1aXJlZFBvcHMtLSkKLSAgICAgICAgaml0LnBvcFRvUmVzdG9yZShHUFJJbmZvOjpyZWdUMSk7
Ci0gICAgaml0LnBvcFRvUmVzdG9yZShNYWNyb0Fzc2VtYmxlcjo6ZnJhbWVQb2ludGVyUmVnaXN0
ZXIpOwotCi0gICAgLy8gV2hlbiB3ZSBjYW1lIGluIGhlcmUsIHRoZXJlIHdhcyBhbiBhZGRpdGlv
bmFsIHRoaW5nIHB1c2hlZCB0byB0aGUgc3RhY2suIFNvbWUgY2xpZW50cyB3YW50IGl0Ci0gICAg
Ly8gcG9wcGVkIGJlZm9yZSBwcm9jZWVkaW5nLgotICAgIHdoaWxlIChleHRyYVBvcHNUb1Jlc3Rv
cmUtLSkKLSAgICAgICAgaml0LnBvcFRvUmVzdG9yZShHUFJJbmZvOjpyZWdUMSk7CisKKyAgICBq
aXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3Rlciwg
bnVtYmVyT2ZSZXF1aXJlZFBvcHMgKiBwdXNoVG9TYXZlQnl0ZU9mZnNldCksIGZyYW1lUG9pbnRl
clJlZ2lzdGVyKTsKKworICAgIC8vIFdoZW4gd2UgY2FtZSBpbiBoZXJlLCB0aGVyZSB3YXMgYW4g
YWRkaXRpb25hbCB0aGluZyBwdXNoZWQgdG8gdGhlIHN0YWNrIChleHRyYVBvcHNUb1Jlc3RvcmUp
LgorICAgIC8vIFNvbWUgY2xpZW50cyB3YW50IGl0IHBvcHBlZCBiZWZvcmUgcHJvY2VlZGluZy4g
QWxzbyBhZGQgMSBmb3IgdGhlIHB1c2hUb1NhdmUgb2YgdGhlIGZyYW1lUG9pbnRlclJlZ2lzdGVy
LgorICAgIG51bWJlck9mUmVxdWlyZWRQb3BzICs9IDEgKyBleHRyYVBvcHNUb1Jlc3RvcmU7Cisg
ICAgaml0LmFkZFB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKG51bWJlck9mUmVxdWly
ZWRQb3BzICogcHVzaFRvU2F2ZUJ5dGVPZmZzZXQpLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAK
ICAgICAvLyBQdXQgdGhlIHJldHVybiBhZGRyZXNzIHdoZXJldmVyIHRoZSByZXR1cm4gaW5zdHJ1
Y3Rpb24gd2FudHMgaXQuIE9uIGFsbCBwbGF0Zm9ybXMsIHRoaXMKICAgICAvLyBlbnN1cmVzIHRo
YXQgdGhlIHJldHVybiBhZGRyZXNzIGlzIG91dCBvZiB0aGUgd2F5IG9mIHJlZ2lzdGVyIHJlc3Rv
cmF0aW9uLgpAQCAtMTc3LDIxICsxNzksMjUgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBzbAogI2lmIENQVShYODZfNjQpCiAgICAgY3VycmVudE9mZnNldCArPSBzaXpl
b2Yodm9pZCopOwogI2VuZGlmCi0gICAgCisKKyAgICBBc3NlbWJseUhlbHBlcnM6OlN0b3JlUmVn
U3Bvb2xlciBzdG9yZVNwb29sZXIoaml0LCBNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVn
aXN0ZXIpOworCiAgICAgZm9yIChNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRCByZWcgPSBNYWNy
b0Fzc2VtYmxlcjo6Zmlyc3RSZWdpc3RlcigpOyByZWcgPD0gTWFjcm9Bc3NlbWJsZXI6Omxhc3RS
ZWdpc3RlcigpOyByZWcgPSBzdGF0aWNfY2FzdDxNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRD4o
cmVnICsgMSkpIHsKICAgICAgICAgaWYgKCFrZXkudXNlZFJlZ2lzdGVycygpLmdldChyZWcpKQog
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGppdC5zdG9yZVB0cihyZWcsIEFzc2VtYmx5
SGVscGVyczo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIGN1
cnJlbnRPZmZzZXQpKTsKKyAgICAgICAgc3RvcmVTcG9vbGVyLnN0b3JlR1BSKHsgcmVnLCBzdGF0
aWNfY2FzdDxwdHJkaWZmX3Q+KGN1cnJlbnRPZmZzZXQpIH0pOwogICAgICAgICBjdXJyZW50T2Zm
c2V0ICs9IHNpemVvZih2b2lkKik7CiAgICAgfQotICAgIAorICAgIHN0b3JlU3Bvb2xlci5mbHVz
aEdQUigpOworCiAgICAgZm9yIChNYWNyb0Fzc2VtYmxlcjo6RlBSZWdpc3RlcklEIHJlZyA9IE1h
Y3JvQXNzZW1ibGVyOjpmaXJzdEZQUmVnaXN0ZXIoKTsgcmVnIDw9IE1hY3JvQXNzZW1ibGVyOjps
YXN0RlBSZWdpc3RlcigpOyByZWcgPSBzdGF0aWNfY2FzdDxNYWNyb0Fzc2VtYmxlcjo6RlBSZWdp
c3RlcklEPihyZWcgKyAxKSkgewogICAgICAgICBpZiAoIWtleS51c2VkUmVnaXN0ZXJzKCkuZ2V0
KHJlZykpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaml0LnN0b3JlRG91YmxlKHJl
ZywgQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJS
ZWdpc3RlciwgY3VycmVudE9mZnNldCkpOworICAgICAgICBzdG9yZVNwb29sZXIuc3RvcmVGUFIo
eyByZWcsIHN0YXRpY19jYXN0PHB0cmRpZmZfdD4oY3VycmVudE9mZnNldCkgfSk7CiAgICAgICAg
IGN1cnJlbnRPZmZzZXQgKz0gc2l6ZW9mKGRvdWJsZSk7CiAgICAgfQotICAgIAorICAgIHN0b3Jl
U3Bvb2xlci5mbHVzaEZQUigpOworCiAgICAgaml0LnByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVy
Q2FsbChHUFJJbmZvOjpub25BcmdHUFIxKTsKICAgICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6bm9u
QXJnR1BSMSwgQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKE1hY3JvQXNzZW1ibGVyOjpzdGFja1Bv
aW50ZXJSZWdpc3Rlciwga2V5Lm9mZnNldCgpKSk7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0
aW9uKHZtKTsKQEAgLTIxMCwyNCArMjE2LDI4IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz4gc2wKICAgICBqaXQubG9hZFB0cihBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3Mo
TWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBrZXkub2Zmc2V0KCkpLCBHUFJJ
bmZvOjpub25QcmVzZXJ2ZWROb25SZXR1cm5HUFIpOwogICAgIGppdC5yZXN0b3JlUmV0dXJuQWRk
cmVzc0JlZm9yZVJldHVybihHUFJJbmZvOjpub25QcmVzZXJ2ZWROb25SZXR1cm5HUFIpOwogICAg
IAorICAgIEFzc2VtYmx5SGVscGVyczo6TG9hZFJlZ1Nwb29sZXIgbG9hZFNwb29sZXIoaml0LCBN
YWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOworCiAgICAgZm9yIChNYWNyb0Fz
c2VtYmxlcjo6RlBSZWdpc3RlcklEIHJlZyA9IE1hY3JvQXNzZW1ibGVyOjpsYXN0RlBSZWdpc3Rl
cigpOyA7IHJlZyA9IHN0YXRpY19jYXN0PE1hY3JvQXNzZW1ibGVyOjpGUFJlZ2lzdGVySUQ+KHJl
ZyAtIDEpKSB7CiAgICAgICAgIGlmIChrZXkudXNlZFJlZ2lzdGVycygpLmdldChyZWcpKSB7CiAg
ICAgICAgICAgICBjdXJyZW50T2Zmc2V0IC09IHNpemVvZihkb3VibGUpOwotICAgICAgICAgICAg
aml0LmxvYWREb3VibGUoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKE1hY3JvQXNzZW1ibGVyOjpz
dGFja1BvaW50ZXJSZWdpc3RlciwgY3VycmVudE9mZnNldCksIHJlZyk7CisgICAgICAgICAgICBs
b2FkU3Bvb2xlci5sb2FkRlBSKHsgcmVnLCBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KGN1cnJlbnRP
ZmZzZXQpIH0pOwogICAgICAgICB9CiAgICAgICAgIGlmIChyZWcgPT0gTWFjcm9Bc3NlbWJsZXI6
OmZpcnN0RlBSZWdpc3RlcigpKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIAorICAg
IGxvYWRTcG9vbGVyLmZsdXNoRlBSKCk7CisKICAgICBmb3IgKE1hY3JvQXNzZW1ibGVyOjpSZWdp
c3RlcklEIHJlZyA9IE1hY3JvQXNzZW1ibGVyOjpsYXN0UmVnaXN0ZXIoKTsgOyByZWcgPSBzdGF0
aWNfY2FzdDxNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRD4ocmVnIC0gMSkpIHsKICAgICAgICAg
aWYgKGtleS51c2VkUmVnaXN0ZXJzKCkuZ2V0KHJlZykpIHsKICAgICAgICAgICAgIGN1cnJlbnRP
ZmZzZXQgLT0gc2l6ZW9mKHZvaWQqKTsKLSAgICAgICAgICAgIGppdC5sb2FkUHRyKEFzc2VtYmx5
SGVscGVyczo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIGN1
cnJlbnRPZmZzZXQpLCByZWcpOworICAgICAgICAgICAgbG9hZFNwb29sZXIubG9hZEdQUih7IHJl
Zywgc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihjdXJyZW50T2Zmc2V0KSB9KTsKICAgICAgICAgfQog
ICAgICAgICBpZiAocmVnID09IE1hY3JvQXNzZW1ibGVyOjpmaXJzdFJlZ2lzdGVyKCkpCiAgICAg
ICAgICAgICBicmVhazsKICAgICB9Ci0gICAgCisgICAgbG9hZFNwb29sZXIuZmx1c2hHUFIoKTsK
KwogICAgIGppdC5yZXQoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9C
QUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkZUTFRodW5rKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAJKHJldmlzaW9uIDI3
ODg4NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShKSVQpCiAKICNpbmNs
dWRlICJBY2Nlc3NDYXNlLmgiCisjaW5jbHVkZSAiQXNzZW1ibHlIZWxwZXJzU3Bvb2xlcnMuaCIK
ICNpbmNsdWRlICJKSVRPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlclZpZXcu
aCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgpAQCAtNjA2LDQyICs2MDcsOTMgQEAg
dm9pZCBBc3NlbWJseUhlbHBlcnM6OnJlc3RvcmVDYWxsZWVTYXZlcwogCiAgICAgR1BSUmVnIHNj
cmF0Y2ggPSBJbnZhbGlkR1BSUmVnOwogICAgIHVuc2lnbmVkIHNjcmF0Y2hHUFJFbnRyeUluZGV4
ID0gMDsKKyNpZiBDUFUoQVJNNjQpCisgICAgLy8gV2UgZG9uJ3QgbmVlZCBhIHNlY29uZCBzY3Jh
dGNoIEdQUiwgYnV0IHdlJ2xsIGFsc28gZGVmZXIgcmVzdG9yaW5nIHRoaXMKKyAgICAvLyBHUFIg
KGluIHRoZSBuZXh0IHNsb3QgYWZ0ZXIgdGhlIHNjcmF0Y2gpIHNvIHRoYXQgd2UgY2FuIHJlc3Rv
cmUgdGhlbSB0b2dldGhlcgorICAgIC8vIGxhdGVyIHVzaW5nIGEgbG9hZFBhaXI2NC4KKyAgICBH
UFJSZWcgdW51c2VkTmV4dFNsb3RHUFIgPSBJbnZhbGlkR1BSUmVnOworI2VuZGlmCiAKLSAgICAv
LyBVc2UgdGhlIGZpcnN0IEdQUiBlbnRyeSdzIHJlZ2lzdGVyIGFzIG91ciBzY3JhdGNoLgorICAg
IC8vIFVzZSB0aGUgZmlyc3QgR1BSIGVudHJ5J3MgcmVnaXN0ZXIgYXMgb3VyIGJhc2VHUFIuCiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkrKykgewogICAgICAg
ICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5ID0gYWxsQ2FsbGVlU2F2ZXMtPmF0KGkpOwotICAgICAg
ICBpZiAoZG9udFJlc3RvcmVSZWdpc3RlcnMuZ2V0KGVudHJ5LnJlZygpKSkKKyAgICAgICAgaWYg
KGRvbnRSZXN0b3JlUmVnaXN0ZXJzLmNvbnRhaW5zKGVudHJ5LnJlZygpKSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICBpZiAoZW50cnkucmVnKCkuaXNHUFIoKSkgeworI2lmIENQVShB
Uk02NCkKKyAgICAgICAgICAgIGlmIChpICsgMSA8IHJlZ2lzdGVyQ291bnQpIHsKKyAgICAgICAg
ICAgICAgICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5MiA9IGFsbENhbGxlZVNhdmVzLT5hdChpICsg
MSk7CisgICAgICAgICAgICAgICAgaWYgKCFkb250UmVzdG9yZVJlZ2lzdGVycy5jb250YWlucyhl
bnRyeTIucmVnKCkpCisgICAgICAgICAgICAgICAgICAgICYmIGVudHJ5Mi5yZWcoKS5pc0dQUigp
CisgICAgICAgICAgICAgICAgICAgICYmIGVudHJ5Mi5vZmZzZXQoKSA9PSBlbnRyeS5vZmZzZXQo
KSArIHN0YXRpY19jYXN0PHB0cmRpZmZfdD4oc2l6ZW9mKENQVVJlZ2lzdGVyKSkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgc2NyYXRjaEdQUkVudHJ5SW5kZXggPSBpOworICAgICAgICAgICAgICAg
ICAgICBzY3JhdGNoID0gZW50cnkucmVnKCkuZ3ByKCk7CisgICAgICAgICAgICAgICAgICAgIHVu
dXNlZE5leHRTbG90R1BSID0gZW50cnkyLnJlZygpLmdwcigpOworICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisjZWxzZQogICAgICAg
ICAgICAgc2NyYXRjaEdQUkVudHJ5SW5kZXggPSBpOwogICAgICAgICAgICAgc2NyYXRjaCA9IGVu
dHJ5LnJlZygpLmdwcigpOwogICAgICAgICAgICAgYnJlYWs7CisjZW5kaWYKICAgICAgICAgfQog
ICAgIH0KICAgICBBU1NFUlQoc2NyYXRjaCAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAKKyAgICBS
ZWdpc3RlclNldCBza2lwTGlzdDsKKyAgICBza2lwTGlzdC5zZXQoZG9udFJlc3RvcmVSZWdpc3Rl
cnMpOworCisgICAgLy8gU2tpcCB0aGUgc2NyYXRjaCByZWdpc3RlcihzKS4gV2UnbGwgcmVzdG9y
ZSB0aGVtIGxhdGVyLgorICAgIHNraXBMaXN0LmFkZChzY3JhdGNoKTsKKyNpZiBDUFUoQVJNNjQp
CisgICAgUkVMRUFTRV9BU1NFUlQodW51c2VkTmV4dFNsb3RHUFIgIT0gSW52YWxpZEdQUlJlZyk7
CisgICAgc2tpcExpc3QuYWRkKHVudXNlZE5leHRTbG90R1BSKTsKKyNlbmRpZgogCiAgICAgbG9h
ZFB0cigmdG9wRW50cnlGcmFtZSwgc2NyYXRjaCk7CiAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihF
bnRyeUZyYW1lOjpjYWxsZWVTYXZlUmVnaXN0ZXJzQnVmZmVyT2Zmc2V0KCkpLCBzY3JhdGNoKTsK
IAorICAgIExvYWRSZWdTcG9vbGVyIHNwb29sZXIoKnRoaXMsIHNjcmF0Y2gpOworCiAgICAgLy8g
UmVzdG9yZSBhbGwgY2FsbGVlIHNhdmVzIGV4Y2VwdCBmb3IgdGhlIHNjcmF0Y2guCi0gICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkrKykgeworICAgIHVuc2lnbmVk
IGkgPSAwOworICAgIGZvciAoOyBpIDwgcmVnaXN0ZXJDb3VudDsgaSsrKSB7CiAgICAgICAgIFJl
Z2lzdGVyQXRPZmZzZXQgZW50cnkgPSBhbGxDYWxsZWVTYXZlcy0+YXQoaSk7Ci0gICAgICAgIGlm
IChkb250UmVzdG9yZVJlZ2lzdGVycy5nZXQoZW50cnkucmVnKCkpKQorICAgICAgICBpZiAoc2tp
cExpc3QuY29udGFpbnMoZW50cnkucmVnKCkpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgIGlmIChpID09IHNjcmF0Y2hHUFJFbnRyeUluZGV4KQorICAgICAgICBpZiAoIWVudHJ5LnJl
ZygpLmlzR1BSKCkpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgc3Bvb2xlci5sb2FkR1BS
KGVudHJ5KTsKKyAgICB9CisgICAgc3Bvb2xlci5mbHVzaEdQUigpOworICAgIGZvciAoOyBpIDwg
cmVnaXN0ZXJDb3VudDsgaSsrKSB7CisgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQgZW50cnkgPSBh
bGxDYWxsZWVTYXZlcy0+YXQoaSk7CisgICAgICAgIGlmIChza2lwTGlzdC5jb250YWlucyhlbnRy
eS5yZWcoKSkpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgbG9hZFJlZyhBZGRyZXNz
KHNjcmF0Y2gsIGVudHJ5Lm9mZnNldCgpKSwgZW50cnkucmVnKCkpOworICAgICAgICBBU1NFUlQo
IWVudHJ5LnJlZygpLmlzR1BSKCkpOworICAgICAgICBzcG9vbGVyLmxvYWRGUFIoZW50cnkpOwog
ICAgIH0KKyAgICBzcG9vbGVyLmZsdXNoRlBSKCk7CiAKICAgICAvLyBSZXN0b3JlIHRoZSBjYWxs
ZWUgc2F2ZSB2YWx1ZSBvZiB0aGUgc2NyYXRjaC4KICAgICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5
ID0gYWxsQ2FsbGVlU2F2ZXMtPmF0KHNjcmF0Y2hHUFJFbnRyeUluZGV4KTsKICAgICBBU1NFUlQo
IWRvbnRSZXN0b3JlUmVnaXN0ZXJzLmdldChlbnRyeS5yZWcoKSkpOwogICAgIEFTU0VSVChlbnRy
eS5yZWcoKS5pc0dQUigpKTsKICAgICBBU1NFUlQoc2NyYXRjaCA9PSBlbnRyeS5yZWcoKS5ncHIo
KSk7Ci0gICAgbG9hZFJlZyhBZGRyZXNzKHNjcmF0Y2gsIGVudHJ5Lm9mZnNldCgpKSwgc2NyYXRj
aCk7CisjaWYgQ1BVKEFSTTY0KQorICAgIFJlZ2lzdGVyQXRPZmZzZXQgZW50cnkyID0gYWxsQ2Fs
bGVlU2F2ZXMtPmF0KHNjcmF0Y2hHUFJFbnRyeUluZGV4ICsgMSk7CisgICAgQVNTRVJUX1VOVVNF
RChlbnRyeTIsICFkb250UmVzdG9yZVJlZ2lzdGVycy5nZXQoZW50cnkyLnJlZygpKSk7CisgICAg
QVNTRVJUKGVudHJ5Mi5yZWcoKS5pc0dQUigpKTsKKyAgICBBU1NFUlQodW51c2VkTmV4dFNsb3RH
UFIgPT0gZW50cnkyLnJlZygpLmdwcigpKTsKKyAgICBsb2FkUGFpcjY0KHNjcmF0Y2gsIFRydXN0
ZWRJbW0zMihlbnRyeS5vZmZzZXQoKSksIHNjcmF0Y2gsIHVudXNlZE5leHRTbG90R1BSKTsKICNl
bHNlCi0gICAgVU5VU0VEX1BBUkFNKHRvcEVudHJ5RnJhbWUpOworICAgIGxvYWRQdHIoQWRkcmVz
cyhzY3JhdGNoLCBlbnRyeS5vZmZzZXQoKSksIHNjcmF0Y2gpOwogI2VuZGlmCisKKyNlbHNlCisg
ICAgVU5VU0VEX1BBUkFNKHRvcEVudHJ5RnJhbWUpOworI2VuZGlmIC8vIE5VTUJFUl9PRl9DQUxM
RUVfU0FWRVNfUkVHSVNURVJTID4gMAogfQogCiB2b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1pdFZp
cnR1YWxDYWxsKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbExpbmtJ
bmZvKiBpbmZvKQpAQCAtOTk5LDEzICsxMDUxLDI3IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjpj
b3B5Q2FsbGVlU2F2ZXNUb0UKICAgICBSZWdpc3RlckF0T2Zmc2V0TGlzdCogYWxsQ2FsbGVlU2F2
ZXMgPSBSZWdpc3RlclNldDo6dm1DYWxsZWVTYXZlUmVnaXN0ZXJPZmZzZXRzKCk7CiAgICAgUmVn
aXN0ZXJTZXQgZG9udENvcHlSZWdpc3RlcnMgPSBSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMo
KTsKICAgICB1bnNpZ25lZCByZWdpc3RlckNvdW50ID0gYWxsQ2FsbGVlU2F2ZXMtPnNpemUoKTsK
LSAgICAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVnaXN0ZXJDb3VudDsgaSsrKSB7
CisKKyAgICBTdG9yZVJlZ1Nwb29sZXIgc3Bvb2xlcigqdGhpcywgY2FsbGVlU2F2ZXNCdWZmZXIp
OworCisgICAgdW5zaWduZWQgaSA9IDA7CisgICAgZm9yICg7IGkgPCByZWdpc3RlckNvdW50OyBp
KyspIHsKICAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCBlbnRyeSA9IGFsbENhbGxlZVNhdmVzLT5h
dChpKTsKLSAgICAgICAgaWYgKGRvbnRDb3B5UmVnaXN0ZXJzLmdldChlbnRyeS5yZWcoKSkpCisg
ICAgICAgIGlmIChkb250Q29weVJlZ2lzdGVycy5jb250YWlucyhlbnRyeS5yZWcoKSkpCisgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKCFlbnRyeS5yZWcoKS5pc0dQUigpKQorICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIHNwb29sZXIuc3RvcmVHUFIoZW50cnkpOworICAgIH0K
KyAgICBzcG9vbGVyLmZsdXNoR1BSKCk7CisgICAgZm9yICg7IGkgPCByZWdpc3RlckNvdW50OyBp
KyspIHsKKyAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCBlbnRyeSA9IGFsbENhbGxlZVNhdmVzLT5h
dChpKTsKKyAgICAgICAgaWYgKGRvbnRDb3B5UmVnaXN0ZXJzLmNvbnRhaW5zKGVudHJ5LnJlZygp
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBzdG9yZVJlZyhlbnRyeS5yZWcoKSwg
QWRkcmVzcyhjYWxsZWVTYXZlc0J1ZmZlciwgZW50cnkub2Zmc2V0KCkpKTsKKyAgICAgICAgc3Bv
b2xlci5zdG9yZUZQUihlbnRyeSk7CiAgICAgfQorICAgIHNwb29sZXIuZmx1c2hGUFIoKTsKKwog
I2Vsc2UKICAgICBVTlVTRURfUEFSQU0oY2FsbGVlU2F2ZXNCdWZmZXIpOwogI2VuZGlmCkBAIC0x
MTAzLDYgKzExNjksMTg0IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjpjYWdlQ29uZGl0aW9uYWxs
eUEKICAgICBVTlVTRURfUEFSQU0oc2NyYXRjaCk7CiB9CiAKK3ZvaWQgQXNzZW1ibHlIZWxwZXJz
OjplbWl0U2F2ZShjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCYgbGlzdCkKK3sKKyAgICBTdG9y
ZVJlZ1Nwb29sZXIgc3Bvb2xlcigqdGhpcywgZnJhbWVQb2ludGVyUmVnaXN0ZXIpOworCisgICAg
c2l6ZV90IGxpc3RTaXplID0gbGlzdC5zaXplKCk7CisgICAgc2l6ZV90IGkgPSAwOworICAgIGZv
ciAoOyBpIDwgbGlzdFNpemU7IGkrKykgeworICAgICAgICBhdXRvIGVudHJ5ID0gbGlzdC5hdChp
KTsKKyAgICAgICAgaWYgKCFlbnRyeS5yZWcoKS5pc0dQUigpKQorICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIHNwb29sZXIuc3RvcmVHUFIoZW50cnkpOworICAgIH0KKyAgICBzcG9vbGVyLmZs
dXNoR1BSKCk7CisKKyAgICBmb3IgKDsgaSA8IGxpc3RTaXplOyBpKyspCisgICAgICAgIHNwb29s
ZXIuc3RvcmVGUFIobGlzdC5hdChpKSk7CisgICAgc3Bvb2xlci5mbHVzaEZQUigpOworfQorCit2
b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1pdFJlc3RvcmUoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExp
c3QmIGxpc3QpCit7CisgICAgTG9hZFJlZ1Nwb29sZXIgc3Bvb2xlcigqdGhpcywgZnJhbWVQb2lu
dGVyUmVnaXN0ZXIpOworCisgICAgc2l6ZV90IGxpc3RTaXplID0gbGlzdC5zaXplKCk7CisgICAg
c2l6ZV90IGkgPSAwOworICAgIGZvciAoOyBpIDwgbGlzdFNpemU7IGkrKykgeworICAgICAgICBh
dXRvIGVudHJ5ID0gbGlzdC5hdChpKTsKKyAgICAgICAgaWYgKCFlbnRyeS5yZWcoKS5pc0dQUigp
KQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIHNwb29sZXIubG9hZEdQUihlbnRyeSk7Cisg
ICAgfQorICAgIHNwb29sZXIuZmx1c2hHUFIoKTsKKworICAgIGZvciAoOyBpIDwgbGlzdFNpemU7
IGkrKykKKyAgICAgICAgc3Bvb2xlci5sb2FkRlBSKGxpc3QuYXQoaSkpOworICAgIHNwb29sZXIu
Zmx1c2hGUFIoKTsKK30KKwordm9pZCBBc3NlbWJseUhlbHBlcnM6OmVtaXRTYXZlQ2FsbGVlU2F2
ZXNGb3IoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGNhbGxlZVNhdmVzKQoreworICAgIFJl
Z2lzdGVyU2V0IGRvbnRTYXZlUmVnaXN0ZXJzID0gUmVnaXN0ZXJTZXQoUmVnaXN0ZXJTZXQ6OnN0
YWNrUmVnaXN0ZXJzKCksIFJlZ2lzdGVyU2V0OjphbGxGUFJzKCkpOworICAgIHVuc2lnbmVkIHJl
Z2lzdGVyQ291bnQgPSBjYWxsZWVTYXZlcy0+c2l6ZSgpOworCisgICAgU3RvcmVSZWdTcG9vbGVy
IHNwb29sZXIoKnRoaXMsIGZyYW1lUG9pbnRlclJlZ2lzdGVyKTsKKworICAgIHVuc2lnbmVkIGkg
PSAwOworICAgIGZvciAoOyBpIDwgcmVnaXN0ZXJDb3VudDsgaSsrKSB7CisgICAgICAgIFJlZ2lz
dGVyQXRPZmZzZXQgZW50cnkgPSBjYWxsZWVTYXZlcy0+YXQoaSk7CisgICAgICAgIGlmIChkb250
U2F2ZVJlZ2lzdGVycy5jb250YWlucyhlbnRyeS5yZWcoKSkpCisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgc3Bvb2xlci5zdG9yZUdQUihlbnRyeSk7CisgICAgfQorICAgIHNwb29sZXIu
Zmx1c2hHUFIoKTsKKyAgICBmb3IgKDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkrKykgeworICAgICAg
ICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5ID0gY2FsbGVlU2F2ZXMtPmF0KGkpOworICAgICAgICBp
ZiAoZG9udFNhdmVSZWdpc3RlcnMuY29udGFpbnMoZW50cnkucmVnKCkpKQorICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIHNwb29sZXIuc3RvcmVGUFIoZW50cnkpOworICAgIH0KKyAgICBz
cG9vbGVyLmZsdXNoRlBSKCk7Cit9CisKK3ZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0UmVzdG9y
ZUNhbGxlZVNhdmVzRm9yKGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBjYWxsZWVTYXZlcykK
K3sKKyAgICBSZWdpc3RlclNldCBkb250UmVzdG9yZVJlZ2lzdGVycyA9IFJlZ2lzdGVyU2V0KFJl
Z2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpLCBSZWdpc3RlclNldDo6YWxsRlBScygpKTsKKyAg
ICB1bnNpZ25lZCByZWdpc3RlckNvdW50ID0gY2FsbGVlU2F2ZXMtPnNpemUoKTsKKyAgICAKKyAg
ICBMb2FkUmVnU3Bvb2xlciBzcG9vbGVyKCp0aGlzLCBmcmFtZVBvaW50ZXJSZWdpc3Rlcik7CisK
KyAgICB1bnNpZ25lZCBpID0gMDsKKyAgICBmb3IgKDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkrKykg
eworICAgICAgICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5ID0gY2FsbGVlU2F2ZXMtPmF0KGkpOwor
ICAgICAgICBpZiAoZG9udFJlc3RvcmVSZWdpc3RlcnMuZ2V0KGVudHJ5LnJlZygpKSkKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICBzcG9vbGVyLmxvYWRHUFIoZW50cnkpOworICAgIH0K
KyAgICBzcG9vbGVyLmZsdXNoR1BSKCk7CisgICAgZm9yICg7IGkgPCByZWdpc3RlckNvdW50OyBp
KyspIHsKKyAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCBlbnRyeSA9IGNhbGxlZVNhdmVzLT5hdChp
KTsKKyAgICAgICAgaWYgKGRvbnRSZXN0b3JlUmVnaXN0ZXJzLmdldChlbnRyeS5yZWcoKSkpCisg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgc3Bvb2xlci5sb2FkRlBSKGVudHJ5KTsKKyAg
ICB9CisgICAgc3Bvb2xlci5mbHVzaEZQUigpOworfQorCit2b2lkIEFzc2VtYmx5SGVscGVyczo6
Y29weUxMSW50QmFzZWxpbmVDYWxsZWVTYXZlc0Zyb21GcmFtZU9yUmVnaXN0ZXJUb0VudHJ5RnJh
bWVDYWxsZWVTYXZlc0J1ZmZlcihFbnRyeUZyYW1lKiYgdG9wRW50cnlGcmFtZSwgY29uc3QgVGVt
cFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzKQoreworI2lmIE5VTUJFUl9PRl9DQUxMRUVfU0FW
RVNfUkVHSVNURVJTID4gMAorICAgIC8vIENvcHkgc2F2ZWQgY2FsbGVlU2F2ZXMgb24gc3RhY2sg
b3IgdW5zYXZlZCBjYWxsZWVTYXZlcyBpbiByZWdpc3RlciB0byB2bSBjYWxsZWVTYXZlIGJ1ZmZl
cgorICAgIEdQUlJlZyBkZXN0QnVmZmVyR1BSID0gdXNlZFJlZ2lzdGVycy5nZXRGcmVlR1BSKDAp
OworICAgIEdQUlJlZyB0ZW1wMSA9IHVzZWRSZWdpc3RlcnMuZ2V0RnJlZUdQUigxKTsKKyAgICBG
UFJSZWcgZnBUZW1wMSA9IHVzZWRSZWdpc3RlcnMuZ2V0RnJlZUZQUigwKTsKKyAgICBHUFJSZWcg
dGVtcDIgPSBpc0FSTTY0KCkgPyB1c2VkUmVnaXN0ZXJzLmdldEZyZWVHUFIoMikgOiBJbnZhbGlk
R1BSUmVnOworICAgIEZQUlJlZyBmcFRlbXAyID0gaXNBUk02NCgpID8gdXNlZFJlZ2lzdGVycy5n
ZXRGcmVlRlBSKDEpIDogSW52YWxpZEZQUlJlZzsKKworICAgIGxvYWRQdHIoJnRvcEVudHJ5RnJh
bWUsIGRlc3RCdWZmZXJHUFIpOworICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoRW50cnlGcmFtZTo6
Y2FsbGVlU2F2ZVJlZ2lzdGVyc0J1ZmZlck9mZnNldCgpKSwgZGVzdEJ1ZmZlckdQUik7CisKKyAg
ICBDb3B5U3Bvb2xlciBzcG9vbGVyKCp0aGlzLCBmcmFtZVBvaW50ZXJSZWdpc3RlciwgZGVzdEJ1
ZmZlckdQUiwgdGVtcDEsIHRlbXAyLCBmcFRlbXAxLCBmcFRlbXAyKTsKKworICAgIFJlZ2lzdGVy
QXRPZmZzZXRMaXN0KiBhbGxDYWxsZWVTYXZlcyA9IFJlZ2lzdGVyU2V0Ojp2bUNhbGxlZVNhdmVS
ZWdpc3Rlck9mZnNldHMoKTsKKyAgICBjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCogY3VycmVu
dENhbGxlZVNhdmVzID0gJlJlZ2lzdGVyQXRPZmZzZXRMaXN0OjpsbGludEJhc2VsaW5lQ2FsbGVl
U2F2ZVJlZ2lzdGVycygpOworICAgIFJlZ2lzdGVyU2V0IGRvbnRDb3B5UmVnaXN0ZXJzID0gUmVn
aXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCk7CisgICAgdW5zaWduZWQgcmVnaXN0ZXJDb3VudCA9
IGFsbENhbGxlZVNhdmVzLT5zaXplKCk7CisKKyAgICB1bnNpZ25lZCBpID0gMDsKKyAgICBmb3Ig
KDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkrKykgeworICAgICAgICBSZWdpc3RlckF0T2Zmc2V0IGVu
dHJ5ID0gYWxsQ2FsbGVlU2F2ZXMtPmF0KGkpOworICAgICAgICBpZiAoZG9udENvcHlSZWdpc3Rl
cnMuY29udGFpbnMoZW50cnkucmVnKCkpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
IFJlZ2lzdGVyQXRPZmZzZXQqIGN1cnJlbnRGcmFtZUVudHJ5ID0gY3VycmVudENhbGxlZVNhdmVz
LT5maW5kKGVudHJ5LnJlZygpKTsKKworICAgICAgICBpZiAoIWVudHJ5LnJlZygpLmlzR1BSKCkp
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKGN1cnJlbnRGcmFtZUVudHJ5KQorICAg
ICAgICAgICAgc3Bvb2xlci5sb2FkR1BSKGN1cnJlbnRGcmFtZUVudHJ5LT5vZmZzZXQoKSk7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNwb29sZXIuY29weUdQUihlbnRyeS5yZWcoKS5ncHIo
KSk7CisgICAgICAgIHNwb29sZXIuc3RvcmVHUFIoZW50cnkub2Zmc2V0KCkpOworICAgIH0KKyAg
ICBzcG9vbGVyLmZsdXNoR1BSKCk7CisKKyAgICBmb3IgKDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkr
KykgeworICAgICAgICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5ID0gYWxsQ2FsbGVlU2F2ZXMtPmF0
KGkpOworICAgICAgICBpZiAoZG9udENvcHlSZWdpc3RlcnMuZ2V0KGVudHJ5LnJlZygpKSkKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBSZWdpc3RlckF0T2Zmc2V0KiBjdXJyZW50RnJh
bWVFbnRyeSA9IGN1cnJlbnRDYWxsZWVTYXZlcy0+ZmluZChlbnRyeS5yZWcoKSk7CisKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoZW50cnkucmVnKCkuaXNGUFIoKSk7CisgICAgICAgIGlmIChjdXJy
ZW50RnJhbWVFbnRyeSkKKyAgICAgICAgICAgIHNwb29sZXIubG9hZEZQUihjdXJyZW50RnJhbWVF
bnRyeS0+b2Zmc2V0KCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzcG9vbGVyLmNvcHlG
UFIoZW50cnkucmVnKCkuZnByKCkpOworICAgICAgICBzcG9vbGVyLnN0b3JlRlBSKGVudHJ5Lm9m
ZnNldCgpKTsKKyAgICB9CisgICAgc3Bvb2xlci5mbHVzaEZQUigpOworCisjZWxzZQorICAgIFVO
VVNFRF9QQVJBTSh0b3BFbnRyeUZyYW1lKTsKKyAgICBVTlVTRURfUEFSQU0odXNlZFJlZ2lzdGVy
cyk7CisjZW5kaWYKK30KKwordm9pZCBBc3NlbWJseUhlbHBlcnM6OmVtaXRTYXZlT3JDb3B5TExJ
bnRCYXNlbGluZUNhbGxlZVNhdmVzRm9yKENvZGVCbG9jayogY29kZUJsb2NrLCBWaXJ0dWFsUmVn
aXN0ZXIgb2Zmc2V0VmlydHVhbFJlZ2lzdGVyLCBSZXN0b3JlVGFnUmVnaXN0ZXJNb2RlIHRhZ1Jl
Z2lzdGVyTW9kZSwgR1BSUmVnIHRlbXAxLCBHUFJSZWcgdGVtcDIsIEdQUlJlZyB0ZW1wMykKK3sK
KyAgICBBU1NFUlQoY29kZUJsb2NrKTsKKworICAgIFJFTEVBU0VfQVNTRVJUKCFKSVRDb2RlOjpp
c09wdGltaXppbmdKSVQoY29kZUJsb2NrLT5qaXRUeXBlKCkpKTsKKyAgICBSRUxFQVNFX0FTU0VS
VChjb2RlQmxvY2stPmNhbGxlZVNhdmVSZWdpc3RlcnMoKSA9PSAmUmVnaXN0ZXJBdE9mZnNldExp
c3Q6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCkpOworICAgIGNvbnN0IFJlZ2lz
dGVyQXRPZmZzZXRMaXN0KiBjYWxsZWVTYXZlcyA9ICZSZWdpc3RlckF0T2Zmc2V0TGlzdDo6bGxp
bnRCYXNlbGluZUNhbGxlZVNhdmVSZWdpc3RlcnMoKTsKKyAgICBSZWdpc3RlclNldCBkb250U2F2
ZVJlZ2lzdGVycyA9IFJlZ2lzdGVyU2V0KFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpLCBS
ZWdpc3RlclNldDo6YWxsRlBScygpKTsKKyAgICB1bnNpZ25lZCByZWdpc3RlckNvdW50ID0gY2Fs
bGVlU2F2ZXMtPnNpemUoKTsKKworICAgIEdQUlJlZyBkc3RCdWZmZXJHUFIgPSB0ZW1wMTsKKyAg
ICBhZGRQdHIoVHJ1c3RlZEltbTMyKG9mZnNldFZpcnR1YWxSZWdpc3Rlci5vZmZzZXRJbkJ5dGVz
KCkpLCBmcmFtZVBvaW50ZXJSZWdpc3RlciwgZHN0QnVmZmVyR1BSKTsKKworICAgIENvcHlTcG9v
bGVyIHNwb29sZXIoKnRoaXMsIGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBkc3RCdWZmZXJHUFIsIHRl
bXAyLCB0ZW1wMyk7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVnaXN0ZXJDb3Vu
dDsgaSsrKSB7CisgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQgZW50cnkgPSBjYWxsZWVTYXZlcy0+
YXQoaSk7CisgICAgICAgIGlmIChkb250U2F2ZVJlZ2lzdGVycy5nZXQoZW50cnkucmVnKCkpKQor
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIAorI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisg
ICAgICAgIFVOVVNFRF9QQVJBTSh0YWdSZWdpc3Rlck1vZGUpOworICAgICAgICBVTlVTRURfUEFS
QU0odGVtcCk7CisjZWxzZQorICAgICAgICBpZiAodGFnUmVnaXN0ZXJNb2RlID09IENvcHlCYXNl
bGluZUNhbGxlZVNhdmVkUmVnaXN0ZXJzRnJvbUJhc2VGcmFtZSkKKyAgICAgICAgICAgIHNwb29s
ZXIubG9hZEdQUihlbnRyeS5vZmZzZXQoKSk7CisgICAgICAgIGVsc2UKKyNlbmRpZgorICAgICAg
ICAgICAgc3Bvb2xlci5jb3B5R1BSKGVudHJ5LnJlZygpLmdwcigpKTsKKyAgICAgICAgc3Bvb2xl
ci5zdG9yZUdQUihlbnRyeS5vZmZzZXQoKSk7CisgICAgfQorICAgIHNwb29sZXIuZmx1c2hHUFIo
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCShyZXZpc2lv
biAyNzg4ODYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yOTUsMzEgKzI5NSwxOSBAQCBwdWJsaWM6CiAgICAgICAgIHN0
b3JlMzIoVHJ1c3RlZEltbTMyKHZhbHVlLnBheWxvYWQoKSksIGFkZHJlc3Mud2l0aE9mZnNldChQ
YXlsb2FkT2Zmc2V0KSk7CiAjZW5kaWYKICAgICB9Ci0gICAgCisKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBPcD4gY2xhc3MgU3Bvb2xlcjsKKyAgICBjbGFzcyBMb2FkUmVnU3Bvb2xlcjsKKyAgICBj
bGFzcyBTdG9yZVJlZ1Nwb29sZXI7CisgICAgY2xhc3MgQ29weVNwb29sZXI7CisKICAgICBBZGRy
ZXNzIGFkZHJlc3NGb3IoY29uc3QgUmVnaXN0ZXJBdE9mZnNldCYgZW50cnkpCiAgICAgewogICAg
ICAgICByZXR1cm4gQWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgZW50cnkub2Zm
c2V0KCkpOwogICAgIH0KLSAgICAKLSAgICB2b2lkIGVtaXRTYXZlKGNvbnN0IFJlZ2lzdGVyQXRP
ZmZzZXRMaXN0JiBsaXN0KQotICAgIHsKLSAgICAgICAgZm9yIChjb25zdCBSZWdpc3RlckF0T2Zm
c2V0JiBlbnRyeSA6IGxpc3QpIHsKLSAgICAgICAgICAgIGlmIChlbnRyeS5yZWcoKS5pc0dQUigp
KQotICAgICAgICAgICAgICAgIHN0b3JlUHRyKGVudHJ5LnJlZygpLmdwcigpLCBhZGRyZXNzRm9y
KGVudHJ5KSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgc3RvcmVEb3VibGUo
ZW50cnkucmVnKCkuZnByKCksIGFkZHJlc3NGb3IoZW50cnkpKTsKLSAgICAgICAgfQotICAgIH0K
LSAgICAKLSAgICB2b2lkIGVtaXRSZXN0b3JlKGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRMaXN0JiBs
aXN0KQotICAgIHsKLSAgICAgICAgZm9yIChjb25zdCBSZWdpc3RlckF0T2Zmc2V0JiBlbnRyeSA6
IGxpc3QpIHsKLSAgICAgICAgICAgIGlmIChlbnRyeS5yZWcoKS5pc0dQUigpKQotICAgICAgICAg
ICAgICAgIGxvYWRQdHIoYWRkcmVzc0ZvcihlbnRyeSksIGVudHJ5LnJlZygpLmdwcigpKTsKLSAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBsb2FkRG91YmxlKGFkZHJlc3NGb3IoZW50
cnkpLCBlbnRyeS5yZWcoKS5mcHIoKSk7Ci0gICAgICAgIH0KLSAgICB9CisKKyAgICB2b2lkIGVt
aXRTYXZlKGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRMaXN0Jik7CisgICAgdm9pZCBlbWl0UmVzdG9y
ZShjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCYpOwogCiAgICAgdm9pZCBlbWl0U2F2ZUNhbGxl
ZVNhdmVzRm9yKENvZGVCbG9jayogY29kZUJsb2NrKQogICAgIHsKQEAgLTMyOSw1NCArMzE3LDEx
IEBAIHB1YmxpYzoKICAgICAgICAgZW1pdFNhdmVDYWxsZWVTYXZlc0ZvcihjYWxsZWVTYXZlcyk7
CiAgICAgfQogCi0gICAgdm9pZCBlbWl0U2F2ZUNhbGxlZVNhdmVzRm9yKGNvbnN0IFJlZ2lzdGVy
QXRPZmZzZXRMaXN0KiBjYWxsZWVTYXZlcykKLSAgICB7Ci0gICAgICAgIFJlZ2lzdGVyU2V0IGRv
bnRTYXZlUmVnaXN0ZXJzID0gUmVnaXN0ZXJTZXQoUmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJz
KCksIFJlZ2lzdGVyU2V0OjphbGxGUFJzKCkpOwotICAgICAgICB1bnNpZ25lZCByZWdpc3RlckNv
dW50ID0gY2FsbGVlU2F2ZXMtPnNpemUoKTsKLQotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgcmVnaXN0ZXJDb3VudDsgaSsrKSB7Ci0gICAgICAgICAgICBSZWdpc3RlckF0T2Zmc2V0
IGVudHJ5ID0gY2FsbGVlU2F2ZXMtPmF0KGkpOwotICAgICAgICAgICAgaWYgKGRvbnRTYXZlUmVn
aXN0ZXJzLmdldChlbnRyeS5yZWcoKSkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgICAgICBzdG9yZVB0cihlbnRyeS5yZWcoKS5ncHIoKSwgQWRkcmVzcyhmcmFtZVBvaW50ZXJS
ZWdpc3RlciwgZW50cnkub2Zmc2V0KCkpKTsKLSAgICAgICAgfQotICAgIH0KKyAgICB2b2lkIGVt
aXRTYXZlQ2FsbGVlU2F2ZXNGb3IoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGNhbGxlZVNh
dmVzKTsKICAgICAKICAgICBlbnVtIFJlc3RvcmVUYWdSZWdpc3Rlck1vZGUgeyBVc2VFeGlzdGlu
Z1RhZ1JlZ2lzdGVyQ29udGVudHMsIENvcHlCYXNlbGluZUNhbGxlZVNhdmVkUmVnaXN0ZXJzRnJv
bUJhc2VGcmFtZSB9OwogCi0gICAgdm9pZCBlbWl0U2F2ZU9yQ29weUNhbGxlZVNhdmVzRm9yKENv
ZGVCbG9jayogY29kZUJsb2NrLCBWaXJ0dWFsUmVnaXN0ZXIgb2Zmc2V0VmlydHVhbFJlZ2lzdGVy
LCBSZXN0b3JlVGFnUmVnaXN0ZXJNb2RlIHRhZ1JlZ2lzdGVyTW9kZSwgR1BSUmVnIHRlbXApCi0g
ICAgewotICAgICAgICBBU1NFUlQoY29kZUJsb2NrKTsKLSAgICAgICAgCi0gICAgICAgIGNvbnN0
IFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBjYWxsZWVTYXZlcyA9IGNvZGVCbG9jay0+Y2FsbGVlU2F2
ZVJlZ2lzdGVycygpOwotICAgICAgICBSZWdpc3RlclNldCBkb250U2F2ZVJlZ2lzdGVycyA9IFJl
Z2lzdGVyU2V0KFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpLCBSZWdpc3RlclNldDo6YWxs
RlBScygpKTsKLSAgICAgICAgdW5zaWduZWQgcmVnaXN0ZXJDb3VudCA9IGNhbGxlZVNhdmVzLT5z
aXplKCk7Ci0KLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBSZWdpc3RlclNldCBiYXNlbGlu
ZUNhbGxlZVNhdmVzID0gUmVnaXN0ZXJTZXQ6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0
ZXJzKCk7Ci0jZW5kaWYKLSAgICAgICAgCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCByZWdpc3RlckNvdW50OyBpKyspIHsKLSAgICAgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQgZW50
cnkgPSBjYWxsZWVTYXZlcy0+YXQoaSk7Ci0gICAgICAgICAgICBpZiAoZG9udFNhdmVSZWdpc3Rl
cnMuZ2V0KGVudHJ5LnJlZygpKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
ICAgIAotICAgICAgICAgICAgR1BSUmVnIHJlZ2lzdGVyVG9Xcml0ZTsKLSAgICAgICAgICAgIAot
I2lmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgICAgICAgICBVTlVTRURfUEFSQU0odGFnUmVnaXN0
ZXJNb2RlKTsKLSAgICAgICAgICAgIFVOVVNFRF9QQVJBTSh0ZW1wKTsKLSNlbHNlCi0gICAgICAg
ICAgICBpZiAodGFnUmVnaXN0ZXJNb2RlID09IENvcHlCYXNlbGluZUNhbGxlZVNhdmVkUmVnaXN0
ZXJzRnJvbUJhc2VGcmFtZSAmJiBiYXNlbGluZUNhbGxlZVNhdmVzLmdldChlbnRyeS5yZWcoKSkp
IHsKLSAgICAgICAgICAgICAgICByZWdpc3RlclRvV3JpdGUgPSB0ZW1wOwotICAgICAgICAgICAg
ICAgIGxvYWRQdHIoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyLCBlbnRyeS5vZmZzZXQoKSksIHJlZ2lzdGVyVG9Xcml0ZSk7Ci0gICAgICAgICAgICB9
IGVsc2UKLSNlbmRpZgotICAgICAgICAgICAgICAgIHJlZ2lzdGVyVG9Xcml0ZSA9IGVudHJ5LnJl
ZygpLmdwcigpOwotCi0gICAgICAgICAgICBzdG9yZVB0cihyZWdpc3RlclRvV3JpdGUsIEFkZHJl
c3MoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIG9mZnNldFZpcnR1YWxSZWdpc3Rlci5vZmZzZXRJbkJ5
dGVzKCkgKyBlbnRyeS5vZmZzZXQoKSkpOwotICAgICAgICB9Ci0gICAgfQorICAgIHZvaWQgZW1p
dFNhdmVPckNvcHlMTEludEJhc2VsaW5lQ2FsbGVlU2F2ZXNGb3IoQ29kZUJsb2NrKiwgVmlydHVh
bFJlZ2lzdGVyIG9mZnNldFZpcnR1YWxSZWdpc3RlciwgUmVzdG9yZVRhZ1JlZ2lzdGVyTW9kZSwg
R1BSUmVnIHRlbXAxLCBHUFJSZWcgdGVtcDIsIEdQUlJlZyB0ZW1wMyk7CiAgICAgCiAgICAgdm9p
ZCBlbWl0UmVzdG9yZUNhbGxlZVNhdmVzRm9yKENvZGVCbG9jayogY29kZUJsb2NrKQogICAgIHsK
QEAgLTM4NiwxOCArMzMxLDcgQEAgcHVibGljOgogICAgICAgICBlbWl0UmVzdG9yZUNhbGxlZVNh
dmVzRm9yKGNhbGxlZVNhdmVzKTsKICAgICB9CiAKLSAgICB2b2lkIGVtaXRSZXN0b3JlQ2FsbGVl
U2F2ZXNGb3IoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGNhbGxlZVNhdmVzKQotICAgIHsK
LSAgICAgICAgUmVnaXN0ZXJTZXQgZG9udFJlc3RvcmVSZWdpc3RlcnMgPSBSZWdpc3RlclNldChS
ZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKSwgUmVnaXN0ZXJTZXQ6OmFsbEZQUnMoKSk7Ci0g
ICAgICAgIHVuc2lnbmVkIHJlZ2lzdGVyQ291bnQgPSBjYWxsZWVTYXZlcy0+c2l6ZSgpOwotICAg
ICAgICAKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkr
KykgewotICAgICAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCBlbnRyeSA9IGNhbGxlZVNhdmVzLT5h
dChpKTsKLSAgICAgICAgICAgIGlmIChkb250UmVzdG9yZVJlZ2lzdGVycy5nZXQoZW50cnkucmVn
KCkpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgbG9hZFB0cihBZGRy
ZXNzKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBlbnRyeS5vZmZzZXQoKSksIGVudHJ5LnJlZygpLmdw
cigpKTsKLSAgICAgICAgfQotICAgIH0KKyAgICB2b2lkIGVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXNG
b3IoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGNhbGxlZVNhdmVzKTsKIAogICAgIHZvaWQg
ZW1pdFNhdmVDYWxsZWVTYXZlcygpCiAgICAgewpAQCAtNDc4LDU4ICs0MTIsNyBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIHJlc3RvcmVDYWxsZWVTYXZlc0Zyb21FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNC
dWZmZXIoRW50cnlGcmFtZSomKTsKIAotICAgIHZvaWQgY29weUxMSW50QmFzZWxpbmVDYWxsZWVT
YXZlc0Zyb21GcmFtZU9yUmVnaXN0ZXJUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcihFbnRy
eUZyYW1lKiYgdG9wRW50cnlGcmFtZSwgY29uc3QgVGVtcFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0
ZXJzID0geyBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCkgfSkKLSAgICB7
Ci0jaWYgTlVNQkVSX09GX0NBTExFRV9TQVZFU19SRUdJU1RFUlMgPiAwCi0gICAgICAgIEdQUlJl
ZyB0ZW1wMSA9IHVzZWRSZWdpc3RlcnMuZ2V0RnJlZUdQUigwKTsKLSAgICAgICAgR1BSUmVnIHRl
bXAyID0gdXNlZFJlZ2lzdGVycy5nZXRGcmVlR1BSKDEpOwotICAgICAgICBGUFJSZWcgZnBUZW1w
ID0gdXNlZFJlZ2lzdGVycy5nZXRGcmVlRlBSKCk7Ci0gICAgICAgIEFTU0VSVCh0ZW1wMiAhPSBJ
bnZhbGlkR1BSUmVnKTsKLQotICAgICAgICAvLyBDb3B5IHNhdmVkIGNhbGxlZVNhdmVzIG9uIHN0
YWNrIG9yIHVuc2F2ZWQgY2FsbGVlU2F2ZXMgaW4gcmVnaXN0ZXIgdG8gdm0gY2FsbGVlU2F2ZSBi
dWZmZXIKLSAgICAgICAgbG9hZFB0cigmdG9wRW50cnlGcmFtZSwgdGVtcDEpOwotICAgICAgICBh
ZGRQdHIoVHJ1c3RlZEltbTMyKEVudHJ5RnJhbWU6OmNhbGxlZVNhdmVSZWdpc3RlcnNCdWZmZXJP
ZmZzZXQoKSksIHRlbXAxKTsKLQotICAgICAgICBSZWdpc3RlckF0T2Zmc2V0TGlzdCogYWxsQ2Fs
bGVlU2F2ZXMgPSBSZWdpc3RlclNldDo6dm1DYWxsZWVTYXZlUmVnaXN0ZXJPZmZzZXRzKCk7Ci0g
ICAgICAgIGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBjdXJyZW50Q2FsbGVlU2F2ZXMgPSAm
UmVnaXN0ZXJBdE9mZnNldExpc3Q6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCk7
Ci0gICAgICAgIFJlZ2lzdGVyU2V0IGRvbnRDb3B5UmVnaXN0ZXJzID0gUmVnaXN0ZXJTZXQ6OnN0
YWNrUmVnaXN0ZXJzKCk7Ci0gICAgICAgIHVuc2lnbmVkIHJlZ2lzdGVyQ291bnQgPSBhbGxDYWxs
ZWVTYXZlcy0+c2l6ZSgpOwotCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZWdp
c3RlckNvdW50OyBpKyspIHsKLSAgICAgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQgZW50cnkgPSBh
bGxDYWxsZWVTYXZlcy0+YXQoaSk7Ci0gICAgICAgICAgICBpZiAoZG9udENvcHlSZWdpc3RlcnMu
Z2V0KGVudHJ5LnJlZygpKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAg
IFJlZ2lzdGVyQXRPZmZzZXQqIGN1cnJlbnRGcmFtZUVudHJ5ID0gY3VycmVudENhbGxlZVNhdmVz
LT5maW5kKGVudHJ5LnJlZygpKTsKLQotICAgICAgICAgICAgaWYgKGVudHJ5LnJlZygpLmlzR1BS
KCkpIHsKLSAgICAgICAgICAgICAgICBHUFJSZWcgcmVnVG9TdG9yZTsKLSAgICAgICAgICAgICAg
ICBpZiAoY3VycmVudEZyYW1lRW50cnkpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gTG9hZCBj
YWxsZWVTYXZlIGZyb20gc3RhY2sgaW50byB0ZW1wIHJlZ2lzdGVyCi0gICAgICAgICAgICAgICAg
ICAgIHJlZ1RvU3RvcmUgPSB0ZW1wMjsKLSAgICAgICAgICAgICAgICAgICAgbG9hZFB0cihBZGRy
ZXNzKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBjdXJyZW50RnJhbWVFbnRyeS0+b2Zmc2V0KCkpLCBy
ZWdUb1N0b3JlKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAg
Ly8gSnVzdCBzdG9yZSBjYWxsZWUgc2F2ZSBkaXJlY3RseQotICAgICAgICAgICAgICAgICAgICBy
ZWdUb1N0b3JlID0gZW50cnkucmVnKCkuZ3ByKCk7Ci0KLSAgICAgICAgICAgICAgICBzdG9yZVB0
cihyZWdUb1N0b3JlLCBBZGRyZXNzKHRlbXAxLCBlbnRyeS5vZmZzZXQoKSkpOwotICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBGUFJSZWcgZnBSZWdUb1N0b3JlOwotICAgICAg
ICAgICAgICAgIGlmIChjdXJyZW50RnJhbWVFbnRyeSkgewotICAgICAgICAgICAgICAgICAgICAv
LyBMb2FkIGNhbGxlZVNhdmUgZnJvbSBzdGFjayBpbnRvIHRlbXAgcmVnaXN0ZXIKLSAgICAgICAg
ICAgICAgICAgICAgZnBSZWdUb1N0b3JlID0gZnBUZW1wOwotICAgICAgICAgICAgICAgICAgICBs
b2FkRG91YmxlKEFkZHJlc3MoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGN1cnJlbnRGcmFtZUVudHJ5
LT5vZmZzZXQoKSksIGZwUmVnVG9TdG9yZSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlCi0gICAg
ICAgICAgICAgICAgICAgIC8vIEp1c3Qgc3RvcmUgY2FsbGVlIHNhdmUgZGlyZWN0bHkKLSAgICAg
ICAgICAgICAgICAgICAgZnBSZWdUb1N0b3JlID0gZW50cnkucmVnKCkuZnByKCk7Ci0KLSAgICAg
ICAgICAgICAgICBzdG9yZURvdWJsZShmcFJlZ1RvU3RvcmUsIEFkZHJlc3ModGVtcDEsIGVudHJ5
Lm9mZnNldCgpKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSNlbHNlCi0gICAgICAgIFVO
VVNFRF9QQVJBTSh0b3BFbnRyeUZyYW1lKTsKLSAgICAgICAgVU5VU0VEX1BBUkFNKHVzZWRSZWdp
c3RlcnMpOwotI2VuZGlmCi0gICAgfQorICAgIHZvaWQgY29weUxMSW50QmFzZWxpbmVDYWxsZWVT
YXZlc0Zyb21GcmFtZU9yUmVnaXN0ZXJUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcihFbnRy
eUZyYW1lKiYsIGNvbnN0IFRlbXBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycyA9IHsgUmVnaXN0
ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpIH0pOwogCiAgICAgdm9pZCBlbWl0TWF0
ZXJpYWxpemVUYWdDaGVja1JlZ2lzdGVycygpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnNTcG9vbGVycy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzU3Bvb2xlcnMuaAkobm9uZXhpc3Rl
bnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVyc1Nwb29sZXJz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShKSVQp
CisKKyNpbmNsdWRlICJBc3NlbWJseUhlbHBlcnMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIE9wPgorY2xhc3MgQXNzZW1ibHlIZWxwZXJzOjpTcG9vbGVyIHsKK3B1
YmxpYzoKKyAgICB1c2luZyBKSVQgPSBBc3NlbWJseUhlbHBlcnM7CisKKyAgICBTcG9vbGVyKEpJ
VCYgaml0LCBHUFJSZWcgYmFzZUdQUikKKyAgICAgICAgOiBtX2ppdChqaXQpCisgICAgICAgICwg
bV9iYXNlR1BSKGJhc2VHUFIpCisgICAgeyB9CisKKyAgICB2b2lkIGhhbmRsZUdQUihjb25zdCBS
ZWdpc3RlckF0T2Zmc2V0JiBlbnRyeSkKKyAgICB7CisgICAgICAgIEFTU0VSVChlbnRyeS5yZWco
KS5pc0dQUigpKTsKKyAgICAgICAgaWYgY29uc3RleHByICghaGFzUGFpck9wKQorICAgICAgICAg
ICAgcmV0dXJuIG9wKCkuaGFuZGxlU2luZ2xlKGVudHJ5Lm9mZnNldCgpLCBlbnRyeS5yZWcoKS5n
cHIoKSk7CisKKyAgICAgICAgaWYgKCFtX2J1ZmZlcmVkRW50cnkucmVnKCkuaXNTZXQoKSkgewor
ICAgICAgICAgICAgbV9idWZmZXJlZEVudHJ5ID0gZW50cnk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyAgICAgICAgaWYgKGVudHJ5Lm9mZnNldCgpID09IG1fYnVmZmVyZWRFbnRy
eS5vZmZzZXQoKSArIHN0YXRpY19jYXN0PHB0cmRpZmZfdD4oZ3ByU2l6ZSkpIHsKKyAgICAgICAg
ICAgIG9wKCkuaGFuZGxlUGFpcihtX2J1ZmZlcmVkRW50cnkub2Zmc2V0KCksIG1fYnVmZmVyZWRF
bnRyeS5yZWcoKS5ncHIoKSwgZW50cnkucmVnKCkuZ3ByKCkpOworICAgICAgICAgICAgbV9idWZm
ZXJlZEVudHJ5ID0geyB9OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9IGVsc2UgaWYg
KG1fYnVmZmVyZWRFbnRyeS5vZmZzZXQoKSA9PSBlbnRyeS5vZmZzZXQoKSArIHN0YXRpY19jYXN0
PHB0cmRpZmZfdD4oZ3ByU2l6ZSkpIHsKKyAgICAgICAgICAgIG9wKCkuaGFuZGxlUGFpcihlbnRy
eS5vZmZzZXQoKSwgZW50cnkucmVnKCkuZ3ByKCksIG1fYnVmZmVyZWRFbnRyeS5yZWcoKS5ncHIo
KSk7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRW50cnkgPSB7IH07CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKworICAgICAgICBmbHVzaEdQUigpOworICAgICAgICBoYW5kbGVHUFIo
ZW50cnkpOworICAgIH0KKworICAgIHZvaWQgZmx1c2hHUFIoKQorICAgIHsKKyAgICAgICAgaWYg
Y29uc3RleHByIChoYXNQYWlyT3ApIHsKKyAgICAgICAgICAgIGlmIChtX2J1ZmZlcmVkRW50cnku
cmVnKCkuaXNTZXQoKSkgeworICAgICAgICAgICAgICAgIG9wKCkuaGFuZGxlU2luZ2xlKG1fYnVm
ZmVyZWRFbnRyeS5vZmZzZXQoKSwgbV9idWZmZXJlZEVudHJ5LnJlZygpLmdwcigpKTsKKyAgICAg
ICAgICAgICAgICBtX2J1ZmZlcmVkRW50cnkgPSB7IH07CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9CisKKyAgICB2b2lkIGhhbmRsZUZQUihjb25zdCBSZWdpc3RlckF0T2Zmc2V0JiBl
bnRyeSkKKyAgICB7CisgICAgICAgIEFTU0VSVChlbnRyeS5yZWcoKS5pc0ZQUigpKTsKKyAgICAg
ICAgaWYgY29uc3RleHByICghaGFzUGFpck9wKQorICAgICAgICAgICAgcmV0dXJuIG9wKCkuaGFu
ZGxlU2luZ2xlKGVudHJ5Lm9mZnNldCgpLCBlbnRyeS5yZWcoKS5mcHIoKSk7CisKKyAgICAgICAg
aWYgKCFtX2J1ZmZlcmVkRW50cnkucmVnKCkuaXNTZXQoKSkgeworICAgICAgICAgICAgbV9idWZm
ZXJlZEVudHJ5ID0gZW50cnk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAg
ICAgaWYgKGVudHJ5Lm9mZnNldCgpID09IG1fYnVmZmVyZWRFbnRyeS5vZmZzZXQoKSArIHN0YXRp
Y19jYXN0PHB0cmRpZmZfdD4oZnByU2l6ZSkpIHsKKyAgICAgICAgICAgIG9wKCkuaGFuZGxlUGFp
cihtX2J1ZmZlcmVkRW50cnkub2Zmc2V0KCksIG1fYnVmZmVyZWRFbnRyeS5yZWcoKS5mcHIoKSwg
ZW50cnkucmVnKCkuZnByKCkpOworICAgICAgICAgICAgbV9idWZmZXJlZEVudHJ5ID0geyB9Owor
ICAgICAgICB9IGVsc2UgaWYgKG1fYnVmZmVyZWRFbnRyeS5vZmZzZXQoKSA9PSBlbnRyeS5vZmZz
ZXQoKSArIHN0YXRpY19jYXN0PHB0cmRpZmZfdD4oZnByU2l6ZSkpIHsKKyAgICAgICAgICAgIG9w
KCkuaGFuZGxlUGFpcihlbnRyeS5vZmZzZXQoKSwgZW50cnkucmVnKCkuZnByKCksIG1fYnVmZmVy
ZWRFbnRyeS5yZWcoKS5mcHIoKSk7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRW50cnkgPSB7IH07
CisgICAgICAgIH0KKworICAgICAgICBmbHVzaEZQUigpOworICAgICAgICBoYW5kbGVGUFIoZW50
cnkpOworICAgIH0KKworICAgIHZvaWQgZmx1c2hGUFIoKQorICAgIHsKKyAgICAgICAgaWYgY29u
c3RleHByIChoYXNQYWlyT3ApIHsKKyAgICAgICAgICAgIGlmIChtX2J1ZmZlcmVkRW50cnkucmVn
KCkuaXNTZXQoKSkgeworICAgICAgICAgICAgICAgIG9wKCkuaGFuZGxlU2luZ2xlKG1fYnVmZmVy
ZWRFbnRyeS5vZmZzZXQoKSwgbV9idWZmZXJlZEVudHJ5LnJlZygpLmZwcigpKTsKKyAgICAgICAg
ICAgICAgICBtX2J1ZmZlcmVkRW50cnkgPSB7IH07CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9CisKK3ByaXZhdGU6CisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgZ3ByU2l6ZSA9
IHNpemVvZihDUFVSZWdpc3Rlcik7CisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgZnByU2l6
ZSA9IHNpemVvZihkb3VibGUpOworI2lmIENQVShBUk02NCkKKyAgICBzdGF0aWMgY29uc3RleHBy
IGJvb2wgaGFzUGFpck9wID0gdHJ1ZTsKKyNlbHNlCisgICAgc3RhdGljIGNvbnN0ZXhwciBib29s
IGhhc1BhaXJPcCA9IGZhbHNlOworI2VuZGlmCisKKyAgICBPcCYgb3AoKSB7IHJldHVybiAqcmVp
bnRlcnByZXRfY2FzdDxPcCo+KHRoaXMpOyB9CisKK3Byb3RlY3RlZDoKKyAgICBKSVQmIG1faml0
OworICAgIEdQUlJlZyBtX2Jhc2VHUFI7CisgICAgUmVnaXN0ZXJBdE9mZnNldCBtX2J1ZmZlcmVk
RW50cnk7Cit9OworCitjbGFzcyBBc3NlbWJseUhlbHBlcnM6OkxvYWRSZWdTcG9vbGVyIDogcHVi
bGljIEFzc2VtYmx5SGVscGVyczo6U3Bvb2xlcjxMb2FkUmVnU3Bvb2xlcj4geworICAgIHVzaW5n
IEJhc2UgPSBTcG9vbGVyPExvYWRSZWdTcG9vbGVyPjsKKyAgICB1c2luZyBKSVQgPSBCYXNlOjpK
SVQ7CitwdWJsaWM6CisgICAgTG9hZFJlZ1Nwb29sZXIoSklUJiBqaXQsIEdQUlJlZyBiYXNlR1BS
KQorICAgICAgICA6IEJhc2Uoaml0LCBiYXNlR1BSKQorICAgIHsgfQorCisgICAgQUxXQVlTX0lO
TElORSB2b2lkIGxvYWRHUFIoY29uc3QgUmVnaXN0ZXJBdE9mZnNldCYgZW50cnkpIHsgQmFzZTo6
aGFuZGxlR1BSKGVudHJ5KTsgfQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBmbHVzaEdQUigpIHsg
QmFzZTo6Zmx1c2hHUFIoKTsgfQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBsb2FkRlBSKGNvbnN0
IFJlZ2lzdGVyQXRPZmZzZXQmIGVudHJ5KSB7IEJhc2U6OmhhbmRsZUZQUihlbnRyeSk7IH0KKyAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgZmx1c2hGUFIoKSB7IEJhc2U6OmZsdXNoRlBSKCk7IH0KKwor
I2lmIENQVShBUk02NCkKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSZWdUeXBlPgorICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBoYW5kbGVQYWlyKHB0cmRpZmZfdCBvZmZzZXQsIFJlZ1R5cGUgcmVnMSwg
UmVnVHlwZSByZWcyKQorICAgIHsKKyAgICAgICAgbV9qaXQubG9hZFBhaXI2NChtX2Jhc2VHUFIs
IFRydXN0ZWRJbW0zMihvZmZzZXQpLCByZWcxLCByZWcyKTsKKyAgICB9CisjZWxzZQorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFJlZ1R5cGU+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGhhbmRsZVBh
aXIocHRyZGlmZl90LCBSZWdUeXBlLCBSZWdUeXBlKSB7IH0KKyNlbmRpZgorCisgICAgQUxXQVlT
X0lOTElORSB2b2lkIGhhbmRsZVNpbmdsZShwdHJkaWZmX3Qgb2Zmc2V0LCBHUFJSZWcgcmVnKQor
ICAgIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBtX2ppdC5sb2FkNjQoQWRkcmVzcyht
X2Jhc2VHUFIsIG9mZnNldCksIHJlZyk7CisjZWxzZQorICAgICAgICBtX2ppdC5sb2FkMzIoQWRk
cmVzcyhtX2Jhc2VHUFIsIG9mZnNldCksIHJlZyk7CisjZW5kaWYKKyAgICB9CisKKyAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgaGFuZGxlU2luZ2xlKHB0cmRpZmZfdCBvZmZzZXQsIEZQUlJlZyByZWcp
CisgICAgeworICAgICAgICBtX2ppdC5sb2FkRG91YmxlKEFkZHJlc3MobV9iYXNlR1BSLCBvZmZz
ZXQpLCByZWcpOworICAgIH0KK307CisKK2NsYXNzIEFzc2VtYmx5SGVscGVyczo6U3RvcmVSZWdT
cG9vbGVyIDogcHVibGljIEFzc2VtYmx5SGVscGVyczo6U3Bvb2xlcjxTdG9yZVJlZ1Nwb29sZXI+
IHsKKyAgICB1c2luZyBCYXNlID0gU3Bvb2xlcjxTdG9yZVJlZ1Nwb29sZXI+OworICAgIHVzaW5n
IEpJVCA9IHR5cGVuYW1lIEJhc2U6OkpJVDsKK3B1YmxpYzoKKyAgICBTdG9yZVJlZ1Nwb29sZXIo
SklUJiBqaXQsIEdQUlJlZyBiYXNlR1BSKQorICAgICAgICA6IEJhc2Uoaml0LCBiYXNlR1BSKQor
ICAgIHsgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHN0b3JlR1BSKGNvbnN0IFJlZ2lzdGVy
QXRPZmZzZXQmIGVudHJ5KSB7IEJhc2U6OmhhbmRsZUdQUihlbnRyeSk7IH0KKyAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgZmx1c2hHUFIoKSB7IEJhc2U6OmZsdXNoR1BSKCk7IH0KKyAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgc3RvcmVGUFIoY29uc3QgUmVnaXN0ZXJBdE9mZnNldCYgZW50cnkpIHsgQmFz
ZTo6aGFuZGxlRlBSKGVudHJ5KTsgfQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBmbHVzaEZQUigp
IHsgQmFzZTo6Zmx1c2hGUFIoKTsgfQorCisjaWYgQ1BVKEFSTTY0KQorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFJlZ1R5cGU+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGhhbmRsZVBhaXIocHRyZGlm
Zl90IG9mZnNldCwgUmVnVHlwZSByZWcxLCBSZWdUeXBlIHJlZzIpCisgICAgeworICAgICAgICBt
X2ppdC5zdG9yZVBhaXI2NChyZWcxLCByZWcyLCBtX2Jhc2VHUFIsIFRydXN0ZWRJbW0zMihvZmZz
ZXQpKTsKKyAgICB9CisjZWxzZQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJlZ1R5cGU+CisgICAg
QUxXQVlTX0lOTElORSB2b2lkIGhhbmRsZVBhaXIocHRyZGlmZl90LCBSZWdUeXBlLCBSZWdUeXBl
KSB7IH0KKyNlbmRpZgorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIGhhbmRsZVNpbmdsZShwdHJk
aWZmX3Qgb2Zmc2V0LCBHUFJSZWcgcmVnKQorICAgIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAg
ICAgICBtX2ppdC5zdG9yZTY0KHJlZywgQWRkcmVzcyhtX2Jhc2VHUFIsIG9mZnNldCkpOworI2Vs
c2UKKyAgICAgICAgbV9qaXQuc3RvcmUzMihyZWcsIEFkZHJlc3MobV9iYXNlR1BSLCBvZmZzZXQp
KTsKKyNlbmRpZgorICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBoYW5kbGVTaW5nbGUo
cHRyZGlmZl90IG9mZnNldCwgRlBSUmVnIHJlZykKKyAgICB7CisgICAgICAgIG1faml0LnN0b3Jl
RG91YmxlKHJlZywgQWRkcmVzcyhtX2Jhc2VHUFIsIG9mZnNldCkpOworICAgIH0KK307CisKK2Ns
YXNzIEFzc2VtYmx5SGVscGVyczo6Q29weVNwb29sZXIgeworcHVibGljOgorICAgIHVzaW5nIEpJ
VCA9IEFzc2VtYmx5SGVscGVyczsKKyAgICB1c2luZyBBZGRyZXNzID0gSklUOjpBZGRyZXNzOwor
ICAgIHVzaW5nIFRydXN0ZWRJbW0zMiA9IEpJVDo6VHJ1c3RlZEltbTMyOworCisgICAgc3RydWN0
IFNvdXJjZSB7CisgICAgICAgIGVudW0gY2xhc3MgVHlwZSB7IEJ1ZmZlck9mZnNldCwgUmVnLCBF
bmNvZGVkSlNWYWx1ZSB9IHR5cGU7CisgICAgICAgIGludCBvZmZzZXQ7CisgICAgICAgIFJlZyBy
ZWc7CisgICAgICAgIEVuY29kZWRKU1ZhbHVlIHZhbHVlOworCisgICAgICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFJlZ1R5cGU+IFJlZ1R5cGUgZ2V0UmVnKCk7CisgICAgICAgIHRlbXBsYXRlPD4gR1BS
UmVnIGdldFJlZzxHUFJSZWc+KCkgeyByZXR1cm4gcmVnLmdwcigpOyB9OworICAgICAgICB0ZW1w
bGF0ZTw+IEZQUlJlZyBnZXRSZWc8RlBSUmVnPigpIHsgcmV0dXJuIHJlZy5mcHIoKTsgfTsKKyAg
ICB9OworCisgICAgZW51bSBjbGFzcyBCdWZmZXJSZWdzIHsKKyAgICAgICAgTmVlZFByZXNlcnZh
dGlvbiwKKyAgICAgICAgQWxsb3dNb2RpZmljYXRpb24KKyAgICB9OworCisgICAgQ29weVNwb29s
ZXIoQnVmZmVyUmVncyBhdHRyaWJ1dGUsIEpJVCYgaml0LCBHUFJSZWcgc3JjQnVmZmVyLCBHUFJS
ZWcgZGVzdEJ1ZmZlciwgR1BSUmVnIHRlbXAxLCBHUFJSZWcgdGVtcDIsIEZQUlJlZyBmcFRlbXAx
ID0gSW52YWxpZEZQUlJlZywgRlBSUmVnIGZwVGVtcDIgPSBJbnZhbGlkRlBSUmVnKQorICAgICAg
ICA6IG1faml0KGppdCkKKyAgICAgICAgLCBtX3NyY0J1ZmZlckdQUihzcmNCdWZmZXIpCisgICAg
ICAgICwgbV9kc3RCdWZmZXJHUFIoZGVzdEJ1ZmZlcikKKyAgICAgICAgLCBtX3RlbXAxR1BSKHRl
bXAxKQorICAgICAgICAsIG1fdGVtcDJHUFIodGVtcDIpCisgICAgICAgICwgbV90ZW1wMUZQUihm
cFRlbXAxKQorICAgICAgICAsIG1fdGVtcDJGUFIoZnBUZW1wMikKKyAgICAgICAgLCBtX2J1ZmZl
clJlZ3NBdHRyKGF0dHJpYnV0ZSkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAoaGFzUGFp
ck9wICYmICFpc0FSTTY0KCkpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7IC8vIHVuc3VwcG9ydGVkIGFyY2hpdGVjdHVyZS4KKyAgICAgICAgfQorICAgIH0KKwor
ICAgIENvcHlTcG9vbGVyKEpJVCYgaml0LCBHUFJSZWcgc3JjQnVmZmVyLCBHUFJSZWcgZGVzdEJ1
ZmZlciwgR1BSUmVnIHRlbXAxLCBHUFJSZWcgdGVtcDIsIEZQUlJlZyBmcFRlbXAxID0gSW52YWxp
ZEZQUlJlZywgRlBSUmVnIGZwVGVtcDIgPSBJbnZhbGlkRlBSUmVnKQorICAgICAgICA6IENvcHlT
cG9vbGVyKEJ1ZmZlclJlZ3M6Ok5lZWRQcmVzZXJ2YXRpb24sIGppdCwgc3JjQnVmZmVyLCBkZXN0
QnVmZmVyLCB0ZW1wMSwgdGVtcDIsIGZwVGVtcDEsIGZwVGVtcDIpCisgICAgeyB9CisKK3ByaXZh
dGU6CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgUmVnVHlwZT4gUmVnVHlwZSB0ZW1wMSgpIGNvbnN0
OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJlZ1R5cGU+IFJlZ1R5cGUgdGVtcDIoKSBjb25zdDsK
KworICAgIHRlbXBsYXRlPD4gR1BSUmVnIHRlbXAxPEdQUlJlZz4oKSBjb25zdCB7IHJldHVybiBt
X3RlbXAxR1BSOyB9CisgICAgdGVtcGxhdGU8PiBHUFJSZWcgdGVtcDI8R1BSUmVnPigpIGNvbnN0
IHsgcmV0dXJuIG1fdGVtcDJHUFI7IH0KKyAgICB0ZW1wbGF0ZTw+IEZQUlJlZyB0ZW1wMTxGUFJS
ZWc+KCkgY29uc3QgeyByZXR1cm4gbV90ZW1wMUZQUjsgfQorICAgIHRlbXBsYXRlPD4gRlBSUmVn
IHRlbXAyPEZQUlJlZz4oKSBjb25zdCB7IHJldHVybiBtX3RlbXAyRlBSOyB9CisKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBSZWdUeXBlPiBSZWdUeXBlJiByZWdUb1N0b3JlKCk7CisgICAgdGVtcGxh
dGU8PiBHUFJSZWcmIHJlZ1RvU3RvcmU8R1BSUmVnPigpIHsgcmV0dXJuIG1fZ3ByVG9TdG9yZTsg
fQorICAgIHRlbXBsYXRlPD4gRlBSUmVnJiByZWdUb1N0b3JlPEZQUlJlZz4oKSB7IHJldHVybiBt
X2ZwclRvU3RvcmU7IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJlZ1R5cGU+IHN0YXRpYyBj
b25zdGV4cHIgUmVnVHlwZSBpbnZhbGlkKCk7CisgICAgdGVtcGxhdGU8PiBjb25zdGV4cHIgR1BS
UmVnIGludmFsaWQ8R1BSUmVnPigpIHsgcmV0dXJuIEludmFsaWRHUFJSZWc7IH0KKyAgICB0ZW1w
bGF0ZTw+IGNvbnN0ZXhwciBGUFJSZWcgaW52YWxpZDxGUFJSZWc+KCkgeyByZXR1cm4gSW52YWxp
ZEZQUlJlZzsgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgUmVnVHlwZT4KKyAgICBzdGF0aWMg
Y29uc3RleHByIGludCByZWdTaXplKCkKKyAgICB7CisgICAgICAgIHJldHVybiBzdGQ6OmlzX3Nh
bWU8UmVnVHlwZSwgR1BSUmVnPjo6dmFsdWUgPyBzaXplb2YoQ1BVUmVnaXN0ZXIpIDogc2l6ZW9m
KGRvdWJsZSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgUmVnVHlwZT4gc3RhdGlj
IGJvb2wgaXNWYWxpZExvYWRQYWlySW1tKGludCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBSZWdUeXBlPiBzdGF0aWMgYm9vbCBpc1ZhbGlkU3RvcmVQYWlySW1tKGlu
dCkgeyByZXR1cm4gZmFsc2U7IH0KKworI2lmIENQVShBUk02NCkKKyAgICB0ZW1wbGF0ZTw+IEFM
V0FZU19JTkxJTkUgYm9vbCBpc1ZhbGlkTG9hZFBhaXJJbW08R1BSUmVnPihpbnQgb2Zmc2V0KQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIEFSTTY0QXNzZW1ibGVyOjppc1ZhbGlkTERQSW1tPDY0Pihv
ZmZzZXQpOworICAgIH0KKworICAgIHRlbXBsYXRlPD4gQUxXQVlTX0lOTElORSBib29sIGlzVmFs
aWRMb2FkUGFpckltbTxGUFJSZWc+KGludCBvZmZzZXQpCisgICAgeworICAgICAgICByZXR1cm4g
QVJNNjRBc3NlbWJsZXI6OmlzVmFsaWRMRFBGUEltbTw2ND4ob2Zmc2V0KTsKKyAgICB9CisKKyAg
ICB0ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgYm9vbCBpc1ZhbGlkU3RvcmVQYWlySW1tPEdQUlJl
Zz4oaW50IG9mZnNldCkKKyAgICB7CisgICAgICAgIHJldHVybiBBUk02NEFzc2VtYmxlcjo6aXNW
YWxpZFNUUEltbTw2ND4ob2Zmc2V0KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTw+IEFMV0FZU19J
TkxJTkUgYm9vbCBpc1ZhbGlkU3RvcmVQYWlySW1tPEZQUlJlZz4oaW50IG9mZnNldCkKKyAgICB7
CisgICAgICAgIHJldHVybiBBUk02NEFzc2VtYmxlcjo6aXNWYWxpZFNUUEZQSW1tPDY0PihvZmZz
ZXQpOworICAgIH0KKyNlbmRpZiAvLyBDUFUoQVJNNjQpCisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBSZWdUeXBlPgorICAgIHZvaWQgbG9hZChpbnQgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgaWYg
Y29uc3RleHByICghaGFzUGFpck9wKSB7CisgICAgICAgICAgICBhdXRvJiByZWdUb1N0b3JlID0g
dGhpcy0+cmVnVG9TdG9yZTxSZWdUeXBlPigpOworICAgICAgICAgICAgcmVnVG9TdG9yZSA9IHRl
bXAxPFJlZ1R5cGU+KCk7CisgICAgICAgICAgICBsb2FkKG9mZnNldCwgcmVnVG9TdG9yZSk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBhdXRvJiBzb3VyY2UgPSBt
X3NvdXJjZXNbbV9jdXJyZW50U291cmNlKytdOworICAgICAgICBzb3VyY2UudHlwZSA9IFNvdXJj
ZTo6VHlwZTo6QnVmZmVyT2Zmc2V0OworICAgICAgICBzb3VyY2Uub2Zmc2V0ID0gb2Zmc2V0Owor
ICAgIH0KKworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgdm9pZCBtb3ZlKEVuY29kZWRKU1ZhbHVl
IHZhbHVlKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByICghaGFzUGFpck9wKSB7CisgICAg
ICAgICAgICBhdXRvJiByZWdUb1N0b3JlID0gdGhpcy0+cmVnVG9TdG9yZTxHUFJSZWc+KCk7Cisg
ICAgICAgICAgICByZWdUb1N0b3JlID0gdGVtcDE8R1BSUmVnPigpOworICAgICAgICAgICAgbW92
ZSh2YWx1ZSwgcmVnVG9TdG9yZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICBhdXRvJiBzb3VyY2UgPSBtX3NvdXJjZXNbbV9jdXJyZW50U291cmNlKytdOworICAg
ICAgICBzb3VyY2UudHlwZSA9IFNvdXJjZTo6VHlwZTo6RW5jb2RlZEpTVmFsdWU7CisgICAgICAg
IHNvdXJjZS52YWx1ZSA9IHZhbHVlOworICAgIH0KKyNlbmRpZgorCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgUmVnVHlwZT4KKyAgICB2b2lkIGNvcHkoUmVnVHlwZSByZWcpCisgICAgeworICAgICAg
ICBpZiBjb25zdGV4cHIgKCFoYXNQYWlyT3ApIHsKKyAgICAgICAgICAgIGF1dG8mIHJlZ1RvU3Rv
cmUgPSB0aGlzLT5yZWdUb1N0b3JlPFJlZ1R5cGU+KCk7CisgICAgICAgICAgICByZWdUb1N0b3Jl
ID0gcmVnOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgYXV0byYg
c291cmNlID0gbV9zb3VyY2VzW21fY3VycmVudFNvdXJjZSsrXTsKKyAgICAgICAgc291cmNlLnR5
cGUgPSBTb3VyY2U6OlR5cGU6OlJlZzsKKyAgICAgICAgc291cmNlLnJlZyA9IHJlZzsKKyAgICB9
OworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgUmVnVHlwZT4KKyAgICB2b2lkIHN0b3JlKGludCBz
dG9yZU9mZnNldCkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAoIWhhc1BhaXJPcCkgewor
ICAgICAgICAgICAgYXV0byByZWdUb1N0b3JlID0gdGhpcy0+cmVnVG9TdG9yZTxSZWdUeXBlPigp
OworICAgICAgICAgICAgc3RvcmUocmVnVG9TdG9yZSwgc3RvcmVPZmZzZXQpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgY29uc3QgYm9vbCByZWdUeXBlSXNHUFIg
PSBzdGQ6OmlzX3NhbWU8UmVnVHlwZSwgR1BSUmVnPjo6dmFsdWU7CisKKyAgICAgICAgaWYgKG1f
Y3VycmVudFNvdXJjZSA8IDIpIHsKKyAgICAgICAgICAgIG1fZGVmZXJyZWRTdG9yZU9mZnNldCA9
IHN0b3JlT2Zmc2V0OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAg
UmVnVHlwZSByZWdUb1N0b3JlMSA9IGludmFsaWQ8UmVnVHlwZT4oKTsKKyAgICAgICAgUmVnVHlw
ZSByZWdUb1N0b3JlMiA9IGludmFsaWQ8UmVnVHlwZT4oKTsKKyAgICAgICAgYXV0byYgc291cmNl
MSA9IG1fc291cmNlc1swXTsKKyAgICAgICAgYXV0byYgc291cmNlMiA9IG1fc291cmNlc1sxXTsK
KyAgICAgICAgYXV0byBzcmNPZmZzZXQxID0gbV9zb3VyY2VzWzBdLm9mZnNldCAtIG1fc3JjT2Zm
c2V0QWRqdXN0bWVudDsKKyAgICAgICAgYXV0byBzcmNPZmZzZXQyID0gbV9zb3VyY2VzWzFdLm9m
ZnNldCAtIG1fc3JjT2Zmc2V0QWRqdXN0bWVudDsKKyAgICAgICAgY29uc3RleHByIGludCByZWdp
c3RlclNpemUgPSByZWdTaXplPFJlZ1R5cGU+KCk7CisKKyAgICAgICAgaWYgKHNvdXJjZTEudHlw
ZSA9PSBTb3VyY2U6OlR5cGU6OkJ1ZmZlck9mZnNldCAmJiBzb3VyY2UyLnR5cGUgPT0gU291cmNl
OjpUeXBlOjpCdWZmZXJPZmZzZXQpIHsKKyAgICAgICAgICAgIHJlZ1RvU3RvcmUxID0gdGVtcDE8
UmVnVHlwZT4oKTsKKyAgICAgICAgICAgIHJlZ1RvU3RvcmUyID0gdGVtcDI8UmVnVHlwZT4oKTsK
KworICAgICAgICAgICAgaW50IG9mZnNldERlbHRhID0gYWJzKHNyY09mZnNldDEgLSBzcmNPZmZz
ZXQyKTsKKyAgICAgICAgICAgIGludCBtaW5PZmZzZXQgPSBzdGQ6Om1pbihzcmNPZmZzZXQxLCBz
cmNPZmZzZXQyKTsKKyAgICAgICAgICAgIGJvb2wgaXNWYWxpZE9mZnNldCA9IGlzVmFsaWRMb2Fk
UGFpckltbTxSZWdUeXBlPihtaW5PZmZzZXQpOworCisgICAgICAgICAgICBpZiAob2Zmc2V0RGVs
dGEgIT0gcmVnaXN0ZXJTaXplIHx8ICghaXNWYWxpZE9mZnNldCAmJiBtX2J1ZmZlclJlZ3NBdHRy
ICE9IEJ1ZmZlclJlZ3M6OkFsbG93TW9kaWZpY2F0aW9uKSkgeworICAgICAgICAgICAgICAgIGxv
YWQoc3JjT2Zmc2V0MSwgcmVnVG9TdG9yZTEpOworICAgICAgICAgICAgICAgIGxvYWQoc3JjT2Zm
c2V0MiwgcmVnVG9TdG9yZTIpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBpZiAoIWlzVmFsaWRPZmZzZXQpIHsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG1fYnVm
ZmVyUmVnc0F0dHIgPT0gQnVmZmVyUmVnczo6QWxsb3dNb2RpZmljYXRpb24pOworICAgICAgICAg
ICAgICAgICAgICBtX3NyY09mZnNldEFkanVzdG1lbnQgKz0gbWluT2Zmc2V0OworICAgICAgICAg
ICAgICAgICAgICBtX2ppdC5hZGRQdHIoVHJ1c3RlZEltbTMyKG1pbk9mZnNldCksIG1fc3JjQnVm
ZmVyR1BSKTsKKworICAgICAgICAgICAgICAgICAgICBzcmNPZmZzZXQxIC09IG1pbk9mZnNldDsK
KyAgICAgICAgICAgICAgICAgICAgc3JjT2Zmc2V0MiAtPSBtaW5PZmZzZXQ7CisgICAgICAgICAg
ICAgICAgICAgIEFTU0VSVChpc1ZhbGlkTG9hZFBhaXJJbW08UmVnVHlwZT4oc3RkOjptaW4oc3Jj
T2Zmc2V0MSwgc3JjT2Zmc2V0MikpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgaWYgKHNyY09mZnNldDEgPCBzcmNPZmZzZXQyKQorICAgICAgICAgICAgICAgICAgICBsb2Fk
UGFpcihzcmNPZmZzZXQxLCByZWdUb1N0b3JlMSwgcmVnVG9TdG9yZTIpOworICAgICAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbG9hZFBhaXIoc3JjT2Zmc2V0MiwgcmVnVG9T
dG9yZTIsIHJlZ1RvU3RvcmUxKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChz
b3VyY2UxLnR5cGUgPT0gU291cmNlOjpUeXBlOjpCdWZmZXJPZmZzZXQpIHsKKyAgICAgICAgICAg
IHJlZ1RvU3RvcmUxID0gdGVtcDE8UmVnVHlwZT4oKTsKKyAgICAgICAgICAgIGxvYWQoc3JjT2Zm
c2V0MSwgcmVnVG9TdG9yZTEpOworICAgICAgICAgICAgaWYgKHNvdXJjZTIudHlwZSA9PSBTb3Vy
Y2U6OlR5cGU6OkVuY29kZWRKU1ZhbHVlKSB7CisgICAgICAgICAgICAgICAgaWYgY29uc3RleHBy
IChyZWdUeXBlSXNHUFIpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVnVG9TdG9yZTIgPSB0ZW1w
MjxSZWdUeXBlPigpOworICAgICAgICAgICAgICAgICAgICBtb3ZlKHNvdXJjZTIudmFsdWUsIHJl
Z1RvU3RvcmUyKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgICAgICByZWdUb1N0b3JlMiA9IHNvdXJjZTIuZ2V0UmVnPFJlZ1R5cGU+KCk7CisKKyAg
ICAgICAgfSBlbHNlIGlmIChzb3VyY2UyLnR5cGUgPT0gU291cmNlOjpUeXBlOjpCdWZmZXJPZmZz
ZXQpIHsKKyAgICAgICAgICAgIGlmIChzb3VyY2UxLnR5cGUgPT0gU291cmNlOjpUeXBlOjpFbmNv
ZGVkSlNWYWx1ZSkgeworICAgICAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAocmVnVHlwZUlzR1BS
KSB7CisgICAgICAgICAgICAgICAgICAgIHJlZ1RvU3RvcmUxID0gdGVtcDE8UmVnVHlwZT4oKTsK
KyAgICAgICAgICAgICAgICAgICAgbW92ZShzb3VyY2UxLnZhbHVlLCByZWdUb1N0b3JlMSk7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgcmVn
VG9TdG9yZTEgPSBzb3VyY2UxLmdldFJlZzxSZWdUeXBlPigpOworICAgICAgICAgICAgcmVnVG9T
dG9yZTIgPSB0ZW1wMjxSZWdUeXBlPigpOworICAgICAgICAgICAgbG9hZChzcmNPZmZzZXQyLCBy
ZWdUb1N0b3JlMik7CisKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChzb3VyY2Ux
LnR5cGUgPT0gU291cmNlOjpUeXBlOjpFbmNvZGVkSlNWYWx1ZSkgeworICAgICAgICAgICAgICAg
IGlmIGNvbnN0ZXhwciAocmVnVHlwZUlzR1BSKSB7CisgICAgICAgICAgICAgICAgICAgIHJlZ1Rv
U3RvcmUxID0gdGVtcDE8UmVnVHlwZT4oKTsKKyAgICAgICAgICAgICAgICAgICAgbW92ZShzb3Vy
Y2UxLnZhbHVlLCByZWdUb1N0b3JlMSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICAgICAgcmVnVG9TdG9yZTEgPSBzb3VyY2UxLmdldFJlZzxSZWdU
eXBlPigpOworCisgICAgICAgICAgICBpZiAoc291cmNlMi50eXBlID09IFNvdXJjZTo6VHlwZTo6
RW5jb2RlZEpTVmFsdWUpIHsKKyAgICAgICAgICAgICAgICBpZiBjb25zdGV4cHIgKHJlZ1R5cGVJ
c0dQUikgeworICAgICAgICAgICAgICAgICAgICByZWdUb1N0b3JlMiA9IHRlbXAyPFJlZ1R5cGU+
KCk7CisgICAgICAgICAgICAgICAgICAgIG1vdmUoc291cmNlMi52YWx1ZSwgcmVnVG9TdG9yZTIp
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAg
IHJlZ1RvU3RvcmUyID0gc291cmNlMi5nZXRSZWc8UmVnVHlwZT4oKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGludCBkc3RPZmZzZXQxID0gbV9kZWZlcnJlZFN0b3JlT2Zmc2V0IC0gbV9kc3RPZmZz
ZXRBZGp1c3RtZW50OworICAgICAgICBpbnQgZHN0T2Zmc2V0MiA9IHN0b3JlT2Zmc2V0IC0gbV9k
c3RPZmZzZXRBZGp1c3RtZW50OworCisgICAgICAgIGludCBvZmZzZXREZWx0YSA9IGFicyhkc3RP
ZmZzZXQxIC0gZHN0T2Zmc2V0Mik7CisgICAgICAgIGludCBtaW5PZmZzZXQgPSBzdGQ6Om1pbihk
c3RPZmZzZXQxLCBkc3RPZmZzZXQyKTsKKyAgICAgICAgYm9vbCBpc1ZhbGlkT2Zmc2V0ID0gaXNW
YWxpZFN0b3JlUGFpckltbTxSZWdUeXBlPihtaW5PZmZzZXQpOworCisgICAgICAgIGlmIChvZmZz
ZXREZWx0YSAhPSByZWdpc3RlclNpemUgfHwgKCFpc1ZhbGlkT2Zmc2V0ICYmIG1fYnVmZmVyUmVn
c0F0dHIgIT0gQnVmZmVyUmVnczo6QWxsb3dNb2RpZmljYXRpb24pKSB7CisgICAgICAgICAgICBz
dG9yZShyZWdUb1N0b3JlMSwgZHN0T2Zmc2V0MSk7CisgICAgICAgICAgICBzdG9yZShyZWdUb1N0
b3JlMiwgZHN0T2Zmc2V0Mik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoIWlz
VmFsaWRPZmZzZXQpIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQobV9idWZmZXJSZWdzQXR0ciA9
PSBCdWZmZXJSZWdzOjpBbGxvd01vZGlmaWNhdGlvbik7CisgICAgICAgICAgICAgICAgbV9kc3RP
ZmZzZXRBZGp1c3RtZW50ICs9IG1pbk9mZnNldDsKKyAgICAgICAgICAgICAgICBtX2ppdC5hZGRQ
dHIoVHJ1c3RlZEltbTMyKG1pbk9mZnNldCksIG1fZHN0QnVmZmVyR1BSKTsKKworICAgICAgICAg
ICAgICAgIGRzdE9mZnNldDEgLT0gbWluT2Zmc2V0OworICAgICAgICAgICAgICAgIGRzdE9mZnNl
dDIgLT0gbWluT2Zmc2V0OworICAgICAgICAgICAgICAgIEFTU0VSVChpc1ZhbGlkU3RvcmVQYWly
SW1tPFJlZ1R5cGU+KHN0ZDo6bWluKGRzdE9mZnNldDEsIGRzdE9mZnNldDIpKSk7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBpZiAoZHN0T2Zmc2V0MSA8IGRzdE9mZnNldDIpCisgICAgICAg
ICAgICAgICAgc3RvcmVQYWlyKHJlZ1RvU3RvcmUxLCByZWdUb1N0b3JlMiwgZHN0T2Zmc2V0MSk7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgc3RvcmVQYWlyKHJlZ1RvU3RvcmUy
LCByZWdUb1N0b3JlMSwgZHN0T2Zmc2V0Mik7CisgICAgICAgIH0KKworICAgICAgICBtX2N1cnJl
bnRTb3VyY2UgPSAwOworICAgIH07CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSZWdUeXBlPgor
ICAgIHZvaWQgZmx1c2goKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByICghaGFzUGFpck9w
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmICghbV9jdXJyZW50U291cmNlKQor
ICAgICAgICAgICAgcmV0dXJuOyAvLyBOb3RoaW5nIHRvIGZsdXNoLgorCisgICAgICAgIEFTU0VS
VChtX2N1cnJlbnRTb3VyY2UgPT0gMSk7CisKKyAgICAgICAgUmVnVHlwZSByZWdUb1N0b3JlID0g
aW52YWxpZDxSZWdUeXBlPigpOworICAgICAgICBhdXRvJiBzb3VyY2UgPSBtX3NvdXJjZXNbMF07
CisgICAgICAgIGF1dG8mIHNyY09mZnNldCA9IHNvdXJjZS5vZmZzZXQ7CisgICAgICAgIGNvbnN0
IGJvb2wgcmVnVHlwZUlzR1BSID0gc3RkOjppc19zYW1lPFJlZ1R5cGUsIEdQUlJlZz46OnZhbHVl
OworCisgICAgICAgIGlmIChzb3VyY2UudHlwZSA9PSBTb3VyY2U6OlR5cGU6OkJ1ZmZlck9mZnNl
dCkgeworICAgICAgICAgICAgcmVnVG9TdG9yZSA9IHRlbXAxPFJlZ1R5cGU+KCk7CisgICAgICAg
ICAgICBsb2FkKHNyY09mZnNldCAtIG1fc3JjT2Zmc2V0QWRqdXN0bWVudCwgcmVnVG9TdG9yZSk7
CisgICAgICAgIH0gZWxzZSBpZiAoc291cmNlLnR5cGUgPT0gU291cmNlOjpUeXBlOjpSZWcpCisg
ICAgICAgICAgICByZWdUb1N0b3JlID0gc291cmNlLmdldFJlZzxSZWdUeXBlPigpOworICAgICAg
ICBlbHNlIGlmIGNvbnN0ZXhwciAocmVnVHlwZUlzR1BSKSB7CisgICAgICAgICAgICByZWdUb1N0
b3JlID0gdGVtcDE8UmVnVHlwZT4oKTsKKyAgICAgICAgICAgIG1vdmUoc291cmNlLnZhbHVlLCBy
ZWdUb1N0b3JlKTsKKyAgICAgICAgfQorCisgICAgICAgIHN0b3JlKHJlZ1RvU3RvcmUsIG1fZGVm
ZXJyZWRTdG9yZU9mZnNldCAtIG1fZHN0T2Zmc2V0QWRqdXN0bWVudCk7CisgICAgICAgIG1fY3Vy
cmVudFNvdXJjZSA9IDA7CisgICAgfQorCitwdWJsaWM6CisgICAgQUxXQVlTX0lOTElORSB2b2lk
IGxvYWRHUFIoaW50IHNyY09mZnNldCkgeyBsb2FkPEdQUlJlZz4oc3JjT2Zmc2V0KTsgfQorICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBjb3B5R1BSKEdQUlJlZyBncHIpIHsgY29weTxHUFJSZWc+KGdw
cik7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbW92ZUNvbnN0YW50KEVuY29kZWRKU1ZhbHVl
IHZhbHVlKSB7IG1vdmUodmFsdWUpOyB9CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHN0b3JlR1BS
KGludCBkc3RPZmZzZXQpIHsgc3RvcmU8R1BSUmVnPihkc3RPZmZzZXQpOyB9CisgICAgQUxXQVlT
X0lOTElORSB2b2lkIGZsdXNoR1BSKCkgeyBmbHVzaDxHUFJSZWc+KCk7IH0KKworICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBsb2FkRlBSKGludCBzcmNPZmZzZXQpIHsgbG9hZDxGUFJSZWc+KHNyY09m
ZnNldCk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgY29weUZQUihGUFJSZWcgZ3ByKSB7IGNv
cHk8RlBSUmVnPihncHIpOyB9CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHN0b3JlRlBSKGludCBk
c3RPZmZzZXQpIHsgc3RvcmU8RlBSUmVnPihkc3RPZmZzZXQpOyB9CisgICAgQUxXQVlTX0lOTElO
RSB2b2lkIGZsdXNoRlBSKCkgeyBmbHVzaDxGUFJSZWc+KCk7IH0KKworcHJvdGVjdGVkOgorI2lm
IFVTRShKU1ZBTFVFNjQpCisgICAgQUxXQVlTX0lOTElORSB2b2lkIG1vdmUoRW5jb2RlZEpTVmFs
dWUgdmFsdWUsIEdQUlJlZyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9qaXQubW92ZShUcnVzdGVk
SW1tNjQodmFsdWUpLCBkZXN0KTsKKyAgICB9CisjZW5kaWYKKworICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBsb2FkKGludCBvZmZzZXQsIEdQUlJlZyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9qaXQu
bG9hZFB0cihBZGRyZXNzKG1fc3JjQnVmZmVyR1BSLCBvZmZzZXQpLCBkZXN0KTsKKyAgICB9CisK
KyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc3RvcmUoR1BSUmVnIHNyYywgaW50IG9mZnNldCkKKyAg
ICB7CisgICAgICAgIG1faml0LnN0b3JlUHRyKHNyYywgQWRkcmVzcyhtX2RzdEJ1ZmZlckdQUiwg
b2Zmc2V0KSk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIGxvYWQoaW50IG9mZnNl
dCwgRlBSUmVnIGRlc3QpCisgICAgeworICAgICAgICBtX2ppdC5sb2FkRG91YmxlKEFkZHJlc3Mo
bV9zcmNCdWZmZXJHUFIsIG9mZnNldCksIGRlc3QpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBzdG9yZShGUFJSZWcgc3JjLCBpbnQgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9q
aXQuc3RvcmVEb3VibGUoc3JjLCBBZGRyZXNzKG1fZHN0QnVmZmVyR1BSLCBvZmZzZXQpKTsKKyAg
ICB9CisKKyNpZiBDUFUoQVJNNjQpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgUmVnVHlwZT4KKyAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgbG9hZFBhaXIoaW50IG9mZnNldCwgUmVnVHlwZSBkZXN0MSwg
UmVnVHlwZSBkZXN0MikKKyAgICB7CisgICAgICAgIG1faml0LmxvYWRQYWlyNjQobV9zcmNCdWZm
ZXJHUFIsIFRydXN0ZWRJbW0zMihvZmZzZXQpLCBkZXN0MSwgZGVzdDIpOworICAgIH0KKworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFJlZ1R5cGU+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHN0b3Jl
UGFpcihSZWdUeXBlIHNyYzEsIFJlZ1R5cGUgc3JjMiwgaW50IG9mZnNldCkKKyAgICB7CisgICAg
ICAgIG1faml0LnN0b3JlUGFpcjY0KHNyYzEsIHNyYzIsIG1fZHN0QnVmZmVyR1BSLCBUcnVzdGVk
SW1tMzIob2Zmc2V0KSk7CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGhhc1Bh
aXJPcCA9IHRydWU7CisjZWxzZQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJlZ1R5cGU+IEFMV0FZ
U19JTkxJTkUgdm9pZCBsb2FkUGFpcihpbnQsIFJlZ1R5cGUsIFJlZ1R5cGUpIHsgfQorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFJlZ1R5cGU+IEFMV0FZU19JTkxJTkUgdm9pZCBzdG9yZVBhaXIoUmVn
VHlwZSwgUmVnVHlwZSwgaW50KSB7IH0KKworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBoYXNQ
YWlyT3AgPSBmYWxzZTsKKyNlbmRpZgorCisgICAgSklUJiBtX2ppdDsKKworICAgIEdQUlJlZyBt
X3NyY0J1ZmZlckdQUjsKKyAgICBHUFJSZWcgbV9kc3RCdWZmZXJHUFI7CisgICAgR1BSUmVnIG1f
dGVtcDFHUFI7CisgICAgR1BSUmVnIG1fdGVtcDJHUFI7CisgICAgRlBSUmVnIG1fdGVtcDFGUFI7
CisgICAgRlBSUmVnIG1fdGVtcDJGUFI7CisKK3ByaXZhdGU6CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBpbnQgZ3ByU2l6ZSA9IHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKENQVVJlZ2lzdGVyKSk7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgZnByU2l6ZSA9IHN0YXRpY19jYXN0PGludD4oc2l6ZW9m
KGRvdWJsZSkpOworCisgICAgLy8gVGhlc2UgcG9pbnQgdG8gd2hpY2ggcmVnaXN0ZXIgdG8gdXNl
LgorICAgIEdQUlJlZyBtX2dwclRvU3RvcmUgeyBJbnZhbGlkR1BSUmVnIH07IC8vIE9ubHkgdXNl
ZCB3aGVuICFoYXNQYWlyT3AuCisgICAgRlBSUmVnIG1fZnByVG9TdG9yZSB7IEludmFsaWRGUFJS
ZWcgfTsgLy8gT25seSB1c2VkIHdoZW4gIWhhc1BhaXJPcC4KKworICAgIEJ1ZmZlclJlZ3MgbV9i
dWZmZXJSZWdzQXR0cjsKKyAgICBTb3VyY2UgbV9zb3VyY2VzWzJdOworICAgIHVuc2lnbmVkIG1f
Y3VycmVudFNvdXJjZSB7IDAgfTsKKyAgICBpbnQgbV9zcmNPZmZzZXRBZGp1c3RtZW50IHsgMCB9
OworICAgIGludCBtX2RzdE9mZnNldEFkanVzdG1lbnQgeyAwIH07CisgICAgaW50IG1fZGVmZXJy
ZWRTdG9yZU9mZnNldDsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5B
QkxFKEpJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2NyYXRjaFJlZ2lzdGVy
QWxsb2NhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Nj
cmF0Y2hSZWdpc3RlckFsbG9jYXRvci5jcHAJKHJldmlzaW9uIDI3ODg4NikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShKSVQpCiAKKyNpbmNsdWRlICJB
c3NlbWJseUhlbHBlcnNTcG9vbGVycy5oIgogI2luY2x1ZGUgIk1heEZyYW1lRXh0ZW50Rm9yU2xv
d1BhdGhDYWxsLmgiCiAjaW5jbHVkZSAiVk0uaCIKIApAQCAtMTAxLDcgKzEwMiw3IEBAIHR5cGVu
YW1lIEJhbmtJbmZvOjpSZWdpc3RlclR5cGUgU2NyYXRjaFIKIEdQUlJlZyBTY3JhdGNoUmVnaXN0
ZXJBbGxvY2F0b3I6OmFsbG9jYXRlU2NyYXRjaEdQUigpIHsgcmV0dXJuIGFsbG9jYXRlU2NyYXRj
aDxHUFJJbmZvPigpOyB9CiBGUFJSZWcgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjphbGxvY2F0
ZVNjcmF0Y2hGUFIoKSB7IHJldHVybiBhbGxvY2F0ZVNjcmF0Y2g8RlBSSW5mbz4oKTsgfQogCi1T
Y3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OlByZXNlcnZlZFN0YXRlIFNjcmF0Y2hSZWdpc3RlckFs
bG9jYXRvcjo6cHJlc2VydmVSZXVzZWRSZWdpc3RlcnNCeVB1c2hpbmcoTWFjcm9Bc3NlbWJsZXIm
IGppdCwgRXh0cmFTdGFja1NwYWNlIGV4dHJhU3RhY2tTcGFjZSkKK1NjcmF0Y2hSZWdpc3RlckFs
bG9jYXRvcjo6UHJlc2VydmVkU3RhdGUgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpwcmVzZXJ2
ZVJldXNlZFJlZ2lzdGVyc0J5UHVzaGluZyhBc3NlbWJseUhlbHBlcnMmIGppdCwgRXh0cmFTdGFj
a1NwYWNlIGV4dHJhU3RhY2tTcGFjZSkKIHsKICAgICBpZiAoIWRpZFJldXNlUmVnaXN0ZXJzKCkp
CiAgICAgICAgIHJldHVybiBQcmVzZXJ2ZWRTdGF0ZSgwLCBleHRyYVN0YWNrU3BhY2UpOwpAQCAt
MTI0LDcgKzEyNSw3IEBAIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6UHJlc2VydmVkU3RhdGUK
ICAgICByZXR1cm4gUHJlc2VydmVkU3RhdGUoc3RhY2tBZGp1c3RtZW50U2l6ZSwgZXh0cmFTdGFj
a1NwYWNlKTsKIH0KIAotdm9pZCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OnJlc3RvcmVSZXVz
ZWRSZWdpc3RlcnNCeVBvcHBpbmcoTWFjcm9Bc3NlbWJsZXImIGppdCwgY29uc3QgU2NyYXRjaFJl
Z2lzdGVyQWxsb2NhdG9yOjpQcmVzZXJ2ZWRTdGF0ZSYgcHJlc2VydmVkU3RhdGUpCit2b2lkIFNj
cmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6cmVzdG9yZVJldXNlZFJlZ2lzdGVyc0J5UG9wcGluZyhB
c3NlbWJseUhlbHBlcnMmIGppdCwgY29uc3QgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpQcmVz
ZXJ2ZWRTdGF0ZSYgcHJlc2VydmVkU3RhdGUpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQocHJlc2Vy
dmVkU3RhdGUpOwogICAgIGlmICghZGlkUmV1c2VSZWdpc3RlcnMoKSkKQEAgLTE2MSw3ICsxNjIs
NyBAQCB1bnNpZ25lZCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OmRlc2lyCiAgICAgcmV0dXJu
IHVzZWRSZWdpc3RlcnNGb3JDYWxsKCkubnVtYmVyT2ZTZXRSZWdpc3RlcnMoKSAqIHNpemVvZihK
U1ZhbHVlKTsKIH0KIAotdW5zaWduZWQgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpwcmVzZXJ2
ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKE1hY3JvQXNzZW1ibGVyJiBqaXQsIGNvbnN0IFJlZ2lz
dGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCB1bnNpZ25lZCBleHRyYUJ5dGVzQXRUb3BPZlN0YWNrKQor
dW5zaWduZWQgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpwcmVzZXJ2ZVJlZ2lzdGVyc1RvU3Rh
Y2tGb3JDYWxsKEFzc2VtYmx5SGVscGVycyYgaml0LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJl
Z2lzdGVycywgdW5zaWduZWQgZXh0cmFCeXRlc0F0VG9wT2ZTdGFjaykKIHsKICAgICBSRUxFQVNF
X0FTU0VSVChleHRyYUJ5dGVzQXRUb3BPZlN0YWNrICUgc2l6ZW9mKHZvaWQqKSA9PSAwKTsKICAg
ICBpZiAoIXVzZWRSZWdpc3RlcnMubnVtYmVyT2ZTZXRSZWdpc3RlcnMoKSkKQEAgLTE3NCwyNiAr
MTc1LDMxIEBAIHVuc2lnbmVkIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6cHJlc2UKICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihzdGFja09mZnNldCksCiAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAKKyAgICBBc3NlbWJseUhlbHBl
cnM6OlN0b3JlUmVnU3Bvb2xlciBzcG9vbGVyKGppdCwgTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9p
bnRlclJlZ2lzdGVyKTsKKwogICAgIHVuc2lnbmVkIGNvdW50ID0gMDsKICAgICBmb3IgKEdQUlJl
ZyByZWcgPSBNYWNyb0Fzc2VtYmxlcjo6Zmlyc3RSZWdpc3RlcigpOyByZWcgPD0gTWFjcm9Bc3Nl
bWJsZXI6Omxhc3RSZWdpc3RlcigpOyByZWcgPSBNYWNyb0Fzc2VtYmxlcjo6bmV4dFJlZ2lzdGVy
KHJlZykpIHsKICAgICAgICAgaWYgKHVzZWRSZWdpc3RlcnMuZ2V0KHJlZykpIHsKLSAgICAgICAg
ICAgIGppdC5zdG9yZVB0cihyZWcsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKE1hY3JvQXNzZW1i
bGVyOjpzdGFja1BvaW50ZXJSZWdpc3RlciwgZXh0cmFCeXRlc0F0VG9wT2ZTdGFjayArIChjb3Vu
dCAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpKSk7CisgICAgICAgICAgICBzcG9vbGVyLnN0b3Jl
R1BSKHsgcmVnLCBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KGV4dHJhQnl0ZXNBdFRvcE9mU3RhY2sg
KyAoY291bnQgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSkgfSk7CiAgICAgICAgICAgICBjb3Vu
dCsrOwogICAgICAgICB9CiAgICAgfQorICAgIHNwb29sZXIuZmx1c2hHUFIoKTsKKwogICAgIGZv
ciAoRlBSUmVnIHJlZyA9IE1hY3JvQXNzZW1ibGVyOjpmaXJzdEZQUmVnaXN0ZXIoKTsgcmVnIDw9
IE1hY3JvQXNzZW1ibGVyOjpsYXN0RlBSZWdpc3RlcigpOyByZWcgPSBNYWNyb0Fzc2VtYmxlcjo6
bmV4dEZQUmVnaXN0ZXIocmVnKSkgewogICAgICAgICBpZiAodXNlZFJlZ2lzdGVycy5nZXQocmVn
KSkgewotICAgICAgICAgICAgaml0LnN0b3JlRG91YmxlKHJlZywgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MoTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBleHRyYUJ5dGVzQXRU
b3BPZlN0YWNrICsgKGNvdW50ICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSkpKTsKKyAgICAgICAg
ICAgIHNwb29sZXIuc3RvcmVGUFIoeyByZWcsIHN0YXRpY19jYXN0PHB0cmRpZmZfdD4oZXh0cmFC
eXRlc0F0VG9wT2ZTdGFjayArIChjb3VudCAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpKSB9KTsK
ICAgICAgICAgICAgIGNvdW50Kys7CiAgICAgICAgIH0KICAgICB9CisgICAgc3Bvb2xlci5mbHVz
aEZQUigpOwogCiAgICAgUkVMRUFTRV9BU1NFUlQoY291bnQgPT0gdXNlZFJlZ2lzdGVycy5udW1i
ZXJPZlNldFJlZ2lzdGVycygpKTsKIAogICAgIHJldHVybiBzdGFja09mZnNldDsKIH0KIAotdm9p
ZCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OnJlc3RvcmVSZWdpc3RlcnNGcm9tU3RhY2tGb3JD
YWxsKE1hY3JvQXNzZW1ibGVyJiBqaXQsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJz
LCBjb25zdCBSZWdpc3RlclNldCYgaWdub3JlLCB1bnNpZ25lZCBudW1iZXJPZlN0YWNrQnl0ZXNV
c2VkRm9yUmVnaXN0ZXJQcmVzZXJ2YXRpb24sIHVuc2lnbmVkIGV4dHJhQnl0ZXNBdFRvcE9mU3Rh
Y2spCit2b2lkIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6cmVzdG9yZVJlZ2lzdGVyc0Zyb21T
dGFja0ZvckNhbGwoQXNzZW1ibHlIZWxwZXJzJiBqaXQsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2Vk
UmVnaXN0ZXJzLCBjb25zdCBSZWdpc3RlclNldCYgaWdub3JlLCB1bnNpZ25lZCBudW1iZXJPZlN0
YWNrQnl0ZXNVc2VkRm9yUmVnaXN0ZXJQcmVzZXJ2YXRpb24sIHVuc2lnbmVkIGV4dHJhQnl0ZXNB
dFRvcE9mU3RhY2spCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoZXh0cmFCeXRlc0F0VG9wT2ZTdGFj
ayAlIHNpemVvZih2b2lkKikgPT0gMCk7CiAgICAgaWYgKCF1c2VkUmVnaXN0ZXJzLm51bWJlck9m
U2V0UmVnaXN0ZXJzKCkpIHsKQEAgLTIwMSwyMSArMjA3LDI2IEBAIHZvaWQgU2NyYXRjaFJlZ2lz
dGVyQWxsb2NhdG9yOjpyZXN0b3JlUmUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIEFz
c2VtYmx5SGVscGVyczo6TG9hZFJlZ1Nwb29sZXIgc3Bvb2xlcihqaXQsIE1hY3JvQXNzZW1ibGVy
OjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisKICAgICB1bnNpZ25lZCBjb3VudCA9IDA7CiAgICAg
Zm9yIChHUFJSZWcgcmVnID0gTWFjcm9Bc3NlbWJsZXI6OmZpcnN0UmVnaXN0ZXIoKTsgcmVnIDw9
IE1hY3JvQXNzZW1ibGVyOjpsYXN0UmVnaXN0ZXIoKTsgcmVnID0gTWFjcm9Bc3NlbWJsZXI6Om5l
eHRSZWdpc3RlcihyZWcpKSB7CiAgICAgICAgIGlmICh1c2VkUmVnaXN0ZXJzLmdldChyZWcpKSB7
CiAgICAgICAgICAgICBpZiAoIWlnbm9yZS5nZXQocmVnKSkKLSAgICAgICAgICAgICAgICBqaXQu
bG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2lu
dGVyUmVnaXN0ZXIsIGV4dHJhQnl0ZXNBdFRvcE9mU3RhY2sgKyAoc2l6ZW9mKEVuY29kZWRKU1Zh
bHVlKSAqIGNvdW50KSksIHJlZyk7CisgICAgICAgICAgICAgICAgc3Bvb2xlci5sb2FkR1BSKHsg
cmVnLCBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KGV4dHJhQnl0ZXNBdFRvcE9mU3RhY2sgKyAoc2l6
ZW9mKEVuY29kZWRKU1ZhbHVlKSAqIGNvdW50KSkgfSk7CiAgICAgICAgICAgICBjb3VudCsrOwog
ICAgICAgICB9CiAgICAgfQorICAgIHNwb29sZXIuZmx1c2hHUFIoKTsKKwogICAgIGZvciAoRlBS
UmVnIHJlZyA9IE1hY3JvQXNzZW1ibGVyOjpmaXJzdEZQUmVnaXN0ZXIoKTsgcmVnIDw9IE1hY3Jv
QXNzZW1ibGVyOjpsYXN0RlBSZWdpc3RlcigpOyByZWcgPSBNYWNyb0Fzc2VtYmxlcjo6bmV4dEZQ
UmVnaXN0ZXIocmVnKSkgewogICAgICAgICBpZiAodXNlZFJlZ2lzdGVycy5nZXQocmVnKSkgewog
ICAgICAgICAgICAgaWYgKCFpZ25vcmUuZ2V0KHJlZykpCi0gICAgICAgICAgICAgICAgaml0Lmxv
YWREb3VibGUoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9p
bnRlclJlZ2lzdGVyLCBleHRyYUJ5dGVzQXRUb3BPZlN0YWNrICsgKHNpemVvZihFbmNvZGVkSlNW
YWx1ZSkgKiBjb3VudCkpLCByZWcpOworICAgICAgICAgICAgICAgIHNwb29sZXIubG9hZEZQUih7
IHJlZywgc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihleHRyYUJ5dGVzQXRUb3BPZlN0YWNrICsgKHNp
emVvZihFbmNvZGVkSlNWYWx1ZSkgKiBjb3VudCkpIH0pOwogICAgICAgICAgICAgY291bnQrKzsK
ICAgICAgICAgfQogICAgIH0KKyAgICBzcG9vbGVyLmZsdXNoRlBSKCk7CiAKICAgICB1bnNpZ25l
ZCBzdGFja09mZnNldCA9ICh1c2VkUmVnaXN0ZXJzLm51bWJlck9mU2V0UmVnaXN0ZXJzKCkpICog
c2l6ZW9mKEVuY29kZWRKU1ZhbHVlKTsKICAgICBzdGFja09mZnNldCArPSBleHRyYUJ5dGVzQXRU
b3BPZlN0YWNrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TY3JhdGNoUmVnaXN0
ZXJBbGxvY2F0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Nj
cmF0Y2hSZWdpc3RlckFsbG9jYXRvci5oCShyZXZpc2lvbiAyNzg4ODYpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTI3LDEyICsyNywxMiBAQAogCiAjaWYgRU5BQkxFKEpJVCkKIAotI2luY2x1ZGUgIk1h
Y3JvQXNzZW1ibGVyLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJTZXQuaCIKICNpbmNsdWRlICJUZW1w
UmVnaXN0ZXJTZXQuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNzIEFzc2VtYmx5SGVscGVy
czsKIHN0cnVjdCBTY3JhdGNoQnVmZmVyOwogCiAvLyBUaGlzIGNsYXNzIHByb3ZpZGVzIGEgbG93
LWxldmVsIHJlZ2lzdGVyIGFsbG9jYXRvciBmb3IgdXNlIGluIHN0dWJzLgpAQCAtODQsMTUgKzg0
LDE1IEBAIHB1YmxpYzoKICAgICAgICAgRXh0cmFTdGFja1NwYWNlIGV4dHJhU3RhY2tTcGFjZVJl
cXVpcmVtZW50OwogICAgIH07CiAKLSAgICBQcmVzZXJ2ZWRTdGF0ZSBwcmVzZXJ2ZVJldXNlZFJl
Z2lzdGVyc0J5UHVzaGluZyhNYWNyb0Fzc2VtYmxlciYgaml0LCBFeHRyYVN0YWNrU3BhY2UpOwot
ICAgIHZvaWQgcmVzdG9yZVJldXNlZFJlZ2lzdGVyc0J5UG9wcGluZyhNYWNyb0Fzc2VtYmxlciYg
aml0LCBjb25zdCBQcmVzZXJ2ZWRTdGF0ZSYpOworICAgIFByZXNlcnZlZFN0YXRlIHByZXNlcnZl
UmV1c2VkUmVnaXN0ZXJzQnlQdXNoaW5nKEFzc2VtYmx5SGVscGVycyYgaml0LCBFeHRyYVN0YWNr
U3BhY2UpOworICAgIHZvaWQgcmVzdG9yZVJldXNlZFJlZ2lzdGVyc0J5UG9wcGluZyhBc3NlbWJs
eUhlbHBlcnMmIGppdCwgY29uc3QgUHJlc2VydmVkU3RhdGUmKTsKICAgICAKICAgICBSZWdpc3Rl
clNldCB1c2VkUmVnaXN0ZXJzRm9yQ2FsbCgpIGNvbnN0OwogICAgIAogICAgIHVuc2lnbmVkIGRl
c2lyZWRTY3JhdGNoQnVmZmVyU2l6ZUZvckNhbGwoKSBjb25zdDsKLSAgICAKLSAgICBzdGF0aWMg
dW5zaWduZWQgcHJlc2VydmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbChNYWNyb0Fzc2VtYmxlciYg
aml0LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgdW5zaWduZWQgZXh0cmFQYWRk
aW5nSW5CeXRlcyk7Ci0gICAgc3RhdGljIHZvaWQgcmVzdG9yZVJlZ2lzdGVyc0Zyb21TdGFja0Zv
ckNhbGwoTWFjcm9Bc3NlbWJsZXImIGppdCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3Rl
cnMsIGNvbnN0IFJlZ2lzdGVyU2V0JiBpZ25vcmUsIHVuc2lnbmVkIG51bWJlck9mU3RhY2tCeXRl
c1VzZWRGb3JSZWdpc3RlclByZXNlcnZhdGlvbiwgdW5zaWduZWQgZXh0cmFQYWRkaW5nSW5CeXRl
cyk7CisKKyAgICBzdGF0aWMgdW5zaWduZWQgcHJlc2VydmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2Fs
bChBc3NlbWJseUhlbHBlcnMmIGppdCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMs
IHVuc2lnbmVkIGV4dHJhUGFkZGluZ0luQnl0ZXMpOworICAgIHN0YXRpYyB2b2lkIHJlc3RvcmVS
ZWdpc3RlcnNGcm9tU3RhY2tGb3JDYWxsKEFzc2VtYmx5SGVscGVycyYgaml0LCBjb25zdCBSZWdp
c3RlclNldCYgdXNlZFJlZ2lzdGVycywgY29uc3QgUmVnaXN0ZXJTZXQmIGlnbm9yZSwgdW5zaWdu
ZWQgbnVtYmVyT2ZTdGFja0J5dGVzVXNlZEZvclJlZ2lzdGVyUHJlc2VydmF0aW9uLCB1bnNpZ25l
ZCBleHRyYVBhZGRpbmdJbkJ5dGVzKTsKIAogcHJpdmF0ZToKICAgICBSZWdpc3RlclNldCBtX3Vz
ZWRSZWdpc3RlcnM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJH
ZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21BaXJJUkdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDI3ODg4NikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
OTgxLDEwICsyOTgxLDcgQEAgYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkUmV0dXJuKGNvbnN0IENv
bgogICAgIEIzOjpQYXRjaHBvaW50VmFsdWUqIHBhdGNoID0gYWRkUGF0Y2hwb2ludChCMzo6Vm9p
ZCk7CiAgICAgcGF0Y2gtPnNldEdlbmVyYXRvcihbXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0
IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewogICAgICAgICBhdXRvIGNh
bGxlZVNhdmVzID0gcGFyYW1zLmNvZGUoKS5jYWxsZWVTYXZlUmVnaXN0ZXJBdE9mZnNldExpc3Qo
KTsKLQotICAgICAgICBmb3IgKFJlZ2lzdGVyQXRPZmZzZXQgY2FsbGVlU2F2ZSA6IGNhbGxlZVNh
dmVzKQotICAgICAgICAgICAgaml0LmxvYWQ2NFRvUmVnKENDYWxsSGVscGVyczo6QWRkcmVzcyhH
UFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgY2FsbGVlU2F2ZS5vZmZzZXQoKSksIGNhbGxlZVNh
dmUucmVnKCkpOwotCisgICAgICAgIGppdC5lbWl0UmVzdG9yZShjYWxsZWVTYXZlcyk7CiAgICAg
ICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOwogICAgICAgICBqaXQucmV0KCk7CiAgICAg
fSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5l
cmF0b3IuY3BwCShyZXZpc2lvbiAyNzg4ODYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtQjNJUkdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMjg0LDEwICsyMjg0
LDcgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRSZXR1cm4oY29uc3QgQ29udAogICAgIFBhdGNo
cG9pbnRWYWx1ZSogcGF0Y2ggPSBtX3Byb2MuYWRkPFBhdGNocG9pbnRWYWx1ZT4oQjM6OlZvaWQs
IG9yaWdpbigpKTsKICAgICBwYXRjaC0+c2V0R2VuZXJhdG9yKFtdIChDQ2FsbEhlbHBlcnMmIGpp
dCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAg
IGF1dG8gY2FsbGVlU2F2ZXMgPSBwYXJhbXMuY29kZSgpLmNhbGxlZVNhdmVSZWdpc3RlckF0T2Zm
c2V0TGlzdCgpOwotCi0gICAgICAgIGZvciAoUmVnaXN0ZXJBdE9mZnNldCBjYWxsZWVTYXZlIDog
Y2FsbGVlU2F2ZXMpCi0gICAgICAgICAgICBqaXQubG9hZDY0VG9SZWcoQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBjYWxsZWVTYXZlLm9mZnNldCgpKSwg
Y2FsbGVlU2F2ZS5yZWcoKSk7Ci0KKyAgICAgICAgaml0LmVtaXRSZXN0b3JlKGNhbGxlZVNhdmVz
KTsKICAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CiAgICAgICAgIGppdC5yZXQo
KTsKICAgICB9KTsK
</data>
<flag name="commit-queue"
          id="453255"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431472</attachid>
            <date>2021-06-15 13:10:29 -0700</date>
            <delta_ts>2021-06-15 13:17:39 -0700</delta_ts>
            <desc>patch to test workaround for gcc weakness.</desc>
            <filename>bug-227039.patch</filename>
            <type>text/plain</type>
            <size>104620</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjc4ODg2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2OCBA
QAorMjAyMS0wNi0xNSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
VXNlIGxkcCBhbmQgc3RwIG1vcmUgZm9yIHNhdmluZyAvIHJlc3RvcmluZyByZWdpc3RlcnMgb24g
QVJNNjQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjcwMzkKKyAgICAgICAgcmRhcjovLzc5MzU0NzM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgc3Bvb2xlciBh
YnN0cmFjdGlvbiBpbiBBc3NlbWJseUhlbHBlcnMuICBUaGUgc3Bvb2xlcgorICAgICAgICBiYXNp
Y2FsbHkgYmF0Y2hlcyB1cCBsb2FkIC8gc3RvcmUgb3BlcmF0aW9ucyBhbmQgZW1pdCB0aGVtIGFz
IHBhaXIgaW5zdHJ1Y3Rpb25zCisgICAgICAgIGlmIGFwcHJvcHJpYXRlLgorCisgICAgICAgIFRo
ZXJlIGFyZSA0IHNwb29sZXIgY2xhc3NlczoKKyAgICAgICAgYS4gU3Bvb2xlcgorICAgICAgICAg
ICAtIHRlbXBsYXRlIGJhc2UgY2xhc3MgZm9yIExvYWRSZWdTcG9vbGVyIGFuZCBTdG9yZVJlZ1Nw
b29sZXIuCisgICAgICAgICAgIC0gZW5jYXBzdWxhdGVzIHRoZSBiYXRjaGluZyBzdHJhdGVneSBm
b3IgbG9hZCAvIHN0b3JlIHBhaXJzLgorCisgICAgICAgIGIuIExvYWRSZWdTcG9vbGVyIC0gc3Bl
Y2lhbGl6ZXMgU3Bvb2xlciB0byBoYW5kbGUgbG9hZCBwYWlycy4KKyAgICAgICAgYi4gU3RvcmVS
ZWdTcG9vbGVyIC0gc3BlY2lhbGl6ZXMgU3Bvb2xlciB0byBoYW5kbGUgc3RvcmUgcGFpcnMuCisK
KyAgICAgICAgZC4gQ29weVNwb29sZXIKKyAgICAgICAgICAgLSBoYW5kbGVzIG1hdGNoaW5nIGxv
YWRzIHdpdGggc3RvcmVzLgorICAgICAgICAgICAtIHRyaWVzIHRvIGVtaXQgbG9hZHMgYXMgbG9h
ZCBwYWlycyBpZiBwb3NzaWJsZS4KKyAgICAgICAgICAgLSB0cmllcyB0byBlbW90IHN0b3JlcyBh
cyBzdG9yZSBwYWlycyBpZiBwb3NzaWJsZS4KKyAgICAgICAgICAgLSBlbnN1cmVzIHRoYXQgcHJl
LXJlcXVpc2l0ZSBsb2FkcyBhcmUgZW1pdHRlZCBiZWZvcmUgc3RvcmVzIGFyZSBlbWl0dGVkLgor
ICAgICAgICAgICAtIG90aGVyIHRoYW4gbG9hZHMsIGFsc28gc3VwcG9ydCBjb25zdGFudHMgYW5k
IHJlZ2lzdGVycyBhcyBzb3VyY2VzIG9mIHZhbHVlcworICAgICAgICAgICAgIHRvIGJlIHN0b3Jl
ZC4gIFRoaXMgaXMgdXNlZnVsIGluIE9TUiBleGl0IHJhbXBzIHdoZXJlIHdlIG1heSBtYXRlcmlh
bGl6ZSBhCisgICAgICAgICAgICAgc3RhY2sgdmFsdWUgdG8gc3RvcmUgZnJvbSBjb25zdGFudHMg
b3IgcmVnaXN0ZXJzIGluIGFkZGl0aW9uIHRvIHZhbHVlcyB3ZQorICAgICAgICAgICAgIGxvYWQg
ZnJvbSB0aGUgb2xkIHN0YWNrIGZyYW1lIG9yIGZyb20gYSBzY3JhdGNoIGJ1ZmZlci4KKworICAg
ICAgICBJbiB0aGlzIHBhdGNoLCB3ZSBhbHNvIGRvIHRoZSBmb2xsb3dpbmc6CisKKyAgICAgICAg
MS4gVXNlIHNwb29sZXJzIGluIG1hbnkgcGxhY2VzIHNvIHRoYXQgd2UgY2FuIGVtaXQgbG9hZCAv
IHN0b3JlIHBhaXJzIGluc3RlYWQgb2YKKyAgICAgICAgICAgc2luZ2xlIGxvYWQgLyBzdG9yZXMu
ICBUaGlzIGhlbHBzIHNocmluayBKSVQgY29kZSBzaWRlLCBhbmQgYWxzbyBwb3RlbnRpYWxseQor
ICAgICAgICAgICBpbXByb3ZlcyBwZXJmb3JtYW5jZS4KKworICAgICAgICAyLiBJbiBERkc6Ok9T
UkV4aXQ6OmNvbXBpbGVFeGl0KCksIHdlIHVzZWQgdG8gcmVjb3ZlciBjb25zdGFudHMgaW50byBh
IHNjcmF0Y2gKKyAgICAgICAgICAgYnVmZmVyLCBhbmQgdGhlbiBsYXRlciwgbG9hZCBmcm9tIHRo
YXQgc2NyYXRjaCBidWZmZXIgdG8gc3RvcmUgaW50byB0aGUKKyAgICAgICAgICAgbmV3IHN0YWNr
IGZyYW1lKHMpLgorCisgICAgICAgICAgIFRoaXMgcGF0Y2ggY2hhbmdlcyBpdCBzbyB0aGF0IHdl
IGRlZmVyIGNvbnN0YW50IHJlY292ZXJ5IHVudGlsIHRoZSBmaW5hbAorICAgICAgICAgICBsb29w
IHdoZXJlIHdlIHN0b3JlIHRoZSByZWNvdmVyZWQgdmFsdWUgZGlyZWN0bHkgaW50byB0aGUgbmV3
IHN0YWNrIGZyYW1lKHMpLgorICAgICAgICAgICBUaGlzIHNhdmVzIHVzIHRoZSB3b3JrIChhbmQg
SklUIGNvZGUgc3BhY2UpIGZvciBzdG9yaW5nIGludG8gYSBzY3JhdGNoIGJ1ZmZlcgorICAgICAg
ICAgICBhbmQgdGhlbiByZWxvYWRpbmcgZnJvbSB0aGUgc2NyYXRjaCBidWZmZXIuCisKKyAgICAg
ICAgICAgVGhlcmUgaXMgb25lIGV4Y2VwdGlvbjogdG1wIHZhbHVlcyB1c2VkIGJ5IGFjdGl2ZSBj
aGVja3BvaW50cy4gIFdlIG5lZWQgdG8gY2FsbAorICAgICAgICAgICBvcGVyYXRpb25NYXRlcmlh
bGl6ZU9TUkV4aXRTaWRlU3RhdGUoKSB0byBtYXRlcmlhbGl6ZSB0aGUgYWN0aXZlIGNoZWNrcG9p
bnQKKyAgICAgICAgICAgc2lkZSBzdGF0ZSBiZWZvcmUgdGhlIGZpbmFsIGxvb3Agd2hlcmUgd2Ug
bm93IHJlY292ZXIgY29uc3RhbnRzLiAgSGVuY2UsIHdlCisgICAgICAgICAgIG5lZWQgdGhlc2Ug
dG1wIHZhbHVlcyByZWNvdmVyZWQgYmVmb3JlIGhhbmQuCisKKyAgICAgICAgICAgU28sIHdlIGNo
ZWNrIHVwZnJvbnQgaWYgd2UgaGF2ZSBhY3RpdmUgY2hlY2twb2ludCBzaWRlIHN0YXRlIHRvIG1h
dGVyaWFsaXplLgorICAgICAgICAgICBJZiBzbywgd2UnbGwgZWFnZXJseSByZWNvdmVyIHRoZSBj
b25zdGFudHMgZm9yIGluaXRpYWxpemluZyB0aG9zZSB0bXBzLgorCisgICAgICAgICAgIFdlIGFs
c28gdXNlIHRoZSBDb3B5U3Bvb2xlciBpbiB0aGUgZmluYWwgbG9vcCB0byBlbWl0IGxvYWQgLyBz
dG9yZSBwYWlycyBmb3IKKyAgICAgICAgICAgZmlsbGluZyBpbiB0aGUgbmV3IHN0YWNrIGZyYW1l
KHMpLgorCisgICAgICAgICAgIE9uZSBtb3JlIHRoaW5nOiBpdCB0dXJucyBvdXQgdGhhdCB0aGUg
dmFzdCBtYWpvcml0eSBvZiBjb25zdGFudHMgdG8gYmUgcmVjb3ZlcmVkCisgICAgICAgICAgIGlz
IHNpbXBseSB0aGUgdW5kZWZpbmVkIHZhbHVlLiAgU28sIGFzIGFuIG9wdGltaXphdGlvbiwgdGhl
IGZpbmFsIGxvb3Aga2VlcHMKKyAgICAgICAgICAgdGhlIHVuZGVmaW5lZCB2YWx1ZSBpbiBhIHJl
Z2lzdGVyLCBhbmQgaGFzIHRoZSBzcG9vbGVyIHN0b3JlIGRpcmVjdGx5IGZyb20KKyAgICAgICAg
ICAgdGhhdCByZWdpc3RlciB3aGVuIGFwcHJvcHJpYXRlLiAgVGhpcyBzYXZlcyBvbiBKSVQgY29k
ZSB0byByZXBlYXRlZGx5IG1hdGVyaWFsaXplCisgICAgICAgICAgIHRoZSB1bmRlZmluZWQgSlNW
YWx1ZSBjb25zdGFudC4KKworICAgICAgICAzLiBJbiByZWlmeUlubGluZWRDYWxsRnJhbWVzKCks
IHJlcGxhY2UgdGhlIHVzZSBvZiBHUFJJbmZvOjpub25BcmdHUFIwIHdpdGgKKyAgICAgICAgICAg
R1BSSW5mbzo6cmVnVDQuICBub25BcmdHUFJzIGFyZSBzb21ldGltZXMgbWFwIHRvIGNlcnRhaW4g
cmVnVFhzIG9uIGNlcnRhaW4gcG9ydHMuCisgICAgICAgICAgIFJlcGxhY2luZyB3aXRoIHJlZ1Q0
IG1ha2VzIGl0IGVhc2llciB0byBlbnN1cmUgdGhhdCB3ZSdyZSBub3QgdHJhc2hpbmcgdGhlCisg
ICAgICAgICAgIHJlZ2lzdGVyIHdoZW4gd2UgdXNlIG1vcmUgdGVtcCByZWdpc3RlcnMuCisKKyAg
ICAgICAgICAgcmVpZnlJbmxpbmVkQ2FsbEZyYW1lcygpIHdpbGwgYmUgdXNpbmcgZW1pdFNhdmVP
ckNvcHlMTEludEJhc2VsaW5lQ2FsbGVlU2F2ZXNGb3IoKQorICAgICAgICAgICBsYXRlciB3aGVy
ZSB3ZSBuZWVkIG1vcmUgdGVtcCByZWdpc3RlcnMuCisKKyAgICAgICAgNC4gTW92ZSB0aGUgZm9s
bG93aW5nIGZ1bmN0aW9ucyB0byBBc3NlbWJseUhlbHBlcnMuY3BwLiAgVGhleSBkb24ndCBuZWVk
IHRvIGJlCisgICAgICAgICAgIGlubGluZSBmdW5jdGlvbnMuICBTcGVlZG9tZXRlcjIgYW5kIEpl
dFN0cmVhbTIgc2hvd3MgdGhhdCBtYWtpbmcgdGhlc2Ugbm9uCisgICAgICAgICAgIGlubGluZSBk
b2VzIG5vdCBodXJ0IHBlcmZvcm1hbmNlOgorCisgICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxw
ZXJzOjplbWl0U2F2ZShjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCYpOworICAgICAgICAgICAg
ICAgIEFzc2VtYmx5SGVscGVyczo6ZW1pdFJlc3RvcmUoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExp
c3QmKTsKKyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OmVtaXRTYXZlQ2FsbGVlU2F2
ZXNGb3IoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QqKTsKKyAgICAgICAgICAgICAgICBBc3Nl
bWJseUhlbHBlcnM6OmVtaXRTYXZlT3JDb3B5Q2FsbGVlU2F2ZXNGb3IoLi4uKTsKKyAgICAgICAg
ICAgICAgICBBc3NlbWJseUhlbHBlcnM6OmVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXNGb3IoY29uc3Qg
UmVnaXN0ZXJBdE9mZnNldExpc3QqKTsKKyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6
OmNvcHlMTEludEJhc2VsaW5lQ2FsbGVlU2F2ZXNGcm9tRnJhbWVPclJlZ2lzdGVyVG9FbnRyeUZy
YW1lQ2FsbGVlU2F2ZXNCdWZmZXIoLi4uKTsKKworICAgICAgICAgICBBbHNvIHJlbmFtZWQgZW1p
dFNhdmVPckNvcHlDYWxsZWVTYXZlc0ZvcigpIHRvIGVtaXRTYXZlT3JDb3B5TExJbnRCYXNlbGlu
ZUNhbGxlZVNhdmVzRm9yKCkKKyAgICAgICAgICAgYmVjYXVzZSBpdCBpcyBvbmx5IHVzZWQgd2l0
aCBiYXNlbGluZSBjb2RlQmxvY2tzLgorCisgICAgICAgIFJlc3VsdHM6CisgICAgICAgIEN1bW11
bGF0aXZlIExpbmtCdWZmZXIgcHJvZmlsZSBzaXplcyBzaHJ1bmsgYnkgfjJNIGluIGFnZ3JlZ2F0
ZToKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UgICAgICAgICAgICAgICAgICAg
ICAgICAgICBuZXcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PT09ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPT09CisgICAgICAgICAgICAgICBCYXNlbGluZUpJVDogODM4MjcwNDgg
KDc5Ljk0MzcwMyBNQikgICAgID0+IDgzNzE4NzM2ICg3OS44NDA0MDggTUIpCisgICAgICAgICAg
ICAgICAgICAgICAgIERGRzogNTY1OTQ4MzYgKDUzLjk3MzA0MiBNQikgICAgID0+IDU2NjAzNTA4
ICg1My45ODEzMTIgTUIpCisgICAgICAgICAgICAgICBJbmxpbmVDYWNoZTogMzM5MjM5MDAgKDMy
LjM1MjM1MiBNQikgICAgID0+IDMzMTgzMTU2ICgzMS42NDU5MjQgTUIpCisgICAgICAgICAgICAg
ICAgICAgICAgIEZUTDogNjc3MDk1NiAoNi40NTcyODcgTUIpICAgICAgID0+IDY1Njg5NjQgKDYu
MjY0NjUyIE1CKQorICAgICAgICAgICAgICAgIERGR09TUkV4aXQ6IDUyMTIwOTYgKDQuOTcwNjQy
IE1CKSAgICAgICA9PiAzNzI4MDg4ICgzLjU1NTM4MiBNQikKKyAgICAgICAgICAgICAgICAgICAg
Q1NTSklUOiA3NDg0MjggKDczMC44ODY3MTkgS0IpICAgICAgPT4gNzQ4NDI4ICg3MzAuODg2NzE5
IEtCKQorICAgICAgICAgICAgICAgIEZUTE9TUkV4aXQ6IDY5MjI3NiAoNjc2LjA1MDc4MSBLQikg
ICAgICA9PiA2NTY4ODQgKDY0MS40ODgyODEgS0IpCisgICAgICAgICAgICAgICAgICAgWWFyckpJ
VDogNDQ1MjgwICg0MzQuODQzNzUwIEtCKSAgICAgID0+IDUxMjk4OCAoNTAwLjk2NDg0NCBLQikK
KyAgICAgICAgICAgICAgICAgIEZUTFRodW5rOiAyMjkwOCAoMjIuMzcxMDk0IEtCKSAgICAgICAg
PT4gMjI1NTYgKDIyLjAyNzM0NCBLQikKKyAgICAgICAgQm91bmRGdW5jdGlvblRodW5rOiA4NDAw
ICg4LjIwMzEyNSBLQikgICAgICAgICAgPT4gMTAwODggKDkuODUxNTYyIEtCKQorICAgICAgICAg
ICAgIEV4dHJhQ1RJVGh1bms6IDY5NTIgKDYuNzg5MDYyIEtCKSAgICAgICAgICA9PiA2ODI0ICg2
LjY2NDA2MiBLQikKKyAgICAgICAgICBTcGVjaWFsaXplZFRodW5rOiA0NTA4ICg0LjQwMjM0NCBL
QikgICAgICAgICAgPT4gNDUwOCAoNC40MDIzNDQgS0IpCisgICAgICAgICAgICAgICAgICAgICBU
aHVuazogMzkxMiAoMy44MjAzMTIgS0IpICAgICAgICAgID0+IDM3ODQgKDMuNjk1MzEyIEtCKQor
ICAgICAgICAgICAgICAgIExMSW50VGh1bms6IDI5MDggKDIuODM5ODQ0IEtCKSAgICAgICAgICA9
PiAyOTA4ICgyLjgzOTg0NCBLQikKKyAgICAgICAgICAgICAgVmlydHVhbFRodW5rOiAxMjQ4ICgx
LjIxODc1MCBLQikgICAgICAgICAgPT4gMTI0OCAoMS4yMTg3NTAgS0IpCisgICAgICAgICAgICAg
ICAgICBERkdUaHVuazogMTA4NCAoMS4wNTg1OTQgS0IpICAgICAgICAgID0+IDQ0NAorICAgICAg
ICAgICAgICAgREZHT1NSRW50cnk6IDIxNiAgICAgICAgICAgICAgICAgICAgICAgICA9PiAxODQK
KyAgICAgICAgICAgICAgICBKdW1wSXNsYW5kOiAwCisgICAgICAgICAgICAgICAgIFdhc21UaHVu
azogMAorICAgICAgICAgICAgICAgICAgICAgIFdhc206IDAKKyAgICAgICAgICAgICBVbmNhdGVn
b3JpemVkOiAwCisgICAgICAgICAgICAgICAgICAgICBUb3RhbDogMTg4MjY2OTU2ICgxNzkuNTQ1
MzYxIE1CKSAgID0+IDE4NTc3MzI5NiAoMTc3LjE2NzIyMSBNQikKKworICAgICAgICBTcGVlZG9t
ZXRlcjIgYW5kIEpldFN0cmVhbTIgcmVzdWx0cyBzaG93cyB0aGF0IHBlcmZvcm1hbmNlIGlzIG5l
dXRyYWwgZm9yIHRoaXMKKyAgICAgICAgcGF0Y2ggKGFzIG1lYXN1cmVkIG9uIGFuIE0xIE1hYyk6
CisKKyAgICAgICAgU3BlZWRvbWV0ZXIyOgorICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAg
ICAgIHwgICAgICAgICAgICAgICBzdWJ0ZXN0ICAgICAgICAgICAgICAgIHwgICAgIG1zICAgICAg
fCAgICAgbXMgICAgICB8ICBiIC8gYSAgIHwgcFZhbHVlIChzaWduaWZpY2FuY2UgdXNpbmcgRmFs
c2UgRGlzY292ZXJ5IFJhdGUpIHwKKyAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICB8
IEVsbS1Ub2RvTVZDICAgICAgICAgICAgICAgICAgICAgICAgICB8MTI5LjAzNzUwMCAgIHwxMjcu
MjEyNTAwICAgfDAuOTg1ODU3ICB8IDAuMDEyNzA2ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8CisgICAgICAgIHwgVnVlSlMtVG9kb01WQyAgICAgICAgICAgICAgICAg
ICAgICAgIHwyOC4zMTI1MDAgICAgfDI3LjUyNTAwMCAgICB8MC45NzIxODUgIHwgMC4yNDAzMTUg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBFbWJl
ckpTLVRvZG9NVkMgICAgICAgICAgICAgICAgICAgICAgfDEzMi41NTAwMDAgICB8MTMyLjAyNTAw
MCAgIHwwLjk5NjAzOSAgfCAwLjUzODAzNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfAorICAgICAgICB8IEZsaWdodC1Ub2RvTVZDICAgICAgICAgICAgICAgICAgICAg
ICB8ODAuNzYyNTAwICAgIHw4MC44NzUwMDAgICAgfDEuMDAxMzkzICB8IDAuOTE0NzQ5ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgQmFja2JvbmVK
Uy1Ub2RvTVZDICAgICAgICAgICAgICAgICAgIHw1MS42Mzc1MDAgICAgfDUxLjE3NTAwMCAgICB8
MC45OTEwNDMgIHwgMC4yODU0MjcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwKKyAgICAgICAgfCBQcmVhY3QtVG9kb01WQyAgICAgICAgICAgICAgICAgICAgICAgfDIx
LjAyNTAwMCAgICB8MjIuMDc1MDAwICAgIHwxLjA0OTk0MSAgfCAwLjIwNjE0MCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IEFuZ3VsYXJKUy1Ub2Rv
TVZDICAgICAgICAgICAgICAgICAgICB8MTQyLjkwMDAwMCAgIHwxNDIuODg3NTAwICAgfDAuOTk5
OTEzICB8IDAuOTkwNjgxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
CisgICAgICAgIHwgSW5mZXJuby1Ub2RvTVZDICAgICAgICAgICAgICAgICAgICAgIHw2OS4zMDAw
MDAgICAgfDY5Ljc3NTAwMCAgICB8MS4wMDY4NTQgIHwgMC41MDUyMDEgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBWYW5pbGxhLUVTMjAxNS1Ub2Rv
TVZDICAgICAgICAgICAgICAgfDcxLjUwMDAwMCAgICB8NzEuMjI1MDAwICAgIHwwLjk5NjE1NCAg
fCAwLjYwODY1MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAg
ICAgICB8IEFuZ3VsYXIyLVR5cGVTY3JpcHQtVG9kb01WQyAgICAgICAgICB8NDMuMjg3NTAwICAg
IHw0My4yNzUwMDAgICAgfDAuOTk5NzExICB8IDAuOTg3OTI2ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgVmFuaWxsYUpTLVRvZG9NVkMgICAgICAg
ICAgICAgICAgICAgIHw1Ny4yMTI1MDAgICAgfDU3LjgxMjUwMCAgICB8MS4wMTA0ODcgIHwgMC4z
MzMzNTcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAg
fCBqUXVlcnktVG9kb01WQyAgICAgICAgICAgICAgICAgICAgICAgfDI3Ni4xNTAwMDAgICB8Mjc2
Ljc3NTAwMCAgIHwxLjAwMjI2MyAgfCAwLjYxNDQwNCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfAorICAgICAgICB8IEVtYmVySlMtRGVidWctVG9kb01WQyAgICAgICAg
ICAgICAgICB8MzUzLjYxMjUwMCAgIHwzNTIuNzYyNTAwICAgfDAuOTk3NTk2ICB8IDAuNTE4ODM2
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgUmVh
Y3QtVG9kb01WQyAgICAgICAgICAgICAgICAgICAgICAgIHw5My42Mzc1MDAgICAgfDkyLjYzNzUw
MCAgICB8MC45ODkzMjEgIHwgMC4wMzYyNzcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwKKyAgICAgICAgfCBSZWFjdC1SZWR1eC1Ub2RvTVZDICAgICAgICAgICAgICAg
ICAgfDE1OC4yMzc1MDAgICB8MTU2LjU4NzUwMCAgIHwwLjk4OTU3MyAgfCAwLjA0MjE1NCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IFZhbmlsbGEt
RVMyMDE1LUJhYmVsLVdlYnBhY2stVG9kb01WQyB8NjguMDUwMDAwICAgIHw2OC4wODc1MDAgICAg
fDEuMDAwNTUxICB8IDAuODk3MTQ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8CisgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgICAgICBhIG1lYW4gPSAyMzYu
MjY5NTAKKyAgICAgICAgYiBtZWFuID0gMjM2LjU3OTY0CisgICAgICAgIHBWYWx1ZSA9IDAuNzgz
MDc4NTkzOAorICAgICAgICAoQmlnZ2VyIG1lYW5zIGFyZSBiZXR0ZXIuKQorICAgICAgICAxLjAw
MSB0aW1lcyBiZXR0ZXIKKyAgICAgICAgUmVzdWx0cyBBUkUgTk9UIHNpZ25pZmljYW50CisKKyAg
ICAgICAgSmV0U3RyZWFtMjoKKyAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICB8ICAgICAgICAgIHN1
YnRlc3QgICAgICAgICAgfCAgICAgcHRzICAgICAgfCAgICAgcHRzICAgICAgfCAgYiAvIGEgICB8
IHBWYWx1ZSAoc2lnbmlmaWNhbmNlIHVzaW5nIEZhbHNlIERpc2NvdmVyeSBSYXRlKSB8CisgICAg
ICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKyAgICAgICAgfCBnYXVzc2lhbi1ibHVyICAgICAgICAgICAgIHw1NDIuNTcw
MDU3ICAgIHw1NDIuNjcxODg1ICAgIHwxLjAwMDE4OCAgfCAwLjk4MjU3MyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IEhhc2hTZXQtd2FzbSAgICAg
ICAgICAgICAgfDU3LjcxMDQ5OCAgICAgfDY0LjQwNjM3MSAgICAgfDEuMTE2MDI1ICB8IDAuNDAx
NDI0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwg
Z2NjLWxvb3BzLXdhc20gICAgICAgICAgICB8NDQuNTE2MDA5ICAgICB8NDQuNDUzNTM1ICAgICB8
MC45OTg1OTcgIHwgMC45NzM2NTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwKKyAgICAgICAgfCBqc29uLXBhcnNlLWluc3BlY3RvciAgICAgIHwyNDEuMjc1MDg1ICAg
IHwyNDAuNzIwNDkxICAgIHwwLjk5NzcwMSAgfCAwLjcwNDczMiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IHByZXBhY2std3RiICAgICAgICAgICAg
ICAgfDYyLjY0MDExNCAgICAgfDYzLjc1NDg3OCAgICAgfDEuMDE3Nzk2ICB8IDAuMjA1ODQwICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgZGF0ZS1m
b3JtYXQteHBhcmItU1AgICAgICB8NDE2Ljk3NjgxNyAgICB8NDQ4LjkyMTQwOSAgICB8MS4wNzY2
MTAgIHwgMC4wNTI5NzcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwK
KyAgICAgICAgfCBXU0wgICAgICAgICAgICAgICAgICAgICAgIHwxLjU1NTI1NyAgICAgIHwxLjU3
MDIzMyAgICAgIHwxLjAwOTYyOSAgfCAwLjQyNzkyNCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfAorICAgICAgICB8IE9mZmxpbmVBc3NlbWJsZXIgICAgICAgICAgfDE3
Ny4wNTIzNTIgICAgfDE3OS43NDY1MTEgICAgfDEuMDE1MjE3ICB8IDAuMTEyMTE0ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgY2RqcyAgICAgICAg
ICAgICAgICAgICAgICB8MTkyLjUxNzU4NiAgICB8MTk0LjU5ODkwNiAgICB8MS4wMTA4MTEgIHwg
MC4wMjU4MDcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAg
ICAgfCBVbmlQb2tlciAgICAgICAgICAgICAgICAgIHw1MTQuMDIzNjk0ICAgIHw1MjYuMTExNTAw
ICAgIHwxLjAyMzUxNiAgfCAwLjI2OTg5MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfAorICAgICAgICB8IGpzb24tc3RyaW5naWZ5LWluc3BlY3RvciAgfDIyNy41ODQ3
MjUgICAgfDIyMy42MTkzOTAgICAgfDAuOTgyNTc2ICB8IDAuMTAyNzE0ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgY3J5cHRvLXNoYTEtU1AgICAg
ICAgICAgICB8OTgwLjcyODc4OCAgICB8OTg0LjE5MjEwNCAgICB8MS4wMDM1MzEgIHwgMC44Mzg2
MTggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBC
YXNpYyAgICAgICAgICAgICAgICAgICAgIHw2ODUuMTQ4NDgzICAgIHw3MTEuNTkwMjQ3ICAgIHwx
LjAzODU5MyAgfCAwLjE0Mjk1MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfAorICAgICAgICB8IGNoYWktd3RiICAgICAgICAgICAgICAgICAgfDEwNi4yNTYzNzYgICAg
fDEwNi41OTAzMTggICAgfDEuMDAzMTQzICB8IDAuODY1ODk0ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgY3J5cHRvLWFlcy1TUCAgICAgICAgICAg
ICB8NzIyLjMwODgyOSAgICB8NzI4LjcwMjMxMCAgICB8MS4wMDg4NTEgIHwgMC40ODY3NjYgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBCYWJ5bG9u
ICAgICAgICAgICAgICAgICAgIHw2NTUuODU3NTYxICAgIHw2NTQuMjA0OTAxICAgIHwwLjk5NzQ4
MCAgfCAwLjkzMTUyMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAor
ICAgICAgICB8IHN0cmluZy11bnBhY2stY29kZS1TUCAgICAgfDQwNy44MzcyNzEgICAgfDQwNS43
MTA3NTIgICAgfDAuOTk0Nzg2ICB8IDAuNzI5MTIyICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8CisgICAgICAgIHwgc3RhbmZvcmQtY3J5cHRvLWFlcyAgICAgICB8NDU2
LjkwNjAyMSAgICB8NDQ5Ljk5Mzg1NiAgICB8MC45ODQ4NzIgIHwgMC4yNzI5OTQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCByYXl0cmFjZSAgICAg
ICAgICAgICAgICAgIHw4ODMuOTExMzM1ICAgIHw5MDIuODg3MjM4ICAgIHwxLjAyMTQ2OCAgfCAw
LjE4OTc4NSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAg
ICB8IG11bHRpLWluc3BlY3Rvci1jb2RlLWxvYWQgfDQwOS45OTczNDcgICAgfDQwNS42NDM2Mzkg
ICAgfDAuOTg5MzgxICB8IDAuNjQ0NDQ3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8CisgICAgICAgIHwgaGFzaC1tYXAgICAgICAgICAgICAgICAgICB8NTkzLjU5MDE2
MCAgICB8NjAxLjU3NjMzMiAgICB8MS4wMTM0NTQgIHwgMC4yNDk0MTQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBzdGFuZm9yZC1jcnlwdG8tcGJr
ZGYyICAgIHw3MjIuMTc4NjM4ICAgIHw3MjguMjgzNTMyICAgIHwxLjAwODQ1MyAgfCAwLjY2MTE5
NSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IGNv
ZmZlZXNjcmlwdC13dGIgICAgICAgICAgfDQyLjM5MzU0NCAgICAgfDQxLjg2OTU0NSAgICAgfDAu
OTg3NjQwICB8IDAuMTk3NDQxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8CisgICAgICAgIHwgQm94MkQgICAgICAgICAgICAgICAgICAgICB8NDUyLjAzNDY4NSAgICB8
NDU0LjEwNDg2OCAgICB8MS4wMDQ1ODAgIHwgMC41MzUzNDIgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCByaWNoYXJkcy13YXNtICAgICAgICAgICAg
IHwxNDAuODczNjg4ICAgIHwxNDguMzk0MDUwICAgIHwxLjA1MzM4NCAgfCAwLjMwMzY1MSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IGxlYmFiLXd0
YiAgICAgICAgICAgICAgICAgfDYxLjY3MTMxOCAgICAgfDYyLjExOTQwMyAgICAgfDEuMDA3MjY2
ICB8IDAuNjIwOTk4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cisg
ICAgICAgIHwgdHNmLXdhc20gICAgICAgICAgICAgICAgICB8MTA4LjU5Mjc5NCAgICB8MTE5LjQ5
ODM5OCAgICB8MS4xMDA0MjcgIHwgMC41MDQ3MTAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwKKyAgICAgICAgfCBiYXNlNjQtU1AgICAgICAgICAgICAgICAgIHw2Mjku
NzQ0NjQzICAgIHw2MDMuNDI1NTY1ICAgIHwwLjk1ODIwNyAgfCAwLjA0OTk5NyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IG5hdmllci1zdG9rZXMg
ICAgICAgICAgICAgfDc0MC41ODg1MjMgICAgfDczOS45NTE2NjIgICAgfDAuOTk5MTQwICB8IDAu
ODcxNDQ1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAg
IHwganNoaW50LXd0YiAgICAgICAgICAgICAgICB8NTEuOTM4MzU5ICAgICB8NTIuNjUxMTA0ICAg
ICB8MS4wMTM3MjMgIHwgMC4yMTcxMzcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwKKyAgICAgICAgfCByZWdleC1kbmEtU1AgICAgICAgICAgICAgIHw0NTkuMjUxMTQ4
ICAgIHw0NjMuNDkyNDg5ICAgIHwxLjAwOTIzNSAgfCAwLjM3MTg5MSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IGFzeW5jLWZzICAgICAgICAgICAg
ICAgICAgfDIzNS44NTM4MjAgICAgfDIzNi4wMzExODkgICAgfDEuMDAwNzUyICB8IDAuOTM4NDU5
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgZmly
c3QtaW5zcGVjdG9yLWNvZGUtbG9hZCB8Mjc1LjI5ODMyNSAgICB8Mjc0LjE3MjEyNSAgICB8MC45
OTU5MDkgIHwgMC42MjM0MDMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwKKyAgICAgICAgfCBzZWdtZW50YXRpb24gICAgICAgICAgICAgIHw0NC4wMDI4NDIgICAgIHw0
My40NDU5NjAgICAgIHwwLjk4NzM0NCAgfCAwLjIwNzEzNCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IHR5cGVzY3JpcHQgICAgICAgICAgICAgICAg
fDI2LjM2MDE2MSAgICAgfDI2LjQ1ODgyMCAgICAgfDEuMDAzNzQzICB8IDAuNjA5OTQyICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgb2N0YW5lLWNv
ZGUtbG9hZCAgICAgICAgICB8MTEyNi43NDkwMzYgICB8MTA4Ny4xMzIwMjQgICB8MC45NjQ4NDAg
IHwgMC41MjQxNzEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAg
ICAgICAgfCBmbG9hdC1tbS5jICAgICAgICAgICAgICAgIHwxNi42OTE5MzUgICAgIHwxNi43MjEz
NTQgICAgIHwxLjAwMTc2MiAgfCAwLjE5NDQyNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfAorICAgICAgICB8IHF1aWNrc29ydC13YXNtICAgICAgICAgICAgfDQ2MS42
MzAwOTEgICAgfDQ1MC4xNjExMjcgICAgfDAuOTc1MTU2ICB8IDAuMzcxMzk0ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgQWlyICAgICAgICAgICAg
ICAgICAgICAgICB8MzkyLjQ0MjM3NSAgICB8NDEyLjIwMTgxMCAgICB8MS4wNTAzNTAgIHwgMC4w
NDY4ODcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAg
fCBzcGxheSAgICAgICAgICAgICAgICAgICAgIHw1MTAuMTExODg2ICAgIHw0NzUuMTMxNjU3ICAg
IHwwLjkzMTQyNiAgfCAwLjAyNDczMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfAorICAgICAgICB8IGFpLWFzdGFyICAgICAgICAgICAgICAgICAgfDYwNy45NjY5NzQg
ICAgfDYyNi41NzMxODEgICAgfDEuMDMwNjA0ICB8IDAuNDY4NzExICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgYWNvcm4td3RiICAgICAgICAgICAg
ICAgICB8NjcuNTEwNzY2ICAgICB8NjguMTQzOTU2ICAgICB8MS4wMDkzNzkgIHwgMC40ODE2NjMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBnYmVt
dSAgICAgICAgICAgICAgICAgICAgIHwxNDQuMTMzODQyICAgIHwxNDUuNjIwMzA0ICAgIHwxLjAx
MDMxMyAgfCAwLjgwMjE1NCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fAorICAgICAgICB8IHJpY2hhcmRzICAgICAgICAgICAgICAgICAgfDk2My40NzUwNzggICAgfDk0
Ni42NTg4NzkgICAgfDAuOTgyNTQ2ICB8IDAuMjMxMTg5ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgM2QtY3ViZS1TUCAgICAgICAgICAgICAgICB8
NTQ5LjQyNjc4NCAgICB8NTUwLjQ3OTE1NCAgICB8MS4wMDE5MTUgIHwgMC44MzEzMDcgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBlc3ByZWUtd3Ri
ICAgICAgICAgICAgICAgIHw2OC43MDc0ODMgICAgIHw3My43NjIyMDIgICAgIHwxLjA3MzU2OSAg
fCAwLjAzMzYwMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAg
ICAgICB8IGJvbWItd29ya2VycyAgICAgICAgICAgICAgfDk2Ljg4MjU5NiAgICAgfDk2LjExNjEy
MSAgICAgfDAuOTkyMDg5ICB8IDAuNjg3OTUyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8CisgICAgICAgIHwgdGFnY2xvdWQtU1AgICAgICAgICAgICAgICB8MzA5Ljg4
ODc2NyAgICB8MzAzLjUzODUxMSAgICB8MC45Nzk1MDggIHwgMC4xODc3NjggICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBtYW5kcmVlbCAgICAgICAg
ICAgICAgICAgIHwxMzMuNjY3MDMxICAgIHwxMzUuMDA5OTI5ICAgIHwxLjAxMDA0NyAgfCAwLjA3
NTIzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8
IDNkLXJheXRyYWNlLVNQICAgICAgICAgICAgfDQ5MS45Njc2NDkgICAgfDQ5Mi41Mjg5OTIgICAg
fDEuMDAxMTQxICB8IDAuOTU3ODQyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8CisgICAgICAgIHwgZGVsdGEtYmx1ZSAgICAgICAgICAgICAgICB8MTA2Ni43MTgzMTIg
ICB8MTA4MC4yMzA3NzIgICB8MS4wMTI2NjcgIHwgMC41NDkzODIgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBNTCAgICAgICAgICAgICAgICAgICAg
ICAgIHwxMzkuNjE3MjkzICAgIHwxNDAuMDg4NjMwICAgIHwxLjAwMzM3NiAgfCAwLjY2MTY1MSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IHJlZ2V4
cCAgICAgICAgICAgICAgICAgICAgfDM1MS43NzM5NTYgICAgfDM1MS4wNzU5MzUgICAgfDAuOTk4
MDE2ICB8IDAuNzY5MjUwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
CisgICAgICAgIHwgY3J5cHRvICAgICAgICAgICAgICAgICAgICB8MTUxMC40NzQ2NjMgICB8MTUx
OS4yMTg4NDIgICB8MS4wMDU3ODkgIHwgMC42Mzg0MjAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBjcnlwdG8tbWQ1LVNQICAgICAgICAgICAgIHw3
OTUuNDQ3ODk5ICAgIHw3NzQuMDgyNDkzICAgIHwwLjk3MzE0MCAgfCAwLjA3OTcyOCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IGVhcmxleS1ib3ll
ciAgICAgICAgICAgICAgfDgxMi41NzQ1NDUgICAgfDg3MC42NzgzNzIgICAgfDEuMDcxNTA2ICB8
IDAuMDQ0MDgxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAg
ICAgIHwgb2N0YW5lLXpsaWIgICAgICAgICAgICAgICB8MjUuMTYyNDcwICAgICB8MjUuNjYwMjYx
ICAgICB8MS4wMTk3ODMgIHwgMC41NTQ1OTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwKKyAgICAgICAgfCBkYXRlLWZvcm1hdC10b2Z0ZS1TUCAgICAgIHwzOTUuMjk2
MTM1ICAgIHwzOTguMDA4OTkyICAgIHwxLjAwNjg2MyAgfCAwLjY1MDQ3NSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IG4tYm9keS1TUCAgICAgICAg
ICAgICAgICAgfDExNjUuMzg2NjExICAgfDExNTAuNTI1MTEwICAgfDAuOTg3MjQ4ICB8IDAuMjI3
OTA4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwg
cGRmanMgICAgICAgICAgICAgICAgICAgICB8MTg5LjA2MDI1MiAgICB8MTkxLjAxNTYyOCAgICB8
MS4wMTAzNDMgIHwgMC42MzM3NzcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwKKyAgICAgICAgfCBGbGlnaHRQbGFubmVyICAgICAgICAgICAgIHw5MDguNDI2MTkyICAg
IHw5MDMuNjM2NjQyICAgIHwwLjk5NDcyOCAgfCAwLjgzODgyMSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IHVnbGlmeS1qcy13dGIgICAgICAgICAg
ICAgfDM0LjAyOTM5OSAgICAgfDM0LjE2NDM0MiAgICAgfDEuMDAzOTY1ICB8IDAuNjU1NjUyICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgYmFieWxv
bi13dGIgICAgICAgICAgICAgICB8ODEuMzI5ODY5ICAgICB8ODAuODU1NjgwICAgICB8MC45OTQx
NzAgIHwgMC44NTQzOTMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwK
KyAgICAgICAgfCBzdGFuZm9yZC1jcnlwdG8tc2hhMjU2ICAgIHw4MjYuODUwNTMzICAgIHw4Mzgu
NDk0MTY0ICAgIHwxLjAxNDA4MiAgfCAwLjU3OTYzNiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfAorICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAgICAgYSBtZWFuID0gMjM3
LjkxMDg0CisgICAgICAgIGIgbWVhbiA9IDIzOS45MjY3MAorICAgICAgICBwVmFsdWUgPSAwLjA2
NTc3MTA4OTcKKyAgICAgICAgKEJpZ2dlciBtZWFucyBhcmUgYmV0dGVyLikKKyAgICAgICAgMS4w
MDggdGltZXMgYmV0dGVyCisgICAgICAgIFJlc3VsdHMgQVJFIE5PVCBzaWduaWZpY2FudAorCisg
ICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIu
aDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OnB1c2hUb1NhdmVCeXRlT2Zmc2V0KToK
KyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpwdXNoVG9TYXZlQnl0ZU9mZnNldCk6CisgICAgICAgICog
ZGZnL0RGR09TUkV4aXQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXQ6OmNvbXBpbGVF
eGl0KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpyZWlmeUlubGluZWRDYWxsRnJhbWVzKToKKyAgICAgICAgKiBkZmcvREZH
VGh1bmtzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpvc3JFeGl0R2VuZXJhdGlvblRodW5rR2Vu
ZXJhdG9yKToKKyAgICAgICAgKiBmdGwvRlRMU2F2ZVJlc3RvcmUuY3BwOgorICAgICAgICAoSlND
OjpGVEw6OnNhdmVBbGxSZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpGVEw6OnJlc3RvcmVBbGxS
ZWdpc3RlcnMpOgorICAgICAgICAqIGZ0bC9GVExTYXZlUmVzdG9yZS5oOgorICAgICAgICAqIGZ0
bC9GVExUaHVua3MuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmdlbmVyaWNHZW5lcmF0aW9uVGh1
bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpGVEw6OnNsb3dQYXRoQ2FsbFRodW5rR2VuZXJh
dG9yKToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6
QXNzZW1ibHlIZWxwZXJzOjpyZXN0b3JlQ2FsbGVlU2F2ZXNGcm9tRW50cnlGcmFtZUNhbGxlZVNh
dmVzQnVmZmVyKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpjb3B5Q2FsbGVlU2F2
ZXNUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlckltcGwpOgorICAgICAgICAoSlNDOjpBc3Nl
bWJseUhlbHBlcnM6OmVtaXRTYXZlKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpl
bWl0UmVzdG9yZSk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdFNhdmVDYWxs
ZWVTYXZlc0Zvcik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdFJlc3RvcmVD
YWxsZWVTYXZlc0Zvcik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6Y29weUxMSW50
QmFzZWxpbmVDYWxsZWVTYXZlc0Zyb21GcmFtZU9yUmVnaXN0ZXJUb0VudHJ5RnJhbWVDYWxsZWVT
YXZlc0J1ZmZlcik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdFNhdmVPckNv
cHlMTEludEJhc2VsaW5lQ2FsbGVlU2F2ZXNGb3IpOgorICAgICAgICAqIGppdC9Bc3NlbWJseUhl
bHBlcnMuaDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpjb3B5TExJbnRCYXNlbGlu
ZUNhbGxlZVNhdmVzRnJvbUZyYW1lT3JSZWdpc3RlclRvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVm
ZmVyKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0U2F2ZSk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdFJlc3RvcmUpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRTYXZlT3JDb3B5Q2FsbGVlU2F2ZXNG
b3IpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9TY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuY3Bw
OgorICAgICAgICAoSlNDOjpTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OnByZXNlcnZlUmV1c2Vk
UmVnaXN0ZXJzQnlQdXNoaW5nKToKKyAgICAgICAgKEpTQzo6U2NyYXRjaFJlZ2lzdGVyQWxsb2Nh
dG9yOjpyZXN0b3JlUmV1c2VkUmVnaXN0ZXJzQnlQb3BwaW5nKToKKyAgICAgICAgKEpTQzo6U2Ny
YXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpwcmVzZXJ2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKToK
KyAgICAgICAgKEpTQzo6U2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpyZXN0b3JlUmVnaXN0ZXJz
RnJvbVN0YWNrRm9yQ2FsbCk6CisgICAgICAgICogaml0L1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRv
ci5oOgorICAgICAgICAqIHdhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpT
Qzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OmFkZFJldHVybik6CisgICAgICAgICogd2FzbS9XYXNt
QjNJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmFk
ZFJldHVybik6CisKIDIwMjEtMDYtMTUgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0Bn
bm9tZS5vcmc+CiAKICAgICAgICAgLVdhcnJheS1ib3VuZHMgd2FybmluZyBpbiBQYWNrZWQuaApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjc4ODg2KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC03NTcsNiArNzU3LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hF
QQogICAgIGludGVycHJldGVyL1ZNRW50cnlSZWNvcmQuaAogCiAgICAgaml0L0Fzc2VtYmx5SGVs
cGVycy5oCisgICAgaml0L0Fzc2VtYmx5SGVscGVyc1Nwb29sZXJzLmgKICAgICBqaXQvQ0NhbGxI
ZWxwZXJzLmgKICAgICBqaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5oCiAgICAgaml0L0ZQUkluZm8u
aApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI3ODg4NikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQ4LDYgKzExNDgsNyBAQAogCQk2NUI4MzkyRTFC
QUNBRDM2MDA0NEU4MjQgLyogQ2FjaGVkUmVjb3ZlcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1QjgzOTJDMUJBQ0E5MkEwMDQ0RTgyNCAvKiBDYWNo
ZWRSZWNvdmVyeS5oICovOyB9OwogCQk2QTM4Q0ZBQTFFMzJCNUFCMDA2MDIwNkYgLyogQXN5bmNT
dGFja1RyYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA2QTM4Q0ZBODFFMzJCNThCMDA2MDIwNkYgLyogQXN5bmNTdGFja1RyYWNlLmggKi87IH07CiAJ
CTZBRDJDQjREMTlCOTE0MDEwMDA2NTcxOSAvKiBEZWJ1Z2dlckV2YWxFbmFibGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QUQyQ0I0QzE5QjkxNDAx
MDAwNjU3MTkgLyogRGVidWdnZXJFdmFsRW5hYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTZCNzY3RTdCMjY3OTFGMjcwMDE3RjhEMSAvKiBB
c3NlbWJseUhlbHBlcnNTcG9vbGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNkI3NjdFN0EyNjc5MUYyNzAwMTdGOEQxIC8qIEFzc2VtYmx5SGVscGVy
c1Nwb29sZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNkJDQ0VDMDQyNUQxRkEyNzAwMEYzOTFEIC8qIFZlcmlmaWVyU2xvdFZpc2l0b3JJbmxp
bmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QkND
RUMwMzI1RDFGQTI3MDAwRjM5MUQgLyogVmVyaWZpZXJTbG90VmlzaXRvcklubGluZXMuaCAqLzsg
fTsKIAkJNzAxMTNENEMxQThEQjA5MzAwMzg0OEM0IC8qIEl0ZXJhdG9yT3BlcmF0aW9ucy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzAxMTNENEExQThE
QjA5MzAwMzg0OEM0IC8qIEl0ZXJhdG9yT3BlcmF0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcwMTNDQThDMUI0OTFBOTQwMENBRTYxMyAv
KiBKU01pY3JvdGFzay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzAxM0NBOEExQjQ5MUE5NDAwQ0FFNjEzIC8qIEpTTWljcm90YXNrLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM5OTcsNiArMzk5OCw3
IEBACiAJCTZBMzhDRkE4MUUzMkI1OEIwMDYwMjA2RiAvKiBBc3luY1N0YWNrVHJhY2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXN5bmNTdGFja1RyYWNlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZBRDJDQjRDMTlCOTE0MDEwMDA2NTcxOSAvKiBEZWJ1Z2dl
ckV2YWxFbmFibGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlYnVnZ2Vy
RXZhbEVuYWJsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkI3MzFDQzAyNjQ3
QTgzNzAwMTQ2NDZGIC8qIFNsb3dQYXRoQ2FsbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTbG93
UGF0aENhbGwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2Qjc2N0U3QTI2Nzkx
RjI3MDAxN0Y4RDEgLyogQXNzZW1ibHlIZWxwZXJzU3Bvb2xlcnMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQXNzZW1ibHlIZWxwZXJzU3Bvb2xlcnMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNkJBOTNDOTU5MDQ4NEM1QkFEOTMxNkVBIC8qIEpTU2NyaXB0RmV0
Y2hlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NjcmlwdEZldGNoZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkJDQ0VDMDMyNUQxRkEyNzAwMEYzOTFE
IC8qIFZlcmlmaWVyU2xvdFZpc2l0b3JJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFZlcmlmaWVyU2xvdFZpc2l0b3JJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTcwMTEzRDQ5MUE4REIwOTMwMDM4NDhDNCAvKiBJdGVyYXRvck9wZXJhdGlv
bnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSXRlcmF0b3JPcGVy
YXRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYxOTcsNiArNjE5OSw3
IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQkwRjI0RTUzQjE3RUE5RjU5MDBBQkIyMTcgLyogQXNz
ZW1ibHlIZWxwZXJzLmNwcCAqLywKIAkJCQkwRjI0RTUzQzE3RUE5RjU5MDBBQkIyMTcgLyogQXNz
ZW1ibHlIZWxwZXJzLmggKi8sCisJCQkJNkI3NjdFN0EyNjc5MUYyNzAwMTdGOEQxIC8qIEFzc2Vt
Ymx5SGVscGVyc1Nwb29sZXJzLmggKi8sCiAJCQkJNzIzOTk4RjYyNjVEQkNEQjAwNTc4NjdGIC8q
IEJhc2VsaW5lSklUUGxhbi5jcHAgKi8sCiAJCQkJNzIzOTk4RjUyNjVEQkNEQjAwNTc4NjdGIC8q
IEJhc2VsaW5lSklUUGxhbi5oICovLAogCQkJCTBGNjRCMjZGMUE3ODRCQUYwMDZFNEU2NiAvKiBC
aW5hcnlTd2l0Y2guY3BwICovLApAQCAtOTE1MSw2ICs5MTU0LDcgQEAKIAkJCQlGRTkxMkI1MTI1
MzExQUQxMDBGQUJEREYgLyogQWJzdHJhY3RTbG90VmlzaXRvcklubGluZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTUzNEUwMzRFMUU0RDRCMTYwMDIxM0Y2NCAvKiBBY2Nlc3NDYXNlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlFM0JGRDBCQzFEQUY4MDhFMDA2NURFQTIgLyogQWNjZXNzQ2FzZVNuaXBw
ZXRQYXJhbXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTZCNzY3RTdCMjY3OTFGMjcwMDE3RjhEMSAv
KiBBc3NlbWJseUhlbHBlcnNTcG9vbGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTM3MEI0RjYx
QkYyNjIwNTAwNUM0MEZDIC8qIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2lu
dEJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTkxNjhCRDg3MjQ0N0JBNEUwMDgwRkZCNCAvKiBB
Z2dyZWdhdGVFcnJvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTE4RTE1QzMyNDQ3QjIyNzAwNDQ3
QTU2IC8qIEFnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAko
cmV2aXNpb24gMjc4ODg2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMzcsNyArMzM3LDcgQEAgcHVibGljOgog
ICAgICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKHNpemVvZihkb3VibGUpKSwgc3RhY2tQb2ludGVy
UmVnaXN0ZXIpOwogICAgIH0KICAgICAKLSAgICBzdGF0aWMgcHRyZGlmZl90IHB1c2hUb1NhdmVC
eXRlT2Zmc2V0KCkgeyByZXR1cm4gc2l6ZW9mKHZvaWQqKTsgfQorICAgIHN0YXRpYyBjb25zdGV4
cHIgcHRyZGlmZl90IHB1c2hUb1NhdmVCeXRlT2Zmc2V0KCkgeyByZXR1cm4gc2l6ZW9mKHZvaWQq
KTsgfQogI2VuZGlmIC8vICFDUFUoQVJNNjQpCiAKICNpZiBDUFUoWDg2XzY0KSB8fCBDUFUoQVJN
NjQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
QVJNNjQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyQVJNNjQuaAkocmV2aXNpb24gMjc4ODg2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTI1MDQsNyArMjUwNCw3IEBAIHB1YmxpYzoKICAgICAgICAgc3RvcmVEb3VibGUoc3JjLCBzdGFj
a1BvaW50ZXJSZWdpc3Rlcik7CiAgICAgfQogCi0gICAgc3RhdGljIHB0cmRpZmZfdCBwdXNoVG9T
YXZlQnl0ZU9mZnNldCgpIHsgcmV0dXJuIDE2OyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBwdHJk
aWZmX3QgcHVzaFRvU2F2ZUJ5dGVPZmZzZXQoKSB7IHJldHVybiAxNjsgfQogCiAgICAgLy8gUmVn
aXN0ZXIgbW92ZSBvcGVyYXRpb25zOgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09TUkV4aXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT1NSRXhpdC5jcHAJKHJldmlzaW9uIDI3ODg4NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT1NSRXhpdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIAog
I2lmIEVOQUJMRShERkdfSklUKQogCi0jaW5jbHVkZSAiQXNzZW1ibHlIZWxwZXJzLmgiCisjaW5j
bHVkZSAiQXNzZW1ibHlIZWxwZXJzU3Bvb2xlcnMuaCIKICNpbmNsdWRlICJCeXRlY29kZVN0cnVj
dHMuaCIKICNpbmNsdWRlICJDaGVja3BvaW50T1NSRXhpdFNpZGVTdGF0ZS5oIgogI2luY2x1ZGUg
IkRGR0dyYXBoLmgiCkBAIC01NjIsMTMgKzU2MiwxOSBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVF
eGl0KENDYWxsSGVscGVycyYgCiAgICAgLy8gZG8gdGhpcyBldmVuIGZvciBzdGF0ZSB0aGF0J3Mg
YWxyZWFkeSBpbiB0aGUgcmlnaHQgcGxhY2Ugb24gdGhlIHN0YWNrLgogICAgIC8vIEl0IG1ha2Vz
IHRoaW5ncyBzaW1wbGVyIGxhdGVyLgogCisgICAgYm9vbCBpbmxpbmVTdGFja0NvbnRhaW5zQWN0
aXZlQ2hlY2twb2ludCA9IGV4aXQubV9jb2RlT3JpZ2luLmlubGluZVN0YWNrQ29udGFpbnNBY3Rp
dmVDaGVja3BvaW50KCk7CisgICAgc2l6ZV90IGZpcnN0VG1wVG9SZXN0b3JlRWFybHkgPSBvcGVy
YW5kcy5zaXplKCkgLSBvcGVyYW5kcy5udW1iZXJPZlRtcHMoKTsKKyAgICBpZiAoIWlubGluZVN0
YWNrQ29udGFpbnNBY3RpdmVDaGVja3BvaW50KQorICAgICAgICBmaXJzdFRtcFRvUmVzdG9yZUVh
cmx5ID0gb3BlcmFuZHMuc2l6ZSgpOyAvLyBEb24ndCBlYWdlcmx5IHJlc3RvcmUuCisKICAgICAv
LyBUaGUgdGFnIHJlZ2lzdGVycyBhcmUgbmVlZGVkIHRvIG1hdGVyaWFsaXplIHJlY292ZXJpZXMg
YmVsb3cuCiAgICAgaml0LmVtaXRNYXRlcmlhbGl6ZVRhZ0NoZWNrUmVnaXN0ZXJzKCk7CiAKICAg
ICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgb3BlcmFuZHMuc2l6ZSgpOyArK2luZGV4
KSB7CiAgICAgICAgIGNvbnN0IFZhbHVlUmVjb3ZlcnkmIHJlY292ZXJ5ID0gb3BlcmFuZHNbaW5k
ZXhdOwogCi0gICAgICAgIHN3aXRjaCAocmVjb3ZlcnkudGVjaG5pcXVlKCkpIHsKKyAgICAgICAg
YXV0byBjdXJyZW50VGVjaG5pcXVlID0gcmVjb3ZlcnkudGVjaG5pcXVlKCk7CisgICAgICAgIHN3
aXRjaCAoY3VycmVudFRlY2huaXF1ZSkgewogICAgICAgICBjYXNlIERpc3BsYWNlZEluSlNTdGFj
azoKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBjYXNlIENlbGxEaXNwbGFjZWRJbkpTU3Rh
Y2s6CkBAIC01OTQsOSArNjAwLDEyIEBAIHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxI
ZWxwZXJzJiAKIAogICAgICAgICBjYXNlIENvbnN0YW50OiB7CiAjaWYgVVNFKEpTVkFMVUU2NCkK
LSAgICAgICAgICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTY0KEpTVmFs
dWU6OmVuY29kZShyZWNvdmVyeS5jb25zdGFudCgpKSksIEdQUkluZm86OnJlZ1QwKTsKLSAgICAg
ICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBzY3JhdGNoICsgaW5kZXgpOwotI2Vs
c2UKKyAgICAgICAgICAgIGlmIChpbmRleCA+PSBmaXJzdFRtcFRvUmVzdG9yZUVhcmx5KSB7Cisg
ICAgICAgICAgICAgICAgQVNTRVJUKG9wZXJhbmRzLm9wZXJhbmRGb3JJbmRleChpbmRleCkuaXNU
bXAoKSk7CisgICAgICAgICAgICAgICAgaml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVk
SW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKHJlY292ZXJ5LmNvbnN0YW50KCkpKSwgR1BSSW5mbzo6cmVn
VDApOworICAgICAgICAgICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBzY3JhdGNo
ICsgaW5kZXgpOworICAgICAgICAgICAgfQorI2Vsc2UgLy8gbm90IFVTRShKU1ZBTFVFNjQpCiAg
ICAgICAgICAgICBqaXQuc3RvcmUzMigKICAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6
OlRydXN0ZWRJbW0zMihyZWNvdmVyeS5jb25zdGFudCgpLnRhZygpKSwKICAgICAgICAgICAgICAg
ICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgp
LT5hc0JpdHMudGFnKTsKQEAgLTc2Niw3ICs3NzUsNyBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVF
eGl0KENDYWxsSGVscGVycyYgCiAgICAgaWYgKGV4aXQuaXNFeGNlcHRpb25IYW5kbGVyKCkpCiAg
ICAgICAgIGppdC5jb3B5Q2FsbGVlU2F2ZXNUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcih2
bS50b3BFbnRyeUZyYW1lKTsKIAotICAgIGlmIChleGl0Lm1fY29kZU9yaWdpbi5pbmxpbmVTdGFj
a0NvbnRhaW5zQWN0aXZlQ2hlY2twb2ludCgpKSB7CisgICAgaWYgKGlubGluZVN0YWNrQ29udGFp
bnNBY3RpdmVDaGVja3BvaW50KSB7CiAgICAgICAgIEVuY29kZWRKU1ZhbHVlKiB0bXBTY3JhdGNo
ID0gc2NyYXRjaCArIG9wZXJhbmRzLnRtcEluZGV4KDApOwogICAgICAgICBqaXQuc2V0dXBBcmd1
bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uTWF0ZXJpYWxpemVPU1JFeGl0U2lkZVN0YXRlKT4oJnZt
LCAmZXhpdCwgdG1wU2NyYXRjaCk7CiAgICAgICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2
bSk7CkBAIC03NzYsNiArNzg1LDE2IEBAIHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxI
ZWxwZXJzJiAKIAogICAgIC8vIERvIGFsbCBkYXRhIGZvcm1hdCBjb252ZXJzaW9ucyBhbmQgc3Rv
cmUgdGhlIHJlc3VsdHMgaW50byB0aGUgc3RhY2suCiAKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAg
IGNvbnN0ZXhwciBHUFJSZWcgc3JjQnVmZmVyR1BSID0gR1BSSW5mbzo6cmVnVDI7CisgICAgY29u
c3RleHByIEdQUlJlZyBkZXN0QnVmZmVyR1BSID0gR1BSSW5mbzo6cmVnVDM7CisgICAgY29uc3Rl
eHByIEdQUlJlZyB1bmRlZmluZWRHUFIgPSBHUFJJbmZvOjpyZWdUNDsKKyAgICBib29sIHVuZGVm
aW5lZEdQUklzSW5pdGlhbGl6ZWQgPSBmYWxzZTsKKworICAgIGppdC5tb3ZlKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbVB0cihzY3JhdGNoKSwgc3JjQnVmZmVyR1BSKTsKKyAgICBqaXQubW92ZShD
Q2FsbEhlbHBlcnM6OmZyYW1lUG9pbnRlclJlZ2lzdGVyLCBkZXN0QnVmZmVyR1BSKTsKKyAgICBD
Q2FsbEhlbHBlcnM6OkNvcHlTcG9vbGVyIHNwb29sZXIoQ0NhbGxIZWxwZXJzOjpDb3B5U3Bvb2xl
cjo6QnVmZmVyUmVnczo6QWxsb3dNb2RpZmljYXRpb24sIGppdCwgc3JjQnVmZmVyR1BSLCBkZXN0
QnVmZmVyR1BSLCBHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDEpOworI2VuZGlmCiAgICAg
Zm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG9wZXJhbmRzLnNpemUoKTsgKytpbmRleCkg
ewogICAgICAgICBjb25zdCBWYWx1ZVJlY292ZXJ5JiByZWNvdmVyeSA9IG9wZXJhbmRzW2luZGV4
XTsKICAgICAgICAgT3BlcmFuZCBvcGVyYW5kID0gb3BlcmFuZHMub3BlcmFuZEZvckluZGV4KGlu
ZGV4KTsKQEAgLTc4Niw2ICs4MDUsMjMgQEAgdm9pZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2Fs
bEhlbHBlcnMmIAogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgc3dpdGNoIChyZWNv
dmVyeS50ZWNobmlxdWUoKSkgeworICAgICAgICBjYXNlIENvbnN0YW50OiB7CisjaWYgVVNFKEpT
VkFMVUU2NCkKKyAgICAgICAgICAgIEVuY29kZWRKU1ZhbHVlIGN1cnJlbnRDb25zdGFudCA9IEpT
VmFsdWU6OmVuY29kZShyZWNvdmVyeS5jb25zdGFudCgpKTsKKyAgICAgICAgICAgIGlmIChjdXJy
ZW50Q29uc3RhbnQgPT0gZW5jb2RlZEpTVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoIXVuZGVmaW5lZEdQUklzSW5pdGlhbGl6ZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgaml0
Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQoZW5jb2RlZEpTVW5kZWZpbmVkKCkpLCB1
bmRlZmluZWRHUFIpOworICAgICAgICAgICAgICAgICAgICB1bmRlZmluZWRHUFJJc0luaXRpYWxp
emVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgc3Bvb2xlci5j
b3B5R1BSKHVuZGVmaW5lZEdQUik7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAg
ICBzcG9vbGVyLm1vdmVDb25zdGFudChjdXJyZW50Q29uc3RhbnQpOworICAgICAgICAgICAgc3Bv
b2xlci5zdG9yZUdQUihvcGVyYW5kLnZpcnR1YWxSZWdpc3RlcigpLm9mZnNldCgpICogc2l6ZW9m
KENQVVJlZ2lzdGVyKSk7CisgICAgICAgICAgICBicmVhazsKKyNlbHNlCisgICAgICAgICAgICBG
QUxMVEhST1VHSDsKKyNlbmRpZgorICAgICAgICB9CiAgICAgICAgIGNhc2UgRGlzcGxhY2VkSW5K
U1N0YWNrOgogICAgICAgICBjYXNlIEJvb2xlYW5EaXNwbGFjZWRJbkpTU3RhY2s6CiAgICAgICAg
IGNhc2UgSW50MzJEaXNwbGFjZWRJbkpTU3RhY2s6CkBAIC03OTUsNyArODMxLDYgQEAgdm9pZCBP
U1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIAogICAgICAgICBjYXNlIFVuYm94ZWRJ
bnQzMkluR1BSOgogICAgICAgICBjYXNlIFVuYm94ZWRDZWxsSW5HUFI6CiAgICAgICAgIGNhc2Ug
VW5ib3hlZERvdWJsZUluRlBSOgotICAgICAgICBjYXNlIENvbnN0YW50OgogICAgICAgICBjYXNl
IEluRlBSOgogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIGNhc2UgSW5HUFI6CkBAIC04MDMs
OCArODM4LDggQEAgdm9pZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIAogICAg
ICAgICBjYXNlIEludDUyRGlzcGxhY2VkSW5KU1N0YWNrOgogICAgICAgICBjYXNlIFVuYm94ZWRT
dHJpY3RJbnQ1MkluR1BSOgogICAgICAgICBjYXNlIFN0cmljdEludDUyRGlzcGxhY2VkSW5KU1N0
YWNrOgotICAgICAgICAgICAgaml0LmxvYWQ2NChzY3JhdGNoICsgaW5kZXgsIEdQUkluZm86OnJl
Z1QwKTsKLSAgICAgICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBBc3NlbWJseUhl
bHBlcnM6OmFkZHJlc3NGb3Iob3BlcmFuZCkpOworICAgICAgICAgICAgc3Bvb2xlci5sb2FkR1BS
KGluZGV4ICogc2l6ZW9mKENQVVJlZ2lzdGVyKSk7CisgICAgICAgICAgICBzcG9vbGVyLnN0b3Jl
R1BSKG9wZXJhbmQudmlydHVhbFJlZ2lzdGVyKCkub2Zmc2V0KCkgKiBzaXplb2YoQ1BVUmVnaXN0
ZXIpKTsKICAgICAgICAgICAgIGJyZWFrOwogI2Vsc2UgLy8gbm90IFVTRShKU1ZBTFVFNjQpCiAg
ICAgICAgIGNhc2UgSW5QYWlyOgpAQCAtODMzLDYgKzg2OCw5IEBAIHZvaWQgT1NSRXhpdDo6Y29t
cGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiAKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgfQorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgc3Bvb2xlci5mbHVzaEdQUigpOworI2VuZGlm
CiAKICAgICAvLyBOb3cgdGhhdCB0aGluZ3Mgb24gdGhlIHN0YWNrIGFyZSByZWNvdmVyZWQsIGRv
IHRoZSBhcmd1bWVudHMgcmVjb3ZlcnkuIFdlIGFzc3VtZSB0aGF0IGFyZ3VtZW50cwogICAgIC8v
IHJlY292ZXJpZXMgZG9uJ3QgcmVjdXJzaXZlbHkgcmVmZXIgdG8gZWFjaCBvdGhlci4gQnV0LCB3
ZSBkb24ndCB0cnkgdG8gYXNzdW1lIHRoYXQgdGhleSBvbmx5CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCShy
ZXZpc2lvbiAyNzg4ODYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRD
b21waWxlckNvbW1vbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4NCw3ICsyODQsNyBAQCB2b2lk
IHJlaWZ5SW5saW5lZENhbGxGcmFtZXMoQ0NhbGxIZWxwZXJzCiAgICAgICAgICAgICBqaXQuYWRk
UHRyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKHNpemVvZihDYWxsZXJGcmFtZUFuZFBD
KSksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjpyZWdUMik7CiAgICAgICAg
ICAgICBqaXQudW50YWdQdHIoR1BSSW5mbzo6cmVnVDIsIEdQUkluZm86OnJlZ1QzKTsKICAgICAg
ICAgICAgIGppdC5hZGRQdHIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoaW5saW5lQ2Fs
bEZyYW1lLT5yZXR1cm5QQ09mZnNldCgpICsgc2l6ZW9mKHZvaWQqKSksIEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjpyZWdUMik7Ci0gICAgICAgICAgICBqaXQudmFsaWRhdGVV
bnRhZ2dlZFB0cihHUFJJbmZvOjpyZWdUMywgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgICAg
ICAgICBqaXQudmFsaWRhdGVVbnRhZ2dlZFB0cihHUFJJbmZvOjpyZWdUMywgR1BSSW5mbzo6cmVn
VDQpOwogICAgICAgICAgICAgaml0LnRhZ1B0cihHUFJJbmZvOjpyZWdUMiwgR1BSSW5mbzo6cmVn
VDMpOwogI2VuZGlmCiAgICAgICAgICAgICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6cmVnVDMsIEFz
c2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvckJ5dGVPZmZzZXQoaW5saW5lQ2FsbEZyYW1lLT5yZXR1
cm5QQ09mZnNldCgpKSk7CkBAIC0zMDUsOSArMzA1LDkgQEAgdm9pZCByZWlmeUlubGluZWRDYWxs
RnJhbWVzKENDYWxsSGVscGVycwogCiAjaWYgQ1BVKEFSTTY0RSkKICAgICAgICAgICAgIGppdC5h
ZGRQdHIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoaW5saW5lQ2FsbEZyYW1lLT5yZXR1
cm5QQ09mZnNldCgpICsgc2l6ZW9mKHZvaWQqKSksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
LCBHUFJJbmZvOjpyZWdUMik7Ci0gICAgICAgICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIoanVtcFRhcmdldC51bnRhZ2dlZEV4ZWN1dGFibGVBZGRyZXNzKCkpLCBH
UFJJbmZvOjpub25BcmdHUFIwKTsKLSAgICAgICAgICAgIGppdC50YWdQdHIoR1BSSW5mbzo6cmVn
VDIsIEdQUkluZm86Om5vbkFyZ0dQUjApOwotICAgICAgICAgICAgaml0LnN0b3JlUHRyKEdQUklu
Zm86Om5vbkFyZ0dQUjAsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvckJ5dGVPZmZzZXQoaW5s
aW5lQ2FsbEZyYW1lLT5yZXR1cm5QQ09mZnNldCgpKSk7CisgICAgICAgICAgICBqaXQubW92ZShB
c3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoanVtcFRhcmdldC51bnRhZ2dlZEV4ZWN1dGFi
bGVBZGRyZXNzKCkpLCBHUFJJbmZvOjpyZWdUNCk7CisgICAgICAgICAgICBqaXQudGFnUHRyKEdQ
UkluZm86OnJlZ1QyLCBHUFJJbmZvOjpyZWdUNCk7CisgICAgICAgICAgICBqaXQuc3RvcmVQdHIo
R1BSSW5mbzo6cmVnVDQsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvckJ5dGVPZmZzZXQoaW5s
aW5lQ2FsbEZyYW1lLT5yZXR1cm5QQ09mZnNldCgpKSk7CiAjZWxzZQogICAgICAgICAgICAgaml0
LnN0b3JlUHRyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cihqdW1wVGFyZ2V0LnVudGFn
Z2VkRXhlY3V0YWJsZUFkZHJlc3MoKSksIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvckJ5dGVP
ZmZzZXQoaW5saW5lQ2FsbEZyYW1lLT5yZXR1cm5QQ09mZnNldCgpKSk7CiAjZW5kaWYKQEAgLTMx
OCwxMSArMzE4LDExIEBAIHZvaWQgcmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyhDQ2FsbEhlbHBlcnMK
ICAgICAgICAgLy8gUmVzdG9yZSB0aGUgaW5saW5lIGNhbGwgZnJhbWUncyBjYWxsZWUgc2F2ZSBy
ZWdpc3RlcnMuCiAgICAgICAgIC8vIElmIHRoaXMgaW5saW5lZCBmcmFtZSBpcyBhIHRhaWwgY2Fs
bCB0aGF0IHdpbGwgcmV0dXJuIGJhY2sgdG8gdGhlIG9yaWdpbmFsIGNhbGxlciwgd2UgbmVlZCB0
bwogICAgICAgICAvLyBjb3B5IHRoZSBwcmlvciBjb250ZW50cyBvZiB0aGUgdGFnIHJlZ2lzdGVy
cyBhbHJlYWR5IHNhdmVkIGZvciB0aGUgb3V0ZXIgZnJhbWUgdG8gdGhpcyBmcmFtZS4KLSAgICAg
ICAgaml0LmVtaXRTYXZlT3JDb3B5Q2FsbGVlU2F2ZXNGb3IoCisgICAgICAgIGppdC5lbWl0U2F2
ZU9yQ29weUxMSW50QmFzZWxpbmVDYWxsZWVTYXZlc0ZvcigKICAgICAgICAgICAgIGJhc2VsaW5l
Q29kZUJsb2NrLAogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8VmlydHVhbFJlZ2lzdGVyPihpbmxp
bmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0KSwKICAgICAgICAgICAgIHRydWVDYWxsZXIgPyBBc3Nl
bWJseUhlbHBlcnM6OlVzZUV4aXN0aW5nVGFnUmVnaXN0ZXJDb250ZW50cyA6IEFzc2VtYmx5SGVs
cGVyczo6Q29weUJhc2VsaW5lQ2FsbGVlU2F2ZWRSZWdpc3RlcnNGcm9tQmFzZUZyYW1lLAotICAg
ICAgICAgICAgR1BSSW5mbzo6cmVnVDIpOworICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDIsIEdQ
UkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUNCk7CiAKICAgICAgICAgaWYgKGNhbGxlcklzTExJ
bnQpIHsKICAgICAgICAgICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2tGb3JDYWxsZXIg
PSBqaXQuYmFzZWxpbmVDb2RlQmxvY2tGb3IoKnRydWVDYWxsZXIpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmNwcAkocmV2aXNpb24gMjc4ODg2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2
ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoREZHX0pJVCkKIAorI2luY2x1ZGUgIkFzc2VtYmx5SGVs
cGVyc1Nwb29sZXJzLmgiCiAjaW5jbHVkZSAiQ0NhbGxIZWxwZXJzLmgiCiAjaW5jbHVkZSAiREZH
SklUQ29kZS5oIgogI2luY2x1ZGUgIkRGR09TUkV4aXQuaCIKQEAgLTQ5LDM0ICs1MCw3MyBAQCBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IG9zCiAgICAgc2l6ZV90IHNjcmF0
Y2hTaXplID0gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAqIChHUFJJbmZvOjpudW1iZXJPZlJlZ2lz
dGVycyArIEZQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzKTsKICAgICBTY3JhdGNoQnVmZmVyKiBz
Y3JhdGNoQnVmZmVyID0gdm0uc2NyYXRjaEJ1ZmZlckZvclNpemUoc2NyYXRjaFNpemUpOwogICAg
IEVuY29kZWRKU1ZhbHVlKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxFbmNvZGVkSlNWYWx1ZSo+KHNj
cmF0Y2hCdWZmZXItPmRhdGFCdWZmZXIoKSk7Ci0gICAgCi0gICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyArK2kpIHsKKworI2lmIENQVShBUk02
NCkKKyAgICBjb25zdGV4cHIgR1BSUmVnIGJ1ZmZlckdQUiA9IENDYWxsSGVscGVyczo6bWVtb3J5
VGVtcFJlZ2lzdGVyOworICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBmaXJzdEdQUiA9IDA7CisjZWxp
ZiBDUFUoWDg2XzY0KQorICAgIEdQUlJlZyBidWZmZXJHUFIgPSBqaXQuc2NyYXRjaFJlZ2lzdGVy
KCk7CisgICAgY29uc3RleHByIHVuc2lnbmVkIGZpcnN0R1BSID0gMDsKKyNlbHNlCisgICAgR1BS
UmVnIGJ1ZmZlckdQUiA9IEdQUkluZm86OnRvUmVnaXN0ZXIoMCk7CisgICAgY29uc3RleHByIHVu
c2lnbmVkIGZpcnN0R1BSID0gMTsKKyNlbmRpZgorCisgICAgaWYgY29uc3RleHByIChmaXJzdEdQ
UikgeworICAgICAgICAvLyBXZSdyZSB1c2luZyB0aGUgZmlyc3RHUFIgYXMgdGhlIGJ1ZmZlckdQ
UiwgYW5kIG5lZWQgdG8gc2F2ZSBpdCBtYW51YWxseS4KKyAgICAgICAgUkVMRUFTRV9BU1NFUlQo
R1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgPj0gMSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGJ1ZmZlckdQUiA9PSBHUFJJbmZvOjp0b1JlZ2lzdGVyKDApKTsKICNpZiBVU0UoSlNWQUxVRTY0
KQotICAgICAgICBqaXQuc3RvcmU2NChHUFJJbmZvOjp0b1JlZ2lzdGVyKGkpLCBidWZmZXIgKyBp
KTsKKyAgICAgICAgaml0LnN0b3JlNjQoYnVmZmVyR1BSLCBidWZmZXIpOwogI2Vsc2UKLSAgICAg
ICAgaml0LnN0b3JlMzIoR1BSSW5mbzo6dG9SZWdpc3RlcihpKSwgYnVmZmVyICsgaSk7CisgICAg
ICAgIGppdC5zdG9yZTMyKGJ1ZmZlckdQUiwgYnVmZmVyKTsKICNlbmRpZgogICAgIH0KKworICAg
IGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihidWZmZXIpLCBidWZmZXJHUFIp
OworCisgICAgQ0NhbGxIZWxwZXJzOjpTdG9yZVJlZ1Nwb29sZXIgc3RvcmVTcG9vbGVyKGppdCwg
YnVmZmVyR1BSKTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IGZpcnN0R1BSOyBpIDwgR1BSSW5m
bzo6bnVtYmVyT2ZSZWdpc3RlcnM7ICsraSkgeworICAgICAgICBwdHJkaWZmX3Qgb2Zmc2V0ID0g
aSAqIHNpemVvZihDUFVSZWdpc3Rlcik7CisgICAgICAgIHN0b3JlU3Bvb2xlci5zdG9yZUdQUih7
IEdQUkluZm86OnRvUmVnaXN0ZXIoaSksIG9mZnNldCB9KTsKKyAgICB9CisgICAgc3RvcmVTcG9v
bGVyLmZsdXNoR1BSKCk7CisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgRlBSSW5mbzo6
bnVtYmVyT2ZSZWdpc3RlcnM7ICsraSkgewotICAgICAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbVB0cihidWZmZXIgKyBHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyArIGkp
LCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgIGppdC5zdG9yZURvdWJsZShGUFJJbmZvOjp0b1Jl
Z2lzdGVyKGkpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCkpOworICAg
ICAgICBwdHJkaWZmX3Qgb2Zmc2V0ID0gKEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzICsgaSkg
KiBzaXplb2YoZG91YmxlKTsKKyAgICAgICAgc3RvcmVTcG9vbGVyLnN0b3JlRlBSKHsgRlBSSW5m
bzo6dG9SZWdpc3RlcihpKSwgb2Zmc2V0IH0pOwogICAgIH0KLSAgICAKKyAgICBzdG9yZVNwb29s
ZXIuZmx1c2hGUFIoKTsKKwogICAgIC8vIFNldCB1cCBvbmUgYXJndW1lbnQuCiAgICAgaml0Lm1v
dmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAg
ICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKIAogICAgIE1hY3JvQXNzZW1ibGVyOjpD
YWxsIGZ1bmN0aW9uQ2FsbCA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7CiAKKyAgICBqaXQu
bW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoYnVmZmVyKSwgYnVmZmVyR1BSKTsKKyAg
ICBDQ2FsbEhlbHBlcnM6OkxvYWRSZWdTcG9vbGVyIGxvYWRsU3Bvb2xlcihqaXQsIGJ1ZmZlckdQ
Uik7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBmaXJzdEdQUjsgaSA8IEdQUkluZm86Om51bWJl
ck9mUmVnaXN0ZXJzOyArK2kpIHsKKyAgICAgICAgcHRyZGlmZl90IG9mZnNldCA9IGkgKiBzaXpl
b2YoQ1BVUmVnaXN0ZXIpOworICAgICAgICBsb2FkbFNwb29sZXIubG9hZEdQUih7IEdQUkluZm86
OnRvUmVnaXN0ZXIoaSksIG9mZnNldCB9KTsKKyAgICB9CisgICAgbG9hZGxTcG9vbGVyLmZsdXNo
R1BSKCk7CisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgRlBSSW5mbzo6bnVtYmVyT2ZS
ZWdpc3RlcnM7ICsraSkgewotICAgICAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbVB0cihidWZmZXIgKyBHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyArIGkpLCBHUFJJbmZv
OjpyZWdUMCk7Ci0gICAgICAgIGppdC5sb2FkRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KEdQUkluZm86OnJlZ1QwKSwgRlBSSW5mbzo6dG9SZWdpc3RlcihpKSk7CisgICAgICAgIHB0cmRp
ZmZfdCBvZmZzZXQgPSAoR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgKyBpKSAqIHNpemVvZihk
b3VibGUpOworICAgICAgICBsb2FkbFNwb29sZXIubG9hZEZQUih7IEZQUkluZm86OnRvUmVnaXN0
ZXIoaSksIG9mZnNldCB9KTsKICAgICB9Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEdQ
UkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyArK2kpIHsKKyAgICBsb2FkbFNwb29sZXIuZmx1c2hG
UFIoKTsKKworICAgIGlmIGNvbnN0ZXhwciAoZmlyc3RHUFIpIHsKKyAgICAgICAgLy8gV2UncmUg
dXNpbmcgdGhlIGZpcnN0R1BSIGFzIHRoZSBidWZmZXJHUFIsIGFuZCBuZWVkIHRvIHJlc3RvcmUg
aXQgbWFudWFsbHkuCisgICAgICAgIEFTU0VSVChidWZmZXJHUFIgPT0gR1BSSW5mbzo6dG9SZWdp
c3RlcigwKSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgaml0LmxvYWQ2NChidWZmZXIg
KyBpLCBHUFJJbmZvOjp0b1JlZ2lzdGVyKGkpKTsKKyAgICAgICAgaml0LmxvYWQ2NChidWZmZXIs
IGJ1ZmZlckdQUik7CiAjZWxzZQotICAgICAgICBqaXQubG9hZDMyKGJ1ZmZlciArIGksIEdQUklu
Zm86OnRvUmVnaXN0ZXIoaSkpOworICAgICAgICBqaXQubG9hZDMyKGJ1ZmZlciwgYnVmZmVyR1BS
KTsKICNlbmRpZgogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExT
YXZlUmVzdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExTYXZlUmVzdG9yZS5jcHAJKHJldmlzaW9uIDI3ODg4NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMU2F2ZVJlc3RvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDkgKzI4
LDEwIEBACiAKICNpZiBFTkFCTEUoRlRMX0pJVCkKIAorI2luY2x1ZGUgIkFzc2VtYmx5SGVscGVy
c1Nwb29sZXJzLmgiCiAjaW5jbHVkZSAiRlBSSW5mby5oIgogI2luY2x1ZGUgIkdQUkluZm8uaCIK
LSNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgorI2luY2x1ZGUgIlJlZy5oIgogI2luY2x1ZGUg
IlJlZ2lzdGVyU2V0LmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKQEAgLTc3
LDcwICs3OCwxMDQgQEAgc3RydWN0IFJlZ3MgewogICAgIHsKICAgICAgICAgc3BlY2lhbCA9IFJl
Z2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpOwogICAgICAgICBzcGVjaWFsLm1lcmdlKFJlZ2lz
dGVyU2V0OjpyZXNlcnZlZEhhcmR3YXJlUmVnaXN0ZXJzKCkpOwotICAgICAgICAKKwogICAgICAg
ICBmaXJzdCA9IE1hY3JvQXNzZW1ibGVyOjpmaXJzdFJlZ2lzdGVyKCk7CiAgICAgICAgIHdoaWxl
IChzcGVjaWFsLmdldChmaXJzdCkpCiAgICAgICAgICAgICBmaXJzdCA9IE1hY3JvQXNzZW1ibGVy
OjpuZXh0UmVnaXN0ZXIoZmlyc3QpOwotICAgICAgICBzZWNvbmQgPSBNYWNyb0Fzc2VtYmxlcjo6
bmV4dFJlZ2lzdGVyKGZpcnN0KTsKLSAgICAgICAgd2hpbGUgKHNwZWNpYWwuZ2V0KHNlY29uZCkp
Ci0gICAgICAgICAgICBzZWNvbmQgPSBNYWNyb0Fzc2VtYmxlcjo6bmV4dFJlZ2lzdGVyKHNlY29u
ZCk7CiAgICAgfQotICAgIAorCisgICAgR1BSUmVnIG5leHRSZWdpc3RlcihHUFJSZWcgY3VycmVu
dCkKKyAgICB7CisgICAgICAgIGF1dG8gbmV4dCA9IE1hY3JvQXNzZW1ibGVyOjpuZXh0UmVnaXN0
ZXIoY3VycmVudCk7CisgICAgICAgIHdoaWxlIChzcGVjaWFsLmdldChuZXh0KSkKKyAgICAgICAg
ICAgIG5leHQgPSBNYWNyb0Fzc2VtYmxlcjo6bmV4dFJlZ2lzdGVyKG5leHQpOworICAgICAgICBy
ZXR1cm4gbmV4dDsKKyAgICB9CisKKyAgICBGUFJSZWcgbmV4dEZQUmVnaXN0ZXIoRlBSUmVnIGN1
cnJlbnQpCisgICAgeworICAgICAgICBhdXRvIG5leHQgPSBNYWNyb0Fzc2VtYmxlcjo6bmV4dEZQ
UmVnaXN0ZXIoY3VycmVudCk7CisgICAgICAgIHdoaWxlIChzcGVjaWFsLmdldChuZXh0KSkKKyAg
ICAgICAgICAgIG5leHQgPSBNYWNyb0Fzc2VtYmxlcjo6bmV4dEZQUmVnaXN0ZXIobmV4dCk7Cisg
ICAgICAgIHJldHVybiBuZXh0OworICAgIH0KKwogICAgIFJlZ2lzdGVyU2V0IHNwZWNpYWw7CiAg
ICAgR1BSUmVnIGZpcnN0OwotICAgIEdQUlJlZyBzZWNvbmQ7CiB9OwogCiB9IC8vIGFub255bW91
cyBuYW1lc3BhY2UKIAotdm9pZCBzYXZlQWxsUmVnaXN0ZXJzKE1hY3JvQXNzZW1ibGVyJiBqaXQs
IGNoYXIqIHNjcmF0Y2hNZW1vcnkpCit2b2lkIHNhdmVBbGxSZWdpc3RlcnMoQXNzZW1ibHlIZWxw
ZXJzJiBqaXQsIGNoYXIqIHNjcmF0Y2hNZW1vcnkpCiB7CiAgICAgUmVncyByZWdzOwogICAgIAog
ICAgIC8vIEdldCB0aGUgZmlyc3QgcmVnaXN0ZXIgb3V0IG9mIHRoZSB3YXksIHNvIHRoYXQgd2Ug
Y2FuIHVzZSBpdCBhcyBhIHBvaW50ZXIuCi0gICAgaml0LnBva2U2NChyZWdzLmZpcnN0LCAwKTsK
LSAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihzY3JhdGNoTWVtb3J5
KSwgcmVncy5maXJzdCk7Ci0gICAgCisgICAgR1BSUmVnIGJhc2VHUFIgPSByZWdzLmZpcnN0Owor
I2lmIENQVShBUk02NCkKKyAgICBHUFJSZWcgbmV4dEdQUiA9IHJlZ3MubmV4dFJlZ2lzdGVyKGJh
c2VHUFIpOworICAgIEdQUlJlZyBmaXJzdFRvU2F2ZUdQUiA9IHJlZ3MubmV4dFJlZ2lzdGVyKG5l
eHRHUFIpOworICAgIEFTU0VSVChiYXNlR1BSID09IEFSTTY0UmVnaXN0ZXJzOjp4MCk7CisgICAg
QVNTRVJUKG5leHRHUFIgPT0gQVJNNjRSZWdpc3RlcnM6OngxKTsKKyNlbHNlCisgICAgR1BSUmVn
IGZpcnN0VG9TYXZlR1BSID0gcmVncy5uZXh0UmVnaXN0ZXIoYmFzZUdQUik7CisjZW5kaWYKKyAg
ICBqaXQucG9rZTY0KGJhc2VHUFIsIDApOworICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tUHRyKHNjcmF0Y2hNZW1vcnkpLCBiYXNlR1BSKTsKKworICAgIEFzc2VtYmx5SGVs
cGVyczo6U3RvcmVSZWdTcG9vbGVyIHNwb29sZXIoaml0LCBiYXNlR1BSKTsKKwogICAgIC8vIEdl
dCBhbGwgb2YgdGhlIG90aGVyIEdQUnMgb3V0IG9mIHRoZSB3YXkuCi0gICAgZm9yIChNYWNyb0Fz
c2VtYmxlcjo6UmVnaXN0ZXJJRCByZWcgPSByZWdzLnNlY29uZDsgcmVnIDw9IE1hY3JvQXNzZW1i
bGVyOjpsYXN0UmVnaXN0ZXIoKTsgcmVnID0gTWFjcm9Bc3NlbWJsZXI6Om5leHRSZWdpc3Rlcihy
ZWcpKSB7Ci0gICAgICAgIGlmIChyZWdzLnNwZWNpYWwuZ2V0KHJlZykpCi0gICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgaml0LnN0b3JlNjQocmVnLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhyZWdzLmZpcnN0LCBvZmZzZXRPZkdQUihyZWcpKSk7Ci0gICAgfQorICAgIGZvciAoR1BSUmVn
IHJlZyA9IGZpcnN0VG9TYXZlR1BSOyByZWcgPD0gTWFjcm9Bc3NlbWJsZXI6Omxhc3RSZWdpc3Rl
cigpOyByZWcgPSByZWdzLm5leHRSZWdpc3RlcihyZWcpKQorICAgICAgICBzcG9vbGVyLnN0b3Jl
R1BSKHsgcmVnLCBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KG9mZnNldE9mR1BSKHJlZykpIH0pOwor
ICAgIHNwb29sZXIuZmx1c2hHUFIoKTsKICAgICAKICAgICAvLyBSZXN0b3JlIHRoZSBmaXJzdCBy
ZWdpc3RlciBpbnRvIHRoZSBzZWNvbmQgb25lIGFuZCBzYXZlIGl0LgotICAgIGppdC5wZWVrNjQo
cmVncy5zZWNvbmQsIDApOwotICAgIGppdC5zdG9yZTY0KHJlZ3Muc2Vjb25kLCBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhyZWdzLmZpcnN0LCBvZmZzZXRPZkdQUihyZWdzLmZpcnN0KSkpOworICAg
IGppdC5wZWVrNjQoZmlyc3RUb1NhdmVHUFIsIDApOworI2lmIENQVShBUk02NCkKKyAgICBqaXQu
c3RvcmVQYWlyNjQoZmlyc3RUb1NhdmVHUFIsIG5leHRHUFIsIGJhc2VHUFIsIEFzc2VtYmx5SGVs
cGVyczo6VHJ1c3RlZEltbTMyKG9mZnNldE9mR1BSKGJhc2VHUFIpKSk7CisjZWxzZQorICAgIGpp
dC5zdG9yZTY0KGZpcnN0VG9TYXZlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BS
LCBvZmZzZXRPZkdQUihiYXNlR1BSKSkpOworI2VuZGlmCiAgICAgCiAgICAgLy8gRmluYWxseSBz
YXZlIGFsbCBGUFIncy4KLSAgICBmb3IgKE1hY3JvQXNzZW1ibGVyOjpGUFJlZ2lzdGVySUQgcmVn
ID0gTWFjcm9Bc3NlbWJsZXI6OmZpcnN0RlBSZWdpc3RlcigpOyByZWcgPD0gTWFjcm9Bc3NlbWJs
ZXI6Omxhc3RGUFJlZ2lzdGVyKCk7IHJlZyA9IE1hY3JvQXNzZW1ibGVyOjpuZXh0RlBSZWdpc3Rl
cihyZWcpKSB7Ci0gICAgICAgIGlmIChyZWdzLnNwZWNpYWwuZ2V0KHJlZykpCi0gICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgaml0LnN0b3JlRG91YmxlKHJlZywgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MocmVncy5maXJzdCwgb2Zmc2V0T2ZGUFIocmVnKSkpOwotICAgIH0KKyAgICBmb3Ig
KE1hY3JvQXNzZW1ibGVyOjpGUFJlZ2lzdGVySUQgcmVnID0gTWFjcm9Bc3NlbWJsZXI6OmZpcnN0
RlBSZWdpc3RlcigpOyByZWcgPD0gTWFjcm9Bc3NlbWJsZXI6Omxhc3RGUFJlZ2lzdGVyKCk7IHJl
ZyA9IHJlZ3MubmV4dEZQUmVnaXN0ZXIocmVnKSkKKyAgICAgICAgc3Bvb2xlci5zdG9yZUZQUih7
IHJlZywgc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihvZmZzZXRPZkZQUihyZWcpKSB9KTsKKyAgICBz
cG9vbGVyLmZsdXNoRlBSKCk7CiB9CiAKLXZvaWQgcmVzdG9yZUFsbFJlZ2lzdGVycyhNYWNyb0Fz
c2VtYmxlciYgaml0LCBjaGFyKiBzY3JhdGNoTWVtb3J5KQordm9pZCByZXN0b3JlQWxsUmVnaXN0
ZXJzKEFzc2VtYmx5SGVscGVycyYgaml0LCBjaGFyKiBzY3JhdGNoTWVtb3J5KQogewogICAgIFJl
Z3MgcmVnczsKICAgICAKICAgICAvLyBHaXZlIG91cnNlbHZlcyBhIHBvaW50ZXIgdG8gdGhlIHNj
cmF0Y2ggbWVtb3J5LgotICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
KHNjcmF0Y2hNZW1vcnkpLCByZWdzLmZpcnN0KTsKKyAgICBHUFJSZWcgYmFzZUdQUiA9IHJlZ3Mu
Zmlyc3Q7CisgICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoc2NyYXRj
aE1lbW9yeSksIGJhc2VHUFIpOwogICAgIAorICAgIEFzc2VtYmx5SGVscGVyczo6TG9hZFJlZ1Nw
b29sZXIgc3Bvb2xlcihqaXQsIGJhc2VHUFIpOworCiAgICAgLy8gUmVzdG9yZSBhbGwgRlBSJ3Mu
Ci0gICAgZm9yIChNYWNyb0Fzc2VtYmxlcjo6RlBSZWdpc3RlcklEIHJlZyA9IE1hY3JvQXNzZW1i
bGVyOjpmaXJzdEZQUmVnaXN0ZXIoKTsgcmVnIDw9IE1hY3JvQXNzZW1ibGVyOjpsYXN0RlBSZWdp
c3RlcigpOyByZWcgPSBNYWNyb0Fzc2VtYmxlcjo6bmV4dEZQUmVnaXN0ZXIocmVnKSkgewotICAg
ICAgICBpZiAocmVncy5zcGVjaWFsLmdldChyZWcpKQotICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgIGppdC5sb2FkRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlZ3MuZmlyc3Qs
IG9mZnNldE9mRlBSKHJlZykpLCByZWcpOwotICAgIH0KLSAgICAKLSAgICBmb3IgKE1hY3JvQXNz
ZW1ibGVyOjpSZWdpc3RlcklEIHJlZyA9IHJlZ3Muc2Vjb25kOyByZWcgPD0gTWFjcm9Bc3NlbWJs
ZXI6Omxhc3RSZWdpc3RlcigpOyByZWcgPSBNYWNyb0Fzc2VtYmxlcjo6bmV4dFJlZ2lzdGVyKHJl
ZykpIHsKLSAgICAgICAgaWYgKHJlZ3Muc3BlY2lhbC5nZXQocmVnKSkKLSAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICBqaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlZ3Mu
Zmlyc3QsIG9mZnNldE9mR1BSKHJlZykpLCByZWcpOwotICAgIH0KLSAgICAKLSAgICBqaXQubG9h
ZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlZ3MuZmlyc3QsIG9mZnNldE9mR1BSKHJlZ3Mu
Zmlyc3QpKSwgcmVncy5maXJzdCk7CisgICAgZm9yIChNYWNyb0Fzc2VtYmxlcjo6RlBSZWdpc3Rl
cklEIHJlZyA9IE1hY3JvQXNzZW1ibGVyOjpmaXJzdEZQUmVnaXN0ZXIoKTsgcmVnIDw9IE1hY3Jv
QXNzZW1ibGVyOjpsYXN0RlBSZWdpc3RlcigpOyByZWcgPSByZWdzLm5leHRGUFJlZ2lzdGVyKHJl
ZykpCisgICAgICAgIHNwb29sZXIubG9hZEZQUih7IHJlZywgc3RhdGljX2Nhc3Q8cHRyZGlmZl90
PihvZmZzZXRPZkZQUihyZWcpKSB9KTsKKyAgICBzcG9vbGVyLmZsdXNoRlBSKCk7CisgICAgCisj
aWYgQ1BVKEFSTTY0KQorICAgIEdQUlJlZyBuZXh0R1BSID0gcmVncy5uZXh0UmVnaXN0ZXIoYmFz
ZUdQUik7CisgICAgR1BSUmVnIGZpcnN0VG9SZXN0b3JlR1BSID0gcmVncy5uZXh0UmVnaXN0ZXIo
bmV4dEdQUik7CisgICAgQVNTRVJUKGJhc2VHUFIgPT0gQVJNNjRSZWdpc3RlcnM6OngwKTsKKyAg
ICBBU1NFUlQobmV4dEdQUiA9PSBBUk02NFJlZ2lzdGVyczo6eDEpOworI2Vsc2UKKyAgICBHUFJS
ZWcgZmlyc3RUb1Jlc3RvcmVHUFIgPSByZWdzLm5leHRSZWdpc3RlcihiYXNlR1BSKTsKKyNlbmRp
ZgorICAgIGZvciAoTWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgcmVnID0gZmlyc3RUb1Jlc3Rv
cmVHUFI7IHJlZyA8PSBNYWNyb0Fzc2VtYmxlcjo6bGFzdFJlZ2lzdGVyKCk7IHJlZyA9IHJlZ3Mu
bmV4dFJlZ2lzdGVyKHJlZykpCisgICAgICAgIHNwb29sZXIubG9hZEdQUih7IHJlZywgc3RhdGlj
X2Nhc3Q8cHRyZGlmZl90PihvZmZzZXRPZkdQUihyZWcpKSB9KTsKKyAgICBzcG9vbGVyLmZsdXNo
R1BSKCk7CisKKyNpZiBDUFUoQVJNNjQpCisgICAgaml0LmxvYWRQYWlyNjQoYmFzZUdQUiwgQXNz
ZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIob2Zmc2V0T2ZHUFIoYmFzZUdQUikpLCBiYXNlR1BS
LCBuZXh0R1BSKTsKKyNlbHNlCisgICAgaml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhiYXNlR1BSLCBvZmZzZXRPZkdQUihiYXNlR1BSKSksIGJhc2VHUFIpOworI2VuZGlmCiB9CiAK
IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpGVEwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMU2F2ZVJlc3RvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTFNhdmVSZXN0b3JlLmgJKHJldmlzaW9uIDI3ODg4NikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMU2F2ZVJlc3RvcmUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMyw3ICszMyw3IEBA
CiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBNYWNyb0Fzc2VtYmxlcjsKK2NsYXNzIEFzc2Vt
Ymx5SGVscGVyczsKIAogbmFtZXNwYWNlIEZUTCB7CiAKQEAgLTQ2LDkgKzQ2LDkgQEAgc2l6ZV90
IG9mZnNldE9mRlBSKEZQUlJlZyk7CiAvLyBBc3N1bWVzIHRoYXQgdG9wLW9mLXN0YWNrIGNhbiBi
ZSB1c2VkIGFzIGEgcG9pbnRlci1zaXplZCBzY3JhdGNocGFkLiBTYXZlcyBhbGwgb2YKIC8vIHRo
ZSByZWdpc3RlcnMgaW50byB0aGUgc2NyYXRjaCBidWZmZXIgc3VjaCB0aGF0IFJlZ2lzdGVySUQg
KiBzaXplb2YoaW50NjRfdCkgaXMgdGhlCiAvLyBvZmZzZXQgb2YgZXZlcnkgcmVnaXN0ZXIuCi12
b2lkIHNhdmVBbGxSZWdpc3RlcnMoTWFjcm9Bc3NlbWJsZXImIGppdCwgY2hhciogc2NyYXRjaE1l
bW9yeSk7Cit2b2lkIHNhdmVBbGxSZWdpc3RlcnMoQXNzZW1ibHlIZWxwZXJzJiBqaXQsIGNoYXIq
IHNjcmF0Y2hNZW1vcnkpOwogCi12b2lkIHJlc3RvcmVBbGxSZWdpc3RlcnMoTWFjcm9Bc3NlbWJs
ZXImIGppdCwgY2hhciogc2NyYXRjaE1lbW9yeSk7Cit2b2lkIHJlc3RvcmVBbGxSZWdpc3RlcnMo
QXNzZW1ibHlIZWxwZXJzJiBqaXQsIGNoYXIqIHNjcmF0Y2hNZW1vcnkpOwogCiB9IH0gLy8gbmFt
ZXNwYWNlIEpTQzo6RlRMCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVGh1
bmtzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFRodW5r
cy5jcHAJKHJldmlzaW9uIDI3ODg4NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
VGh1bmtzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogCiAjaWYgRU5BQkxF
KEZUTF9KSVQpCiAKLSNpbmNsdWRlICJBc3NlbWJseUhlbHBlcnMuaCIKKyNpbmNsdWRlICJBc3Nl
bWJseUhlbHBlcnNTcG9vbGVycy5oIgogI2luY2x1ZGUgIkRGR09TUkV4aXRDb21waWxlckNvbW1v
bi5oIgogI2luY2x1ZGUgIkZUTE9TUkV4aXRDb21waWxlci5oIgogI2luY2x1ZGUgIkZUTE9wZXJh
dGlvbnMuaCIKQEAgLTU2LDMxICs1NiwzNCBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyCiAgICAgfQogICAgIAogICAgIC8vIE5vdGUgdGhhdCB0aGUgInJldHVybiBh
ZGRyZXNzIiB3aWxsIGJlIHRoZSBJRCB0aGF0IHdlIHBhc3MgdG8gdGhlIGdlbmVyYXRpb24gZnVu
Y3Rpb24uCi0gICAgCi0gICAgcHRyZGlmZl90IHN0YWNrTWlzYWxpZ25tZW50ID0gTWFjcm9Bc3Nl
bWJsZXI6OnB1c2hUb1NhdmVCeXRlT2Zmc2V0KCk7Ci0gICAgCisKKyAgICBjb25zdGV4cHIgR1BS
UmVnIHN0YWNrUG9pbnRlclJlZ2lzdGVyID0gTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJl
Z2lzdGVyOworICAgIGNvbnN0ZXhwciBHUFJSZWcgZnJhbWVQb2ludGVyUmVnaXN0ZXIgPSBNYWNy
b0Fzc2VtYmxlcjo6ZnJhbWVQb2ludGVyUmVnaXN0ZXI7CisgICAgY29uc3RleHByIHB0cmRpZmZf
dCBwdXNoVG9TYXZlQnl0ZU9mZnNldCA9IE1hY3JvQXNzZW1ibGVyOjpwdXNoVG9TYXZlQnl0ZU9m
ZnNldCgpOworICAgIHB0cmRpZmZfdCBzdGFja01pc2FsaWdubWVudCA9IHB1c2hUb1NhdmVCeXRl
T2Zmc2V0OworCiAgICAgLy8gUHJldGVuZCB0aGF0IHdlJ3JlIGEgQyBjYWxsIGZyYW1lLgotICAg
IGppdC5wdXNoVG9TYXZlKE1hY3JvQXNzZW1ibGVyOjpmcmFtZVBvaW50ZXJSZWdpc3Rlcik7Ci0g
ICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBNYWNyb0Fz
c2VtYmxlcjo6ZnJhbWVQb2ludGVyUmVnaXN0ZXIpOwotICAgIHN0YWNrTWlzYWxpZ25tZW50ICs9
IE1hY3JvQXNzZW1ibGVyOjpwdXNoVG9TYXZlQnl0ZU9mZnNldCgpOwotICAgIAorICAgIGppdC5w
dXNoVG9TYXZlKGZyYW1lUG9pbnRlclJlZ2lzdGVyKTsKKyAgICBqaXQubW92ZShzdGFja1BvaW50
ZXJSZWdpc3RlciwgZnJhbWVQb2ludGVyUmVnaXN0ZXIpOworICAgIHN0YWNrTWlzYWxpZ25tZW50
ICs9IHB1c2hUb1NhdmVCeXRlT2Zmc2V0OworCiAgICAgLy8gTm93IGNyZWF0ZSBvdXJzZWx2ZXMg
ZW5vdWdoIHN0YWNrIHNwYWNlIHRvIGdpdmUgc2F2ZUFsbFJlZ2lzdGVycygpIGEgc2NyYXRjaCBz
bG90LgogICAgIHVuc2lnbmVkIG51bWJlck9mUmVxdWlyZWRQb3BzID0gMDsKICAgICBkbyB7Ci0g
ICAgICAgIGppdC5wdXNoVG9TYXZlKEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgc3RhY2tNaXNh
bGlnbm1lbnQgKz0gTWFjcm9Bc3NlbWJsZXI6OnB1c2hUb1NhdmVCeXRlT2Zmc2V0KCk7CisgICAg
ICAgIHN0YWNrTWlzYWxpZ25tZW50ICs9IHB1c2hUb1NhdmVCeXRlT2Zmc2V0OwogICAgICAgICBu
dW1iZXJPZlJlcXVpcmVkUG9wcysrOwogICAgIH0gd2hpbGUgKHN0YWNrTWlzYWxpZ25tZW50ICUg
c3RhY2tBbGlnbm1lbnRCeXRlcygpKTsKLSAgICAKKyAgICBqaXQuc3ViUHRyKE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tMzIobnVtYmVyT2ZSZXF1aXJlZFBvcHMgKiBwdXNoVG9TYXZlQnl0ZU9m
ZnNldCksIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKwogICAgIFNjcmF0Y2hCdWZmZXIqIHNjcmF0
Y2hCdWZmZXIgPSB2bS5zY3JhdGNoQnVmZmVyRm9yU2l6ZShyZXF1aXJlZFNjcmF0Y2hNZW1vcnlT
aXplSW5CeXRlcygpKTsKICAgICBjaGFyKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxjaGFyKj4oc2Ny
YXRjaEJ1ZmZlci0+ZGF0YUJ1ZmZlcigpKTsKICAgICAKICAgICBzYXZlQWxsUmVnaXN0ZXJzKGpp
dCwgYnVmZmVyKTsKIAotICAgIGppdC5sb2FkUHRyKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIGppdC5sb2FkUHRyKGZyYW1lUG9pbnRlclJl
Z2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwogICAgIGppdC5wZWVrKAogICAgICAgICBH
UFJJbmZvOjphcmd1bWVudEdQUjEsCi0gICAgICAgIChzdGFja01pc2FsaWdubWVudCAtIE1hY3Jv
QXNzZW1ibGVyOjpwdXNoVG9TYXZlQnl0ZU9mZnNldCgpKSAvIHNpemVvZih2b2lkKikpOworICAg
ICAgICAoc3RhY2tNaXNhbGlnbm1lbnQgLSBwdXNoVG9TYXZlQnl0ZU9mZnNldCkgLyBzaXplb2Yo
dm9pZCopKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogICAgIE1hY3JvQXNz
ZW1ibGVyOjpDYWxsIGZ1bmN0aW9uQ2FsbCA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7CiAK
QEAgLTkyLDE0ICs5NSwxMyBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5r
UHRyCiAgICAgaml0Lm1vdmUoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIEdQUkluZm86OnJlZ1Qw
KTsKIAogICAgIC8vIFByZXBhcmUgZm9yIHRhaWwgY2FsbC4KLSAgICB3aGlsZSAobnVtYmVyT2ZS
ZXF1aXJlZFBvcHMtLSkKLSAgICAgICAgaml0LnBvcFRvUmVzdG9yZShHUFJJbmZvOjpyZWdUMSk7
Ci0gICAgaml0LnBvcFRvUmVzdG9yZShNYWNyb0Fzc2VtYmxlcjo6ZnJhbWVQb2ludGVyUmVnaXN0
ZXIpOwotCi0gICAgLy8gV2hlbiB3ZSBjYW1lIGluIGhlcmUsIHRoZXJlIHdhcyBhbiBhZGRpdGlv
bmFsIHRoaW5nIHB1c2hlZCB0byB0aGUgc3RhY2suIFNvbWUgY2xpZW50cyB3YW50IGl0Ci0gICAg
Ly8gcG9wcGVkIGJlZm9yZSBwcm9jZWVkaW5nLgotICAgIHdoaWxlIChleHRyYVBvcHNUb1Jlc3Rv
cmUtLSkKLSAgICAgICAgaml0LnBvcFRvUmVzdG9yZShHUFJJbmZvOjpyZWdUMSk7CisKKyAgICBq
aXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3Rlciwg
bnVtYmVyT2ZSZXF1aXJlZFBvcHMgKiBwdXNoVG9TYXZlQnl0ZU9mZnNldCksIGZyYW1lUG9pbnRl
clJlZ2lzdGVyKTsKKworICAgIC8vIFdoZW4gd2UgY2FtZSBpbiBoZXJlLCB0aGVyZSB3YXMgYW4g
YWRkaXRpb25hbCB0aGluZyBwdXNoZWQgdG8gdGhlIHN0YWNrIChleHRyYVBvcHNUb1Jlc3RvcmUp
LgorICAgIC8vIFNvbWUgY2xpZW50cyB3YW50IGl0IHBvcHBlZCBiZWZvcmUgcHJvY2VlZGluZy4g
QWxzbyBhZGQgMSBmb3IgdGhlIHB1c2hUb1NhdmUgb2YgdGhlIGZyYW1lUG9pbnRlclJlZ2lzdGVy
LgorICAgIG51bWJlck9mUmVxdWlyZWRQb3BzICs9IDEgKyBleHRyYVBvcHNUb1Jlc3RvcmU7Cisg
ICAgaml0LmFkZFB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKG51bWJlck9mUmVxdWly
ZWRQb3BzICogcHVzaFRvU2F2ZUJ5dGVPZmZzZXQpLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAK
ICAgICAvLyBQdXQgdGhlIHJldHVybiBhZGRyZXNzIHdoZXJldmVyIHRoZSByZXR1cm4gaW5zdHJ1
Y3Rpb24gd2FudHMgaXQuIE9uIGFsbCBwbGF0Zm9ybXMsIHRoaXMKICAgICAvLyBlbnN1cmVzIHRo
YXQgdGhlIHJldHVybiBhZGRyZXNzIGlzIG91dCBvZiB0aGUgd2F5IG9mIHJlZ2lzdGVyIHJlc3Rv
cmF0aW9uLgpAQCAtMTc3LDIxICsxNzksMjUgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBzbAogI2lmIENQVShYODZfNjQpCiAgICAgY3VycmVudE9mZnNldCArPSBzaXpl
b2Yodm9pZCopOwogI2VuZGlmCi0gICAgCisKKyAgICBBc3NlbWJseUhlbHBlcnM6OlN0b3JlUmVn
U3Bvb2xlciBzdG9yZVNwb29sZXIoaml0LCBNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVn
aXN0ZXIpOworCiAgICAgZm9yIChNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRCByZWcgPSBNYWNy
b0Fzc2VtYmxlcjo6Zmlyc3RSZWdpc3RlcigpOyByZWcgPD0gTWFjcm9Bc3NlbWJsZXI6Omxhc3RS
ZWdpc3RlcigpOyByZWcgPSBzdGF0aWNfY2FzdDxNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRD4o
cmVnICsgMSkpIHsKICAgICAgICAgaWYgKCFrZXkudXNlZFJlZ2lzdGVycygpLmdldChyZWcpKQog
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGppdC5zdG9yZVB0cihyZWcsIEFzc2VtYmx5
SGVscGVyczo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIGN1
cnJlbnRPZmZzZXQpKTsKKyAgICAgICAgc3RvcmVTcG9vbGVyLnN0b3JlR1BSKHsgcmVnLCBzdGF0
aWNfY2FzdDxwdHJkaWZmX3Q+KGN1cnJlbnRPZmZzZXQpIH0pOwogICAgICAgICBjdXJyZW50T2Zm
c2V0ICs9IHNpemVvZih2b2lkKik7CiAgICAgfQotICAgIAorICAgIHN0b3JlU3Bvb2xlci5mbHVz
aEdQUigpOworCiAgICAgZm9yIChNYWNyb0Fzc2VtYmxlcjo6RlBSZWdpc3RlcklEIHJlZyA9IE1h
Y3JvQXNzZW1ibGVyOjpmaXJzdEZQUmVnaXN0ZXIoKTsgcmVnIDw9IE1hY3JvQXNzZW1ibGVyOjps
YXN0RlBSZWdpc3RlcigpOyByZWcgPSBzdGF0aWNfY2FzdDxNYWNyb0Fzc2VtYmxlcjo6RlBSZWdp
c3RlcklEPihyZWcgKyAxKSkgewogICAgICAgICBpZiAoIWtleS51c2VkUmVnaXN0ZXJzKCkuZ2V0
KHJlZykpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaml0LnN0b3JlRG91YmxlKHJl
ZywgQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJS
ZWdpc3RlciwgY3VycmVudE9mZnNldCkpOworICAgICAgICBzdG9yZVNwb29sZXIuc3RvcmVGUFIo
eyByZWcsIHN0YXRpY19jYXN0PHB0cmRpZmZfdD4oY3VycmVudE9mZnNldCkgfSk7CiAgICAgICAg
IGN1cnJlbnRPZmZzZXQgKz0gc2l6ZW9mKGRvdWJsZSk7CiAgICAgfQotICAgIAorICAgIHN0b3Jl
U3Bvb2xlci5mbHVzaEZQUigpOworCiAgICAgaml0LnByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVy
Q2FsbChHUFJJbmZvOjpub25BcmdHUFIxKTsKICAgICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6bm9u
QXJnR1BSMSwgQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKE1hY3JvQXNzZW1ibGVyOjpzdGFja1Bv
aW50ZXJSZWdpc3Rlciwga2V5Lm9mZnNldCgpKSk7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0
aW9uKHZtKTsKQEAgLTIxMCwyNCArMjE2LDI4IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz4gc2wKICAgICBqaXQubG9hZFB0cihBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3Mo
TWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBrZXkub2Zmc2V0KCkpLCBHUFJJ
bmZvOjpub25QcmVzZXJ2ZWROb25SZXR1cm5HUFIpOwogICAgIGppdC5yZXN0b3JlUmV0dXJuQWRk
cmVzc0JlZm9yZVJldHVybihHUFJJbmZvOjpub25QcmVzZXJ2ZWROb25SZXR1cm5HUFIpOwogICAg
IAorICAgIEFzc2VtYmx5SGVscGVyczo6TG9hZFJlZ1Nwb29sZXIgbG9hZFNwb29sZXIoaml0LCBN
YWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOworCiAgICAgZm9yIChNYWNyb0Fz
c2VtYmxlcjo6RlBSZWdpc3RlcklEIHJlZyA9IE1hY3JvQXNzZW1ibGVyOjpsYXN0RlBSZWdpc3Rl
cigpOyA7IHJlZyA9IHN0YXRpY19jYXN0PE1hY3JvQXNzZW1ibGVyOjpGUFJlZ2lzdGVySUQ+KHJl
ZyAtIDEpKSB7CiAgICAgICAgIGlmIChrZXkudXNlZFJlZ2lzdGVycygpLmdldChyZWcpKSB7CiAg
ICAgICAgICAgICBjdXJyZW50T2Zmc2V0IC09IHNpemVvZihkb3VibGUpOwotICAgICAgICAgICAg
aml0LmxvYWREb3VibGUoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKE1hY3JvQXNzZW1ibGVyOjpz
dGFja1BvaW50ZXJSZWdpc3RlciwgY3VycmVudE9mZnNldCksIHJlZyk7CisgICAgICAgICAgICBs
b2FkU3Bvb2xlci5sb2FkRlBSKHsgcmVnLCBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KGN1cnJlbnRP
ZmZzZXQpIH0pOwogICAgICAgICB9CiAgICAgICAgIGlmIChyZWcgPT0gTWFjcm9Bc3NlbWJsZXI6
OmZpcnN0RlBSZWdpc3RlcigpKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIAorICAg
IGxvYWRTcG9vbGVyLmZsdXNoRlBSKCk7CisKICAgICBmb3IgKE1hY3JvQXNzZW1ibGVyOjpSZWdp
c3RlcklEIHJlZyA9IE1hY3JvQXNzZW1ibGVyOjpsYXN0UmVnaXN0ZXIoKTsgOyByZWcgPSBzdGF0
aWNfY2FzdDxNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRD4ocmVnIC0gMSkpIHsKICAgICAgICAg
aWYgKGtleS51c2VkUmVnaXN0ZXJzKCkuZ2V0KHJlZykpIHsKICAgICAgICAgICAgIGN1cnJlbnRP
ZmZzZXQgLT0gc2l6ZW9mKHZvaWQqKTsKLSAgICAgICAgICAgIGppdC5sb2FkUHRyKEFzc2VtYmx5
SGVscGVyczo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIGN1
cnJlbnRPZmZzZXQpLCByZWcpOworICAgICAgICAgICAgbG9hZFNwb29sZXIubG9hZEdQUih7IHJl
Zywgc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihjdXJyZW50T2Zmc2V0KSB9KTsKICAgICAgICAgfQog
ICAgICAgICBpZiAocmVnID09IE1hY3JvQXNzZW1ibGVyOjpmaXJzdFJlZ2lzdGVyKCkpCiAgICAg
ICAgICAgICBicmVhazsKICAgICB9Ci0gICAgCisgICAgbG9hZFNwb29sZXIuZmx1c2hHUFIoKTsK
KwogICAgIGppdC5yZXQoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9C
QUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkZUTFRodW5rKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAJKHJldmlzaW9uIDI3
ODg4NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShKSVQpCiAKICNpbmNs
dWRlICJBY2Nlc3NDYXNlLmgiCisjaW5jbHVkZSAiQXNzZW1ibHlIZWxwZXJzU3Bvb2xlcnMuaCIK
ICNpbmNsdWRlICJKSVRPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlclZpZXcu
aCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgpAQCAtNjA2LDQyICs2MDcsOTMgQEAg
dm9pZCBBc3NlbWJseUhlbHBlcnM6OnJlc3RvcmVDYWxsZWVTYXZlcwogCiAgICAgR1BSUmVnIHNj
cmF0Y2ggPSBJbnZhbGlkR1BSUmVnOwogICAgIHVuc2lnbmVkIHNjcmF0Y2hHUFJFbnRyeUluZGV4
ID0gMDsKKyNpZiBDUFUoQVJNNjQpCisgICAgLy8gV2UgZG9uJ3QgbmVlZCBhIHNlY29uZCBzY3Jh
dGNoIEdQUiwgYnV0IHdlJ2xsIGFsc28gZGVmZXIgcmVzdG9yaW5nIHRoaXMKKyAgICAvLyBHUFIg
KGluIHRoZSBuZXh0IHNsb3QgYWZ0ZXIgdGhlIHNjcmF0Y2gpIHNvIHRoYXQgd2UgY2FuIHJlc3Rv
cmUgdGhlbSB0b2dldGhlcgorICAgIC8vIGxhdGVyIHVzaW5nIGEgbG9hZFBhaXI2NC4KKyAgICBH
UFJSZWcgdW51c2VkTmV4dFNsb3RHUFIgPSBJbnZhbGlkR1BSUmVnOworI2VuZGlmCiAKLSAgICAv
LyBVc2UgdGhlIGZpcnN0IEdQUiBlbnRyeSdzIHJlZ2lzdGVyIGFzIG91ciBzY3JhdGNoLgorICAg
IC8vIFVzZSB0aGUgZmlyc3QgR1BSIGVudHJ5J3MgcmVnaXN0ZXIgYXMgb3VyIGJhc2VHUFIuCiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkrKykgewogICAgICAg
ICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5ID0gYWxsQ2FsbGVlU2F2ZXMtPmF0KGkpOwotICAgICAg
ICBpZiAoZG9udFJlc3RvcmVSZWdpc3RlcnMuZ2V0KGVudHJ5LnJlZygpKSkKKyAgICAgICAgaWYg
KGRvbnRSZXN0b3JlUmVnaXN0ZXJzLmNvbnRhaW5zKGVudHJ5LnJlZygpKSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICBpZiAoZW50cnkucmVnKCkuaXNHUFIoKSkgeworI2lmIENQVShB
Uk02NCkKKyAgICAgICAgICAgIGlmIChpICsgMSA8IHJlZ2lzdGVyQ291bnQpIHsKKyAgICAgICAg
ICAgICAgICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5MiA9IGFsbENhbGxlZVNhdmVzLT5hdChpICsg
MSk7CisgICAgICAgICAgICAgICAgaWYgKCFkb250UmVzdG9yZVJlZ2lzdGVycy5jb250YWlucyhl
bnRyeTIucmVnKCkpCisgICAgICAgICAgICAgICAgICAgICYmIGVudHJ5Mi5yZWcoKS5pc0dQUigp
CisgICAgICAgICAgICAgICAgICAgICYmIGVudHJ5Mi5vZmZzZXQoKSA9PSBlbnRyeS5vZmZzZXQo
KSArIHN0YXRpY19jYXN0PHB0cmRpZmZfdD4oc2l6ZW9mKENQVVJlZ2lzdGVyKSkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgc2NyYXRjaEdQUkVudHJ5SW5kZXggPSBpOworICAgICAgICAgICAgICAg
ICAgICBzY3JhdGNoID0gZW50cnkucmVnKCkuZ3ByKCk7CisgICAgICAgICAgICAgICAgICAgIHVu
dXNlZE5leHRTbG90R1BSID0gZW50cnkyLnJlZygpLmdwcigpOworICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisjZWxzZQogICAgICAg
ICAgICAgc2NyYXRjaEdQUkVudHJ5SW5kZXggPSBpOwogICAgICAgICAgICAgc2NyYXRjaCA9IGVu
dHJ5LnJlZygpLmdwcigpOwogICAgICAgICAgICAgYnJlYWs7CisjZW5kaWYKICAgICAgICAgfQog
ICAgIH0KICAgICBBU1NFUlQoc2NyYXRjaCAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAKKyAgICBS
ZWdpc3RlclNldCBza2lwTGlzdDsKKyAgICBza2lwTGlzdC5zZXQoZG9udFJlc3RvcmVSZWdpc3Rl
cnMpOworCisgICAgLy8gU2tpcCB0aGUgc2NyYXRjaCByZWdpc3RlcihzKS4gV2UnbGwgcmVzdG9y
ZSB0aGVtIGxhdGVyLgorICAgIHNraXBMaXN0LmFkZChzY3JhdGNoKTsKKyNpZiBDUFUoQVJNNjQp
CisgICAgUkVMRUFTRV9BU1NFUlQodW51c2VkTmV4dFNsb3RHUFIgIT0gSW52YWxpZEdQUlJlZyk7
CisgICAgc2tpcExpc3QuYWRkKHVudXNlZE5leHRTbG90R1BSKTsKKyNlbmRpZgogCiAgICAgbG9h
ZFB0cigmdG9wRW50cnlGcmFtZSwgc2NyYXRjaCk7CiAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihF
bnRyeUZyYW1lOjpjYWxsZWVTYXZlUmVnaXN0ZXJzQnVmZmVyT2Zmc2V0KCkpLCBzY3JhdGNoKTsK
IAorICAgIExvYWRSZWdTcG9vbGVyIHNwb29sZXIoKnRoaXMsIHNjcmF0Y2gpOworCiAgICAgLy8g
UmVzdG9yZSBhbGwgY2FsbGVlIHNhdmVzIGV4Y2VwdCBmb3IgdGhlIHNjcmF0Y2guCi0gICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkrKykgeworICAgIHVuc2lnbmVk
IGkgPSAwOworICAgIGZvciAoOyBpIDwgcmVnaXN0ZXJDb3VudDsgaSsrKSB7CiAgICAgICAgIFJl
Z2lzdGVyQXRPZmZzZXQgZW50cnkgPSBhbGxDYWxsZWVTYXZlcy0+YXQoaSk7Ci0gICAgICAgIGlm
IChkb250UmVzdG9yZVJlZ2lzdGVycy5nZXQoZW50cnkucmVnKCkpKQorICAgICAgICBpZiAoc2tp
cExpc3QuY29udGFpbnMoZW50cnkucmVnKCkpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgIGlmIChpID09IHNjcmF0Y2hHUFJFbnRyeUluZGV4KQorICAgICAgICBpZiAoIWVudHJ5LnJl
ZygpLmlzR1BSKCkpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgc3Bvb2xlci5sb2FkR1BS
KGVudHJ5KTsKKyAgICB9CisgICAgc3Bvb2xlci5mbHVzaEdQUigpOworICAgIGZvciAoOyBpIDwg
cmVnaXN0ZXJDb3VudDsgaSsrKSB7CisgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQgZW50cnkgPSBh
bGxDYWxsZWVTYXZlcy0+YXQoaSk7CisgICAgICAgIGlmIChza2lwTGlzdC5jb250YWlucyhlbnRy
eS5yZWcoKSkpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgbG9hZFJlZyhBZGRyZXNz
KHNjcmF0Y2gsIGVudHJ5Lm9mZnNldCgpKSwgZW50cnkucmVnKCkpOworICAgICAgICBBU1NFUlQo
IWVudHJ5LnJlZygpLmlzR1BSKCkpOworICAgICAgICBzcG9vbGVyLmxvYWRGUFIoZW50cnkpOwog
ICAgIH0KKyAgICBzcG9vbGVyLmZsdXNoRlBSKCk7CiAKICAgICAvLyBSZXN0b3JlIHRoZSBjYWxs
ZWUgc2F2ZSB2YWx1ZSBvZiB0aGUgc2NyYXRjaC4KICAgICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5
ID0gYWxsQ2FsbGVlU2F2ZXMtPmF0KHNjcmF0Y2hHUFJFbnRyeUluZGV4KTsKICAgICBBU1NFUlQo
IWRvbnRSZXN0b3JlUmVnaXN0ZXJzLmdldChlbnRyeS5yZWcoKSkpOwogICAgIEFTU0VSVChlbnRy
eS5yZWcoKS5pc0dQUigpKTsKICAgICBBU1NFUlQoc2NyYXRjaCA9PSBlbnRyeS5yZWcoKS5ncHIo
KSk7Ci0gICAgbG9hZFJlZyhBZGRyZXNzKHNjcmF0Y2gsIGVudHJ5Lm9mZnNldCgpKSwgc2NyYXRj
aCk7CisjaWYgQ1BVKEFSTTY0KQorICAgIFJlZ2lzdGVyQXRPZmZzZXQgZW50cnkyID0gYWxsQ2Fs
bGVlU2F2ZXMtPmF0KHNjcmF0Y2hHUFJFbnRyeUluZGV4ICsgMSk7CisgICAgQVNTRVJUX1VOVVNF
RChlbnRyeTIsICFkb250UmVzdG9yZVJlZ2lzdGVycy5nZXQoZW50cnkyLnJlZygpKSk7CisgICAg
QVNTRVJUKGVudHJ5Mi5yZWcoKS5pc0dQUigpKTsKKyAgICBBU1NFUlQodW51c2VkTmV4dFNsb3RH
UFIgPT0gZW50cnkyLnJlZygpLmdwcigpKTsKKyAgICBsb2FkUGFpcjY0KHNjcmF0Y2gsIFRydXN0
ZWRJbW0zMihlbnRyeS5vZmZzZXQoKSksIHNjcmF0Y2gsIHVudXNlZE5leHRTbG90R1BSKTsKICNl
bHNlCi0gICAgVU5VU0VEX1BBUkFNKHRvcEVudHJ5RnJhbWUpOworICAgIGxvYWRQdHIoQWRkcmVz
cyhzY3JhdGNoLCBlbnRyeS5vZmZzZXQoKSksIHNjcmF0Y2gpOwogI2VuZGlmCisKKyNlbHNlCisg
ICAgVU5VU0VEX1BBUkFNKHRvcEVudHJ5RnJhbWUpOworI2VuZGlmIC8vIE5VTUJFUl9PRl9DQUxM
RUVfU0FWRVNfUkVHSVNURVJTID4gMAogfQogCiB2b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1pdFZp
cnR1YWxDYWxsKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbExpbmtJ
bmZvKiBpbmZvKQpAQCAtOTk5LDEzICsxMDUxLDI3IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjpj
b3B5Q2FsbGVlU2F2ZXNUb0UKICAgICBSZWdpc3RlckF0T2Zmc2V0TGlzdCogYWxsQ2FsbGVlU2F2
ZXMgPSBSZWdpc3RlclNldDo6dm1DYWxsZWVTYXZlUmVnaXN0ZXJPZmZzZXRzKCk7CiAgICAgUmVn
aXN0ZXJTZXQgZG9udENvcHlSZWdpc3RlcnMgPSBSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMo
KTsKICAgICB1bnNpZ25lZCByZWdpc3RlckNvdW50ID0gYWxsQ2FsbGVlU2F2ZXMtPnNpemUoKTsK
LSAgICAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVnaXN0ZXJDb3VudDsgaSsrKSB7
CisKKyAgICBTdG9yZVJlZ1Nwb29sZXIgc3Bvb2xlcigqdGhpcywgY2FsbGVlU2F2ZXNCdWZmZXIp
OworCisgICAgdW5zaWduZWQgaSA9IDA7CisgICAgZm9yICg7IGkgPCByZWdpc3RlckNvdW50OyBp
KyspIHsKICAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCBlbnRyeSA9IGFsbENhbGxlZVNhdmVzLT5h
dChpKTsKLSAgICAgICAgaWYgKGRvbnRDb3B5UmVnaXN0ZXJzLmdldChlbnRyeS5yZWcoKSkpCisg
ICAgICAgIGlmIChkb250Q29weVJlZ2lzdGVycy5jb250YWlucyhlbnRyeS5yZWcoKSkpCisgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKCFlbnRyeS5yZWcoKS5pc0dQUigpKQorICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIHNwb29sZXIuc3RvcmVHUFIoZW50cnkpOworICAgIH0K
KyAgICBzcG9vbGVyLmZsdXNoR1BSKCk7CisgICAgZm9yICg7IGkgPCByZWdpc3RlckNvdW50OyBp
KyspIHsKKyAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCBlbnRyeSA9IGFsbENhbGxlZVNhdmVzLT5h
dChpKTsKKyAgICAgICAgaWYgKGRvbnRDb3B5UmVnaXN0ZXJzLmNvbnRhaW5zKGVudHJ5LnJlZygp
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBzdG9yZVJlZyhlbnRyeS5yZWcoKSwg
QWRkcmVzcyhjYWxsZWVTYXZlc0J1ZmZlciwgZW50cnkub2Zmc2V0KCkpKTsKKyAgICAgICAgc3Bv
b2xlci5zdG9yZUZQUihlbnRyeSk7CiAgICAgfQorICAgIHNwb29sZXIuZmx1c2hGUFIoKTsKKwog
I2Vsc2UKICAgICBVTlVTRURfUEFSQU0oY2FsbGVlU2F2ZXNCdWZmZXIpOwogI2VuZGlmCkBAIC0x
MTAzLDYgKzExNjksMTg0IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjpjYWdlQ29uZGl0aW9uYWxs
eUEKICAgICBVTlVTRURfUEFSQU0oc2NyYXRjaCk7CiB9CiAKK3ZvaWQgQXNzZW1ibHlIZWxwZXJz
OjplbWl0U2F2ZShjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCYgbGlzdCkKK3sKKyAgICBTdG9y
ZVJlZ1Nwb29sZXIgc3Bvb2xlcigqdGhpcywgZnJhbWVQb2ludGVyUmVnaXN0ZXIpOworCisgICAg
c2l6ZV90IGxpc3RTaXplID0gbGlzdC5zaXplKCk7CisgICAgc2l6ZV90IGkgPSAwOworICAgIGZv
ciAoOyBpIDwgbGlzdFNpemU7IGkrKykgeworICAgICAgICBhdXRvIGVudHJ5ID0gbGlzdC5hdChp
KTsKKyAgICAgICAgaWYgKCFlbnRyeS5yZWcoKS5pc0dQUigpKQorICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIHNwb29sZXIuc3RvcmVHUFIoZW50cnkpOworICAgIH0KKyAgICBzcG9vbGVyLmZs
dXNoR1BSKCk7CisKKyAgICBmb3IgKDsgaSA8IGxpc3RTaXplOyBpKyspCisgICAgICAgIHNwb29s
ZXIuc3RvcmVGUFIobGlzdC5hdChpKSk7CisgICAgc3Bvb2xlci5mbHVzaEZQUigpOworfQorCit2
b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1pdFJlc3RvcmUoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExp
c3QmIGxpc3QpCit7CisgICAgTG9hZFJlZ1Nwb29sZXIgc3Bvb2xlcigqdGhpcywgZnJhbWVQb2lu
dGVyUmVnaXN0ZXIpOworCisgICAgc2l6ZV90IGxpc3RTaXplID0gbGlzdC5zaXplKCk7CisgICAg
c2l6ZV90IGkgPSAwOworICAgIGZvciAoOyBpIDwgbGlzdFNpemU7IGkrKykgeworICAgICAgICBh
dXRvIGVudHJ5ID0gbGlzdC5hdChpKTsKKyAgICAgICAgaWYgKCFlbnRyeS5yZWcoKS5pc0dQUigp
KQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIHNwb29sZXIubG9hZEdQUihlbnRyeSk7Cisg
ICAgfQorICAgIHNwb29sZXIuZmx1c2hHUFIoKTsKKworICAgIGZvciAoOyBpIDwgbGlzdFNpemU7
IGkrKykKKyAgICAgICAgc3Bvb2xlci5sb2FkRlBSKGxpc3QuYXQoaSkpOworICAgIHNwb29sZXIu
Zmx1c2hGUFIoKTsKK30KKwordm9pZCBBc3NlbWJseUhlbHBlcnM6OmVtaXRTYXZlQ2FsbGVlU2F2
ZXNGb3IoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGNhbGxlZVNhdmVzKQoreworICAgIFJl
Z2lzdGVyU2V0IGRvbnRTYXZlUmVnaXN0ZXJzID0gUmVnaXN0ZXJTZXQoUmVnaXN0ZXJTZXQ6OnN0
YWNrUmVnaXN0ZXJzKCksIFJlZ2lzdGVyU2V0OjphbGxGUFJzKCkpOworICAgIHVuc2lnbmVkIHJl
Z2lzdGVyQ291bnQgPSBjYWxsZWVTYXZlcy0+c2l6ZSgpOworCisgICAgU3RvcmVSZWdTcG9vbGVy
IHNwb29sZXIoKnRoaXMsIGZyYW1lUG9pbnRlclJlZ2lzdGVyKTsKKworICAgIHVuc2lnbmVkIGkg
PSAwOworICAgIGZvciAoOyBpIDwgcmVnaXN0ZXJDb3VudDsgaSsrKSB7CisgICAgICAgIFJlZ2lz
dGVyQXRPZmZzZXQgZW50cnkgPSBjYWxsZWVTYXZlcy0+YXQoaSk7CisgICAgICAgIGlmIChkb250
U2F2ZVJlZ2lzdGVycy5jb250YWlucyhlbnRyeS5yZWcoKSkpCisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgc3Bvb2xlci5zdG9yZUdQUihlbnRyeSk7CisgICAgfQorICAgIHNwb29sZXIu
Zmx1c2hHUFIoKTsKKyAgICBmb3IgKDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkrKykgeworICAgICAg
ICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5ID0gY2FsbGVlU2F2ZXMtPmF0KGkpOworICAgICAgICBp
ZiAoZG9udFNhdmVSZWdpc3RlcnMuY29udGFpbnMoZW50cnkucmVnKCkpKQorICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIHNwb29sZXIuc3RvcmVGUFIoZW50cnkpOworICAgIH0KKyAgICBz
cG9vbGVyLmZsdXNoRlBSKCk7Cit9CisKK3ZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0UmVzdG9y
ZUNhbGxlZVNhdmVzRm9yKGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBjYWxsZWVTYXZlcykK
K3sKKyAgICBSZWdpc3RlclNldCBkb250UmVzdG9yZVJlZ2lzdGVycyA9IFJlZ2lzdGVyU2V0KFJl
Z2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpLCBSZWdpc3RlclNldDo6YWxsRlBScygpKTsKKyAg
ICB1bnNpZ25lZCByZWdpc3RlckNvdW50ID0gY2FsbGVlU2F2ZXMtPnNpemUoKTsKKyAgICAKKyAg
ICBMb2FkUmVnU3Bvb2xlciBzcG9vbGVyKCp0aGlzLCBmcmFtZVBvaW50ZXJSZWdpc3Rlcik7CisK
KyAgICB1bnNpZ25lZCBpID0gMDsKKyAgICBmb3IgKDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkrKykg
eworICAgICAgICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5ID0gY2FsbGVlU2F2ZXMtPmF0KGkpOwor
ICAgICAgICBpZiAoZG9udFJlc3RvcmVSZWdpc3RlcnMuZ2V0KGVudHJ5LnJlZygpKSkKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICBzcG9vbGVyLmxvYWRHUFIoZW50cnkpOworICAgIH0K
KyAgICBzcG9vbGVyLmZsdXNoR1BSKCk7CisgICAgZm9yICg7IGkgPCByZWdpc3RlckNvdW50OyBp
KyspIHsKKyAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCBlbnRyeSA9IGNhbGxlZVNhdmVzLT5hdChp
KTsKKyAgICAgICAgaWYgKGRvbnRSZXN0b3JlUmVnaXN0ZXJzLmdldChlbnRyeS5yZWcoKSkpCisg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgc3Bvb2xlci5sb2FkRlBSKGVudHJ5KTsKKyAg
ICB9CisgICAgc3Bvb2xlci5mbHVzaEZQUigpOworfQorCit2b2lkIEFzc2VtYmx5SGVscGVyczo6
Y29weUxMSW50QmFzZWxpbmVDYWxsZWVTYXZlc0Zyb21GcmFtZU9yUmVnaXN0ZXJUb0VudHJ5RnJh
bWVDYWxsZWVTYXZlc0J1ZmZlcihFbnRyeUZyYW1lKiYgdG9wRW50cnlGcmFtZSwgY29uc3QgVGVt
cFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzKQoreworI2lmIE5VTUJFUl9PRl9DQUxMRUVfU0FW
RVNfUkVHSVNURVJTID4gMAorICAgIC8vIENvcHkgc2F2ZWQgY2FsbGVlU2F2ZXMgb24gc3RhY2sg
b3IgdW5zYXZlZCBjYWxsZWVTYXZlcyBpbiByZWdpc3RlciB0byB2bSBjYWxsZWVTYXZlIGJ1ZmZl
cgorICAgIEdQUlJlZyBkZXN0QnVmZmVyR1BSID0gdXNlZFJlZ2lzdGVycy5nZXRGcmVlR1BSKDAp
OworICAgIEdQUlJlZyB0ZW1wMSA9IHVzZWRSZWdpc3RlcnMuZ2V0RnJlZUdQUigxKTsKKyAgICBG
UFJSZWcgZnBUZW1wMSA9IHVzZWRSZWdpc3RlcnMuZ2V0RnJlZUZQUigwKTsKKyAgICBHUFJSZWcg
dGVtcDIgPSBpc0FSTTY0KCkgPyB1c2VkUmVnaXN0ZXJzLmdldEZyZWVHUFIoMikgOiBJbnZhbGlk
R1BSUmVnOworICAgIEZQUlJlZyBmcFRlbXAyID0gaXNBUk02NCgpID8gdXNlZFJlZ2lzdGVycy5n
ZXRGcmVlRlBSKDEpIDogSW52YWxpZEZQUlJlZzsKKworICAgIGxvYWRQdHIoJnRvcEVudHJ5RnJh
bWUsIGRlc3RCdWZmZXJHUFIpOworICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoRW50cnlGcmFtZTo6
Y2FsbGVlU2F2ZVJlZ2lzdGVyc0J1ZmZlck9mZnNldCgpKSwgZGVzdEJ1ZmZlckdQUik7CisKKyAg
ICBDb3B5U3Bvb2xlciBzcG9vbGVyKCp0aGlzLCBmcmFtZVBvaW50ZXJSZWdpc3RlciwgZGVzdEJ1
ZmZlckdQUiwgdGVtcDEsIHRlbXAyLCBmcFRlbXAxLCBmcFRlbXAyKTsKKworICAgIFJlZ2lzdGVy
QXRPZmZzZXRMaXN0KiBhbGxDYWxsZWVTYXZlcyA9IFJlZ2lzdGVyU2V0Ojp2bUNhbGxlZVNhdmVS
ZWdpc3Rlck9mZnNldHMoKTsKKyAgICBjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCogY3VycmVu
dENhbGxlZVNhdmVzID0gJlJlZ2lzdGVyQXRPZmZzZXRMaXN0OjpsbGludEJhc2VsaW5lQ2FsbGVl
U2F2ZVJlZ2lzdGVycygpOworICAgIFJlZ2lzdGVyU2V0IGRvbnRDb3B5UmVnaXN0ZXJzID0gUmVn
aXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCk7CisgICAgdW5zaWduZWQgcmVnaXN0ZXJDb3VudCA9
IGFsbENhbGxlZVNhdmVzLT5zaXplKCk7CisKKyAgICB1bnNpZ25lZCBpID0gMDsKKyAgICBmb3Ig
KDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkrKykgeworICAgICAgICBSZWdpc3RlckF0T2Zmc2V0IGVu
dHJ5ID0gYWxsQ2FsbGVlU2F2ZXMtPmF0KGkpOworICAgICAgICBpZiAoZG9udENvcHlSZWdpc3Rl
cnMuY29udGFpbnMoZW50cnkucmVnKCkpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
IFJlZ2lzdGVyQXRPZmZzZXQqIGN1cnJlbnRGcmFtZUVudHJ5ID0gY3VycmVudENhbGxlZVNhdmVz
LT5maW5kKGVudHJ5LnJlZygpKTsKKworICAgICAgICBpZiAoIWVudHJ5LnJlZygpLmlzR1BSKCkp
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKGN1cnJlbnRGcmFtZUVudHJ5KQorICAg
ICAgICAgICAgc3Bvb2xlci5sb2FkR1BSKGN1cnJlbnRGcmFtZUVudHJ5LT5vZmZzZXQoKSk7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNwb29sZXIuY29weUdQUihlbnRyeS5yZWcoKS5ncHIo
KSk7CisgICAgICAgIHNwb29sZXIuc3RvcmVHUFIoZW50cnkub2Zmc2V0KCkpOworICAgIH0KKyAg
ICBzcG9vbGVyLmZsdXNoR1BSKCk7CisKKyAgICBmb3IgKDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkr
KykgeworICAgICAgICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5ID0gYWxsQ2FsbGVlU2F2ZXMtPmF0
KGkpOworICAgICAgICBpZiAoZG9udENvcHlSZWdpc3RlcnMuZ2V0KGVudHJ5LnJlZygpKSkKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBSZWdpc3RlckF0T2Zmc2V0KiBjdXJyZW50RnJh
bWVFbnRyeSA9IGN1cnJlbnRDYWxsZWVTYXZlcy0+ZmluZChlbnRyeS5yZWcoKSk7CisKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoZW50cnkucmVnKCkuaXNGUFIoKSk7CisgICAgICAgIGlmIChjdXJy
ZW50RnJhbWVFbnRyeSkKKyAgICAgICAgICAgIHNwb29sZXIubG9hZEZQUihjdXJyZW50RnJhbWVF
bnRyeS0+b2Zmc2V0KCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzcG9vbGVyLmNvcHlG
UFIoZW50cnkucmVnKCkuZnByKCkpOworICAgICAgICBzcG9vbGVyLnN0b3JlRlBSKGVudHJ5Lm9m
ZnNldCgpKTsKKyAgICB9CisgICAgc3Bvb2xlci5mbHVzaEZQUigpOworCisjZWxzZQorICAgIFVO
VVNFRF9QQVJBTSh0b3BFbnRyeUZyYW1lKTsKKyAgICBVTlVTRURfUEFSQU0odXNlZFJlZ2lzdGVy
cyk7CisjZW5kaWYKK30KKwordm9pZCBBc3NlbWJseUhlbHBlcnM6OmVtaXRTYXZlT3JDb3B5TExJ
bnRCYXNlbGluZUNhbGxlZVNhdmVzRm9yKENvZGVCbG9jayogY29kZUJsb2NrLCBWaXJ0dWFsUmVn
aXN0ZXIgb2Zmc2V0VmlydHVhbFJlZ2lzdGVyLCBSZXN0b3JlVGFnUmVnaXN0ZXJNb2RlIHRhZ1Jl
Z2lzdGVyTW9kZSwgR1BSUmVnIHRlbXAxLCBHUFJSZWcgdGVtcDIsIEdQUlJlZyB0ZW1wMykKK3sK
KyAgICBBU1NFUlQoY29kZUJsb2NrKTsKKworICAgIFJFTEVBU0VfQVNTRVJUKCFKSVRDb2RlOjpp
c09wdGltaXppbmdKSVQoY29kZUJsb2NrLT5qaXRUeXBlKCkpKTsKKyAgICBSRUxFQVNFX0FTU0VS
VChjb2RlQmxvY2stPmNhbGxlZVNhdmVSZWdpc3RlcnMoKSA9PSAmUmVnaXN0ZXJBdE9mZnNldExp
c3Q6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCkpOworICAgIGNvbnN0IFJlZ2lz
dGVyQXRPZmZzZXRMaXN0KiBjYWxsZWVTYXZlcyA9ICZSZWdpc3RlckF0T2Zmc2V0TGlzdDo6bGxp
bnRCYXNlbGluZUNhbGxlZVNhdmVSZWdpc3RlcnMoKTsKKyAgICBSZWdpc3RlclNldCBkb250U2F2
ZVJlZ2lzdGVycyA9IFJlZ2lzdGVyU2V0KFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpLCBS
ZWdpc3RlclNldDo6YWxsRlBScygpKTsKKyAgICB1bnNpZ25lZCByZWdpc3RlckNvdW50ID0gY2Fs
bGVlU2F2ZXMtPnNpemUoKTsKKworICAgIEdQUlJlZyBkc3RCdWZmZXJHUFIgPSB0ZW1wMTsKKyAg
ICBhZGRQdHIoVHJ1c3RlZEltbTMyKG9mZnNldFZpcnR1YWxSZWdpc3Rlci5vZmZzZXRJbkJ5dGVz
KCkpLCBmcmFtZVBvaW50ZXJSZWdpc3RlciwgZHN0QnVmZmVyR1BSKTsKKworICAgIENvcHlTcG9v
bGVyIHNwb29sZXIoKnRoaXMsIGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBkc3RCdWZmZXJHUFIsIHRl
bXAyLCB0ZW1wMyk7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVnaXN0ZXJDb3Vu
dDsgaSsrKSB7CisgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQgZW50cnkgPSBjYWxsZWVTYXZlcy0+
YXQoaSk7CisgICAgICAgIGlmIChkb250U2F2ZVJlZ2lzdGVycy5nZXQoZW50cnkucmVnKCkpKQor
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIAorI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisg
ICAgICAgIFVOVVNFRF9QQVJBTSh0YWdSZWdpc3Rlck1vZGUpOworICAgICAgICBVTlVTRURfUEFS
QU0odGVtcCk7CisjZWxzZQorICAgICAgICBpZiAodGFnUmVnaXN0ZXJNb2RlID09IENvcHlCYXNl
bGluZUNhbGxlZVNhdmVkUmVnaXN0ZXJzRnJvbUJhc2VGcmFtZSkKKyAgICAgICAgICAgIHNwb29s
ZXIubG9hZEdQUihlbnRyeS5vZmZzZXQoKSk7CisgICAgICAgIGVsc2UKKyNlbmRpZgorICAgICAg
ICAgICAgc3Bvb2xlci5jb3B5R1BSKGVudHJ5LnJlZygpLmdwcigpKTsKKyAgICAgICAgc3Bvb2xl
ci5zdG9yZUdQUihlbnRyeS5vZmZzZXQoKSk7CisgICAgfQorICAgIHNwb29sZXIuZmx1c2hHUFIo
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCShyZXZpc2lv
biAyNzg4ODYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yOTUsMzEgKzI5NSwxOSBAQCBwdWJsaWM6CiAgICAgICAgIHN0
b3JlMzIoVHJ1c3RlZEltbTMyKHZhbHVlLnBheWxvYWQoKSksIGFkZHJlc3Mud2l0aE9mZnNldChQ
YXlsb2FkT2Zmc2V0KSk7CiAjZW5kaWYKICAgICB9Ci0gICAgCisKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBPcD4gY2xhc3MgU3Bvb2xlcjsKKyAgICBjbGFzcyBMb2FkUmVnU3Bvb2xlcjsKKyAgICBj
bGFzcyBTdG9yZVJlZ1Nwb29sZXI7CisgICAgY2xhc3MgQ29weVNwb29sZXI7CisKICAgICBBZGRy
ZXNzIGFkZHJlc3NGb3IoY29uc3QgUmVnaXN0ZXJBdE9mZnNldCYgZW50cnkpCiAgICAgewogICAg
ICAgICByZXR1cm4gQWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgZW50cnkub2Zm
c2V0KCkpOwogICAgIH0KLSAgICAKLSAgICB2b2lkIGVtaXRTYXZlKGNvbnN0IFJlZ2lzdGVyQXRP
ZmZzZXRMaXN0JiBsaXN0KQotICAgIHsKLSAgICAgICAgZm9yIChjb25zdCBSZWdpc3RlckF0T2Zm
c2V0JiBlbnRyeSA6IGxpc3QpIHsKLSAgICAgICAgICAgIGlmIChlbnRyeS5yZWcoKS5pc0dQUigp
KQotICAgICAgICAgICAgICAgIHN0b3JlUHRyKGVudHJ5LnJlZygpLmdwcigpLCBhZGRyZXNzRm9y
KGVudHJ5KSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgc3RvcmVEb3VibGUo
ZW50cnkucmVnKCkuZnByKCksIGFkZHJlc3NGb3IoZW50cnkpKTsKLSAgICAgICAgfQotICAgIH0K
LSAgICAKLSAgICB2b2lkIGVtaXRSZXN0b3JlKGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRMaXN0JiBs
aXN0KQotICAgIHsKLSAgICAgICAgZm9yIChjb25zdCBSZWdpc3RlckF0T2Zmc2V0JiBlbnRyeSA6
IGxpc3QpIHsKLSAgICAgICAgICAgIGlmIChlbnRyeS5yZWcoKS5pc0dQUigpKQotICAgICAgICAg
ICAgICAgIGxvYWRQdHIoYWRkcmVzc0ZvcihlbnRyeSksIGVudHJ5LnJlZygpLmdwcigpKTsKLSAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBsb2FkRG91YmxlKGFkZHJlc3NGb3IoZW50
cnkpLCBlbnRyeS5yZWcoKS5mcHIoKSk7Ci0gICAgICAgIH0KLSAgICB9CisKKyAgICB2b2lkIGVt
aXRTYXZlKGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRMaXN0Jik7CisgICAgdm9pZCBlbWl0UmVzdG9y
ZShjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCYpOwogCiAgICAgdm9pZCBlbWl0U2F2ZUNhbGxl
ZVNhdmVzRm9yKENvZGVCbG9jayogY29kZUJsb2NrKQogICAgIHsKQEAgLTMyOSw1NCArMzE3LDEx
IEBAIHB1YmxpYzoKICAgICAgICAgZW1pdFNhdmVDYWxsZWVTYXZlc0ZvcihjYWxsZWVTYXZlcyk7
CiAgICAgfQogCi0gICAgdm9pZCBlbWl0U2F2ZUNhbGxlZVNhdmVzRm9yKGNvbnN0IFJlZ2lzdGVy
QXRPZmZzZXRMaXN0KiBjYWxsZWVTYXZlcykKLSAgICB7Ci0gICAgICAgIFJlZ2lzdGVyU2V0IGRv
bnRTYXZlUmVnaXN0ZXJzID0gUmVnaXN0ZXJTZXQoUmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJz
KCksIFJlZ2lzdGVyU2V0OjphbGxGUFJzKCkpOwotICAgICAgICB1bnNpZ25lZCByZWdpc3RlckNv
dW50ID0gY2FsbGVlU2F2ZXMtPnNpemUoKTsKLQotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgcmVnaXN0ZXJDb3VudDsgaSsrKSB7Ci0gICAgICAgICAgICBSZWdpc3RlckF0T2Zmc2V0
IGVudHJ5ID0gY2FsbGVlU2F2ZXMtPmF0KGkpOwotICAgICAgICAgICAgaWYgKGRvbnRTYXZlUmVn
aXN0ZXJzLmdldChlbnRyeS5yZWcoKSkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgICAgICBzdG9yZVB0cihlbnRyeS5yZWcoKS5ncHIoKSwgQWRkcmVzcyhmcmFtZVBvaW50ZXJS
ZWdpc3RlciwgZW50cnkub2Zmc2V0KCkpKTsKLSAgICAgICAgfQotICAgIH0KKyAgICB2b2lkIGVt
aXRTYXZlQ2FsbGVlU2F2ZXNGb3IoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGNhbGxlZVNh
dmVzKTsKICAgICAKICAgICBlbnVtIFJlc3RvcmVUYWdSZWdpc3Rlck1vZGUgeyBVc2VFeGlzdGlu
Z1RhZ1JlZ2lzdGVyQ29udGVudHMsIENvcHlCYXNlbGluZUNhbGxlZVNhdmVkUmVnaXN0ZXJzRnJv
bUJhc2VGcmFtZSB9OwogCi0gICAgdm9pZCBlbWl0U2F2ZU9yQ29weUNhbGxlZVNhdmVzRm9yKENv
ZGVCbG9jayogY29kZUJsb2NrLCBWaXJ0dWFsUmVnaXN0ZXIgb2Zmc2V0VmlydHVhbFJlZ2lzdGVy
LCBSZXN0b3JlVGFnUmVnaXN0ZXJNb2RlIHRhZ1JlZ2lzdGVyTW9kZSwgR1BSUmVnIHRlbXApCi0g
ICAgewotICAgICAgICBBU1NFUlQoY29kZUJsb2NrKTsKLSAgICAgICAgCi0gICAgICAgIGNvbnN0
IFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBjYWxsZWVTYXZlcyA9IGNvZGVCbG9jay0+Y2FsbGVlU2F2
ZVJlZ2lzdGVycygpOwotICAgICAgICBSZWdpc3RlclNldCBkb250U2F2ZVJlZ2lzdGVycyA9IFJl
Z2lzdGVyU2V0KFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpLCBSZWdpc3RlclNldDo6YWxs
RlBScygpKTsKLSAgICAgICAgdW5zaWduZWQgcmVnaXN0ZXJDb3VudCA9IGNhbGxlZVNhdmVzLT5z
aXplKCk7Ci0KLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBSZWdpc3RlclNldCBiYXNlbGlu
ZUNhbGxlZVNhdmVzID0gUmVnaXN0ZXJTZXQ6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0
ZXJzKCk7Ci0jZW5kaWYKLSAgICAgICAgCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCByZWdpc3RlckNvdW50OyBpKyspIHsKLSAgICAgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQgZW50
cnkgPSBjYWxsZWVTYXZlcy0+YXQoaSk7Ci0gICAgICAgICAgICBpZiAoZG9udFNhdmVSZWdpc3Rl
cnMuZ2V0KGVudHJ5LnJlZygpKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
ICAgIAotICAgICAgICAgICAgR1BSUmVnIHJlZ2lzdGVyVG9Xcml0ZTsKLSAgICAgICAgICAgIAot
I2lmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgICAgICAgICBVTlVTRURfUEFSQU0odGFnUmVnaXN0
ZXJNb2RlKTsKLSAgICAgICAgICAgIFVOVVNFRF9QQVJBTSh0ZW1wKTsKLSNlbHNlCi0gICAgICAg
ICAgICBpZiAodGFnUmVnaXN0ZXJNb2RlID09IENvcHlCYXNlbGluZUNhbGxlZVNhdmVkUmVnaXN0
ZXJzRnJvbUJhc2VGcmFtZSAmJiBiYXNlbGluZUNhbGxlZVNhdmVzLmdldChlbnRyeS5yZWcoKSkp
IHsKLSAgICAgICAgICAgICAgICByZWdpc3RlclRvV3JpdGUgPSB0ZW1wOwotICAgICAgICAgICAg
ICAgIGxvYWRQdHIoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyLCBlbnRyeS5vZmZzZXQoKSksIHJlZ2lzdGVyVG9Xcml0ZSk7Ci0gICAgICAgICAgICB9
IGVsc2UKLSNlbmRpZgotICAgICAgICAgICAgICAgIHJlZ2lzdGVyVG9Xcml0ZSA9IGVudHJ5LnJl
ZygpLmdwcigpOwotCi0gICAgICAgICAgICBzdG9yZVB0cihyZWdpc3RlclRvV3JpdGUsIEFkZHJl
c3MoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIG9mZnNldFZpcnR1YWxSZWdpc3Rlci5vZmZzZXRJbkJ5
dGVzKCkgKyBlbnRyeS5vZmZzZXQoKSkpOwotICAgICAgICB9Ci0gICAgfQorICAgIHZvaWQgZW1p
dFNhdmVPckNvcHlMTEludEJhc2VsaW5lQ2FsbGVlU2F2ZXNGb3IoQ29kZUJsb2NrKiwgVmlydHVh
bFJlZ2lzdGVyIG9mZnNldFZpcnR1YWxSZWdpc3RlciwgUmVzdG9yZVRhZ1JlZ2lzdGVyTW9kZSwg
R1BSUmVnIHRlbXAxLCBHUFJSZWcgdGVtcDIsIEdQUlJlZyB0ZW1wMyk7CiAgICAgCiAgICAgdm9p
ZCBlbWl0UmVzdG9yZUNhbGxlZVNhdmVzRm9yKENvZGVCbG9jayogY29kZUJsb2NrKQogICAgIHsK
QEAgLTM4NiwxOCArMzMxLDcgQEAgcHVibGljOgogICAgICAgICBlbWl0UmVzdG9yZUNhbGxlZVNh
dmVzRm9yKGNhbGxlZVNhdmVzKTsKICAgICB9CiAKLSAgICB2b2lkIGVtaXRSZXN0b3JlQ2FsbGVl
U2F2ZXNGb3IoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGNhbGxlZVNhdmVzKQotICAgIHsK
LSAgICAgICAgUmVnaXN0ZXJTZXQgZG9udFJlc3RvcmVSZWdpc3RlcnMgPSBSZWdpc3RlclNldChS
ZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKSwgUmVnaXN0ZXJTZXQ6OmFsbEZQUnMoKSk7Ci0g
ICAgICAgIHVuc2lnbmVkIHJlZ2lzdGVyQ291bnQgPSBjYWxsZWVTYXZlcy0+c2l6ZSgpOwotICAg
ICAgICAKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkr
KykgewotICAgICAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCBlbnRyeSA9IGNhbGxlZVNhdmVzLT5h
dChpKTsKLSAgICAgICAgICAgIGlmIChkb250UmVzdG9yZVJlZ2lzdGVycy5nZXQoZW50cnkucmVn
KCkpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgbG9hZFB0cihBZGRy
ZXNzKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBlbnRyeS5vZmZzZXQoKSksIGVudHJ5LnJlZygpLmdw
cigpKTsKLSAgICAgICAgfQotICAgIH0KKyAgICB2b2lkIGVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXNG
b3IoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGNhbGxlZVNhdmVzKTsKIAogICAgIHZvaWQg
ZW1pdFNhdmVDYWxsZWVTYXZlcygpCiAgICAgewpAQCAtNDc4LDU4ICs0MTIsNyBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIHJlc3RvcmVDYWxsZWVTYXZlc0Zyb21FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNC
dWZmZXIoRW50cnlGcmFtZSomKTsKIAotICAgIHZvaWQgY29weUxMSW50QmFzZWxpbmVDYWxsZWVT
YXZlc0Zyb21GcmFtZU9yUmVnaXN0ZXJUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcihFbnRy
eUZyYW1lKiYgdG9wRW50cnlGcmFtZSwgY29uc3QgVGVtcFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0
ZXJzID0geyBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCkgfSkKLSAgICB7
Ci0jaWYgTlVNQkVSX09GX0NBTExFRV9TQVZFU19SRUdJU1RFUlMgPiAwCi0gICAgICAgIEdQUlJl
ZyB0ZW1wMSA9IHVzZWRSZWdpc3RlcnMuZ2V0RnJlZUdQUigwKTsKLSAgICAgICAgR1BSUmVnIHRl
bXAyID0gdXNlZFJlZ2lzdGVycy5nZXRGcmVlR1BSKDEpOwotICAgICAgICBGUFJSZWcgZnBUZW1w
ID0gdXNlZFJlZ2lzdGVycy5nZXRGcmVlRlBSKCk7Ci0gICAgICAgIEFTU0VSVCh0ZW1wMiAhPSBJ
bnZhbGlkR1BSUmVnKTsKLQotICAgICAgICAvLyBDb3B5IHNhdmVkIGNhbGxlZVNhdmVzIG9uIHN0
YWNrIG9yIHVuc2F2ZWQgY2FsbGVlU2F2ZXMgaW4gcmVnaXN0ZXIgdG8gdm0gY2FsbGVlU2F2ZSBi
dWZmZXIKLSAgICAgICAgbG9hZFB0cigmdG9wRW50cnlGcmFtZSwgdGVtcDEpOwotICAgICAgICBh
ZGRQdHIoVHJ1c3RlZEltbTMyKEVudHJ5RnJhbWU6OmNhbGxlZVNhdmVSZWdpc3RlcnNCdWZmZXJP
ZmZzZXQoKSksIHRlbXAxKTsKLQotICAgICAgICBSZWdpc3RlckF0T2Zmc2V0TGlzdCogYWxsQ2Fs
bGVlU2F2ZXMgPSBSZWdpc3RlclNldDo6dm1DYWxsZWVTYXZlUmVnaXN0ZXJPZmZzZXRzKCk7Ci0g
ICAgICAgIGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBjdXJyZW50Q2FsbGVlU2F2ZXMgPSAm
UmVnaXN0ZXJBdE9mZnNldExpc3Q6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCk7
Ci0gICAgICAgIFJlZ2lzdGVyU2V0IGRvbnRDb3B5UmVnaXN0ZXJzID0gUmVnaXN0ZXJTZXQ6OnN0
YWNrUmVnaXN0ZXJzKCk7Ci0gICAgICAgIHVuc2lnbmVkIHJlZ2lzdGVyQ291bnQgPSBhbGxDYWxs
ZWVTYXZlcy0+c2l6ZSgpOwotCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZWdp
c3RlckNvdW50OyBpKyspIHsKLSAgICAgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQgZW50cnkgPSBh
bGxDYWxsZWVTYXZlcy0+YXQoaSk7Ci0gICAgICAgICAgICBpZiAoZG9udENvcHlSZWdpc3RlcnMu
Z2V0KGVudHJ5LnJlZygpKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAg
IFJlZ2lzdGVyQXRPZmZzZXQqIGN1cnJlbnRGcmFtZUVudHJ5ID0gY3VycmVudENhbGxlZVNhdmVz
LT5maW5kKGVudHJ5LnJlZygpKTsKLQotICAgICAgICAgICAgaWYgKGVudHJ5LnJlZygpLmlzR1BS
KCkpIHsKLSAgICAgICAgICAgICAgICBHUFJSZWcgcmVnVG9TdG9yZTsKLSAgICAgICAgICAgICAg
ICBpZiAoY3VycmVudEZyYW1lRW50cnkpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gTG9hZCBj
YWxsZWVTYXZlIGZyb20gc3RhY2sgaW50byB0ZW1wIHJlZ2lzdGVyCi0gICAgICAgICAgICAgICAg
ICAgIHJlZ1RvU3RvcmUgPSB0ZW1wMjsKLSAgICAgICAgICAgICAgICAgICAgbG9hZFB0cihBZGRy
ZXNzKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBjdXJyZW50RnJhbWVFbnRyeS0+b2Zmc2V0KCkpLCBy
ZWdUb1N0b3JlKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAg
Ly8gSnVzdCBzdG9yZSBjYWxsZWUgc2F2ZSBkaXJlY3RseQotICAgICAgICAgICAgICAgICAgICBy
ZWdUb1N0b3JlID0gZW50cnkucmVnKCkuZ3ByKCk7Ci0KLSAgICAgICAgICAgICAgICBzdG9yZVB0
cihyZWdUb1N0b3JlLCBBZGRyZXNzKHRlbXAxLCBlbnRyeS5vZmZzZXQoKSkpOwotICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBGUFJSZWcgZnBSZWdUb1N0b3JlOwotICAgICAg
ICAgICAgICAgIGlmIChjdXJyZW50RnJhbWVFbnRyeSkgewotICAgICAgICAgICAgICAgICAgICAv
LyBMb2FkIGNhbGxlZVNhdmUgZnJvbSBzdGFjayBpbnRvIHRlbXAgcmVnaXN0ZXIKLSAgICAgICAg
ICAgICAgICAgICAgZnBSZWdUb1N0b3JlID0gZnBUZW1wOwotICAgICAgICAgICAgICAgICAgICBs
b2FkRG91YmxlKEFkZHJlc3MoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGN1cnJlbnRGcmFtZUVudHJ5
LT5vZmZzZXQoKSksIGZwUmVnVG9TdG9yZSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlCi0gICAg
ICAgICAgICAgICAgICAgIC8vIEp1c3Qgc3RvcmUgY2FsbGVlIHNhdmUgZGlyZWN0bHkKLSAgICAg
ICAgICAgICAgICAgICAgZnBSZWdUb1N0b3JlID0gZW50cnkucmVnKCkuZnByKCk7Ci0KLSAgICAg
ICAgICAgICAgICBzdG9yZURvdWJsZShmcFJlZ1RvU3RvcmUsIEFkZHJlc3ModGVtcDEsIGVudHJ5
Lm9mZnNldCgpKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSNlbHNlCi0gICAgICAgIFVO
VVNFRF9QQVJBTSh0b3BFbnRyeUZyYW1lKTsKLSAgICAgICAgVU5VU0VEX1BBUkFNKHVzZWRSZWdp
c3RlcnMpOwotI2VuZGlmCi0gICAgfQorICAgIHZvaWQgY29weUxMSW50QmFzZWxpbmVDYWxsZWVT
YXZlc0Zyb21GcmFtZU9yUmVnaXN0ZXJUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcihFbnRy
eUZyYW1lKiYsIGNvbnN0IFRlbXBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycyA9IHsgUmVnaXN0
ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpIH0pOwogCiAgICAgdm9pZCBlbWl0TWF0
ZXJpYWxpemVUYWdDaGVja1JlZ2lzdGVycygpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnNTcG9vbGVycy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzU3Bvb2xlcnMuaAkobm9uZXhpc3Rl
bnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVyc1Nwb29sZXJz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1ODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShKSVQp
CisKKyNpbmNsdWRlICJBc3NlbWJseUhlbHBlcnMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIE9wPgorY2xhc3MgQXNzZW1ibHlIZWxwZXJzOjpTcG9vbGVyIHsKK3B1
YmxpYzoKKyAgICB1c2luZyBKSVQgPSBBc3NlbWJseUhlbHBlcnM7CisKKyAgICBTcG9vbGVyKEpJ
VCYgaml0LCBHUFJSZWcgYmFzZUdQUikKKyAgICAgICAgOiBtX2ppdChqaXQpCisgICAgICAgICwg
bV9iYXNlR1BSKGJhc2VHUFIpCisgICAgeyB9CisKKyAgICB2b2lkIGhhbmRsZUdQUihjb25zdCBS
ZWdpc3RlckF0T2Zmc2V0JiBlbnRyeSkKKyAgICB7CisgICAgICAgIEFTU0VSVChlbnRyeS5yZWco
KS5pc0dQUigpKTsKKyAgICAgICAgaWYgY29uc3RleHByICghaGFzUGFpck9wKQorICAgICAgICAg
ICAgcmV0dXJuIG9wKCkuaGFuZGxlU2luZ2xlKGVudHJ5Lm9mZnNldCgpLCBlbnRyeS5yZWcoKS5n
cHIoKSk7CisKKyAgICAgICAgaWYgKCFtX2J1ZmZlcmVkRW50cnkucmVnKCkuaXNTZXQoKSkgewor
ICAgICAgICAgICAgbV9idWZmZXJlZEVudHJ5ID0gZW50cnk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyAgICAgICAgaWYgKGVudHJ5Lm9mZnNldCgpID09IG1fYnVmZmVyZWRFbnRy
eS5vZmZzZXQoKSArIHN0YXRpY19jYXN0PHB0cmRpZmZfdD4oZ3ByU2l6ZSkpIHsKKyAgICAgICAg
ICAgIG9wKCkuaGFuZGxlUGFpcihtX2J1ZmZlcmVkRW50cnkub2Zmc2V0KCksIG1fYnVmZmVyZWRF
bnRyeS5yZWcoKS5ncHIoKSwgZW50cnkucmVnKCkuZ3ByKCkpOworICAgICAgICAgICAgbV9idWZm
ZXJlZEVudHJ5ID0geyB9OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAg
IGlmIChtX2J1ZmZlcmVkRW50cnkub2Zmc2V0KCkgPT0gZW50cnkub2Zmc2V0KCkgKyBzdGF0aWNf
Y2FzdDxwdHJkaWZmX3Q+KGdwclNpemUpKSB7CisgICAgICAgICAgICBvcCgpLmhhbmRsZVBhaXIo
ZW50cnkub2Zmc2V0KCksIGVudHJ5LnJlZygpLmdwcigpLCBtX2J1ZmZlcmVkRW50cnkucmVnKCku
Z3ByKCkpOworICAgICAgICAgICAgbV9idWZmZXJlZEVudHJ5ID0geyB9OworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgZmx1c2hHUFIoKTsKKyAgICAgICAgaGFuZGxl
R1BSKGVudHJ5KTsKKyAgICB9CisKKyAgICB2b2lkIGZsdXNoR1BSKCkKKyAgICB7CisgICAgICAg
IGlmIGNvbnN0ZXhwciAoaGFzUGFpck9wKSB7CisgICAgICAgICAgICBpZiAobV9idWZmZXJlZEVu
dHJ5LnJlZygpLmlzU2V0KCkpIHsKKyAgICAgICAgICAgICAgICBvcCgpLmhhbmRsZVNpbmdsZSht
X2J1ZmZlcmVkRW50cnkub2Zmc2V0KCksIG1fYnVmZmVyZWRFbnRyeS5yZWcoKS5ncHIoKSk7Cisg
ICAgICAgICAgICAgICAgbV9idWZmZXJlZEVudHJ5ID0geyB9OworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorCisgICAgdm9pZCBoYW5kbGVGUFIoY29uc3QgUmVnaXN0ZXJBdE9mZnNl
dCYgZW50cnkpCisgICAgeworICAgICAgICBBU1NFUlQoZW50cnkucmVnKCkuaXNGUFIoKSk7Cisg
ICAgICAgIGlmIGNvbnN0ZXhwciAoIWhhc1BhaXJPcCkKKyAgICAgICAgICAgIHJldHVybiBvcCgp
LmhhbmRsZVNpbmdsZShlbnRyeS5vZmZzZXQoKSwgZW50cnkucmVnKCkuZnByKCkpOworCisgICAg
ICAgIGlmICghbV9idWZmZXJlZEVudHJ5LnJlZygpLmlzU2V0KCkpIHsKKyAgICAgICAgICAgIG1f
YnVmZmVyZWRFbnRyeSA9IGVudHJ5OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisg
ICAgICAgIGlmIChlbnRyeS5vZmZzZXQoKSA9PSBtX2J1ZmZlcmVkRW50cnkub2Zmc2V0KCkgKyBz
dGF0aWNfY2FzdDxwdHJkaWZmX3Q+KGZwclNpemUpKSB7CisgICAgICAgICAgICBvcCgpLmhhbmRs
ZVBhaXIobV9idWZmZXJlZEVudHJ5Lm9mZnNldCgpLCBtX2J1ZmZlcmVkRW50cnkucmVnKCkuZnBy
KCksIGVudHJ5LnJlZygpLmZwcigpKTsKKyAgICAgICAgICAgIG1fYnVmZmVyZWRFbnRyeSA9IHsg
fTsKKyAgICAgICAgfSBlbHNlIGlmIChtX2J1ZmZlcmVkRW50cnkub2Zmc2V0KCkgPT0gZW50cnku
b2Zmc2V0KCkgKyBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KGZwclNpemUpKSB7CisgICAgICAgICAg
ICBvcCgpLmhhbmRsZVBhaXIoZW50cnkub2Zmc2V0KCksIGVudHJ5LnJlZygpLmZwcigpLCBtX2J1
ZmZlcmVkRW50cnkucmVnKCkuZnByKCkpOworICAgICAgICAgICAgbV9idWZmZXJlZEVudHJ5ID0g
eyB9OworICAgICAgICB9CisKKyAgICAgICAgZmx1c2hGUFIoKTsKKyAgICAgICAgaGFuZGxlRlBS
KGVudHJ5KTsKKyAgICB9CisKKyAgICB2b2lkIGZsdXNoRlBSKCkKKyAgICB7CisgICAgICAgIGlm
IGNvbnN0ZXhwciAoaGFzUGFpck9wKSB7CisgICAgICAgICAgICBpZiAobV9idWZmZXJlZEVudHJ5
LnJlZygpLmlzU2V0KCkpIHsKKyAgICAgICAgICAgICAgICBvcCgpLmhhbmRsZVNpbmdsZShtX2J1
ZmZlcmVkRW50cnkub2Zmc2V0KCksIG1fYnVmZmVyZWRFbnRyeS5yZWcoKS5mcHIoKSk7CisgICAg
ICAgICAgICAgICAgbV9idWZmZXJlZEVudHJ5ID0geyB9OworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgfQorCitwcml2YXRlOgorICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGdwclNp
emUgPSBzaXplb2YoQ1BVUmVnaXN0ZXIpOworICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGZw
clNpemUgPSBzaXplb2YoZG91YmxlKTsKKyNpZiBDUFUoQVJNNjQpCisgICAgc3RhdGljIGNvbnN0
ZXhwciBib29sIGhhc1BhaXJPcCA9IHRydWU7CisjZWxzZQorICAgIHN0YXRpYyBjb25zdGV4cHIg
Ym9vbCBoYXNQYWlyT3AgPSBmYWxzZTsKKyNlbmRpZgorCisgICAgT3AmIG9wKCkgeyByZXR1cm4g
KnJlaW50ZXJwcmV0X2Nhc3Q8T3AqPih0aGlzKTsgfQorCitwcm90ZWN0ZWQ6CisgICAgSklUJiBt
X2ppdDsKKyAgICBHUFJSZWcgbV9iYXNlR1BSOworICAgIFJlZ2lzdGVyQXRPZmZzZXQgbV9idWZm
ZXJlZEVudHJ5OworfTsKKworY2xhc3MgQXNzZW1ibHlIZWxwZXJzOjpMb2FkUmVnU3Bvb2xlciA6
IHB1YmxpYyBBc3NlbWJseUhlbHBlcnM6OlNwb29sZXI8TG9hZFJlZ1Nwb29sZXI+IHsKKyAgICB1
c2luZyBCYXNlID0gU3Bvb2xlcjxMb2FkUmVnU3Bvb2xlcj47CisgICAgdXNpbmcgSklUID0gQmFz
ZTo6SklUOworcHVibGljOgorICAgIExvYWRSZWdTcG9vbGVyKEpJVCYgaml0LCBHUFJSZWcgYmFz
ZUdQUikKKyAgICAgICAgOiBCYXNlKGppdCwgYmFzZUdQUikKKyAgICB7IH0KKworICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBsb2FkR1BSKGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXQmIGVudHJ5KSB7IEJh
c2U6OmhhbmRsZUdQUihlbnRyeSk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZmx1c2hHUFIo
KSB7IEJhc2U6OmZsdXNoR1BSKCk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbG9hZEZQUihj
b25zdCBSZWdpc3RlckF0T2Zmc2V0JiBlbnRyeSkgeyBCYXNlOjpoYW5kbGVGUFIoZW50cnkpOyB9
CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGZsdXNoRlBSKCkgeyBCYXNlOjpmbHVzaEZQUigpOyB9
CisKKyNpZiBDUFUoQVJNNjQpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgUmVnVHlwZT4KKyAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgaGFuZGxlUGFpcihwdHJkaWZmX3Qgb2Zmc2V0LCBSZWdUeXBlIHJl
ZzEsIFJlZ1R5cGUgcmVnMikKKyAgICB7CisgICAgICAgIG1faml0LmxvYWRQYWlyNjQobV9iYXNl
R1BSLCBUcnVzdGVkSW1tMzIob2Zmc2V0KSwgcmVnMSwgcmVnMik7CisgICAgfQorI2Vsc2UKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBSZWdUeXBlPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBoYW5k
bGVQYWlyKHB0cmRpZmZfdCwgUmVnVHlwZSwgUmVnVHlwZSkgeyB9CisjZW5kaWYKKworICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBoYW5kbGVTaW5nbGUocHRyZGlmZl90IG9mZnNldCwgR1BSUmVnIHJl
ZykKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgbV9qaXQubG9hZDY0KEFkZHJl
c3MobV9iYXNlR1BSLCBvZmZzZXQpLCByZWcpOworI2Vsc2UKKyAgICAgICAgbV9qaXQubG9hZDMy
KEFkZHJlc3MobV9iYXNlR1BSLCBvZmZzZXQpLCByZWcpOworI2VuZGlmCisgICAgfQorCisgICAg
QUxXQVlTX0lOTElORSB2b2lkIGhhbmRsZVNpbmdsZShwdHJkaWZmX3Qgb2Zmc2V0LCBGUFJSZWcg
cmVnKQorICAgIHsKKyAgICAgICAgbV9qaXQubG9hZERvdWJsZShBZGRyZXNzKG1fYmFzZUdQUiwg
b2Zmc2V0KSwgcmVnKTsKKyAgICB9Cit9OworCitjbGFzcyBBc3NlbWJseUhlbHBlcnM6OlN0b3Jl
UmVnU3Bvb2xlciA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnM6OlNwb29sZXI8U3RvcmVSZWdTcG9v
bGVyPiB7CisgICAgdXNpbmcgQmFzZSA9IFNwb29sZXI8U3RvcmVSZWdTcG9vbGVyPjsKKyAgICB1
c2luZyBKSVQgPSB0eXBlbmFtZSBCYXNlOjpKSVQ7CitwdWJsaWM6CisgICAgU3RvcmVSZWdTcG9v
bGVyKEpJVCYgaml0LCBHUFJSZWcgYmFzZUdQUikKKyAgICAgICAgOiBCYXNlKGppdCwgYmFzZUdQ
UikKKyAgICB7IH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzdG9yZUdQUihjb25zdCBSZWdp
c3RlckF0T2Zmc2V0JiBlbnRyeSkgeyBCYXNlOjpoYW5kbGVHUFIoZW50cnkpOyB9CisgICAgQUxX
QVlTX0lOTElORSB2b2lkIGZsdXNoR1BSKCkgeyBCYXNlOjpmbHVzaEdQUigpOyB9CisgICAgQUxX
QVlTX0lOTElORSB2b2lkIHN0b3JlRlBSKGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXQmIGVudHJ5KSB7
IEJhc2U6OmhhbmRsZUZQUihlbnRyeSk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZmx1c2hG
UFIoKSB7IEJhc2U6OmZsdXNoRlBSKCk7IH0KKworI2lmIENQVShBUk02NCkKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBSZWdUeXBlPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBoYW5kbGVQYWlyKHB0
cmRpZmZfdCBvZmZzZXQsIFJlZ1R5cGUgcmVnMSwgUmVnVHlwZSByZWcyKQorICAgIHsKKyAgICAg
ICAgbV9qaXQuc3RvcmVQYWlyNjQocmVnMSwgcmVnMiwgbV9iYXNlR1BSLCBUcnVzdGVkSW1tMzIo
b2Zmc2V0KSk7CisgICAgfQorI2Vsc2UKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSZWdUeXBlPgor
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBoYW5kbGVQYWlyKHB0cmRpZmZfdCwgUmVnVHlwZSwgUmVn
VHlwZSkgeyB9CisjZW5kaWYKKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBoYW5kbGVTaW5nbGUo
cHRyZGlmZl90IG9mZnNldCwgR1BSUmVnIHJlZykKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkK
KyAgICAgICAgbV9qaXQuc3RvcmU2NChyZWcsIEFkZHJlc3MobV9iYXNlR1BSLCBvZmZzZXQpKTsK
KyNlbHNlCisgICAgICAgIG1faml0LnN0b3JlMzIocmVnLCBBZGRyZXNzKG1fYmFzZUdQUiwgb2Zm
c2V0KSk7CisjZW5kaWYKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgaGFuZGxlU2lu
Z2xlKHB0cmRpZmZfdCBvZmZzZXQsIEZQUlJlZyByZWcpCisgICAgeworICAgICAgICBtX2ppdC5z
dG9yZURvdWJsZShyZWcsIEFkZHJlc3MobV9iYXNlR1BSLCBvZmZzZXQpKTsKKyAgICB9Cit9Owor
CitjbGFzcyBBc3NlbWJseUhlbHBlcnM6OkNvcHlTcG9vbGVyIHsKK3B1YmxpYzoKKyAgICB1c2lu
ZyBKSVQgPSBBc3NlbWJseUhlbHBlcnM7CisgICAgdXNpbmcgQWRkcmVzcyA9IEpJVDo6QWRkcmVz
czsKKyAgICB1c2luZyBUcnVzdGVkSW1tMzIgPSBKSVQ6OlRydXN0ZWRJbW0zMjsKKworICAgIHN0
cnVjdCBTb3VyY2UgeworICAgIHByaXZhdGU6CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJl
Z1R5cGU+IHN0cnVjdCBSZWdHZXR0ZXIgeworICAgICAgICAgICAgc3RhdGljIFJlZ1R5cGUgZ2V0
KFJlZyk7CisgICAgICAgIH07CisgICAgICAgIHRlbXBsYXRlPD4gc3RydWN0IFJlZ0dldHRlcjxH
UFJSZWc+IHsKKyAgICAgICAgICAgIHN0YXRpYyBHUFJSZWcgZ2V0KFJlZyByZWcpIHsgcmV0dXJu
IHJlZy5ncHIoKTsgfQorICAgICAgICB9OworICAgICAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBSZWdH
ZXR0ZXI8RlBSUmVnPiB7CisgICAgICAgICAgICBzdGF0aWMgRlBSUmVnIGdldChSZWcgcmVnKSB7
IHJldHVybiByZWcuZnByKCk7IH0KKyAgICAgICAgfTsKKworICAgIHB1YmxpYzoKKyAgICAgICAg
ZW51bSBjbGFzcyBUeXBlIHsgQnVmZmVyT2Zmc2V0LCBSZWcsIEVuY29kZWRKU1ZhbHVlIH0gdHlw
ZTsKKyAgICAgICAgaW50IG9mZnNldDsKKyAgICAgICAgUmVnIHJlZzsKKyAgICAgICAgRW5jb2Rl
ZEpTVmFsdWUgdmFsdWU7CisKKy8vICAgICAgICB0ZW1wbGF0ZTw+IEdQUlJlZyBnZXRSZWc8R1BS
UmVnPigpIHsgcmV0dXJuIHJlZy5ncHIoKTsgfTsKKy8vICAgICAgICB0ZW1wbGF0ZTw+IEZQUlJl
ZyBnZXRSZWc8RlBSUmVnPigpIHsgcmV0dXJuIHJlZy5mcHIoKTsgfTsKKyAgICAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgUmVnVHlwZT4gUmVnVHlwZSBnZXRSZWcoKSB7IHJldHVybiBSZWdHZXR0ZXI8
UmVnVHlwZT46OmdldChyZWcpOyB9OworICAgIH07CisKKyAgICBlbnVtIGNsYXNzIEJ1ZmZlclJl
Z3MgeworICAgICAgICBOZWVkUHJlc2VydmF0aW9uLAorICAgICAgICBBbGxvd01vZGlmaWNhdGlv
bgorICAgIH07CisKKyAgICBDb3B5U3Bvb2xlcihCdWZmZXJSZWdzIGF0dHJpYnV0ZSwgSklUJiBq
aXQsIEdQUlJlZyBzcmNCdWZmZXIsIEdQUlJlZyBkZXN0QnVmZmVyLCBHUFJSZWcgdGVtcDEsIEdQ
UlJlZyB0ZW1wMiwgRlBSUmVnIGZwVGVtcDEgPSBJbnZhbGlkRlBSUmVnLCBGUFJSZWcgZnBUZW1w
MiA9IEludmFsaWRGUFJSZWcpCisgICAgICAgIDogbV9qaXQoaml0KQorICAgICAgICAsIG1fc3Jj
QnVmZmVyR1BSKHNyY0J1ZmZlcikKKyAgICAgICAgLCBtX2RzdEJ1ZmZlckdQUihkZXN0QnVmZmVy
KQorICAgICAgICAsIG1fdGVtcDFHUFIodGVtcDEpCisgICAgICAgICwgbV90ZW1wMkdQUih0ZW1w
MikKKyAgICAgICAgLCBtX3RlbXAxRlBSKGZwVGVtcDEpCisgICAgICAgICwgbV90ZW1wMkZQUihm
cFRlbXAyKQorICAgICAgICAsIG1fYnVmZmVyUmVnc0F0dHIoYXR0cmlidXRlKQorICAgIHsKKyAg
ICAgICAgaWYgY29uc3RleHByIChoYXNQYWlyT3AgJiYgIWlzQVJNNjQoKSkKKyAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7IC8vIHVuc3VwcG9ydGVkIGFyY2hpdGVjdHVy
ZS4KKyAgICB9CisKKyAgICBDb3B5U3Bvb2xlcihKSVQmIGppdCwgR1BSUmVnIHNyY0J1ZmZlciwg
R1BSUmVnIGRlc3RCdWZmZXIsIEdQUlJlZyB0ZW1wMSwgR1BSUmVnIHRlbXAyLCBGUFJSZWcgZnBU
ZW1wMSA9IEludmFsaWRGUFJSZWcsIEZQUlJlZyBmcFRlbXAyID0gSW52YWxpZEZQUlJlZykKKyAg
ICAgICAgOiBDb3B5U3Bvb2xlcihCdWZmZXJSZWdzOjpOZWVkUHJlc2VydmF0aW9uLCBqaXQsIHNy
Y0J1ZmZlciwgZGVzdEJ1ZmZlciwgdGVtcDEsIHRlbXAyLCBmcFRlbXAxLCBmcFRlbXAyKQorICAg
IHsgfQorCitwcml2YXRlOgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJlZ1R5cGU+IFJlZ1R5cGUg
dGVtcDEoKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSZWdUeXBlPiBSZWdUeXBlIHRl
bXAyKCkgY29uc3Q7CisKKyAgICB0ZW1wbGF0ZTw+IEdQUlJlZyB0ZW1wMTxHUFJSZWc+KCkgY29u
c3QgeyByZXR1cm4gbV90ZW1wMUdQUjsgfQorICAgIHRlbXBsYXRlPD4gR1BSUmVnIHRlbXAyPEdQ
UlJlZz4oKSBjb25zdCB7IHJldHVybiBtX3RlbXAyR1BSOyB9CisgICAgdGVtcGxhdGU8PiBGUFJS
ZWcgdGVtcDE8RlBSUmVnPigpIGNvbnN0IHsgcmV0dXJuIG1fdGVtcDFGUFI7IH0KKyAgICB0ZW1w
bGF0ZTw+IEZQUlJlZyB0ZW1wMjxGUFJSZWc+KCkgY29uc3QgeyByZXR1cm4gbV90ZW1wMkZQUjsg
fQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgUmVnVHlwZT4gUmVnVHlwZSYgcmVnVG9TdG9yZSgp
OworICAgIHRlbXBsYXRlPD4gR1BSUmVnJiByZWdUb1N0b3JlPEdQUlJlZz4oKSB7IHJldHVybiBt
X2dwclRvU3RvcmU7IH0KKyAgICB0ZW1wbGF0ZTw+IEZQUlJlZyYgcmVnVG9TdG9yZTxGUFJSZWc+
KCkgeyByZXR1cm4gbV9mcHJUb1N0b3JlOyB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSZWdU
eXBlPiBzdGF0aWMgY29uc3RleHByIFJlZ1R5cGUgaW52YWxpZCgpOworICAgIHRlbXBsYXRlPD4g
Y29uc3RleHByIEdQUlJlZyBpbnZhbGlkPEdQUlJlZz4oKSB7IHJldHVybiBJbnZhbGlkR1BSUmVn
OyB9CisgICAgdGVtcGxhdGU8PiBjb25zdGV4cHIgRlBSUmVnIGludmFsaWQ8RlBSUmVnPigpIHsg
cmV0dXJuIEludmFsaWRGUFJSZWc7IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJlZ1R5cGU+
CisgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgcmVnU2l6ZSgpCisgICAgeworICAgICAgICByZXR1
cm4gc3RkOjppc19zYW1lPFJlZ1R5cGUsIEdQUlJlZz46OnZhbHVlID8gc2l6ZW9mKENQVVJlZ2lz
dGVyKSA6IHNpemVvZihkb3VibGUpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJl
Z1R5cGU+IHN0YXRpYyBib29sIGlzVmFsaWRMb2FkUGFpckltbShpbnQpIHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgUmVnVHlwZT4gc3RhdGljIGJvb2wgaXNWYWxpZFN0
b3JlUGFpckltbShpbnQpIHsgcmV0dXJuIGZhbHNlOyB9CisKKyNpZiBDUFUoQVJNNjQpCisgICAg
dGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIGJvb2wgaXNWYWxpZExvYWRQYWlySW1tPEdQUlJlZz4o
aW50IG9mZnNldCkKKyAgICB7CisgICAgICAgIHJldHVybiBBUk02NEFzc2VtYmxlcjo6aXNWYWxp
ZExEUEltbTw2ND4ob2Zmc2V0KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTw+IEFMV0FZU19JTkxJ
TkUgYm9vbCBpc1ZhbGlkTG9hZFBhaXJJbW08RlBSUmVnPihpbnQgb2Zmc2V0KQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIEFSTTY0QXNzZW1ibGVyOjppc1ZhbGlkTERQRlBJbW08NjQ+KG9mZnNldCk7
CisgICAgfQorCisgICAgdGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIGJvb2wgaXNWYWxpZFN0b3Jl
UGFpckltbTxHUFJSZWc+KGludCBvZmZzZXQpCisgICAgeworICAgICAgICByZXR1cm4gQVJNNjRB
c3NlbWJsZXI6OmlzVmFsaWRTVFBJbW08NjQ+KG9mZnNldCk7CisgICAgfQorCisgICAgdGVtcGxh
dGU8PiBBTFdBWVNfSU5MSU5FIGJvb2wgaXNWYWxpZFN0b3JlUGFpckltbTxGUFJSZWc+KGludCBv
ZmZzZXQpCisgICAgeworICAgICAgICByZXR1cm4gQVJNNjRBc3NlbWJsZXI6OmlzVmFsaWRTVFBG
UEltbTw2ND4ob2Zmc2V0KTsKKyAgICB9CisjZW5kaWYgLy8gQ1BVKEFSTTY0KQorCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgUmVnVHlwZT4KKyAgICB2b2lkIGxvYWQoaW50IG9mZnNldCkKKyAgICB7
CisgICAgICAgIGlmIGNvbnN0ZXhwciAoIWhhc1BhaXJPcCkgeworICAgICAgICAgICAgYXV0byYg
cmVnVG9TdG9yZSA9IHRoaXMtPnJlZ1RvU3RvcmU8UmVnVHlwZT4oKTsKKyAgICAgICAgICAgIHJl
Z1RvU3RvcmUgPSB0ZW1wMTxSZWdUeXBlPigpOworICAgICAgICAgICAgbG9hZChvZmZzZXQsIHJl
Z1RvU3RvcmUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgYXV0
byYgc291cmNlID0gbV9zb3VyY2VzW21fY3VycmVudFNvdXJjZSsrXTsKKyAgICAgICAgc291cmNl
LnR5cGUgPSBTb3VyY2U6OlR5cGU6OkJ1ZmZlck9mZnNldDsKKyAgICAgICAgc291cmNlLm9mZnNl
dCA9IG9mZnNldDsKKyAgICB9CisKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIHZvaWQgbW92ZShF
bmNvZGVkSlNWYWx1ZSB2YWx1ZSkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAoIWhhc1Bh
aXJPcCkgeworICAgICAgICAgICAgYXV0byYgcmVnVG9TdG9yZSA9IHRoaXMtPnJlZ1RvU3RvcmU8
R1BSUmVnPigpOworICAgICAgICAgICAgcmVnVG9TdG9yZSA9IHRlbXAxPEdQUlJlZz4oKTsKKyAg
ICAgICAgICAgIG1vdmUodmFsdWUsIHJlZ1RvU3RvcmUpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisKKyAgICAgICAgYXV0byYgc291cmNlID0gbV9zb3VyY2VzW21fY3VycmVudFNv
dXJjZSsrXTsKKyAgICAgICAgc291cmNlLnR5cGUgPSBTb3VyY2U6OlR5cGU6OkVuY29kZWRKU1Zh
bHVlOworICAgICAgICBzb3VyY2UudmFsdWUgPSB2YWx1ZTsKKyAgICB9CisjZW5kaWYKKworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFJlZ1R5cGU+CisgICAgdm9pZCBjb3B5KFJlZ1R5cGUgcmVnKQor
ICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByICghaGFzUGFpck9wKSB7CisgICAgICAgICAgICBh
dXRvJiByZWdUb1N0b3JlID0gdGhpcy0+cmVnVG9TdG9yZTxSZWdUeXBlPigpOworICAgICAgICAg
ICAgcmVnVG9TdG9yZSA9IHJlZzsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIGF1dG8mIHNvdXJjZSA9IG1fc291cmNlc1ttX2N1cnJlbnRTb3VyY2UrK107CisgICAg
ICAgIHNvdXJjZS50eXBlID0gU291cmNlOjpUeXBlOjpSZWc7CisgICAgICAgIHNvdXJjZS5yZWcg
PSByZWc7CisgICAgfTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJlZ1R5cGU+CisgICAgdm9p
ZCBzdG9yZShpbnQgc3RvcmVPZmZzZXQpCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKCFo
YXNQYWlyT3ApIHsKKyAgICAgICAgICAgIGF1dG8gcmVnVG9TdG9yZSA9IHRoaXMtPnJlZ1RvU3Rv
cmU8UmVnVHlwZT4oKTsKKyAgICAgICAgICAgIHN0b3JlKHJlZ1RvU3RvcmUsIHN0b3JlT2Zmc2V0
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnN0IGJvb2wg
cmVnVHlwZUlzR1BSID0gc3RkOjppc19zYW1lPFJlZ1R5cGUsIEdQUlJlZz46OnZhbHVlOworCisg
ICAgICAgIGlmIChtX2N1cnJlbnRTb3VyY2UgPCAyKSB7CisgICAgICAgICAgICBtX2RlZmVycmVk
U3RvcmVPZmZzZXQgPSBzdG9yZU9mZnNldDsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorCisgICAgICAgIFJlZ1R5cGUgcmVnVG9TdG9yZTEgPSBpbnZhbGlkPFJlZ1R5cGU+KCk7Cisg
ICAgICAgIFJlZ1R5cGUgcmVnVG9TdG9yZTIgPSBpbnZhbGlkPFJlZ1R5cGU+KCk7CisgICAgICAg
IGF1dG8mIHNvdXJjZTEgPSBtX3NvdXJjZXNbMF07CisgICAgICAgIGF1dG8mIHNvdXJjZTIgPSBt
X3NvdXJjZXNbMV07CisgICAgICAgIGF1dG8gc3JjT2Zmc2V0MSA9IG1fc291cmNlc1swXS5vZmZz
ZXQgLSBtX3NyY09mZnNldEFkanVzdG1lbnQ7CisgICAgICAgIGF1dG8gc3JjT2Zmc2V0MiA9IG1f
c291cmNlc1sxXS5vZmZzZXQgLSBtX3NyY09mZnNldEFkanVzdG1lbnQ7CisgICAgICAgIGNvbnN0
ZXhwciBpbnQgcmVnaXN0ZXJTaXplID0gcmVnU2l6ZTxSZWdUeXBlPigpOworCisgICAgICAgIGlm
IChzb3VyY2UxLnR5cGUgPT0gU291cmNlOjpUeXBlOjpCdWZmZXJPZmZzZXQgJiYgc291cmNlMi50
eXBlID09IFNvdXJjZTo6VHlwZTo6QnVmZmVyT2Zmc2V0KSB7CisgICAgICAgICAgICByZWdUb1N0
b3JlMSA9IHRlbXAxPFJlZ1R5cGU+KCk7CisgICAgICAgICAgICByZWdUb1N0b3JlMiA9IHRlbXAy
PFJlZ1R5cGU+KCk7CisKKyAgICAgICAgICAgIGludCBvZmZzZXREZWx0YSA9IGFicyhzcmNPZmZz
ZXQxIC0gc3JjT2Zmc2V0Mik7CisgICAgICAgICAgICBpbnQgbWluT2Zmc2V0ID0gc3RkOjptaW4o
c3JjT2Zmc2V0MSwgc3JjT2Zmc2V0Mik7CisgICAgICAgICAgICBib29sIGlzVmFsaWRPZmZzZXQg
PSBpc1ZhbGlkTG9hZFBhaXJJbW08UmVnVHlwZT4obWluT2Zmc2V0KTsKKworICAgICAgICAgICAg
aWYgKG9mZnNldERlbHRhICE9IHJlZ2lzdGVyU2l6ZSB8fCAoIWlzVmFsaWRPZmZzZXQgJiYgbV9i
dWZmZXJSZWdzQXR0ciAhPSBCdWZmZXJSZWdzOjpBbGxvd01vZGlmaWNhdGlvbikpIHsKKyAgICAg
ICAgICAgICAgICBsb2FkKHNyY09mZnNldDEsIHJlZ1RvU3RvcmUxKTsKKyAgICAgICAgICAgICAg
ICBsb2FkKHNyY09mZnNldDIsIHJlZ1RvU3RvcmUyKTsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KSB7CisgICAgICAgICAgICAgICAgICAg
IEFTU0VSVChtX2J1ZmZlclJlZ3NBdHRyID09IEJ1ZmZlclJlZ3M6OkFsbG93TW9kaWZpY2F0aW9u
KTsKKyAgICAgICAgICAgICAgICAgICAgbV9zcmNPZmZzZXRBZGp1c3RtZW50ICs9IG1pbk9mZnNl
dDsKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQuYWRkUHRyKFRydXN0ZWRJbW0zMihtaW5PZmZz
ZXQpLCBtX3NyY0J1ZmZlckdQUik7CisKKyAgICAgICAgICAgICAgICAgICAgc3JjT2Zmc2V0MSAt
PSBtaW5PZmZzZXQ7CisgICAgICAgICAgICAgICAgICAgIHNyY09mZnNldDIgLT0gbWluT2Zmc2V0
OworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoaXNWYWxpZExvYWRQYWlySW1tPFJlZ1R5cGU+
KHN0ZDo6bWluKHNyY09mZnNldDEsIHNyY09mZnNldDIpKSk7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIGlmIChzcmNPZmZzZXQxIDwgc3JjT2Zmc2V0MikKKyAgICAgICAgICAg
ICAgICAgICAgbG9hZFBhaXIoc3JjT2Zmc2V0MSwgcmVnVG9TdG9yZTEsIHJlZ1RvU3RvcmUyKTsK
KyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGxvYWRQYWlyKHNyY09m
ZnNldDIsIHJlZ1RvU3RvcmUyLCByZWdUb1N0b3JlMSk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0gZWxzZSBpZiAoc291cmNlMS50eXBlID09IFNvdXJjZTo6VHlwZTo6QnVmZmVyT2Zmc2V0KSB7
CisgICAgICAgICAgICByZWdUb1N0b3JlMSA9IHRlbXAxPFJlZ1R5cGU+KCk7CisgICAgICAgICAg
ICBsb2FkKHNyY09mZnNldDEsIHJlZ1RvU3RvcmUxKTsKKyAgICAgICAgICAgIGlmIChzb3VyY2Uy
LnR5cGUgPT0gU291cmNlOjpUeXBlOjpFbmNvZGVkSlNWYWx1ZSkgeworICAgICAgICAgICAgICAg
IGlmIGNvbnN0ZXhwciAocmVnVHlwZUlzR1BSKSB7CisgICAgICAgICAgICAgICAgICAgIHJlZ1Rv
U3RvcmUyID0gdGVtcDI8UmVnVHlwZT4oKTsKKyAgICAgICAgICAgICAgICAgICAgbW92ZShzb3Vy
Y2UyLnZhbHVlLCByZWdUb1N0b3JlMik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICAgICAgcmVnVG9TdG9yZTIgPSBzb3VyY2UyLmdldFJlZzxSZWdU
eXBlPigpOworCisgICAgICAgIH0gZWxzZSBpZiAoc291cmNlMi50eXBlID09IFNvdXJjZTo6VHlw
ZTo6QnVmZmVyT2Zmc2V0KSB7CisgICAgICAgICAgICBpZiAoc291cmNlMS50eXBlID09IFNvdXJj
ZTo6VHlwZTo6RW5jb2RlZEpTVmFsdWUpIHsKKyAgICAgICAgICAgICAgICBpZiBjb25zdGV4cHIg
KHJlZ1R5cGVJc0dQUikgeworICAgICAgICAgICAgICAgICAgICByZWdUb1N0b3JlMSA9IHRlbXAx
PFJlZ1R5cGU+KCk7CisgICAgICAgICAgICAgICAgICAgIG1vdmUoc291cmNlMS52YWx1ZSwgcmVn
VG9TdG9yZTEpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZQorICAgICAg
ICAgICAgICAgIHJlZ1RvU3RvcmUxID0gc291cmNlMS5nZXRSZWc8UmVnVHlwZT4oKTsKKyAgICAg
ICAgICAgIHJlZ1RvU3RvcmUyID0gdGVtcDI8UmVnVHlwZT4oKTsKKyAgICAgICAgICAgIGxvYWQo
c3JjT2Zmc2V0MiwgcmVnVG9TdG9yZTIpOworCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICBpZiAoc291cmNlMS50eXBlID09IFNvdXJjZTo6VHlwZTo6RW5jb2RlZEpTVmFsdWUpIHsKKyAg
ICAgICAgICAgICAgICBpZiBjb25zdGV4cHIgKHJlZ1R5cGVJc0dQUikgeworICAgICAgICAgICAg
ICAgICAgICByZWdUb1N0b3JlMSA9IHRlbXAxPFJlZ1R5cGU+KCk7CisgICAgICAgICAgICAgICAg
ICAgIG1vdmUoc291cmNlMS52YWx1ZSwgcmVnVG9TdG9yZTEpOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHJlZ1RvU3RvcmUxID0gc291cmNl
MS5nZXRSZWc8UmVnVHlwZT4oKTsKKworICAgICAgICAgICAgaWYgKHNvdXJjZTIudHlwZSA9PSBT
b3VyY2U6OlR5cGU6OkVuY29kZWRKU1ZhbHVlKSB7CisgICAgICAgICAgICAgICAgaWYgY29uc3Rl
eHByIChyZWdUeXBlSXNHUFIpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVnVG9TdG9yZTIgPSB0
ZW1wMjxSZWdUeXBlPigpOworICAgICAgICAgICAgICAgICAgICBtb3ZlKHNvdXJjZTIudmFsdWUs
IHJlZ1RvU3RvcmUyKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgICAgICByZWdUb1N0b3JlMiA9IHNvdXJjZTIuZ2V0UmVnPFJlZ1R5cGU+KCk7Cisg
ICAgICAgIH0KKworICAgICAgICBpbnQgZHN0T2Zmc2V0MSA9IG1fZGVmZXJyZWRTdG9yZU9mZnNl
dCAtIG1fZHN0T2Zmc2V0QWRqdXN0bWVudDsKKyAgICAgICAgaW50IGRzdE9mZnNldDIgPSBzdG9y
ZU9mZnNldCAtIG1fZHN0T2Zmc2V0QWRqdXN0bWVudDsKKworICAgICAgICBpbnQgb2Zmc2V0RGVs
dGEgPSBhYnMoZHN0T2Zmc2V0MSAtIGRzdE9mZnNldDIpOworICAgICAgICBpbnQgbWluT2Zmc2V0
ID0gc3RkOjptaW4oZHN0T2Zmc2V0MSwgZHN0T2Zmc2V0Mik7CisgICAgICAgIGJvb2wgaXNWYWxp
ZE9mZnNldCA9IGlzVmFsaWRTdG9yZVBhaXJJbW08UmVnVHlwZT4obWluT2Zmc2V0KTsKKworICAg
ICAgICBpZiAob2Zmc2V0RGVsdGEgIT0gcmVnaXN0ZXJTaXplIHx8ICghaXNWYWxpZE9mZnNldCAm
JiBtX2J1ZmZlclJlZ3NBdHRyICE9IEJ1ZmZlclJlZ3M6OkFsbG93TW9kaWZpY2F0aW9uKSkgewor
ICAgICAgICAgICAgc3RvcmUocmVnVG9TdG9yZTEsIGRzdE9mZnNldDEpOworICAgICAgICAgICAg
c3RvcmUocmVnVG9TdG9yZTIsIGRzdE9mZnNldDIpOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKG1fYnVm
ZmVyUmVnc0F0dHIgPT0gQnVmZmVyUmVnczo6QWxsb3dNb2RpZmljYXRpb24pOworICAgICAgICAg
ICAgICAgIG1fZHN0T2Zmc2V0QWRqdXN0bWVudCArPSBtaW5PZmZzZXQ7CisgICAgICAgICAgICAg
ICAgbV9qaXQuYWRkUHRyKFRydXN0ZWRJbW0zMihtaW5PZmZzZXQpLCBtX2RzdEJ1ZmZlckdQUik7
CisKKyAgICAgICAgICAgICAgICBkc3RPZmZzZXQxIC09IG1pbk9mZnNldDsKKyAgICAgICAgICAg
ICAgICBkc3RPZmZzZXQyIC09IG1pbk9mZnNldDsKKyAgICAgICAgICAgICAgICBBU1NFUlQoaXNW
YWxpZFN0b3JlUGFpckltbTxSZWdUeXBlPihzdGQ6Om1pbihkc3RPZmZzZXQxLCBkc3RPZmZzZXQy
KSkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGRzdE9mZnNldDEgPCBkc3RPZmZz
ZXQyKQorICAgICAgICAgICAgICAgIHN0b3JlUGFpcihyZWdUb1N0b3JlMSwgcmVnVG9TdG9yZTIs
IGRzdE9mZnNldDEpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHN0b3JlUGFp
cihyZWdUb1N0b3JlMiwgcmVnVG9TdG9yZTEsIGRzdE9mZnNldDIpOworICAgICAgICB9CisKKyAg
ICAgICAgbV9jdXJyZW50U291cmNlID0gMDsKKyAgICB9OworCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgUmVnVHlwZT4KKyAgICB2b2lkIGZsdXNoKCkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhw
ciAoIWhhc1BhaXJPcCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoIW1fY3Vy
cmVudFNvdXJjZSkKKyAgICAgICAgICAgIHJldHVybjsgLy8gTm90aGluZyB0byBmbHVzaC4KKwor
ICAgICAgICBBU1NFUlQobV9jdXJyZW50U291cmNlID09IDEpOworCisgICAgICAgIFJlZ1R5cGUg
cmVnVG9TdG9yZSA9IGludmFsaWQ8UmVnVHlwZT4oKTsKKyAgICAgICAgYXV0byYgc291cmNlID0g
bV9zb3VyY2VzWzBdOworICAgICAgICBhdXRvJiBzcmNPZmZzZXQgPSBzb3VyY2Uub2Zmc2V0Owor
ICAgICAgICBjb25zdCBib29sIHJlZ1R5cGVJc0dQUiA9IHN0ZDo6aXNfc2FtZTxSZWdUeXBlLCBH
UFJSZWc+Ojp2YWx1ZTsKKworICAgICAgICBpZiAoc291cmNlLnR5cGUgPT0gU291cmNlOjpUeXBl
OjpCdWZmZXJPZmZzZXQpIHsKKyAgICAgICAgICAgIHJlZ1RvU3RvcmUgPSB0ZW1wMTxSZWdUeXBl
PigpOworICAgICAgICAgICAgbG9hZChzcmNPZmZzZXQgLSBtX3NyY09mZnNldEFkanVzdG1lbnQs
IHJlZ1RvU3RvcmUpOworICAgICAgICB9IGVsc2UgaWYgKHNvdXJjZS50eXBlID09IFNvdXJjZTo6
VHlwZTo6UmVnKQorICAgICAgICAgICAgcmVnVG9TdG9yZSA9IHNvdXJjZS5nZXRSZWc8UmVnVHlw
ZT4oKTsKKyAgICAgICAgZWxzZSBpZiBjb25zdGV4cHIgKHJlZ1R5cGVJc0dQUikgeworICAgICAg
ICAgICAgcmVnVG9TdG9yZSA9IHRlbXAxPFJlZ1R5cGU+KCk7CisgICAgICAgICAgICBtb3ZlKHNv
dXJjZS52YWx1ZSwgcmVnVG9TdG9yZSk7CisgICAgICAgIH0KKworICAgICAgICBzdG9yZShyZWdU
b1N0b3JlLCBtX2RlZmVycmVkU3RvcmVPZmZzZXQgLSBtX2RzdE9mZnNldEFkanVzdG1lbnQpOwor
ICAgICAgICBtX2N1cnJlbnRTb3VyY2UgPSAwOworICAgIH0KKworcHVibGljOgorICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBsb2FkR1BSKGludCBzcmNPZmZzZXQpIHsgbG9hZDxHUFJSZWc+KHNyY09m
ZnNldCk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgY29weUdQUihHUFJSZWcgZ3ByKSB7IGNv
cHk8R1BSUmVnPihncHIpOyB9CisgICAgQUxXQVlTX0lOTElORSB2b2lkIG1vdmVDb25zdGFudChF
bmNvZGVkSlNWYWx1ZSB2YWx1ZSkgeyBtb3ZlKHZhbHVlKTsgfQorICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBzdG9yZUdQUihpbnQgZHN0T2Zmc2V0KSB7IHN0b3JlPEdQUlJlZz4oZHN0T2Zmc2V0KTsg
fQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBmbHVzaEdQUigpIHsgZmx1c2g8R1BSUmVnPigpOyB9
CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbG9hZEZQUihpbnQgc3JjT2Zmc2V0KSB7IGxvYWQ8
RlBSUmVnPihzcmNPZmZzZXQpOyB9CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGNvcHlGUFIoRlBS
UmVnIGdwcikgeyBjb3B5PEZQUlJlZz4oZ3ByKTsgfQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBz
dG9yZUZQUihpbnQgZHN0T2Zmc2V0KSB7IHN0b3JlPEZQUlJlZz4oZHN0T2Zmc2V0KTsgfQorICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBmbHVzaEZQUigpIHsgZmx1c2g8RlBSUmVnPigpOyB9CisKK3By
b3RlY3RlZDoKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBtb3Zl
KEVuY29kZWRKU1ZhbHVlIHZhbHVlLCBHUFJSZWcgZGVzdCkKKyAgICB7CisgICAgICAgIG1faml0
Lm1vdmUoVHJ1c3RlZEltbTY0KHZhbHVlKSwgZGVzdCk7CisgICAgfQorI2VuZGlmCisKKyAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgbG9hZChpbnQgb2Zmc2V0LCBHUFJSZWcgZGVzdCkKKyAgICB7Cisg
ICAgICAgIG1faml0LmxvYWRQdHIoQWRkcmVzcyhtX3NyY0J1ZmZlckdQUiwgb2Zmc2V0KSwgZGVz
dCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHN0b3JlKEdQUlJlZyBzcmMsIGlu
dCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2ppdC5zdG9yZVB0cihzcmMsIEFkZHJlc3MobV9k
c3RCdWZmZXJHUFIsIG9mZnNldCkpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBs
b2FkKGludCBvZmZzZXQsIEZQUlJlZyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9qaXQubG9hZERv
dWJsZShBZGRyZXNzKG1fc3JjQnVmZmVyR1BSLCBvZmZzZXQpLCBkZXN0KTsKKyAgICB9CisKKyAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgc3RvcmUoRlBSUmVnIHNyYywgaW50IG9mZnNldCkKKyAgICB7
CisgICAgICAgIG1faml0LnN0b3JlRG91YmxlKHNyYywgQWRkcmVzcyhtX2RzdEJ1ZmZlckdQUiwg
b2Zmc2V0KSk7CisgICAgfQorCisjaWYgQ1BVKEFSTTY0KQorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFJlZ1R5cGU+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGxvYWRQYWlyKGludCBvZmZzZXQsIFJl
Z1R5cGUgZGVzdDEsIFJlZ1R5cGUgZGVzdDIpCisgICAgeworICAgICAgICBtX2ppdC5sb2FkUGFp
cjY0KG1fc3JjQnVmZmVyR1BSLCBUcnVzdGVkSW1tMzIob2Zmc2V0KSwgZGVzdDEsIGRlc3QyKTsK
KyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSZWdUeXBlPgorICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBzdG9yZVBhaXIoUmVnVHlwZSBzcmMxLCBSZWdUeXBlIHNyYzIsIGludCBvZmZzZXQp
CisgICAgeworICAgICAgICBtX2ppdC5zdG9yZVBhaXI2NChzcmMxLCBzcmMyLCBtX2RzdEJ1ZmZl
ckdQUiwgVHJ1c3RlZEltbTMyKG9mZnNldCkpOworICAgIH0KKworICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBoYXNQYWlyT3AgPSB0cnVlOworI2Vsc2UKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBS
ZWdUeXBlPiBBTFdBWVNfSU5MSU5FIHZvaWQgbG9hZFBhaXIoaW50LCBSZWdUeXBlLCBSZWdUeXBl
KSB7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSZWdUeXBlPiBBTFdBWVNfSU5MSU5FIHZvaWQg
c3RvcmVQYWlyKFJlZ1R5cGUsIFJlZ1R5cGUsIGludCkgeyB9CisKKyAgICBzdGF0aWMgY29uc3Rl
eHByIGJvb2wgaGFzUGFpck9wID0gZmFsc2U7CisjZW5kaWYKKworICAgIEpJVCYgbV9qaXQ7CisK
KyAgICBHUFJSZWcgbV9zcmNCdWZmZXJHUFI7CisgICAgR1BSUmVnIG1fZHN0QnVmZmVyR1BSOwor
ICAgIEdQUlJlZyBtX3RlbXAxR1BSOworICAgIEdQUlJlZyBtX3RlbXAyR1BSOworICAgIEZQUlJl
ZyBtX3RlbXAxRlBSOworICAgIEZQUlJlZyBtX3RlbXAyRlBSOworCitwcml2YXRlOgorICAgIHN0
YXRpYyBjb25zdGV4cHIgaW50IGdwclNpemUgPSBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihDUFVS
ZWdpc3RlcikpOworICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IGZwclNpemUgPSBzdGF0aWNfY2Fz
dDxpbnQ+KHNpemVvZihkb3VibGUpKTsKKworICAgIC8vIFRoZXNlIHBvaW50IHRvIHdoaWNoIHJl
Z2lzdGVyIHRvIHVzZS4KKyAgICBHUFJSZWcgbV9ncHJUb1N0b3JlIHsgSW52YWxpZEdQUlJlZyB9
OyAvLyBPbmx5IHVzZWQgd2hlbiAhaGFzUGFpck9wLgorICAgIEZQUlJlZyBtX2ZwclRvU3RvcmUg
eyBJbnZhbGlkRlBSUmVnIH07IC8vIE9ubHkgdXNlZCB3aGVuICFoYXNQYWlyT3AuCisKKyAgICBC
dWZmZXJSZWdzIG1fYnVmZmVyUmVnc0F0dHI7CisgICAgU291cmNlIG1fc291cmNlc1syXTsKKyAg
ICB1bnNpZ25lZCBtX2N1cnJlbnRTb3VyY2UgeyAwIH07CisgICAgaW50IG1fc3JjT2Zmc2V0QWRq
dXN0bWVudCB7IDAgfTsKKyAgICBpbnQgbV9kc3RPZmZzZXRBZGp1c3RtZW50IHsgMCB9OworICAg
IGludCBtX2RlZmVycmVkU3RvcmVPZmZzZXQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKwor
I2VuZGlmIC8vIEVOQUJMRShKSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Nj
cmF0Y2hSZWdpc3RlckFsbG9jYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9TY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuY3BwCShyZXZpc2lvbiAyNzg4ODYp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE0LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE0LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoSklUKQog
CisjaW5jbHVkZSAiQXNzZW1ibHlIZWxwZXJzU3Bvb2xlcnMuaCIKICNpbmNsdWRlICJNYXhGcmFt
ZUV4dGVudEZvclNsb3dQYXRoQ2FsbC5oIgogI2luY2x1ZGUgIlZNLmgiCiAKQEAgLTEwMSw3ICsx
MDIsNyBAQCB0eXBlbmFtZSBCYW5rSW5mbzo6UmVnaXN0ZXJUeXBlIFNjcmF0Y2hSCiBHUFJSZWcg
U2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjphbGxvY2F0ZVNjcmF0Y2hHUFIoKSB7IHJldHVybiBh
bGxvY2F0ZVNjcmF0Y2g8R1BSSW5mbz4oKTsgfQogRlBSUmVnIFNjcmF0Y2hSZWdpc3RlckFsbG9j
YXRvcjo6YWxsb2NhdGVTY3JhdGNoRlBSKCkgeyByZXR1cm4gYWxsb2NhdGVTY3JhdGNoPEZQUklu
Zm8+KCk7IH0KIAotU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpQcmVzZXJ2ZWRTdGF0ZSBTY3Jh
dGNoUmVnaXN0ZXJBbGxvY2F0b3I6OnByZXNlcnZlUmV1c2VkUmVnaXN0ZXJzQnlQdXNoaW5nKE1h
Y3JvQXNzZW1ibGVyJiBqaXQsIEV4dHJhU3RhY2tTcGFjZSBleHRyYVN0YWNrU3BhY2UpCitTY3Jh
dGNoUmVnaXN0ZXJBbGxvY2F0b3I6OlByZXNlcnZlZFN0YXRlIFNjcmF0Y2hSZWdpc3RlckFsbG9j
YXRvcjo6cHJlc2VydmVSZXVzZWRSZWdpc3RlcnNCeVB1c2hpbmcoQXNzZW1ibHlIZWxwZXJzJiBq
aXQsIEV4dHJhU3RhY2tTcGFjZSBleHRyYVN0YWNrU3BhY2UpCiB7CiAgICAgaWYgKCFkaWRSZXVz
ZVJlZ2lzdGVycygpKQogICAgICAgICByZXR1cm4gUHJlc2VydmVkU3RhdGUoMCwgZXh0cmFTdGFj
a1NwYWNlKTsKQEAgLTEyNCw3ICsxMjUsNyBAQCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OlBy
ZXNlcnZlZFN0YXRlCiAgICAgcmV0dXJuIFByZXNlcnZlZFN0YXRlKHN0YWNrQWRqdXN0bWVudFNp
emUsIGV4dHJhU3RhY2tTcGFjZSk7CiB9CiAKLXZvaWQgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9y
OjpyZXN0b3JlUmV1c2VkUmVnaXN0ZXJzQnlQb3BwaW5nKE1hY3JvQXNzZW1ibGVyJiBqaXQsIGNv
bnN0IFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6UHJlc2VydmVkU3RhdGUmIHByZXNlcnZlZFN0
YXRlKQordm9pZCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OnJlc3RvcmVSZXVzZWRSZWdpc3Rl
cnNCeVBvcHBpbmcoQXNzZW1ibHlIZWxwZXJzJiBqaXQsIGNvbnN0IFNjcmF0Y2hSZWdpc3RlckFs
bG9jYXRvcjo6UHJlc2VydmVkU3RhdGUmIHByZXNlcnZlZFN0YXRlKQogewogICAgIFJFTEVBU0Vf
QVNTRVJUKHByZXNlcnZlZFN0YXRlKTsKICAgICBpZiAoIWRpZFJldXNlUmVnaXN0ZXJzKCkpCkBA
IC0xNjEsNyArMTYyLDcgQEAgdW5zaWduZWQgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpkZXNp
cgogICAgIHJldHVybiB1c2VkUmVnaXN0ZXJzRm9yQ2FsbCgpLm51bWJlck9mU2V0UmVnaXN0ZXJz
KCkgKiBzaXplb2YoSlNWYWx1ZSk7CiB9CiAKLXVuc2lnbmVkIFNjcmF0Y2hSZWdpc3RlckFsbG9j
YXRvcjo6cHJlc2VydmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbChNYWNyb0Fzc2VtYmxlciYgaml0
LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgdW5zaWduZWQgZXh0cmFCeXRlc0F0
VG9wT2ZTdGFjaykKK3Vuc2lnbmVkIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6cHJlc2VydmVS
ZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbChBc3NlbWJseUhlbHBlcnMmIGppdCwgY29uc3QgUmVnaXN0
ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIHVuc2lnbmVkIGV4dHJhQnl0ZXNBdFRvcE9mU3RhY2spCiB7
CiAgICAgUkVMRUFTRV9BU1NFUlQoZXh0cmFCeXRlc0F0VG9wT2ZTdGFjayAlIHNpemVvZih2b2lk
KikgPT0gMCk7CiAgICAgaWYgKCF1c2VkUmVnaXN0ZXJzLm51bWJlck9mU2V0UmVnaXN0ZXJzKCkp
CkBAIC0xNzQsMjYgKzE3NSwzMSBAQCB1bnNpZ25lZCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6
OnByZXNlCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoc3RhY2tPZmZzZXQp
LAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogCisgICAg
QXNzZW1ibHlIZWxwZXJzOjpTdG9yZVJlZ1Nwb29sZXIgc3Bvb2xlcihqaXQsIE1hY3JvQXNzZW1i
bGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisKICAgICB1bnNpZ25lZCBjb3VudCA9IDA7CiAg
ICAgZm9yIChHUFJSZWcgcmVnID0gTWFjcm9Bc3NlbWJsZXI6OmZpcnN0UmVnaXN0ZXIoKTsgcmVn
IDw9IE1hY3JvQXNzZW1ibGVyOjpsYXN0UmVnaXN0ZXIoKTsgcmVnID0gTWFjcm9Bc3NlbWJsZXI6
Om5leHRSZWdpc3RlcihyZWcpKSB7CiAgICAgICAgIGlmICh1c2VkUmVnaXN0ZXJzLmdldChyZWcp
KSB7Ci0gICAgICAgICAgICBqaXQuc3RvcmVQdHIocmVnLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIGV4dHJhQnl0ZXNBdFRvcE9m
U3RhY2sgKyAoY291bnQgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSkpOworICAgICAgICAgICAg
c3Bvb2xlci5zdG9yZUdQUih7IHJlZywgc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihleHRyYUJ5dGVz
QXRUb3BPZlN0YWNrICsgKGNvdW50ICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSkpIH0pOwogICAg
ICAgICAgICAgY291bnQrKzsKICAgICAgICAgfQogICAgIH0KKyAgICBzcG9vbGVyLmZsdXNoR1BS
KCk7CisKICAgICBmb3IgKEZQUlJlZyByZWcgPSBNYWNyb0Fzc2VtYmxlcjo6Zmlyc3RGUFJlZ2lz
dGVyKCk7IHJlZyA8PSBNYWNyb0Fzc2VtYmxlcjo6bGFzdEZQUmVnaXN0ZXIoKTsgcmVnID0gTWFj
cm9Bc3NlbWJsZXI6Om5leHRGUFJlZ2lzdGVyKHJlZykpIHsKICAgICAgICAgaWYgKHVzZWRSZWdp
c3RlcnMuZ2V0KHJlZykpIHsKLSAgICAgICAgICAgIGppdC5zdG9yZURvdWJsZShyZWcsIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlciwg
ZXh0cmFCeXRlc0F0VG9wT2ZTdGFjayArIChjb3VudCAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkp
KSk7CisgICAgICAgICAgICBzcG9vbGVyLnN0b3JlRlBSKHsgcmVnLCBzdGF0aWNfY2FzdDxwdHJk
aWZmX3Q+KGV4dHJhQnl0ZXNBdFRvcE9mU3RhY2sgKyAoY291bnQgKiBzaXplb2YoRW5jb2RlZEpT
VmFsdWUpKSkgfSk7CiAgICAgICAgICAgICBjb3VudCsrOwogICAgICAgICB9CiAgICAgfQorICAg
IHNwb29sZXIuZmx1c2hGUFIoKTsKIAogICAgIFJFTEVBU0VfQVNTRVJUKGNvdW50ID09IHVzZWRS
ZWdpc3RlcnMubnVtYmVyT2ZTZXRSZWdpc3RlcnMoKSk7CiAKICAgICByZXR1cm4gc3RhY2tPZmZz
ZXQ7CiB9CiAKLXZvaWQgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpyZXN0b3JlUmVnaXN0ZXJz
RnJvbVN0YWNrRm9yQ2FsbChNYWNyb0Fzc2VtYmxlciYgaml0LCBjb25zdCBSZWdpc3RlclNldCYg
dXNlZFJlZ2lzdGVycywgY29uc3QgUmVnaXN0ZXJTZXQmIGlnbm9yZSwgdW5zaWduZWQgbnVtYmVy
T2ZTdGFja0J5dGVzVXNlZEZvclJlZ2lzdGVyUHJlc2VydmF0aW9uLCB1bnNpZ25lZCBleHRyYUJ5
dGVzQXRUb3BPZlN0YWNrKQordm9pZCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OnJlc3RvcmVS
ZWdpc3RlcnNGcm9tU3RhY2tGb3JDYWxsKEFzc2VtYmx5SGVscGVycyYgaml0LCBjb25zdCBSZWdp
c3RlclNldCYgdXNlZFJlZ2lzdGVycywgY29uc3QgUmVnaXN0ZXJTZXQmIGlnbm9yZSwgdW5zaWdu
ZWQgbnVtYmVyT2ZTdGFja0J5dGVzVXNlZEZvclJlZ2lzdGVyUHJlc2VydmF0aW9uLCB1bnNpZ25l
ZCBleHRyYUJ5dGVzQXRUb3BPZlN0YWNrKQogewogICAgIFJFTEVBU0VfQVNTRVJUKGV4dHJhQnl0
ZXNBdFRvcE9mU3RhY2sgJSBzaXplb2Yodm9pZCopID09IDApOwogICAgIGlmICghdXNlZFJlZ2lz
dGVycy5udW1iZXJPZlNldFJlZ2lzdGVycygpKSB7CkBAIC0yMDEsMjEgKzIwNywyNiBAQCB2b2lk
IFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6cmVzdG9yZVJlCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKKyAgICBBc3NlbWJseUhlbHBlcnM6OkxvYWRSZWdTcG9vbGVyIHNwb29sZXIoaml0LCBN
YWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOworCiAgICAgdW5zaWduZWQgY291
bnQgPSAwOwogICAgIGZvciAoR1BSUmVnIHJlZyA9IE1hY3JvQXNzZW1ibGVyOjpmaXJzdFJlZ2lz
dGVyKCk7IHJlZyA8PSBNYWNyb0Fzc2VtYmxlcjo6bGFzdFJlZ2lzdGVyKCk7IHJlZyA9IE1hY3Jv
QXNzZW1ibGVyOjpuZXh0UmVnaXN0ZXIocmVnKSkgewogICAgICAgICBpZiAodXNlZFJlZ2lzdGVy
cy5nZXQocmVnKSkgewogICAgICAgICAgICAgaWYgKCFpZ25vcmUuZ2V0KHJlZykpCi0gICAgICAg
ICAgICAgICAgaml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoTWFjcm9Bc3NlbWJs
ZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBleHRyYUJ5dGVzQXRUb3BPZlN0YWNrICsgKHNpemVv
ZihFbmNvZGVkSlNWYWx1ZSkgKiBjb3VudCkpLCByZWcpOworICAgICAgICAgICAgICAgIHNwb29s
ZXIubG9hZEdQUih7IHJlZywgc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihleHRyYUJ5dGVzQXRUb3BP
ZlN0YWNrICsgKHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgKiBjb3VudCkpIH0pOwogICAgICAgICAg
ICAgY291bnQrKzsKICAgICAgICAgfQogICAgIH0KKyAgICBzcG9vbGVyLmZsdXNoR1BSKCk7CisK
ICAgICBmb3IgKEZQUlJlZyByZWcgPSBNYWNyb0Fzc2VtYmxlcjo6Zmlyc3RGUFJlZ2lzdGVyKCk7
IHJlZyA8PSBNYWNyb0Fzc2VtYmxlcjo6bGFzdEZQUmVnaXN0ZXIoKTsgcmVnID0gTWFjcm9Bc3Nl
bWJsZXI6Om5leHRGUFJlZ2lzdGVyKHJlZykpIHsKICAgICAgICAgaWYgKHVzZWRSZWdpc3RlcnMu
Z2V0KHJlZykpIHsKICAgICAgICAgICAgIGlmICghaWdub3JlLmdldChyZWcpKQotICAgICAgICAg
ICAgICAgIGppdC5sb2FkRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKE1hY3JvQXNzZW1i
bGVyOjpzdGFja1BvaW50ZXJSZWdpc3RlciwgZXh0cmFCeXRlc0F0VG9wT2ZTdGFjayArIChzaXpl
b2YoRW5jb2RlZEpTVmFsdWUpICogY291bnQpKSwgcmVnKTsKKyAgICAgICAgICAgICAgICBzcG9v
bGVyLmxvYWRGUFIoeyByZWcsIHN0YXRpY19jYXN0PHB0cmRpZmZfdD4oZXh0cmFCeXRlc0F0VG9w
T2ZTdGFjayArIChzaXplb2YoRW5jb2RlZEpTVmFsdWUpICogY291bnQpKSB9KTsKICAgICAgICAg
ICAgIGNvdW50Kys7CiAgICAgICAgIH0KICAgICB9CisgICAgc3Bvb2xlci5mbHVzaEZQUigpOwog
CiAgICAgdW5zaWduZWQgc3RhY2tPZmZzZXQgPSAodXNlZFJlZ2lzdGVycy5udW1iZXJPZlNldFJl
Z2lzdGVycygpKSAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSk7CiAgICAgc3RhY2tPZmZzZXQgKz0g
ZXh0cmFCeXRlc0F0VG9wT2ZTdGFjazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
U2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9TY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuaAkocmV2aXNpb24gMjc4ODg2KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIs
IDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEyLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yNywxMiArMjcsMTIgQEAKIAogI2lmIEVOQUJMRShKSVQpCiAK
LSNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyU2V0LmgiCiAj
aW5jbHVkZSAiVGVtcFJlZ2lzdGVyU2V0LmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBB
c3NlbWJseUhlbHBlcnM7CiBzdHJ1Y3QgU2NyYXRjaEJ1ZmZlcjsKIAogLy8gVGhpcyBjbGFzcyBw
cm92aWRlcyBhIGxvdy1sZXZlbCByZWdpc3RlciBhbGxvY2F0b3IgZm9yIHVzZSBpbiBzdHVicy4K
QEAgLTg0LDE1ICs4NCwxNSBAQCBwdWJsaWM6CiAgICAgICAgIEV4dHJhU3RhY2tTcGFjZSBleHRy
YVN0YWNrU3BhY2VSZXF1aXJlbWVudDsKICAgICB9OwogCi0gICAgUHJlc2VydmVkU3RhdGUgcHJl
c2VydmVSZXVzZWRSZWdpc3RlcnNCeVB1c2hpbmcoTWFjcm9Bc3NlbWJsZXImIGppdCwgRXh0cmFT
dGFja1NwYWNlKTsKLSAgICB2b2lkIHJlc3RvcmVSZXVzZWRSZWdpc3RlcnNCeVBvcHBpbmcoTWFj
cm9Bc3NlbWJsZXImIGppdCwgY29uc3QgUHJlc2VydmVkU3RhdGUmKTsKKyAgICBQcmVzZXJ2ZWRT
dGF0ZSBwcmVzZXJ2ZVJldXNlZFJlZ2lzdGVyc0J5UHVzaGluZyhBc3NlbWJseUhlbHBlcnMmIGpp
dCwgRXh0cmFTdGFja1NwYWNlKTsKKyAgICB2b2lkIHJlc3RvcmVSZXVzZWRSZWdpc3RlcnNCeVBv
cHBpbmcoQXNzZW1ibHlIZWxwZXJzJiBqaXQsIGNvbnN0IFByZXNlcnZlZFN0YXRlJik7CiAgICAg
CiAgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVyc0ZvckNhbGwoKSBjb25zdDsKICAgICAKICAg
ICB1bnNpZ25lZCBkZXNpcmVkU2NyYXRjaEJ1ZmZlclNpemVGb3JDYWxsKCkgY29uc3Q7Ci0gICAg
Ci0gICAgc3RhdGljIHVuc2lnbmVkIHByZXNlcnZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGwoTWFj
cm9Bc3NlbWJsZXImIGppdCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIHVuc2ln
bmVkIGV4dHJhUGFkZGluZ0luQnl0ZXMpOwotICAgIHN0YXRpYyB2b2lkIHJlc3RvcmVSZWdpc3Rl
cnNGcm9tU3RhY2tGb3JDYWxsKE1hY3JvQXNzZW1ibGVyJiBqaXQsIGNvbnN0IFJlZ2lzdGVyU2V0
JiB1c2VkUmVnaXN0ZXJzLCBjb25zdCBSZWdpc3RlclNldCYgaWdub3JlLCB1bnNpZ25lZCBudW1i
ZXJPZlN0YWNrQnl0ZXNVc2VkRm9yUmVnaXN0ZXJQcmVzZXJ2YXRpb24sIHVuc2lnbmVkIGV4dHJh
UGFkZGluZ0luQnl0ZXMpOworCisgICAgc3RhdGljIHVuc2lnbmVkIHByZXNlcnZlUmVnaXN0ZXJz
VG9TdGFja0ZvckNhbGwoQXNzZW1ibHlIZWxwZXJzJiBqaXQsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1
c2VkUmVnaXN0ZXJzLCB1bnNpZ25lZCBleHRyYVBhZGRpbmdJbkJ5dGVzKTsKKyAgICBzdGF0aWMg
dm9pZCByZXN0b3JlUmVnaXN0ZXJzRnJvbVN0YWNrRm9yQ2FsbChBc3NlbWJseUhlbHBlcnMmIGpp
dCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIGNvbnN0IFJlZ2lzdGVyU2V0JiBp
Z25vcmUsIHVuc2lnbmVkIG51bWJlck9mU3RhY2tCeXRlc1VzZWRGb3JSZWdpc3RlclByZXNlcnZh
dGlvbiwgdW5zaWduZWQgZXh0cmFQYWRkaW5nSW5CeXRlcyk7CiAKIHByaXZhdGU6CiAgICAgUmVn
aXN0ZXJTZXQgbV91c2VkUmVnaXN0ZXJzOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAyNzg4ODYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjk4MSwxMCArMjk4MSw3IEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZFJl
dHVybihjb25zdCBDb24KICAgICBCMzo6UGF0Y2hwb2ludFZhbHVlKiBwYXRjaCA9IGFkZFBhdGNo
cG9pbnQoQjM6OlZvaWQpOwogICAgIHBhdGNoLT5zZXRHZW5lcmF0b3IoW10gKENDYWxsSGVscGVy
cyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAg
ICAgICAgYXV0byBjYWxsZWVTYXZlcyA9IHBhcmFtcy5jb2RlKCkuY2FsbGVlU2F2ZVJlZ2lzdGVy
QXRPZmZzZXRMaXN0KCk7Ci0KLSAgICAgICAgZm9yIChSZWdpc3RlckF0T2Zmc2V0IGNhbGxlZVNh
dmUgOiBjYWxsZWVTYXZlcykKLSAgICAgICAgICAgIGppdC5sb2FkNjRUb1JlZyhDQ2FsbEhlbHBl
cnM6OkFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGNhbGxlZVNhdmUub2Zmc2V0
KCkpLCBjYWxsZWVTYXZlLnJlZygpKTsKLQorICAgICAgICBqaXQuZW1pdFJlc3RvcmUoY2FsbGVl
U2F2ZXMpOwogICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKICAgICAgICAgaml0
LnJldCgpOwogICAgIH0pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIz
SVJHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21CM0lSR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMjc4ODg2KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjI4NCwxMCArMjI4NCw3IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkUmV0dXJuKGNvbnN0IENv
bnQKICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNoID0gbV9wcm9jLmFkZDxQYXRjaHBvaW50VmFs
dWU+KEIzOjpWb2lkLCBvcmlnaW4oKSk7CiAgICAgcGF0Y2gtPnNldEdlbmVyYXRvcihbXSAoQ0Nh
bGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFt
cykgewogICAgICAgICBhdXRvIGNhbGxlZVNhdmVzID0gcGFyYW1zLmNvZGUoKS5jYWxsZWVTYXZl
UmVnaXN0ZXJBdE9mZnNldExpc3QoKTsKLQotICAgICAgICBmb3IgKFJlZ2lzdGVyQXRPZmZzZXQg
Y2FsbGVlU2F2ZSA6IGNhbGxlZVNhdmVzKQotICAgICAgICAgICAgaml0LmxvYWQ2NFRvUmVnKEND
YWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgY2FsbGVlU2F2
ZS5vZmZzZXQoKSksIGNhbGxlZVNhdmUucmVnKCkpOwotCisgICAgICAgIGppdC5lbWl0UmVzdG9y
ZShjYWxsZWVTYXZlcyk7CiAgICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOwogICAg
ICAgICBqaXQucmV0KCk7CiAgICAgfSk7Cg==
</data>
<flag name="commit-queue"
          id="453261"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431473</attachid>
            <date>2021-06-15 13:29:03 -0700</date>
            <delta_ts>2021-06-15 13:33:06 -0700</delta_ts>
            <desc>take 2 at working around gcc being weak sauce.</desc>
            <filename>bug-227039.patch</filename>
            <type>text/plain</type>
            <size>104524</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjc4ODg2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2OCBA
QAorMjAyMS0wNi0xNSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
VXNlIGxkcCBhbmQgc3RwIG1vcmUgZm9yIHNhdmluZyAvIHJlc3RvcmluZyByZWdpc3RlcnMgb24g
QVJNNjQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjcwMzkKKyAgICAgICAgcmRhcjovLzc5MzU0NzM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgc3Bvb2xlciBh
YnN0cmFjdGlvbiBpbiBBc3NlbWJseUhlbHBlcnMuICBUaGUgc3Bvb2xlcgorICAgICAgICBiYXNp
Y2FsbHkgYmF0Y2hlcyB1cCBsb2FkIC8gc3RvcmUgb3BlcmF0aW9ucyBhbmQgZW1pdCB0aGVtIGFz
IHBhaXIgaW5zdHJ1Y3Rpb25zCisgICAgICAgIGlmIGFwcHJvcHJpYXRlLgorCisgICAgICAgIFRo
ZXJlIGFyZSA0IHNwb29sZXIgY2xhc3NlczoKKyAgICAgICAgYS4gU3Bvb2xlcgorICAgICAgICAg
ICAtIHRlbXBsYXRlIGJhc2UgY2xhc3MgZm9yIExvYWRSZWdTcG9vbGVyIGFuZCBTdG9yZVJlZ1Nw
b29sZXIuCisgICAgICAgICAgIC0gZW5jYXBzdWxhdGVzIHRoZSBiYXRjaGluZyBzdHJhdGVneSBm
b3IgbG9hZCAvIHN0b3JlIHBhaXJzLgorCisgICAgICAgIGIuIExvYWRSZWdTcG9vbGVyIC0gc3Bl
Y2lhbGl6ZXMgU3Bvb2xlciB0byBoYW5kbGUgbG9hZCBwYWlycy4KKyAgICAgICAgYi4gU3RvcmVS
ZWdTcG9vbGVyIC0gc3BlY2lhbGl6ZXMgU3Bvb2xlciB0byBoYW5kbGUgc3RvcmUgcGFpcnMuCisK
KyAgICAgICAgZC4gQ29weVNwb29sZXIKKyAgICAgICAgICAgLSBoYW5kbGVzIG1hdGNoaW5nIGxv
YWRzIHdpdGggc3RvcmVzLgorICAgICAgICAgICAtIHRyaWVzIHRvIGVtaXQgbG9hZHMgYXMgbG9h
ZCBwYWlycyBpZiBwb3NzaWJsZS4KKyAgICAgICAgICAgLSB0cmllcyB0byBlbW90IHN0b3JlcyBh
cyBzdG9yZSBwYWlycyBpZiBwb3NzaWJsZS4KKyAgICAgICAgICAgLSBlbnN1cmVzIHRoYXQgcHJl
LXJlcXVpc2l0ZSBsb2FkcyBhcmUgZW1pdHRlZCBiZWZvcmUgc3RvcmVzIGFyZSBlbWl0dGVkLgor
ICAgICAgICAgICAtIG90aGVyIHRoYW4gbG9hZHMsIGFsc28gc3VwcG9ydCBjb25zdGFudHMgYW5k
IHJlZ2lzdGVycyBhcyBzb3VyY2VzIG9mIHZhbHVlcworICAgICAgICAgICAgIHRvIGJlIHN0b3Jl
ZC4gIFRoaXMgaXMgdXNlZnVsIGluIE9TUiBleGl0IHJhbXBzIHdoZXJlIHdlIG1heSBtYXRlcmlh
bGl6ZSBhCisgICAgICAgICAgICAgc3RhY2sgdmFsdWUgdG8gc3RvcmUgZnJvbSBjb25zdGFudHMg
b3IgcmVnaXN0ZXJzIGluIGFkZGl0aW9uIHRvIHZhbHVlcyB3ZQorICAgICAgICAgICAgIGxvYWQg
ZnJvbSB0aGUgb2xkIHN0YWNrIGZyYW1lIG9yIGZyb20gYSBzY3JhdGNoIGJ1ZmZlci4KKworICAg
ICAgICBJbiB0aGlzIHBhdGNoLCB3ZSBhbHNvIGRvIHRoZSBmb2xsb3dpbmc6CisKKyAgICAgICAg
MS4gVXNlIHNwb29sZXJzIGluIG1hbnkgcGxhY2VzIHNvIHRoYXQgd2UgY2FuIGVtaXQgbG9hZCAv
IHN0b3JlIHBhaXJzIGluc3RlYWQgb2YKKyAgICAgICAgICAgc2luZ2xlIGxvYWQgLyBzdG9yZXMu
ICBUaGlzIGhlbHBzIHNocmluayBKSVQgY29kZSBzaWRlLCBhbmQgYWxzbyBwb3RlbnRpYWxseQor
ICAgICAgICAgICBpbXByb3ZlcyBwZXJmb3JtYW5jZS4KKworICAgICAgICAyLiBJbiBERkc6Ok9T
UkV4aXQ6OmNvbXBpbGVFeGl0KCksIHdlIHVzZWQgdG8gcmVjb3ZlciBjb25zdGFudHMgaW50byBh
IHNjcmF0Y2gKKyAgICAgICAgICAgYnVmZmVyLCBhbmQgdGhlbiBsYXRlciwgbG9hZCBmcm9tIHRo
YXQgc2NyYXRjaCBidWZmZXIgdG8gc3RvcmUgaW50byB0aGUKKyAgICAgICAgICAgbmV3IHN0YWNr
IGZyYW1lKHMpLgorCisgICAgICAgICAgIFRoaXMgcGF0Y2ggY2hhbmdlcyBpdCBzbyB0aGF0IHdl
IGRlZmVyIGNvbnN0YW50IHJlY292ZXJ5IHVudGlsIHRoZSBmaW5hbAorICAgICAgICAgICBsb29w
IHdoZXJlIHdlIHN0b3JlIHRoZSByZWNvdmVyZWQgdmFsdWUgZGlyZWN0bHkgaW50byB0aGUgbmV3
IHN0YWNrIGZyYW1lKHMpLgorICAgICAgICAgICBUaGlzIHNhdmVzIHVzIHRoZSB3b3JrIChhbmQg
SklUIGNvZGUgc3BhY2UpIGZvciBzdG9yaW5nIGludG8gYSBzY3JhdGNoIGJ1ZmZlcgorICAgICAg
ICAgICBhbmQgdGhlbiByZWxvYWRpbmcgZnJvbSB0aGUgc2NyYXRjaCBidWZmZXIuCisKKyAgICAg
ICAgICAgVGhlcmUgaXMgb25lIGV4Y2VwdGlvbjogdG1wIHZhbHVlcyB1c2VkIGJ5IGFjdGl2ZSBj
aGVja3BvaW50cy4gIFdlIG5lZWQgdG8gY2FsbAorICAgICAgICAgICBvcGVyYXRpb25NYXRlcmlh
bGl6ZU9TUkV4aXRTaWRlU3RhdGUoKSB0byBtYXRlcmlhbGl6ZSB0aGUgYWN0aXZlIGNoZWNrcG9p
bnQKKyAgICAgICAgICAgc2lkZSBzdGF0ZSBiZWZvcmUgdGhlIGZpbmFsIGxvb3Agd2hlcmUgd2Ug
bm93IHJlY292ZXIgY29uc3RhbnRzLiAgSGVuY2UsIHdlCisgICAgICAgICAgIG5lZWQgdGhlc2Ug
dG1wIHZhbHVlcyByZWNvdmVyZWQgYmVmb3JlIGhhbmQuCisKKyAgICAgICAgICAgU28sIHdlIGNo
ZWNrIHVwZnJvbnQgaWYgd2UgaGF2ZSBhY3RpdmUgY2hlY2twb2ludCBzaWRlIHN0YXRlIHRvIG1h
dGVyaWFsaXplLgorICAgICAgICAgICBJZiBzbywgd2UnbGwgZWFnZXJseSByZWNvdmVyIHRoZSBj
b25zdGFudHMgZm9yIGluaXRpYWxpemluZyB0aG9zZSB0bXBzLgorCisgICAgICAgICAgIFdlIGFs
c28gdXNlIHRoZSBDb3B5U3Bvb2xlciBpbiB0aGUgZmluYWwgbG9vcCB0byBlbWl0IGxvYWQgLyBz
dG9yZSBwYWlycyBmb3IKKyAgICAgICAgICAgZmlsbGluZyBpbiB0aGUgbmV3IHN0YWNrIGZyYW1l
KHMpLgorCisgICAgICAgICAgIE9uZSBtb3JlIHRoaW5nOiBpdCB0dXJucyBvdXQgdGhhdCB0aGUg
dmFzdCBtYWpvcml0eSBvZiBjb25zdGFudHMgdG8gYmUgcmVjb3ZlcmVkCisgICAgICAgICAgIGlz
IHNpbXBseSB0aGUgdW5kZWZpbmVkIHZhbHVlLiAgU28sIGFzIGFuIG9wdGltaXphdGlvbiwgdGhl
IGZpbmFsIGxvb3Aga2VlcHMKKyAgICAgICAgICAgdGhlIHVuZGVmaW5lZCB2YWx1ZSBpbiBhIHJl
Z2lzdGVyLCBhbmQgaGFzIHRoZSBzcG9vbGVyIHN0b3JlIGRpcmVjdGx5IGZyb20KKyAgICAgICAg
ICAgdGhhdCByZWdpc3RlciB3aGVuIGFwcHJvcHJpYXRlLiAgVGhpcyBzYXZlcyBvbiBKSVQgY29k
ZSB0byByZXBlYXRlZGx5IG1hdGVyaWFsaXplCisgICAgICAgICAgIHRoZSB1bmRlZmluZWQgSlNW
YWx1ZSBjb25zdGFudC4KKworICAgICAgICAzLiBJbiByZWlmeUlubGluZWRDYWxsRnJhbWVzKCks
IHJlcGxhY2UgdGhlIHVzZSBvZiBHUFJJbmZvOjpub25BcmdHUFIwIHdpdGgKKyAgICAgICAgICAg
R1BSSW5mbzo6cmVnVDQuICBub25BcmdHUFJzIGFyZSBzb21ldGltZXMgbWFwIHRvIGNlcnRhaW4g
cmVnVFhzIG9uIGNlcnRhaW4gcG9ydHMuCisgICAgICAgICAgIFJlcGxhY2luZyB3aXRoIHJlZ1Q0
IG1ha2VzIGl0IGVhc2llciB0byBlbnN1cmUgdGhhdCB3ZSdyZSBub3QgdHJhc2hpbmcgdGhlCisg
ICAgICAgICAgIHJlZ2lzdGVyIHdoZW4gd2UgdXNlIG1vcmUgdGVtcCByZWdpc3RlcnMuCisKKyAg
ICAgICAgICAgcmVpZnlJbmxpbmVkQ2FsbEZyYW1lcygpIHdpbGwgYmUgdXNpbmcgZW1pdFNhdmVP
ckNvcHlMTEludEJhc2VsaW5lQ2FsbGVlU2F2ZXNGb3IoKQorICAgICAgICAgICBsYXRlciB3aGVy
ZSB3ZSBuZWVkIG1vcmUgdGVtcCByZWdpc3RlcnMuCisKKyAgICAgICAgNC4gTW92ZSB0aGUgZm9s
bG93aW5nIGZ1bmN0aW9ucyB0byBBc3NlbWJseUhlbHBlcnMuY3BwLiAgVGhleSBkb24ndCBuZWVk
IHRvIGJlCisgICAgICAgICAgIGlubGluZSBmdW5jdGlvbnMuICBTcGVlZG9tZXRlcjIgYW5kIEpl
dFN0cmVhbTIgc2hvd3MgdGhhdCBtYWtpbmcgdGhlc2Ugbm9uCisgICAgICAgICAgIGlubGluZSBk
b2VzIG5vdCBodXJ0IHBlcmZvcm1hbmNlOgorCisgICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxw
ZXJzOjplbWl0U2F2ZShjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCYpOworICAgICAgICAgICAg
ICAgIEFzc2VtYmx5SGVscGVyczo6ZW1pdFJlc3RvcmUoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExp
c3QmKTsKKyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OmVtaXRTYXZlQ2FsbGVlU2F2
ZXNGb3IoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QqKTsKKyAgICAgICAgICAgICAgICBBc3Nl
bWJseUhlbHBlcnM6OmVtaXRTYXZlT3JDb3B5Q2FsbGVlU2F2ZXNGb3IoLi4uKTsKKyAgICAgICAg
ICAgICAgICBBc3NlbWJseUhlbHBlcnM6OmVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXNGb3IoY29uc3Qg
UmVnaXN0ZXJBdE9mZnNldExpc3QqKTsKKyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6
OmNvcHlMTEludEJhc2VsaW5lQ2FsbGVlU2F2ZXNGcm9tRnJhbWVPclJlZ2lzdGVyVG9FbnRyeUZy
YW1lQ2FsbGVlU2F2ZXNCdWZmZXIoLi4uKTsKKworICAgICAgICAgICBBbHNvIHJlbmFtZWQgZW1p
dFNhdmVPckNvcHlDYWxsZWVTYXZlc0ZvcigpIHRvIGVtaXRTYXZlT3JDb3B5TExJbnRCYXNlbGlu
ZUNhbGxlZVNhdmVzRm9yKCkKKyAgICAgICAgICAgYmVjYXVzZSBpdCBpcyBvbmx5IHVzZWQgd2l0
aCBiYXNlbGluZSBjb2RlQmxvY2tzLgorCisgICAgICAgIFJlc3VsdHM6CisgICAgICAgIEN1bW11
bGF0aXZlIExpbmtCdWZmZXIgcHJvZmlsZSBzaXplcyBzaHJ1bmsgYnkgfjJNIGluIGFnZ3JlZ2F0
ZToKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UgICAgICAgICAgICAgICAgICAg
ICAgICAgICBuZXcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PT09ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPT09CisgICAgICAgICAgICAgICBCYXNlbGluZUpJVDogODM4MjcwNDgg
KDc5Ljk0MzcwMyBNQikgICAgID0+IDgzNzE4NzM2ICg3OS44NDA0MDggTUIpCisgICAgICAgICAg
ICAgICAgICAgICAgIERGRzogNTY1OTQ4MzYgKDUzLjk3MzA0MiBNQikgICAgID0+IDU2NjAzNTA4
ICg1My45ODEzMTIgTUIpCisgICAgICAgICAgICAgICBJbmxpbmVDYWNoZTogMzM5MjM5MDAgKDMy
LjM1MjM1MiBNQikgICAgID0+IDMzMTgzMTU2ICgzMS42NDU5MjQgTUIpCisgICAgICAgICAgICAg
ICAgICAgICAgIEZUTDogNjc3MDk1NiAoNi40NTcyODcgTUIpICAgICAgID0+IDY1Njg5NjQgKDYu
MjY0NjUyIE1CKQorICAgICAgICAgICAgICAgIERGR09TUkV4aXQ6IDUyMTIwOTYgKDQuOTcwNjQy
IE1CKSAgICAgICA9PiAzNzI4MDg4ICgzLjU1NTM4MiBNQikKKyAgICAgICAgICAgICAgICAgICAg
Q1NTSklUOiA3NDg0MjggKDczMC44ODY3MTkgS0IpICAgICAgPT4gNzQ4NDI4ICg3MzAuODg2NzE5
IEtCKQorICAgICAgICAgICAgICAgIEZUTE9TUkV4aXQ6IDY5MjI3NiAoNjc2LjA1MDc4MSBLQikg
ICAgICA9PiA2NTY4ODQgKDY0MS40ODgyODEgS0IpCisgICAgICAgICAgICAgICAgICAgWWFyckpJ
VDogNDQ1MjgwICg0MzQuODQzNzUwIEtCKSAgICAgID0+IDUxMjk4OCAoNTAwLjk2NDg0NCBLQikK
KyAgICAgICAgICAgICAgICAgIEZUTFRodW5rOiAyMjkwOCAoMjIuMzcxMDk0IEtCKSAgICAgICAg
PT4gMjI1NTYgKDIyLjAyNzM0NCBLQikKKyAgICAgICAgQm91bmRGdW5jdGlvblRodW5rOiA4NDAw
ICg4LjIwMzEyNSBLQikgICAgICAgICAgPT4gMTAwODggKDkuODUxNTYyIEtCKQorICAgICAgICAg
ICAgIEV4dHJhQ1RJVGh1bms6IDY5NTIgKDYuNzg5MDYyIEtCKSAgICAgICAgICA9PiA2ODI0ICg2
LjY2NDA2MiBLQikKKyAgICAgICAgICBTcGVjaWFsaXplZFRodW5rOiA0NTA4ICg0LjQwMjM0NCBL
QikgICAgICAgICAgPT4gNDUwOCAoNC40MDIzNDQgS0IpCisgICAgICAgICAgICAgICAgICAgICBU
aHVuazogMzkxMiAoMy44MjAzMTIgS0IpICAgICAgICAgID0+IDM3ODQgKDMuNjk1MzEyIEtCKQor
ICAgICAgICAgICAgICAgIExMSW50VGh1bms6IDI5MDggKDIuODM5ODQ0IEtCKSAgICAgICAgICA9
PiAyOTA4ICgyLjgzOTg0NCBLQikKKyAgICAgICAgICAgICAgVmlydHVhbFRodW5rOiAxMjQ4ICgx
LjIxODc1MCBLQikgICAgICAgICAgPT4gMTI0OCAoMS4yMTg3NTAgS0IpCisgICAgICAgICAgICAg
ICAgICBERkdUaHVuazogMTA4NCAoMS4wNTg1OTQgS0IpICAgICAgICAgID0+IDQ0NAorICAgICAg
ICAgICAgICAgREZHT1NSRW50cnk6IDIxNiAgICAgICAgICAgICAgICAgICAgICAgICA9PiAxODQK
KyAgICAgICAgICAgICAgICBKdW1wSXNsYW5kOiAwCisgICAgICAgICAgICAgICAgIFdhc21UaHVu
azogMAorICAgICAgICAgICAgICAgICAgICAgIFdhc206IDAKKyAgICAgICAgICAgICBVbmNhdGVn
b3JpemVkOiAwCisgICAgICAgICAgICAgICAgICAgICBUb3RhbDogMTg4MjY2OTU2ICgxNzkuNTQ1
MzYxIE1CKSAgID0+IDE4NTc3MzI5NiAoMTc3LjE2NzIyMSBNQikKKworICAgICAgICBTcGVlZG9t
ZXRlcjIgYW5kIEpldFN0cmVhbTIgcmVzdWx0cyBzaG93cyB0aGF0IHBlcmZvcm1hbmNlIGlzIG5l
dXRyYWwgZm9yIHRoaXMKKyAgICAgICAgcGF0Y2ggKGFzIG1lYXN1cmVkIG9uIGFuIE0xIE1hYyk6
CisKKyAgICAgICAgU3BlZWRvbWV0ZXIyOgorICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAg
ICAgIHwgICAgICAgICAgICAgICBzdWJ0ZXN0ICAgICAgICAgICAgICAgIHwgICAgIG1zICAgICAg
fCAgICAgbXMgICAgICB8ICBiIC8gYSAgIHwgcFZhbHVlIChzaWduaWZpY2FuY2UgdXNpbmcgRmFs
c2UgRGlzY292ZXJ5IFJhdGUpIHwKKyAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICB8
IEVsbS1Ub2RvTVZDICAgICAgICAgICAgICAgICAgICAgICAgICB8MTI5LjAzNzUwMCAgIHwxMjcu
MjEyNTAwICAgfDAuOTg1ODU3ICB8IDAuMDEyNzA2ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8CisgICAgICAgIHwgVnVlSlMtVG9kb01WQyAgICAgICAgICAgICAgICAg
ICAgICAgIHwyOC4zMTI1MDAgICAgfDI3LjUyNTAwMCAgICB8MC45NzIxODUgIHwgMC4yNDAzMTUg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBFbWJl
ckpTLVRvZG9NVkMgICAgICAgICAgICAgICAgICAgICAgfDEzMi41NTAwMDAgICB8MTMyLjAyNTAw
MCAgIHwwLjk5NjAzOSAgfCAwLjUzODAzNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfAorICAgICAgICB8IEZsaWdodC1Ub2RvTVZDICAgICAgICAgICAgICAgICAgICAg
ICB8ODAuNzYyNTAwICAgIHw4MC44NzUwMDAgICAgfDEuMDAxMzkzICB8IDAuOTE0NzQ5ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgQmFja2JvbmVK
Uy1Ub2RvTVZDICAgICAgICAgICAgICAgICAgIHw1MS42Mzc1MDAgICAgfDUxLjE3NTAwMCAgICB8
MC45OTEwNDMgIHwgMC4yODU0MjcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwKKyAgICAgICAgfCBQcmVhY3QtVG9kb01WQyAgICAgICAgICAgICAgICAgICAgICAgfDIx
LjAyNTAwMCAgICB8MjIuMDc1MDAwICAgIHwxLjA0OTk0MSAgfCAwLjIwNjE0MCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IEFuZ3VsYXJKUy1Ub2Rv
TVZDICAgICAgICAgICAgICAgICAgICB8MTQyLjkwMDAwMCAgIHwxNDIuODg3NTAwICAgfDAuOTk5
OTEzICB8IDAuOTkwNjgxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
CisgICAgICAgIHwgSW5mZXJuby1Ub2RvTVZDICAgICAgICAgICAgICAgICAgICAgIHw2OS4zMDAw
MDAgICAgfDY5Ljc3NTAwMCAgICB8MS4wMDY4NTQgIHwgMC41MDUyMDEgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBWYW5pbGxhLUVTMjAxNS1Ub2Rv
TVZDICAgICAgICAgICAgICAgfDcxLjUwMDAwMCAgICB8NzEuMjI1MDAwICAgIHwwLjk5NjE1NCAg
fCAwLjYwODY1MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAg
ICAgICB8IEFuZ3VsYXIyLVR5cGVTY3JpcHQtVG9kb01WQyAgICAgICAgICB8NDMuMjg3NTAwICAg
IHw0My4yNzUwMDAgICAgfDAuOTk5NzExICB8IDAuOTg3OTI2ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgVmFuaWxsYUpTLVRvZG9NVkMgICAgICAg
ICAgICAgICAgICAgIHw1Ny4yMTI1MDAgICAgfDU3LjgxMjUwMCAgICB8MS4wMTA0ODcgIHwgMC4z
MzMzNTcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAg
fCBqUXVlcnktVG9kb01WQyAgICAgICAgICAgICAgICAgICAgICAgfDI3Ni4xNTAwMDAgICB8Mjc2
Ljc3NTAwMCAgIHwxLjAwMjI2MyAgfCAwLjYxNDQwNCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfAorICAgICAgICB8IEVtYmVySlMtRGVidWctVG9kb01WQyAgICAgICAg
ICAgICAgICB8MzUzLjYxMjUwMCAgIHwzNTIuNzYyNTAwICAgfDAuOTk3NTk2ICB8IDAuNTE4ODM2
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgUmVh
Y3QtVG9kb01WQyAgICAgICAgICAgICAgICAgICAgICAgIHw5My42Mzc1MDAgICAgfDkyLjYzNzUw
MCAgICB8MC45ODkzMjEgIHwgMC4wMzYyNzcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwKKyAgICAgICAgfCBSZWFjdC1SZWR1eC1Ub2RvTVZDICAgICAgICAgICAgICAg
ICAgfDE1OC4yMzc1MDAgICB8MTU2LjU4NzUwMCAgIHwwLjk4OTU3MyAgfCAwLjA0MjE1NCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IFZhbmlsbGEt
RVMyMDE1LUJhYmVsLVdlYnBhY2stVG9kb01WQyB8NjguMDUwMDAwICAgIHw2OC4wODc1MDAgICAg
fDEuMDAwNTUxICB8IDAuODk3MTQ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8CisgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgICAgICBhIG1lYW4gPSAyMzYu
MjY5NTAKKyAgICAgICAgYiBtZWFuID0gMjM2LjU3OTY0CisgICAgICAgIHBWYWx1ZSA9IDAuNzgz
MDc4NTkzOAorICAgICAgICAoQmlnZ2VyIG1lYW5zIGFyZSBiZXR0ZXIuKQorICAgICAgICAxLjAw
MSB0aW1lcyBiZXR0ZXIKKyAgICAgICAgUmVzdWx0cyBBUkUgTk9UIHNpZ25pZmljYW50CisKKyAg
ICAgICAgSmV0U3RyZWFtMjoKKyAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICB8ICAgICAgICAgIHN1
YnRlc3QgICAgICAgICAgfCAgICAgcHRzICAgICAgfCAgICAgcHRzICAgICAgfCAgYiAvIGEgICB8
IHBWYWx1ZSAoc2lnbmlmaWNhbmNlIHVzaW5nIEZhbHNlIERpc2NvdmVyeSBSYXRlKSB8CisgICAg
ICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKyAgICAgICAgfCBnYXVzc2lhbi1ibHVyICAgICAgICAgICAgIHw1NDIuNTcw
MDU3ICAgIHw1NDIuNjcxODg1ICAgIHwxLjAwMDE4OCAgfCAwLjk4MjU3MyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IEhhc2hTZXQtd2FzbSAgICAg
ICAgICAgICAgfDU3LjcxMDQ5OCAgICAgfDY0LjQwNjM3MSAgICAgfDEuMTE2MDI1ICB8IDAuNDAx
NDI0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwg
Z2NjLWxvb3BzLXdhc20gICAgICAgICAgICB8NDQuNTE2MDA5ICAgICB8NDQuNDUzNTM1ICAgICB8
MC45OTg1OTcgIHwgMC45NzM2NTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwKKyAgICAgICAgfCBqc29uLXBhcnNlLWluc3BlY3RvciAgICAgIHwyNDEuMjc1MDg1ICAg
IHwyNDAuNzIwNDkxICAgIHwwLjk5NzcwMSAgfCAwLjcwNDczMiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IHByZXBhY2std3RiICAgICAgICAgICAg
ICAgfDYyLjY0MDExNCAgICAgfDYzLjc1NDg3OCAgICAgfDEuMDE3Nzk2ICB8IDAuMjA1ODQwICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgZGF0ZS1m
b3JtYXQteHBhcmItU1AgICAgICB8NDE2Ljk3NjgxNyAgICB8NDQ4LjkyMTQwOSAgICB8MS4wNzY2
MTAgIHwgMC4wNTI5NzcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwK
KyAgICAgICAgfCBXU0wgICAgICAgICAgICAgICAgICAgICAgIHwxLjU1NTI1NyAgICAgIHwxLjU3
MDIzMyAgICAgIHwxLjAwOTYyOSAgfCAwLjQyNzkyNCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfAorICAgICAgICB8IE9mZmxpbmVBc3NlbWJsZXIgICAgICAgICAgfDE3
Ny4wNTIzNTIgICAgfDE3OS43NDY1MTEgICAgfDEuMDE1MjE3ICB8IDAuMTEyMTE0ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgY2RqcyAgICAgICAg
ICAgICAgICAgICAgICB8MTkyLjUxNzU4NiAgICB8MTk0LjU5ODkwNiAgICB8MS4wMTA4MTEgIHwg
MC4wMjU4MDcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAg
ICAgfCBVbmlQb2tlciAgICAgICAgICAgICAgICAgIHw1MTQuMDIzNjk0ICAgIHw1MjYuMTExNTAw
ICAgIHwxLjAyMzUxNiAgfCAwLjI2OTg5MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfAorICAgICAgICB8IGpzb24tc3RyaW5naWZ5LWluc3BlY3RvciAgfDIyNy41ODQ3
MjUgICAgfDIyMy42MTkzOTAgICAgfDAuOTgyNTc2ICB8IDAuMTAyNzE0ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgY3J5cHRvLXNoYTEtU1AgICAg
ICAgICAgICB8OTgwLjcyODc4OCAgICB8OTg0LjE5MjEwNCAgICB8MS4wMDM1MzEgIHwgMC44Mzg2
MTggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBC
YXNpYyAgICAgICAgICAgICAgICAgICAgIHw2ODUuMTQ4NDgzICAgIHw3MTEuNTkwMjQ3ICAgIHwx
LjAzODU5MyAgfCAwLjE0Mjk1MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfAorICAgICAgICB8IGNoYWktd3RiICAgICAgICAgICAgICAgICAgfDEwNi4yNTYzNzYgICAg
fDEwNi41OTAzMTggICAgfDEuMDAzMTQzICB8IDAuODY1ODk0ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgY3J5cHRvLWFlcy1TUCAgICAgICAgICAg
ICB8NzIyLjMwODgyOSAgICB8NzI4LjcwMjMxMCAgICB8MS4wMDg4NTEgIHwgMC40ODY3NjYgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBCYWJ5bG9u
ICAgICAgICAgICAgICAgICAgIHw2NTUuODU3NTYxICAgIHw2NTQuMjA0OTAxICAgIHwwLjk5NzQ4
MCAgfCAwLjkzMTUyMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAor
ICAgICAgICB8IHN0cmluZy11bnBhY2stY29kZS1TUCAgICAgfDQwNy44MzcyNzEgICAgfDQwNS43
MTA3NTIgICAgfDAuOTk0Nzg2ICB8IDAuNzI5MTIyICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8CisgICAgICAgIHwgc3RhbmZvcmQtY3J5cHRvLWFlcyAgICAgICB8NDU2
LjkwNjAyMSAgICB8NDQ5Ljk5Mzg1NiAgICB8MC45ODQ4NzIgIHwgMC4yNzI5OTQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCByYXl0cmFjZSAgICAg
ICAgICAgICAgICAgIHw4ODMuOTExMzM1ICAgIHw5MDIuODg3MjM4ICAgIHwxLjAyMTQ2OCAgfCAw
LjE4OTc4NSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAg
ICB8IG11bHRpLWluc3BlY3Rvci1jb2RlLWxvYWQgfDQwOS45OTczNDcgICAgfDQwNS42NDM2Mzkg
ICAgfDAuOTg5MzgxICB8IDAuNjQ0NDQ3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8CisgICAgICAgIHwgaGFzaC1tYXAgICAgICAgICAgICAgICAgICB8NTkzLjU5MDE2
MCAgICB8NjAxLjU3NjMzMiAgICB8MS4wMTM0NTQgIHwgMC4yNDk0MTQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBzdGFuZm9yZC1jcnlwdG8tcGJr
ZGYyICAgIHw3MjIuMTc4NjM4ICAgIHw3MjguMjgzNTMyICAgIHwxLjAwODQ1MyAgfCAwLjY2MTE5
NSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IGNv
ZmZlZXNjcmlwdC13dGIgICAgICAgICAgfDQyLjM5MzU0NCAgICAgfDQxLjg2OTU0NSAgICAgfDAu
OTg3NjQwICB8IDAuMTk3NDQxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8CisgICAgICAgIHwgQm94MkQgICAgICAgICAgICAgICAgICAgICB8NDUyLjAzNDY4NSAgICB8
NDU0LjEwNDg2OCAgICB8MS4wMDQ1ODAgIHwgMC41MzUzNDIgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCByaWNoYXJkcy13YXNtICAgICAgICAgICAg
IHwxNDAuODczNjg4ICAgIHwxNDguMzk0MDUwICAgIHwxLjA1MzM4NCAgfCAwLjMwMzY1MSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IGxlYmFiLXd0
YiAgICAgICAgICAgICAgICAgfDYxLjY3MTMxOCAgICAgfDYyLjExOTQwMyAgICAgfDEuMDA3MjY2
ICB8IDAuNjIwOTk4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cisg
ICAgICAgIHwgdHNmLXdhc20gICAgICAgICAgICAgICAgICB8MTA4LjU5Mjc5NCAgICB8MTE5LjQ5
ODM5OCAgICB8MS4xMDA0MjcgIHwgMC41MDQ3MTAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwKKyAgICAgICAgfCBiYXNlNjQtU1AgICAgICAgICAgICAgICAgIHw2Mjku
NzQ0NjQzICAgIHw2MDMuNDI1NTY1ICAgIHwwLjk1ODIwNyAgfCAwLjA0OTk5NyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IG5hdmllci1zdG9rZXMg
ICAgICAgICAgICAgfDc0MC41ODg1MjMgICAgfDczOS45NTE2NjIgICAgfDAuOTk5MTQwICB8IDAu
ODcxNDQ1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAg
IHwganNoaW50LXd0YiAgICAgICAgICAgICAgICB8NTEuOTM4MzU5ICAgICB8NTIuNjUxMTA0ICAg
ICB8MS4wMTM3MjMgIHwgMC4yMTcxMzcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwKKyAgICAgICAgfCByZWdleC1kbmEtU1AgICAgICAgICAgICAgIHw0NTkuMjUxMTQ4
ICAgIHw0NjMuNDkyNDg5ICAgIHwxLjAwOTIzNSAgfCAwLjM3MTg5MSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IGFzeW5jLWZzICAgICAgICAgICAg
ICAgICAgfDIzNS44NTM4MjAgICAgfDIzNi4wMzExODkgICAgfDEuMDAwNzUyICB8IDAuOTM4NDU5
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgZmly
c3QtaW5zcGVjdG9yLWNvZGUtbG9hZCB8Mjc1LjI5ODMyNSAgICB8Mjc0LjE3MjEyNSAgICB8MC45
OTU5MDkgIHwgMC42MjM0MDMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwKKyAgICAgICAgfCBzZWdtZW50YXRpb24gICAgICAgICAgICAgIHw0NC4wMDI4NDIgICAgIHw0
My40NDU5NjAgICAgIHwwLjk4NzM0NCAgfCAwLjIwNzEzNCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IHR5cGVzY3JpcHQgICAgICAgICAgICAgICAg
fDI2LjM2MDE2MSAgICAgfDI2LjQ1ODgyMCAgICAgfDEuMDAzNzQzICB8IDAuNjA5OTQyICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgb2N0YW5lLWNv
ZGUtbG9hZCAgICAgICAgICB8MTEyNi43NDkwMzYgICB8MTA4Ny4xMzIwMjQgICB8MC45NjQ4NDAg
IHwgMC41MjQxNzEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAg
ICAgICAgfCBmbG9hdC1tbS5jICAgICAgICAgICAgICAgIHwxNi42OTE5MzUgICAgIHwxNi43MjEz
NTQgICAgIHwxLjAwMTc2MiAgfCAwLjE5NDQyNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfAorICAgICAgICB8IHF1aWNrc29ydC13YXNtICAgICAgICAgICAgfDQ2MS42
MzAwOTEgICAgfDQ1MC4xNjExMjcgICAgfDAuOTc1MTU2ICB8IDAuMzcxMzk0ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgQWlyICAgICAgICAgICAg
ICAgICAgICAgICB8MzkyLjQ0MjM3NSAgICB8NDEyLjIwMTgxMCAgICB8MS4wNTAzNTAgIHwgMC4w
NDY4ODcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAg
fCBzcGxheSAgICAgICAgICAgICAgICAgICAgIHw1MTAuMTExODg2ICAgIHw0NzUuMTMxNjU3ICAg
IHwwLjkzMTQyNiAgfCAwLjAyNDczMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfAorICAgICAgICB8IGFpLWFzdGFyICAgICAgICAgICAgICAgICAgfDYwNy45NjY5NzQg
ICAgfDYyNi41NzMxODEgICAgfDEuMDMwNjA0ICB8IDAuNDY4NzExICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgYWNvcm4td3RiICAgICAgICAgICAg
ICAgICB8NjcuNTEwNzY2ICAgICB8NjguMTQzOTU2ICAgICB8MS4wMDkzNzkgIHwgMC40ODE2NjMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBnYmVt
dSAgICAgICAgICAgICAgICAgICAgIHwxNDQuMTMzODQyICAgIHwxNDUuNjIwMzA0ICAgIHwxLjAx
MDMxMyAgfCAwLjgwMjE1NCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fAorICAgICAgICB8IHJpY2hhcmRzICAgICAgICAgICAgICAgICAgfDk2My40NzUwNzggICAgfDk0
Ni42NTg4NzkgICAgfDAuOTgyNTQ2ICB8IDAuMjMxMTg5ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgM2QtY3ViZS1TUCAgICAgICAgICAgICAgICB8
NTQ5LjQyNjc4NCAgICB8NTUwLjQ3OTE1NCAgICB8MS4wMDE5MTUgIHwgMC44MzEzMDcgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBlc3ByZWUtd3Ri
ICAgICAgICAgICAgICAgIHw2OC43MDc0ODMgICAgIHw3My43NjIyMDIgICAgIHwxLjA3MzU2OSAg
fCAwLjAzMzYwMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAg
ICAgICB8IGJvbWItd29ya2VycyAgICAgICAgICAgICAgfDk2Ljg4MjU5NiAgICAgfDk2LjExNjEy
MSAgICAgfDAuOTkyMDg5ICB8IDAuNjg3OTUyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8CisgICAgICAgIHwgdGFnY2xvdWQtU1AgICAgICAgICAgICAgICB8MzA5Ljg4
ODc2NyAgICB8MzAzLjUzODUxMSAgICB8MC45Nzk1MDggIHwgMC4xODc3NjggICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBtYW5kcmVlbCAgICAgICAg
ICAgICAgICAgIHwxMzMuNjY3MDMxICAgIHwxMzUuMDA5OTI5ICAgIHwxLjAxMDA0NyAgfCAwLjA3
NTIzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8
IDNkLXJheXRyYWNlLVNQICAgICAgICAgICAgfDQ5MS45Njc2NDkgICAgfDQ5Mi41Mjg5OTIgICAg
fDEuMDAxMTQxICB8IDAuOTU3ODQyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8CisgICAgICAgIHwgZGVsdGEtYmx1ZSAgICAgICAgICAgICAgICB8MTA2Ni43MTgzMTIg
ICB8MTA4MC4yMzA3NzIgICB8MS4wMTI2NjcgIHwgMC41NDkzODIgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBNTCAgICAgICAgICAgICAgICAgICAg
ICAgIHwxMzkuNjE3MjkzICAgIHwxNDAuMDg4NjMwICAgIHwxLjAwMzM3NiAgfCAwLjY2MTY1MSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IHJlZ2V4
cCAgICAgICAgICAgICAgICAgICAgfDM1MS43NzM5NTYgICAgfDM1MS4wNzU5MzUgICAgfDAuOTk4
MDE2ICB8IDAuNzY5MjUwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
CisgICAgICAgIHwgY3J5cHRvICAgICAgICAgICAgICAgICAgICB8MTUxMC40NzQ2NjMgICB8MTUx
OS4yMTg4NDIgICB8MS4wMDU3ODkgIHwgMC42Mzg0MjAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBjcnlwdG8tbWQ1LVNQICAgICAgICAgICAgIHw3
OTUuNDQ3ODk5ICAgIHw3NzQuMDgyNDkzICAgIHwwLjk3MzE0MCAgfCAwLjA3OTcyOCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IGVhcmxleS1ib3ll
ciAgICAgICAgICAgICAgfDgxMi41NzQ1NDUgICAgfDg3MC42NzgzNzIgICAgfDEuMDcxNTA2ICB8
IDAuMDQ0MDgxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAg
ICAgIHwgb2N0YW5lLXpsaWIgICAgICAgICAgICAgICB8MjUuMTYyNDcwICAgICB8MjUuNjYwMjYx
ICAgICB8MS4wMTk3ODMgIHwgMC41NTQ1OTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwKKyAgICAgICAgfCBkYXRlLWZvcm1hdC10b2Z0ZS1TUCAgICAgIHwzOTUuMjk2
MTM1ICAgIHwzOTguMDA4OTkyICAgIHwxLjAwNjg2MyAgfCAwLjY1MDQ3NSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IG4tYm9keS1TUCAgICAgICAg
ICAgICAgICAgfDExNjUuMzg2NjExICAgfDExNTAuNTI1MTEwICAgfDAuOTg3MjQ4ICB8IDAuMjI3
OTA4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwg
cGRmanMgICAgICAgICAgICAgICAgICAgICB8MTg5LjA2MDI1MiAgICB8MTkxLjAxNTYyOCAgICB8
MS4wMTAzNDMgIHwgMC42MzM3NzcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwKKyAgICAgICAgfCBGbGlnaHRQbGFubmVyICAgICAgICAgICAgIHw5MDguNDI2MTkyICAg
IHw5MDMuNjM2NjQyICAgIHwwLjk5NDcyOCAgfCAwLjgzODgyMSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IHVnbGlmeS1qcy13dGIgICAgICAgICAg
ICAgfDM0LjAyOTM5OSAgICAgfDM0LjE2NDM0MiAgICAgfDEuMDAzOTY1ICB8IDAuNjU1NjUyICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgYmFieWxv
bi13dGIgICAgICAgICAgICAgICB8ODEuMzI5ODY5ICAgICB8ODAuODU1NjgwICAgICB8MC45OTQx
NzAgIHwgMC44NTQzOTMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwK
KyAgICAgICAgfCBzdGFuZm9yZC1jcnlwdG8tc2hhMjU2ICAgIHw4MjYuODUwNTMzICAgIHw4Mzgu
NDk0MTY0ICAgIHwxLjAxNDA4MiAgfCAwLjU3OTYzNiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfAorICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAgICAgYSBtZWFuID0gMjM3
LjkxMDg0CisgICAgICAgIGIgbWVhbiA9IDIzOS45MjY3MAorICAgICAgICBwVmFsdWUgPSAwLjA2
NTc3MTA4OTcKKyAgICAgICAgKEJpZ2dlciBtZWFucyBhcmUgYmV0dGVyLikKKyAgICAgICAgMS4w
MDggdGltZXMgYmV0dGVyCisgICAgICAgIFJlc3VsdHMgQVJFIE5PVCBzaWduaWZpY2FudAorCisg
ICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIu
aDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OnB1c2hUb1NhdmVCeXRlT2Zmc2V0KToK
KyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpwdXNoVG9TYXZlQnl0ZU9mZnNldCk6CisgICAgICAgICog
ZGZnL0RGR09TUkV4aXQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXQ6OmNvbXBpbGVF
eGl0KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpyZWlmeUlubGluZWRDYWxsRnJhbWVzKToKKyAgICAgICAgKiBkZmcvREZH
VGh1bmtzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpvc3JFeGl0R2VuZXJhdGlvblRodW5rR2Vu
ZXJhdG9yKToKKyAgICAgICAgKiBmdGwvRlRMU2F2ZVJlc3RvcmUuY3BwOgorICAgICAgICAoSlND
OjpGVEw6OnNhdmVBbGxSZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpGVEw6OnJlc3RvcmVBbGxS
ZWdpc3RlcnMpOgorICAgICAgICAqIGZ0bC9GVExTYXZlUmVzdG9yZS5oOgorICAgICAgICAqIGZ0
bC9GVExUaHVua3MuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmdlbmVyaWNHZW5lcmF0aW9uVGh1
bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpGVEw6OnNsb3dQYXRoQ2FsbFRodW5rR2VuZXJh
dG9yKToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6
QXNzZW1ibHlIZWxwZXJzOjpyZXN0b3JlQ2FsbGVlU2F2ZXNGcm9tRW50cnlGcmFtZUNhbGxlZVNh
dmVzQnVmZmVyKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpjb3B5Q2FsbGVlU2F2
ZXNUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlckltcGwpOgorICAgICAgICAoSlNDOjpBc3Nl
bWJseUhlbHBlcnM6OmVtaXRTYXZlKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpl
bWl0UmVzdG9yZSk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdFNhdmVDYWxs
ZWVTYXZlc0Zvcik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdFJlc3RvcmVD
YWxsZWVTYXZlc0Zvcik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6Y29weUxMSW50
QmFzZWxpbmVDYWxsZWVTYXZlc0Zyb21GcmFtZU9yUmVnaXN0ZXJUb0VudHJ5RnJhbWVDYWxsZWVT
YXZlc0J1ZmZlcik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdFNhdmVPckNv
cHlMTEludEJhc2VsaW5lQ2FsbGVlU2F2ZXNGb3IpOgorICAgICAgICAqIGppdC9Bc3NlbWJseUhl
bHBlcnMuaDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpjb3B5TExJbnRCYXNlbGlu
ZUNhbGxlZVNhdmVzRnJvbUZyYW1lT3JSZWdpc3RlclRvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVm
ZmVyKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0U2F2ZSk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdFJlc3RvcmUpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRTYXZlT3JDb3B5Q2FsbGVlU2F2ZXNG
b3IpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9TY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuY3Bw
OgorICAgICAgICAoSlNDOjpTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OnByZXNlcnZlUmV1c2Vk
UmVnaXN0ZXJzQnlQdXNoaW5nKToKKyAgICAgICAgKEpTQzo6U2NyYXRjaFJlZ2lzdGVyQWxsb2Nh
dG9yOjpyZXN0b3JlUmV1c2VkUmVnaXN0ZXJzQnlQb3BwaW5nKToKKyAgICAgICAgKEpTQzo6U2Ny
YXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpwcmVzZXJ2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKToK
KyAgICAgICAgKEpTQzo6U2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpyZXN0b3JlUmVnaXN0ZXJz
RnJvbVN0YWNrRm9yQ2FsbCk6CisgICAgICAgICogaml0L1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRv
ci5oOgorICAgICAgICAqIHdhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpT
Qzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OmFkZFJldHVybik6CisgICAgICAgICogd2FzbS9XYXNt
QjNJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmFk
ZFJldHVybik6CisKIDIwMjEtMDYtMTUgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0Bn
bm9tZS5vcmc+CiAKICAgICAgICAgLVdhcnJheS1ib3VuZHMgd2FybmluZyBpbiBQYWNrZWQuaApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjc4ODg2KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC03NTcsNiArNzU3LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hF
QQogICAgIGludGVycHJldGVyL1ZNRW50cnlSZWNvcmQuaAogCiAgICAgaml0L0Fzc2VtYmx5SGVs
cGVycy5oCisgICAgaml0L0Fzc2VtYmx5SGVscGVyc1Nwb29sZXJzLmgKICAgICBqaXQvQ0NhbGxI
ZWxwZXJzLmgKICAgICBqaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5oCiAgICAgaml0L0ZQUkluZm8u
aApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI3ODg4NikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQ4LDYgKzExNDgsNyBAQAogCQk2NUI4MzkyRTFC
QUNBRDM2MDA0NEU4MjQgLyogQ2FjaGVkUmVjb3ZlcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1QjgzOTJDMUJBQ0E5MkEwMDQ0RTgyNCAvKiBDYWNo
ZWRSZWNvdmVyeS5oICovOyB9OwogCQk2QTM4Q0ZBQTFFMzJCNUFCMDA2MDIwNkYgLyogQXN5bmNT
dGFja1RyYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA2QTM4Q0ZBODFFMzJCNThCMDA2MDIwNkYgLyogQXN5bmNTdGFja1RyYWNlLmggKi87IH07CiAJ
CTZBRDJDQjREMTlCOTE0MDEwMDA2NTcxOSAvKiBEZWJ1Z2dlckV2YWxFbmFibGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QUQyQ0I0QzE5QjkxNDAx
MDAwNjU3MTkgLyogRGVidWdnZXJFdmFsRW5hYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTZCNzY3RTdCMjY3OTFGMjcwMDE3RjhEMSAvKiBB
c3NlbWJseUhlbHBlcnNTcG9vbGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNkI3NjdFN0EyNjc5MUYyNzAwMTdGOEQxIC8qIEFzc2VtYmx5SGVscGVy
c1Nwb29sZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNkJDQ0VDMDQyNUQxRkEyNzAwMEYzOTFEIC8qIFZlcmlmaWVyU2xvdFZpc2l0b3JJbmxp
bmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QkND
RUMwMzI1RDFGQTI3MDAwRjM5MUQgLyogVmVyaWZpZXJTbG90VmlzaXRvcklubGluZXMuaCAqLzsg
fTsKIAkJNzAxMTNENEMxQThEQjA5MzAwMzg0OEM0IC8qIEl0ZXJhdG9yT3BlcmF0aW9ucy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzAxMTNENEExQThE
QjA5MzAwMzg0OEM0IC8qIEl0ZXJhdG9yT3BlcmF0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcwMTNDQThDMUI0OTFBOTQwMENBRTYxMyAv
KiBKU01pY3JvdGFzay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzAxM0NBOEExQjQ5MUE5NDAwQ0FFNjEzIC8qIEpTTWljcm90YXNrLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM5OTcsNiArMzk5OCw3
IEBACiAJCTZBMzhDRkE4MUUzMkI1OEIwMDYwMjA2RiAvKiBBc3luY1N0YWNrVHJhY2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXN5bmNTdGFja1RyYWNlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZBRDJDQjRDMTlCOTE0MDEwMDA2NTcxOSAvKiBEZWJ1Z2dl
ckV2YWxFbmFibGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlYnVnZ2Vy
RXZhbEVuYWJsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkI3MzFDQzAyNjQ3
QTgzNzAwMTQ2NDZGIC8qIFNsb3dQYXRoQ2FsbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTbG93
UGF0aENhbGwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2Qjc2N0U3QTI2Nzkx
RjI3MDAxN0Y4RDEgLyogQXNzZW1ibHlIZWxwZXJzU3Bvb2xlcnMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQXNzZW1ibHlIZWxwZXJzU3Bvb2xlcnMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNkJBOTNDOTU5MDQ4NEM1QkFEOTMxNkVBIC8qIEpTU2NyaXB0RmV0
Y2hlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NjcmlwdEZldGNoZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkJDQ0VDMDMyNUQxRkEyNzAwMEYzOTFE
IC8qIFZlcmlmaWVyU2xvdFZpc2l0b3JJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFZlcmlmaWVyU2xvdFZpc2l0b3JJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTcwMTEzRDQ5MUE4REIwOTMwMDM4NDhDNCAvKiBJdGVyYXRvck9wZXJhdGlv
bnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSXRlcmF0b3JPcGVy
YXRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYxOTcsNiArNjE5OSw3
IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQkwRjI0RTUzQjE3RUE5RjU5MDBBQkIyMTcgLyogQXNz
ZW1ibHlIZWxwZXJzLmNwcCAqLywKIAkJCQkwRjI0RTUzQzE3RUE5RjU5MDBBQkIyMTcgLyogQXNz
ZW1ibHlIZWxwZXJzLmggKi8sCisJCQkJNkI3NjdFN0EyNjc5MUYyNzAwMTdGOEQxIC8qIEFzc2Vt
Ymx5SGVscGVyc1Nwb29sZXJzLmggKi8sCiAJCQkJNzIzOTk4RjYyNjVEQkNEQjAwNTc4NjdGIC8q
IEJhc2VsaW5lSklUUGxhbi5jcHAgKi8sCiAJCQkJNzIzOTk4RjUyNjVEQkNEQjAwNTc4NjdGIC8q
IEJhc2VsaW5lSklUUGxhbi5oICovLAogCQkJCTBGNjRCMjZGMUE3ODRCQUYwMDZFNEU2NiAvKiBC
aW5hcnlTd2l0Y2guY3BwICovLApAQCAtOTE1MSw2ICs5MTU0LDcgQEAKIAkJCQlGRTkxMkI1MTI1
MzExQUQxMDBGQUJEREYgLyogQWJzdHJhY3RTbG90VmlzaXRvcklubGluZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTUzNEUwMzRFMUU0RDRCMTYwMDIxM0Y2NCAvKiBBY2Nlc3NDYXNlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlFM0JGRDBCQzFEQUY4MDhFMDA2NURFQTIgLyogQWNjZXNzQ2FzZVNuaXBw
ZXRQYXJhbXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTZCNzY3RTdCMjY3OTFGMjcwMDE3RjhEMSAv
KiBBc3NlbWJseUhlbHBlcnNTcG9vbGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTM3MEI0RjYx
QkYyNjIwNTAwNUM0MEZDIC8qIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2lu
dEJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTkxNjhCRDg3MjQ0N0JBNEUwMDgwRkZCNCAvKiBB
Z2dyZWdhdGVFcnJvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTE4RTE1QzMyNDQ3QjIyNzAwNDQ3
QTU2IC8qIEFnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAko
cmV2aXNpb24gMjc4ODg2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMzcsNyArMzM3LDcgQEAgcHVibGljOgog
ICAgICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKHNpemVvZihkb3VibGUpKSwgc3RhY2tQb2ludGVy
UmVnaXN0ZXIpOwogICAgIH0KICAgICAKLSAgICBzdGF0aWMgcHRyZGlmZl90IHB1c2hUb1NhdmVC
eXRlT2Zmc2V0KCkgeyByZXR1cm4gc2l6ZW9mKHZvaWQqKTsgfQorICAgIHN0YXRpYyBjb25zdGV4
cHIgcHRyZGlmZl90IHB1c2hUb1NhdmVCeXRlT2Zmc2V0KCkgeyByZXR1cm4gc2l6ZW9mKHZvaWQq
KTsgfQogI2VuZGlmIC8vICFDUFUoQVJNNjQpCiAKICNpZiBDUFUoWDg2XzY0KSB8fCBDUFUoQVJN
NjQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
QVJNNjQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyQVJNNjQuaAkocmV2aXNpb24gMjc4ODg2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTI1MDQsNyArMjUwNCw3IEBAIHB1YmxpYzoKICAgICAgICAgc3RvcmVEb3VibGUoc3JjLCBzdGFj
a1BvaW50ZXJSZWdpc3Rlcik7CiAgICAgfQogCi0gICAgc3RhdGljIHB0cmRpZmZfdCBwdXNoVG9T
YXZlQnl0ZU9mZnNldCgpIHsgcmV0dXJuIDE2OyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBwdHJk
aWZmX3QgcHVzaFRvU2F2ZUJ5dGVPZmZzZXQoKSB7IHJldHVybiAxNjsgfQogCiAgICAgLy8gUmVn
aXN0ZXIgbW92ZSBvcGVyYXRpb25zOgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09TUkV4aXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT1NSRXhpdC5jcHAJKHJldmlzaW9uIDI3ODg4NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT1NSRXhpdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIAog
I2lmIEVOQUJMRShERkdfSklUKQogCi0jaW5jbHVkZSAiQXNzZW1ibHlIZWxwZXJzLmgiCisjaW5j
bHVkZSAiQXNzZW1ibHlIZWxwZXJzU3Bvb2xlcnMuaCIKICNpbmNsdWRlICJCeXRlY29kZVN0cnVj
dHMuaCIKICNpbmNsdWRlICJDaGVja3BvaW50T1NSRXhpdFNpZGVTdGF0ZS5oIgogI2luY2x1ZGUg
IkRGR0dyYXBoLmgiCkBAIC01NjIsMTMgKzU2MiwxOSBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVF
eGl0KENDYWxsSGVscGVycyYgCiAgICAgLy8gZG8gdGhpcyBldmVuIGZvciBzdGF0ZSB0aGF0J3Mg
YWxyZWFkeSBpbiB0aGUgcmlnaHQgcGxhY2Ugb24gdGhlIHN0YWNrLgogICAgIC8vIEl0IG1ha2Vz
IHRoaW5ncyBzaW1wbGVyIGxhdGVyLgogCisgICAgYm9vbCBpbmxpbmVTdGFja0NvbnRhaW5zQWN0
aXZlQ2hlY2twb2ludCA9IGV4aXQubV9jb2RlT3JpZ2luLmlubGluZVN0YWNrQ29udGFpbnNBY3Rp
dmVDaGVja3BvaW50KCk7CisgICAgc2l6ZV90IGZpcnN0VG1wVG9SZXN0b3JlRWFybHkgPSBvcGVy
YW5kcy5zaXplKCkgLSBvcGVyYW5kcy5udW1iZXJPZlRtcHMoKTsKKyAgICBpZiAoIWlubGluZVN0
YWNrQ29udGFpbnNBY3RpdmVDaGVja3BvaW50KQorICAgICAgICBmaXJzdFRtcFRvUmVzdG9yZUVh
cmx5ID0gb3BlcmFuZHMuc2l6ZSgpOyAvLyBEb24ndCBlYWdlcmx5IHJlc3RvcmUuCisKICAgICAv
LyBUaGUgdGFnIHJlZ2lzdGVycyBhcmUgbmVlZGVkIHRvIG1hdGVyaWFsaXplIHJlY292ZXJpZXMg
YmVsb3cuCiAgICAgaml0LmVtaXRNYXRlcmlhbGl6ZVRhZ0NoZWNrUmVnaXN0ZXJzKCk7CiAKICAg
ICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgb3BlcmFuZHMuc2l6ZSgpOyArK2luZGV4
KSB7CiAgICAgICAgIGNvbnN0IFZhbHVlUmVjb3ZlcnkmIHJlY292ZXJ5ID0gb3BlcmFuZHNbaW5k
ZXhdOwogCi0gICAgICAgIHN3aXRjaCAocmVjb3ZlcnkudGVjaG5pcXVlKCkpIHsKKyAgICAgICAg
YXV0byBjdXJyZW50VGVjaG5pcXVlID0gcmVjb3ZlcnkudGVjaG5pcXVlKCk7CisgICAgICAgIHN3
aXRjaCAoY3VycmVudFRlY2huaXF1ZSkgewogICAgICAgICBjYXNlIERpc3BsYWNlZEluSlNTdGFj
azoKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBjYXNlIENlbGxEaXNwbGFjZWRJbkpTU3Rh
Y2s6CkBAIC01OTQsOSArNjAwLDEyIEBAIHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxI
ZWxwZXJzJiAKIAogICAgICAgICBjYXNlIENvbnN0YW50OiB7CiAjaWYgVVNFKEpTVkFMVUU2NCkK
LSAgICAgICAgICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTY0KEpTVmFs
dWU6OmVuY29kZShyZWNvdmVyeS5jb25zdGFudCgpKSksIEdQUkluZm86OnJlZ1QwKTsKLSAgICAg
ICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBzY3JhdGNoICsgaW5kZXgpOwotI2Vs
c2UKKyAgICAgICAgICAgIGlmIChpbmRleCA+PSBmaXJzdFRtcFRvUmVzdG9yZUVhcmx5KSB7Cisg
ICAgICAgICAgICAgICAgQVNTRVJUKG9wZXJhbmRzLm9wZXJhbmRGb3JJbmRleChpbmRleCkuaXNU
bXAoKSk7CisgICAgICAgICAgICAgICAgaml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVk
SW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKHJlY292ZXJ5LmNvbnN0YW50KCkpKSwgR1BSSW5mbzo6cmVn
VDApOworICAgICAgICAgICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBzY3JhdGNo
ICsgaW5kZXgpOworICAgICAgICAgICAgfQorI2Vsc2UgLy8gbm90IFVTRShKU1ZBTFVFNjQpCiAg
ICAgICAgICAgICBqaXQuc3RvcmUzMigKICAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6
OlRydXN0ZWRJbW0zMihyZWNvdmVyeS5jb25zdGFudCgpLnRhZygpKSwKICAgICAgICAgICAgICAg
ICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgp
LT5hc0JpdHMudGFnKTsKQEAgLTc2Niw3ICs3NzUsNyBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVF
eGl0KENDYWxsSGVscGVycyYgCiAgICAgaWYgKGV4aXQuaXNFeGNlcHRpb25IYW5kbGVyKCkpCiAg
ICAgICAgIGppdC5jb3B5Q2FsbGVlU2F2ZXNUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcih2
bS50b3BFbnRyeUZyYW1lKTsKIAotICAgIGlmIChleGl0Lm1fY29kZU9yaWdpbi5pbmxpbmVTdGFj
a0NvbnRhaW5zQWN0aXZlQ2hlY2twb2ludCgpKSB7CisgICAgaWYgKGlubGluZVN0YWNrQ29udGFp
bnNBY3RpdmVDaGVja3BvaW50KSB7CiAgICAgICAgIEVuY29kZWRKU1ZhbHVlKiB0bXBTY3JhdGNo
ID0gc2NyYXRjaCArIG9wZXJhbmRzLnRtcEluZGV4KDApOwogICAgICAgICBqaXQuc2V0dXBBcmd1
bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uTWF0ZXJpYWxpemVPU1JFeGl0U2lkZVN0YXRlKT4oJnZt
LCAmZXhpdCwgdG1wU2NyYXRjaCk7CiAgICAgICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2
bSk7CkBAIC03NzYsNiArNzg1LDE2IEBAIHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxI
ZWxwZXJzJiAKIAogICAgIC8vIERvIGFsbCBkYXRhIGZvcm1hdCBjb252ZXJzaW9ucyBhbmQgc3Rv
cmUgdGhlIHJlc3VsdHMgaW50byB0aGUgc3RhY2suCiAKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAg
IGNvbnN0ZXhwciBHUFJSZWcgc3JjQnVmZmVyR1BSID0gR1BSSW5mbzo6cmVnVDI7CisgICAgY29u
c3RleHByIEdQUlJlZyBkZXN0QnVmZmVyR1BSID0gR1BSSW5mbzo6cmVnVDM7CisgICAgY29uc3Rl
eHByIEdQUlJlZyB1bmRlZmluZWRHUFIgPSBHUFJJbmZvOjpyZWdUNDsKKyAgICBib29sIHVuZGVm
aW5lZEdQUklzSW5pdGlhbGl6ZWQgPSBmYWxzZTsKKworICAgIGppdC5tb3ZlKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbVB0cihzY3JhdGNoKSwgc3JjQnVmZmVyR1BSKTsKKyAgICBqaXQubW92ZShD
Q2FsbEhlbHBlcnM6OmZyYW1lUG9pbnRlclJlZ2lzdGVyLCBkZXN0QnVmZmVyR1BSKTsKKyAgICBD
Q2FsbEhlbHBlcnM6OkNvcHlTcG9vbGVyIHNwb29sZXIoQ0NhbGxIZWxwZXJzOjpDb3B5U3Bvb2xl
cjo6QnVmZmVyUmVnczo6QWxsb3dNb2RpZmljYXRpb24sIGppdCwgc3JjQnVmZmVyR1BSLCBkZXN0
QnVmZmVyR1BSLCBHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDEpOworI2VuZGlmCiAgICAg
Zm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG9wZXJhbmRzLnNpemUoKTsgKytpbmRleCkg
ewogICAgICAgICBjb25zdCBWYWx1ZVJlY292ZXJ5JiByZWNvdmVyeSA9IG9wZXJhbmRzW2luZGV4
XTsKICAgICAgICAgT3BlcmFuZCBvcGVyYW5kID0gb3BlcmFuZHMub3BlcmFuZEZvckluZGV4KGlu
ZGV4KTsKQEAgLTc4Niw2ICs4MDUsMjMgQEAgdm9pZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2Fs
bEhlbHBlcnMmIAogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgc3dpdGNoIChyZWNv
dmVyeS50ZWNobmlxdWUoKSkgeworICAgICAgICBjYXNlIENvbnN0YW50OiB7CisjaWYgVVNFKEpT
VkFMVUU2NCkKKyAgICAgICAgICAgIEVuY29kZWRKU1ZhbHVlIGN1cnJlbnRDb25zdGFudCA9IEpT
VmFsdWU6OmVuY29kZShyZWNvdmVyeS5jb25zdGFudCgpKTsKKyAgICAgICAgICAgIGlmIChjdXJy
ZW50Q29uc3RhbnQgPT0gZW5jb2RlZEpTVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoIXVuZGVmaW5lZEdQUklzSW5pdGlhbGl6ZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgaml0
Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQoZW5jb2RlZEpTVW5kZWZpbmVkKCkpLCB1
bmRlZmluZWRHUFIpOworICAgICAgICAgICAgICAgICAgICB1bmRlZmluZWRHUFJJc0luaXRpYWxp
emVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgc3Bvb2xlci5j
b3B5R1BSKHVuZGVmaW5lZEdQUik7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAg
ICBzcG9vbGVyLm1vdmVDb25zdGFudChjdXJyZW50Q29uc3RhbnQpOworICAgICAgICAgICAgc3Bv
b2xlci5zdG9yZUdQUihvcGVyYW5kLnZpcnR1YWxSZWdpc3RlcigpLm9mZnNldCgpICogc2l6ZW9m
KENQVVJlZ2lzdGVyKSk7CisgICAgICAgICAgICBicmVhazsKKyNlbHNlCisgICAgICAgICAgICBG
QUxMVEhST1VHSDsKKyNlbmRpZgorICAgICAgICB9CiAgICAgICAgIGNhc2UgRGlzcGxhY2VkSW5K
U1N0YWNrOgogICAgICAgICBjYXNlIEJvb2xlYW5EaXNwbGFjZWRJbkpTU3RhY2s6CiAgICAgICAg
IGNhc2UgSW50MzJEaXNwbGFjZWRJbkpTU3RhY2s6CkBAIC03OTUsNyArODMxLDYgQEAgdm9pZCBP
U1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIAogICAgICAgICBjYXNlIFVuYm94ZWRJ
bnQzMkluR1BSOgogICAgICAgICBjYXNlIFVuYm94ZWRDZWxsSW5HUFI6CiAgICAgICAgIGNhc2Ug
VW5ib3hlZERvdWJsZUluRlBSOgotICAgICAgICBjYXNlIENvbnN0YW50OgogICAgICAgICBjYXNl
IEluRlBSOgogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIGNhc2UgSW5HUFI6CkBAIC04MDMs
OCArODM4LDggQEAgdm9pZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIAogICAg
ICAgICBjYXNlIEludDUyRGlzcGxhY2VkSW5KU1N0YWNrOgogICAgICAgICBjYXNlIFVuYm94ZWRT
dHJpY3RJbnQ1MkluR1BSOgogICAgICAgICBjYXNlIFN0cmljdEludDUyRGlzcGxhY2VkSW5KU1N0
YWNrOgotICAgICAgICAgICAgaml0LmxvYWQ2NChzY3JhdGNoICsgaW5kZXgsIEdQUkluZm86OnJl
Z1QwKTsKLSAgICAgICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBBc3NlbWJseUhl
bHBlcnM6OmFkZHJlc3NGb3Iob3BlcmFuZCkpOworICAgICAgICAgICAgc3Bvb2xlci5sb2FkR1BS
KGluZGV4ICogc2l6ZW9mKENQVVJlZ2lzdGVyKSk7CisgICAgICAgICAgICBzcG9vbGVyLnN0b3Jl
R1BSKG9wZXJhbmQudmlydHVhbFJlZ2lzdGVyKCkub2Zmc2V0KCkgKiBzaXplb2YoQ1BVUmVnaXN0
ZXIpKTsKICAgICAgICAgICAgIGJyZWFrOwogI2Vsc2UgLy8gbm90IFVTRShKU1ZBTFVFNjQpCiAg
ICAgICAgIGNhc2UgSW5QYWlyOgpAQCAtODMzLDYgKzg2OCw5IEBAIHZvaWQgT1NSRXhpdDo6Y29t
cGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiAKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgfQorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgc3Bvb2xlci5mbHVzaEdQUigpOworI2VuZGlm
CiAKICAgICAvLyBOb3cgdGhhdCB0aGluZ3Mgb24gdGhlIHN0YWNrIGFyZSByZWNvdmVyZWQsIGRv
IHRoZSBhcmd1bWVudHMgcmVjb3ZlcnkuIFdlIGFzc3VtZSB0aGF0IGFyZ3VtZW50cwogICAgIC8v
IHJlY292ZXJpZXMgZG9uJ3QgcmVjdXJzaXZlbHkgcmVmZXIgdG8gZWFjaCBvdGhlci4gQnV0LCB3
ZSBkb24ndCB0cnkgdG8gYXNzdW1lIHRoYXQgdGhleSBvbmx5CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCShy
ZXZpc2lvbiAyNzg4ODYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRD
b21waWxlckNvbW1vbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4NCw3ICsyODQsNyBAQCB2b2lk
IHJlaWZ5SW5saW5lZENhbGxGcmFtZXMoQ0NhbGxIZWxwZXJzCiAgICAgICAgICAgICBqaXQuYWRk
UHRyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKHNpemVvZihDYWxsZXJGcmFtZUFuZFBD
KSksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjpyZWdUMik7CiAgICAgICAg
ICAgICBqaXQudW50YWdQdHIoR1BSSW5mbzo6cmVnVDIsIEdQUkluZm86OnJlZ1QzKTsKICAgICAg
ICAgICAgIGppdC5hZGRQdHIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoaW5saW5lQ2Fs
bEZyYW1lLT5yZXR1cm5QQ09mZnNldCgpICsgc2l6ZW9mKHZvaWQqKSksIEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjpyZWdUMik7Ci0gICAgICAgICAgICBqaXQudmFsaWRhdGVV
bnRhZ2dlZFB0cihHUFJJbmZvOjpyZWdUMywgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgICAg
ICAgICBqaXQudmFsaWRhdGVVbnRhZ2dlZFB0cihHUFJJbmZvOjpyZWdUMywgR1BSSW5mbzo6cmVn
VDQpOwogICAgICAgICAgICAgaml0LnRhZ1B0cihHUFJJbmZvOjpyZWdUMiwgR1BSSW5mbzo6cmVn
VDMpOwogI2VuZGlmCiAgICAgICAgICAgICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6cmVnVDMsIEFz
c2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvckJ5dGVPZmZzZXQoaW5saW5lQ2FsbEZyYW1lLT5yZXR1
cm5QQ09mZnNldCgpKSk7CkBAIC0zMDUsOSArMzA1LDkgQEAgdm9pZCByZWlmeUlubGluZWRDYWxs
RnJhbWVzKENDYWxsSGVscGVycwogCiAjaWYgQ1BVKEFSTTY0RSkKICAgICAgICAgICAgIGppdC5h
ZGRQdHIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoaW5saW5lQ2FsbEZyYW1lLT5yZXR1
cm5QQ09mZnNldCgpICsgc2l6ZW9mKHZvaWQqKSksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
LCBHUFJJbmZvOjpyZWdUMik7Ci0gICAgICAgICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIoanVtcFRhcmdldC51bnRhZ2dlZEV4ZWN1dGFibGVBZGRyZXNzKCkpLCBH
UFJJbmZvOjpub25BcmdHUFIwKTsKLSAgICAgICAgICAgIGppdC50YWdQdHIoR1BSSW5mbzo6cmVn
VDIsIEdQUkluZm86Om5vbkFyZ0dQUjApOwotICAgICAgICAgICAgaml0LnN0b3JlUHRyKEdQUklu
Zm86Om5vbkFyZ0dQUjAsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvckJ5dGVPZmZzZXQoaW5s
aW5lQ2FsbEZyYW1lLT5yZXR1cm5QQ09mZnNldCgpKSk7CisgICAgICAgICAgICBqaXQubW92ZShB
c3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoanVtcFRhcmdldC51bnRhZ2dlZEV4ZWN1dGFi
bGVBZGRyZXNzKCkpLCBHUFJJbmZvOjpyZWdUNCk7CisgICAgICAgICAgICBqaXQudGFnUHRyKEdQ
UkluZm86OnJlZ1QyLCBHUFJJbmZvOjpyZWdUNCk7CisgICAgICAgICAgICBqaXQuc3RvcmVQdHIo
R1BSSW5mbzo6cmVnVDQsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvckJ5dGVPZmZzZXQoaW5s
aW5lQ2FsbEZyYW1lLT5yZXR1cm5QQ09mZnNldCgpKSk7CiAjZWxzZQogICAgICAgICAgICAgaml0
LnN0b3JlUHRyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cihqdW1wVGFyZ2V0LnVudGFn
Z2VkRXhlY3V0YWJsZUFkZHJlc3MoKSksIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvckJ5dGVP
ZmZzZXQoaW5saW5lQ2FsbEZyYW1lLT5yZXR1cm5QQ09mZnNldCgpKSk7CiAjZW5kaWYKQEAgLTMx
OCwxMSArMzE4LDExIEBAIHZvaWQgcmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyhDQ2FsbEhlbHBlcnMK
ICAgICAgICAgLy8gUmVzdG9yZSB0aGUgaW5saW5lIGNhbGwgZnJhbWUncyBjYWxsZWUgc2F2ZSBy
ZWdpc3RlcnMuCiAgICAgICAgIC8vIElmIHRoaXMgaW5saW5lZCBmcmFtZSBpcyBhIHRhaWwgY2Fs
bCB0aGF0IHdpbGwgcmV0dXJuIGJhY2sgdG8gdGhlIG9yaWdpbmFsIGNhbGxlciwgd2UgbmVlZCB0
bwogICAgICAgICAvLyBjb3B5IHRoZSBwcmlvciBjb250ZW50cyBvZiB0aGUgdGFnIHJlZ2lzdGVy
cyBhbHJlYWR5IHNhdmVkIGZvciB0aGUgb3V0ZXIgZnJhbWUgdG8gdGhpcyBmcmFtZS4KLSAgICAg
ICAgaml0LmVtaXRTYXZlT3JDb3B5Q2FsbGVlU2F2ZXNGb3IoCisgICAgICAgIGppdC5lbWl0U2F2
ZU9yQ29weUxMSW50QmFzZWxpbmVDYWxsZWVTYXZlc0ZvcigKICAgICAgICAgICAgIGJhc2VsaW5l
Q29kZUJsb2NrLAogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8VmlydHVhbFJlZ2lzdGVyPihpbmxp
bmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0KSwKICAgICAgICAgICAgIHRydWVDYWxsZXIgPyBBc3Nl
bWJseUhlbHBlcnM6OlVzZUV4aXN0aW5nVGFnUmVnaXN0ZXJDb250ZW50cyA6IEFzc2VtYmx5SGVs
cGVyczo6Q29weUJhc2VsaW5lQ2FsbGVlU2F2ZWRSZWdpc3RlcnNGcm9tQmFzZUZyYW1lLAotICAg
ICAgICAgICAgR1BSSW5mbzo6cmVnVDIpOworICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDIsIEdQ
UkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUNCk7CiAKICAgICAgICAgaWYgKGNhbGxlcklzTExJ
bnQpIHsKICAgICAgICAgICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2tGb3JDYWxsZXIg
PSBqaXQuYmFzZWxpbmVDb2RlQmxvY2tGb3IoKnRydWVDYWxsZXIpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmNwcAkocmV2aXNpb24gMjc4ODg2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2
ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoREZHX0pJVCkKIAorI2luY2x1ZGUgIkFzc2VtYmx5SGVs
cGVyc1Nwb29sZXJzLmgiCiAjaW5jbHVkZSAiQ0NhbGxIZWxwZXJzLmgiCiAjaW5jbHVkZSAiREZH
SklUQ29kZS5oIgogI2luY2x1ZGUgIkRGR09TUkV4aXQuaCIKQEAgLTQ5LDM0ICs1MCw3MyBAQCBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IG9zCiAgICAgc2l6ZV90IHNjcmF0
Y2hTaXplID0gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAqIChHUFJJbmZvOjpudW1iZXJPZlJlZ2lz
dGVycyArIEZQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzKTsKICAgICBTY3JhdGNoQnVmZmVyKiBz
Y3JhdGNoQnVmZmVyID0gdm0uc2NyYXRjaEJ1ZmZlckZvclNpemUoc2NyYXRjaFNpemUpOwogICAg
IEVuY29kZWRKU1ZhbHVlKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxFbmNvZGVkSlNWYWx1ZSo+KHNj
cmF0Y2hCdWZmZXItPmRhdGFCdWZmZXIoKSk7Ci0gICAgCi0gICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyArK2kpIHsKKworI2lmIENQVShBUk02
NCkKKyAgICBjb25zdGV4cHIgR1BSUmVnIGJ1ZmZlckdQUiA9IENDYWxsSGVscGVyczo6bWVtb3J5
VGVtcFJlZ2lzdGVyOworICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBmaXJzdEdQUiA9IDA7CisjZWxp
ZiBDUFUoWDg2XzY0KQorICAgIEdQUlJlZyBidWZmZXJHUFIgPSBqaXQuc2NyYXRjaFJlZ2lzdGVy
KCk7CisgICAgY29uc3RleHByIHVuc2lnbmVkIGZpcnN0R1BSID0gMDsKKyNlbHNlCisgICAgR1BS
UmVnIGJ1ZmZlckdQUiA9IEdQUkluZm86OnRvUmVnaXN0ZXIoMCk7CisgICAgY29uc3RleHByIHVu
c2lnbmVkIGZpcnN0R1BSID0gMTsKKyNlbmRpZgorCisgICAgaWYgY29uc3RleHByIChmaXJzdEdQ
UikgeworICAgICAgICAvLyBXZSdyZSB1c2luZyB0aGUgZmlyc3RHUFIgYXMgdGhlIGJ1ZmZlckdQ
UiwgYW5kIG5lZWQgdG8gc2F2ZSBpdCBtYW51YWxseS4KKyAgICAgICAgUkVMRUFTRV9BU1NFUlQo
R1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgPj0gMSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGJ1ZmZlckdQUiA9PSBHUFJJbmZvOjp0b1JlZ2lzdGVyKDApKTsKICNpZiBVU0UoSlNWQUxVRTY0
KQotICAgICAgICBqaXQuc3RvcmU2NChHUFJJbmZvOjp0b1JlZ2lzdGVyKGkpLCBidWZmZXIgKyBp
KTsKKyAgICAgICAgaml0LnN0b3JlNjQoYnVmZmVyR1BSLCBidWZmZXIpOwogI2Vsc2UKLSAgICAg
ICAgaml0LnN0b3JlMzIoR1BSSW5mbzo6dG9SZWdpc3RlcihpKSwgYnVmZmVyICsgaSk7CisgICAg
ICAgIGppdC5zdG9yZTMyKGJ1ZmZlckdQUiwgYnVmZmVyKTsKICNlbmRpZgogICAgIH0KKworICAg
IGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihidWZmZXIpLCBidWZmZXJHUFIp
OworCisgICAgQ0NhbGxIZWxwZXJzOjpTdG9yZVJlZ1Nwb29sZXIgc3RvcmVTcG9vbGVyKGppdCwg
YnVmZmVyR1BSKTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IGZpcnN0R1BSOyBpIDwgR1BSSW5m
bzo6bnVtYmVyT2ZSZWdpc3RlcnM7ICsraSkgeworICAgICAgICBwdHJkaWZmX3Qgb2Zmc2V0ID0g
aSAqIHNpemVvZihDUFVSZWdpc3Rlcik7CisgICAgICAgIHN0b3JlU3Bvb2xlci5zdG9yZUdQUih7
IEdQUkluZm86OnRvUmVnaXN0ZXIoaSksIG9mZnNldCB9KTsKKyAgICB9CisgICAgc3RvcmVTcG9v
bGVyLmZsdXNoR1BSKCk7CisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgRlBSSW5mbzo6
bnVtYmVyT2ZSZWdpc3RlcnM7ICsraSkgewotICAgICAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbVB0cihidWZmZXIgKyBHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyArIGkp
LCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgIGppdC5zdG9yZURvdWJsZShGUFJJbmZvOjp0b1Jl
Z2lzdGVyKGkpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCkpOworICAg
ICAgICBwdHJkaWZmX3Qgb2Zmc2V0ID0gKEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzICsgaSkg
KiBzaXplb2YoZG91YmxlKTsKKyAgICAgICAgc3RvcmVTcG9vbGVyLnN0b3JlRlBSKHsgRlBSSW5m
bzo6dG9SZWdpc3RlcihpKSwgb2Zmc2V0IH0pOwogICAgIH0KLSAgICAKKyAgICBzdG9yZVNwb29s
ZXIuZmx1c2hGUFIoKTsKKwogICAgIC8vIFNldCB1cCBvbmUgYXJndW1lbnQuCiAgICAgaml0Lm1v
dmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAg
ICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKIAogICAgIE1hY3JvQXNzZW1ibGVyOjpD
YWxsIGZ1bmN0aW9uQ2FsbCA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7CiAKKyAgICBqaXQu
bW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoYnVmZmVyKSwgYnVmZmVyR1BSKTsKKyAg
ICBDQ2FsbEhlbHBlcnM6OkxvYWRSZWdTcG9vbGVyIGxvYWRsU3Bvb2xlcihqaXQsIGJ1ZmZlckdQ
Uik7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBmaXJzdEdQUjsgaSA8IEdQUkluZm86Om51bWJl
ck9mUmVnaXN0ZXJzOyArK2kpIHsKKyAgICAgICAgcHRyZGlmZl90IG9mZnNldCA9IGkgKiBzaXpl
b2YoQ1BVUmVnaXN0ZXIpOworICAgICAgICBsb2FkbFNwb29sZXIubG9hZEdQUih7IEdQUkluZm86
OnRvUmVnaXN0ZXIoaSksIG9mZnNldCB9KTsKKyAgICB9CisgICAgbG9hZGxTcG9vbGVyLmZsdXNo
R1BSKCk7CisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgRlBSSW5mbzo6bnVtYmVyT2ZS
ZWdpc3RlcnM7ICsraSkgewotICAgICAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbVB0cihidWZmZXIgKyBHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyArIGkpLCBHUFJJbmZv
OjpyZWdUMCk7Ci0gICAgICAgIGppdC5sb2FkRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KEdQUkluZm86OnJlZ1QwKSwgRlBSSW5mbzo6dG9SZWdpc3RlcihpKSk7CisgICAgICAgIHB0cmRp
ZmZfdCBvZmZzZXQgPSAoR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgKyBpKSAqIHNpemVvZihk
b3VibGUpOworICAgICAgICBsb2FkbFNwb29sZXIubG9hZEZQUih7IEZQUkluZm86OnRvUmVnaXN0
ZXIoaSksIG9mZnNldCB9KTsKICAgICB9Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEdQ
UkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyArK2kpIHsKKyAgICBsb2FkbFNwb29sZXIuZmx1c2hG
UFIoKTsKKworICAgIGlmIGNvbnN0ZXhwciAoZmlyc3RHUFIpIHsKKyAgICAgICAgLy8gV2UncmUg
dXNpbmcgdGhlIGZpcnN0R1BSIGFzIHRoZSBidWZmZXJHUFIsIGFuZCBuZWVkIHRvIHJlc3RvcmUg
aXQgbWFudWFsbHkuCisgICAgICAgIEFTU0VSVChidWZmZXJHUFIgPT0gR1BSSW5mbzo6dG9SZWdp
c3RlcigwKSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgaml0LmxvYWQ2NChidWZmZXIg
KyBpLCBHUFJJbmZvOjp0b1JlZ2lzdGVyKGkpKTsKKyAgICAgICAgaml0LmxvYWQ2NChidWZmZXIs
IGJ1ZmZlckdQUik7CiAjZWxzZQotICAgICAgICBqaXQubG9hZDMyKGJ1ZmZlciArIGksIEdQUklu
Zm86OnRvUmVnaXN0ZXIoaSkpOworICAgICAgICBqaXQubG9hZDMyKGJ1ZmZlciwgYnVmZmVyR1BS
KTsKICNlbmRpZgogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExT
YXZlUmVzdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExTYXZlUmVzdG9yZS5jcHAJKHJldmlzaW9uIDI3ODg4NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMU2F2ZVJlc3RvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDkgKzI4
LDEwIEBACiAKICNpZiBFTkFCTEUoRlRMX0pJVCkKIAorI2luY2x1ZGUgIkFzc2VtYmx5SGVscGVy
c1Nwb29sZXJzLmgiCiAjaW5jbHVkZSAiRlBSSW5mby5oIgogI2luY2x1ZGUgIkdQUkluZm8uaCIK
LSNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgorI2luY2x1ZGUgIlJlZy5oIgogI2luY2x1ZGUg
IlJlZ2lzdGVyU2V0LmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKQEAgLTc3
LDcwICs3OCwxMDQgQEAgc3RydWN0IFJlZ3MgewogICAgIHsKICAgICAgICAgc3BlY2lhbCA9IFJl
Z2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpOwogICAgICAgICBzcGVjaWFsLm1lcmdlKFJlZ2lz
dGVyU2V0OjpyZXNlcnZlZEhhcmR3YXJlUmVnaXN0ZXJzKCkpOwotICAgICAgICAKKwogICAgICAg
ICBmaXJzdCA9IE1hY3JvQXNzZW1ibGVyOjpmaXJzdFJlZ2lzdGVyKCk7CiAgICAgICAgIHdoaWxl
IChzcGVjaWFsLmdldChmaXJzdCkpCiAgICAgICAgICAgICBmaXJzdCA9IE1hY3JvQXNzZW1ibGVy
OjpuZXh0UmVnaXN0ZXIoZmlyc3QpOwotICAgICAgICBzZWNvbmQgPSBNYWNyb0Fzc2VtYmxlcjo6
bmV4dFJlZ2lzdGVyKGZpcnN0KTsKLSAgICAgICAgd2hpbGUgKHNwZWNpYWwuZ2V0KHNlY29uZCkp
Ci0gICAgICAgICAgICBzZWNvbmQgPSBNYWNyb0Fzc2VtYmxlcjo6bmV4dFJlZ2lzdGVyKHNlY29u
ZCk7CiAgICAgfQotICAgIAorCisgICAgR1BSUmVnIG5leHRSZWdpc3RlcihHUFJSZWcgY3VycmVu
dCkKKyAgICB7CisgICAgICAgIGF1dG8gbmV4dCA9IE1hY3JvQXNzZW1ibGVyOjpuZXh0UmVnaXN0
ZXIoY3VycmVudCk7CisgICAgICAgIHdoaWxlIChzcGVjaWFsLmdldChuZXh0KSkKKyAgICAgICAg
ICAgIG5leHQgPSBNYWNyb0Fzc2VtYmxlcjo6bmV4dFJlZ2lzdGVyKG5leHQpOworICAgICAgICBy
ZXR1cm4gbmV4dDsKKyAgICB9CisKKyAgICBGUFJSZWcgbmV4dEZQUmVnaXN0ZXIoRlBSUmVnIGN1
cnJlbnQpCisgICAgeworICAgICAgICBhdXRvIG5leHQgPSBNYWNyb0Fzc2VtYmxlcjo6bmV4dEZQ
UmVnaXN0ZXIoY3VycmVudCk7CisgICAgICAgIHdoaWxlIChzcGVjaWFsLmdldChuZXh0KSkKKyAg
ICAgICAgICAgIG5leHQgPSBNYWNyb0Fzc2VtYmxlcjo6bmV4dEZQUmVnaXN0ZXIobmV4dCk7Cisg
ICAgICAgIHJldHVybiBuZXh0OworICAgIH0KKwogICAgIFJlZ2lzdGVyU2V0IHNwZWNpYWw7CiAg
ICAgR1BSUmVnIGZpcnN0OwotICAgIEdQUlJlZyBzZWNvbmQ7CiB9OwogCiB9IC8vIGFub255bW91
cyBuYW1lc3BhY2UKIAotdm9pZCBzYXZlQWxsUmVnaXN0ZXJzKE1hY3JvQXNzZW1ibGVyJiBqaXQs
IGNoYXIqIHNjcmF0Y2hNZW1vcnkpCit2b2lkIHNhdmVBbGxSZWdpc3RlcnMoQXNzZW1ibHlIZWxw
ZXJzJiBqaXQsIGNoYXIqIHNjcmF0Y2hNZW1vcnkpCiB7CiAgICAgUmVncyByZWdzOwogICAgIAog
ICAgIC8vIEdldCB0aGUgZmlyc3QgcmVnaXN0ZXIgb3V0IG9mIHRoZSB3YXksIHNvIHRoYXQgd2Ug
Y2FuIHVzZSBpdCBhcyBhIHBvaW50ZXIuCi0gICAgaml0LnBva2U2NChyZWdzLmZpcnN0LCAwKTsK
LSAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihzY3JhdGNoTWVtb3J5
KSwgcmVncy5maXJzdCk7Ci0gICAgCisgICAgR1BSUmVnIGJhc2VHUFIgPSByZWdzLmZpcnN0Owor
I2lmIENQVShBUk02NCkKKyAgICBHUFJSZWcgbmV4dEdQUiA9IHJlZ3MubmV4dFJlZ2lzdGVyKGJh
c2VHUFIpOworICAgIEdQUlJlZyBmaXJzdFRvU2F2ZUdQUiA9IHJlZ3MubmV4dFJlZ2lzdGVyKG5l
eHRHUFIpOworICAgIEFTU0VSVChiYXNlR1BSID09IEFSTTY0UmVnaXN0ZXJzOjp4MCk7CisgICAg
QVNTRVJUKG5leHRHUFIgPT0gQVJNNjRSZWdpc3RlcnM6OngxKTsKKyNlbHNlCisgICAgR1BSUmVn
IGZpcnN0VG9TYXZlR1BSID0gcmVncy5uZXh0UmVnaXN0ZXIoYmFzZUdQUik7CisjZW5kaWYKKyAg
ICBqaXQucG9rZTY0KGJhc2VHUFIsIDApOworICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tUHRyKHNjcmF0Y2hNZW1vcnkpLCBiYXNlR1BSKTsKKworICAgIEFzc2VtYmx5SGVs
cGVyczo6U3RvcmVSZWdTcG9vbGVyIHNwb29sZXIoaml0LCBiYXNlR1BSKTsKKwogICAgIC8vIEdl
dCBhbGwgb2YgdGhlIG90aGVyIEdQUnMgb3V0IG9mIHRoZSB3YXkuCi0gICAgZm9yIChNYWNyb0Fz
c2VtYmxlcjo6UmVnaXN0ZXJJRCByZWcgPSByZWdzLnNlY29uZDsgcmVnIDw9IE1hY3JvQXNzZW1i
bGVyOjpsYXN0UmVnaXN0ZXIoKTsgcmVnID0gTWFjcm9Bc3NlbWJsZXI6Om5leHRSZWdpc3Rlcihy
ZWcpKSB7Ci0gICAgICAgIGlmIChyZWdzLnNwZWNpYWwuZ2V0KHJlZykpCi0gICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgaml0LnN0b3JlNjQocmVnLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhyZWdzLmZpcnN0LCBvZmZzZXRPZkdQUihyZWcpKSk7Ci0gICAgfQorICAgIGZvciAoR1BSUmVn
IHJlZyA9IGZpcnN0VG9TYXZlR1BSOyByZWcgPD0gTWFjcm9Bc3NlbWJsZXI6Omxhc3RSZWdpc3Rl
cigpOyByZWcgPSByZWdzLm5leHRSZWdpc3RlcihyZWcpKQorICAgICAgICBzcG9vbGVyLnN0b3Jl
R1BSKHsgcmVnLCBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KG9mZnNldE9mR1BSKHJlZykpIH0pOwor
ICAgIHNwb29sZXIuZmx1c2hHUFIoKTsKICAgICAKICAgICAvLyBSZXN0b3JlIHRoZSBmaXJzdCBy
ZWdpc3RlciBpbnRvIHRoZSBzZWNvbmQgb25lIGFuZCBzYXZlIGl0LgotICAgIGppdC5wZWVrNjQo
cmVncy5zZWNvbmQsIDApOwotICAgIGppdC5zdG9yZTY0KHJlZ3Muc2Vjb25kLCBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhyZWdzLmZpcnN0LCBvZmZzZXRPZkdQUihyZWdzLmZpcnN0KSkpOworICAg
IGppdC5wZWVrNjQoZmlyc3RUb1NhdmVHUFIsIDApOworI2lmIENQVShBUk02NCkKKyAgICBqaXQu
c3RvcmVQYWlyNjQoZmlyc3RUb1NhdmVHUFIsIG5leHRHUFIsIGJhc2VHUFIsIEFzc2VtYmx5SGVs
cGVyczo6VHJ1c3RlZEltbTMyKG9mZnNldE9mR1BSKGJhc2VHUFIpKSk7CisjZWxzZQorICAgIGpp
dC5zdG9yZTY0KGZpcnN0VG9TYXZlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BS
LCBvZmZzZXRPZkdQUihiYXNlR1BSKSkpOworI2VuZGlmCiAgICAgCiAgICAgLy8gRmluYWxseSBz
YXZlIGFsbCBGUFIncy4KLSAgICBmb3IgKE1hY3JvQXNzZW1ibGVyOjpGUFJlZ2lzdGVySUQgcmVn
ID0gTWFjcm9Bc3NlbWJsZXI6OmZpcnN0RlBSZWdpc3RlcigpOyByZWcgPD0gTWFjcm9Bc3NlbWJs
ZXI6Omxhc3RGUFJlZ2lzdGVyKCk7IHJlZyA9IE1hY3JvQXNzZW1ibGVyOjpuZXh0RlBSZWdpc3Rl
cihyZWcpKSB7Ci0gICAgICAgIGlmIChyZWdzLnNwZWNpYWwuZ2V0KHJlZykpCi0gICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgaml0LnN0b3JlRG91YmxlKHJlZywgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MocmVncy5maXJzdCwgb2Zmc2V0T2ZGUFIocmVnKSkpOwotICAgIH0KKyAgICBmb3Ig
KE1hY3JvQXNzZW1ibGVyOjpGUFJlZ2lzdGVySUQgcmVnID0gTWFjcm9Bc3NlbWJsZXI6OmZpcnN0
RlBSZWdpc3RlcigpOyByZWcgPD0gTWFjcm9Bc3NlbWJsZXI6Omxhc3RGUFJlZ2lzdGVyKCk7IHJl
ZyA9IHJlZ3MubmV4dEZQUmVnaXN0ZXIocmVnKSkKKyAgICAgICAgc3Bvb2xlci5zdG9yZUZQUih7
IHJlZywgc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihvZmZzZXRPZkZQUihyZWcpKSB9KTsKKyAgICBz
cG9vbGVyLmZsdXNoRlBSKCk7CiB9CiAKLXZvaWQgcmVzdG9yZUFsbFJlZ2lzdGVycyhNYWNyb0Fz
c2VtYmxlciYgaml0LCBjaGFyKiBzY3JhdGNoTWVtb3J5KQordm9pZCByZXN0b3JlQWxsUmVnaXN0
ZXJzKEFzc2VtYmx5SGVscGVycyYgaml0LCBjaGFyKiBzY3JhdGNoTWVtb3J5KQogewogICAgIFJl
Z3MgcmVnczsKICAgICAKICAgICAvLyBHaXZlIG91cnNlbHZlcyBhIHBvaW50ZXIgdG8gdGhlIHNj
cmF0Y2ggbWVtb3J5LgotICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
KHNjcmF0Y2hNZW1vcnkpLCByZWdzLmZpcnN0KTsKKyAgICBHUFJSZWcgYmFzZUdQUiA9IHJlZ3Mu
Zmlyc3Q7CisgICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoc2NyYXRj
aE1lbW9yeSksIGJhc2VHUFIpOwogICAgIAorICAgIEFzc2VtYmx5SGVscGVyczo6TG9hZFJlZ1Nw
b29sZXIgc3Bvb2xlcihqaXQsIGJhc2VHUFIpOworCiAgICAgLy8gUmVzdG9yZSBhbGwgRlBSJ3Mu
Ci0gICAgZm9yIChNYWNyb0Fzc2VtYmxlcjo6RlBSZWdpc3RlcklEIHJlZyA9IE1hY3JvQXNzZW1i
bGVyOjpmaXJzdEZQUmVnaXN0ZXIoKTsgcmVnIDw9IE1hY3JvQXNzZW1ibGVyOjpsYXN0RlBSZWdp
c3RlcigpOyByZWcgPSBNYWNyb0Fzc2VtYmxlcjo6bmV4dEZQUmVnaXN0ZXIocmVnKSkgewotICAg
ICAgICBpZiAocmVncy5zcGVjaWFsLmdldChyZWcpKQotICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgIGppdC5sb2FkRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlZ3MuZmlyc3Qs
IG9mZnNldE9mRlBSKHJlZykpLCByZWcpOwotICAgIH0KLSAgICAKLSAgICBmb3IgKE1hY3JvQXNz
ZW1ibGVyOjpSZWdpc3RlcklEIHJlZyA9IHJlZ3Muc2Vjb25kOyByZWcgPD0gTWFjcm9Bc3NlbWJs
ZXI6Omxhc3RSZWdpc3RlcigpOyByZWcgPSBNYWNyb0Fzc2VtYmxlcjo6bmV4dFJlZ2lzdGVyKHJl
ZykpIHsKLSAgICAgICAgaWYgKHJlZ3Muc3BlY2lhbC5nZXQocmVnKSkKLSAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICBqaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlZ3Mu
Zmlyc3QsIG9mZnNldE9mR1BSKHJlZykpLCByZWcpOwotICAgIH0KLSAgICAKLSAgICBqaXQubG9h
ZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlZ3MuZmlyc3QsIG9mZnNldE9mR1BSKHJlZ3Mu
Zmlyc3QpKSwgcmVncy5maXJzdCk7CisgICAgZm9yIChNYWNyb0Fzc2VtYmxlcjo6RlBSZWdpc3Rl
cklEIHJlZyA9IE1hY3JvQXNzZW1ibGVyOjpmaXJzdEZQUmVnaXN0ZXIoKTsgcmVnIDw9IE1hY3Jv
QXNzZW1ibGVyOjpsYXN0RlBSZWdpc3RlcigpOyByZWcgPSByZWdzLm5leHRGUFJlZ2lzdGVyKHJl
ZykpCisgICAgICAgIHNwb29sZXIubG9hZEZQUih7IHJlZywgc3RhdGljX2Nhc3Q8cHRyZGlmZl90
PihvZmZzZXRPZkZQUihyZWcpKSB9KTsKKyAgICBzcG9vbGVyLmZsdXNoRlBSKCk7CisgICAgCisj
aWYgQ1BVKEFSTTY0KQorICAgIEdQUlJlZyBuZXh0R1BSID0gcmVncy5uZXh0UmVnaXN0ZXIoYmFz
ZUdQUik7CisgICAgR1BSUmVnIGZpcnN0VG9SZXN0b3JlR1BSID0gcmVncy5uZXh0UmVnaXN0ZXIo
bmV4dEdQUik7CisgICAgQVNTRVJUKGJhc2VHUFIgPT0gQVJNNjRSZWdpc3RlcnM6OngwKTsKKyAg
ICBBU1NFUlQobmV4dEdQUiA9PSBBUk02NFJlZ2lzdGVyczo6eDEpOworI2Vsc2UKKyAgICBHUFJS
ZWcgZmlyc3RUb1Jlc3RvcmVHUFIgPSByZWdzLm5leHRSZWdpc3RlcihiYXNlR1BSKTsKKyNlbmRp
ZgorICAgIGZvciAoTWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgcmVnID0gZmlyc3RUb1Jlc3Rv
cmVHUFI7IHJlZyA8PSBNYWNyb0Fzc2VtYmxlcjo6bGFzdFJlZ2lzdGVyKCk7IHJlZyA9IHJlZ3Mu
bmV4dFJlZ2lzdGVyKHJlZykpCisgICAgICAgIHNwb29sZXIubG9hZEdQUih7IHJlZywgc3RhdGlj
X2Nhc3Q8cHRyZGlmZl90PihvZmZzZXRPZkdQUihyZWcpKSB9KTsKKyAgICBzcG9vbGVyLmZsdXNo
R1BSKCk7CisKKyNpZiBDUFUoQVJNNjQpCisgICAgaml0LmxvYWRQYWlyNjQoYmFzZUdQUiwgQXNz
ZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIob2Zmc2V0T2ZHUFIoYmFzZUdQUikpLCBiYXNlR1BS
LCBuZXh0R1BSKTsKKyNlbHNlCisgICAgaml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhiYXNlR1BSLCBvZmZzZXRPZkdQUihiYXNlR1BSKSksIGJhc2VHUFIpOworI2VuZGlmCiB9CiAK
IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpGVEwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMU2F2ZVJlc3RvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTFNhdmVSZXN0b3JlLmgJKHJldmlzaW9uIDI3ODg4NikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMU2F2ZVJlc3RvcmUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMyw3ICszMyw3IEBA
CiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBNYWNyb0Fzc2VtYmxlcjsKK2NsYXNzIEFzc2Vt
Ymx5SGVscGVyczsKIAogbmFtZXNwYWNlIEZUTCB7CiAKQEAgLTQ2LDkgKzQ2LDkgQEAgc2l6ZV90
IG9mZnNldE9mRlBSKEZQUlJlZyk7CiAvLyBBc3N1bWVzIHRoYXQgdG9wLW9mLXN0YWNrIGNhbiBi
ZSB1c2VkIGFzIGEgcG9pbnRlci1zaXplZCBzY3JhdGNocGFkLiBTYXZlcyBhbGwgb2YKIC8vIHRo
ZSByZWdpc3RlcnMgaW50byB0aGUgc2NyYXRjaCBidWZmZXIgc3VjaCB0aGF0IFJlZ2lzdGVySUQg
KiBzaXplb2YoaW50NjRfdCkgaXMgdGhlCiAvLyBvZmZzZXQgb2YgZXZlcnkgcmVnaXN0ZXIuCi12
b2lkIHNhdmVBbGxSZWdpc3RlcnMoTWFjcm9Bc3NlbWJsZXImIGppdCwgY2hhciogc2NyYXRjaE1l
bW9yeSk7Cit2b2lkIHNhdmVBbGxSZWdpc3RlcnMoQXNzZW1ibHlIZWxwZXJzJiBqaXQsIGNoYXIq
IHNjcmF0Y2hNZW1vcnkpOwogCi12b2lkIHJlc3RvcmVBbGxSZWdpc3RlcnMoTWFjcm9Bc3NlbWJs
ZXImIGppdCwgY2hhciogc2NyYXRjaE1lbW9yeSk7Cit2b2lkIHJlc3RvcmVBbGxSZWdpc3RlcnMo
QXNzZW1ibHlIZWxwZXJzJiBqaXQsIGNoYXIqIHNjcmF0Y2hNZW1vcnkpOwogCiB9IH0gLy8gbmFt
ZXNwYWNlIEpTQzo6RlRMCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVGh1
bmtzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFRodW5r
cy5jcHAJKHJldmlzaW9uIDI3ODg4NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
VGh1bmtzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogCiAjaWYgRU5BQkxF
KEZUTF9KSVQpCiAKLSNpbmNsdWRlICJBc3NlbWJseUhlbHBlcnMuaCIKKyNpbmNsdWRlICJBc3Nl
bWJseUhlbHBlcnNTcG9vbGVycy5oIgogI2luY2x1ZGUgIkRGR09TUkV4aXRDb21waWxlckNvbW1v
bi5oIgogI2luY2x1ZGUgIkZUTE9TUkV4aXRDb21waWxlci5oIgogI2luY2x1ZGUgIkZUTE9wZXJh
dGlvbnMuaCIKQEAgLTU2LDMxICs1NiwzNCBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyCiAgICAgfQogICAgIAogICAgIC8vIE5vdGUgdGhhdCB0aGUgInJldHVybiBh
ZGRyZXNzIiB3aWxsIGJlIHRoZSBJRCB0aGF0IHdlIHBhc3MgdG8gdGhlIGdlbmVyYXRpb24gZnVu
Y3Rpb24uCi0gICAgCi0gICAgcHRyZGlmZl90IHN0YWNrTWlzYWxpZ25tZW50ID0gTWFjcm9Bc3Nl
bWJsZXI6OnB1c2hUb1NhdmVCeXRlT2Zmc2V0KCk7Ci0gICAgCisKKyAgICBjb25zdGV4cHIgR1BS
UmVnIHN0YWNrUG9pbnRlclJlZ2lzdGVyID0gTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJl
Z2lzdGVyOworICAgIGNvbnN0ZXhwciBHUFJSZWcgZnJhbWVQb2ludGVyUmVnaXN0ZXIgPSBNYWNy
b0Fzc2VtYmxlcjo6ZnJhbWVQb2ludGVyUmVnaXN0ZXI7CisgICAgY29uc3RleHByIHB0cmRpZmZf
dCBwdXNoVG9TYXZlQnl0ZU9mZnNldCA9IE1hY3JvQXNzZW1ibGVyOjpwdXNoVG9TYXZlQnl0ZU9m
ZnNldCgpOworICAgIHB0cmRpZmZfdCBzdGFja01pc2FsaWdubWVudCA9IHB1c2hUb1NhdmVCeXRl
T2Zmc2V0OworCiAgICAgLy8gUHJldGVuZCB0aGF0IHdlJ3JlIGEgQyBjYWxsIGZyYW1lLgotICAg
IGppdC5wdXNoVG9TYXZlKE1hY3JvQXNzZW1ibGVyOjpmcmFtZVBvaW50ZXJSZWdpc3Rlcik7Ci0g
ICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBNYWNyb0Fz
c2VtYmxlcjo6ZnJhbWVQb2ludGVyUmVnaXN0ZXIpOwotICAgIHN0YWNrTWlzYWxpZ25tZW50ICs9
IE1hY3JvQXNzZW1ibGVyOjpwdXNoVG9TYXZlQnl0ZU9mZnNldCgpOwotICAgIAorICAgIGppdC5w
dXNoVG9TYXZlKGZyYW1lUG9pbnRlclJlZ2lzdGVyKTsKKyAgICBqaXQubW92ZShzdGFja1BvaW50
ZXJSZWdpc3RlciwgZnJhbWVQb2ludGVyUmVnaXN0ZXIpOworICAgIHN0YWNrTWlzYWxpZ25tZW50
ICs9IHB1c2hUb1NhdmVCeXRlT2Zmc2V0OworCiAgICAgLy8gTm93IGNyZWF0ZSBvdXJzZWx2ZXMg
ZW5vdWdoIHN0YWNrIHNwYWNlIHRvIGdpdmUgc2F2ZUFsbFJlZ2lzdGVycygpIGEgc2NyYXRjaCBz
bG90LgogICAgIHVuc2lnbmVkIG51bWJlck9mUmVxdWlyZWRQb3BzID0gMDsKICAgICBkbyB7Ci0g
ICAgICAgIGppdC5wdXNoVG9TYXZlKEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgc3RhY2tNaXNh
bGlnbm1lbnQgKz0gTWFjcm9Bc3NlbWJsZXI6OnB1c2hUb1NhdmVCeXRlT2Zmc2V0KCk7CisgICAg
ICAgIHN0YWNrTWlzYWxpZ25tZW50ICs9IHB1c2hUb1NhdmVCeXRlT2Zmc2V0OwogICAgICAgICBu
dW1iZXJPZlJlcXVpcmVkUG9wcysrOwogICAgIH0gd2hpbGUgKHN0YWNrTWlzYWxpZ25tZW50ICUg
c3RhY2tBbGlnbm1lbnRCeXRlcygpKTsKLSAgICAKKyAgICBqaXQuc3ViUHRyKE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tMzIobnVtYmVyT2ZSZXF1aXJlZFBvcHMgKiBwdXNoVG9TYXZlQnl0ZU9m
ZnNldCksIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKwogICAgIFNjcmF0Y2hCdWZmZXIqIHNjcmF0
Y2hCdWZmZXIgPSB2bS5zY3JhdGNoQnVmZmVyRm9yU2l6ZShyZXF1aXJlZFNjcmF0Y2hNZW1vcnlT
aXplSW5CeXRlcygpKTsKICAgICBjaGFyKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxjaGFyKj4oc2Ny
YXRjaEJ1ZmZlci0+ZGF0YUJ1ZmZlcigpKTsKICAgICAKICAgICBzYXZlQWxsUmVnaXN0ZXJzKGpp
dCwgYnVmZmVyKTsKIAotICAgIGppdC5sb2FkUHRyKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIGppdC5sb2FkUHRyKGZyYW1lUG9pbnRlclJl
Z2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwogICAgIGppdC5wZWVrKAogICAgICAgICBH
UFJJbmZvOjphcmd1bWVudEdQUjEsCi0gICAgICAgIChzdGFja01pc2FsaWdubWVudCAtIE1hY3Jv
QXNzZW1ibGVyOjpwdXNoVG9TYXZlQnl0ZU9mZnNldCgpKSAvIHNpemVvZih2b2lkKikpOworICAg
ICAgICAoc3RhY2tNaXNhbGlnbm1lbnQgLSBwdXNoVG9TYXZlQnl0ZU9mZnNldCkgLyBzaXplb2Yo
dm9pZCopKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogICAgIE1hY3JvQXNz
ZW1ibGVyOjpDYWxsIGZ1bmN0aW9uQ2FsbCA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7CiAK
QEAgLTkyLDE0ICs5NSwxMyBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5r
UHRyCiAgICAgaml0Lm1vdmUoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIEdQUkluZm86OnJlZ1Qw
KTsKIAogICAgIC8vIFByZXBhcmUgZm9yIHRhaWwgY2FsbC4KLSAgICB3aGlsZSAobnVtYmVyT2ZS
ZXF1aXJlZFBvcHMtLSkKLSAgICAgICAgaml0LnBvcFRvUmVzdG9yZShHUFJJbmZvOjpyZWdUMSk7
Ci0gICAgaml0LnBvcFRvUmVzdG9yZShNYWNyb0Fzc2VtYmxlcjo6ZnJhbWVQb2ludGVyUmVnaXN0
ZXIpOwotCi0gICAgLy8gV2hlbiB3ZSBjYW1lIGluIGhlcmUsIHRoZXJlIHdhcyBhbiBhZGRpdGlv
bmFsIHRoaW5nIHB1c2hlZCB0byB0aGUgc3RhY2suIFNvbWUgY2xpZW50cyB3YW50IGl0Ci0gICAg
Ly8gcG9wcGVkIGJlZm9yZSBwcm9jZWVkaW5nLgotICAgIHdoaWxlIChleHRyYVBvcHNUb1Jlc3Rv
cmUtLSkKLSAgICAgICAgaml0LnBvcFRvUmVzdG9yZShHUFJJbmZvOjpyZWdUMSk7CisKKyAgICBq
aXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3Rlciwg
bnVtYmVyT2ZSZXF1aXJlZFBvcHMgKiBwdXNoVG9TYXZlQnl0ZU9mZnNldCksIGZyYW1lUG9pbnRl
clJlZ2lzdGVyKTsKKworICAgIC8vIFdoZW4gd2UgY2FtZSBpbiBoZXJlLCB0aGVyZSB3YXMgYW4g
YWRkaXRpb25hbCB0aGluZyBwdXNoZWQgdG8gdGhlIHN0YWNrIChleHRyYVBvcHNUb1Jlc3RvcmUp
LgorICAgIC8vIFNvbWUgY2xpZW50cyB3YW50IGl0IHBvcHBlZCBiZWZvcmUgcHJvY2VlZGluZy4g
QWxzbyBhZGQgMSBmb3IgdGhlIHB1c2hUb1NhdmUgb2YgdGhlIGZyYW1lUG9pbnRlclJlZ2lzdGVy
LgorICAgIG51bWJlck9mUmVxdWlyZWRQb3BzICs9IDEgKyBleHRyYVBvcHNUb1Jlc3RvcmU7Cisg
ICAgaml0LmFkZFB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKG51bWJlck9mUmVxdWly
ZWRQb3BzICogcHVzaFRvU2F2ZUJ5dGVPZmZzZXQpLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAK
ICAgICAvLyBQdXQgdGhlIHJldHVybiBhZGRyZXNzIHdoZXJldmVyIHRoZSByZXR1cm4gaW5zdHJ1
Y3Rpb24gd2FudHMgaXQuIE9uIGFsbCBwbGF0Zm9ybXMsIHRoaXMKICAgICAvLyBlbnN1cmVzIHRo
YXQgdGhlIHJldHVybiBhZGRyZXNzIGlzIG91dCBvZiB0aGUgd2F5IG9mIHJlZ2lzdGVyIHJlc3Rv
cmF0aW9uLgpAQCAtMTc3LDIxICsxNzksMjUgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBzbAogI2lmIENQVShYODZfNjQpCiAgICAgY3VycmVudE9mZnNldCArPSBzaXpl
b2Yodm9pZCopOwogI2VuZGlmCi0gICAgCisKKyAgICBBc3NlbWJseUhlbHBlcnM6OlN0b3JlUmVn
U3Bvb2xlciBzdG9yZVNwb29sZXIoaml0LCBNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVn
aXN0ZXIpOworCiAgICAgZm9yIChNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRCByZWcgPSBNYWNy
b0Fzc2VtYmxlcjo6Zmlyc3RSZWdpc3RlcigpOyByZWcgPD0gTWFjcm9Bc3NlbWJsZXI6Omxhc3RS
ZWdpc3RlcigpOyByZWcgPSBzdGF0aWNfY2FzdDxNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRD4o
cmVnICsgMSkpIHsKICAgICAgICAgaWYgKCFrZXkudXNlZFJlZ2lzdGVycygpLmdldChyZWcpKQog
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGppdC5zdG9yZVB0cihyZWcsIEFzc2VtYmx5
SGVscGVyczo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIGN1
cnJlbnRPZmZzZXQpKTsKKyAgICAgICAgc3RvcmVTcG9vbGVyLnN0b3JlR1BSKHsgcmVnLCBzdGF0
aWNfY2FzdDxwdHJkaWZmX3Q+KGN1cnJlbnRPZmZzZXQpIH0pOwogICAgICAgICBjdXJyZW50T2Zm
c2V0ICs9IHNpemVvZih2b2lkKik7CiAgICAgfQotICAgIAorICAgIHN0b3JlU3Bvb2xlci5mbHVz
aEdQUigpOworCiAgICAgZm9yIChNYWNyb0Fzc2VtYmxlcjo6RlBSZWdpc3RlcklEIHJlZyA9IE1h
Y3JvQXNzZW1ibGVyOjpmaXJzdEZQUmVnaXN0ZXIoKTsgcmVnIDw9IE1hY3JvQXNzZW1ibGVyOjps
YXN0RlBSZWdpc3RlcigpOyByZWcgPSBzdGF0aWNfY2FzdDxNYWNyb0Fzc2VtYmxlcjo6RlBSZWdp
c3RlcklEPihyZWcgKyAxKSkgewogICAgICAgICBpZiAoIWtleS51c2VkUmVnaXN0ZXJzKCkuZ2V0
KHJlZykpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaml0LnN0b3JlRG91YmxlKHJl
ZywgQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJS
ZWdpc3RlciwgY3VycmVudE9mZnNldCkpOworICAgICAgICBzdG9yZVNwb29sZXIuc3RvcmVGUFIo
eyByZWcsIHN0YXRpY19jYXN0PHB0cmRpZmZfdD4oY3VycmVudE9mZnNldCkgfSk7CiAgICAgICAg
IGN1cnJlbnRPZmZzZXQgKz0gc2l6ZW9mKGRvdWJsZSk7CiAgICAgfQotICAgIAorICAgIHN0b3Jl
U3Bvb2xlci5mbHVzaEZQUigpOworCiAgICAgaml0LnByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVy
Q2FsbChHUFJJbmZvOjpub25BcmdHUFIxKTsKICAgICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6bm9u
QXJnR1BSMSwgQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKE1hY3JvQXNzZW1ibGVyOjpzdGFja1Bv
aW50ZXJSZWdpc3Rlciwga2V5Lm9mZnNldCgpKSk7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0
aW9uKHZtKTsKQEAgLTIxMCwyNCArMjE2LDI4IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz4gc2wKICAgICBqaXQubG9hZFB0cihBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3Mo
TWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBrZXkub2Zmc2V0KCkpLCBHUFJJ
bmZvOjpub25QcmVzZXJ2ZWROb25SZXR1cm5HUFIpOwogICAgIGppdC5yZXN0b3JlUmV0dXJuQWRk
cmVzc0JlZm9yZVJldHVybihHUFJJbmZvOjpub25QcmVzZXJ2ZWROb25SZXR1cm5HUFIpOwogICAg
IAorICAgIEFzc2VtYmx5SGVscGVyczo6TG9hZFJlZ1Nwb29sZXIgbG9hZFNwb29sZXIoaml0LCBN
YWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOworCiAgICAgZm9yIChNYWNyb0Fz
c2VtYmxlcjo6RlBSZWdpc3RlcklEIHJlZyA9IE1hY3JvQXNzZW1ibGVyOjpsYXN0RlBSZWdpc3Rl
cigpOyA7IHJlZyA9IHN0YXRpY19jYXN0PE1hY3JvQXNzZW1ibGVyOjpGUFJlZ2lzdGVySUQ+KHJl
ZyAtIDEpKSB7CiAgICAgICAgIGlmIChrZXkudXNlZFJlZ2lzdGVycygpLmdldChyZWcpKSB7CiAg
ICAgICAgICAgICBjdXJyZW50T2Zmc2V0IC09IHNpemVvZihkb3VibGUpOwotICAgICAgICAgICAg
aml0LmxvYWREb3VibGUoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKE1hY3JvQXNzZW1ibGVyOjpz
dGFja1BvaW50ZXJSZWdpc3RlciwgY3VycmVudE9mZnNldCksIHJlZyk7CisgICAgICAgICAgICBs
b2FkU3Bvb2xlci5sb2FkRlBSKHsgcmVnLCBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KGN1cnJlbnRP
ZmZzZXQpIH0pOwogICAgICAgICB9CiAgICAgICAgIGlmIChyZWcgPT0gTWFjcm9Bc3NlbWJsZXI6
OmZpcnN0RlBSZWdpc3RlcigpKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIAorICAg
IGxvYWRTcG9vbGVyLmZsdXNoRlBSKCk7CisKICAgICBmb3IgKE1hY3JvQXNzZW1ibGVyOjpSZWdp
c3RlcklEIHJlZyA9IE1hY3JvQXNzZW1ibGVyOjpsYXN0UmVnaXN0ZXIoKTsgOyByZWcgPSBzdGF0
aWNfY2FzdDxNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRD4ocmVnIC0gMSkpIHsKICAgICAgICAg
aWYgKGtleS51c2VkUmVnaXN0ZXJzKCkuZ2V0KHJlZykpIHsKICAgICAgICAgICAgIGN1cnJlbnRP
ZmZzZXQgLT0gc2l6ZW9mKHZvaWQqKTsKLSAgICAgICAgICAgIGppdC5sb2FkUHRyKEFzc2VtYmx5
SGVscGVyczo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIGN1
cnJlbnRPZmZzZXQpLCByZWcpOworICAgICAgICAgICAgbG9hZFNwb29sZXIubG9hZEdQUih7IHJl
Zywgc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihjdXJyZW50T2Zmc2V0KSB9KTsKICAgICAgICAgfQog
ICAgICAgICBpZiAocmVnID09IE1hY3JvQXNzZW1ibGVyOjpmaXJzdFJlZ2lzdGVyKCkpCiAgICAg
ICAgICAgICBicmVhazsKICAgICB9Ci0gICAgCisgICAgbG9hZFNwb29sZXIuZmx1c2hHUFIoKTsK
KwogICAgIGppdC5yZXQoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9C
QUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkZUTFRodW5rKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAJKHJldmlzaW9uIDI3
ODg4NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShKSVQpCiAKICNpbmNs
dWRlICJBY2Nlc3NDYXNlLmgiCisjaW5jbHVkZSAiQXNzZW1ibHlIZWxwZXJzU3Bvb2xlcnMuaCIK
ICNpbmNsdWRlICJKSVRPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlclZpZXcu
aCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgpAQCAtNjA2LDQyICs2MDcsOTMgQEAg
dm9pZCBBc3NlbWJseUhlbHBlcnM6OnJlc3RvcmVDYWxsZWVTYXZlcwogCiAgICAgR1BSUmVnIHNj
cmF0Y2ggPSBJbnZhbGlkR1BSUmVnOwogICAgIHVuc2lnbmVkIHNjcmF0Y2hHUFJFbnRyeUluZGV4
ID0gMDsKKyNpZiBDUFUoQVJNNjQpCisgICAgLy8gV2UgZG9uJ3QgbmVlZCBhIHNlY29uZCBzY3Jh
dGNoIEdQUiwgYnV0IHdlJ2xsIGFsc28gZGVmZXIgcmVzdG9yaW5nIHRoaXMKKyAgICAvLyBHUFIg
KGluIHRoZSBuZXh0IHNsb3QgYWZ0ZXIgdGhlIHNjcmF0Y2gpIHNvIHRoYXQgd2UgY2FuIHJlc3Rv
cmUgdGhlbSB0b2dldGhlcgorICAgIC8vIGxhdGVyIHVzaW5nIGEgbG9hZFBhaXI2NC4KKyAgICBH
UFJSZWcgdW51c2VkTmV4dFNsb3RHUFIgPSBJbnZhbGlkR1BSUmVnOworI2VuZGlmCiAKLSAgICAv
LyBVc2UgdGhlIGZpcnN0IEdQUiBlbnRyeSdzIHJlZ2lzdGVyIGFzIG91ciBzY3JhdGNoLgorICAg
IC8vIFVzZSB0aGUgZmlyc3QgR1BSIGVudHJ5J3MgcmVnaXN0ZXIgYXMgb3VyIGJhc2VHUFIuCiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkrKykgewogICAgICAg
ICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5ID0gYWxsQ2FsbGVlU2F2ZXMtPmF0KGkpOwotICAgICAg
ICBpZiAoZG9udFJlc3RvcmVSZWdpc3RlcnMuZ2V0KGVudHJ5LnJlZygpKSkKKyAgICAgICAgaWYg
KGRvbnRSZXN0b3JlUmVnaXN0ZXJzLmNvbnRhaW5zKGVudHJ5LnJlZygpKSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICBpZiAoZW50cnkucmVnKCkuaXNHUFIoKSkgeworI2lmIENQVShB
Uk02NCkKKyAgICAgICAgICAgIGlmIChpICsgMSA8IHJlZ2lzdGVyQ291bnQpIHsKKyAgICAgICAg
ICAgICAgICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5MiA9IGFsbENhbGxlZVNhdmVzLT5hdChpICsg
MSk7CisgICAgICAgICAgICAgICAgaWYgKCFkb250UmVzdG9yZVJlZ2lzdGVycy5jb250YWlucyhl
bnRyeTIucmVnKCkpCisgICAgICAgICAgICAgICAgICAgICYmIGVudHJ5Mi5yZWcoKS5pc0dQUigp
CisgICAgICAgICAgICAgICAgICAgICYmIGVudHJ5Mi5vZmZzZXQoKSA9PSBlbnRyeS5vZmZzZXQo
KSArIHN0YXRpY19jYXN0PHB0cmRpZmZfdD4oc2l6ZW9mKENQVVJlZ2lzdGVyKSkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgc2NyYXRjaEdQUkVudHJ5SW5kZXggPSBpOworICAgICAgICAgICAgICAg
ICAgICBzY3JhdGNoID0gZW50cnkucmVnKCkuZ3ByKCk7CisgICAgICAgICAgICAgICAgICAgIHVu
dXNlZE5leHRTbG90R1BSID0gZW50cnkyLnJlZygpLmdwcigpOworICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisjZWxzZQogICAgICAg
ICAgICAgc2NyYXRjaEdQUkVudHJ5SW5kZXggPSBpOwogICAgICAgICAgICAgc2NyYXRjaCA9IGVu
dHJ5LnJlZygpLmdwcigpOwogICAgICAgICAgICAgYnJlYWs7CisjZW5kaWYKICAgICAgICAgfQog
ICAgIH0KICAgICBBU1NFUlQoc2NyYXRjaCAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAKKyAgICBS
ZWdpc3RlclNldCBza2lwTGlzdDsKKyAgICBza2lwTGlzdC5zZXQoZG9udFJlc3RvcmVSZWdpc3Rl
cnMpOworCisgICAgLy8gU2tpcCB0aGUgc2NyYXRjaCByZWdpc3RlcihzKS4gV2UnbGwgcmVzdG9y
ZSB0aGVtIGxhdGVyLgorICAgIHNraXBMaXN0LmFkZChzY3JhdGNoKTsKKyNpZiBDUFUoQVJNNjQp
CisgICAgUkVMRUFTRV9BU1NFUlQodW51c2VkTmV4dFNsb3RHUFIgIT0gSW52YWxpZEdQUlJlZyk7
CisgICAgc2tpcExpc3QuYWRkKHVudXNlZE5leHRTbG90R1BSKTsKKyNlbmRpZgogCiAgICAgbG9h
ZFB0cigmdG9wRW50cnlGcmFtZSwgc2NyYXRjaCk7CiAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihF
bnRyeUZyYW1lOjpjYWxsZWVTYXZlUmVnaXN0ZXJzQnVmZmVyT2Zmc2V0KCkpLCBzY3JhdGNoKTsK
IAorICAgIExvYWRSZWdTcG9vbGVyIHNwb29sZXIoKnRoaXMsIHNjcmF0Y2gpOworCiAgICAgLy8g
UmVzdG9yZSBhbGwgY2FsbGVlIHNhdmVzIGV4Y2VwdCBmb3IgdGhlIHNjcmF0Y2guCi0gICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkrKykgeworICAgIHVuc2lnbmVk
IGkgPSAwOworICAgIGZvciAoOyBpIDwgcmVnaXN0ZXJDb3VudDsgaSsrKSB7CiAgICAgICAgIFJl
Z2lzdGVyQXRPZmZzZXQgZW50cnkgPSBhbGxDYWxsZWVTYXZlcy0+YXQoaSk7Ci0gICAgICAgIGlm
IChkb250UmVzdG9yZVJlZ2lzdGVycy5nZXQoZW50cnkucmVnKCkpKQorICAgICAgICBpZiAoc2tp
cExpc3QuY29udGFpbnMoZW50cnkucmVnKCkpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgIGlmIChpID09IHNjcmF0Y2hHUFJFbnRyeUluZGV4KQorICAgICAgICBpZiAoIWVudHJ5LnJl
ZygpLmlzR1BSKCkpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgc3Bvb2xlci5sb2FkR1BS
KGVudHJ5KTsKKyAgICB9CisgICAgc3Bvb2xlci5mbHVzaEdQUigpOworICAgIGZvciAoOyBpIDwg
cmVnaXN0ZXJDb3VudDsgaSsrKSB7CisgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQgZW50cnkgPSBh
bGxDYWxsZWVTYXZlcy0+YXQoaSk7CisgICAgICAgIGlmIChza2lwTGlzdC5jb250YWlucyhlbnRy
eS5yZWcoKSkpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgbG9hZFJlZyhBZGRyZXNz
KHNjcmF0Y2gsIGVudHJ5Lm9mZnNldCgpKSwgZW50cnkucmVnKCkpOworICAgICAgICBBU1NFUlQo
IWVudHJ5LnJlZygpLmlzR1BSKCkpOworICAgICAgICBzcG9vbGVyLmxvYWRGUFIoZW50cnkpOwog
ICAgIH0KKyAgICBzcG9vbGVyLmZsdXNoRlBSKCk7CiAKICAgICAvLyBSZXN0b3JlIHRoZSBjYWxs
ZWUgc2F2ZSB2YWx1ZSBvZiB0aGUgc2NyYXRjaC4KICAgICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5
ID0gYWxsQ2FsbGVlU2F2ZXMtPmF0KHNjcmF0Y2hHUFJFbnRyeUluZGV4KTsKICAgICBBU1NFUlQo
IWRvbnRSZXN0b3JlUmVnaXN0ZXJzLmdldChlbnRyeS5yZWcoKSkpOwogICAgIEFTU0VSVChlbnRy
eS5yZWcoKS5pc0dQUigpKTsKICAgICBBU1NFUlQoc2NyYXRjaCA9PSBlbnRyeS5yZWcoKS5ncHIo
KSk7Ci0gICAgbG9hZFJlZyhBZGRyZXNzKHNjcmF0Y2gsIGVudHJ5Lm9mZnNldCgpKSwgc2NyYXRj
aCk7CisjaWYgQ1BVKEFSTTY0KQorICAgIFJlZ2lzdGVyQXRPZmZzZXQgZW50cnkyID0gYWxsQ2Fs
bGVlU2F2ZXMtPmF0KHNjcmF0Y2hHUFJFbnRyeUluZGV4ICsgMSk7CisgICAgQVNTRVJUX1VOVVNF
RChlbnRyeTIsICFkb250UmVzdG9yZVJlZ2lzdGVycy5nZXQoZW50cnkyLnJlZygpKSk7CisgICAg
QVNTRVJUKGVudHJ5Mi5yZWcoKS5pc0dQUigpKTsKKyAgICBBU1NFUlQodW51c2VkTmV4dFNsb3RH
UFIgPT0gZW50cnkyLnJlZygpLmdwcigpKTsKKyAgICBsb2FkUGFpcjY0KHNjcmF0Y2gsIFRydXN0
ZWRJbW0zMihlbnRyeS5vZmZzZXQoKSksIHNjcmF0Y2gsIHVudXNlZE5leHRTbG90R1BSKTsKICNl
bHNlCi0gICAgVU5VU0VEX1BBUkFNKHRvcEVudHJ5RnJhbWUpOworICAgIGxvYWRQdHIoQWRkcmVz
cyhzY3JhdGNoLCBlbnRyeS5vZmZzZXQoKSksIHNjcmF0Y2gpOwogI2VuZGlmCisKKyNlbHNlCisg
ICAgVU5VU0VEX1BBUkFNKHRvcEVudHJ5RnJhbWUpOworI2VuZGlmIC8vIE5VTUJFUl9PRl9DQUxM
RUVfU0FWRVNfUkVHSVNURVJTID4gMAogfQogCiB2b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1pdFZp
cnR1YWxDYWxsKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbExpbmtJ
bmZvKiBpbmZvKQpAQCAtOTk5LDEzICsxMDUxLDI3IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjpj
b3B5Q2FsbGVlU2F2ZXNUb0UKICAgICBSZWdpc3RlckF0T2Zmc2V0TGlzdCogYWxsQ2FsbGVlU2F2
ZXMgPSBSZWdpc3RlclNldDo6dm1DYWxsZWVTYXZlUmVnaXN0ZXJPZmZzZXRzKCk7CiAgICAgUmVn
aXN0ZXJTZXQgZG9udENvcHlSZWdpc3RlcnMgPSBSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMo
KTsKICAgICB1bnNpZ25lZCByZWdpc3RlckNvdW50ID0gYWxsQ2FsbGVlU2F2ZXMtPnNpemUoKTsK
LSAgICAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVnaXN0ZXJDb3VudDsgaSsrKSB7
CisKKyAgICBTdG9yZVJlZ1Nwb29sZXIgc3Bvb2xlcigqdGhpcywgY2FsbGVlU2F2ZXNCdWZmZXIp
OworCisgICAgdW5zaWduZWQgaSA9IDA7CisgICAgZm9yICg7IGkgPCByZWdpc3RlckNvdW50OyBp
KyspIHsKICAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCBlbnRyeSA9IGFsbENhbGxlZVNhdmVzLT5h
dChpKTsKLSAgICAgICAgaWYgKGRvbnRDb3B5UmVnaXN0ZXJzLmdldChlbnRyeS5yZWcoKSkpCisg
ICAgICAgIGlmIChkb250Q29weVJlZ2lzdGVycy5jb250YWlucyhlbnRyeS5yZWcoKSkpCisgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKCFlbnRyeS5yZWcoKS5pc0dQUigpKQorICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIHNwb29sZXIuc3RvcmVHUFIoZW50cnkpOworICAgIH0K
KyAgICBzcG9vbGVyLmZsdXNoR1BSKCk7CisgICAgZm9yICg7IGkgPCByZWdpc3RlckNvdW50OyBp
KyspIHsKKyAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCBlbnRyeSA9IGFsbENhbGxlZVNhdmVzLT5h
dChpKTsKKyAgICAgICAgaWYgKGRvbnRDb3B5UmVnaXN0ZXJzLmNvbnRhaW5zKGVudHJ5LnJlZygp
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBzdG9yZVJlZyhlbnRyeS5yZWcoKSwg
QWRkcmVzcyhjYWxsZWVTYXZlc0J1ZmZlciwgZW50cnkub2Zmc2V0KCkpKTsKKyAgICAgICAgc3Bv
b2xlci5zdG9yZUZQUihlbnRyeSk7CiAgICAgfQorICAgIHNwb29sZXIuZmx1c2hGUFIoKTsKKwog
I2Vsc2UKICAgICBVTlVTRURfUEFSQU0oY2FsbGVlU2F2ZXNCdWZmZXIpOwogI2VuZGlmCkBAIC0x
MTAzLDYgKzExNjksMTg0IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjpjYWdlQ29uZGl0aW9uYWxs
eUEKICAgICBVTlVTRURfUEFSQU0oc2NyYXRjaCk7CiB9CiAKK3ZvaWQgQXNzZW1ibHlIZWxwZXJz
OjplbWl0U2F2ZShjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCYgbGlzdCkKK3sKKyAgICBTdG9y
ZVJlZ1Nwb29sZXIgc3Bvb2xlcigqdGhpcywgZnJhbWVQb2ludGVyUmVnaXN0ZXIpOworCisgICAg
c2l6ZV90IGxpc3RTaXplID0gbGlzdC5zaXplKCk7CisgICAgc2l6ZV90IGkgPSAwOworICAgIGZv
ciAoOyBpIDwgbGlzdFNpemU7IGkrKykgeworICAgICAgICBhdXRvIGVudHJ5ID0gbGlzdC5hdChp
KTsKKyAgICAgICAgaWYgKCFlbnRyeS5yZWcoKS5pc0dQUigpKQorICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIHNwb29sZXIuc3RvcmVHUFIoZW50cnkpOworICAgIH0KKyAgICBzcG9vbGVyLmZs
dXNoR1BSKCk7CisKKyAgICBmb3IgKDsgaSA8IGxpc3RTaXplOyBpKyspCisgICAgICAgIHNwb29s
ZXIuc3RvcmVGUFIobGlzdC5hdChpKSk7CisgICAgc3Bvb2xlci5mbHVzaEZQUigpOworfQorCit2
b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1pdFJlc3RvcmUoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExp
c3QmIGxpc3QpCit7CisgICAgTG9hZFJlZ1Nwb29sZXIgc3Bvb2xlcigqdGhpcywgZnJhbWVQb2lu
dGVyUmVnaXN0ZXIpOworCisgICAgc2l6ZV90IGxpc3RTaXplID0gbGlzdC5zaXplKCk7CisgICAg
c2l6ZV90IGkgPSAwOworICAgIGZvciAoOyBpIDwgbGlzdFNpemU7IGkrKykgeworICAgICAgICBh
dXRvIGVudHJ5ID0gbGlzdC5hdChpKTsKKyAgICAgICAgaWYgKCFlbnRyeS5yZWcoKS5pc0dQUigp
KQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIHNwb29sZXIubG9hZEdQUihlbnRyeSk7Cisg
ICAgfQorICAgIHNwb29sZXIuZmx1c2hHUFIoKTsKKworICAgIGZvciAoOyBpIDwgbGlzdFNpemU7
IGkrKykKKyAgICAgICAgc3Bvb2xlci5sb2FkRlBSKGxpc3QuYXQoaSkpOworICAgIHNwb29sZXIu
Zmx1c2hGUFIoKTsKK30KKwordm9pZCBBc3NlbWJseUhlbHBlcnM6OmVtaXRTYXZlQ2FsbGVlU2F2
ZXNGb3IoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGNhbGxlZVNhdmVzKQoreworICAgIFJl
Z2lzdGVyU2V0IGRvbnRTYXZlUmVnaXN0ZXJzID0gUmVnaXN0ZXJTZXQoUmVnaXN0ZXJTZXQ6OnN0
YWNrUmVnaXN0ZXJzKCksIFJlZ2lzdGVyU2V0OjphbGxGUFJzKCkpOworICAgIHVuc2lnbmVkIHJl
Z2lzdGVyQ291bnQgPSBjYWxsZWVTYXZlcy0+c2l6ZSgpOworCisgICAgU3RvcmVSZWdTcG9vbGVy
IHNwb29sZXIoKnRoaXMsIGZyYW1lUG9pbnRlclJlZ2lzdGVyKTsKKworICAgIHVuc2lnbmVkIGkg
PSAwOworICAgIGZvciAoOyBpIDwgcmVnaXN0ZXJDb3VudDsgaSsrKSB7CisgICAgICAgIFJlZ2lz
dGVyQXRPZmZzZXQgZW50cnkgPSBjYWxsZWVTYXZlcy0+YXQoaSk7CisgICAgICAgIGlmIChkb250
U2F2ZVJlZ2lzdGVycy5jb250YWlucyhlbnRyeS5yZWcoKSkpCisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgc3Bvb2xlci5zdG9yZUdQUihlbnRyeSk7CisgICAgfQorICAgIHNwb29sZXIu
Zmx1c2hHUFIoKTsKKyAgICBmb3IgKDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkrKykgeworICAgICAg
ICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5ID0gY2FsbGVlU2F2ZXMtPmF0KGkpOworICAgICAgICBp
ZiAoZG9udFNhdmVSZWdpc3RlcnMuY29udGFpbnMoZW50cnkucmVnKCkpKQorICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIHNwb29sZXIuc3RvcmVGUFIoZW50cnkpOworICAgIH0KKyAgICBz
cG9vbGVyLmZsdXNoRlBSKCk7Cit9CisKK3ZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0UmVzdG9y
ZUNhbGxlZVNhdmVzRm9yKGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBjYWxsZWVTYXZlcykK
K3sKKyAgICBSZWdpc3RlclNldCBkb250UmVzdG9yZVJlZ2lzdGVycyA9IFJlZ2lzdGVyU2V0KFJl
Z2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpLCBSZWdpc3RlclNldDo6YWxsRlBScygpKTsKKyAg
ICB1bnNpZ25lZCByZWdpc3RlckNvdW50ID0gY2FsbGVlU2F2ZXMtPnNpemUoKTsKKyAgICAKKyAg
ICBMb2FkUmVnU3Bvb2xlciBzcG9vbGVyKCp0aGlzLCBmcmFtZVBvaW50ZXJSZWdpc3Rlcik7CisK
KyAgICB1bnNpZ25lZCBpID0gMDsKKyAgICBmb3IgKDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkrKykg
eworICAgICAgICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5ID0gY2FsbGVlU2F2ZXMtPmF0KGkpOwor
ICAgICAgICBpZiAoZG9udFJlc3RvcmVSZWdpc3RlcnMuZ2V0KGVudHJ5LnJlZygpKSkKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICBzcG9vbGVyLmxvYWRHUFIoZW50cnkpOworICAgIH0K
KyAgICBzcG9vbGVyLmZsdXNoR1BSKCk7CisgICAgZm9yICg7IGkgPCByZWdpc3RlckNvdW50OyBp
KyspIHsKKyAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCBlbnRyeSA9IGNhbGxlZVNhdmVzLT5hdChp
KTsKKyAgICAgICAgaWYgKGRvbnRSZXN0b3JlUmVnaXN0ZXJzLmdldChlbnRyeS5yZWcoKSkpCisg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgc3Bvb2xlci5sb2FkRlBSKGVudHJ5KTsKKyAg
ICB9CisgICAgc3Bvb2xlci5mbHVzaEZQUigpOworfQorCit2b2lkIEFzc2VtYmx5SGVscGVyczo6
Y29weUxMSW50QmFzZWxpbmVDYWxsZWVTYXZlc0Zyb21GcmFtZU9yUmVnaXN0ZXJUb0VudHJ5RnJh
bWVDYWxsZWVTYXZlc0J1ZmZlcihFbnRyeUZyYW1lKiYgdG9wRW50cnlGcmFtZSwgY29uc3QgVGVt
cFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzKQoreworI2lmIE5VTUJFUl9PRl9DQUxMRUVfU0FW
RVNfUkVHSVNURVJTID4gMAorICAgIC8vIENvcHkgc2F2ZWQgY2FsbGVlU2F2ZXMgb24gc3RhY2sg
b3IgdW5zYXZlZCBjYWxsZWVTYXZlcyBpbiByZWdpc3RlciB0byB2bSBjYWxsZWVTYXZlIGJ1ZmZl
cgorICAgIEdQUlJlZyBkZXN0QnVmZmVyR1BSID0gdXNlZFJlZ2lzdGVycy5nZXRGcmVlR1BSKDAp
OworICAgIEdQUlJlZyB0ZW1wMSA9IHVzZWRSZWdpc3RlcnMuZ2V0RnJlZUdQUigxKTsKKyAgICBG
UFJSZWcgZnBUZW1wMSA9IHVzZWRSZWdpc3RlcnMuZ2V0RnJlZUZQUigwKTsKKyAgICBHUFJSZWcg
dGVtcDIgPSBpc0FSTTY0KCkgPyB1c2VkUmVnaXN0ZXJzLmdldEZyZWVHUFIoMikgOiBJbnZhbGlk
R1BSUmVnOworICAgIEZQUlJlZyBmcFRlbXAyID0gaXNBUk02NCgpID8gdXNlZFJlZ2lzdGVycy5n
ZXRGcmVlRlBSKDEpIDogSW52YWxpZEZQUlJlZzsKKworICAgIGxvYWRQdHIoJnRvcEVudHJ5RnJh
bWUsIGRlc3RCdWZmZXJHUFIpOworICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoRW50cnlGcmFtZTo6
Y2FsbGVlU2F2ZVJlZ2lzdGVyc0J1ZmZlck9mZnNldCgpKSwgZGVzdEJ1ZmZlckdQUik7CisKKyAg
ICBDb3B5U3Bvb2xlciBzcG9vbGVyKCp0aGlzLCBmcmFtZVBvaW50ZXJSZWdpc3RlciwgZGVzdEJ1
ZmZlckdQUiwgdGVtcDEsIHRlbXAyLCBmcFRlbXAxLCBmcFRlbXAyKTsKKworICAgIFJlZ2lzdGVy
QXRPZmZzZXRMaXN0KiBhbGxDYWxsZWVTYXZlcyA9IFJlZ2lzdGVyU2V0Ojp2bUNhbGxlZVNhdmVS
ZWdpc3Rlck9mZnNldHMoKTsKKyAgICBjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCogY3VycmVu
dENhbGxlZVNhdmVzID0gJlJlZ2lzdGVyQXRPZmZzZXRMaXN0OjpsbGludEJhc2VsaW5lQ2FsbGVl
U2F2ZVJlZ2lzdGVycygpOworICAgIFJlZ2lzdGVyU2V0IGRvbnRDb3B5UmVnaXN0ZXJzID0gUmVn
aXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCk7CisgICAgdW5zaWduZWQgcmVnaXN0ZXJDb3VudCA9
IGFsbENhbGxlZVNhdmVzLT5zaXplKCk7CisKKyAgICB1bnNpZ25lZCBpID0gMDsKKyAgICBmb3Ig
KDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkrKykgeworICAgICAgICBSZWdpc3RlckF0T2Zmc2V0IGVu
dHJ5ID0gYWxsQ2FsbGVlU2F2ZXMtPmF0KGkpOworICAgICAgICBpZiAoZG9udENvcHlSZWdpc3Rl
cnMuY29udGFpbnMoZW50cnkucmVnKCkpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
IFJlZ2lzdGVyQXRPZmZzZXQqIGN1cnJlbnRGcmFtZUVudHJ5ID0gY3VycmVudENhbGxlZVNhdmVz
LT5maW5kKGVudHJ5LnJlZygpKTsKKworICAgICAgICBpZiAoIWVudHJ5LnJlZygpLmlzR1BSKCkp
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKGN1cnJlbnRGcmFtZUVudHJ5KQorICAg
ICAgICAgICAgc3Bvb2xlci5sb2FkR1BSKGN1cnJlbnRGcmFtZUVudHJ5LT5vZmZzZXQoKSk7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNwb29sZXIuY29weUdQUihlbnRyeS5yZWcoKS5ncHIo
KSk7CisgICAgICAgIHNwb29sZXIuc3RvcmVHUFIoZW50cnkub2Zmc2V0KCkpOworICAgIH0KKyAg
ICBzcG9vbGVyLmZsdXNoR1BSKCk7CisKKyAgICBmb3IgKDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkr
KykgeworICAgICAgICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5ID0gYWxsQ2FsbGVlU2F2ZXMtPmF0
KGkpOworICAgICAgICBpZiAoZG9udENvcHlSZWdpc3RlcnMuZ2V0KGVudHJ5LnJlZygpKSkKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBSZWdpc3RlckF0T2Zmc2V0KiBjdXJyZW50RnJh
bWVFbnRyeSA9IGN1cnJlbnRDYWxsZWVTYXZlcy0+ZmluZChlbnRyeS5yZWcoKSk7CisKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoZW50cnkucmVnKCkuaXNGUFIoKSk7CisgICAgICAgIGlmIChjdXJy
ZW50RnJhbWVFbnRyeSkKKyAgICAgICAgICAgIHNwb29sZXIubG9hZEZQUihjdXJyZW50RnJhbWVF
bnRyeS0+b2Zmc2V0KCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzcG9vbGVyLmNvcHlG
UFIoZW50cnkucmVnKCkuZnByKCkpOworICAgICAgICBzcG9vbGVyLnN0b3JlRlBSKGVudHJ5Lm9m
ZnNldCgpKTsKKyAgICB9CisgICAgc3Bvb2xlci5mbHVzaEZQUigpOworCisjZWxzZQorICAgIFVO
VVNFRF9QQVJBTSh0b3BFbnRyeUZyYW1lKTsKKyAgICBVTlVTRURfUEFSQU0odXNlZFJlZ2lzdGVy
cyk7CisjZW5kaWYKK30KKwordm9pZCBBc3NlbWJseUhlbHBlcnM6OmVtaXRTYXZlT3JDb3B5TExJ
bnRCYXNlbGluZUNhbGxlZVNhdmVzRm9yKENvZGVCbG9jayogY29kZUJsb2NrLCBWaXJ0dWFsUmVn
aXN0ZXIgb2Zmc2V0VmlydHVhbFJlZ2lzdGVyLCBSZXN0b3JlVGFnUmVnaXN0ZXJNb2RlIHRhZ1Jl
Z2lzdGVyTW9kZSwgR1BSUmVnIHRlbXAxLCBHUFJSZWcgdGVtcDIsIEdQUlJlZyB0ZW1wMykKK3sK
KyAgICBBU1NFUlQoY29kZUJsb2NrKTsKKworICAgIFJFTEVBU0VfQVNTRVJUKCFKSVRDb2RlOjpp
c09wdGltaXppbmdKSVQoY29kZUJsb2NrLT5qaXRUeXBlKCkpKTsKKyAgICBSRUxFQVNFX0FTU0VS
VChjb2RlQmxvY2stPmNhbGxlZVNhdmVSZWdpc3RlcnMoKSA9PSAmUmVnaXN0ZXJBdE9mZnNldExp
c3Q6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCkpOworICAgIGNvbnN0IFJlZ2lz
dGVyQXRPZmZzZXRMaXN0KiBjYWxsZWVTYXZlcyA9ICZSZWdpc3RlckF0T2Zmc2V0TGlzdDo6bGxp
bnRCYXNlbGluZUNhbGxlZVNhdmVSZWdpc3RlcnMoKTsKKyAgICBSZWdpc3RlclNldCBkb250U2F2
ZVJlZ2lzdGVycyA9IFJlZ2lzdGVyU2V0KFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpLCBS
ZWdpc3RlclNldDo6YWxsRlBScygpKTsKKyAgICB1bnNpZ25lZCByZWdpc3RlckNvdW50ID0gY2Fs
bGVlU2F2ZXMtPnNpemUoKTsKKworICAgIEdQUlJlZyBkc3RCdWZmZXJHUFIgPSB0ZW1wMTsKKyAg
ICBhZGRQdHIoVHJ1c3RlZEltbTMyKG9mZnNldFZpcnR1YWxSZWdpc3Rlci5vZmZzZXRJbkJ5dGVz
KCkpLCBmcmFtZVBvaW50ZXJSZWdpc3RlciwgZHN0QnVmZmVyR1BSKTsKKworICAgIENvcHlTcG9v
bGVyIHNwb29sZXIoKnRoaXMsIGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBkc3RCdWZmZXJHUFIsIHRl
bXAyLCB0ZW1wMyk7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVnaXN0ZXJDb3Vu
dDsgaSsrKSB7CisgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQgZW50cnkgPSBjYWxsZWVTYXZlcy0+
YXQoaSk7CisgICAgICAgIGlmIChkb250U2F2ZVJlZ2lzdGVycy5nZXQoZW50cnkucmVnKCkpKQor
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIAorI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisg
ICAgICAgIFVOVVNFRF9QQVJBTSh0YWdSZWdpc3Rlck1vZGUpOworICAgICAgICBVTlVTRURfUEFS
QU0odGVtcCk7CisjZWxzZQorICAgICAgICBpZiAodGFnUmVnaXN0ZXJNb2RlID09IENvcHlCYXNl
bGluZUNhbGxlZVNhdmVkUmVnaXN0ZXJzRnJvbUJhc2VGcmFtZSkKKyAgICAgICAgICAgIHNwb29s
ZXIubG9hZEdQUihlbnRyeS5vZmZzZXQoKSk7CisgICAgICAgIGVsc2UKKyNlbmRpZgorICAgICAg
ICAgICAgc3Bvb2xlci5jb3B5R1BSKGVudHJ5LnJlZygpLmdwcigpKTsKKyAgICAgICAgc3Bvb2xl
ci5zdG9yZUdQUihlbnRyeS5vZmZzZXQoKSk7CisgICAgfQorICAgIHNwb29sZXIuZmx1c2hHUFIo
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCShyZXZpc2lv
biAyNzg4ODYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yOTUsMzEgKzI5NSwxOSBAQCBwdWJsaWM6CiAgICAgICAgIHN0
b3JlMzIoVHJ1c3RlZEltbTMyKHZhbHVlLnBheWxvYWQoKSksIGFkZHJlc3Mud2l0aE9mZnNldChQ
YXlsb2FkT2Zmc2V0KSk7CiAjZW5kaWYKICAgICB9Ci0gICAgCisKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBPcD4gY2xhc3MgU3Bvb2xlcjsKKyAgICBjbGFzcyBMb2FkUmVnU3Bvb2xlcjsKKyAgICBj
bGFzcyBTdG9yZVJlZ1Nwb29sZXI7CisgICAgY2xhc3MgQ29weVNwb29sZXI7CisKICAgICBBZGRy
ZXNzIGFkZHJlc3NGb3IoY29uc3QgUmVnaXN0ZXJBdE9mZnNldCYgZW50cnkpCiAgICAgewogICAg
ICAgICByZXR1cm4gQWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgZW50cnkub2Zm
c2V0KCkpOwogICAgIH0KLSAgICAKLSAgICB2b2lkIGVtaXRTYXZlKGNvbnN0IFJlZ2lzdGVyQXRP
ZmZzZXRMaXN0JiBsaXN0KQotICAgIHsKLSAgICAgICAgZm9yIChjb25zdCBSZWdpc3RlckF0T2Zm
c2V0JiBlbnRyeSA6IGxpc3QpIHsKLSAgICAgICAgICAgIGlmIChlbnRyeS5yZWcoKS5pc0dQUigp
KQotICAgICAgICAgICAgICAgIHN0b3JlUHRyKGVudHJ5LnJlZygpLmdwcigpLCBhZGRyZXNzRm9y
KGVudHJ5KSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgc3RvcmVEb3VibGUo
ZW50cnkucmVnKCkuZnByKCksIGFkZHJlc3NGb3IoZW50cnkpKTsKLSAgICAgICAgfQotICAgIH0K
LSAgICAKLSAgICB2b2lkIGVtaXRSZXN0b3JlKGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRMaXN0JiBs
aXN0KQotICAgIHsKLSAgICAgICAgZm9yIChjb25zdCBSZWdpc3RlckF0T2Zmc2V0JiBlbnRyeSA6
IGxpc3QpIHsKLSAgICAgICAgICAgIGlmIChlbnRyeS5yZWcoKS5pc0dQUigpKQotICAgICAgICAg
ICAgICAgIGxvYWRQdHIoYWRkcmVzc0ZvcihlbnRyeSksIGVudHJ5LnJlZygpLmdwcigpKTsKLSAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBsb2FkRG91YmxlKGFkZHJlc3NGb3IoZW50
cnkpLCBlbnRyeS5yZWcoKS5mcHIoKSk7Ci0gICAgICAgIH0KLSAgICB9CisKKyAgICB2b2lkIGVt
aXRTYXZlKGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRMaXN0Jik7CisgICAgdm9pZCBlbWl0UmVzdG9y
ZShjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCYpOwogCiAgICAgdm9pZCBlbWl0U2F2ZUNhbGxl
ZVNhdmVzRm9yKENvZGVCbG9jayogY29kZUJsb2NrKQogICAgIHsKQEAgLTMyOSw1NCArMzE3LDEx
IEBAIHB1YmxpYzoKICAgICAgICAgZW1pdFNhdmVDYWxsZWVTYXZlc0ZvcihjYWxsZWVTYXZlcyk7
CiAgICAgfQogCi0gICAgdm9pZCBlbWl0U2F2ZUNhbGxlZVNhdmVzRm9yKGNvbnN0IFJlZ2lzdGVy
QXRPZmZzZXRMaXN0KiBjYWxsZWVTYXZlcykKLSAgICB7Ci0gICAgICAgIFJlZ2lzdGVyU2V0IGRv
bnRTYXZlUmVnaXN0ZXJzID0gUmVnaXN0ZXJTZXQoUmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJz
KCksIFJlZ2lzdGVyU2V0OjphbGxGUFJzKCkpOwotICAgICAgICB1bnNpZ25lZCByZWdpc3RlckNv
dW50ID0gY2FsbGVlU2F2ZXMtPnNpemUoKTsKLQotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgcmVnaXN0ZXJDb3VudDsgaSsrKSB7Ci0gICAgICAgICAgICBSZWdpc3RlckF0T2Zmc2V0
IGVudHJ5ID0gY2FsbGVlU2F2ZXMtPmF0KGkpOwotICAgICAgICAgICAgaWYgKGRvbnRTYXZlUmVn
aXN0ZXJzLmdldChlbnRyeS5yZWcoKSkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgICAgICBzdG9yZVB0cihlbnRyeS5yZWcoKS5ncHIoKSwgQWRkcmVzcyhmcmFtZVBvaW50ZXJS
ZWdpc3RlciwgZW50cnkub2Zmc2V0KCkpKTsKLSAgICAgICAgfQotICAgIH0KKyAgICB2b2lkIGVt
aXRTYXZlQ2FsbGVlU2F2ZXNGb3IoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGNhbGxlZVNh
dmVzKTsKICAgICAKICAgICBlbnVtIFJlc3RvcmVUYWdSZWdpc3Rlck1vZGUgeyBVc2VFeGlzdGlu
Z1RhZ1JlZ2lzdGVyQ29udGVudHMsIENvcHlCYXNlbGluZUNhbGxlZVNhdmVkUmVnaXN0ZXJzRnJv
bUJhc2VGcmFtZSB9OwogCi0gICAgdm9pZCBlbWl0U2F2ZU9yQ29weUNhbGxlZVNhdmVzRm9yKENv
ZGVCbG9jayogY29kZUJsb2NrLCBWaXJ0dWFsUmVnaXN0ZXIgb2Zmc2V0VmlydHVhbFJlZ2lzdGVy
LCBSZXN0b3JlVGFnUmVnaXN0ZXJNb2RlIHRhZ1JlZ2lzdGVyTW9kZSwgR1BSUmVnIHRlbXApCi0g
ICAgewotICAgICAgICBBU1NFUlQoY29kZUJsb2NrKTsKLSAgICAgICAgCi0gICAgICAgIGNvbnN0
IFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBjYWxsZWVTYXZlcyA9IGNvZGVCbG9jay0+Y2FsbGVlU2F2
ZVJlZ2lzdGVycygpOwotICAgICAgICBSZWdpc3RlclNldCBkb250U2F2ZVJlZ2lzdGVycyA9IFJl
Z2lzdGVyU2V0KFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpLCBSZWdpc3RlclNldDo6YWxs
RlBScygpKTsKLSAgICAgICAgdW5zaWduZWQgcmVnaXN0ZXJDb3VudCA9IGNhbGxlZVNhdmVzLT5z
aXplKCk7Ci0KLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBSZWdpc3RlclNldCBiYXNlbGlu
ZUNhbGxlZVNhdmVzID0gUmVnaXN0ZXJTZXQ6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0
ZXJzKCk7Ci0jZW5kaWYKLSAgICAgICAgCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCByZWdpc3RlckNvdW50OyBpKyspIHsKLSAgICAgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQgZW50
cnkgPSBjYWxsZWVTYXZlcy0+YXQoaSk7Ci0gICAgICAgICAgICBpZiAoZG9udFNhdmVSZWdpc3Rl
cnMuZ2V0KGVudHJ5LnJlZygpKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
ICAgIAotICAgICAgICAgICAgR1BSUmVnIHJlZ2lzdGVyVG9Xcml0ZTsKLSAgICAgICAgICAgIAot
I2lmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgICAgICAgICBVTlVTRURfUEFSQU0odGFnUmVnaXN0
ZXJNb2RlKTsKLSAgICAgICAgICAgIFVOVVNFRF9QQVJBTSh0ZW1wKTsKLSNlbHNlCi0gICAgICAg
ICAgICBpZiAodGFnUmVnaXN0ZXJNb2RlID09IENvcHlCYXNlbGluZUNhbGxlZVNhdmVkUmVnaXN0
ZXJzRnJvbUJhc2VGcmFtZSAmJiBiYXNlbGluZUNhbGxlZVNhdmVzLmdldChlbnRyeS5yZWcoKSkp
IHsKLSAgICAgICAgICAgICAgICByZWdpc3RlclRvV3JpdGUgPSB0ZW1wOwotICAgICAgICAgICAg
ICAgIGxvYWRQdHIoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyLCBlbnRyeS5vZmZzZXQoKSksIHJlZ2lzdGVyVG9Xcml0ZSk7Ci0gICAgICAgICAgICB9
IGVsc2UKLSNlbmRpZgotICAgICAgICAgICAgICAgIHJlZ2lzdGVyVG9Xcml0ZSA9IGVudHJ5LnJl
ZygpLmdwcigpOwotCi0gICAgICAgICAgICBzdG9yZVB0cihyZWdpc3RlclRvV3JpdGUsIEFkZHJl
c3MoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIG9mZnNldFZpcnR1YWxSZWdpc3Rlci5vZmZzZXRJbkJ5
dGVzKCkgKyBlbnRyeS5vZmZzZXQoKSkpOwotICAgICAgICB9Ci0gICAgfQorICAgIHZvaWQgZW1p
dFNhdmVPckNvcHlMTEludEJhc2VsaW5lQ2FsbGVlU2F2ZXNGb3IoQ29kZUJsb2NrKiwgVmlydHVh
bFJlZ2lzdGVyIG9mZnNldFZpcnR1YWxSZWdpc3RlciwgUmVzdG9yZVRhZ1JlZ2lzdGVyTW9kZSwg
R1BSUmVnIHRlbXAxLCBHUFJSZWcgdGVtcDIsIEdQUlJlZyB0ZW1wMyk7CiAgICAgCiAgICAgdm9p
ZCBlbWl0UmVzdG9yZUNhbGxlZVNhdmVzRm9yKENvZGVCbG9jayogY29kZUJsb2NrKQogICAgIHsK
QEAgLTM4NiwxOCArMzMxLDcgQEAgcHVibGljOgogICAgICAgICBlbWl0UmVzdG9yZUNhbGxlZVNh
dmVzRm9yKGNhbGxlZVNhdmVzKTsKICAgICB9CiAKLSAgICB2b2lkIGVtaXRSZXN0b3JlQ2FsbGVl
U2F2ZXNGb3IoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGNhbGxlZVNhdmVzKQotICAgIHsK
LSAgICAgICAgUmVnaXN0ZXJTZXQgZG9udFJlc3RvcmVSZWdpc3RlcnMgPSBSZWdpc3RlclNldChS
ZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKSwgUmVnaXN0ZXJTZXQ6OmFsbEZQUnMoKSk7Ci0g
ICAgICAgIHVuc2lnbmVkIHJlZ2lzdGVyQ291bnQgPSBjYWxsZWVTYXZlcy0+c2l6ZSgpOwotICAg
ICAgICAKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkr
KykgewotICAgICAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCBlbnRyeSA9IGNhbGxlZVNhdmVzLT5h
dChpKTsKLSAgICAgICAgICAgIGlmIChkb250UmVzdG9yZVJlZ2lzdGVycy5nZXQoZW50cnkucmVn
KCkpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgbG9hZFB0cihBZGRy
ZXNzKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBlbnRyeS5vZmZzZXQoKSksIGVudHJ5LnJlZygpLmdw
cigpKTsKLSAgICAgICAgfQotICAgIH0KKyAgICB2b2lkIGVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXNG
b3IoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGNhbGxlZVNhdmVzKTsKIAogICAgIHZvaWQg
ZW1pdFNhdmVDYWxsZWVTYXZlcygpCiAgICAgewpAQCAtNDc4LDU4ICs0MTIsNyBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIHJlc3RvcmVDYWxsZWVTYXZlc0Zyb21FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNC
dWZmZXIoRW50cnlGcmFtZSomKTsKIAotICAgIHZvaWQgY29weUxMSW50QmFzZWxpbmVDYWxsZWVT
YXZlc0Zyb21GcmFtZU9yUmVnaXN0ZXJUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcihFbnRy
eUZyYW1lKiYgdG9wRW50cnlGcmFtZSwgY29uc3QgVGVtcFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0
ZXJzID0geyBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCkgfSkKLSAgICB7
Ci0jaWYgTlVNQkVSX09GX0NBTExFRV9TQVZFU19SRUdJU1RFUlMgPiAwCi0gICAgICAgIEdQUlJl
ZyB0ZW1wMSA9IHVzZWRSZWdpc3RlcnMuZ2V0RnJlZUdQUigwKTsKLSAgICAgICAgR1BSUmVnIHRl
bXAyID0gdXNlZFJlZ2lzdGVycy5nZXRGcmVlR1BSKDEpOwotICAgICAgICBGUFJSZWcgZnBUZW1w
ID0gdXNlZFJlZ2lzdGVycy5nZXRGcmVlRlBSKCk7Ci0gICAgICAgIEFTU0VSVCh0ZW1wMiAhPSBJ
bnZhbGlkR1BSUmVnKTsKLQotICAgICAgICAvLyBDb3B5IHNhdmVkIGNhbGxlZVNhdmVzIG9uIHN0
YWNrIG9yIHVuc2F2ZWQgY2FsbGVlU2F2ZXMgaW4gcmVnaXN0ZXIgdG8gdm0gY2FsbGVlU2F2ZSBi
dWZmZXIKLSAgICAgICAgbG9hZFB0cigmdG9wRW50cnlGcmFtZSwgdGVtcDEpOwotICAgICAgICBh
ZGRQdHIoVHJ1c3RlZEltbTMyKEVudHJ5RnJhbWU6OmNhbGxlZVNhdmVSZWdpc3RlcnNCdWZmZXJP
ZmZzZXQoKSksIHRlbXAxKTsKLQotICAgICAgICBSZWdpc3RlckF0T2Zmc2V0TGlzdCogYWxsQ2Fs
bGVlU2F2ZXMgPSBSZWdpc3RlclNldDo6dm1DYWxsZWVTYXZlUmVnaXN0ZXJPZmZzZXRzKCk7Ci0g
ICAgICAgIGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBjdXJyZW50Q2FsbGVlU2F2ZXMgPSAm
UmVnaXN0ZXJBdE9mZnNldExpc3Q6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCk7
Ci0gICAgICAgIFJlZ2lzdGVyU2V0IGRvbnRDb3B5UmVnaXN0ZXJzID0gUmVnaXN0ZXJTZXQ6OnN0
YWNrUmVnaXN0ZXJzKCk7Ci0gICAgICAgIHVuc2lnbmVkIHJlZ2lzdGVyQ291bnQgPSBhbGxDYWxs
ZWVTYXZlcy0+c2l6ZSgpOwotCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZWdp
c3RlckNvdW50OyBpKyspIHsKLSAgICAgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQgZW50cnkgPSBh
bGxDYWxsZWVTYXZlcy0+YXQoaSk7Ci0gICAgICAgICAgICBpZiAoZG9udENvcHlSZWdpc3RlcnMu
Z2V0KGVudHJ5LnJlZygpKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAg
IFJlZ2lzdGVyQXRPZmZzZXQqIGN1cnJlbnRGcmFtZUVudHJ5ID0gY3VycmVudENhbGxlZVNhdmVz
LT5maW5kKGVudHJ5LnJlZygpKTsKLQotICAgICAgICAgICAgaWYgKGVudHJ5LnJlZygpLmlzR1BS
KCkpIHsKLSAgICAgICAgICAgICAgICBHUFJSZWcgcmVnVG9TdG9yZTsKLSAgICAgICAgICAgICAg
ICBpZiAoY3VycmVudEZyYW1lRW50cnkpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gTG9hZCBj
YWxsZWVTYXZlIGZyb20gc3RhY2sgaW50byB0ZW1wIHJlZ2lzdGVyCi0gICAgICAgICAgICAgICAg
ICAgIHJlZ1RvU3RvcmUgPSB0ZW1wMjsKLSAgICAgICAgICAgICAgICAgICAgbG9hZFB0cihBZGRy
ZXNzKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBjdXJyZW50RnJhbWVFbnRyeS0+b2Zmc2V0KCkpLCBy
ZWdUb1N0b3JlKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAg
Ly8gSnVzdCBzdG9yZSBjYWxsZWUgc2F2ZSBkaXJlY3RseQotICAgICAgICAgICAgICAgICAgICBy
ZWdUb1N0b3JlID0gZW50cnkucmVnKCkuZ3ByKCk7Ci0KLSAgICAgICAgICAgICAgICBzdG9yZVB0
cihyZWdUb1N0b3JlLCBBZGRyZXNzKHRlbXAxLCBlbnRyeS5vZmZzZXQoKSkpOwotICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBGUFJSZWcgZnBSZWdUb1N0b3JlOwotICAgICAg
ICAgICAgICAgIGlmIChjdXJyZW50RnJhbWVFbnRyeSkgewotICAgICAgICAgICAgICAgICAgICAv
LyBMb2FkIGNhbGxlZVNhdmUgZnJvbSBzdGFjayBpbnRvIHRlbXAgcmVnaXN0ZXIKLSAgICAgICAg
ICAgICAgICAgICAgZnBSZWdUb1N0b3JlID0gZnBUZW1wOwotICAgICAgICAgICAgICAgICAgICBs
b2FkRG91YmxlKEFkZHJlc3MoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGN1cnJlbnRGcmFtZUVudHJ5
LT5vZmZzZXQoKSksIGZwUmVnVG9TdG9yZSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlCi0gICAg
ICAgICAgICAgICAgICAgIC8vIEp1c3Qgc3RvcmUgY2FsbGVlIHNhdmUgZGlyZWN0bHkKLSAgICAg
ICAgICAgICAgICAgICAgZnBSZWdUb1N0b3JlID0gZW50cnkucmVnKCkuZnByKCk7Ci0KLSAgICAg
ICAgICAgICAgICBzdG9yZURvdWJsZShmcFJlZ1RvU3RvcmUsIEFkZHJlc3ModGVtcDEsIGVudHJ5
Lm9mZnNldCgpKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSNlbHNlCi0gICAgICAgIFVO
VVNFRF9QQVJBTSh0b3BFbnRyeUZyYW1lKTsKLSAgICAgICAgVU5VU0VEX1BBUkFNKHVzZWRSZWdp
c3RlcnMpOwotI2VuZGlmCi0gICAgfQorICAgIHZvaWQgY29weUxMSW50QmFzZWxpbmVDYWxsZWVT
YXZlc0Zyb21GcmFtZU9yUmVnaXN0ZXJUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcihFbnRy
eUZyYW1lKiYsIGNvbnN0IFRlbXBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycyA9IHsgUmVnaXN0
ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpIH0pOwogCiAgICAgdm9pZCBlbWl0TWF0
ZXJpYWxpemVUYWdDaGVja1JlZ2lzdGVycygpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnNTcG9vbGVycy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzU3Bvb2xlcnMuaAkobm9uZXhpc3Rl
bnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVyc1Nwb29sZXJz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1OTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShKSVQp
CisKKyNpbmNsdWRlICJBc3NlbWJseUhlbHBlcnMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIE9wPgorY2xhc3MgQXNzZW1ibHlIZWxwZXJzOjpTcG9vbGVyIHsKK3B1
YmxpYzoKKyAgICB1c2luZyBKSVQgPSBBc3NlbWJseUhlbHBlcnM7CisKKyAgICBTcG9vbGVyKEpJ
VCYgaml0LCBHUFJSZWcgYmFzZUdQUikKKyAgICAgICAgOiBtX2ppdChqaXQpCisgICAgICAgICwg
bV9iYXNlR1BSKGJhc2VHUFIpCisgICAgeyB9CisKKyAgICB2b2lkIGhhbmRsZUdQUihjb25zdCBS
ZWdpc3RlckF0T2Zmc2V0JiBlbnRyeSkKKyAgICB7CisgICAgICAgIEFTU0VSVChlbnRyeS5yZWco
KS5pc0dQUigpKTsKKyAgICAgICAgaWYgY29uc3RleHByICghaGFzUGFpck9wKQorICAgICAgICAg
ICAgcmV0dXJuIG9wKCkuaGFuZGxlU2luZ2xlKGVudHJ5Lm9mZnNldCgpLCBlbnRyeS5yZWcoKS5n
cHIoKSk7CisKKyAgICAgICAgaWYgKCFtX2J1ZmZlcmVkRW50cnkucmVnKCkuaXNTZXQoKSkgewor
ICAgICAgICAgICAgbV9idWZmZXJlZEVudHJ5ID0gZW50cnk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyAgICAgICAgaWYgKGVudHJ5Lm9mZnNldCgpID09IG1fYnVmZmVyZWRFbnRy
eS5vZmZzZXQoKSArIHN0YXRpY19jYXN0PHB0cmRpZmZfdD4oZ3ByU2l6ZSkpIHsKKyAgICAgICAg
ICAgIG9wKCkuaGFuZGxlUGFpcihtX2J1ZmZlcmVkRW50cnkub2Zmc2V0KCksIG1fYnVmZmVyZWRF
bnRyeS5yZWcoKS5ncHIoKSwgZW50cnkucmVnKCkuZ3ByKCkpOworICAgICAgICAgICAgbV9idWZm
ZXJlZEVudHJ5ID0geyB9OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAg
IGlmIChtX2J1ZmZlcmVkRW50cnkub2Zmc2V0KCkgPT0gZW50cnkub2Zmc2V0KCkgKyBzdGF0aWNf
Y2FzdDxwdHJkaWZmX3Q+KGdwclNpemUpKSB7CisgICAgICAgICAgICBvcCgpLmhhbmRsZVBhaXIo
ZW50cnkub2Zmc2V0KCksIGVudHJ5LnJlZygpLmdwcigpLCBtX2J1ZmZlcmVkRW50cnkucmVnKCku
Z3ByKCkpOworICAgICAgICAgICAgbV9idWZmZXJlZEVudHJ5ID0geyB9OworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgZmx1c2hHUFIoKTsKKyAgICAgICAgaGFuZGxl
R1BSKGVudHJ5KTsKKyAgICB9CisKKyAgICB2b2lkIGZsdXNoR1BSKCkKKyAgICB7CisgICAgICAg
IGlmIGNvbnN0ZXhwciAoaGFzUGFpck9wKSB7CisgICAgICAgICAgICBpZiAobV9idWZmZXJlZEVu
dHJ5LnJlZygpLmlzU2V0KCkpIHsKKyAgICAgICAgICAgICAgICBvcCgpLmhhbmRsZVNpbmdsZSht
X2J1ZmZlcmVkRW50cnkub2Zmc2V0KCksIG1fYnVmZmVyZWRFbnRyeS5yZWcoKS5ncHIoKSk7Cisg
ICAgICAgICAgICAgICAgbV9idWZmZXJlZEVudHJ5ID0geyB9OworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorCisgICAgdm9pZCBoYW5kbGVGUFIoY29uc3QgUmVnaXN0ZXJBdE9mZnNl
dCYgZW50cnkpCisgICAgeworICAgICAgICBBU1NFUlQoZW50cnkucmVnKCkuaXNGUFIoKSk7Cisg
ICAgICAgIGlmIGNvbnN0ZXhwciAoIWhhc1BhaXJPcCkKKyAgICAgICAgICAgIHJldHVybiBvcCgp
LmhhbmRsZVNpbmdsZShlbnRyeS5vZmZzZXQoKSwgZW50cnkucmVnKCkuZnByKCkpOworCisgICAg
ICAgIGlmICghbV9idWZmZXJlZEVudHJ5LnJlZygpLmlzU2V0KCkpIHsKKyAgICAgICAgICAgIG1f
YnVmZmVyZWRFbnRyeSA9IGVudHJ5OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisg
ICAgICAgIGlmIChlbnRyeS5vZmZzZXQoKSA9PSBtX2J1ZmZlcmVkRW50cnkub2Zmc2V0KCkgKyBz
dGF0aWNfY2FzdDxwdHJkaWZmX3Q+KGZwclNpemUpKSB7CisgICAgICAgICAgICBvcCgpLmhhbmRs
ZVBhaXIobV9idWZmZXJlZEVudHJ5Lm9mZnNldCgpLCBtX2J1ZmZlcmVkRW50cnkucmVnKCkuZnBy
KCksIGVudHJ5LnJlZygpLmZwcigpKTsKKyAgICAgICAgICAgIG1fYnVmZmVyZWRFbnRyeSA9IHsg
fTsKKyAgICAgICAgfSBlbHNlIGlmIChtX2J1ZmZlcmVkRW50cnkub2Zmc2V0KCkgPT0gZW50cnku
b2Zmc2V0KCkgKyBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KGZwclNpemUpKSB7CisgICAgICAgICAg
ICBvcCgpLmhhbmRsZVBhaXIoZW50cnkub2Zmc2V0KCksIGVudHJ5LnJlZygpLmZwcigpLCBtX2J1
ZmZlcmVkRW50cnkucmVnKCkuZnByKCkpOworICAgICAgICAgICAgbV9idWZmZXJlZEVudHJ5ID0g
eyB9OworICAgICAgICB9CisKKyAgICAgICAgZmx1c2hGUFIoKTsKKyAgICAgICAgaGFuZGxlRlBS
KGVudHJ5KTsKKyAgICB9CisKKyAgICB2b2lkIGZsdXNoRlBSKCkKKyAgICB7CisgICAgICAgIGlm
IGNvbnN0ZXhwciAoaGFzUGFpck9wKSB7CisgICAgICAgICAgICBpZiAobV9idWZmZXJlZEVudHJ5
LnJlZygpLmlzU2V0KCkpIHsKKyAgICAgICAgICAgICAgICBvcCgpLmhhbmRsZVNpbmdsZShtX2J1
ZmZlcmVkRW50cnkub2Zmc2V0KCksIG1fYnVmZmVyZWRFbnRyeS5yZWcoKS5mcHIoKSk7CisgICAg
ICAgICAgICAgICAgbV9idWZmZXJlZEVudHJ5ID0geyB9OworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgfQorCitwcml2YXRlOgorICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGdwclNp
emUgPSBzaXplb2YoQ1BVUmVnaXN0ZXIpOworICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGZw
clNpemUgPSBzaXplb2YoZG91YmxlKTsKKyNpZiBDUFUoQVJNNjQpCisgICAgc3RhdGljIGNvbnN0
ZXhwciBib29sIGhhc1BhaXJPcCA9IHRydWU7CisjZWxzZQorICAgIHN0YXRpYyBjb25zdGV4cHIg
Ym9vbCBoYXNQYWlyT3AgPSBmYWxzZTsKKyNlbmRpZgorCisgICAgT3AmIG9wKCkgeyByZXR1cm4g
KnJlaW50ZXJwcmV0X2Nhc3Q8T3AqPih0aGlzKTsgfQorCitwcm90ZWN0ZWQ6CisgICAgSklUJiBt
X2ppdDsKKyAgICBHUFJSZWcgbV9iYXNlR1BSOworICAgIFJlZ2lzdGVyQXRPZmZzZXQgbV9idWZm
ZXJlZEVudHJ5OworfTsKKworY2xhc3MgQXNzZW1ibHlIZWxwZXJzOjpMb2FkUmVnU3Bvb2xlciA6
IHB1YmxpYyBBc3NlbWJseUhlbHBlcnM6OlNwb29sZXI8TG9hZFJlZ1Nwb29sZXI+IHsKKyAgICB1
c2luZyBCYXNlID0gU3Bvb2xlcjxMb2FkUmVnU3Bvb2xlcj47CisgICAgdXNpbmcgSklUID0gQmFz
ZTo6SklUOworcHVibGljOgorICAgIExvYWRSZWdTcG9vbGVyKEpJVCYgaml0LCBHUFJSZWcgYmFz
ZUdQUikKKyAgICAgICAgOiBCYXNlKGppdCwgYmFzZUdQUikKKyAgICB7IH0KKworICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBsb2FkR1BSKGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXQmIGVudHJ5KSB7IEJh
c2U6OmhhbmRsZUdQUihlbnRyeSk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZmx1c2hHUFIo
KSB7IEJhc2U6OmZsdXNoR1BSKCk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbG9hZEZQUihj
b25zdCBSZWdpc3RlckF0T2Zmc2V0JiBlbnRyeSkgeyBCYXNlOjpoYW5kbGVGUFIoZW50cnkpOyB9
CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGZsdXNoRlBSKCkgeyBCYXNlOjpmbHVzaEZQUigpOyB9
CisKKyNpZiBDUFUoQVJNNjQpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgUmVnVHlwZT4KKyAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgaGFuZGxlUGFpcihwdHJkaWZmX3Qgb2Zmc2V0LCBSZWdUeXBlIHJl
ZzEsIFJlZ1R5cGUgcmVnMikKKyAgICB7CisgICAgICAgIG1faml0LmxvYWRQYWlyNjQobV9iYXNl
R1BSLCBUcnVzdGVkSW1tMzIob2Zmc2V0KSwgcmVnMSwgcmVnMik7CisgICAgfQorI2Vsc2UKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBSZWdUeXBlPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBoYW5k
bGVQYWlyKHB0cmRpZmZfdCwgUmVnVHlwZSwgUmVnVHlwZSkgeyB9CisjZW5kaWYKKworICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBoYW5kbGVTaW5nbGUocHRyZGlmZl90IG9mZnNldCwgR1BSUmVnIHJl
ZykKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgbV9qaXQubG9hZDY0KEFkZHJl
c3MobV9iYXNlR1BSLCBvZmZzZXQpLCByZWcpOworI2Vsc2UKKyAgICAgICAgbV9qaXQubG9hZDMy
KEFkZHJlc3MobV9iYXNlR1BSLCBvZmZzZXQpLCByZWcpOworI2VuZGlmCisgICAgfQorCisgICAg
QUxXQVlTX0lOTElORSB2b2lkIGhhbmRsZVNpbmdsZShwdHJkaWZmX3Qgb2Zmc2V0LCBGUFJSZWcg
cmVnKQorICAgIHsKKyAgICAgICAgbV9qaXQubG9hZERvdWJsZShBZGRyZXNzKG1fYmFzZUdQUiwg
b2Zmc2V0KSwgcmVnKTsKKyAgICB9Cit9OworCitjbGFzcyBBc3NlbWJseUhlbHBlcnM6OlN0b3Jl
UmVnU3Bvb2xlciA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnM6OlNwb29sZXI8U3RvcmVSZWdTcG9v
bGVyPiB7CisgICAgdXNpbmcgQmFzZSA9IFNwb29sZXI8U3RvcmVSZWdTcG9vbGVyPjsKKyAgICB1
c2luZyBKSVQgPSB0eXBlbmFtZSBCYXNlOjpKSVQ7CitwdWJsaWM6CisgICAgU3RvcmVSZWdTcG9v
bGVyKEpJVCYgaml0LCBHUFJSZWcgYmFzZUdQUikKKyAgICAgICAgOiBCYXNlKGppdCwgYmFzZUdQ
UikKKyAgICB7IH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzdG9yZUdQUihjb25zdCBSZWdp
c3RlckF0T2Zmc2V0JiBlbnRyeSkgeyBCYXNlOjpoYW5kbGVHUFIoZW50cnkpOyB9CisgICAgQUxX
QVlTX0lOTElORSB2b2lkIGZsdXNoR1BSKCkgeyBCYXNlOjpmbHVzaEdQUigpOyB9CisgICAgQUxX
QVlTX0lOTElORSB2b2lkIHN0b3JlRlBSKGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXQmIGVudHJ5KSB7
IEJhc2U6OmhhbmRsZUZQUihlbnRyeSk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZmx1c2hG
UFIoKSB7IEJhc2U6OmZsdXNoRlBSKCk7IH0KKworI2lmIENQVShBUk02NCkKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBSZWdUeXBlPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBoYW5kbGVQYWlyKHB0
cmRpZmZfdCBvZmZzZXQsIFJlZ1R5cGUgcmVnMSwgUmVnVHlwZSByZWcyKQorICAgIHsKKyAgICAg
ICAgbV9qaXQuc3RvcmVQYWlyNjQocmVnMSwgcmVnMiwgbV9iYXNlR1BSLCBUcnVzdGVkSW1tMzIo
b2Zmc2V0KSk7CisgICAgfQorI2Vsc2UKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSZWdUeXBlPgor
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBoYW5kbGVQYWlyKHB0cmRpZmZfdCwgUmVnVHlwZSwgUmVn
VHlwZSkgeyB9CisjZW5kaWYKKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBoYW5kbGVTaW5nbGUo
cHRyZGlmZl90IG9mZnNldCwgR1BSUmVnIHJlZykKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkK
KyAgICAgICAgbV9qaXQuc3RvcmU2NChyZWcsIEFkZHJlc3MobV9iYXNlR1BSLCBvZmZzZXQpKTsK
KyNlbHNlCisgICAgICAgIG1faml0LnN0b3JlMzIocmVnLCBBZGRyZXNzKG1fYmFzZUdQUiwgb2Zm
c2V0KSk7CisjZW5kaWYKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgaGFuZGxlU2lu
Z2xlKHB0cmRpZmZfdCBvZmZzZXQsIEZQUlJlZyByZWcpCisgICAgeworICAgICAgICBtX2ppdC5z
dG9yZURvdWJsZShyZWcsIEFkZHJlc3MobV9iYXNlR1BSLCBvZmZzZXQpKTsKKyAgICB9Cit9Owor
CisvLyBXb3JrYXJvdW5kIGZvciBnY2MncyBpbmJpbGl0eSB0byBzcGVjaWFsaXplIHRlbXBsYXRl
IGZ1bmN0aW9ucyBmb3IgdGVtcGxhdGUKKy8vIGZ1bmN0aW9ucyBkZWNsYXJlZCB3aXRoaW4gdGhl
IHNhbWUgY2xhc3MuCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZWdUeXBlPgorc3RydWN0IFJlZ0Rpc3Bh
dGNoIHsKKyAgICBzdGF0aWMgUmVnVHlwZSBnZXQoUmVnKTsKK307CisKK3RlbXBsYXRlPD4KK3N0
cnVjdCBSZWdEaXNwYXRjaDxHUFJSZWc+IHsKKyAgICBzdGF0aWMgR1BSUmVnIGdldChSZWcgcmVn
KSB7IHJldHVybiByZWcuZ3ByKCk7IH0KK307CisKK3RlbXBsYXRlPD4KK3N0cnVjdCBSZWdEaXNw
YXRjaDxGUFJSZWc+IHsKKyAgICBzdGF0aWMgRlBSUmVnIGdldChSZWcgcmVnKSB7IHJldHVybiBy
ZWcuZnByKCk7IH0KK307CisKK2NsYXNzIEFzc2VtYmx5SGVscGVyczo6Q29weVNwb29sZXIgewor
cHVibGljOgorICAgIHVzaW5nIEpJVCA9IEFzc2VtYmx5SGVscGVyczsKKyAgICB1c2luZyBBZGRy
ZXNzID0gSklUOjpBZGRyZXNzOworICAgIHVzaW5nIFRydXN0ZWRJbW0zMiA9IEpJVDo6VHJ1c3Rl
ZEltbTMyOworCisgICAgc3RydWN0IFNvdXJjZSB7CisgICAgICAgIGVudW0gY2xhc3MgVHlwZSB7
IEJ1ZmZlck9mZnNldCwgUmVnLCBFbmNvZGVkSlNWYWx1ZSB9IHR5cGU7CisgICAgICAgIGludCBv
ZmZzZXQ7CisgICAgICAgIFJlZyByZWc7CisgICAgICAgIEVuY29kZWRKU1ZhbHVlIHZhbHVlOwor
CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJlZ1R5cGU+IFJlZ1R5cGUgZ2V0UmVnKCkgeyBy
ZXR1cm4gUmVnRGlzcGF0Y2g8UmVnVHlwZT46OmdldChyZWcpOyB9OworICAgIH07CisKKyAgICBl
bnVtIGNsYXNzIEJ1ZmZlclJlZ3MgeworICAgICAgICBOZWVkUHJlc2VydmF0aW9uLAorICAgICAg
ICBBbGxvd01vZGlmaWNhdGlvbgorICAgIH07CisKKyAgICBDb3B5U3Bvb2xlcihCdWZmZXJSZWdz
IGF0dHJpYnV0ZSwgSklUJiBqaXQsIEdQUlJlZyBzcmNCdWZmZXIsIEdQUlJlZyBkZXN0QnVmZmVy
LCBHUFJSZWcgdGVtcDEsIEdQUlJlZyB0ZW1wMiwgRlBSUmVnIGZwVGVtcDEgPSBJbnZhbGlkRlBS
UmVnLCBGUFJSZWcgZnBUZW1wMiA9IEludmFsaWRGUFJSZWcpCisgICAgICAgIDogbV9qaXQoaml0
KQorICAgICAgICAsIG1fc3JjQnVmZmVyR1BSKHNyY0J1ZmZlcikKKyAgICAgICAgLCBtX2RzdEJ1
ZmZlckdQUihkZXN0QnVmZmVyKQorICAgICAgICAsIG1fdGVtcDFHUFIodGVtcDEpCisgICAgICAg
ICwgbV90ZW1wMkdQUih0ZW1wMikKKyAgICAgICAgLCBtX3RlbXAxRlBSKGZwVGVtcDEpCisgICAg
ICAgICwgbV90ZW1wMkZQUihmcFRlbXAyKQorICAgICAgICAsIG1fYnVmZmVyUmVnc0F0dHIoYXR0
cmlidXRlKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByIChoYXNQYWlyT3AgJiYgIWlzQVJN
NjQoKSkKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7IC8vIHVuc3Vw
cG9ydGVkIGFyY2hpdGVjdHVyZS4KKyAgICB9CisKKyAgICBDb3B5U3Bvb2xlcihKSVQmIGppdCwg
R1BSUmVnIHNyY0J1ZmZlciwgR1BSUmVnIGRlc3RCdWZmZXIsIEdQUlJlZyB0ZW1wMSwgR1BSUmVn
IHRlbXAyLCBGUFJSZWcgZnBUZW1wMSA9IEludmFsaWRGUFJSZWcsIEZQUlJlZyBmcFRlbXAyID0g
SW52YWxpZEZQUlJlZykKKyAgICAgICAgOiBDb3B5U3Bvb2xlcihCdWZmZXJSZWdzOjpOZWVkUHJl
c2VydmF0aW9uLCBqaXQsIHNyY0J1ZmZlciwgZGVzdEJ1ZmZlciwgdGVtcDEsIHRlbXAyLCBmcFRl
bXAxLCBmcFRlbXAyKQorICAgIHsgfQorCitwcml2YXRlOgorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFJlZ1R5cGU+IFJlZ1R5cGUgdGVtcDEoKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBS
ZWdUeXBlPiBSZWdUeXBlIHRlbXAyKCkgY29uc3Q7CisKKyAgICB0ZW1wbGF0ZTw+IEdQUlJlZyB0
ZW1wMTxHUFJSZWc+KCkgY29uc3QgeyByZXR1cm4gbV90ZW1wMUdQUjsgfQorICAgIHRlbXBsYXRl
PD4gR1BSUmVnIHRlbXAyPEdQUlJlZz4oKSBjb25zdCB7IHJldHVybiBtX3RlbXAyR1BSOyB9Cisg
ICAgdGVtcGxhdGU8PiBGUFJSZWcgdGVtcDE8RlBSUmVnPigpIGNvbnN0IHsgcmV0dXJuIG1fdGVt
cDFGUFI7IH0KKyAgICB0ZW1wbGF0ZTw+IEZQUlJlZyB0ZW1wMjxGUFJSZWc+KCkgY29uc3QgeyBy
ZXR1cm4gbV90ZW1wMkZQUjsgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgUmVnVHlwZT4gUmVn
VHlwZSYgcmVnVG9TdG9yZSgpOworICAgIHRlbXBsYXRlPD4gR1BSUmVnJiByZWdUb1N0b3JlPEdQ
UlJlZz4oKSB7IHJldHVybiBtX2dwclRvU3RvcmU7IH0KKyAgICB0ZW1wbGF0ZTw+IEZQUlJlZyYg
cmVnVG9TdG9yZTxGUFJSZWc+KCkgeyByZXR1cm4gbV9mcHJUb1N0b3JlOyB9CisKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBSZWdUeXBlPiBzdGF0aWMgY29uc3RleHByIFJlZ1R5cGUgaW52YWxpZCgp
OworICAgIHRlbXBsYXRlPD4gY29uc3RleHByIEdQUlJlZyBpbnZhbGlkPEdQUlJlZz4oKSB7IHJl
dHVybiBJbnZhbGlkR1BSUmVnOyB9CisgICAgdGVtcGxhdGU8PiBjb25zdGV4cHIgRlBSUmVnIGlu
dmFsaWQ8RlBSUmVnPigpIHsgcmV0dXJuIEludmFsaWRGUFJSZWc7IH0KKworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFJlZ1R5cGU+CisgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgcmVnU2l6ZSgpCisg
ICAgeworICAgICAgICByZXR1cm4gc3RkOjppc19zYW1lPFJlZ1R5cGUsIEdQUlJlZz46OnZhbHVl
ID8gc2l6ZW9mKENQVVJlZ2lzdGVyKSA6IHNpemVvZihkb3VibGUpOworICAgIH0KKworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFJlZ1R5cGU+IHN0YXRpYyBib29sIGlzVmFsaWRMb2FkUGFpckltbShp
bnQpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgUmVnVHlwZT4gc3Rh
dGljIGJvb2wgaXNWYWxpZFN0b3JlUGFpckltbShpbnQpIHsgcmV0dXJuIGZhbHNlOyB9CisKKyNp
ZiBDUFUoQVJNNjQpCisgICAgdGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIGJvb2wgaXNWYWxpZExv
YWRQYWlySW1tPEdQUlJlZz4oaW50IG9mZnNldCkKKyAgICB7CisgICAgICAgIHJldHVybiBBUk02
NEFzc2VtYmxlcjo6aXNWYWxpZExEUEltbTw2ND4ob2Zmc2V0KTsKKyAgICB9CisKKyAgICB0ZW1w
bGF0ZTw+IEFMV0FZU19JTkxJTkUgYm9vbCBpc1ZhbGlkTG9hZFBhaXJJbW08RlBSUmVnPihpbnQg
b2Zmc2V0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIEFSTTY0QXNzZW1ibGVyOjppc1ZhbGlkTERQ
RlBJbW08NjQ+KG9mZnNldCk7CisgICAgfQorCisgICAgdGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5F
IGJvb2wgaXNWYWxpZFN0b3JlUGFpckltbTxHUFJSZWc+KGludCBvZmZzZXQpCisgICAgeworICAg
ICAgICByZXR1cm4gQVJNNjRBc3NlbWJsZXI6OmlzVmFsaWRTVFBJbW08NjQ+KG9mZnNldCk7Cisg
ICAgfQorCisgICAgdGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIGJvb2wgaXNWYWxpZFN0b3JlUGFp
ckltbTxGUFJSZWc+KGludCBvZmZzZXQpCisgICAgeworICAgICAgICByZXR1cm4gQVJNNjRBc3Nl
bWJsZXI6OmlzVmFsaWRTVFBGUEltbTw2ND4ob2Zmc2V0KTsKKyAgICB9CisjZW5kaWYgLy8gQ1BV
KEFSTTY0KQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgUmVnVHlwZT4KKyAgICB2b2lkIGxvYWQo
aW50IG9mZnNldCkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAoIWhhc1BhaXJPcCkgewor
ICAgICAgICAgICAgYXV0byYgcmVnVG9TdG9yZSA9IHRoaXMtPnJlZ1RvU3RvcmU8UmVnVHlwZT4o
KTsKKyAgICAgICAgICAgIHJlZ1RvU3RvcmUgPSB0ZW1wMTxSZWdUeXBlPigpOworICAgICAgICAg
ICAgbG9hZChvZmZzZXQsIHJlZ1RvU3RvcmUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisKKyAgICAgICAgYXV0byYgc291cmNlID0gbV9zb3VyY2VzW21fY3VycmVudFNvdXJjZSsr
XTsKKyAgICAgICAgc291cmNlLnR5cGUgPSBTb3VyY2U6OlR5cGU6OkJ1ZmZlck9mZnNldDsKKyAg
ICAgICAgc291cmNlLm9mZnNldCA9IG9mZnNldDsKKyAgICB9CisKKyNpZiBVU0UoSlNWQUxVRTY0
KQorICAgIHZvaWQgbW92ZShFbmNvZGVkSlNWYWx1ZSB2YWx1ZSkKKyAgICB7CisgICAgICAgIGlm
IGNvbnN0ZXhwciAoIWhhc1BhaXJPcCkgeworICAgICAgICAgICAgYXV0byYgcmVnVG9TdG9yZSA9
IHRoaXMtPnJlZ1RvU3RvcmU8R1BSUmVnPigpOworICAgICAgICAgICAgcmVnVG9TdG9yZSA9IHRl
bXAxPEdQUlJlZz4oKTsKKyAgICAgICAgICAgIG1vdmUodmFsdWUsIHJlZ1RvU3RvcmUpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgYXV0byYgc291cmNlID0gbV9z
b3VyY2VzW21fY3VycmVudFNvdXJjZSsrXTsKKyAgICAgICAgc291cmNlLnR5cGUgPSBTb3VyY2U6
OlR5cGU6OkVuY29kZWRKU1ZhbHVlOworICAgICAgICBzb3VyY2UudmFsdWUgPSB2YWx1ZTsKKyAg
ICB9CisjZW5kaWYKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJlZ1R5cGU+CisgICAgdm9pZCBj
b3B5KFJlZ1R5cGUgcmVnKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByICghaGFzUGFpck9w
KSB7CisgICAgICAgICAgICBhdXRvJiByZWdUb1N0b3JlID0gdGhpcy0+cmVnVG9TdG9yZTxSZWdU
eXBlPigpOworICAgICAgICAgICAgcmVnVG9TdG9yZSA9IHJlZzsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8mIHNvdXJjZSA9IG1fc291cmNlc1ttX2N1cnJl
bnRTb3VyY2UrK107CisgICAgICAgIHNvdXJjZS50eXBlID0gU291cmNlOjpUeXBlOjpSZWc7Cisg
ICAgICAgIHNvdXJjZS5yZWcgPSByZWc7CisgICAgfTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFJlZ1R5cGU+CisgICAgdm9pZCBzdG9yZShpbnQgc3RvcmVPZmZzZXQpCisgICAgeworICAgICAg
ICBpZiBjb25zdGV4cHIgKCFoYXNQYWlyT3ApIHsKKyAgICAgICAgICAgIGF1dG8gcmVnVG9TdG9y
ZSA9IHRoaXMtPnJlZ1RvU3RvcmU8UmVnVHlwZT4oKTsKKyAgICAgICAgICAgIHN0b3JlKHJlZ1Rv
U3RvcmUsIHN0b3JlT2Zmc2V0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIGNvbnN0IGJvb2wgcmVnVHlwZUlzR1BSID0gc3RkOjppc19zYW1lPFJlZ1R5cGUsIEdQ
UlJlZz46OnZhbHVlOworCisgICAgICAgIGlmIChtX2N1cnJlbnRTb3VyY2UgPCAyKSB7CisgICAg
ICAgICAgICBtX2RlZmVycmVkU3RvcmVPZmZzZXQgPSBzdG9yZU9mZnNldDsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIFJlZ1R5cGUgcmVnVG9TdG9yZTEgPSBpbnZh
bGlkPFJlZ1R5cGU+KCk7CisgICAgICAgIFJlZ1R5cGUgcmVnVG9TdG9yZTIgPSBpbnZhbGlkPFJl
Z1R5cGU+KCk7CisgICAgICAgIGF1dG8mIHNvdXJjZTEgPSBtX3NvdXJjZXNbMF07CisgICAgICAg
IGF1dG8mIHNvdXJjZTIgPSBtX3NvdXJjZXNbMV07CisgICAgICAgIGF1dG8gc3JjT2Zmc2V0MSA9
IG1fc291cmNlc1swXS5vZmZzZXQgLSBtX3NyY09mZnNldEFkanVzdG1lbnQ7CisgICAgICAgIGF1
dG8gc3JjT2Zmc2V0MiA9IG1fc291cmNlc1sxXS5vZmZzZXQgLSBtX3NyY09mZnNldEFkanVzdG1l
bnQ7CisgICAgICAgIGNvbnN0ZXhwciBpbnQgcmVnaXN0ZXJTaXplID0gcmVnU2l6ZTxSZWdUeXBl
PigpOworCisgICAgICAgIGlmIChzb3VyY2UxLnR5cGUgPT0gU291cmNlOjpUeXBlOjpCdWZmZXJP
ZmZzZXQgJiYgc291cmNlMi50eXBlID09IFNvdXJjZTo6VHlwZTo6QnVmZmVyT2Zmc2V0KSB7Cisg
ICAgICAgICAgICByZWdUb1N0b3JlMSA9IHRlbXAxPFJlZ1R5cGU+KCk7CisgICAgICAgICAgICBy
ZWdUb1N0b3JlMiA9IHRlbXAyPFJlZ1R5cGU+KCk7CisKKyAgICAgICAgICAgIGludCBvZmZzZXRE
ZWx0YSA9IGFicyhzcmNPZmZzZXQxIC0gc3JjT2Zmc2V0Mik7CisgICAgICAgICAgICBpbnQgbWlu
T2Zmc2V0ID0gc3RkOjptaW4oc3JjT2Zmc2V0MSwgc3JjT2Zmc2V0Mik7CisgICAgICAgICAgICBi
b29sIGlzVmFsaWRPZmZzZXQgPSBpc1ZhbGlkTG9hZFBhaXJJbW08UmVnVHlwZT4obWluT2Zmc2V0
KTsKKworICAgICAgICAgICAgaWYgKG9mZnNldERlbHRhICE9IHJlZ2lzdGVyU2l6ZSB8fCAoIWlz
VmFsaWRPZmZzZXQgJiYgbV9idWZmZXJSZWdzQXR0ciAhPSBCdWZmZXJSZWdzOjpBbGxvd01vZGlm
aWNhdGlvbikpIHsKKyAgICAgICAgICAgICAgICBsb2FkKHNyY09mZnNldDEsIHJlZ1RvU3RvcmUx
KTsKKyAgICAgICAgICAgICAgICBsb2FkKHNyY09mZnNldDIsIHJlZ1RvU3RvcmUyKTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KSB7Cisg
ICAgICAgICAgICAgICAgICAgIEFTU0VSVChtX2J1ZmZlclJlZ3NBdHRyID09IEJ1ZmZlclJlZ3M6
OkFsbG93TW9kaWZpY2F0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgbV9zcmNPZmZzZXRBZGp1
c3RtZW50ICs9IG1pbk9mZnNldDsKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQuYWRkUHRyKFRy
dXN0ZWRJbW0zMihtaW5PZmZzZXQpLCBtX3NyY0J1ZmZlckdQUik7CisKKyAgICAgICAgICAgICAg
ICAgICAgc3JjT2Zmc2V0MSAtPSBtaW5PZmZzZXQ7CisgICAgICAgICAgICAgICAgICAgIHNyY09m
ZnNldDIgLT0gbWluT2Zmc2V0OworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoaXNWYWxpZExv
YWRQYWlySW1tPFJlZ1R5cGU+KHN0ZDo6bWluKHNyY09mZnNldDEsIHNyY09mZnNldDIpKSk7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChzcmNPZmZzZXQxIDwgc3JjT2Zm
c2V0MikKKyAgICAgICAgICAgICAgICAgICAgbG9hZFBhaXIoc3JjT2Zmc2V0MSwgcmVnVG9TdG9y
ZTEsIHJlZ1RvU3RvcmUyKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
ICAgIGxvYWRQYWlyKHNyY09mZnNldDIsIHJlZ1RvU3RvcmUyLCByZWdUb1N0b3JlMSk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoc291cmNlMS50eXBlID09IFNvdXJjZTo6VHlw
ZTo6QnVmZmVyT2Zmc2V0KSB7CisgICAgICAgICAgICByZWdUb1N0b3JlMSA9IHRlbXAxPFJlZ1R5
cGU+KCk7CisgICAgICAgICAgICBsb2FkKHNyY09mZnNldDEsIHJlZ1RvU3RvcmUxKTsKKyAgICAg
ICAgICAgIGlmIChzb3VyY2UyLnR5cGUgPT0gU291cmNlOjpUeXBlOjpFbmNvZGVkSlNWYWx1ZSkg
eworICAgICAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAocmVnVHlwZUlzR1BSKSB7CisgICAgICAg
ICAgICAgICAgICAgIHJlZ1RvU3RvcmUyID0gdGVtcDI8UmVnVHlwZT4oKTsKKyAgICAgICAgICAg
ICAgICAgICAgbW92ZShzb3VyY2UyLnZhbHVlLCByZWdUb1N0b3JlMik7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgcmVnVG9TdG9yZTIgPSBz
b3VyY2UyLmdldFJlZzxSZWdUeXBlPigpOworCisgICAgICAgIH0gZWxzZSBpZiAoc291cmNlMi50
eXBlID09IFNvdXJjZTo6VHlwZTo6QnVmZmVyT2Zmc2V0KSB7CisgICAgICAgICAgICBpZiAoc291
cmNlMS50eXBlID09IFNvdXJjZTo6VHlwZTo6RW5jb2RlZEpTVmFsdWUpIHsKKyAgICAgICAgICAg
ICAgICBpZiBjb25zdGV4cHIgKHJlZ1R5cGVJc0dQUikgeworICAgICAgICAgICAgICAgICAgICBy
ZWdUb1N0b3JlMSA9IHRlbXAxPFJlZ1R5cGU+KCk7CisgICAgICAgICAgICAgICAgICAgIG1vdmUo
c291cmNlMS52YWx1ZSwgcmVnVG9TdG9yZTEpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHJlZ1RvU3RvcmUxID0gc291cmNlMS5nZXRSZWc8
UmVnVHlwZT4oKTsKKyAgICAgICAgICAgIHJlZ1RvU3RvcmUyID0gdGVtcDI8UmVnVHlwZT4oKTsK
KyAgICAgICAgICAgIGxvYWQoc3JjT2Zmc2V0MiwgcmVnVG9TdG9yZTIpOworCisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICBpZiAoc291cmNlMS50eXBlID09IFNvdXJjZTo6VHlwZTo6RW5j
b2RlZEpTVmFsdWUpIHsKKyAgICAgICAgICAgICAgICBpZiBjb25zdGV4cHIgKHJlZ1R5cGVJc0dQ
UikgeworICAgICAgICAgICAgICAgICAgICByZWdUb1N0b3JlMSA9IHRlbXAxPFJlZ1R5cGU+KCk7
CisgICAgICAgICAgICAgICAgICAgIG1vdmUoc291cmNlMS52YWx1ZSwgcmVnVG9TdG9yZTEpOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHJl
Z1RvU3RvcmUxID0gc291cmNlMS5nZXRSZWc8UmVnVHlwZT4oKTsKKworICAgICAgICAgICAgaWYg
KHNvdXJjZTIudHlwZSA9PSBTb3VyY2U6OlR5cGU6OkVuY29kZWRKU1ZhbHVlKSB7CisgICAgICAg
ICAgICAgICAgaWYgY29uc3RleHByIChyZWdUeXBlSXNHUFIpIHsKKyAgICAgICAgICAgICAgICAg
ICAgcmVnVG9TdG9yZTIgPSB0ZW1wMjxSZWdUeXBlPigpOworICAgICAgICAgICAgICAgICAgICBt
b3ZlKHNvdXJjZTIudmFsdWUsIHJlZ1RvU3RvcmUyKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICByZWdUb1N0b3JlMiA9IHNvdXJjZTIuZ2V0
UmVnPFJlZ1R5cGU+KCk7CisgICAgICAgIH0KKworICAgICAgICBpbnQgZHN0T2Zmc2V0MSA9IG1f
ZGVmZXJyZWRTdG9yZU9mZnNldCAtIG1fZHN0T2Zmc2V0QWRqdXN0bWVudDsKKyAgICAgICAgaW50
IGRzdE9mZnNldDIgPSBzdG9yZU9mZnNldCAtIG1fZHN0T2Zmc2V0QWRqdXN0bWVudDsKKworICAg
ICAgICBpbnQgb2Zmc2V0RGVsdGEgPSBhYnMoZHN0T2Zmc2V0MSAtIGRzdE9mZnNldDIpOworICAg
ICAgICBpbnQgbWluT2Zmc2V0ID0gc3RkOjptaW4oZHN0T2Zmc2V0MSwgZHN0T2Zmc2V0Mik7Cisg
ICAgICAgIGJvb2wgaXNWYWxpZE9mZnNldCA9IGlzVmFsaWRTdG9yZVBhaXJJbW08UmVnVHlwZT4o
bWluT2Zmc2V0KTsKKworICAgICAgICBpZiAob2Zmc2V0RGVsdGEgIT0gcmVnaXN0ZXJTaXplIHx8
ICghaXNWYWxpZE9mZnNldCAmJiBtX2J1ZmZlclJlZ3NBdHRyICE9IEJ1ZmZlclJlZ3M6OkFsbG93
TW9kaWZpY2F0aW9uKSkgeworICAgICAgICAgICAgc3RvcmUocmVnVG9TdG9yZTEsIGRzdE9mZnNl
dDEpOworICAgICAgICAgICAgc3RvcmUocmVnVG9TdG9yZTIsIGRzdE9mZnNldDIpOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KSB7CisgICAgICAgICAg
ICAgICAgQVNTRVJUKG1fYnVmZmVyUmVnc0F0dHIgPT0gQnVmZmVyUmVnczo6QWxsb3dNb2RpZmlj
YXRpb24pOworICAgICAgICAgICAgICAgIG1fZHN0T2Zmc2V0QWRqdXN0bWVudCArPSBtaW5PZmZz
ZXQ7CisgICAgICAgICAgICAgICAgbV9qaXQuYWRkUHRyKFRydXN0ZWRJbW0zMihtaW5PZmZzZXQp
LCBtX2RzdEJ1ZmZlckdQUik7CisKKyAgICAgICAgICAgICAgICBkc3RPZmZzZXQxIC09IG1pbk9m
ZnNldDsKKyAgICAgICAgICAgICAgICBkc3RPZmZzZXQyIC09IG1pbk9mZnNldDsKKyAgICAgICAg
ICAgICAgICBBU1NFUlQoaXNWYWxpZFN0b3JlUGFpckltbTxSZWdUeXBlPihzdGQ6Om1pbihkc3RP
ZmZzZXQxLCBkc3RPZmZzZXQyKSkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGRz
dE9mZnNldDEgPCBkc3RPZmZzZXQyKQorICAgICAgICAgICAgICAgIHN0b3JlUGFpcihyZWdUb1N0
b3JlMSwgcmVnVG9TdG9yZTIsIGRzdE9mZnNldDEpOworICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIHN0b3JlUGFpcihyZWdUb1N0b3JlMiwgcmVnVG9TdG9yZTEsIGRzdE9mZnNldDIp
OworICAgICAgICB9CisKKyAgICAgICAgbV9jdXJyZW50U291cmNlID0gMDsKKyAgICB9OworCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgUmVnVHlwZT4KKyAgICB2b2lkIGZsdXNoKCkKKyAgICB7Cisg
ICAgICAgIGlmIGNvbnN0ZXhwciAoIWhhc1BhaXJPcCkKKyAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICBpZiAoIW1fY3VycmVudFNvdXJjZSkKKyAgICAgICAgICAgIHJldHVybjsgLy8gTm90
aGluZyB0byBmbHVzaC4KKworICAgICAgICBBU1NFUlQobV9jdXJyZW50U291cmNlID09IDEpOwor
CisgICAgICAgIFJlZ1R5cGUgcmVnVG9TdG9yZSA9IGludmFsaWQ8UmVnVHlwZT4oKTsKKyAgICAg
ICAgYXV0byYgc291cmNlID0gbV9zb3VyY2VzWzBdOworICAgICAgICBhdXRvJiBzcmNPZmZzZXQg
PSBzb3VyY2Uub2Zmc2V0OworICAgICAgICBjb25zdCBib29sIHJlZ1R5cGVJc0dQUiA9IHN0ZDo6
aXNfc2FtZTxSZWdUeXBlLCBHUFJSZWc+Ojp2YWx1ZTsKKworICAgICAgICBpZiAoc291cmNlLnR5
cGUgPT0gU291cmNlOjpUeXBlOjpCdWZmZXJPZmZzZXQpIHsKKyAgICAgICAgICAgIHJlZ1RvU3Rv
cmUgPSB0ZW1wMTxSZWdUeXBlPigpOworICAgICAgICAgICAgbG9hZChzcmNPZmZzZXQgLSBtX3Ny
Y09mZnNldEFkanVzdG1lbnQsIHJlZ1RvU3RvcmUpOworICAgICAgICB9IGVsc2UgaWYgKHNvdXJj
ZS50eXBlID09IFNvdXJjZTo6VHlwZTo6UmVnKQorICAgICAgICAgICAgcmVnVG9TdG9yZSA9IHNv
dXJjZS5nZXRSZWc8UmVnVHlwZT4oKTsKKyAgICAgICAgZWxzZSBpZiBjb25zdGV4cHIgKHJlZ1R5
cGVJc0dQUikgeworICAgICAgICAgICAgcmVnVG9TdG9yZSA9IHRlbXAxPFJlZ1R5cGU+KCk7Cisg
ICAgICAgICAgICBtb3ZlKHNvdXJjZS52YWx1ZSwgcmVnVG9TdG9yZSk7CisgICAgICAgIH0KKwor
ICAgICAgICBzdG9yZShyZWdUb1N0b3JlLCBtX2RlZmVycmVkU3RvcmVPZmZzZXQgLSBtX2RzdE9m
ZnNldEFkanVzdG1lbnQpOworICAgICAgICBtX2N1cnJlbnRTb3VyY2UgPSAwOworICAgIH0KKwor
cHVibGljOgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBsb2FkR1BSKGludCBzcmNPZmZzZXQpIHsg
bG9hZDxHUFJSZWc+KHNyY09mZnNldCk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgY29weUdQ
UihHUFJSZWcgZ3ByKSB7IGNvcHk8R1BSUmVnPihncHIpOyB9CisgICAgQUxXQVlTX0lOTElORSB2
b2lkIG1vdmVDb25zdGFudChFbmNvZGVkSlNWYWx1ZSB2YWx1ZSkgeyBtb3ZlKHZhbHVlKTsgfQor
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzdG9yZUdQUihpbnQgZHN0T2Zmc2V0KSB7IHN0b3JlPEdQ
UlJlZz4oZHN0T2Zmc2V0KTsgfQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBmbHVzaEdQUigpIHsg
Zmx1c2g8R1BSUmVnPigpOyB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbG9hZEZQUihpbnQg
c3JjT2Zmc2V0KSB7IGxvYWQ8RlBSUmVnPihzcmNPZmZzZXQpOyB9CisgICAgQUxXQVlTX0lOTElO
RSB2b2lkIGNvcHlGUFIoRlBSUmVnIGdwcikgeyBjb3B5PEZQUlJlZz4oZ3ByKTsgfQorICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBzdG9yZUZQUihpbnQgZHN0T2Zmc2V0KSB7IHN0b3JlPEZQUlJlZz4o
ZHN0T2Zmc2V0KTsgfQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBmbHVzaEZQUigpIHsgZmx1c2g8
RlBSUmVnPigpOyB9CisKK3Byb3RlY3RlZDoKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBtb3ZlKEVuY29kZWRKU1ZhbHVlIHZhbHVlLCBHUFJSZWcgZGVzdCkKKyAg
ICB7CisgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTY0KHZhbHVlKSwgZGVzdCk7CisgICAg
fQorI2VuZGlmCisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbG9hZChpbnQgb2Zmc2V0LCBHUFJS
ZWcgZGVzdCkKKyAgICB7CisgICAgICAgIG1faml0LmxvYWRQdHIoQWRkcmVzcyhtX3NyY0J1ZmZl
ckdQUiwgb2Zmc2V0KSwgZGVzdCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHN0
b3JlKEdQUlJlZyBzcmMsIGludCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2ppdC5zdG9yZVB0
cihzcmMsIEFkZHJlc3MobV9kc3RCdWZmZXJHUFIsIG9mZnNldCkpOworICAgIH0KKworICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBsb2FkKGludCBvZmZzZXQsIEZQUlJlZyBkZXN0KQorICAgIHsKKyAg
ICAgICAgbV9qaXQubG9hZERvdWJsZShBZGRyZXNzKG1fc3JjQnVmZmVyR1BSLCBvZmZzZXQpLCBk
ZXN0KTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc3RvcmUoRlBSUmVnIHNyYywg
aW50IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1faml0LnN0b3JlRG91YmxlKHNyYywgQWRkcmVz
cyhtX2RzdEJ1ZmZlckdQUiwgb2Zmc2V0KSk7CisgICAgfQorCisjaWYgQ1BVKEFSTTY0KQorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFJlZ1R5cGU+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGxvYWRQ
YWlyKGludCBvZmZzZXQsIFJlZ1R5cGUgZGVzdDEsIFJlZ1R5cGUgZGVzdDIpCisgICAgeworICAg
ICAgICBtX2ppdC5sb2FkUGFpcjY0KG1fc3JjQnVmZmVyR1BSLCBUcnVzdGVkSW1tMzIob2Zmc2V0
KSwgZGVzdDEsIGRlc3QyKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSZWdUeXBl
PgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzdG9yZVBhaXIoUmVnVHlwZSBzcmMxLCBSZWdUeXBl
IHNyYzIsIGludCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2ppdC5zdG9yZVBhaXI2NChzcmMx
LCBzcmMyLCBtX2RzdEJ1ZmZlckdQUiwgVHJ1c3RlZEltbTMyKG9mZnNldCkpOworICAgIH0KKwor
ICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBoYXNQYWlyT3AgPSB0cnVlOworI2Vsc2UKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBSZWdUeXBlPiBBTFdBWVNfSU5MSU5FIHZvaWQgbG9hZFBhaXIoaW50
LCBSZWdUeXBlLCBSZWdUeXBlKSB7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSZWdUeXBlPiBB
TFdBWVNfSU5MSU5FIHZvaWQgc3RvcmVQYWlyKFJlZ1R5cGUsIFJlZ1R5cGUsIGludCkgeyB9CisK
KyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaGFzUGFpck9wID0gZmFsc2U7CisjZW5kaWYKKwor
ICAgIEpJVCYgbV9qaXQ7CisKKyAgICBHUFJSZWcgbV9zcmNCdWZmZXJHUFI7CisgICAgR1BSUmVn
IG1fZHN0QnVmZmVyR1BSOworICAgIEdQUlJlZyBtX3RlbXAxR1BSOworICAgIEdQUlJlZyBtX3Rl
bXAyR1BSOworICAgIEZQUlJlZyBtX3RlbXAxRlBSOworICAgIEZQUlJlZyBtX3RlbXAyRlBSOwor
Citwcml2YXRlOgorICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IGdwclNpemUgPSBzdGF0aWNfY2Fz
dDxpbnQ+KHNpemVvZihDUFVSZWdpc3RlcikpOworICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IGZw
clNpemUgPSBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihkb3VibGUpKTsKKworICAgIC8vIFRoZXNl
IHBvaW50IHRvIHdoaWNoIHJlZ2lzdGVyIHRvIHVzZS4KKyAgICBHUFJSZWcgbV9ncHJUb1N0b3Jl
IHsgSW52YWxpZEdQUlJlZyB9OyAvLyBPbmx5IHVzZWQgd2hlbiAhaGFzUGFpck9wLgorICAgIEZQ
UlJlZyBtX2ZwclRvU3RvcmUgeyBJbnZhbGlkRlBSUmVnIH07IC8vIE9ubHkgdXNlZCB3aGVuICFo
YXNQYWlyT3AuCisKKyAgICBCdWZmZXJSZWdzIG1fYnVmZmVyUmVnc0F0dHI7CisgICAgU291cmNl
IG1fc291cmNlc1syXTsKKyAgICB1bnNpZ25lZCBtX2N1cnJlbnRTb3VyY2UgeyAwIH07CisgICAg
aW50IG1fc3JjT2Zmc2V0QWRqdXN0bWVudCB7IDAgfTsKKyAgICBpbnQgbV9kc3RPZmZzZXRBZGp1
c3RtZW50IHsgMCB9OworICAgIGludCBtX2RlZmVycmVkU3RvcmVPZmZzZXQ7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShKSVQpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuY3Bw
CShyZXZpc2lvbiAyNzg4ODYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NjcmF0Y2hS
ZWdpc3RlckFsbG9jYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCw2ICsyOCw3IEBACiAK
ICNpZiBFTkFCTEUoSklUKQogCisjaW5jbHVkZSAiQXNzZW1ibHlIZWxwZXJzU3Bvb2xlcnMuaCIK
ICNpbmNsdWRlICJNYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbC5oIgogI2luY2x1ZGUgIlZN
LmgiCiAKQEAgLTEwMSw3ICsxMDIsNyBAQCB0eXBlbmFtZSBCYW5rSW5mbzo6UmVnaXN0ZXJUeXBl
IFNjcmF0Y2hSCiBHUFJSZWcgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjphbGxvY2F0ZVNjcmF0
Y2hHUFIoKSB7IHJldHVybiBhbGxvY2F0ZVNjcmF0Y2g8R1BSSW5mbz4oKTsgfQogRlBSUmVnIFNj
cmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6YWxsb2NhdGVTY3JhdGNoRlBSKCkgeyByZXR1cm4gYWxs
b2NhdGVTY3JhdGNoPEZQUkluZm8+KCk7IH0KIAotU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpQ
cmVzZXJ2ZWRTdGF0ZSBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OnByZXNlcnZlUmV1c2VkUmVn
aXN0ZXJzQnlQdXNoaW5nKE1hY3JvQXNzZW1ibGVyJiBqaXQsIEV4dHJhU3RhY2tTcGFjZSBleHRy
YVN0YWNrU3BhY2UpCitTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OlByZXNlcnZlZFN0YXRlIFNj
cmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6cHJlc2VydmVSZXVzZWRSZWdpc3RlcnNCeVB1c2hpbmco
QXNzZW1ibHlIZWxwZXJzJiBqaXQsIEV4dHJhU3RhY2tTcGFjZSBleHRyYVN0YWNrU3BhY2UpCiB7
CiAgICAgaWYgKCFkaWRSZXVzZVJlZ2lzdGVycygpKQogICAgICAgICByZXR1cm4gUHJlc2VydmVk
U3RhdGUoMCwgZXh0cmFTdGFja1NwYWNlKTsKQEAgLTEyNCw3ICsxMjUsNyBAQCBTY3JhdGNoUmVn
aXN0ZXJBbGxvY2F0b3I6OlByZXNlcnZlZFN0YXRlCiAgICAgcmV0dXJuIFByZXNlcnZlZFN0YXRl
KHN0YWNrQWRqdXN0bWVudFNpemUsIGV4dHJhU3RhY2tTcGFjZSk7CiB9CiAKLXZvaWQgU2NyYXRj
aFJlZ2lzdGVyQWxsb2NhdG9yOjpyZXN0b3JlUmV1c2VkUmVnaXN0ZXJzQnlQb3BwaW5nKE1hY3Jv
QXNzZW1ibGVyJiBqaXQsIGNvbnN0IFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6UHJlc2VydmVk
U3RhdGUmIHByZXNlcnZlZFN0YXRlKQordm9pZCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OnJl
c3RvcmVSZXVzZWRSZWdpc3RlcnNCeVBvcHBpbmcoQXNzZW1ibHlIZWxwZXJzJiBqaXQsIGNvbnN0
IFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6UHJlc2VydmVkU3RhdGUmIHByZXNlcnZlZFN0YXRl
KQogewogICAgIFJFTEVBU0VfQVNTRVJUKHByZXNlcnZlZFN0YXRlKTsKICAgICBpZiAoIWRpZFJl
dXNlUmVnaXN0ZXJzKCkpCkBAIC0xNjEsNyArMTYyLDcgQEAgdW5zaWduZWQgU2NyYXRjaFJlZ2lz
dGVyQWxsb2NhdG9yOjpkZXNpcgogICAgIHJldHVybiB1c2VkUmVnaXN0ZXJzRm9yQ2FsbCgpLm51
bWJlck9mU2V0UmVnaXN0ZXJzKCkgKiBzaXplb2YoSlNWYWx1ZSk7CiB9CiAKLXVuc2lnbmVkIFNj
cmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6cHJlc2VydmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbChN
YWNyb0Fzc2VtYmxlciYgaml0LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgdW5z
aWduZWQgZXh0cmFCeXRlc0F0VG9wT2ZTdGFjaykKK3Vuc2lnbmVkIFNjcmF0Y2hSZWdpc3RlckFs
bG9jYXRvcjo6cHJlc2VydmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbChBc3NlbWJseUhlbHBlcnMm
IGppdCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIHVuc2lnbmVkIGV4dHJhQnl0
ZXNBdFRvcE9mU3RhY2spCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoZXh0cmFCeXRlc0F0VG9wT2ZT
dGFjayAlIHNpemVvZih2b2lkKikgPT0gMCk7CiAgICAgaWYgKCF1c2VkUmVnaXN0ZXJzLm51bWJl
ck9mU2V0UmVnaXN0ZXJzKCkpCkBAIC0xNzQsMjYgKzE3NSwzMSBAQCB1bnNpZ25lZCBTY3JhdGNo
UmVnaXN0ZXJBbGxvY2F0b3I6OnByZXNlCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tMzIoc3RhY2tPZmZzZXQpLAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVy
UmVnaXN0ZXIpOwogCisgICAgQXNzZW1ibHlIZWxwZXJzOjpTdG9yZVJlZ1Nwb29sZXIgc3Bvb2xl
cihqaXQsIE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisKICAgICB1bnNp
Z25lZCBjb3VudCA9IDA7CiAgICAgZm9yIChHUFJSZWcgcmVnID0gTWFjcm9Bc3NlbWJsZXI6OmZp
cnN0UmVnaXN0ZXIoKTsgcmVnIDw9IE1hY3JvQXNzZW1ibGVyOjpsYXN0UmVnaXN0ZXIoKTsgcmVn
ID0gTWFjcm9Bc3NlbWJsZXI6Om5leHRSZWdpc3RlcihyZWcpKSB7CiAgICAgICAgIGlmICh1c2Vk
UmVnaXN0ZXJzLmdldChyZWcpKSB7Ci0gICAgICAgICAgICBqaXQuc3RvcmVQdHIocmVnLCBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIs
IGV4dHJhQnl0ZXNBdFRvcE9mU3RhY2sgKyAoY291bnQgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUp
KSkpOworICAgICAgICAgICAgc3Bvb2xlci5zdG9yZUdQUih7IHJlZywgc3RhdGljX2Nhc3Q8cHRy
ZGlmZl90PihleHRyYUJ5dGVzQXRUb3BPZlN0YWNrICsgKGNvdW50ICogc2l6ZW9mKEVuY29kZWRK
U1ZhbHVlKSkpIH0pOwogICAgICAgICAgICAgY291bnQrKzsKICAgICAgICAgfQogICAgIH0KKyAg
ICBzcG9vbGVyLmZsdXNoR1BSKCk7CisKICAgICBmb3IgKEZQUlJlZyByZWcgPSBNYWNyb0Fzc2Vt
Ymxlcjo6Zmlyc3RGUFJlZ2lzdGVyKCk7IHJlZyA8PSBNYWNyb0Fzc2VtYmxlcjo6bGFzdEZQUmVn
aXN0ZXIoKTsgcmVnID0gTWFjcm9Bc3NlbWJsZXI6Om5leHRGUFJlZ2lzdGVyKHJlZykpIHsKICAg
ICAgICAgaWYgKHVzZWRSZWdpc3RlcnMuZ2V0KHJlZykpIHsKLSAgICAgICAgICAgIGppdC5zdG9y
ZURvdWJsZShyZWcsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKE1hY3JvQXNzZW1ibGVyOjpzdGFj
a1BvaW50ZXJSZWdpc3RlciwgZXh0cmFCeXRlc0F0VG9wT2ZTdGFjayArIChjb3VudCAqIHNpemVv
ZihFbmNvZGVkSlNWYWx1ZSkpKSk7CisgICAgICAgICAgICBzcG9vbGVyLnN0b3JlRlBSKHsgcmVn
LCBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KGV4dHJhQnl0ZXNBdFRvcE9mU3RhY2sgKyAoY291bnQg
KiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSkgfSk7CiAgICAgICAgICAgICBjb3VudCsrOwogICAg
ICAgICB9CiAgICAgfQorICAgIHNwb29sZXIuZmx1c2hGUFIoKTsKIAogICAgIFJFTEVBU0VfQVNT
RVJUKGNvdW50ID09IHVzZWRSZWdpc3RlcnMubnVtYmVyT2ZTZXRSZWdpc3RlcnMoKSk7CiAKICAg
ICByZXR1cm4gc3RhY2tPZmZzZXQ7CiB9CiAKLXZvaWQgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9y
OjpyZXN0b3JlUmVnaXN0ZXJzRnJvbVN0YWNrRm9yQ2FsbChNYWNyb0Fzc2VtYmxlciYgaml0LCBj
b25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgY29uc3QgUmVnaXN0ZXJTZXQmIGlnbm9y
ZSwgdW5zaWduZWQgbnVtYmVyT2ZTdGFja0J5dGVzVXNlZEZvclJlZ2lzdGVyUHJlc2VydmF0aW9u
LCB1bnNpZ25lZCBleHRyYUJ5dGVzQXRUb3BPZlN0YWNrKQordm9pZCBTY3JhdGNoUmVnaXN0ZXJB
bGxvY2F0b3I6OnJlc3RvcmVSZWdpc3RlcnNGcm9tU3RhY2tGb3JDYWxsKEFzc2VtYmx5SGVscGVy
cyYgaml0LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgY29uc3QgUmVnaXN0ZXJT
ZXQmIGlnbm9yZSwgdW5zaWduZWQgbnVtYmVyT2ZTdGFja0J5dGVzVXNlZEZvclJlZ2lzdGVyUHJl
c2VydmF0aW9uLCB1bnNpZ25lZCBleHRyYUJ5dGVzQXRUb3BPZlN0YWNrKQogewogICAgIFJFTEVB
U0VfQVNTRVJUKGV4dHJhQnl0ZXNBdFRvcE9mU3RhY2sgJSBzaXplb2Yodm9pZCopID09IDApOwog
ICAgIGlmICghdXNlZFJlZ2lzdGVycy5udW1iZXJPZlNldFJlZ2lzdGVycygpKSB7CkBAIC0yMDEs
MjEgKzIwNywyNiBAQCB2b2lkIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6cmVzdG9yZVJlCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBBc3NlbWJseUhlbHBlcnM6OkxvYWRSZWdTcG9v
bGVyIHNwb29sZXIoaml0LCBNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwor
CiAgICAgdW5zaWduZWQgY291bnQgPSAwOwogICAgIGZvciAoR1BSUmVnIHJlZyA9IE1hY3JvQXNz
ZW1ibGVyOjpmaXJzdFJlZ2lzdGVyKCk7IHJlZyA8PSBNYWNyb0Fzc2VtYmxlcjo6bGFzdFJlZ2lz
dGVyKCk7IHJlZyA9IE1hY3JvQXNzZW1ibGVyOjpuZXh0UmVnaXN0ZXIocmVnKSkgewogICAgICAg
ICBpZiAodXNlZFJlZ2lzdGVycy5nZXQocmVnKSkgewogICAgICAgICAgICAgaWYgKCFpZ25vcmUu
Z2V0KHJlZykpCi0gICAgICAgICAgICAgICAgaml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MoTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBleHRyYUJ5dGVzQXRU
b3BPZlN0YWNrICsgKHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgKiBjb3VudCkpLCByZWcpOworICAg
ICAgICAgICAgICAgIHNwb29sZXIubG9hZEdQUih7IHJlZywgc3RhdGljX2Nhc3Q8cHRyZGlmZl90
PihleHRyYUJ5dGVzQXRUb3BPZlN0YWNrICsgKHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgKiBjb3Vu
dCkpIH0pOwogICAgICAgICAgICAgY291bnQrKzsKICAgICAgICAgfQogICAgIH0KKyAgICBzcG9v
bGVyLmZsdXNoR1BSKCk7CisKICAgICBmb3IgKEZQUlJlZyByZWcgPSBNYWNyb0Fzc2VtYmxlcjo6
Zmlyc3RGUFJlZ2lzdGVyKCk7IHJlZyA8PSBNYWNyb0Fzc2VtYmxlcjo6bGFzdEZQUmVnaXN0ZXIo
KTsgcmVnID0gTWFjcm9Bc3NlbWJsZXI6Om5leHRGUFJlZ2lzdGVyKHJlZykpIHsKICAgICAgICAg
aWYgKHVzZWRSZWdpc3RlcnMuZ2V0KHJlZykpIHsKICAgICAgICAgICAgIGlmICghaWdub3JlLmdl
dChyZWcpKQotICAgICAgICAgICAgICAgIGppdC5sb2FkRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3RlciwgZXh0cmFCeXRlc0F0
VG9wT2ZTdGFjayArIChzaXplb2YoRW5jb2RlZEpTVmFsdWUpICogY291bnQpKSwgcmVnKTsKKyAg
ICAgICAgICAgICAgICBzcG9vbGVyLmxvYWRGUFIoeyByZWcsIHN0YXRpY19jYXN0PHB0cmRpZmZf
dD4oZXh0cmFCeXRlc0F0VG9wT2ZTdGFjayArIChzaXplb2YoRW5jb2RlZEpTVmFsdWUpICogY291
bnQpKSB9KTsKICAgICAgICAgICAgIGNvdW50Kys7CiAgICAgICAgIH0KICAgICB9CisgICAgc3Bv
b2xlci5mbHVzaEZQUigpOwogCiAgICAgdW5zaWduZWQgc3RhY2tPZmZzZXQgPSAodXNlZFJlZ2lz
dGVycy5udW1iZXJPZlNldFJlZ2lzdGVycygpKSAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSk7CiAg
ICAgc3RhY2tPZmZzZXQgKz0gZXh0cmFCeXRlc0F0VG9wT2ZTdGFjazsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuaAko
cmV2aXNpb24gMjc4ODg2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TY3JhdGNoUmVn
aXN0ZXJBbGxvY2F0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTIsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNywxMiArMjcsMTIgQEAKIAog
I2lmIEVOQUJMRShKSVQpCiAKLSNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgogI2luY2x1ZGUg
IlJlZ2lzdGVyU2V0LmgiCiAjaW5jbHVkZSAiVGVtcFJlZ2lzdGVyU2V0LmgiCiAKIG5hbWVzcGFj
ZSBKU0MgewogCitjbGFzcyBBc3NlbWJseUhlbHBlcnM7CiBzdHJ1Y3QgU2NyYXRjaEJ1ZmZlcjsK
IAogLy8gVGhpcyBjbGFzcyBwcm92aWRlcyBhIGxvdy1sZXZlbCByZWdpc3RlciBhbGxvY2F0b3Ig
Zm9yIHVzZSBpbiBzdHVicy4KQEAgLTg0LDE1ICs4NCwxNSBAQCBwdWJsaWM6CiAgICAgICAgIEV4
dHJhU3RhY2tTcGFjZSBleHRyYVN0YWNrU3BhY2VSZXF1aXJlbWVudDsKICAgICB9OwogCi0gICAg
UHJlc2VydmVkU3RhdGUgcHJlc2VydmVSZXVzZWRSZWdpc3RlcnNCeVB1c2hpbmcoTWFjcm9Bc3Nl
bWJsZXImIGppdCwgRXh0cmFTdGFja1NwYWNlKTsKLSAgICB2b2lkIHJlc3RvcmVSZXVzZWRSZWdp
c3RlcnNCeVBvcHBpbmcoTWFjcm9Bc3NlbWJsZXImIGppdCwgY29uc3QgUHJlc2VydmVkU3RhdGUm
KTsKKyAgICBQcmVzZXJ2ZWRTdGF0ZSBwcmVzZXJ2ZVJldXNlZFJlZ2lzdGVyc0J5UHVzaGluZyhB
c3NlbWJseUhlbHBlcnMmIGppdCwgRXh0cmFTdGFja1NwYWNlKTsKKyAgICB2b2lkIHJlc3RvcmVS
ZXVzZWRSZWdpc3RlcnNCeVBvcHBpbmcoQXNzZW1ibHlIZWxwZXJzJiBqaXQsIGNvbnN0IFByZXNl
cnZlZFN0YXRlJik7CiAgICAgCiAgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVyc0ZvckNhbGwo
KSBjb25zdDsKICAgICAKICAgICB1bnNpZ25lZCBkZXNpcmVkU2NyYXRjaEJ1ZmZlclNpemVGb3JD
YWxsKCkgY29uc3Q7Ci0gICAgCi0gICAgc3RhdGljIHVuc2lnbmVkIHByZXNlcnZlUmVnaXN0ZXJz
VG9TdGFja0ZvckNhbGwoTWFjcm9Bc3NlbWJsZXImIGppdCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVz
ZWRSZWdpc3RlcnMsIHVuc2lnbmVkIGV4dHJhUGFkZGluZ0luQnl0ZXMpOwotICAgIHN0YXRpYyB2
b2lkIHJlc3RvcmVSZWdpc3RlcnNGcm9tU3RhY2tGb3JDYWxsKE1hY3JvQXNzZW1ibGVyJiBqaXQs
IGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBjb25zdCBSZWdpc3RlclNldCYgaWdu
b3JlLCB1bnNpZ25lZCBudW1iZXJPZlN0YWNrQnl0ZXNVc2VkRm9yUmVnaXN0ZXJQcmVzZXJ2YXRp
b24sIHVuc2lnbmVkIGV4dHJhUGFkZGluZ0luQnl0ZXMpOworCisgICAgc3RhdGljIHVuc2lnbmVk
IHByZXNlcnZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGwoQXNzZW1ibHlIZWxwZXJzJiBqaXQsIGNv
bnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCB1bnNpZ25lZCBleHRyYVBhZGRpbmdJbkJ5
dGVzKTsKKyAgICBzdGF0aWMgdm9pZCByZXN0b3JlUmVnaXN0ZXJzRnJvbVN0YWNrRm9yQ2FsbChB
c3NlbWJseUhlbHBlcnMmIGppdCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIGNv
bnN0IFJlZ2lzdGVyU2V0JiBpZ25vcmUsIHVuc2lnbmVkIG51bWJlck9mU3RhY2tCeXRlc1VzZWRG
b3JSZWdpc3RlclByZXNlcnZhdGlvbiwgdW5zaWduZWQgZXh0cmFQYWRkaW5nSW5CeXRlcyk7CiAK
IHByaXZhdGU6CiAgICAgUmVnaXN0ZXJTZXQgbV91c2VkUmVnaXN0ZXJzOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCShyZXZp
c2lvbiAyNzg4ODYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5l
cmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjk4MSwxMCArMjk4MSw3IEBAIGF1dG8gQWly
SVJHZW5lcmF0b3I6OmFkZFJldHVybihjb25zdCBDb24KICAgICBCMzo6UGF0Y2hwb2ludFZhbHVl
KiBwYXRjaCA9IGFkZFBhdGNocG9pbnQoQjM6OlZvaWQpOwogICAgIHBhdGNoLT5zZXRHZW5lcmF0
b3IoW10gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFy
YW1zJiBwYXJhbXMpIHsKICAgICAgICAgYXV0byBjYWxsZWVTYXZlcyA9IHBhcmFtcy5jb2RlKCku
Y2FsbGVlU2F2ZVJlZ2lzdGVyQXRPZmZzZXRMaXN0KCk7Ci0KLSAgICAgICAgZm9yIChSZWdpc3Rl
ckF0T2Zmc2V0IGNhbGxlZVNhdmUgOiBjYWxsZWVTYXZlcykKLSAgICAgICAgICAgIGppdC5sb2Fk
NjRUb1JlZyhDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIs
IGNhbGxlZVNhdmUub2Zmc2V0KCkpLCBjYWxsZWVTYXZlLnJlZygpKTsKLQorICAgICAgICBqaXQu
ZW1pdFJlc3RvcmUoY2FsbGVlU2F2ZXMpOwogICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9n
dWUoKTsKICAgICAgICAgaml0LnJldCgpOwogICAgIH0pOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMjc4ODg2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0y
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
Ni0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjI4NCwxMCArMjI4NCw3IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6
YWRkUmV0dXJuKGNvbnN0IENvbnQKICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNoID0gbV9wcm9j
LmFkZDxQYXRjaHBvaW50VmFsdWU+KEIzOjpWb2lkLCBvcmlnaW4oKSk7CiAgICAgcGF0Y2gtPnNl
dEdlbmVyYXRvcihbXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVy
YXRpb25QYXJhbXMmIHBhcmFtcykgewogICAgICAgICBhdXRvIGNhbGxlZVNhdmVzID0gcGFyYW1z
LmNvZGUoKS5jYWxsZWVTYXZlUmVnaXN0ZXJBdE9mZnNldExpc3QoKTsKLQotICAgICAgICBmb3Ig
KFJlZ2lzdGVyQXRPZmZzZXQgY2FsbGVlU2F2ZSA6IGNhbGxlZVNhdmVzKQotICAgICAgICAgICAg
aml0LmxvYWQ2NFRvUmVnKENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVS
ZWdpc3RlciwgY2FsbGVlU2F2ZS5vZmZzZXQoKSksIGNhbGxlZVNhdmUucmVnKCkpOwotCisgICAg
ICAgIGppdC5lbWl0UmVzdG9yZShjYWxsZWVTYXZlcyk7CiAgICAgICAgIGppdC5lbWl0RnVuY3Rp
b25FcGlsb2d1ZSgpOwogICAgICAgICBqaXQucmV0KCk7CiAgICAgfSk7Cg==
</data>
<flag name="commit-queue"
          id="453263"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431479</attachid>
            <date>2021-06-15 14:17:30 -0700</date>
            <delta_ts>2021-06-15 14:24:28 -0700</delta_ts>
            <desc>take 3: testing workaround for gcc being weak sauce.</desc>
            <filename>bug-227039.patch</filename>
            <type>text/plain</type>
            <size>107477</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjc4ODg2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2OCBA
QAorMjAyMS0wNi0xNSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
VXNlIGxkcCBhbmQgc3RwIG1vcmUgZm9yIHNhdmluZyAvIHJlc3RvcmluZyByZWdpc3RlcnMgb24g
QVJNNjQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjcwMzkKKyAgICAgICAgcmRhcjovLzc5MzU0NzM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgc3Bvb2xlciBh
YnN0cmFjdGlvbiBpbiBBc3NlbWJseUhlbHBlcnMuICBUaGUgc3Bvb2xlcgorICAgICAgICBiYXNp
Y2FsbHkgYmF0Y2hlcyB1cCBsb2FkIC8gc3RvcmUgb3BlcmF0aW9ucyBhbmQgZW1pdCB0aGVtIGFz
IHBhaXIgaW5zdHJ1Y3Rpb25zCisgICAgICAgIGlmIGFwcHJvcHJpYXRlLgorCisgICAgICAgIFRo
ZXJlIGFyZSA0IHNwb29sZXIgY2xhc3NlczoKKyAgICAgICAgYS4gU3Bvb2xlcgorICAgICAgICAg
ICAtIHRlbXBsYXRlIGJhc2UgY2xhc3MgZm9yIExvYWRSZWdTcG9vbGVyIGFuZCBTdG9yZVJlZ1Nw
b29sZXIuCisgICAgICAgICAgIC0gZW5jYXBzdWxhdGVzIHRoZSBiYXRjaGluZyBzdHJhdGVneSBm
b3IgbG9hZCAvIHN0b3JlIHBhaXJzLgorCisgICAgICAgIGIuIExvYWRSZWdTcG9vbGVyIC0gc3Bl
Y2lhbGl6ZXMgU3Bvb2xlciB0byBoYW5kbGUgbG9hZCBwYWlycy4KKyAgICAgICAgYi4gU3RvcmVS
ZWdTcG9vbGVyIC0gc3BlY2lhbGl6ZXMgU3Bvb2xlciB0byBoYW5kbGUgc3RvcmUgcGFpcnMuCisK
KyAgICAgICAgZC4gQ29weVNwb29sZXIKKyAgICAgICAgICAgLSBoYW5kbGVzIG1hdGNoaW5nIGxv
YWRzIHdpdGggc3RvcmVzLgorICAgICAgICAgICAtIHRyaWVzIHRvIGVtaXQgbG9hZHMgYXMgbG9h
ZCBwYWlycyBpZiBwb3NzaWJsZS4KKyAgICAgICAgICAgLSB0cmllcyB0byBlbW90IHN0b3JlcyBh
cyBzdG9yZSBwYWlycyBpZiBwb3NzaWJsZS4KKyAgICAgICAgICAgLSBlbnN1cmVzIHRoYXQgcHJl
LXJlcXVpc2l0ZSBsb2FkcyBhcmUgZW1pdHRlZCBiZWZvcmUgc3RvcmVzIGFyZSBlbWl0dGVkLgor
ICAgICAgICAgICAtIG90aGVyIHRoYW4gbG9hZHMsIGFsc28gc3VwcG9ydCBjb25zdGFudHMgYW5k
IHJlZ2lzdGVycyBhcyBzb3VyY2VzIG9mIHZhbHVlcworICAgICAgICAgICAgIHRvIGJlIHN0b3Jl
ZC4gIFRoaXMgaXMgdXNlZnVsIGluIE9TUiBleGl0IHJhbXBzIHdoZXJlIHdlIG1heSBtYXRlcmlh
bGl6ZSBhCisgICAgICAgICAgICAgc3RhY2sgdmFsdWUgdG8gc3RvcmUgZnJvbSBjb25zdGFudHMg
b3IgcmVnaXN0ZXJzIGluIGFkZGl0aW9uIHRvIHZhbHVlcyB3ZQorICAgICAgICAgICAgIGxvYWQg
ZnJvbSB0aGUgb2xkIHN0YWNrIGZyYW1lIG9yIGZyb20gYSBzY3JhdGNoIGJ1ZmZlci4KKworICAg
ICAgICBJbiB0aGlzIHBhdGNoLCB3ZSBhbHNvIGRvIHRoZSBmb2xsb3dpbmc6CisKKyAgICAgICAg
MS4gVXNlIHNwb29sZXJzIGluIG1hbnkgcGxhY2VzIHNvIHRoYXQgd2UgY2FuIGVtaXQgbG9hZCAv
IHN0b3JlIHBhaXJzIGluc3RlYWQgb2YKKyAgICAgICAgICAgc2luZ2xlIGxvYWQgLyBzdG9yZXMu
ICBUaGlzIGhlbHBzIHNocmluayBKSVQgY29kZSBzaWRlLCBhbmQgYWxzbyBwb3RlbnRpYWxseQor
ICAgICAgICAgICBpbXByb3ZlcyBwZXJmb3JtYW5jZS4KKworICAgICAgICAyLiBJbiBERkc6Ok9T
UkV4aXQ6OmNvbXBpbGVFeGl0KCksIHdlIHVzZWQgdG8gcmVjb3ZlciBjb25zdGFudHMgaW50byBh
IHNjcmF0Y2gKKyAgICAgICAgICAgYnVmZmVyLCBhbmQgdGhlbiBsYXRlciwgbG9hZCBmcm9tIHRo
YXQgc2NyYXRjaCBidWZmZXIgdG8gc3RvcmUgaW50byB0aGUKKyAgICAgICAgICAgbmV3IHN0YWNr
IGZyYW1lKHMpLgorCisgICAgICAgICAgIFRoaXMgcGF0Y2ggY2hhbmdlcyBpdCBzbyB0aGF0IHdl
IGRlZmVyIGNvbnN0YW50IHJlY292ZXJ5IHVudGlsIHRoZSBmaW5hbAorICAgICAgICAgICBsb29w
IHdoZXJlIHdlIHN0b3JlIHRoZSByZWNvdmVyZWQgdmFsdWUgZGlyZWN0bHkgaW50byB0aGUgbmV3
IHN0YWNrIGZyYW1lKHMpLgorICAgICAgICAgICBUaGlzIHNhdmVzIHVzIHRoZSB3b3JrIChhbmQg
SklUIGNvZGUgc3BhY2UpIGZvciBzdG9yaW5nIGludG8gYSBzY3JhdGNoIGJ1ZmZlcgorICAgICAg
ICAgICBhbmQgdGhlbiByZWxvYWRpbmcgZnJvbSB0aGUgc2NyYXRjaCBidWZmZXIuCisKKyAgICAg
ICAgICAgVGhlcmUgaXMgb25lIGV4Y2VwdGlvbjogdG1wIHZhbHVlcyB1c2VkIGJ5IGFjdGl2ZSBj
aGVja3BvaW50cy4gIFdlIG5lZWQgdG8gY2FsbAorICAgICAgICAgICBvcGVyYXRpb25NYXRlcmlh
bGl6ZU9TUkV4aXRTaWRlU3RhdGUoKSB0byBtYXRlcmlhbGl6ZSB0aGUgYWN0aXZlIGNoZWNrcG9p
bnQKKyAgICAgICAgICAgc2lkZSBzdGF0ZSBiZWZvcmUgdGhlIGZpbmFsIGxvb3Agd2hlcmUgd2Ug
bm93IHJlY292ZXIgY29uc3RhbnRzLiAgSGVuY2UsIHdlCisgICAgICAgICAgIG5lZWQgdGhlc2Ug
dG1wIHZhbHVlcyByZWNvdmVyZWQgYmVmb3JlIGhhbmQuCisKKyAgICAgICAgICAgU28sIHdlIGNo
ZWNrIHVwZnJvbnQgaWYgd2UgaGF2ZSBhY3RpdmUgY2hlY2twb2ludCBzaWRlIHN0YXRlIHRvIG1h
dGVyaWFsaXplLgorICAgICAgICAgICBJZiBzbywgd2UnbGwgZWFnZXJseSByZWNvdmVyIHRoZSBj
b25zdGFudHMgZm9yIGluaXRpYWxpemluZyB0aG9zZSB0bXBzLgorCisgICAgICAgICAgIFdlIGFs
c28gdXNlIHRoZSBDb3B5U3Bvb2xlciBpbiB0aGUgZmluYWwgbG9vcCB0byBlbWl0IGxvYWQgLyBz
dG9yZSBwYWlycyBmb3IKKyAgICAgICAgICAgZmlsbGluZyBpbiB0aGUgbmV3IHN0YWNrIGZyYW1l
KHMpLgorCisgICAgICAgICAgIE9uZSBtb3JlIHRoaW5nOiBpdCB0dXJucyBvdXQgdGhhdCB0aGUg
dmFzdCBtYWpvcml0eSBvZiBjb25zdGFudHMgdG8gYmUgcmVjb3ZlcmVkCisgICAgICAgICAgIGlz
IHNpbXBseSB0aGUgdW5kZWZpbmVkIHZhbHVlLiAgU28sIGFzIGFuIG9wdGltaXphdGlvbiwgdGhl
IGZpbmFsIGxvb3Aga2VlcHMKKyAgICAgICAgICAgdGhlIHVuZGVmaW5lZCB2YWx1ZSBpbiBhIHJl
Z2lzdGVyLCBhbmQgaGFzIHRoZSBzcG9vbGVyIHN0b3JlIGRpcmVjdGx5IGZyb20KKyAgICAgICAg
ICAgdGhhdCByZWdpc3RlciB3aGVuIGFwcHJvcHJpYXRlLiAgVGhpcyBzYXZlcyBvbiBKSVQgY29k
ZSB0byByZXBlYXRlZGx5IG1hdGVyaWFsaXplCisgICAgICAgICAgIHRoZSB1bmRlZmluZWQgSlNW
YWx1ZSBjb25zdGFudC4KKworICAgICAgICAzLiBJbiByZWlmeUlubGluZWRDYWxsRnJhbWVzKCks
IHJlcGxhY2UgdGhlIHVzZSBvZiBHUFJJbmZvOjpub25BcmdHUFIwIHdpdGgKKyAgICAgICAgICAg
R1BSSW5mbzo6cmVnVDQuICBub25BcmdHUFJzIGFyZSBzb21ldGltZXMgbWFwIHRvIGNlcnRhaW4g
cmVnVFhzIG9uIGNlcnRhaW4gcG9ydHMuCisgICAgICAgICAgIFJlcGxhY2luZyB3aXRoIHJlZ1Q0
IG1ha2VzIGl0IGVhc2llciB0byBlbnN1cmUgdGhhdCB3ZSdyZSBub3QgdHJhc2hpbmcgdGhlCisg
ICAgICAgICAgIHJlZ2lzdGVyIHdoZW4gd2UgdXNlIG1vcmUgdGVtcCByZWdpc3RlcnMuCisKKyAg
ICAgICAgICAgcmVpZnlJbmxpbmVkQ2FsbEZyYW1lcygpIHdpbGwgYmUgdXNpbmcgZW1pdFNhdmVP
ckNvcHlMTEludEJhc2VsaW5lQ2FsbGVlU2F2ZXNGb3IoKQorICAgICAgICAgICBsYXRlciB3aGVy
ZSB3ZSBuZWVkIG1vcmUgdGVtcCByZWdpc3RlcnMuCisKKyAgICAgICAgNC4gTW92ZSB0aGUgZm9s
bG93aW5nIGZ1bmN0aW9ucyB0byBBc3NlbWJseUhlbHBlcnMuY3BwLiAgVGhleSBkb24ndCBuZWVk
IHRvIGJlCisgICAgICAgICAgIGlubGluZSBmdW5jdGlvbnMuICBTcGVlZG9tZXRlcjIgYW5kIEpl
dFN0cmVhbTIgc2hvd3MgdGhhdCBtYWtpbmcgdGhlc2Ugbm9uCisgICAgICAgICAgIGlubGluZSBk
b2VzIG5vdCBodXJ0IHBlcmZvcm1hbmNlOgorCisgICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxw
ZXJzOjplbWl0U2F2ZShjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCYpOworICAgICAgICAgICAg
ICAgIEFzc2VtYmx5SGVscGVyczo6ZW1pdFJlc3RvcmUoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExp
c3QmKTsKKyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OmVtaXRTYXZlQ2FsbGVlU2F2
ZXNGb3IoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QqKTsKKyAgICAgICAgICAgICAgICBBc3Nl
bWJseUhlbHBlcnM6OmVtaXRTYXZlT3JDb3B5Q2FsbGVlU2F2ZXNGb3IoLi4uKTsKKyAgICAgICAg
ICAgICAgICBBc3NlbWJseUhlbHBlcnM6OmVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXNGb3IoY29uc3Qg
UmVnaXN0ZXJBdE9mZnNldExpc3QqKTsKKyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6
OmNvcHlMTEludEJhc2VsaW5lQ2FsbGVlU2F2ZXNGcm9tRnJhbWVPclJlZ2lzdGVyVG9FbnRyeUZy
YW1lQ2FsbGVlU2F2ZXNCdWZmZXIoLi4uKTsKKworICAgICAgICAgICBBbHNvIHJlbmFtZWQgZW1p
dFNhdmVPckNvcHlDYWxsZWVTYXZlc0ZvcigpIHRvIGVtaXRTYXZlT3JDb3B5TExJbnRCYXNlbGlu
ZUNhbGxlZVNhdmVzRm9yKCkKKyAgICAgICAgICAgYmVjYXVzZSBpdCBpcyBvbmx5IHVzZWQgd2l0
aCBiYXNlbGluZSBjb2RlQmxvY2tzLgorCisgICAgICAgIFJlc3VsdHM6CisgICAgICAgIEN1bW11
bGF0aXZlIExpbmtCdWZmZXIgcHJvZmlsZSBzaXplcyBzaHJ1bmsgYnkgfjJNIGluIGFnZ3JlZ2F0
ZToKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UgICAgICAgICAgICAgICAgICAg
ICAgICAgICBuZXcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PT09ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPT09CisgICAgICAgICAgICAgICBCYXNlbGluZUpJVDogODM4MjcwNDgg
KDc5Ljk0MzcwMyBNQikgICAgID0+IDgzNzE4NzM2ICg3OS44NDA0MDggTUIpCisgICAgICAgICAg
ICAgICAgICAgICAgIERGRzogNTY1OTQ4MzYgKDUzLjk3MzA0MiBNQikgICAgID0+IDU2NjAzNTA4
ICg1My45ODEzMTIgTUIpCisgICAgICAgICAgICAgICBJbmxpbmVDYWNoZTogMzM5MjM5MDAgKDMy
LjM1MjM1MiBNQikgICAgID0+IDMzMTgzMTU2ICgzMS42NDU5MjQgTUIpCisgICAgICAgICAgICAg
ICAgICAgICAgIEZUTDogNjc3MDk1NiAoNi40NTcyODcgTUIpICAgICAgID0+IDY1Njg5NjQgKDYu
MjY0NjUyIE1CKQorICAgICAgICAgICAgICAgIERGR09TUkV4aXQ6IDUyMTIwOTYgKDQuOTcwNjQy
IE1CKSAgICAgICA9PiAzNzI4MDg4ICgzLjU1NTM4MiBNQikKKyAgICAgICAgICAgICAgICAgICAg
Q1NTSklUOiA3NDg0MjggKDczMC44ODY3MTkgS0IpICAgICAgPT4gNzQ4NDI4ICg3MzAuODg2NzE5
IEtCKQorICAgICAgICAgICAgICAgIEZUTE9TUkV4aXQ6IDY5MjI3NiAoNjc2LjA1MDc4MSBLQikg
ICAgICA9PiA2NTY4ODQgKDY0MS40ODgyODEgS0IpCisgICAgICAgICAgICAgICAgICAgWWFyckpJ
VDogNDQ1MjgwICg0MzQuODQzNzUwIEtCKSAgICAgID0+IDUxMjk4OCAoNTAwLjk2NDg0NCBLQikK
KyAgICAgICAgICAgICAgICAgIEZUTFRodW5rOiAyMjkwOCAoMjIuMzcxMDk0IEtCKSAgICAgICAg
PT4gMjI1NTYgKDIyLjAyNzM0NCBLQikKKyAgICAgICAgQm91bmRGdW5jdGlvblRodW5rOiA4NDAw
ICg4LjIwMzEyNSBLQikgICAgICAgICAgPT4gMTAwODggKDkuODUxNTYyIEtCKQorICAgICAgICAg
ICAgIEV4dHJhQ1RJVGh1bms6IDY5NTIgKDYuNzg5MDYyIEtCKSAgICAgICAgICA9PiA2ODI0ICg2
LjY2NDA2MiBLQikKKyAgICAgICAgICBTcGVjaWFsaXplZFRodW5rOiA0NTA4ICg0LjQwMjM0NCBL
QikgICAgICAgICAgPT4gNDUwOCAoNC40MDIzNDQgS0IpCisgICAgICAgICAgICAgICAgICAgICBU
aHVuazogMzkxMiAoMy44MjAzMTIgS0IpICAgICAgICAgID0+IDM3ODQgKDMuNjk1MzEyIEtCKQor
ICAgICAgICAgICAgICAgIExMSW50VGh1bms6IDI5MDggKDIuODM5ODQ0IEtCKSAgICAgICAgICA9
PiAyOTA4ICgyLjgzOTg0NCBLQikKKyAgICAgICAgICAgICAgVmlydHVhbFRodW5rOiAxMjQ4ICgx
LjIxODc1MCBLQikgICAgICAgICAgPT4gMTI0OCAoMS4yMTg3NTAgS0IpCisgICAgICAgICAgICAg
ICAgICBERkdUaHVuazogMTA4NCAoMS4wNTg1OTQgS0IpICAgICAgICAgID0+IDQ0NAorICAgICAg
ICAgICAgICAgREZHT1NSRW50cnk6IDIxNiAgICAgICAgICAgICAgICAgICAgICAgICA9PiAxODQK
KyAgICAgICAgICAgICAgICBKdW1wSXNsYW5kOiAwCisgICAgICAgICAgICAgICAgIFdhc21UaHVu
azogMAorICAgICAgICAgICAgICAgICAgICAgIFdhc206IDAKKyAgICAgICAgICAgICBVbmNhdGVn
b3JpemVkOiAwCisgICAgICAgICAgICAgICAgICAgICBUb3RhbDogMTg4MjY2OTU2ICgxNzkuNTQ1
MzYxIE1CKSAgID0+IDE4NTc3MzI5NiAoMTc3LjE2NzIyMSBNQikKKworICAgICAgICBTcGVlZG9t
ZXRlcjIgYW5kIEpldFN0cmVhbTIgcmVzdWx0cyBzaG93cyB0aGF0IHBlcmZvcm1hbmNlIGlzIG5l
dXRyYWwgZm9yIHRoaXMKKyAgICAgICAgcGF0Y2ggKGFzIG1lYXN1cmVkIG9uIGFuIE0xIE1hYyk6
CisKKyAgICAgICAgU3BlZWRvbWV0ZXIyOgorICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAg
ICAgIHwgICAgICAgICAgICAgICBzdWJ0ZXN0ICAgICAgICAgICAgICAgIHwgICAgIG1zICAgICAg
fCAgICAgbXMgICAgICB8ICBiIC8gYSAgIHwgcFZhbHVlIChzaWduaWZpY2FuY2UgdXNpbmcgRmFs
c2UgRGlzY292ZXJ5IFJhdGUpIHwKKyAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICB8
IEVsbS1Ub2RvTVZDICAgICAgICAgICAgICAgICAgICAgICAgICB8MTI5LjAzNzUwMCAgIHwxMjcu
MjEyNTAwICAgfDAuOTg1ODU3ICB8IDAuMDEyNzA2ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8CisgICAgICAgIHwgVnVlSlMtVG9kb01WQyAgICAgICAgICAgICAgICAg
ICAgICAgIHwyOC4zMTI1MDAgICAgfDI3LjUyNTAwMCAgICB8MC45NzIxODUgIHwgMC4yNDAzMTUg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBFbWJl
ckpTLVRvZG9NVkMgICAgICAgICAgICAgICAgICAgICAgfDEzMi41NTAwMDAgICB8MTMyLjAyNTAw
MCAgIHwwLjk5NjAzOSAgfCAwLjUzODAzNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfAorICAgICAgICB8IEZsaWdodC1Ub2RvTVZDICAgICAgICAgICAgICAgICAgICAg
ICB8ODAuNzYyNTAwICAgIHw4MC44NzUwMDAgICAgfDEuMDAxMzkzICB8IDAuOTE0NzQ5ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgQmFja2JvbmVK
Uy1Ub2RvTVZDICAgICAgICAgICAgICAgICAgIHw1MS42Mzc1MDAgICAgfDUxLjE3NTAwMCAgICB8
MC45OTEwNDMgIHwgMC4yODU0MjcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwKKyAgICAgICAgfCBQcmVhY3QtVG9kb01WQyAgICAgICAgICAgICAgICAgICAgICAgfDIx
LjAyNTAwMCAgICB8MjIuMDc1MDAwICAgIHwxLjA0OTk0MSAgfCAwLjIwNjE0MCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IEFuZ3VsYXJKUy1Ub2Rv
TVZDICAgICAgICAgICAgICAgICAgICB8MTQyLjkwMDAwMCAgIHwxNDIuODg3NTAwICAgfDAuOTk5
OTEzICB8IDAuOTkwNjgxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
CisgICAgICAgIHwgSW5mZXJuby1Ub2RvTVZDICAgICAgICAgICAgICAgICAgICAgIHw2OS4zMDAw
MDAgICAgfDY5Ljc3NTAwMCAgICB8MS4wMDY4NTQgIHwgMC41MDUyMDEgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBWYW5pbGxhLUVTMjAxNS1Ub2Rv
TVZDICAgICAgICAgICAgICAgfDcxLjUwMDAwMCAgICB8NzEuMjI1MDAwICAgIHwwLjk5NjE1NCAg
fCAwLjYwODY1MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAg
ICAgICB8IEFuZ3VsYXIyLVR5cGVTY3JpcHQtVG9kb01WQyAgICAgICAgICB8NDMuMjg3NTAwICAg
IHw0My4yNzUwMDAgICAgfDAuOTk5NzExICB8IDAuOTg3OTI2ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgVmFuaWxsYUpTLVRvZG9NVkMgICAgICAg
ICAgICAgICAgICAgIHw1Ny4yMTI1MDAgICAgfDU3LjgxMjUwMCAgICB8MS4wMTA0ODcgIHwgMC4z
MzMzNTcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAg
fCBqUXVlcnktVG9kb01WQyAgICAgICAgICAgICAgICAgICAgICAgfDI3Ni4xNTAwMDAgICB8Mjc2
Ljc3NTAwMCAgIHwxLjAwMjI2MyAgfCAwLjYxNDQwNCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfAorICAgICAgICB8IEVtYmVySlMtRGVidWctVG9kb01WQyAgICAgICAg
ICAgICAgICB8MzUzLjYxMjUwMCAgIHwzNTIuNzYyNTAwICAgfDAuOTk3NTk2ICB8IDAuNTE4ODM2
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgUmVh
Y3QtVG9kb01WQyAgICAgICAgICAgICAgICAgICAgICAgIHw5My42Mzc1MDAgICAgfDkyLjYzNzUw
MCAgICB8MC45ODkzMjEgIHwgMC4wMzYyNzcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwKKyAgICAgICAgfCBSZWFjdC1SZWR1eC1Ub2RvTVZDICAgICAgICAgICAgICAg
ICAgfDE1OC4yMzc1MDAgICB8MTU2LjU4NzUwMCAgIHwwLjk4OTU3MyAgfCAwLjA0MjE1NCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IFZhbmlsbGEt
RVMyMDE1LUJhYmVsLVdlYnBhY2stVG9kb01WQyB8NjguMDUwMDAwICAgIHw2OC4wODc1MDAgICAg
fDEuMDAwNTUxICB8IDAuODk3MTQ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8CisgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgICAgICBhIG1lYW4gPSAyMzYu
MjY5NTAKKyAgICAgICAgYiBtZWFuID0gMjM2LjU3OTY0CisgICAgICAgIHBWYWx1ZSA9IDAuNzgz
MDc4NTkzOAorICAgICAgICAoQmlnZ2VyIG1lYW5zIGFyZSBiZXR0ZXIuKQorICAgICAgICAxLjAw
MSB0aW1lcyBiZXR0ZXIKKyAgICAgICAgUmVzdWx0cyBBUkUgTk9UIHNpZ25pZmljYW50CisKKyAg
ICAgICAgSmV0U3RyZWFtMjoKKyAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICB8ICAgICAgICAgIHN1
YnRlc3QgICAgICAgICAgfCAgICAgcHRzICAgICAgfCAgICAgcHRzICAgICAgfCAgYiAvIGEgICB8
IHBWYWx1ZSAoc2lnbmlmaWNhbmNlIHVzaW5nIEZhbHNlIERpc2NvdmVyeSBSYXRlKSB8CisgICAg
ICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKyAgICAgICAgfCBnYXVzc2lhbi1ibHVyICAgICAgICAgICAgIHw1NDIuNTcw
MDU3ICAgIHw1NDIuNjcxODg1ICAgIHwxLjAwMDE4OCAgfCAwLjk4MjU3MyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IEhhc2hTZXQtd2FzbSAgICAg
ICAgICAgICAgfDU3LjcxMDQ5OCAgICAgfDY0LjQwNjM3MSAgICAgfDEuMTE2MDI1ICB8IDAuNDAx
NDI0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwg
Z2NjLWxvb3BzLXdhc20gICAgICAgICAgICB8NDQuNTE2MDA5ICAgICB8NDQuNDUzNTM1ICAgICB8
MC45OTg1OTcgIHwgMC45NzM2NTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwKKyAgICAgICAgfCBqc29uLXBhcnNlLWluc3BlY3RvciAgICAgIHwyNDEuMjc1MDg1ICAg
IHwyNDAuNzIwNDkxICAgIHwwLjk5NzcwMSAgfCAwLjcwNDczMiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IHByZXBhY2std3RiICAgICAgICAgICAg
ICAgfDYyLjY0MDExNCAgICAgfDYzLjc1NDg3OCAgICAgfDEuMDE3Nzk2ICB8IDAuMjA1ODQwICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgZGF0ZS1m
b3JtYXQteHBhcmItU1AgICAgICB8NDE2Ljk3NjgxNyAgICB8NDQ4LjkyMTQwOSAgICB8MS4wNzY2
MTAgIHwgMC4wNTI5NzcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwK
KyAgICAgICAgfCBXU0wgICAgICAgICAgICAgICAgICAgICAgIHwxLjU1NTI1NyAgICAgIHwxLjU3
MDIzMyAgICAgIHwxLjAwOTYyOSAgfCAwLjQyNzkyNCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfAorICAgICAgICB8IE9mZmxpbmVBc3NlbWJsZXIgICAgICAgICAgfDE3
Ny4wNTIzNTIgICAgfDE3OS43NDY1MTEgICAgfDEuMDE1MjE3ICB8IDAuMTEyMTE0ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgY2RqcyAgICAgICAg
ICAgICAgICAgICAgICB8MTkyLjUxNzU4NiAgICB8MTk0LjU5ODkwNiAgICB8MS4wMTA4MTEgIHwg
MC4wMjU4MDcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAg
ICAgfCBVbmlQb2tlciAgICAgICAgICAgICAgICAgIHw1MTQuMDIzNjk0ICAgIHw1MjYuMTExNTAw
ICAgIHwxLjAyMzUxNiAgfCAwLjI2OTg5MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfAorICAgICAgICB8IGpzb24tc3RyaW5naWZ5LWluc3BlY3RvciAgfDIyNy41ODQ3
MjUgICAgfDIyMy42MTkzOTAgICAgfDAuOTgyNTc2ICB8IDAuMTAyNzE0ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgY3J5cHRvLXNoYTEtU1AgICAg
ICAgICAgICB8OTgwLjcyODc4OCAgICB8OTg0LjE5MjEwNCAgICB8MS4wMDM1MzEgIHwgMC44Mzg2
MTggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBC
YXNpYyAgICAgICAgICAgICAgICAgICAgIHw2ODUuMTQ4NDgzICAgIHw3MTEuNTkwMjQ3ICAgIHwx
LjAzODU5MyAgfCAwLjE0Mjk1MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfAorICAgICAgICB8IGNoYWktd3RiICAgICAgICAgICAgICAgICAgfDEwNi4yNTYzNzYgICAg
fDEwNi41OTAzMTggICAgfDEuMDAzMTQzICB8IDAuODY1ODk0ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgY3J5cHRvLWFlcy1TUCAgICAgICAgICAg
ICB8NzIyLjMwODgyOSAgICB8NzI4LjcwMjMxMCAgICB8MS4wMDg4NTEgIHwgMC40ODY3NjYgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBCYWJ5bG9u
ICAgICAgICAgICAgICAgICAgIHw2NTUuODU3NTYxICAgIHw2NTQuMjA0OTAxICAgIHwwLjk5NzQ4
MCAgfCAwLjkzMTUyMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAor
ICAgICAgICB8IHN0cmluZy11bnBhY2stY29kZS1TUCAgICAgfDQwNy44MzcyNzEgICAgfDQwNS43
MTA3NTIgICAgfDAuOTk0Nzg2ICB8IDAuNzI5MTIyICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8CisgICAgICAgIHwgc3RhbmZvcmQtY3J5cHRvLWFlcyAgICAgICB8NDU2
LjkwNjAyMSAgICB8NDQ5Ljk5Mzg1NiAgICB8MC45ODQ4NzIgIHwgMC4yNzI5OTQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCByYXl0cmFjZSAgICAg
ICAgICAgICAgICAgIHw4ODMuOTExMzM1ICAgIHw5MDIuODg3MjM4ICAgIHwxLjAyMTQ2OCAgfCAw
LjE4OTc4NSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAg
ICB8IG11bHRpLWluc3BlY3Rvci1jb2RlLWxvYWQgfDQwOS45OTczNDcgICAgfDQwNS42NDM2Mzkg
ICAgfDAuOTg5MzgxICB8IDAuNjQ0NDQ3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8CisgICAgICAgIHwgaGFzaC1tYXAgICAgICAgICAgICAgICAgICB8NTkzLjU5MDE2
MCAgICB8NjAxLjU3NjMzMiAgICB8MS4wMTM0NTQgIHwgMC4yNDk0MTQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBzdGFuZm9yZC1jcnlwdG8tcGJr
ZGYyICAgIHw3MjIuMTc4NjM4ICAgIHw3MjguMjgzNTMyICAgIHwxLjAwODQ1MyAgfCAwLjY2MTE5
NSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IGNv
ZmZlZXNjcmlwdC13dGIgICAgICAgICAgfDQyLjM5MzU0NCAgICAgfDQxLjg2OTU0NSAgICAgfDAu
OTg3NjQwICB8IDAuMTk3NDQxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8CisgICAgICAgIHwgQm94MkQgICAgICAgICAgICAgICAgICAgICB8NDUyLjAzNDY4NSAgICB8
NDU0LjEwNDg2OCAgICB8MS4wMDQ1ODAgIHwgMC41MzUzNDIgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCByaWNoYXJkcy13YXNtICAgICAgICAgICAg
IHwxNDAuODczNjg4ICAgIHwxNDguMzk0MDUwICAgIHwxLjA1MzM4NCAgfCAwLjMwMzY1MSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IGxlYmFiLXd0
YiAgICAgICAgICAgICAgICAgfDYxLjY3MTMxOCAgICAgfDYyLjExOTQwMyAgICAgfDEuMDA3MjY2
ICB8IDAuNjIwOTk4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cisg
ICAgICAgIHwgdHNmLXdhc20gICAgICAgICAgICAgICAgICB8MTA4LjU5Mjc5NCAgICB8MTE5LjQ5
ODM5OCAgICB8MS4xMDA0MjcgIHwgMC41MDQ3MTAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwKKyAgICAgICAgfCBiYXNlNjQtU1AgICAgICAgICAgICAgICAgIHw2Mjku
NzQ0NjQzICAgIHw2MDMuNDI1NTY1ICAgIHwwLjk1ODIwNyAgfCAwLjA0OTk5NyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IG5hdmllci1zdG9rZXMg
ICAgICAgICAgICAgfDc0MC41ODg1MjMgICAgfDczOS45NTE2NjIgICAgfDAuOTk5MTQwICB8IDAu
ODcxNDQ1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAg
IHwganNoaW50LXd0YiAgICAgICAgICAgICAgICB8NTEuOTM4MzU5ICAgICB8NTIuNjUxMTA0ICAg
ICB8MS4wMTM3MjMgIHwgMC4yMTcxMzcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwKKyAgICAgICAgfCByZWdleC1kbmEtU1AgICAgICAgICAgICAgIHw0NTkuMjUxMTQ4
ICAgIHw0NjMuNDkyNDg5ICAgIHwxLjAwOTIzNSAgfCAwLjM3MTg5MSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IGFzeW5jLWZzICAgICAgICAgICAg
ICAgICAgfDIzNS44NTM4MjAgICAgfDIzNi4wMzExODkgICAgfDEuMDAwNzUyICB8IDAuOTM4NDU5
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgZmly
c3QtaW5zcGVjdG9yLWNvZGUtbG9hZCB8Mjc1LjI5ODMyNSAgICB8Mjc0LjE3MjEyNSAgICB8MC45
OTU5MDkgIHwgMC42MjM0MDMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwKKyAgICAgICAgfCBzZWdtZW50YXRpb24gICAgICAgICAgICAgIHw0NC4wMDI4NDIgICAgIHw0
My40NDU5NjAgICAgIHwwLjk4NzM0NCAgfCAwLjIwNzEzNCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IHR5cGVzY3JpcHQgICAgICAgICAgICAgICAg
fDI2LjM2MDE2MSAgICAgfDI2LjQ1ODgyMCAgICAgfDEuMDAzNzQzICB8IDAuNjA5OTQyICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgb2N0YW5lLWNv
ZGUtbG9hZCAgICAgICAgICB8MTEyNi43NDkwMzYgICB8MTA4Ny4xMzIwMjQgICB8MC45NjQ4NDAg
IHwgMC41MjQxNzEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAg
ICAgICAgfCBmbG9hdC1tbS5jICAgICAgICAgICAgICAgIHwxNi42OTE5MzUgICAgIHwxNi43MjEz
NTQgICAgIHwxLjAwMTc2MiAgfCAwLjE5NDQyNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfAorICAgICAgICB8IHF1aWNrc29ydC13YXNtICAgICAgICAgICAgfDQ2MS42
MzAwOTEgICAgfDQ1MC4xNjExMjcgICAgfDAuOTc1MTU2ICB8IDAuMzcxMzk0ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgQWlyICAgICAgICAgICAg
ICAgICAgICAgICB8MzkyLjQ0MjM3NSAgICB8NDEyLjIwMTgxMCAgICB8MS4wNTAzNTAgIHwgMC4w
NDY4ODcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAg
fCBzcGxheSAgICAgICAgICAgICAgICAgICAgIHw1MTAuMTExODg2ICAgIHw0NzUuMTMxNjU3ICAg
IHwwLjkzMTQyNiAgfCAwLjAyNDczMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfAorICAgICAgICB8IGFpLWFzdGFyICAgICAgICAgICAgICAgICAgfDYwNy45NjY5NzQg
ICAgfDYyNi41NzMxODEgICAgfDEuMDMwNjA0ICB8IDAuNDY4NzExICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgYWNvcm4td3RiICAgICAgICAgICAg
ICAgICB8NjcuNTEwNzY2ICAgICB8NjguMTQzOTU2ICAgICB8MS4wMDkzNzkgIHwgMC40ODE2NjMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBnYmVt
dSAgICAgICAgICAgICAgICAgICAgIHwxNDQuMTMzODQyICAgIHwxNDUuNjIwMzA0ICAgIHwxLjAx
MDMxMyAgfCAwLjgwMjE1NCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fAorICAgICAgICB8IHJpY2hhcmRzICAgICAgICAgICAgICAgICAgfDk2My40NzUwNzggICAgfDk0
Ni42NTg4NzkgICAgfDAuOTgyNTQ2ICB8IDAuMjMxMTg5ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgM2QtY3ViZS1TUCAgICAgICAgICAgICAgICB8
NTQ5LjQyNjc4NCAgICB8NTUwLjQ3OTE1NCAgICB8MS4wMDE5MTUgIHwgMC44MzEzMDcgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBlc3ByZWUtd3Ri
ICAgICAgICAgICAgICAgIHw2OC43MDc0ODMgICAgIHw3My43NjIyMDIgICAgIHwxLjA3MzU2OSAg
fCAwLjAzMzYwMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAg
ICAgICB8IGJvbWItd29ya2VycyAgICAgICAgICAgICAgfDk2Ljg4MjU5NiAgICAgfDk2LjExNjEy
MSAgICAgfDAuOTkyMDg5ICB8IDAuNjg3OTUyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8CisgICAgICAgIHwgdGFnY2xvdWQtU1AgICAgICAgICAgICAgICB8MzA5Ljg4
ODc2NyAgICB8MzAzLjUzODUxMSAgICB8MC45Nzk1MDggIHwgMC4xODc3NjggICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBtYW5kcmVlbCAgICAgICAg
ICAgICAgICAgIHwxMzMuNjY3MDMxICAgIHwxMzUuMDA5OTI5ICAgIHwxLjAxMDA0NyAgfCAwLjA3
NTIzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8
IDNkLXJheXRyYWNlLVNQICAgICAgICAgICAgfDQ5MS45Njc2NDkgICAgfDQ5Mi41Mjg5OTIgICAg
fDEuMDAxMTQxICB8IDAuOTU3ODQyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8CisgICAgICAgIHwgZGVsdGEtYmx1ZSAgICAgICAgICAgICAgICB8MTA2Ni43MTgzMTIg
ICB8MTA4MC4yMzA3NzIgICB8MS4wMTI2NjcgIHwgMC41NDkzODIgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBNTCAgICAgICAgICAgICAgICAgICAg
ICAgIHwxMzkuNjE3MjkzICAgIHwxNDAuMDg4NjMwICAgIHwxLjAwMzM3NiAgfCAwLjY2MTY1MSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IHJlZ2V4
cCAgICAgICAgICAgICAgICAgICAgfDM1MS43NzM5NTYgICAgfDM1MS4wNzU5MzUgICAgfDAuOTk4
MDE2ICB8IDAuNzY5MjUwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
CisgICAgICAgIHwgY3J5cHRvICAgICAgICAgICAgICAgICAgICB8MTUxMC40NzQ2NjMgICB8MTUx
OS4yMTg4NDIgICB8MS4wMDU3ODkgIHwgMC42Mzg0MjAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBjcnlwdG8tbWQ1LVNQICAgICAgICAgICAgIHw3
OTUuNDQ3ODk5ICAgIHw3NzQuMDgyNDkzICAgIHwwLjk3MzE0MCAgfCAwLjA3OTcyOCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IGVhcmxleS1ib3ll
ciAgICAgICAgICAgICAgfDgxMi41NzQ1NDUgICAgfDg3MC42NzgzNzIgICAgfDEuMDcxNTA2ICB8
IDAuMDQ0MDgxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAg
ICAgIHwgb2N0YW5lLXpsaWIgICAgICAgICAgICAgICB8MjUuMTYyNDcwICAgICB8MjUuNjYwMjYx
ICAgICB8MS4wMTk3ODMgIHwgMC41NTQ1OTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwKKyAgICAgICAgfCBkYXRlLWZvcm1hdC10b2Z0ZS1TUCAgICAgIHwzOTUuMjk2
MTM1ICAgIHwzOTguMDA4OTkyICAgIHwxLjAwNjg2MyAgfCAwLjY1MDQ3NSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IG4tYm9keS1TUCAgICAgICAg
ICAgICAgICAgfDExNjUuMzg2NjExICAgfDExNTAuNTI1MTEwICAgfDAuOTg3MjQ4ICB8IDAuMjI3
OTA4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwg
cGRmanMgICAgICAgICAgICAgICAgICAgICB8MTg5LjA2MDI1MiAgICB8MTkxLjAxNTYyOCAgICB8
MS4wMTAzNDMgIHwgMC42MzM3NzcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwKKyAgICAgICAgfCBGbGlnaHRQbGFubmVyICAgICAgICAgICAgIHw5MDguNDI2MTkyICAg
IHw5MDMuNjM2NjQyICAgIHwwLjk5NDcyOCAgfCAwLjgzODgyMSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IHVnbGlmeS1qcy13dGIgICAgICAgICAg
ICAgfDM0LjAyOTM5OSAgICAgfDM0LjE2NDM0MiAgICAgfDEuMDAzOTY1ICB8IDAuNjU1NjUyICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgYmFieWxv
bi13dGIgICAgICAgICAgICAgICB8ODEuMzI5ODY5ICAgICB8ODAuODU1NjgwICAgICB8MC45OTQx
NzAgIHwgMC44NTQzOTMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwK
KyAgICAgICAgfCBzdGFuZm9yZC1jcnlwdG8tc2hhMjU2ICAgIHw4MjYuODUwNTMzICAgIHw4Mzgu
NDk0MTY0ICAgIHwxLjAxNDA4MiAgfCAwLjU3OTYzNiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfAorICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAgICAgYSBtZWFuID0gMjM3
LjkxMDg0CisgICAgICAgIGIgbWVhbiA9IDIzOS45MjY3MAorICAgICAgICBwVmFsdWUgPSAwLjA2
NTc3MTA4OTcKKyAgICAgICAgKEJpZ2dlciBtZWFucyBhcmUgYmV0dGVyLikKKyAgICAgICAgMS4w
MDggdGltZXMgYmV0dGVyCisgICAgICAgIFJlc3VsdHMgQVJFIE5PVCBzaWduaWZpY2FudAorCisg
ICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIu
aDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OnB1c2hUb1NhdmVCeXRlT2Zmc2V0KToK
KyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpwdXNoVG9TYXZlQnl0ZU9mZnNldCk6CisgICAgICAgICog
ZGZnL0RGR09TUkV4aXQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXQ6OmNvbXBpbGVF
eGl0KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpyZWlmeUlubGluZWRDYWxsRnJhbWVzKToKKyAgICAgICAgKiBkZmcvREZH
VGh1bmtzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpvc3JFeGl0R2VuZXJhdGlvblRodW5rR2Vu
ZXJhdG9yKToKKyAgICAgICAgKiBmdGwvRlRMU2F2ZVJlc3RvcmUuY3BwOgorICAgICAgICAoSlND
OjpGVEw6OnNhdmVBbGxSZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpGVEw6OnJlc3RvcmVBbGxS
ZWdpc3RlcnMpOgorICAgICAgICAqIGZ0bC9GVExTYXZlUmVzdG9yZS5oOgorICAgICAgICAqIGZ0
bC9GVExUaHVua3MuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmdlbmVyaWNHZW5lcmF0aW9uVGh1
bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpGVEw6OnNsb3dQYXRoQ2FsbFRodW5rR2VuZXJh
dG9yKToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6
QXNzZW1ibHlIZWxwZXJzOjpyZXN0b3JlQ2FsbGVlU2F2ZXNGcm9tRW50cnlGcmFtZUNhbGxlZVNh
dmVzQnVmZmVyKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpjb3B5Q2FsbGVlU2F2
ZXNUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlckltcGwpOgorICAgICAgICAoSlNDOjpBc3Nl
bWJseUhlbHBlcnM6OmVtaXRTYXZlKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpl
bWl0UmVzdG9yZSk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdFNhdmVDYWxs
ZWVTYXZlc0Zvcik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdFJlc3RvcmVD
YWxsZWVTYXZlc0Zvcik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6Y29weUxMSW50
QmFzZWxpbmVDYWxsZWVTYXZlc0Zyb21GcmFtZU9yUmVnaXN0ZXJUb0VudHJ5RnJhbWVDYWxsZWVT
YXZlc0J1ZmZlcik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdFNhdmVPckNv
cHlMTEludEJhc2VsaW5lQ2FsbGVlU2F2ZXNGb3IpOgorICAgICAgICAqIGppdC9Bc3NlbWJseUhl
bHBlcnMuaDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpjb3B5TExJbnRCYXNlbGlu
ZUNhbGxlZVNhdmVzRnJvbUZyYW1lT3JSZWdpc3RlclRvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVm
ZmVyKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0U2F2ZSk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdFJlc3RvcmUpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRTYXZlT3JDb3B5Q2FsbGVlU2F2ZXNG
b3IpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9TY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuY3Bw
OgorICAgICAgICAoSlNDOjpTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OnByZXNlcnZlUmV1c2Vk
UmVnaXN0ZXJzQnlQdXNoaW5nKToKKyAgICAgICAgKEpTQzo6U2NyYXRjaFJlZ2lzdGVyQWxsb2Nh
dG9yOjpyZXN0b3JlUmV1c2VkUmVnaXN0ZXJzQnlQb3BwaW5nKToKKyAgICAgICAgKEpTQzo6U2Ny
YXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpwcmVzZXJ2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKToK
KyAgICAgICAgKEpTQzo6U2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpyZXN0b3JlUmVnaXN0ZXJz
RnJvbVN0YWNrRm9yQ2FsbCk6CisgICAgICAgICogaml0L1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRv
ci5oOgorICAgICAgICAqIHdhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpT
Qzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OmFkZFJldHVybik6CisgICAgICAgICogd2FzbS9XYXNt
QjNJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmFk
ZFJldHVybik6CisKIDIwMjEtMDYtMTUgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0Bn
bm9tZS5vcmc+CiAKICAgICAgICAgLVdhcnJheS1ib3VuZHMgd2FybmluZyBpbiBQYWNrZWQuaApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjc4ODg2KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC03NTcsNiArNzU3LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hF
QQogICAgIGludGVycHJldGVyL1ZNRW50cnlSZWNvcmQuaAogCiAgICAgaml0L0Fzc2VtYmx5SGVs
cGVycy5oCisgICAgaml0L0Fzc2VtYmx5SGVscGVyc1Nwb29sZXJzLmgKICAgICBqaXQvQ0NhbGxI
ZWxwZXJzLmgKICAgICBqaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5oCiAgICAgaml0L0ZQUkluZm8u
aApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI3ODg4NikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQ4LDYgKzExNDgsNyBAQAogCQk2NUI4MzkyRTFC
QUNBRDM2MDA0NEU4MjQgLyogQ2FjaGVkUmVjb3ZlcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1QjgzOTJDMUJBQ0E5MkEwMDQ0RTgyNCAvKiBDYWNo
ZWRSZWNvdmVyeS5oICovOyB9OwogCQk2QTM4Q0ZBQTFFMzJCNUFCMDA2MDIwNkYgLyogQXN5bmNT
dGFja1RyYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA2QTM4Q0ZBODFFMzJCNThCMDA2MDIwNkYgLyogQXN5bmNTdGFja1RyYWNlLmggKi87IH07CiAJ
CTZBRDJDQjREMTlCOTE0MDEwMDA2NTcxOSAvKiBEZWJ1Z2dlckV2YWxFbmFibGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QUQyQ0I0QzE5QjkxNDAx
MDAwNjU3MTkgLyogRGVidWdnZXJFdmFsRW5hYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTZCNzY3RTdCMjY3OTFGMjcwMDE3RjhEMSAvKiBB
c3NlbWJseUhlbHBlcnNTcG9vbGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNkI3NjdFN0EyNjc5MUYyNzAwMTdGOEQxIC8qIEFzc2VtYmx5SGVscGVy
c1Nwb29sZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNkJDQ0VDMDQyNUQxRkEyNzAwMEYzOTFEIC8qIFZlcmlmaWVyU2xvdFZpc2l0b3JJbmxp
bmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QkND
RUMwMzI1RDFGQTI3MDAwRjM5MUQgLyogVmVyaWZpZXJTbG90VmlzaXRvcklubGluZXMuaCAqLzsg
fTsKIAkJNzAxMTNENEMxQThEQjA5MzAwMzg0OEM0IC8qIEl0ZXJhdG9yT3BlcmF0aW9ucy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzAxMTNENEExQThE
QjA5MzAwMzg0OEM0IC8qIEl0ZXJhdG9yT3BlcmF0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcwMTNDQThDMUI0OTFBOTQwMENBRTYxMyAv
KiBKU01pY3JvdGFzay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzAxM0NBOEExQjQ5MUE5NDAwQ0FFNjEzIC8qIEpTTWljcm90YXNrLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM5OTcsNiArMzk5OCw3
IEBACiAJCTZBMzhDRkE4MUUzMkI1OEIwMDYwMjA2RiAvKiBBc3luY1N0YWNrVHJhY2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXN5bmNTdGFja1RyYWNlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZBRDJDQjRDMTlCOTE0MDEwMDA2NTcxOSAvKiBEZWJ1Z2dl
ckV2YWxFbmFibGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlYnVnZ2Vy
RXZhbEVuYWJsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkI3MzFDQzAyNjQ3
QTgzNzAwMTQ2NDZGIC8qIFNsb3dQYXRoQ2FsbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTbG93
UGF0aENhbGwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2Qjc2N0U3QTI2Nzkx
RjI3MDAxN0Y4RDEgLyogQXNzZW1ibHlIZWxwZXJzU3Bvb2xlcnMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQXNzZW1ibHlIZWxwZXJzU3Bvb2xlcnMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNkJBOTNDOTU5MDQ4NEM1QkFEOTMxNkVBIC8qIEpTU2NyaXB0RmV0
Y2hlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NjcmlwdEZldGNoZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkJDQ0VDMDMyNUQxRkEyNzAwMEYzOTFE
IC8qIFZlcmlmaWVyU2xvdFZpc2l0b3JJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFZlcmlmaWVyU2xvdFZpc2l0b3JJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTcwMTEzRDQ5MUE4REIwOTMwMDM4NDhDNCAvKiBJdGVyYXRvck9wZXJhdGlv
bnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSXRlcmF0b3JPcGVy
YXRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYxOTcsNiArNjE5OSw3
IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQkwRjI0RTUzQjE3RUE5RjU5MDBBQkIyMTcgLyogQXNz
ZW1ibHlIZWxwZXJzLmNwcCAqLywKIAkJCQkwRjI0RTUzQzE3RUE5RjU5MDBBQkIyMTcgLyogQXNz
ZW1ibHlIZWxwZXJzLmggKi8sCisJCQkJNkI3NjdFN0EyNjc5MUYyNzAwMTdGOEQxIC8qIEFzc2Vt
Ymx5SGVscGVyc1Nwb29sZXJzLmggKi8sCiAJCQkJNzIzOTk4RjYyNjVEQkNEQjAwNTc4NjdGIC8q
IEJhc2VsaW5lSklUUGxhbi5jcHAgKi8sCiAJCQkJNzIzOTk4RjUyNjVEQkNEQjAwNTc4NjdGIC8q
IEJhc2VsaW5lSklUUGxhbi5oICovLAogCQkJCTBGNjRCMjZGMUE3ODRCQUYwMDZFNEU2NiAvKiBC
aW5hcnlTd2l0Y2guY3BwICovLApAQCAtOTE1MSw2ICs5MTU0LDcgQEAKIAkJCQlGRTkxMkI1MTI1
MzExQUQxMDBGQUJEREYgLyogQWJzdHJhY3RTbG90VmlzaXRvcklubGluZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTUzNEUwMzRFMUU0RDRCMTYwMDIxM0Y2NCAvKiBBY2Nlc3NDYXNlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlFM0JGRDBCQzFEQUY4MDhFMDA2NURFQTIgLyogQWNjZXNzQ2FzZVNuaXBw
ZXRQYXJhbXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTZCNzY3RTdCMjY3OTFGMjcwMDE3RjhEMSAv
KiBBc3NlbWJseUhlbHBlcnNTcG9vbGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTM3MEI0RjYx
QkYyNjIwNTAwNUM0MEZDIC8qIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2lu
dEJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTkxNjhCRDg3MjQ0N0JBNEUwMDgwRkZCNCAvKiBB
Z2dyZWdhdGVFcnJvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTE4RTE1QzMyNDQ3QjIyNzAwNDQ3
QTU2IC8qIEFnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAko
cmV2aXNpb24gMjc4ODg2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMzcsNyArMzM3LDcgQEAgcHVibGljOgog
ICAgICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKHNpemVvZihkb3VibGUpKSwgc3RhY2tQb2ludGVy
UmVnaXN0ZXIpOwogICAgIH0KICAgICAKLSAgICBzdGF0aWMgcHRyZGlmZl90IHB1c2hUb1NhdmVC
eXRlT2Zmc2V0KCkgeyByZXR1cm4gc2l6ZW9mKHZvaWQqKTsgfQorICAgIHN0YXRpYyBjb25zdGV4
cHIgcHRyZGlmZl90IHB1c2hUb1NhdmVCeXRlT2Zmc2V0KCkgeyByZXR1cm4gc2l6ZW9mKHZvaWQq
KTsgfQogI2VuZGlmIC8vICFDUFUoQVJNNjQpCiAKICNpZiBDUFUoWDg2XzY0KSB8fCBDUFUoQVJN
NjQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
QVJNNjQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyQVJNNjQuaAkocmV2aXNpb24gMjc4ODg2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTI1MDQsNyArMjUwNCw3IEBAIHB1YmxpYzoKICAgICAgICAgc3RvcmVEb3VibGUoc3JjLCBzdGFj
a1BvaW50ZXJSZWdpc3Rlcik7CiAgICAgfQogCi0gICAgc3RhdGljIHB0cmRpZmZfdCBwdXNoVG9T
YXZlQnl0ZU9mZnNldCgpIHsgcmV0dXJuIDE2OyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBwdHJk
aWZmX3QgcHVzaFRvU2F2ZUJ5dGVPZmZzZXQoKSB7IHJldHVybiAxNjsgfQogCiAgICAgLy8gUmVn
aXN0ZXIgbW92ZSBvcGVyYXRpb25zOgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09TUkV4aXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT1NSRXhpdC5jcHAJKHJldmlzaW9uIDI3ODg4NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT1NSRXhpdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIAog
I2lmIEVOQUJMRShERkdfSklUKQogCi0jaW5jbHVkZSAiQXNzZW1ibHlIZWxwZXJzLmgiCisjaW5j
bHVkZSAiQXNzZW1ibHlIZWxwZXJzU3Bvb2xlcnMuaCIKICNpbmNsdWRlICJCeXRlY29kZVN0cnVj
dHMuaCIKICNpbmNsdWRlICJDaGVja3BvaW50T1NSRXhpdFNpZGVTdGF0ZS5oIgogI2luY2x1ZGUg
IkRGR0dyYXBoLmgiCkBAIC01NjIsMTMgKzU2MiwxOSBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVF
eGl0KENDYWxsSGVscGVycyYgCiAgICAgLy8gZG8gdGhpcyBldmVuIGZvciBzdGF0ZSB0aGF0J3Mg
YWxyZWFkeSBpbiB0aGUgcmlnaHQgcGxhY2Ugb24gdGhlIHN0YWNrLgogICAgIC8vIEl0IG1ha2Vz
IHRoaW5ncyBzaW1wbGVyIGxhdGVyLgogCisgICAgYm9vbCBpbmxpbmVTdGFja0NvbnRhaW5zQWN0
aXZlQ2hlY2twb2ludCA9IGV4aXQubV9jb2RlT3JpZ2luLmlubGluZVN0YWNrQ29udGFpbnNBY3Rp
dmVDaGVja3BvaW50KCk7CisgICAgc2l6ZV90IGZpcnN0VG1wVG9SZXN0b3JlRWFybHkgPSBvcGVy
YW5kcy5zaXplKCkgLSBvcGVyYW5kcy5udW1iZXJPZlRtcHMoKTsKKyAgICBpZiAoIWlubGluZVN0
YWNrQ29udGFpbnNBY3RpdmVDaGVja3BvaW50KQorICAgICAgICBmaXJzdFRtcFRvUmVzdG9yZUVh
cmx5ID0gb3BlcmFuZHMuc2l6ZSgpOyAvLyBEb24ndCBlYWdlcmx5IHJlc3RvcmUuCisKICAgICAv
LyBUaGUgdGFnIHJlZ2lzdGVycyBhcmUgbmVlZGVkIHRvIG1hdGVyaWFsaXplIHJlY292ZXJpZXMg
YmVsb3cuCiAgICAgaml0LmVtaXRNYXRlcmlhbGl6ZVRhZ0NoZWNrUmVnaXN0ZXJzKCk7CiAKICAg
ICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgb3BlcmFuZHMuc2l6ZSgpOyArK2luZGV4
KSB7CiAgICAgICAgIGNvbnN0IFZhbHVlUmVjb3ZlcnkmIHJlY292ZXJ5ID0gb3BlcmFuZHNbaW5k
ZXhdOwogCi0gICAgICAgIHN3aXRjaCAocmVjb3ZlcnkudGVjaG5pcXVlKCkpIHsKKyAgICAgICAg
YXV0byBjdXJyZW50VGVjaG5pcXVlID0gcmVjb3ZlcnkudGVjaG5pcXVlKCk7CisgICAgICAgIHN3
aXRjaCAoY3VycmVudFRlY2huaXF1ZSkgewogICAgICAgICBjYXNlIERpc3BsYWNlZEluSlNTdGFj
azoKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBjYXNlIENlbGxEaXNwbGFjZWRJbkpTU3Rh
Y2s6CkBAIC01OTQsOSArNjAwLDEyIEBAIHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxI
ZWxwZXJzJiAKIAogICAgICAgICBjYXNlIENvbnN0YW50OiB7CiAjaWYgVVNFKEpTVkFMVUU2NCkK
LSAgICAgICAgICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTY0KEpTVmFs
dWU6OmVuY29kZShyZWNvdmVyeS5jb25zdGFudCgpKSksIEdQUkluZm86OnJlZ1QwKTsKLSAgICAg
ICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBzY3JhdGNoICsgaW5kZXgpOwotI2Vs
c2UKKyAgICAgICAgICAgIGlmIChpbmRleCA+PSBmaXJzdFRtcFRvUmVzdG9yZUVhcmx5KSB7Cisg
ICAgICAgICAgICAgICAgQVNTRVJUKG9wZXJhbmRzLm9wZXJhbmRGb3JJbmRleChpbmRleCkuaXNU
bXAoKSk7CisgICAgICAgICAgICAgICAgaml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVk
SW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKHJlY292ZXJ5LmNvbnN0YW50KCkpKSwgR1BSSW5mbzo6cmVn
VDApOworICAgICAgICAgICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBzY3JhdGNo
ICsgaW5kZXgpOworICAgICAgICAgICAgfQorI2Vsc2UgLy8gbm90IFVTRShKU1ZBTFVFNjQpCiAg
ICAgICAgICAgICBqaXQuc3RvcmUzMigKICAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6
OlRydXN0ZWRJbW0zMihyZWNvdmVyeS5jb25zdGFudCgpLnRhZygpKSwKICAgICAgICAgICAgICAg
ICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgp
LT5hc0JpdHMudGFnKTsKQEAgLTc2Niw3ICs3NzUsNyBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVF
eGl0KENDYWxsSGVscGVycyYgCiAgICAgaWYgKGV4aXQuaXNFeGNlcHRpb25IYW5kbGVyKCkpCiAg
ICAgICAgIGppdC5jb3B5Q2FsbGVlU2F2ZXNUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcih2
bS50b3BFbnRyeUZyYW1lKTsKIAotICAgIGlmIChleGl0Lm1fY29kZU9yaWdpbi5pbmxpbmVTdGFj
a0NvbnRhaW5zQWN0aXZlQ2hlY2twb2ludCgpKSB7CisgICAgaWYgKGlubGluZVN0YWNrQ29udGFp
bnNBY3RpdmVDaGVja3BvaW50KSB7CiAgICAgICAgIEVuY29kZWRKU1ZhbHVlKiB0bXBTY3JhdGNo
ID0gc2NyYXRjaCArIG9wZXJhbmRzLnRtcEluZGV4KDApOwogICAgICAgICBqaXQuc2V0dXBBcmd1
bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uTWF0ZXJpYWxpemVPU1JFeGl0U2lkZVN0YXRlKT4oJnZt
LCAmZXhpdCwgdG1wU2NyYXRjaCk7CiAgICAgICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2
bSk7CkBAIC03NzYsNiArNzg1LDE2IEBAIHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxI
ZWxwZXJzJiAKIAogICAgIC8vIERvIGFsbCBkYXRhIGZvcm1hdCBjb252ZXJzaW9ucyBhbmQgc3Rv
cmUgdGhlIHJlc3VsdHMgaW50byB0aGUgc3RhY2suCiAKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAg
IGNvbnN0ZXhwciBHUFJSZWcgc3JjQnVmZmVyR1BSID0gR1BSSW5mbzo6cmVnVDI7CisgICAgY29u
c3RleHByIEdQUlJlZyBkZXN0QnVmZmVyR1BSID0gR1BSSW5mbzo6cmVnVDM7CisgICAgY29uc3Rl
eHByIEdQUlJlZyB1bmRlZmluZWRHUFIgPSBHUFJJbmZvOjpyZWdUNDsKKyAgICBib29sIHVuZGVm
aW5lZEdQUklzSW5pdGlhbGl6ZWQgPSBmYWxzZTsKKworICAgIGppdC5tb3ZlKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbVB0cihzY3JhdGNoKSwgc3JjQnVmZmVyR1BSKTsKKyAgICBqaXQubW92ZShD
Q2FsbEhlbHBlcnM6OmZyYW1lUG9pbnRlclJlZ2lzdGVyLCBkZXN0QnVmZmVyR1BSKTsKKyAgICBD
Q2FsbEhlbHBlcnM6OkNvcHlTcG9vbGVyIHNwb29sZXIoQ0NhbGxIZWxwZXJzOjpDb3B5U3Bvb2xl
cjo6QnVmZmVyUmVnczo6QWxsb3dNb2RpZmljYXRpb24sIGppdCwgc3JjQnVmZmVyR1BSLCBkZXN0
QnVmZmVyR1BSLCBHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDEpOworI2VuZGlmCiAgICAg
Zm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG9wZXJhbmRzLnNpemUoKTsgKytpbmRleCkg
ewogICAgICAgICBjb25zdCBWYWx1ZVJlY292ZXJ5JiByZWNvdmVyeSA9IG9wZXJhbmRzW2luZGV4
XTsKICAgICAgICAgT3BlcmFuZCBvcGVyYW5kID0gb3BlcmFuZHMub3BlcmFuZEZvckluZGV4KGlu
ZGV4KTsKQEAgLTc4Niw2ICs4MDUsMjMgQEAgdm9pZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2Fs
bEhlbHBlcnMmIAogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgc3dpdGNoIChyZWNv
dmVyeS50ZWNobmlxdWUoKSkgeworICAgICAgICBjYXNlIENvbnN0YW50OiB7CisjaWYgVVNFKEpT
VkFMVUU2NCkKKyAgICAgICAgICAgIEVuY29kZWRKU1ZhbHVlIGN1cnJlbnRDb25zdGFudCA9IEpT
VmFsdWU6OmVuY29kZShyZWNvdmVyeS5jb25zdGFudCgpKTsKKyAgICAgICAgICAgIGlmIChjdXJy
ZW50Q29uc3RhbnQgPT0gZW5jb2RlZEpTVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoIXVuZGVmaW5lZEdQUklzSW5pdGlhbGl6ZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgaml0
Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQoZW5jb2RlZEpTVW5kZWZpbmVkKCkpLCB1
bmRlZmluZWRHUFIpOworICAgICAgICAgICAgICAgICAgICB1bmRlZmluZWRHUFJJc0luaXRpYWxp
emVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgc3Bvb2xlci5j
b3B5R1BSKHVuZGVmaW5lZEdQUik7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAg
ICBzcG9vbGVyLm1vdmVDb25zdGFudChjdXJyZW50Q29uc3RhbnQpOworICAgICAgICAgICAgc3Bv
b2xlci5zdG9yZUdQUihvcGVyYW5kLnZpcnR1YWxSZWdpc3RlcigpLm9mZnNldCgpICogc2l6ZW9m
KENQVVJlZ2lzdGVyKSk7CisgICAgICAgICAgICBicmVhazsKKyNlbHNlCisgICAgICAgICAgICBG
QUxMVEhST1VHSDsKKyNlbmRpZgorICAgICAgICB9CiAgICAgICAgIGNhc2UgRGlzcGxhY2VkSW5K
U1N0YWNrOgogICAgICAgICBjYXNlIEJvb2xlYW5EaXNwbGFjZWRJbkpTU3RhY2s6CiAgICAgICAg
IGNhc2UgSW50MzJEaXNwbGFjZWRJbkpTU3RhY2s6CkBAIC03OTUsNyArODMxLDYgQEAgdm9pZCBP
U1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIAogICAgICAgICBjYXNlIFVuYm94ZWRJ
bnQzMkluR1BSOgogICAgICAgICBjYXNlIFVuYm94ZWRDZWxsSW5HUFI6CiAgICAgICAgIGNhc2Ug
VW5ib3hlZERvdWJsZUluRlBSOgotICAgICAgICBjYXNlIENvbnN0YW50OgogICAgICAgICBjYXNl
IEluRlBSOgogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIGNhc2UgSW5HUFI6CkBAIC04MDMs
OCArODM4LDggQEAgdm9pZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIAogICAg
ICAgICBjYXNlIEludDUyRGlzcGxhY2VkSW5KU1N0YWNrOgogICAgICAgICBjYXNlIFVuYm94ZWRT
dHJpY3RJbnQ1MkluR1BSOgogICAgICAgICBjYXNlIFN0cmljdEludDUyRGlzcGxhY2VkSW5KU1N0
YWNrOgotICAgICAgICAgICAgaml0LmxvYWQ2NChzY3JhdGNoICsgaW5kZXgsIEdQUkluZm86OnJl
Z1QwKTsKLSAgICAgICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBBc3NlbWJseUhl
bHBlcnM6OmFkZHJlc3NGb3Iob3BlcmFuZCkpOworICAgICAgICAgICAgc3Bvb2xlci5sb2FkR1BS
KGluZGV4ICogc2l6ZW9mKENQVVJlZ2lzdGVyKSk7CisgICAgICAgICAgICBzcG9vbGVyLnN0b3Jl
R1BSKG9wZXJhbmQudmlydHVhbFJlZ2lzdGVyKCkub2Zmc2V0KCkgKiBzaXplb2YoQ1BVUmVnaXN0
ZXIpKTsKICAgICAgICAgICAgIGJyZWFrOwogI2Vsc2UgLy8gbm90IFVTRShKU1ZBTFVFNjQpCiAg
ICAgICAgIGNhc2UgSW5QYWlyOgpAQCAtODMzLDYgKzg2OCw5IEBAIHZvaWQgT1NSRXhpdDo6Y29t
cGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiAKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgfQorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgc3Bvb2xlci5mbHVzaEdQUigpOworI2VuZGlm
CiAKICAgICAvLyBOb3cgdGhhdCB0aGluZ3Mgb24gdGhlIHN0YWNrIGFyZSByZWNvdmVyZWQsIGRv
IHRoZSBhcmd1bWVudHMgcmVjb3ZlcnkuIFdlIGFzc3VtZSB0aGF0IGFyZ3VtZW50cwogICAgIC8v
IHJlY292ZXJpZXMgZG9uJ3QgcmVjdXJzaXZlbHkgcmVmZXIgdG8gZWFjaCBvdGhlci4gQnV0LCB3
ZSBkb24ndCB0cnkgdG8gYXNzdW1lIHRoYXQgdGhleSBvbmx5CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCShy
ZXZpc2lvbiAyNzg4ODYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRD
b21waWxlckNvbW1vbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4NCw3ICsyODQsNyBAQCB2b2lk
IHJlaWZ5SW5saW5lZENhbGxGcmFtZXMoQ0NhbGxIZWxwZXJzCiAgICAgICAgICAgICBqaXQuYWRk
UHRyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKHNpemVvZihDYWxsZXJGcmFtZUFuZFBD
KSksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjpyZWdUMik7CiAgICAgICAg
ICAgICBqaXQudW50YWdQdHIoR1BSSW5mbzo6cmVnVDIsIEdQUkluZm86OnJlZ1QzKTsKICAgICAg
ICAgICAgIGppdC5hZGRQdHIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoaW5saW5lQ2Fs
bEZyYW1lLT5yZXR1cm5QQ09mZnNldCgpICsgc2l6ZW9mKHZvaWQqKSksIEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjpyZWdUMik7Ci0gICAgICAgICAgICBqaXQudmFsaWRhdGVV
bnRhZ2dlZFB0cihHUFJJbmZvOjpyZWdUMywgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgICAg
ICAgICBqaXQudmFsaWRhdGVVbnRhZ2dlZFB0cihHUFJJbmZvOjpyZWdUMywgR1BSSW5mbzo6cmVn
VDQpOwogICAgICAgICAgICAgaml0LnRhZ1B0cihHUFJJbmZvOjpyZWdUMiwgR1BSSW5mbzo6cmVn
VDMpOwogI2VuZGlmCiAgICAgICAgICAgICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6cmVnVDMsIEFz
c2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvckJ5dGVPZmZzZXQoaW5saW5lQ2FsbEZyYW1lLT5yZXR1
cm5QQ09mZnNldCgpKSk7CkBAIC0zMDUsOSArMzA1LDkgQEAgdm9pZCByZWlmeUlubGluZWRDYWxs
RnJhbWVzKENDYWxsSGVscGVycwogCiAjaWYgQ1BVKEFSTTY0RSkKICAgICAgICAgICAgIGppdC5h
ZGRQdHIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoaW5saW5lQ2FsbEZyYW1lLT5yZXR1
cm5QQ09mZnNldCgpICsgc2l6ZW9mKHZvaWQqKSksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
LCBHUFJJbmZvOjpyZWdUMik7Ci0gICAgICAgICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIoanVtcFRhcmdldC51bnRhZ2dlZEV4ZWN1dGFibGVBZGRyZXNzKCkpLCBH
UFJJbmZvOjpub25BcmdHUFIwKTsKLSAgICAgICAgICAgIGppdC50YWdQdHIoR1BSSW5mbzo6cmVn
VDIsIEdQUkluZm86Om5vbkFyZ0dQUjApOwotICAgICAgICAgICAgaml0LnN0b3JlUHRyKEdQUklu
Zm86Om5vbkFyZ0dQUjAsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvckJ5dGVPZmZzZXQoaW5s
aW5lQ2FsbEZyYW1lLT5yZXR1cm5QQ09mZnNldCgpKSk7CisgICAgICAgICAgICBqaXQubW92ZShB
c3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoanVtcFRhcmdldC51bnRhZ2dlZEV4ZWN1dGFi
bGVBZGRyZXNzKCkpLCBHUFJJbmZvOjpyZWdUNCk7CisgICAgICAgICAgICBqaXQudGFnUHRyKEdQ
UkluZm86OnJlZ1QyLCBHUFJJbmZvOjpyZWdUNCk7CisgICAgICAgICAgICBqaXQuc3RvcmVQdHIo
R1BSSW5mbzo6cmVnVDQsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvckJ5dGVPZmZzZXQoaW5s
aW5lQ2FsbEZyYW1lLT5yZXR1cm5QQ09mZnNldCgpKSk7CiAjZWxzZQogICAgICAgICAgICAgaml0
LnN0b3JlUHRyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cihqdW1wVGFyZ2V0LnVudGFn
Z2VkRXhlY3V0YWJsZUFkZHJlc3MoKSksIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvckJ5dGVP
ZmZzZXQoaW5saW5lQ2FsbEZyYW1lLT5yZXR1cm5QQ09mZnNldCgpKSk7CiAjZW5kaWYKQEAgLTMx
OCwxMSArMzE4LDExIEBAIHZvaWQgcmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyhDQ2FsbEhlbHBlcnMK
ICAgICAgICAgLy8gUmVzdG9yZSB0aGUgaW5saW5lIGNhbGwgZnJhbWUncyBjYWxsZWUgc2F2ZSBy
ZWdpc3RlcnMuCiAgICAgICAgIC8vIElmIHRoaXMgaW5saW5lZCBmcmFtZSBpcyBhIHRhaWwgY2Fs
bCB0aGF0IHdpbGwgcmV0dXJuIGJhY2sgdG8gdGhlIG9yaWdpbmFsIGNhbGxlciwgd2UgbmVlZCB0
bwogICAgICAgICAvLyBjb3B5IHRoZSBwcmlvciBjb250ZW50cyBvZiB0aGUgdGFnIHJlZ2lzdGVy
cyBhbHJlYWR5IHNhdmVkIGZvciB0aGUgb3V0ZXIgZnJhbWUgdG8gdGhpcyBmcmFtZS4KLSAgICAg
ICAgaml0LmVtaXRTYXZlT3JDb3B5Q2FsbGVlU2F2ZXNGb3IoCisgICAgICAgIGppdC5lbWl0U2F2
ZU9yQ29weUxMSW50QmFzZWxpbmVDYWxsZWVTYXZlc0ZvcigKICAgICAgICAgICAgIGJhc2VsaW5l
Q29kZUJsb2NrLAogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8VmlydHVhbFJlZ2lzdGVyPihpbmxp
bmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0KSwKICAgICAgICAgICAgIHRydWVDYWxsZXIgPyBBc3Nl
bWJseUhlbHBlcnM6OlVzZUV4aXN0aW5nVGFnUmVnaXN0ZXJDb250ZW50cyA6IEFzc2VtYmx5SGVs
cGVyczo6Q29weUJhc2VsaW5lQ2FsbGVlU2F2ZWRSZWdpc3RlcnNGcm9tQmFzZUZyYW1lLAotICAg
ICAgICAgICAgR1BSSW5mbzo6cmVnVDIpOworICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDIsIEdQ
UkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUNCk7CiAKICAgICAgICAgaWYgKGNhbGxlcklzTExJ
bnQpIHsKICAgICAgICAgICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2tGb3JDYWxsZXIg
PSBqaXQuYmFzZWxpbmVDb2RlQmxvY2tGb3IoKnRydWVDYWxsZXIpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmNwcAkocmV2aXNpb24gMjc4ODg2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2
ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoREZHX0pJVCkKIAorI2luY2x1ZGUgIkFzc2VtYmx5SGVs
cGVyc1Nwb29sZXJzLmgiCiAjaW5jbHVkZSAiQ0NhbGxIZWxwZXJzLmgiCiAjaW5jbHVkZSAiREZH
SklUQ29kZS5oIgogI2luY2x1ZGUgIkRGR09TUkV4aXQuaCIKQEAgLTQ5LDM0ICs1MCw3MyBAQCBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IG9zCiAgICAgc2l6ZV90IHNjcmF0
Y2hTaXplID0gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAqIChHUFJJbmZvOjpudW1iZXJPZlJlZ2lz
dGVycyArIEZQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzKTsKICAgICBTY3JhdGNoQnVmZmVyKiBz
Y3JhdGNoQnVmZmVyID0gdm0uc2NyYXRjaEJ1ZmZlckZvclNpemUoc2NyYXRjaFNpemUpOwogICAg
IEVuY29kZWRKU1ZhbHVlKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxFbmNvZGVkSlNWYWx1ZSo+KHNj
cmF0Y2hCdWZmZXItPmRhdGFCdWZmZXIoKSk7Ci0gICAgCi0gICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyArK2kpIHsKKworI2lmIENQVShBUk02
NCkKKyAgICBjb25zdGV4cHIgR1BSUmVnIGJ1ZmZlckdQUiA9IENDYWxsSGVscGVyczo6bWVtb3J5
VGVtcFJlZ2lzdGVyOworICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBmaXJzdEdQUiA9IDA7CisjZWxp
ZiBDUFUoWDg2XzY0KQorICAgIEdQUlJlZyBidWZmZXJHUFIgPSBqaXQuc2NyYXRjaFJlZ2lzdGVy
KCk7CisgICAgY29uc3RleHByIHVuc2lnbmVkIGZpcnN0R1BSID0gMDsKKyNlbHNlCisgICAgR1BS
UmVnIGJ1ZmZlckdQUiA9IEdQUkluZm86OnRvUmVnaXN0ZXIoMCk7CisgICAgY29uc3RleHByIHVu
c2lnbmVkIGZpcnN0R1BSID0gMTsKKyNlbmRpZgorCisgICAgaWYgY29uc3RleHByIChmaXJzdEdQ
UikgeworICAgICAgICAvLyBXZSdyZSB1c2luZyB0aGUgZmlyc3RHUFIgYXMgdGhlIGJ1ZmZlckdQ
UiwgYW5kIG5lZWQgdG8gc2F2ZSBpdCBtYW51YWxseS4KKyAgICAgICAgUkVMRUFTRV9BU1NFUlQo
R1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgPj0gMSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGJ1ZmZlckdQUiA9PSBHUFJJbmZvOjp0b1JlZ2lzdGVyKDApKTsKICNpZiBVU0UoSlNWQUxVRTY0
KQotICAgICAgICBqaXQuc3RvcmU2NChHUFJJbmZvOjp0b1JlZ2lzdGVyKGkpLCBidWZmZXIgKyBp
KTsKKyAgICAgICAgaml0LnN0b3JlNjQoYnVmZmVyR1BSLCBidWZmZXIpOwogI2Vsc2UKLSAgICAg
ICAgaml0LnN0b3JlMzIoR1BSSW5mbzo6dG9SZWdpc3RlcihpKSwgYnVmZmVyICsgaSk7CisgICAg
ICAgIGppdC5zdG9yZTMyKGJ1ZmZlckdQUiwgYnVmZmVyKTsKICNlbmRpZgogICAgIH0KKworICAg
IGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihidWZmZXIpLCBidWZmZXJHUFIp
OworCisgICAgQ0NhbGxIZWxwZXJzOjpTdG9yZVJlZ1Nwb29sZXIgc3RvcmVTcG9vbGVyKGppdCwg
YnVmZmVyR1BSKTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IGZpcnN0R1BSOyBpIDwgR1BSSW5m
bzo6bnVtYmVyT2ZSZWdpc3RlcnM7ICsraSkgeworICAgICAgICBwdHJkaWZmX3Qgb2Zmc2V0ID0g
aSAqIHNpemVvZihDUFVSZWdpc3Rlcik7CisgICAgICAgIHN0b3JlU3Bvb2xlci5zdG9yZUdQUih7
IEdQUkluZm86OnRvUmVnaXN0ZXIoaSksIG9mZnNldCB9KTsKKyAgICB9CisgICAgc3RvcmVTcG9v
bGVyLmZsdXNoR1BSKCk7CisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgRlBSSW5mbzo6
bnVtYmVyT2ZSZWdpc3RlcnM7ICsraSkgewotICAgICAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbVB0cihidWZmZXIgKyBHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyArIGkp
LCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgIGppdC5zdG9yZURvdWJsZShGUFJJbmZvOjp0b1Jl
Z2lzdGVyKGkpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCkpOworICAg
ICAgICBwdHJkaWZmX3Qgb2Zmc2V0ID0gKEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzICsgaSkg
KiBzaXplb2YoZG91YmxlKTsKKyAgICAgICAgc3RvcmVTcG9vbGVyLnN0b3JlRlBSKHsgRlBSSW5m
bzo6dG9SZWdpc3RlcihpKSwgb2Zmc2V0IH0pOwogICAgIH0KLSAgICAKKyAgICBzdG9yZVNwb29s
ZXIuZmx1c2hGUFIoKTsKKwogICAgIC8vIFNldCB1cCBvbmUgYXJndW1lbnQuCiAgICAgaml0Lm1v
dmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAg
ICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKIAogICAgIE1hY3JvQXNzZW1ibGVyOjpD
YWxsIGZ1bmN0aW9uQ2FsbCA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7CiAKKyAgICBqaXQu
bW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoYnVmZmVyKSwgYnVmZmVyR1BSKTsKKyAg
ICBDQ2FsbEhlbHBlcnM6OkxvYWRSZWdTcG9vbGVyIGxvYWRsU3Bvb2xlcihqaXQsIGJ1ZmZlckdQ
Uik7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBmaXJzdEdQUjsgaSA8IEdQUkluZm86Om51bWJl
ck9mUmVnaXN0ZXJzOyArK2kpIHsKKyAgICAgICAgcHRyZGlmZl90IG9mZnNldCA9IGkgKiBzaXpl
b2YoQ1BVUmVnaXN0ZXIpOworICAgICAgICBsb2FkbFNwb29sZXIubG9hZEdQUih7IEdQUkluZm86
OnRvUmVnaXN0ZXIoaSksIG9mZnNldCB9KTsKKyAgICB9CisgICAgbG9hZGxTcG9vbGVyLmZsdXNo
R1BSKCk7CisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgRlBSSW5mbzo6bnVtYmVyT2ZS
ZWdpc3RlcnM7ICsraSkgewotICAgICAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbVB0cihidWZmZXIgKyBHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyArIGkpLCBHUFJJbmZv
OjpyZWdUMCk7Ci0gICAgICAgIGppdC5sb2FkRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KEdQUkluZm86OnJlZ1QwKSwgRlBSSW5mbzo6dG9SZWdpc3RlcihpKSk7CisgICAgICAgIHB0cmRp
ZmZfdCBvZmZzZXQgPSAoR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgKyBpKSAqIHNpemVvZihk
b3VibGUpOworICAgICAgICBsb2FkbFNwb29sZXIubG9hZEZQUih7IEZQUkluZm86OnRvUmVnaXN0
ZXIoaSksIG9mZnNldCB9KTsKICAgICB9Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEdQ
UkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyArK2kpIHsKKyAgICBsb2FkbFNwb29sZXIuZmx1c2hG
UFIoKTsKKworICAgIGlmIGNvbnN0ZXhwciAoZmlyc3RHUFIpIHsKKyAgICAgICAgLy8gV2UncmUg
dXNpbmcgdGhlIGZpcnN0R1BSIGFzIHRoZSBidWZmZXJHUFIsIGFuZCBuZWVkIHRvIHJlc3RvcmUg
aXQgbWFudWFsbHkuCisgICAgICAgIEFTU0VSVChidWZmZXJHUFIgPT0gR1BSSW5mbzo6dG9SZWdp
c3RlcigwKSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgaml0LmxvYWQ2NChidWZmZXIg
KyBpLCBHUFJJbmZvOjp0b1JlZ2lzdGVyKGkpKTsKKyAgICAgICAgaml0LmxvYWQ2NChidWZmZXIs
IGJ1ZmZlckdQUik7CiAjZWxzZQotICAgICAgICBqaXQubG9hZDMyKGJ1ZmZlciArIGksIEdQUklu
Zm86OnRvUmVnaXN0ZXIoaSkpOworICAgICAgICBqaXQubG9hZDMyKGJ1ZmZlciwgYnVmZmVyR1BS
KTsKICNlbmRpZgogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExT
YXZlUmVzdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExTYXZlUmVzdG9yZS5jcHAJKHJldmlzaW9uIDI3ODg4NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMU2F2ZVJlc3RvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDkgKzI4
LDEwIEBACiAKICNpZiBFTkFCTEUoRlRMX0pJVCkKIAorI2luY2x1ZGUgIkFzc2VtYmx5SGVscGVy
c1Nwb29sZXJzLmgiCiAjaW5jbHVkZSAiRlBSSW5mby5oIgogI2luY2x1ZGUgIkdQUkluZm8uaCIK
LSNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgorI2luY2x1ZGUgIlJlZy5oIgogI2luY2x1ZGUg
IlJlZ2lzdGVyU2V0LmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKQEAgLTc3
LDcwICs3OCwxMDQgQEAgc3RydWN0IFJlZ3MgewogICAgIHsKICAgICAgICAgc3BlY2lhbCA9IFJl
Z2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpOwogICAgICAgICBzcGVjaWFsLm1lcmdlKFJlZ2lz
dGVyU2V0OjpyZXNlcnZlZEhhcmR3YXJlUmVnaXN0ZXJzKCkpOwotICAgICAgICAKKwogICAgICAg
ICBmaXJzdCA9IE1hY3JvQXNzZW1ibGVyOjpmaXJzdFJlZ2lzdGVyKCk7CiAgICAgICAgIHdoaWxl
IChzcGVjaWFsLmdldChmaXJzdCkpCiAgICAgICAgICAgICBmaXJzdCA9IE1hY3JvQXNzZW1ibGVy
OjpuZXh0UmVnaXN0ZXIoZmlyc3QpOwotICAgICAgICBzZWNvbmQgPSBNYWNyb0Fzc2VtYmxlcjo6
bmV4dFJlZ2lzdGVyKGZpcnN0KTsKLSAgICAgICAgd2hpbGUgKHNwZWNpYWwuZ2V0KHNlY29uZCkp
Ci0gICAgICAgICAgICBzZWNvbmQgPSBNYWNyb0Fzc2VtYmxlcjo6bmV4dFJlZ2lzdGVyKHNlY29u
ZCk7CiAgICAgfQotICAgIAorCisgICAgR1BSUmVnIG5leHRSZWdpc3RlcihHUFJSZWcgY3VycmVu
dCkKKyAgICB7CisgICAgICAgIGF1dG8gbmV4dCA9IE1hY3JvQXNzZW1ibGVyOjpuZXh0UmVnaXN0
ZXIoY3VycmVudCk7CisgICAgICAgIHdoaWxlIChzcGVjaWFsLmdldChuZXh0KSkKKyAgICAgICAg
ICAgIG5leHQgPSBNYWNyb0Fzc2VtYmxlcjo6bmV4dFJlZ2lzdGVyKG5leHQpOworICAgICAgICBy
ZXR1cm4gbmV4dDsKKyAgICB9CisKKyAgICBGUFJSZWcgbmV4dEZQUmVnaXN0ZXIoRlBSUmVnIGN1
cnJlbnQpCisgICAgeworICAgICAgICBhdXRvIG5leHQgPSBNYWNyb0Fzc2VtYmxlcjo6bmV4dEZQ
UmVnaXN0ZXIoY3VycmVudCk7CisgICAgICAgIHdoaWxlIChzcGVjaWFsLmdldChuZXh0KSkKKyAg
ICAgICAgICAgIG5leHQgPSBNYWNyb0Fzc2VtYmxlcjo6bmV4dEZQUmVnaXN0ZXIobmV4dCk7Cisg
ICAgICAgIHJldHVybiBuZXh0OworICAgIH0KKwogICAgIFJlZ2lzdGVyU2V0IHNwZWNpYWw7CiAg
ICAgR1BSUmVnIGZpcnN0OwotICAgIEdQUlJlZyBzZWNvbmQ7CiB9OwogCiB9IC8vIGFub255bW91
cyBuYW1lc3BhY2UKIAotdm9pZCBzYXZlQWxsUmVnaXN0ZXJzKE1hY3JvQXNzZW1ibGVyJiBqaXQs
IGNoYXIqIHNjcmF0Y2hNZW1vcnkpCit2b2lkIHNhdmVBbGxSZWdpc3RlcnMoQXNzZW1ibHlIZWxw
ZXJzJiBqaXQsIGNoYXIqIHNjcmF0Y2hNZW1vcnkpCiB7CiAgICAgUmVncyByZWdzOwogICAgIAog
ICAgIC8vIEdldCB0aGUgZmlyc3QgcmVnaXN0ZXIgb3V0IG9mIHRoZSB3YXksIHNvIHRoYXQgd2Ug
Y2FuIHVzZSBpdCBhcyBhIHBvaW50ZXIuCi0gICAgaml0LnBva2U2NChyZWdzLmZpcnN0LCAwKTsK
LSAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihzY3JhdGNoTWVtb3J5
KSwgcmVncy5maXJzdCk7Ci0gICAgCisgICAgR1BSUmVnIGJhc2VHUFIgPSByZWdzLmZpcnN0Owor
I2lmIENQVShBUk02NCkKKyAgICBHUFJSZWcgbmV4dEdQUiA9IHJlZ3MubmV4dFJlZ2lzdGVyKGJh
c2VHUFIpOworICAgIEdQUlJlZyBmaXJzdFRvU2F2ZUdQUiA9IHJlZ3MubmV4dFJlZ2lzdGVyKG5l
eHRHUFIpOworICAgIEFTU0VSVChiYXNlR1BSID09IEFSTTY0UmVnaXN0ZXJzOjp4MCk7CisgICAg
QVNTRVJUKG5leHRHUFIgPT0gQVJNNjRSZWdpc3RlcnM6OngxKTsKKyNlbHNlCisgICAgR1BSUmVn
IGZpcnN0VG9TYXZlR1BSID0gcmVncy5uZXh0UmVnaXN0ZXIoYmFzZUdQUik7CisjZW5kaWYKKyAg
ICBqaXQucG9rZTY0KGJhc2VHUFIsIDApOworICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tUHRyKHNjcmF0Y2hNZW1vcnkpLCBiYXNlR1BSKTsKKworICAgIEFzc2VtYmx5SGVs
cGVyczo6U3RvcmVSZWdTcG9vbGVyIHNwb29sZXIoaml0LCBiYXNlR1BSKTsKKwogICAgIC8vIEdl
dCBhbGwgb2YgdGhlIG90aGVyIEdQUnMgb3V0IG9mIHRoZSB3YXkuCi0gICAgZm9yIChNYWNyb0Fz
c2VtYmxlcjo6UmVnaXN0ZXJJRCByZWcgPSByZWdzLnNlY29uZDsgcmVnIDw9IE1hY3JvQXNzZW1i
bGVyOjpsYXN0UmVnaXN0ZXIoKTsgcmVnID0gTWFjcm9Bc3NlbWJsZXI6Om5leHRSZWdpc3Rlcihy
ZWcpKSB7Ci0gICAgICAgIGlmIChyZWdzLnNwZWNpYWwuZ2V0KHJlZykpCi0gICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgaml0LnN0b3JlNjQocmVnLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhyZWdzLmZpcnN0LCBvZmZzZXRPZkdQUihyZWcpKSk7Ci0gICAgfQorICAgIGZvciAoR1BSUmVn
IHJlZyA9IGZpcnN0VG9TYXZlR1BSOyByZWcgPD0gTWFjcm9Bc3NlbWJsZXI6Omxhc3RSZWdpc3Rl
cigpOyByZWcgPSByZWdzLm5leHRSZWdpc3RlcihyZWcpKQorICAgICAgICBzcG9vbGVyLnN0b3Jl
R1BSKHsgcmVnLCBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KG9mZnNldE9mR1BSKHJlZykpIH0pOwor
ICAgIHNwb29sZXIuZmx1c2hHUFIoKTsKICAgICAKICAgICAvLyBSZXN0b3JlIHRoZSBmaXJzdCBy
ZWdpc3RlciBpbnRvIHRoZSBzZWNvbmQgb25lIGFuZCBzYXZlIGl0LgotICAgIGppdC5wZWVrNjQo
cmVncy5zZWNvbmQsIDApOwotICAgIGppdC5zdG9yZTY0KHJlZ3Muc2Vjb25kLCBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhyZWdzLmZpcnN0LCBvZmZzZXRPZkdQUihyZWdzLmZpcnN0KSkpOworICAg
IGppdC5wZWVrNjQoZmlyc3RUb1NhdmVHUFIsIDApOworI2lmIENQVShBUk02NCkKKyAgICBqaXQu
c3RvcmVQYWlyNjQoZmlyc3RUb1NhdmVHUFIsIG5leHRHUFIsIGJhc2VHUFIsIEFzc2VtYmx5SGVs
cGVyczo6VHJ1c3RlZEltbTMyKG9mZnNldE9mR1BSKGJhc2VHUFIpKSk7CisjZWxzZQorICAgIGpp
dC5zdG9yZTY0KGZpcnN0VG9TYXZlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BS
LCBvZmZzZXRPZkdQUihiYXNlR1BSKSkpOworI2VuZGlmCiAgICAgCiAgICAgLy8gRmluYWxseSBz
YXZlIGFsbCBGUFIncy4KLSAgICBmb3IgKE1hY3JvQXNzZW1ibGVyOjpGUFJlZ2lzdGVySUQgcmVn
ID0gTWFjcm9Bc3NlbWJsZXI6OmZpcnN0RlBSZWdpc3RlcigpOyByZWcgPD0gTWFjcm9Bc3NlbWJs
ZXI6Omxhc3RGUFJlZ2lzdGVyKCk7IHJlZyA9IE1hY3JvQXNzZW1ibGVyOjpuZXh0RlBSZWdpc3Rl
cihyZWcpKSB7Ci0gICAgICAgIGlmIChyZWdzLnNwZWNpYWwuZ2V0KHJlZykpCi0gICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgaml0LnN0b3JlRG91YmxlKHJlZywgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MocmVncy5maXJzdCwgb2Zmc2V0T2ZGUFIocmVnKSkpOwotICAgIH0KKyAgICBmb3Ig
KE1hY3JvQXNzZW1ibGVyOjpGUFJlZ2lzdGVySUQgcmVnID0gTWFjcm9Bc3NlbWJsZXI6OmZpcnN0
RlBSZWdpc3RlcigpOyByZWcgPD0gTWFjcm9Bc3NlbWJsZXI6Omxhc3RGUFJlZ2lzdGVyKCk7IHJl
ZyA9IHJlZ3MubmV4dEZQUmVnaXN0ZXIocmVnKSkKKyAgICAgICAgc3Bvb2xlci5zdG9yZUZQUih7
IHJlZywgc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihvZmZzZXRPZkZQUihyZWcpKSB9KTsKKyAgICBz
cG9vbGVyLmZsdXNoRlBSKCk7CiB9CiAKLXZvaWQgcmVzdG9yZUFsbFJlZ2lzdGVycyhNYWNyb0Fz
c2VtYmxlciYgaml0LCBjaGFyKiBzY3JhdGNoTWVtb3J5KQordm9pZCByZXN0b3JlQWxsUmVnaXN0
ZXJzKEFzc2VtYmx5SGVscGVycyYgaml0LCBjaGFyKiBzY3JhdGNoTWVtb3J5KQogewogICAgIFJl
Z3MgcmVnczsKICAgICAKICAgICAvLyBHaXZlIG91cnNlbHZlcyBhIHBvaW50ZXIgdG8gdGhlIHNj
cmF0Y2ggbWVtb3J5LgotICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
KHNjcmF0Y2hNZW1vcnkpLCByZWdzLmZpcnN0KTsKKyAgICBHUFJSZWcgYmFzZUdQUiA9IHJlZ3Mu
Zmlyc3Q7CisgICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoc2NyYXRj
aE1lbW9yeSksIGJhc2VHUFIpOwogICAgIAorICAgIEFzc2VtYmx5SGVscGVyczo6TG9hZFJlZ1Nw
b29sZXIgc3Bvb2xlcihqaXQsIGJhc2VHUFIpOworCiAgICAgLy8gUmVzdG9yZSBhbGwgRlBSJ3Mu
Ci0gICAgZm9yIChNYWNyb0Fzc2VtYmxlcjo6RlBSZWdpc3RlcklEIHJlZyA9IE1hY3JvQXNzZW1i
bGVyOjpmaXJzdEZQUmVnaXN0ZXIoKTsgcmVnIDw9IE1hY3JvQXNzZW1ibGVyOjpsYXN0RlBSZWdp
c3RlcigpOyByZWcgPSBNYWNyb0Fzc2VtYmxlcjo6bmV4dEZQUmVnaXN0ZXIocmVnKSkgewotICAg
ICAgICBpZiAocmVncy5zcGVjaWFsLmdldChyZWcpKQotICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgIGppdC5sb2FkRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlZ3MuZmlyc3Qs
IG9mZnNldE9mRlBSKHJlZykpLCByZWcpOwotICAgIH0KLSAgICAKLSAgICBmb3IgKE1hY3JvQXNz
ZW1ibGVyOjpSZWdpc3RlcklEIHJlZyA9IHJlZ3Muc2Vjb25kOyByZWcgPD0gTWFjcm9Bc3NlbWJs
ZXI6Omxhc3RSZWdpc3RlcigpOyByZWcgPSBNYWNyb0Fzc2VtYmxlcjo6bmV4dFJlZ2lzdGVyKHJl
ZykpIHsKLSAgICAgICAgaWYgKHJlZ3Muc3BlY2lhbC5nZXQocmVnKSkKLSAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICBqaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlZ3Mu
Zmlyc3QsIG9mZnNldE9mR1BSKHJlZykpLCByZWcpOwotICAgIH0KLSAgICAKLSAgICBqaXQubG9h
ZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlZ3MuZmlyc3QsIG9mZnNldE9mR1BSKHJlZ3Mu
Zmlyc3QpKSwgcmVncy5maXJzdCk7CisgICAgZm9yIChNYWNyb0Fzc2VtYmxlcjo6RlBSZWdpc3Rl
cklEIHJlZyA9IE1hY3JvQXNzZW1ibGVyOjpmaXJzdEZQUmVnaXN0ZXIoKTsgcmVnIDw9IE1hY3Jv
QXNzZW1ibGVyOjpsYXN0RlBSZWdpc3RlcigpOyByZWcgPSByZWdzLm5leHRGUFJlZ2lzdGVyKHJl
ZykpCisgICAgICAgIHNwb29sZXIubG9hZEZQUih7IHJlZywgc3RhdGljX2Nhc3Q8cHRyZGlmZl90
PihvZmZzZXRPZkZQUihyZWcpKSB9KTsKKyAgICBzcG9vbGVyLmZsdXNoRlBSKCk7CisgICAgCisj
aWYgQ1BVKEFSTTY0KQorICAgIEdQUlJlZyBuZXh0R1BSID0gcmVncy5uZXh0UmVnaXN0ZXIoYmFz
ZUdQUik7CisgICAgR1BSUmVnIGZpcnN0VG9SZXN0b3JlR1BSID0gcmVncy5uZXh0UmVnaXN0ZXIo
bmV4dEdQUik7CisgICAgQVNTRVJUKGJhc2VHUFIgPT0gQVJNNjRSZWdpc3RlcnM6OngwKTsKKyAg
ICBBU1NFUlQobmV4dEdQUiA9PSBBUk02NFJlZ2lzdGVyczo6eDEpOworI2Vsc2UKKyAgICBHUFJS
ZWcgZmlyc3RUb1Jlc3RvcmVHUFIgPSByZWdzLm5leHRSZWdpc3RlcihiYXNlR1BSKTsKKyNlbmRp
ZgorICAgIGZvciAoTWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgcmVnID0gZmlyc3RUb1Jlc3Rv
cmVHUFI7IHJlZyA8PSBNYWNyb0Fzc2VtYmxlcjo6bGFzdFJlZ2lzdGVyKCk7IHJlZyA9IHJlZ3Mu
bmV4dFJlZ2lzdGVyKHJlZykpCisgICAgICAgIHNwb29sZXIubG9hZEdQUih7IHJlZywgc3RhdGlj
X2Nhc3Q8cHRyZGlmZl90PihvZmZzZXRPZkdQUihyZWcpKSB9KTsKKyAgICBzcG9vbGVyLmZsdXNo
R1BSKCk7CisKKyNpZiBDUFUoQVJNNjQpCisgICAgaml0LmxvYWRQYWlyNjQoYmFzZUdQUiwgQXNz
ZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIob2Zmc2V0T2ZHUFIoYmFzZUdQUikpLCBiYXNlR1BS
LCBuZXh0R1BSKTsKKyNlbHNlCisgICAgaml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhiYXNlR1BSLCBvZmZzZXRPZkdQUihiYXNlR1BSKSksIGJhc2VHUFIpOworI2VuZGlmCiB9CiAK
IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpGVEwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMU2F2ZVJlc3RvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTFNhdmVSZXN0b3JlLmgJKHJldmlzaW9uIDI3ODg4NikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMU2F2ZVJlc3RvcmUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMyw3ICszMyw3IEBA
CiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBNYWNyb0Fzc2VtYmxlcjsKK2NsYXNzIEFzc2Vt
Ymx5SGVscGVyczsKIAogbmFtZXNwYWNlIEZUTCB7CiAKQEAgLTQ2LDkgKzQ2LDkgQEAgc2l6ZV90
IG9mZnNldE9mRlBSKEZQUlJlZyk7CiAvLyBBc3N1bWVzIHRoYXQgdG9wLW9mLXN0YWNrIGNhbiBi
ZSB1c2VkIGFzIGEgcG9pbnRlci1zaXplZCBzY3JhdGNocGFkLiBTYXZlcyBhbGwgb2YKIC8vIHRo
ZSByZWdpc3RlcnMgaW50byB0aGUgc2NyYXRjaCBidWZmZXIgc3VjaCB0aGF0IFJlZ2lzdGVySUQg
KiBzaXplb2YoaW50NjRfdCkgaXMgdGhlCiAvLyBvZmZzZXQgb2YgZXZlcnkgcmVnaXN0ZXIuCi12
b2lkIHNhdmVBbGxSZWdpc3RlcnMoTWFjcm9Bc3NlbWJsZXImIGppdCwgY2hhciogc2NyYXRjaE1l
bW9yeSk7Cit2b2lkIHNhdmVBbGxSZWdpc3RlcnMoQXNzZW1ibHlIZWxwZXJzJiBqaXQsIGNoYXIq
IHNjcmF0Y2hNZW1vcnkpOwogCi12b2lkIHJlc3RvcmVBbGxSZWdpc3RlcnMoTWFjcm9Bc3NlbWJs
ZXImIGppdCwgY2hhciogc2NyYXRjaE1lbW9yeSk7Cit2b2lkIHJlc3RvcmVBbGxSZWdpc3RlcnMo
QXNzZW1ibHlIZWxwZXJzJiBqaXQsIGNoYXIqIHNjcmF0Y2hNZW1vcnkpOwogCiB9IH0gLy8gbmFt
ZXNwYWNlIEpTQzo6RlRMCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVGh1
bmtzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFRodW5r
cy5jcHAJKHJldmlzaW9uIDI3ODg4NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
VGh1bmtzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogCiAjaWYgRU5BQkxF
KEZUTF9KSVQpCiAKLSNpbmNsdWRlICJBc3NlbWJseUhlbHBlcnMuaCIKKyNpbmNsdWRlICJBc3Nl
bWJseUhlbHBlcnNTcG9vbGVycy5oIgogI2luY2x1ZGUgIkRGR09TUkV4aXRDb21waWxlckNvbW1v
bi5oIgogI2luY2x1ZGUgIkZUTE9TUkV4aXRDb21waWxlci5oIgogI2luY2x1ZGUgIkZUTE9wZXJh
dGlvbnMuaCIKQEAgLTU2LDMxICs1NiwzNCBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyCiAgICAgfQogICAgIAogICAgIC8vIE5vdGUgdGhhdCB0aGUgInJldHVybiBh
ZGRyZXNzIiB3aWxsIGJlIHRoZSBJRCB0aGF0IHdlIHBhc3MgdG8gdGhlIGdlbmVyYXRpb24gZnVu
Y3Rpb24uCi0gICAgCi0gICAgcHRyZGlmZl90IHN0YWNrTWlzYWxpZ25tZW50ID0gTWFjcm9Bc3Nl
bWJsZXI6OnB1c2hUb1NhdmVCeXRlT2Zmc2V0KCk7Ci0gICAgCisKKyAgICBjb25zdGV4cHIgR1BS
UmVnIHN0YWNrUG9pbnRlclJlZ2lzdGVyID0gTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJl
Z2lzdGVyOworICAgIGNvbnN0ZXhwciBHUFJSZWcgZnJhbWVQb2ludGVyUmVnaXN0ZXIgPSBNYWNy
b0Fzc2VtYmxlcjo6ZnJhbWVQb2ludGVyUmVnaXN0ZXI7CisgICAgY29uc3RleHByIHB0cmRpZmZf
dCBwdXNoVG9TYXZlQnl0ZU9mZnNldCA9IE1hY3JvQXNzZW1ibGVyOjpwdXNoVG9TYXZlQnl0ZU9m
ZnNldCgpOworICAgIHB0cmRpZmZfdCBzdGFja01pc2FsaWdubWVudCA9IHB1c2hUb1NhdmVCeXRl
T2Zmc2V0OworCiAgICAgLy8gUHJldGVuZCB0aGF0IHdlJ3JlIGEgQyBjYWxsIGZyYW1lLgotICAg
IGppdC5wdXNoVG9TYXZlKE1hY3JvQXNzZW1ibGVyOjpmcmFtZVBvaW50ZXJSZWdpc3Rlcik7Ci0g
ICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBNYWNyb0Fz
c2VtYmxlcjo6ZnJhbWVQb2ludGVyUmVnaXN0ZXIpOwotICAgIHN0YWNrTWlzYWxpZ25tZW50ICs9
IE1hY3JvQXNzZW1ibGVyOjpwdXNoVG9TYXZlQnl0ZU9mZnNldCgpOwotICAgIAorICAgIGppdC5w
dXNoVG9TYXZlKGZyYW1lUG9pbnRlclJlZ2lzdGVyKTsKKyAgICBqaXQubW92ZShzdGFja1BvaW50
ZXJSZWdpc3RlciwgZnJhbWVQb2ludGVyUmVnaXN0ZXIpOworICAgIHN0YWNrTWlzYWxpZ25tZW50
ICs9IHB1c2hUb1NhdmVCeXRlT2Zmc2V0OworCiAgICAgLy8gTm93IGNyZWF0ZSBvdXJzZWx2ZXMg
ZW5vdWdoIHN0YWNrIHNwYWNlIHRvIGdpdmUgc2F2ZUFsbFJlZ2lzdGVycygpIGEgc2NyYXRjaCBz
bG90LgogICAgIHVuc2lnbmVkIG51bWJlck9mUmVxdWlyZWRQb3BzID0gMDsKICAgICBkbyB7Ci0g
ICAgICAgIGppdC5wdXNoVG9TYXZlKEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgc3RhY2tNaXNh
bGlnbm1lbnQgKz0gTWFjcm9Bc3NlbWJsZXI6OnB1c2hUb1NhdmVCeXRlT2Zmc2V0KCk7CisgICAg
ICAgIHN0YWNrTWlzYWxpZ25tZW50ICs9IHB1c2hUb1NhdmVCeXRlT2Zmc2V0OwogICAgICAgICBu
dW1iZXJPZlJlcXVpcmVkUG9wcysrOwogICAgIH0gd2hpbGUgKHN0YWNrTWlzYWxpZ25tZW50ICUg
c3RhY2tBbGlnbm1lbnRCeXRlcygpKTsKLSAgICAKKyAgICBqaXQuc3ViUHRyKE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tMzIobnVtYmVyT2ZSZXF1aXJlZFBvcHMgKiBwdXNoVG9TYXZlQnl0ZU9m
ZnNldCksIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKwogICAgIFNjcmF0Y2hCdWZmZXIqIHNjcmF0
Y2hCdWZmZXIgPSB2bS5zY3JhdGNoQnVmZmVyRm9yU2l6ZShyZXF1aXJlZFNjcmF0Y2hNZW1vcnlT
aXplSW5CeXRlcygpKTsKICAgICBjaGFyKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxjaGFyKj4oc2Ny
YXRjaEJ1ZmZlci0+ZGF0YUJ1ZmZlcigpKTsKICAgICAKICAgICBzYXZlQWxsUmVnaXN0ZXJzKGpp
dCwgYnVmZmVyKTsKIAotICAgIGppdC5sb2FkUHRyKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIGppdC5sb2FkUHRyKGZyYW1lUG9pbnRlclJl
Z2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwogICAgIGppdC5wZWVrKAogICAgICAgICBH
UFJJbmZvOjphcmd1bWVudEdQUjEsCi0gICAgICAgIChzdGFja01pc2FsaWdubWVudCAtIE1hY3Jv
QXNzZW1ibGVyOjpwdXNoVG9TYXZlQnl0ZU9mZnNldCgpKSAvIHNpemVvZih2b2lkKikpOworICAg
ICAgICAoc3RhY2tNaXNhbGlnbm1lbnQgLSBwdXNoVG9TYXZlQnl0ZU9mZnNldCkgLyBzaXplb2Yo
dm9pZCopKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogICAgIE1hY3JvQXNz
ZW1ibGVyOjpDYWxsIGZ1bmN0aW9uQ2FsbCA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7CiAK
QEAgLTkyLDE0ICs5NSwxMyBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5r
UHRyCiAgICAgaml0Lm1vdmUoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIEdQUkluZm86OnJlZ1Qw
KTsKIAogICAgIC8vIFByZXBhcmUgZm9yIHRhaWwgY2FsbC4KLSAgICB3aGlsZSAobnVtYmVyT2ZS
ZXF1aXJlZFBvcHMtLSkKLSAgICAgICAgaml0LnBvcFRvUmVzdG9yZShHUFJJbmZvOjpyZWdUMSk7
Ci0gICAgaml0LnBvcFRvUmVzdG9yZShNYWNyb0Fzc2VtYmxlcjo6ZnJhbWVQb2ludGVyUmVnaXN0
ZXIpOwotCi0gICAgLy8gV2hlbiB3ZSBjYW1lIGluIGhlcmUsIHRoZXJlIHdhcyBhbiBhZGRpdGlv
bmFsIHRoaW5nIHB1c2hlZCB0byB0aGUgc3RhY2suIFNvbWUgY2xpZW50cyB3YW50IGl0Ci0gICAg
Ly8gcG9wcGVkIGJlZm9yZSBwcm9jZWVkaW5nLgotICAgIHdoaWxlIChleHRyYVBvcHNUb1Jlc3Rv
cmUtLSkKLSAgICAgICAgaml0LnBvcFRvUmVzdG9yZShHUFJJbmZvOjpyZWdUMSk7CisKKyAgICBq
aXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3Rlciwg
bnVtYmVyT2ZSZXF1aXJlZFBvcHMgKiBwdXNoVG9TYXZlQnl0ZU9mZnNldCksIGZyYW1lUG9pbnRl
clJlZ2lzdGVyKTsKKworICAgIC8vIFdoZW4gd2UgY2FtZSBpbiBoZXJlLCB0aGVyZSB3YXMgYW4g
YWRkaXRpb25hbCB0aGluZyBwdXNoZWQgdG8gdGhlIHN0YWNrIChleHRyYVBvcHNUb1Jlc3RvcmUp
LgorICAgIC8vIFNvbWUgY2xpZW50cyB3YW50IGl0IHBvcHBlZCBiZWZvcmUgcHJvY2VlZGluZy4g
QWxzbyBhZGQgMSBmb3IgdGhlIHB1c2hUb1NhdmUgb2YgdGhlIGZyYW1lUG9pbnRlclJlZ2lzdGVy
LgorICAgIG51bWJlck9mUmVxdWlyZWRQb3BzICs9IDEgKyBleHRyYVBvcHNUb1Jlc3RvcmU7Cisg
ICAgaml0LmFkZFB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKG51bWJlck9mUmVxdWly
ZWRQb3BzICogcHVzaFRvU2F2ZUJ5dGVPZmZzZXQpLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAK
ICAgICAvLyBQdXQgdGhlIHJldHVybiBhZGRyZXNzIHdoZXJldmVyIHRoZSByZXR1cm4gaW5zdHJ1
Y3Rpb24gd2FudHMgaXQuIE9uIGFsbCBwbGF0Zm9ybXMsIHRoaXMKICAgICAvLyBlbnN1cmVzIHRo
YXQgdGhlIHJldHVybiBhZGRyZXNzIGlzIG91dCBvZiB0aGUgd2F5IG9mIHJlZ2lzdGVyIHJlc3Rv
cmF0aW9uLgpAQCAtMTc3LDIxICsxNzksMjUgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBzbAogI2lmIENQVShYODZfNjQpCiAgICAgY3VycmVudE9mZnNldCArPSBzaXpl
b2Yodm9pZCopOwogI2VuZGlmCi0gICAgCisKKyAgICBBc3NlbWJseUhlbHBlcnM6OlN0b3JlUmVn
U3Bvb2xlciBzdG9yZVNwb29sZXIoaml0LCBNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVn
aXN0ZXIpOworCiAgICAgZm9yIChNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRCByZWcgPSBNYWNy
b0Fzc2VtYmxlcjo6Zmlyc3RSZWdpc3RlcigpOyByZWcgPD0gTWFjcm9Bc3NlbWJsZXI6Omxhc3RS
ZWdpc3RlcigpOyByZWcgPSBzdGF0aWNfY2FzdDxNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRD4o
cmVnICsgMSkpIHsKICAgICAgICAgaWYgKCFrZXkudXNlZFJlZ2lzdGVycygpLmdldChyZWcpKQog
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGppdC5zdG9yZVB0cihyZWcsIEFzc2VtYmx5
SGVscGVyczo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIGN1
cnJlbnRPZmZzZXQpKTsKKyAgICAgICAgc3RvcmVTcG9vbGVyLnN0b3JlR1BSKHsgcmVnLCBzdGF0
aWNfY2FzdDxwdHJkaWZmX3Q+KGN1cnJlbnRPZmZzZXQpIH0pOwogICAgICAgICBjdXJyZW50T2Zm
c2V0ICs9IHNpemVvZih2b2lkKik7CiAgICAgfQotICAgIAorICAgIHN0b3JlU3Bvb2xlci5mbHVz
aEdQUigpOworCiAgICAgZm9yIChNYWNyb0Fzc2VtYmxlcjo6RlBSZWdpc3RlcklEIHJlZyA9IE1h
Y3JvQXNzZW1ibGVyOjpmaXJzdEZQUmVnaXN0ZXIoKTsgcmVnIDw9IE1hY3JvQXNzZW1ibGVyOjps
YXN0RlBSZWdpc3RlcigpOyByZWcgPSBzdGF0aWNfY2FzdDxNYWNyb0Fzc2VtYmxlcjo6RlBSZWdp
c3RlcklEPihyZWcgKyAxKSkgewogICAgICAgICBpZiAoIWtleS51c2VkUmVnaXN0ZXJzKCkuZ2V0
KHJlZykpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaml0LnN0b3JlRG91YmxlKHJl
ZywgQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJS
ZWdpc3RlciwgY3VycmVudE9mZnNldCkpOworICAgICAgICBzdG9yZVNwb29sZXIuc3RvcmVGUFIo
eyByZWcsIHN0YXRpY19jYXN0PHB0cmRpZmZfdD4oY3VycmVudE9mZnNldCkgfSk7CiAgICAgICAg
IGN1cnJlbnRPZmZzZXQgKz0gc2l6ZW9mKGRvdWJsZSk7CiAgICAgfQotICAgIAorICAgIHN0b3Jl
U3Bvb2xlci5mbHVzaEZQUigpOworCiAgICAgaml0LnByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVy
Q2FsbChHUFJJbmZvOjpub25BcmdHUFIxKTsKICAgICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6bm9u
QXJnR1BSMSwgQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKE1hY3JvQXNzZW1ibGVyOjpzdGFja1Bv
aW50ZXJSZWdpc3Rlciwga2V5Lm9mZnNldCgpKSk7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0
aW9uKHZtKTsKQEAgLTIxMCwyNCArMjE2LDI4IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz4gc2wKICAgICBqaXQubG9hZFB0cihBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3Mo
TWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBrZXkub2Zmc2V0KCkpLCBHUFJJ
bmZvOjpub25QcmVzZXJ2ZWROb25SZXR1cm5HUFIpOwogICAgIGppdC5yZXN0b3JlUmV0dXJuQWRk
cmVzc0JlZm9yZVJldHVybihHUFJJbmZvOjpub25QcmVzZXJ2ZWROb25SZXR1cm5HUFIpOwogICAg
IAorICAgIEFzc2VtYmx5SGVscGVyczo6TG9hZFJlZ1Nwb29sZXIgbG9hZFNwb29sZXIoaml0LCBN
YWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOworCiAgICAgZm9yIChNYWNyb0Fz
c2VtYmxlcjo6RlBSZWdpc3RlcklEIHJlZyA9IE1hY3JvQXNzZW1ibGVyOjpsYXN0RlBSZWdpc3Rl
cigpOyA7IHJlZyA9IHN0YXRpY19jYXN0PE1hY3JvQXNzZW1ibGVyOjpGUFJlZ2lzdGVySUQ+KHJl
ZyAtIDEpKSB7CiAgICAgICAgIGlmIChrZXkudXNlZFJlZ2lzdGVycygpLmdldChyZWcpKSB7CiAg
ICAgICAgICAgICBjdXJyZW50T2Zmc2V0IC09IHNpemVvZihkb3VibGUpOwotICAgICAgICAgICAg
aml0LmxvYWREb3VibGUoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKE1hY3JvQXNzZW1ibGVyOjpz
dGFja1BvaW50ZXJSZWdpc3RlciwgY3VycmVudE9mZnNldCksIHJlZyk7CisgICAgICAgICAgICBs
b2FkU3Bvb2xlci5sb2FkRlBSKHsgcmVnLCBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KGN1cnJlbnRP
ZmZzZXQpIH0pOwogICAgICAgICB9CiAgICAgICAgIGlmIChyZWcgPT0gTWFjcm9Bc3NlbWJsZXI6
OmZpcnN0RlBSZWdpc3RlcigpKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIAorICAg
IGxvYWRTcG9vbGVyLmZsdXNoRlBSKCk7CisKICAgICBmb3IgKE1hY3JvQXNzZW1ibGVyOjpSZWdp
c3RlcklEIHJlZyA9IE1hY3JvQXNzZW1ibGVyOjpsYXN0UmVnaXN0ZXIoKTsgOyByZWcgPSBzdGF0
aWNfY2FzdDxNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRD4ocmVnIC0gMSkpIHsKICAgICAgICAg
aWYgKGtleS51c2VkUmVnaXN0ZXJzKCkuZ2V0KHJlZykpIHsKICAgICAgICAgICAgIGN1cnJlbnRP
ZmZzZXQgLT0gc2l6ZW9mKHZvaWQqKTsKLSAgICAgICAgICAgIGppdC5sb2FkUHRyKEFzc2VtYmx5
SGVscGVyczo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIGN1
cnJlbnRPZmZzZXQpLCByZWcpOworICAgICAgICAgICAgbG9hZFNwb29sZXIubG9hZEdQUih7IHJl
Zywgc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihjdXJyZW50T2Zmc2V0KSB9KTsKICAgICAgICAgfQog
ICAgICAgICBpZiAocmVnID09IE1hY3JvQXNzZW1ibGVyOjpmaXJzdFJlZ2lzdGVyKCkpCiAgICAg
ICAgICAgICBicmVhazsKICAgICB9Ci0gICAgCisgICAgbG9hZFNwb29sZXIuZmx1c2hHUFIoKTsK
KwogICAgIGppdC5yZXQoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9C
QUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkZUTFRodW5rKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAJKHJldmlzaW9uIDI3
ODg4NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShKSVQpCiAKICNpbmNs
dWRlICJBY2Nlc3NDYXNlLmgiCisjaW5jbHVkZSAiQXNzZW1ibHlIZWxwZXJzU3Bvb2xlcnMuaCIK
ICNpbmNsdWRlICJKSVRPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlclZpZXcu
aCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgpAQCAtNjA2LDQyICs2MDcsOTMgQEAg
dm9pZCBBc3NlbWJseUhlbHBlcnM6OnJlc3RvcmVDYWxsZWVTYXZlcwogCiAgICAgR1BSUmVnIHNj
cmF0Y2ggPSBJbnZhbGlkR1BSUmVnOwogICAgIHVuc2lnbmVkIHNjcmF0Y2hHUFJFbnRyeUluZGV4
ID0gMDsKKyNpZiBDUFUoQVJNNjQpCisgICAgLy8gV2UgZG9uJ3QgbmVlZCBhIHNlY29uZCBzY3Jh
dGNoIEdQUiwgYnV0IHdlJ2xsIGFsc28gZGVmZXIgcmVzdG9yaW5nIHRoaXMKKyAgICAvLyBHUFIg
KGluIHRoZSBuZXh0IHNsb3QgYWZ0ZXIgdGhlIHNjcmF0Y2gpIHNvIHRoYXQgd2UgY2FuIHJlc3Rv
cmUgdGhlbSB0b2dldGhlcgorICAgIC8vIGxhdGVyIHVzaW5nIGEgbG9hZFBhaXI2NC4KKyAgICBH
UFJSZWcgdW51c2VkTmV4dFNsb3RHUFIgPSBJbnZhbGlkR1BSUmVnOworI2VuZGlmCiAKLSAgICAv
LyBVc2UgdGhlIGZpcnN0IEdQUiBlbnRyeSdzIHJlZ2lzdGVyIGFzIG91ciBzY3JhdGNoLgorICAg
IC8vIFVzZSB0aGUgZmlyc3QgR1BSIGVudHJ5J3MgcmVnaXN0ZXIgYXMgb3VyIGJhc2VHUFIuCiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkrKykgewogICAgICAg
ICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5ID0gYWxsQ2FsbGVlU2F2ZXMtPmF0KGkpOwotICAgICAg
ICBpZiAoZG9udFJlc3RvcmVSZWdpc3RlcnMuZ2V0KGVudHJ5LnJlZygpKSkKKyAgICAgICAgaWYg
KGRvbnRSZXN0b3JlUmVnaXN0ZXJzLmNvbnRhaW5zKGVudHJ5LnJlZygpKSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICBpZiAoZW50cnkucmVnKCkuaXNHUFIoKSkgeworI2lmIENQVShB
Uk02NCkKKyAgICAgICAgICAgIGlmIChpICsgMSA8IHJlZ2lzdGVyQ291bnQpIHsKKyAgICAgICAg
ICAgICAgICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5MiA9IGFsbENhbGxlZVNhdmVzLT5hdChpICsg
MSk7CisgICAgICAgICAgICAgICAgaWYgKCFkb250UmVzdG9yZVJlZ2lzdGVycy5jb250YWlucyhl
bnRyeTIucmVnKCkpCisgICAgICAgICAgICAgICAgICAgICYmIGVudHJ5Mi5yZWcoKS5pc0dQUigp
CisgICAgICAgICAgICAgICAgICAgICYmIGVudHJ5Mi5vZmZzZXQoKSA9PSBlbnRyeS5vZmZzZXQo
KSArIHN0YXRpY19jYXN0PHB0cmRpZmZfdD4oc2l6ZW9mKENQVVJlZ2lzdGVyKSkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgc2NyYXRjaEdQUkVudHJ5SW5kZXggPSBpOworICAgICAgICAgICAgICAg
ICAgICBzY3JhdGNoID0gZW50cnkucmVnKCkuZ3ByKCk7CisgICAgICAgICAgICAgICAgICAgIHVu
dXNlZE5leHRTbG90R1BSID0gZW50cnkyLnJlZygpLmdwcigpOworICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisjZWxzZQogICAgICAg
ICAgICAgc2NyYXRjaEdQUkVudHJ5SW5kZXggPSBpOwogICAgICAgICAgICAgc2NyYXRjaCA9IGVu
dHJ5LnJlZygpLmdwcigpOwogICAgICAgICAgICAgYnJlYWs7CisjZW5kaWYKICAgICAgICAgfQog
ICAgIH0KICAgICBBU1NFUlQoc2NyYXRjaCAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAKKyAgICBS
ZWdpc3RlclNldCBza2lwTGlzdDsKKyAgICBza2lwTGlzdC5zZXQoZG9udFJlc3RvcmVSZWdpc3Rl
cnMpOworCisgICAgLy8gU2tpcCB0aGUgc2NyYXRjaCByZWdpc3RlcihzKS4gV2UnbGwgcmVzdG9y
ZSB0aGVtIGxhdGVyLgorICAgIHNraXBMaXN0LmFkZChzY3JhdGNoKTsKKyNpZiBDUFUoQVJNNjQp
CisgICAgUkVMRUFTRV9BU1NFUlQodW51c2VkTmV4dFNsb3RHUFIgIT0gSW52YWxpZEdQUlJlZyk7
CisgICAgc2tpcExpc3QuYWRkKHVudXNlZE5leHRTbG90R1BSKTsKKyNlbmRpZgogCiAgICAgbG9h
ZFB0cigmdG9wRW50cnlGcmFtZSwgc2NyYXRjaCk7CiAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihF
bnRyeUZyYW1lOjpjYWxsZWVTYXZlUmVnaXN0ZXJzQnVmZmVyT2Zmc2V0KCkpLCBzY3JhdGNoKTsK
IAorICAgIExvYWRSZWdTcG9vbGVyIHNwb29sZXIoKnRoaXMsIHNjcmF0Y2gpOworCiAgICAgLy8g
UmVzdG9yZSBhbGwgY2FsbGVlIHNhdmVzIGV4Y2VwdCBmb3IgdGhlIHNjcmF0Y2guCi0gICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkrKykgeworICAgIHVuc2lnbmVk
IGkgPSAwOworICAgIGZvciAoOyBpIDwgcmVnaXN0ZXJDb3VudDsgaSsrKSB7CiAgICAgICAgIFJl
Z2lzdGVyQXRPZmZzZXQgZW50cnkgPSBhbGxDYWxsZWVTYXZlcy0+YXQoaSk7Ci0gICAgICAgIGlm
IChkb250UmVzdG9yZVJlZ2lzdGVycy5nZXQoZW50cnkucmVnKCkpKQorICAgICAgICBpZiAoc2tp
cExpc3QuY29udGFpbnMoZW50cnkucmVnKCkpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgIGlmIChpID09IHNjcmF0Y2hHUFJFbnRyeUluZGV4KQorICAgICAgICBpZiAoIWVudHJ5LnJl
ZygpLmlzR1BSKCkpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgc3Bvb2xlci5sb2FkR1BS
KGVudHJ5KTsKKyAgICB9CisgICAgc3Bvb2xlci5mbHVzaEdQUigpOworICAgIGZvciAoOyBpIDwg
cmVnaXN0ZXJDb3VudDsgaSsrKSB7CisgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQgZW50cnkgPSBh
bGxDYWxsZWVTYXZlcy0+YXQoaSk7CisgICAgICAgIGlmIChza2lwTGlzdC5jb250YWlucyhlbnRy
eS5yZWcoKSkpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgbG9hZFJlZyhBZGRyZXNz
KHNjcmF0Y2gsIGVudHJ5Lm9mZnNldCgpKSwgZW50cnkucmVnKCkpOworICAgICAgICBBU1NFUlQo
IWVudHJ5LnJlZygpLmlzR1BSKCkpOworICAgICAgICBzcG9vbGVyLmxvYWRGUFIoZW50cnkpOwog
ICAgIH0KKyAgICBzcG9vbGVyLmZsdXNoRlBSKCk7CiAKICAgICAvLyBSZXN0b3JlIHRoZSBjYWxs
ZWUgc2F2ZSB2YWx1ZSBvZiB0aGUgc2NyYXRjaC4KICAgICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5
ID0gYWxsQ2FsbGVlU2F2ZXMtPmF0KHNjcmF0Y2hHUFJFbnRyeUluZGV4KTsKICAgICBBU1NFUlQo
IWRvbnRSZXN0b3JlUmVnaXN0ZXJzLmdldChlbnRyeS5yZWcoKSkpOwogICAgIEFTU0VSVChlbnRy
eS5yZWcoKS5pc0dQUigpKTsKICAgICBBU1NFUlQoc2NyYXRjaCA9PSBlbnRyeS5yZWcoKS5ncHIo
KSk7Ci0gICAgbG9hZFJlZyhBZGRyZXNzKHNjcmF0Y2gsIGVudHJ5Lm9mZnNldCgpKSwgc2NyYXRj
aCk7CisjaWYgQ1BVKEFSTTY0KQorICAgIFJlZ2lzdGVyQXRPZmZzZXQgZW50cnkyID0gYWxsQ2Fs
bGVlU2F2ZXMtPmF0KHNjcmF0Y2hHUFJFbnRyeUluZGV4ICsgMSk7CisgICAgQVNTRVJUX1VOVVNF
RChlbnRyeTIsICFkb250UmVzdG9yZVJlZ2lzdGVycy5nZXQoZW50cnkyLnJlZygpKSk7CisgICAg
QVNTRVJUKGVudHJ5Mi5yZWcoKS5pc0dQUigpKTsKKyAgICBBU1NFUlQodW51c2VkTmV4dFNsb3RH
UFIgPT0gZW50cnkyLnJlZygpLmdwcigpKTsKKyAgICBsb2FkUGFpcjY0KHNjcmF0Y2gsIFRydXN0
ZWRJbW0zMihlbnRyeS5vZmZzZXQoKSksIHNjcmF0Y2gsIHVudXNlZE5leHRTbG90R1BSKTsKICNl
bHNlCi0gICAgVU5VU0VEX1BBUkFNKHRvcEVudHJ5RnJhbWUpOworICAgIGxvYWRQdHIoQWRkcmVz
cyhzY3JhdGNoLCBlbnRyeS5vZmZzZXQoKSksIHNjcmF0Y2gpOwogI2VuZGlmCisKKyNlbHNlCisg
ICAgVU5VU0VEX1BBUkFNKHRvcEVudHJ5RnJhbWUpOworI2VuZGlmIC8vIE5VTUJFUl9PRl9DQUxM
RUVfU0FWRVNfUkVHSVNURVJTID4gMAogfQogCiB2b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1pdFZp
cnR1YWxDYWxsKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbExpbmtJ
bmZvKiBpbmZvKQpAQCAtOTk5LDEzICsxMDUxLDI3IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjpj
b3B5Q2FsbGVlU2F2ZXNUb0UKICAgICBSZWdpc3RlckF0T2Zmc2V0TGlzdCogYWxsQ2FsbGVlU2F2
ZXMgPSBSZWdpc3RlclNldDo6dm1DYWxsZWVTYXZlUmVnaXN0ZXJPZmZzZXRzKCk7CiAgICAgUmVn
aXN0ZXJTZXQgZG9udENvcHlSZWdpc3RlcnMgPSBSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMo
KTsKICAgICB1bnNpZ25lZCByZWdpc3RlckNvdW50ID0gYWxsQ2FsbGVlU2F2ZXMtPnNpemUoKTsK
LSAgICAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVnaXN0ZXJDb3VudDsgaSsrKSB7
CisKKyAgICBTdG9yZVJlZ1Nwb29sZXIgc3Bvb2xlcigqdGhpcywgY2FsbGVlU2F2ZXNCdWZmZXIp
OworCisgICAgdW5zaWduZWQgaSA9IDA7CisgICAgZm9yICg7IGkgPCByZWdpc3RlckNvdW50OyBp
KyspIHsKICAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCBlbnRyeSA9IGFsbENhbGxlZVNhdmVzLT5h
dChpKTsKLSAgICAgICAgaWYgKGRvbnRDb3B5UmVnaXN0ZXJzLmdldChlbnRyeS5yZWcoKSkpCisg
ICAgICAgIGlmIChkb250Q29weVJlZ2lzdGVycy5jb250YWlucyhlbnRyeS5yZWcoKSkpCisgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKCFlbnRyeS5yZWcoKS5pc0dQUigpKQorICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIHNwb29sZXIuc3RvcmVHUFIoZW50cnkpOworICAgIH0K
KyAgICBzcG9vbGVyLmZsdXNoR1BSKCk7CisgICAgZm9yICg7IGkgPCByZWdpc3RlckNvdW50OyBp
KyspIHsKKyAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCBlbnRyeSA9IGFsbENhbGxlZVNhdmVzLT5h
dChpKTsKKyAgICAgICAgaWYgKGRvbnRDb3B5UmVnaXN0ZXJzLmNvbnRhaW5zKGVudHJ5LnJlZygp
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBzdG9yZVJlZyhlbnRyeS5yZWcoKSwg
QWRkcmVzcyhjYWxsZWVTYXZlc0J1ZmZlciwgZW50cnkub2Zmc2V0KCkpKTsKKyAgICAgICAgc3Bv
b2xlci5zdG9yZUZQUihlbnRyeSk7CiAgICAgfQorICAgIHNwb29sZXIuZmx1c2hGUFIoKTsKKwog
I2Vsc2UKICAgICBVTlVTRURfUEFSQU0oY2FsbGVlU2F2ZXNCdWZmZXIpOwogI2VuZGlmCkBAIC0x
MTAzLDYgKzExNjksMTg0IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjpjYWdlQ29uZGl0aW9uYWxs
eUEKICAgICBVTlVTRURfUEFSQU0oc2NyYXRjaCk7CiB9CiAKK3ZvaWQgQXNzZW1ibHlIZWxwZXJz
OjplbWl0U2F2ZShjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCYgbGlzdCkKK3sKKyAgICBTdG9y
ZVJlZ1Nwb29sZXIgc3Bvb2xlcigqdGhpcywgZnJhbWVQb2ludGVyUmVnaXN0ZXIpOworCisgICAg
c2l6ZV90IGxpc3RTaXplID0gbGlzdC5zaXplKCk7CisgICAgc2l6ZV90IGkgPSAwOworICAgIGZv
ciAoOyBpIDwgbGlzdFNpemU7IGkrKykgeworICAgICAgICBhdXRvIGVudHJ5ID0gbGlzdC5hdChp
KTsKKyAgICAgICAgaWYgKCFlbnRyeS5yZWcoKS5pc0dQUigpKQorICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIHNwb29sZXIuc3RvcmVHUFIoZW50cnkpOworICAgIH0KKyAgICBzcG9vbGVyLmZs
dXNoR1BSKCk7CisKKyAgICBmb3IgKDsgaSA8IGxpc3RTaXplOyBpKyspCisgICAgICAgIHNwb29s
ZXIuc3RvcmVGUFIobGlzdC5hdChpKSk7CisgICAgc3Bvb2xlci5mbHVzaEZQUigpOworfQorCit2
b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1pdFJlc3RvcmUoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExp
c3QmIGxpc3QpCit7CisgICAgTG9hZFJlZ1Nwb29sZXIgc3Bvb2xlcigqdGhpcywgZnJhbWVQb2lu
dGVyUmVnaXN0ZXIpOworCisgICAgc2l6ZV90IGxpc3RTaXplID0gbGlzdC5zaXplKCk7CisgICAg
c2l6ZV90IGkgPSAwOworICAgIGZvciAoOyBpIDwgbGlzdFNpemU7IGkrKykgeworICAgICAgICBh
dXRvIGVudHJ5ID0gbGlzdC5hdChpKTsKKyAgICAgICAgaWYgKCFlbnRyeS5yZWcoKS5pc0dQUigp
KQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIHNwb29sZXIubG9hZEdQUihlbnRyeSk7Cisg
ICAgfQorICAgIHNwb29sZXIuZmx1c2hHUFIoKTsKKworICAgIGZvciAoOyBpIDwgbGlzdFNpemU7
IGkrKykKKyAgICAgICAgc3Bvb2xlci5sb2FkRlBSKGxpc3QuYXQoaSkpOworICAgIHNwb29sZXIu
Zmx1c2hGUFIoKTsKK30KKwordm9pZCBBc3NlbWJseUhlbHBlcnM6OmVtaXRTYXZlQ2FsbGVlU2F2
ZXNGb3IoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGNhbGxlZVNhdmVzKQoreworICAgIFJl
Z2lzdGVyU2V0IGRvbnRTYXZlUmVnaXN0ZXJzID0gUmVnaXN0ZXJTZXQoUmVnaXN0ZXJTZXQ6OnN0
YWNrUmVnaXN0ZXJzKCksIFJlZ2lzdGVyU2V0OjphbGxGUFJzKCkpOworICAgIHVuc2lnbmVkIHJl
Z2lzdGVyQ291bnQgPSBjYWxsZWVTYXZlcy0+c2l6ZSgpOworCisgICAgU3RvcmVSZWdTcG9vbGVy
IHNwb29sZXIoKnRoaXMsIGZyYW1lUG9pbnRlclJlZ2lzdGVyKTsKKworICAgIHVuc2lnbmVkIGkg
PSAwOworICAgIGZvciAoOyBpIDwgcmVnaXN0ZXJDb3VudDsgaSsrKSB7CisgICAgICAgIFJlZ2lz
dGVyQXRPZmZzZXQgZW50cnkgPSBjYWxsZWVTYXZlcy0+YXQoaSk7CisgICAgICAgIGlmIChkb250
U2F2ZVJlZ2lzdGVycy5jb250YWlucyhlbnRyeS5yZWcoKSkpCisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgc3Bvb2xlci5zdG9yZUdQUihlbnRyeSk7CisgICAgfQorICAgIHNwb29sZXIu
Zmx1c2hHUFIoKTsKKyAgICBmb3IgKDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkrKykgeworICAgICAg
ICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5ID0gY2FsbGVlU2F2ZXMtPmF0KGkpOworICAgICAgICBp
ZiAoZG9udFNhdmVSZWdpc3RlcnMuY29udGFpbnMoZW50cnkucmVnKCkpKQorICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIHNwb29sZXIuc3RvcmVGUFIoZW50cnkpOworICAgIH0KKyAgICBz
cG9vbGVyLmZsdXNoRlBSKCk7Cit9CisKK3ZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0UmVzdG9y
ZUNhbGxlZVNhdmVzRm9yKGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBjYWxsZWVTYXZlcykK
K3sKKyAgICBSZWdpc3RlclNldCBkb250UmVzdG9yZVJlZ2lzdGVycyA9IFJlZ2lzdGVyU2V0KFJl
Z2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpLCBSZWdpc3RlclNldDo6YWxsRlBScygpKTsKKyAg
ICB1bnNpZ25lZCByZWdpc3RlckNvdW50ID0gY2FsbGVlU2F2ZXMtPnNpemUoKTsKKyAgICAKKyAg
ICBMb2FkUmVnU3Bvb2xlciBzcG9vbGVyKCp0aGlzLCBmcmFtZVBvaW50ZXJSZWdpc3Rlcik7CisK
KyAgICB1bnNpZ25lZCBpID0gMDsKKyAgICBmb3IgKDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkrKykg
eworICAgICAgICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5ID0gY2FsbGVlU2F2ZXMtPmF0KGkpOwor
ICAgICAgICBpZiAoZG9udFJlc3RvcmVSZWdpc3RlcnMuZ2V0KGVudHJ5LnJlZygpKSkKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICBzcG9vbGVyLmxvYWRHUFIoZW50cnkpOworICAgIH0K
KyAgICBzcG9vbGVyLmZsdXNoR1BSKCk7CisgICAgZm9yICg7IGkgPCByZWdpc3RlckNvdW50OyBp
KyspIHsKKyAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCBlbnRyeSA9IGNhbGxlZVNhdmVzLT5hdChp
KTsKKyAgICAgICAgaWYgKGRvbnRSZXN0b3JlUmVnaXN0ZXJzLmdldChlbnRyeS5yZWcoKSkpCisg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgc3Bvb2xlci5sb2FkRlBSKGVudHJ5KTsKKyAg
ICB9CisgICAgc3Bvb2xlci5mbHVzaEZQUigpOworfQorCit2b2lkIEFzc2VtYmx5SGVscGVyczo6
Y29weUxMSW50QmFzZWxpbmVDYWxsZWVTYXZlc0Zyb21GcmFtZU9yUmVnaXN0ZXJUb0VudHJ5RnJh
bWVDYWxsZWVTYXZlc0J1ZmZlcihFbnRyeUZyYW1lKiYgdG9wRW50cnlGcmFtZSwgY29uc3QgVGVt
cFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzKQoreworI2lmIE5VTUJFUl9PRl9DQUxMRUVfU0FW
RVNfUkVHSVNURVJTID4gMAorICAgIC8vIENvcHkgc2F2ZWQgY2FsbGVlU2F2ZXMgb24gc3RhY2sg
b3IgdW5zYXZlZCBjYWxsZWVTYXZlcyBpbiByZWdpc3RlciB0byB2bSBjYWxsZWVTYXZlIGJ1ZmZl
cgorICAgIEdQUlJlZyBkZXN0QnVmZmVyR1BSID0gdXNlZFJlZ2lzdGVycy5nZXRGcmVlR1BSKDAp
OworICAgIEdQUlJlZyB0ZW1wMSA9IHVzZWRSZWdpc3RlcnMuZ2V0RnJlZUdQUigxKTsKKyAgICBG
UFJSZWcgZnBUZW1wMSA9IHVzZWRSZWdpc3RlcnMuZ2V0RnJlZUZQUigwKTsKKyAgICBHUFJSZWcg
dGVtcDIgPSBpc0FSTTY0KCkgPyB1c2VkUmVnaXN0ZXJzLmdldEZyZWVHUFIoMikgOiBJbnZhbGlk
R1BSUmVnOworICAgIEZQUlJlZyBmcFRlbXAyID0gaXNBUk02NCgpID8gdXNlZFJlZ2lzdGVycy5n
ZXRGcmVlRlBSKDEpIDogSW52YWxpZEZQUlJlZzsKKworICAgIGxvYWRQdHIoJnRvcEVudHJ5RnJh
bWUsIGRlc3RCdWZmZXJHUFIpOworICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoRW50cnlGcmFtZTo6
Y2FsbGVlU2F2ZVJlZ2lzdGVyc0J1ZmZlck9mZnNldCgpKSwgZGVzdEJ1ZmZlckdQUik7CisKKyAg
ICBDb3B5U3Bvb2xlciBzcG9vbGVyKCp0aGlzLCBmcmFtZVBvaW50ZXJSZWdpc3RlciwgZGVzdEJ1
ZmZlckdQUiwgdGVtcDEsIHRlbXAyLCBmcFRlbXAxLCBmcFRlbXAyKTsKKworICAgIFJlZ2lzdGVy
QXRPZmZzZXRMaXN0KiBhbGxDYWxsZWVTYXZlcyA9IFJlZ2lzdGVyU2V0Ojp2bUNhbGxlZVNhdmVS
ZWdpc3Rlck9mZnNldHMoKTsKKyAgICBjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCogY3VycmVu
dENhbGxlZVNhdmVzID0gJlJlZ2lzdGVyQXRPZmZzZXRMaXN0OjpsbGludEJhc2VsaW5lQ2FsbGVl
U2F2ZVJlZ2lzdGVycygpOworICAgIFJlZ2lzdGVyU2V0IGRvbnRDb3B5UmVnaXN0ZXJzID0gUmVn
aXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCk7CisgICAgdW5zaWduZWQgcmVnaXN0ZXJDb3VudCA9
IGFsbENhbGxlZVNhdmVzLT5zaXplKCk7CisKKyAgICB1bnNpZ25lZCBpID0gMDsKKyAgICBmb3Ig
KDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkrKykgeworICAgICAgICBSZWdpc3RlckF0T2Zmc2V0IGVu
dHJ5ID0gYWxsQ2FsbGVlU2F2ZXMtPmF0KGkpOworICAgICAgICBpZiAoZG9udENvcHlSZWdpc3Rl
cnMuY29udGFpbnMoZW50cnkucmVnKCkpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
IFJlZ2lzdGVyQXRPZmZzZXQqIGN1cnJlbnRGcmFtZUVudHJ5ID0gY3VycmVudENhbGxlZVNhdmVz
LT5maW5kKGVudHJ5LnJlZygpKTsKKworICAgICAgICBpZiAoIWVudHJ5LnJlZygpLmlzR1BSKCkp
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKGN1cnJlbnRGcmFtZUVudHJ5KQorICAg
ICAgICAgICAgc3Bvb2xlci5sb2FkR1BSKGN1cnJlbnRGcmFtZUVudHJ5LT5vZmZzZXQoKSk7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNwb29sZXIuY29weUdQUihlbnRyeS5yZWcoKS5ncHIo
KSk7CisgICAgICAgIHNwb29sZXIuc3RvcmVHUFIoZW50cnkub2Zmc2V0KCkpOworICAgIH0KKyAg
ICBzcG9vbGVyLmZsdXNoR1BSKCk7CisKKyAgICBmb3IgKDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkr
KykgeworICAgICAgICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5ID0gYWxsQ2FsbGVlU2F2ZXMtPmF0
KGkpOworICAgICAgICBpZiAoZG9udENvcHlSZWdpc3RlcnMuZ2V0KGVudHJ5LnJlZygpKSkKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBSZWdpc3RlckF0T2Zmc2V0KiBjdXJyZW50RnJh
bWVFbnRyeSA9IGN1cnJlbnRDYWxsZWVTYXZlcy0+ZmluZChlbnRyeS5yZWcoKSk7CisKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoZW50cnkucmVnKCkuaXNGUFIoKSk7CisgICAgICAgIGlmIChjdXJy
ZW50RnJhbWVFbnRyeSkKKyAgICAgICAgICAgIHNwb29sZXIubG9hZEZQUihjdXJyZW50RnJhbWVF
bnRyeS0+b2Zmc2V0KCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzcG9vbGVyLmNvcHlG
UFIoZW50cnkucmVnKCkuZnByKCkpOworICAgICAgICBzcG9vbGVyLnN0b3JlRlBSKGVudHJ5Lm9m
ZnNldCgpKTsKKyAgICB9CisgICAgc3Bvb2xlci5mbHVzaEZQUigpOworCisjZWxzZQorICAgIFVO
VVNFRF9QQVJBTSh0b3BFbnRyeUZyYW1lKTsKKyAgICBVTlVTRURfUEFSQU0odXNlZFJlZ2lzdGVy
cyk7CisjZW5kaWYKK30KKwordm9pZCBBc3NlbWJseUhlbHBlcnM6OmVtaXRTYXZlT3JDb3B5TExJ
bnRCYXNlbGluZUNhbGxlZVNhdmVzRm9yKENvZGVCbG9jayogY29kZUJsb2NrLCBWaXJ0dWFsUmVn
aXN0ZXIgb2Zmc2V0VmlydHVhbFJlZ2lzdGVyLCBSZXN0b3JlVGFnUmVnaXN0ZXJNb2RlIHRhZ1Jl
Z2lzdGVyTW9kZSwgR1BSUmVnIHRlbXAxLCBHUFJSZWcgdGVtcDIsIEdQUlJlZyB0ZW1wMykKK3sK
KyAgICBBU1NFUlQoY29kZUJsb2NrKTsKKworICAgIFJFTEVBU0VfQVNTRVJUKCFKSVRDb2RlOjpp
c09wdGltaXppbmdKSVQoY29kZUJsb2NrLT5qaXRUeXBlKCkpKTsKKyAgICBSRUxFQVNFX0FTU0VS
VChjb2RlQmxvY2stPmNhbGxlZVNhdmVSZWdpc3RlcnMoKSA9PSAmUmVnaXN0ZXJBdE9mZnNldExp
c3Q6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCkpOworICAgIGNvbnN0IFJlZ2lz
dGVyQXRPZmZzZXRMaXN0KiBjYWxsZWVTYXZlcyA9ICZSZWdpc3RlckF0T2Zmc2V0TGlzdDo6bGxp
bnRCYXNlbGluZUNhbGxlZVNhdmVSZWdpc3RlcnMoKTsKKyAgICBSZWdpc3RlclNldCBkb250U2F2
ZVJlZ2lzdGVycyA9IFJlZ2lzdGVyU2V0KFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpLCBS
ZWdpc3RlclNldDo6YWxsRlBScygpKTsKKyAgICB1bnNpZ25lZCByZWdpc3RlckNvdW50ID0gY2Fs
bGVlU2F2ZXMtPnNpemUoKTsKKworICAgIEdQUlJlZyBkc3RCdWZmZXJHUFIgPSB0ZW1wMTsKKyAg
ICBhZGRQdHIoVHJ1c3RlZEltbTMyKG9mZnNldFZpcnR1YWxSZWdpc3Rlci5vZmZzZXRJbkJ5dGVz
KCkpLCBmcmFtZVBvaW50ZXJSZWdpc3RlciwgZHN0QnVmZmVyR1BSKTsKKworICAgIENvcHlTcG9v
bGVyIHNwb29sZXIoKnRoaXMsIGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBkc3RCdWZmZXJHUFIsIHRl
bXAyLCB0ZW1wMyk7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVnaXN0ZXJDb3Vu
dDsgaSsrKSB7CisgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQgZW50cnkgPSBjYWxsZWVTYXZlcy0+
YXQoaSk7CisgICAgICAgIGlmIChkb250U2F2ZVJlZ2lzdGVycy5nZXQoZW50cnkucmVnKCkpKQor
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIAorI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisg
ICAgICAgIFVOVVNFRF9QQVJBTSh0YWdSZWdpc3Rlck1vZGUpOworICAgICAgICBVTlVTRURfUEFS
QU0odGVtcCk7CisjZWxzZQorICAgICAgICBpZiAodGFnUmVnaXN0ZXJNb2RlID09IENvcHlCYXNl
bGluZUNhbGxlZVNhdmVkUmVnaXN0ZXJzRnJvbUJhc2VGcmFtZSkKKyAgICAgICAgICAgIHNwb29s
ZXIubG9hZEdQUihlbnRyeS5vZmZzZXQoKSk7CisgICAgICAgIGVsc2UKKyNlbmRpZgorICAgICAg
ICAgICAgc3Bvb2xlci5jb3B5R1BSKGVudHJ5LnJlZygpLmdwcigpKTsKKyAgICAgICAgc3Bvb2xl
ci5zdG9yZUdQUihlbnRyeS5vZmZzZXQoKSk7CisgICAgfQorICAgIHNwb29sZXIuZmx1c2hHUFIo
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCShyZXZpc2lv
biAyNzg4ODYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yOTUsMzEgKzI5NSwxOSBAQCBwdWJsaWM6CiAgICAgICAgIHN0
b3JlMzIoVHJ1c3RlZEltbTMyKHZhbHVlLnBheWxvYWQoKSksIGFkZHJlc3Mud2l0aE9mZnNldChQ
YXlsb2FkT2Zmc2V0KSk7CiAjZW5kaWYKICAgICB9Ci0gICAgCisKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBPcD4gY2xhc3MgU3Bvb2xlcjsKKyAgICBjbGFzcyBMb2FkUmVnU3Bvb2xlcjsKKyAgICBj
bGFzcyBTdG9yZVJlZ1Nwb29sZXI7CisgICAgY2xhc3MgQ29weVNwb29sZXI7CisKICAgICBBZGRy
ZXNzIGFkZHJlc3NGb3IoY29uc3QgUmVnaXN0ZXJBdE9mZnNldCYgZW50cnkpCiAgICAgewogICAg
ICAgICByZXR1cm4gQWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgZW50cnkub2Zm
c2V0KCkpOwogICAgIH0KLSAgICAKLSAgICB2b2lkIGVtaXRTYXZlKGNvbnN0IFJlZ2lzdGVyQXRP
ZmZzZXRMaXN0JiBsaXN0KQotICAgIHsKLSAgICAgICAgZm9yIChjb25zdCBSZWdpc3RlckF0T2Zm
c2V0JiBlbnRyeSA6IGxpc3QpIHsKLSAgICAgICAgICAgIGlmIChlbnRyeS5yZWcoKS5pc0dQUigp
KQotICAgICAgICAgICAgICAgIHN0b3JlUHRyKGVudHJ5LnJlZygpLmdwcigpLCBhZGRyZXNzRm9y
KGVudHJ5KSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgc3RvcmVEb3VibGUo
ZW50cnkucmVnKCkuZnByKCksIGFkZHJlc3NGb3IoZW50cnkpKTsKLSAgICAgICAgfQotICAgIH0K
LSAgICAKLSAgICB2b2lkIGVtaXRSZXN0b3JlKGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRMaXN0JiBs
aXN0KQotICAgIHsKLSAgICAgICAgZm9yIChjb25zdCBSZWdpc3RlckF0T2Zmc2V0JiBlbnRyeSA6
IGxpc3QpIHsKLSAgICAgICAgICAgIGlmIChlbnRyeS5yZWcoKS5pc0dQUigpKQotICAgICAgICAg
ICAgICAgIGxvYWRQdHIoYWRkcmVzc0ZvcihlbnRyeSksIGVudHJ5LnJlZygpLmdwcigpKTsKLSAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBsb2FkRG91YmxlKGFkZHJlc3NGb3IoZW50
cnkpLCBlbnRyeS5yZWcoKS5mcHIoKSk7Ci0gICAgICAgIH0KLSAgICB9CisKKyAgICB2b2lkIGVt
aXRTYXZlKGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRMaXN0Jik7CisgICAgdm9pZCBlbWl0UmVzdG9y
ZShjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCYpOwogCiAgICAgdm9pZCBlbWl0U2F2ZUNhbGxl
ZVNhdmVzRm9yKENvZGVCbG9jayogY29kZUJsb2NrKQogICAgIHsKQEAgLTMyOSw1NCArMzE3LDEx
IEBAIHB1YmxpYzoKICAgICAgICAgZW1pdFNhdmVDYWxsZWVTYXZlc0ZvcihjYWxsZWVTYXZlcyk7
CiAgICAgfQogCi0gICAgdm9pZCBlbWl0U2F2ZUNhbGxlZVNhdmVzRm9yKGNvbnN0IFJlZ2lzdGVy
QXRPZmZzZXRMaXN0KiBjYWxsZWVTYXZlcykKLSAgICB7Ci0gICAgICAgIFJlZ2lzdGVyU2V0IGRv
bnRTYXZlUmVnaXN0ZXJzID0gUmVnaXN0ZXJTZXQoUmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJz
KCksIFJlZ2lzdGVyU2V0OjphbGxGUFJzKCkpOwotICAgICAgICB1bnNpZ25lZCByZWdpc3RlckNv
dW50ID0gY2FsbGVlU2F2ZXMtPnNpemUoKTsKLQotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgcmVnaXN0ZXJDb3VudDsgaSsrKSB7Ci0gICAgICAgICAgICBSZWdpc3RlckF0T2Zmc2V0
IGVudHJ5ID0gY2FsbGVlU2F2ZXMtPmF0KGkpOwotICAgICAgICAgICAgaWYgKGRvbnRTYXZlUmVn
aXN0ZXJzLmdldChlbnRyeS5yZWcoKSkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgICAgICBzdG9yZVB0cihlbnRyeS5yZWcoKS5ncHIoKSwgQWRkcmVzcyhmcmFtZVBvaW50ZXJS
ZWdpc3RlciwgZW50cnkub2Zmc2V0KCkpKTsKLSAgICAgICAgfQotICAgIH0KKyAgICB2b2lkIGVt
aXRTYXZlQ2FsbGVlU2F2ZXNGb3IoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGNhbGxlZVNh
dmVzKTsKICAgICAKICAgICBlbnVtIFJlc3RvcmVUYWdSZWdpc3Rlck1vZGUgeyBVc2VFeGlzdGlu
Z1RhZ1JlZ2lzdGVyQ29udGVudHMsIENvcHlCYXNlbGluZUNhbGxlZVNhdmVkUmVnaXN0ZXJzRnJv
bUJhc2VGcmFtZSB9OwogCi0gICAgdm9pZCBlbWl0U2F2ZU9yQ29weUNhbGxlZVNhdmVzRm9yKENv
ZGVCbG9jayogY29kZUJsb2NrLCBWaXJ0dWFsUmVnaXN0ZXIgb2Zmc2V0VmlydHVhbFJlZ2lzdGVy
LCBSZXN0b3JlVGFnUmVnaXN0ZXJNb2RlIHRhZ1JlZ2lzdGVyTW9kZSwgR1BSUmVnIHRlbXApCi0g
ICAgewotICAgICAgICBBU1NFUlQoY29kZUJsb2NrKTsKLSAgICAgICAgCi0gICAgICAgIGNvbnN0
IFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBjYWxsZWVTYXZlcyA9IGNvZGVCbG9jay0+Y2FsbGVlU2F2
ZVJlZ2lzdGVycygpOwotICAgICAgICBSZWdpc3RlclNldCBkb250U2F2ZVJlZ2lzdGVycyA9IFJl
Z2lzdGVyU2V0KFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpLCBSZWdpc3RlclNldDo6YWxs
RlBScygpKTsKLSAgICAgICAgdW5zaWduZWQgcmVnaXN0ZXJDb3VudCA9IGNhbGxlZVNhdmVzLT5z
aXplKCk7Ci0KLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBSZWdpc3RlclNldCBiYXNlbGlu
ZUNhbGxlZVNhdmVzID0gUmVnaXN0ZXJTZXQ6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0
ZXJzKCk7Ci0jZW5kaWYKLSAgICAgICAgCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCByZWdpc3RlckNvdW50OyBpKyspIHsKLSAgICAgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQgZW50
cnkgPSBjYWxsZWVTYXZlcy0+YXQoaSk7Ci0gICAgICAgICAgICBpZiAoZG9udFNhdmVSZWdpc3Rl
cnMuZ2V0KGVudHJ5LnJlZygpKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
ICAgIAotICAgICAgICAgICAgR1BSUmVnIHJlZ2lzdGVyVG9Xcml0ZTsKLSAgICAgICAgICAgIAot
I2lmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgICAgICAgICBVTlVTRURfUEFSQU0odGFnUmVnaXN0
ZXJNb2RlKTsKLSAgICAgICAgICAgIFVOVVNFRF9QQVJBTSh0ZW1wKTsKLSNlbHNlCi0gICAgICAg
ICAgICBpZiAodGFnUmVnaXN0ZXJNb2RlID09IENvcHlCYXNlbGluZUNhbGxlZVNhdmVkUmVnaXN0
ZXJzRnJvbUJhc2VGcmFtZSAmJiBiYXNlbGluZUNhbGxlZVNhdmVzLmdldChlbnRyeS5yZWcoKSkp
IHsKLSAgICAgICAgICAgICAgICByZWdpc3RlclRvV3JpdGUgPSB0ZW1wOwotICAgICAgICAgICAg
ICAgIGxvYWRQdHIoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyLCBlbnRyeS5vZmZzZXQoKSksIHJlZ2lzdGVyVG9Xcml0ZSk7Ci0gICAgICAgICAgICB9
IGVsc2UKLSNlbmRpZgotICAgICAgICAgICAgICAgIHJlZ2lzdGVyVG9Xcml0ZSA9IGVudHJ5LnJl
ZygpLmdwcigpOwotCi0gICAgICAgICAgICBzdG9yZVB0cihyZWdpc3RlclRvV3JpdGUsIEFkZHJl
c3MoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIG9mZnNldFZpcnR1YWxSZWdpc3Rlci5vZmZzZXRJbkJ5
dGVzKCkgKyBlbnRyeS5vZmZzZXQoKSkpOwotICAgICAgICB9Ci0gICAgfQorICAgIHZvaWQgZW1p
dFNhdmVPckNvcHlMTEludEJhc2VsaW5lQ2FsbGVlU2F2ZXNGb3IoQ29kZUJsb2NrKiwgVmlydHVh
bFJlZ2lzdGVyIG9mZnNldFZpcnR1YWxSZWdpc3RlciwgUmVzdG9yZVRhZ1JlZ2lzdGVyTW9kZSwg
R1BSUmVnIHRlbXAxLCBHUFJSZWcgdGVtcDIsIEdQUlJlZyB0ZW1wMyk7CiAgICAgCiAgICAgdm9p
ZCBlbWl0UmVzdG9yZUNhbGxlZVNhdmVzRm9yKENvZGVCbG9jayogY29kZUJsb2NrKQogICAgIHsK
QEAgLTM4NiwxOCArMzMxLDcgQEAgcHVibGljOgogICAgICAgICBlbWl0UmVzdG9yZUNhbGxlZVNh
dmVzRm9yKGNhbGxlZVNhdmVzKTsKICAgICB9CiAKLSAgICB2b2lkIGVtaXRSZXN0b3JlQ2FsbGVl
U2F2ZXNGb3IoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGNhbGxlZVNhdmVzKQotICAgIHsK
LSAgICAgICAgUmVnaXN0ZXJTZXQgZG9udFJlc3RvcmVSZWdpc3RlcnMgPSBSZWdpc3RlclNldChS
ZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKSwgUmVnaXN0ZXJTZXQ6OmFsbEZQUnMoKSk7Ci0g
ICAgICAgIHVuc2lnbmVkIHJlZ2lzdGVyQ291bnQgPSBjYWxsZWVTYXZlcy0+c2l6ZSgpOwotICAg
ICAgICAKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkr
KykgewotICAgICAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCBlbnRyeSA9IGNhbGxlZVNhdmVzLT5h
dChpKTsKLSAgICAgICAgICAgIGlmIChkb250UmVzdG9yZVJlZ2lzdGVycy5nZXQoZW50cnkucmVn
KCkpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgbG9hZFB0cihBZGRy
ZXNzKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBlbnRyeS5vZmZzZXQoKSksIGVudHJ5LnJlZygpLmdw
cigpKTsKLSAgICAgICAgfQotICAgIH0KKyAgICB2b2lkIGVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXNG
b3IoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGNhbGxlZVNhdmVzKTsKIAogICAgIHZvaWQg
ZW1pdFNhdmVDYWxsZWVTYXZlcygpCiAgICAgewpAQCAtNDc4LDU4ICs0MTIsNyBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIHJlc3RvcmVDYWxsZWVTYXZlc0Zyb21FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNC
dWZmZXIoRW50cnlGcmFtZSomKTsKIAotICAgIHZvaWQgY29weUxMSW50QmFzZWxpbmVDYWxsZWVT
YXZlc0Zyb21GcmFtZU9yUmVnaXN0ZXJUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcihFbnRy
eUZyYW1lKiYgdG9wRW50cnlGcmFtZSwgY29uc3QgVGVtcFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0
ZXJzID0geyBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCkgfSkKLSAgICB7
Ci0jaWYgTlVNQkVSX09GX0NBTExFRV9TQVZFU19SRUdJU1RFUlMgPiAwCi0gICAgICAgIEdQUlJl
ZyB0ZW1wMSA9IHVzZWRSZWdpc3RlcnMuZ2V0RnJlZUdQUigwKTsKLSAgICAgICAgR1BSUmVnIHRl
bXAyID0gdXNlZFJlZ2lzdGVycy5nZXRGcmVlR1BSKDEpOwotICAgICAgICBGUFJSZWcgZnBUZW1w
ID0gdXNlZFJlZ2lzdGVycy5nZXRGcmVlRlBSKCk7Ci0gICAgICAgIEFTU0VSVCh0ZW1wMiAhPSBJ
bnZhbGlkR1BSUmVnKTsKLQotICAgICAgICAvLyBDb3B5IHNhdmVkIGNhbGxlZVNhdmVzIG9uIHN0
YWNrIG9yIHVuc2F2ZWQgY2FsbGVlU2F2ZXMgaW4gcmVnaXN0ZXIgdG8gdm0gY2FsbGVlU2F2ZSBi
dWZmZXIKLSAgICAgICAgbG9hZFB0cigmdG9wRW50cnlGcmFtZSwgdGVtcDEpOwotICAgICAgICBh
ZGRQdHIoVHJ1c3RlZEltbTMyKEVudHJ5RnJhbWU6OmNhbGxlZVNhdmVSZWdpc3RlcnNCdWZmZXJP
ZmZzZXQoKSksIHRlbXAxKTsKLQotICAgICAgICBSZWdpc3RlckF0T2Zmc2V0TGlzdCogYWxsQ2Fs
bGVlU2F2ZXMgPSBSZWdpc3RlclNldDo6dm1DYWxsZWVTYXZlUmVnaXN0ZXJPZmZzZXRzKCk7Ci0g
ICAgICAgIGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBjdXJyZW50Q2FsbGVlU2F2ZXMgPSAm
UmVnaXN0ZXJBdE9mZnNldExpc3Q6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCk7
Ci0gICAgICAgIFJlZ2lzdGVyU2V0IGRvbnRDb3B5UmVnaXN0ZXJzID0gUmVnaXN0ZXJTZXQ6OnN0
YWNrUmVnaXN0ZXJzKCk7Ci0gICAgICAgIHVuc2lnbmVkIHJlZ2lzdGVyQ291bnQgPSBhbGxDYWxs
ZWVTYXZlcy0+c2l6ZSgpOwotCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZWdp
c3RlckNvdW50OyBpKyspIHsKLSAgICAgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQgZW50cnkgPSBh
bGxDYWxsZWVTYXZlcy0+YXQoaSk7Ci0gICAgICAgICAgICBpZiAoZG9udENvcHlSZWdpc3RlcnMu
Z2V0KGVudHJ5LnJlZygpKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAg
IFJlZ2lzdGVyQXRPZmZzZXQqIGN1cnJlbnRGcmFtZUVudHJ5ID0gY3VycmVudENhbGxlZVNhdmVz
LT5maW5kKGVudHJ5LnJlZygpKTsKLQotICAgICAgICAgICAgaWYgKGVudHJ5LnJlZygpLmlzR1BS
KCkpIHsKLSAgICAgICAgICAgICAgICBHUFJSZWcgcmVnVG9TdG9yZTsKLSAgICAgICAgICAgICAg
ICBpZiAoY3VycmVudEZyYW1lRW50cnkpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gTG9hZCBj
YWxsZWVTYXZlIGZyb20gc3RhY2sgaW50byB0ZW1wIHJlZ2lzdGVyCi0gICAgICAgICAgICAgICAg
ICAgIHJlZ1RvU3RvcmUgPSB0ZW1wMjsKLSAgICAgICAgICAgICAgICAgICAgbG9hZFB0cihBZGRy
ZXNzKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBjdXJyZW50RnJhbWVFbnRyeS0+b2Zmc2V0KCkpLCBy
ZWdUb1N0b3JlKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAg
Ly8gSnVzdCBzdG9yZSBjYWxsZWUgc2F2ZSBkaXJlY3RseQotICAgICAgICAgICAgICAgICAgICBy
ZWdUb1N0b3JlID0gZW50cnkucmVnKCkuZ3ByKCk7Ci0KLSAgICAgICAgICAgICAgICBzdG9yZVB0
cihyZWdUb1N0b3JlLCBBZGRyZXNzKHRlbXAxLCBlbnRyeS5vZmZzZXQoKSkpOwotICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBGUFJSZWcgZnBSZWdUb1N0b3JlOwotICAgICAg
ICAgICAgICAgIGlmIChjdXJyZW50RnJhbWVFbnRyeSkgewotICAgICAgICAgICAgICAgICAgICAv
LyBMb2FkIGNhbGxlZVNhdmUgZnJvbSBzdGFjayBpbnRvIHRlbXAgcmVnaXN0ZXIKLSAgICAgICAg
ICAgICAgICAgICAgZnBSZWdUb1N0b3JlID0gZnBUZW1wOwotICAgICAgICAgICAgICAgICAgICBs
b2FkRG91YmxlKEFkZHJlc3MoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGN1cnJlbnRGcmFtZUVudHJ5
LT5vZmZzZXQoKSksIGZwUmVnVG9TdG9yZSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlCi0gICAg
ICAgICAgICAgICAgICAgIC8vIEp1c3Qgc3RvcmUgY2FsbGVlIHNhdmUgZGlyZWN0bHkKLSAgICAg
ICAgICAgICAgICAgICAgZnBSZWdUb1N0b3JlID0gZW50cnkucmVnKCkuZnByKCk7Ci0KLSAgICAg
ICAgICAgICAgICBzdG9yZURvdWJsZShmcFJlZ1RvU3RvcmUsIEFkZHJlc3ModGVtcDEsIGVudHJ5
Lm9mZnNldCgpKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSNlbHNlCi0gICAgICAgIFVO
VVNFRF9QQVJBTSh0b3BFbnRyeUZyYW1lKTsKLSAgICAgICAgVU5VU0VEX1BBUkFNKHVzZWRSZWdp
c3RlcnMpOwotI2VuZGlmCi0gICAgfQorICAgIHZvaWQgY29weUxMSW50QmFzZWxpbmVDYWxsZWVT
YXZlc0Zyb21GcmFtZU9yUmVnaXN0ZXJUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcihFbnRy
eUZyYW1lKiYsIGNvbnN0IFRlbXBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycyA9IHsgUmVnaXN0
ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpIH0pOwogCiAgICAgdm9pZCBlbWl0TWF0
ZXJpYWxpemVUYWdDaGVja1JlZ2lzdGVycygpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnNTcG9vbGVycy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzU3Bvb2xlcnMuaAkobm9uZXhpc3Rl
bnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVyc1Nwb29sZXJz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShKSVQp
CisKKyNpbmNsdWRlICJBc3NlbWJseUhlbHBlcnMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIE9wPgorY2xhc3MgQXNzZW1ibHlIZWxwZXJzOjpTcG9vbGVyIHsKK3B1
YmxpYzoKKyAgICB1c2luZyBKSVQgPSBBc3NlbWJseUhlbHBlcnM7CisKKyAgICBTcG9vbGVyKEpJ
VCYgaml0LCBHUFJSZWcgYmFzZUdQUikKKyAgICAgICAgOiBtX2ppdChqaXQpCisgICAgICAgICwg
bV9iYXNlR1BSKGJhc2VHUFIpCisgICAgeyB9CisKKyAgICB2b2lkIGhhbmRsZUdQUihjb25zdCBS
ZWdpc3RlckF0T2Zmc2V0JiBlbnRyeSkKKyAgICB7CisgICAgICAgIEFTU0VSVChlbnRyeS5yZWco
KS5pc0dQUigpKTsKKyAgICAgICAgaWYgY29uc3RleHByICghaGFzUGFpck9wKQorICAgICAgICAg
ICAgcmV0dXJuIG9wKCkuaGFuZGxlU2luZ2xlKGVudHJ5Lm9mZnNldCgpLCBlbnRyeS5yZWcoKS5n
cHIoKSk7CisKKyAgICAgICAgaWYgKCFtX2J1ZmZlcmVkRW50cnkucmVnKCkuaXNTZXQoKSkgewor
ICAgICAgICAgICAgbV9idWZmZXJlZEVudHJ5ID0gZW50cnk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyAgICAgICAgaWYgKGVudHJ5Lm9mZnNldCgpID09IG1fYnVmZmVyZWRFbnRy
eS5vZmZzZXQoKSArIHN0YXRpY19jYXN0PHB0cmRpZmZfdD4oZ3ByU2l6ZSkpIHsKKyAgICAgICAg
ICAgIG9wKCkuaGFuZGxlUGFpcihtX2J1ZmZlcmVkRW50cnkub2Zmc2V0KCksIG1fYnVmZmVyZWRF
bnRyeS5yZWcoKS5ncHIoKSwgZW50cnkucmVnKCkuZ3ByKCkpOworICAgICAgICAgICAgbV9idWZm
ZXJlZEVudHJ5ID0geyB9OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAg
IGlmIChtX2J1ZmZlcmVkRW50cnkub2Zmc2V0KCkgPT0gZW50cnkub2Zmc2V0KCkgKyBzdGF0aWNf
Y2FzdDxwdHJkaWZmX3Q+KGdwclNpemUpKSB7CisgICAgICAgICAgICBvcCgpLmhhbmRsZVBhaXIo
ZW50cnkub2Zmc2V0KCksIGVudHJ5LnJlZygpLmdwcigpLCBtX2J1ZmZlcmVkRW50cnkucmVnKCku
Z3ByKCkpOworICAgICAgICAgICAgbV9idWZmZXJlZEVudHJ5ID0geyB9OworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgZmx1c2hHUFIoKTsKKyAgICAgICAgaGFuZGxl
R1BSKGVudHJ5KTsKKyAgICB9CisKKyAgICB2b2lkIGZsdXNoR1BSKCkKKyAgICB7CisgICAgICAg
IGlmIGNvbnN0ZXhwciAoaGFzUGFpck9wKSB7CisgICAgICAgICAgICBpZiAobV9idWZmZXJlZEVu
dHJ5LnJlZygpLmlzU2V0KCkpIHsKKyAgICAgICAgICAgICAgICBvcCgpLmhhbmRsZVNpbmdsZSht
X2J1ZmZlcmVkRW50cnkub2Zmc2V0KCksIG1fYnVmZmVyZWRFbnRyeS5yZWcoKS5ncHIoKSk7Cisg
ICAgICAgICAgICAgICAgbV9idWZmZXJlZEVudHJ5ID0geyB9OworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorCisgICAgdm9pZCBoYW5kbGVGUFIoY29uc3QgUmVnaXN0ZXJBdE9mZnNl
dCYgZW50cnkpCisgICAgeworICAgICAgICBBU1NFUlQoZW50cnkucmVnKCkuaXNGUFIoKSk7Cisg
ICAgICAgIGlmIGNvbnN0ZXhwciAoIWhhc1BhaXJPcCkKKyAgICAgICAgICAgIHJldHVybiBvcCgp
LmhhbmRsZVNpbmdsZShlbnRyeS5vZmZzZXQoKSwgZW50cnkucmVnKCkuZnByKCkpOworCisgICAg
ICAgIGlmICghbV9idWZmZXJlZEVudHJ5LnJlZygpLmlzU2V0KCkpIHsKKyAgICAgICAgICAgIG1f
YnVmZmVyZWRFbnRyeSA9IGVudHJ5OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisg
ICAgICAgIGlmIChlbnRyeS5vZmZzZXQoKSA9PSBtX2J1ZmZlcmVkRW50cnkub2Zmc2V0KCkgKyBz
dGF0aWNfY2FzdDxwdHJkaWZmX3Q+KGZwclNpemUpKSB7CisgICAgICAgICAgICBvcCgpLmhhbmRs
ZVBhaXIobV9idWZmZXJlZEVudHJ5Lm9mZnNldCgpLCBtX2J1ZmZlcmVkRW50cnkucmVnKCkuZnBy
KCksIGVudHJ5LnJlZygpLmZwcigpKTsKKyAgICAgICAgICAgIG1fYnVmZmVyZWRFbnRyeSA9IHsg
fTsKKyAgICAgICAgfSBlbHNlIGlmIChtX2J1ZmZlcmVkRW50cnkub2Zmc2V0KCkgPT0gZW50cnku
b2Zmc2V0KCkgKyBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KGZwclNpemUpKSB7CisgICAgICAgICAg
ICBvcCgpLmhhbmRsZVBhaXIoZW50cnkub2Zmc2V0KCksIGVudHJ5LnJlZygpLmZwcigpLCBtX2J1
ZmZlcmVkRW50cnkucmVnKCkuZnByKCkpOworICAgICAgICAgICAgbV9idWZmZXJlZEVudHJ5ID0g
eyB9OworICAgICAgICB9CisKKyAgICAgICAgZmx1c2hGUFIoKTsKKyAgICAgICAgaGFuZGxlRlBS
KGVudHJ5KTsKKyAgICB9CisKKyAgICB2b2lkIGZsdXNoRlBSKCkKKyAgICB7CisgICAgICAgIGlm
IGNvbnN0ZXhwciAoaGFzUGFpck9wKSB7CisgICAgICAgICAgICBpZiAobV9idWZmZXJlZEVudHJ5
LnJlZygpLmlzU2V0KCkpIHsKKyAgICAgICAgICAgICAgICBvcCgpLmhhbmRsZVNpbmdsZShtX2J1
ZmZlcmVkRW50cnkub2Zmc2V0KCksIG1fYnVmZmVyZWRFbnRyeS5yZWcoKS5mcHIoKSk7CisgICAg
ICAgICAgICAgICAgbV9idWZmZXJlZEVudHJ5ID0geyB9OworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgfQorCitwcml2YXRlOgorICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGdwclNp
emUgPSBzaXplb2YoQ1BVUmVnaXN0ZXIpOworICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGZw
clNpemUgPSBzaXplb2YoZG91YmxlKTsKKyNpZiBDUFUoQVJNNjQpCisgICAgc3RhdGljIGNvbnN0
ZXhwciBib29sIGhhc1BhaXJPcCA9IHRydWU7CisjZWxzZQorICAgIHN0YXRpYyBjb25zdGV4cHIg
Ym9vbCBoYXNQYWlyT3AgPSBmYWxzZTsKKyNlbmRpZgorCisgICAgT3AmIG9wKCkgeyByZXR1cm4g
KnJlaW50ZXJwcmV0X2Nhc3Q8T3AqPih0aGlzKTsgfQorCitwcm90ZWN0ZWQ6CisgICAgSklUJiBt
X2ppdDsKKyAgICBHUFJSZWcgbV9iYXNlR1BSOworICAgIFJlZ2lzdGVyQXRPZmZzZXQgbV9idWZm
ZXJlZEVudHJ5OworfTsKKworY2xhc3MgQXNzZW1ibHlIZWxwZXJzOjpMb2FkUmVnU3Bvb2xlciA6
IHB1YmxpYyBBc3NlbWJseUhlbHBlcnM6OlNwb29sZXI8TG9hZFJlZ1Nwb29sZXI+IHsKKyAgICB1
c2luZyBCYXNlID0gU3Bvb2xlcjxMb2FkUmVnU3Bvb2xlcj47CisgICAgdXNpbmcgSklUID0gQmFz
ZTo6SklUOworcHVibGljOgorICAgIExvYWRSZWdTcG9vbGVyKEpJVCYgaml0LCBHUFJSZWcgYmFz
ZUdQUikKKyAgICAgICAgOiBCYXNlKGppdCwgYmFzZUdQUikKKyAgICB7IH0KKworICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBsb2FkR1BSKGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXQmIGVudHJ5KSB7IEJh
c2U6OmhhbmRsZUdQUihlbnRyeSk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZmx1c2hHUFIo
KSB7IEJhc2U6OmZsdXNoR1BSKCk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbG9hZEZQUihj
b25zdCBSZWdpc3RlckF0T2Zmc2V0JiBlbnRyeSkgeyBCYXNlOjpoYW5kbGVGUFIoZW50cnkpOyB9
CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGZsdXNoRlBSKCkgeyBCYXNlOjpmbHVzaEZQUigpOyB9
CisKKyNpZiBDUFUoQVJNNjQpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgUmVnVHlwZT4KKyAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgaGFuZGxlUGFpcihwdHJkaWZmX3Qgb2Zmc2V0LCBSZWdUeXBlIHJl
ZzEsIFJlZ1R5cGUgcmVnMikKKyAgICB7CisgICAgICAgIG1faml0LmxvYWRQYWlyNjQobV9iYXNl
R1BSLCBUcnVzdGVkSW1tMzIob2Zmc2V0KSwgcmVnMSwgcmVnMik7CisgICAgfQorI2Vsc2UKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBSZWdUeXBlPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBoYW5k
bGVQYWlyKHB0cmRpZmZfdCwgUmVnVHlwZSwgUmVnVHlwZSkgeyB9CisjZW5kaWYKKworICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBoYW5kbGVTaW5nbGUocHRyZGlmZl90IG9mZnNldCwgR1BSUmVnIHJl
ZykKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgbV9qaXQubG9hZDY0KEFkZHJl
c3MobV9iYXNlR1BSLCBvZmZzZXQpLCByZWcpOworI2Vsc2UKKyAgICAgICAgbV9qaXQubG9hZDMy
KEFkZHJlc3MobV9iYXNlR1BSLCBvZmZzZXQpLCByZWcpOworI2VuZGlmCisgICAgfQorCisgICAg
QUxXQVlTX0lOTElORSB2b2lkIGhhbmRsZVNpbmdsZShwdHJkaWZmX3Qgb2Zmc2V0LCBGUFJSZWcg
cmVnKQorICAgIHsKKyAgICAgICAgbV9qaXQubG9hZERvdWJsZShBZGRyZXNzKG1fYmFzZUdQUiwg
b2Zmc2V0KSwgcmVnKTsKKyAgICB9Cit9OworCitjbGFzcyBBc3NlbWJseUhlbHBlcnM6OlN0b3Jl
UmVnU3Bvb2xlciA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnM6OlNwb29sZXI8U3RvcmVSZWdTcG9v
bGVyPiB7CisgICAgdXNpbmcgQmFzZSA9IFNwb29sZXI8U3RvcmVSZWdTcG9vbGVyPjsKKyAgICB1
c2luZyBKSVQgPSB0eXBlbmFtZSBCYXNlOjpKSVQ7CitwdWJsaWM6CisgICAgU3RvcmVSZWdTcG9v
bGVyKEpJVCYgaml0LCBHUFJSZWcgYmFzZUdQUikKKyAgICAgICAgOiBCYXNlKGppdCwgYmFzZUdQ
UikKKyAgICB7IH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzdG9yZUdQUihjb25zdCBSZWdp
c3RlckF0T2Zmc2V0JiBlbnRyeSkgeyBCYXNlOjpoYW5kbGVHUFIoZW50cnkpOyB9CisgICAgQUxX
QVlTX0lOTElORSB2b2lkIGZsdXNoR1BSKCkgeyBCYXNlOjpmbHVzaEdQUigpOyB9CisgICAgQUxX
QVlTX0lOTElORSB2b2lkIHN0b3JlRlBSKGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXQmIGVudHJ5KSB7
IEJhc2U6OmhhbmRsZUZQUihlbnRyeSk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZmx1c2hG
UFIoKSB7IEJhc2U6OmZsdXNoRlBSKCk7IH0KKworI2lmIENQVShBUk02NCkKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBSZWdUeXBlPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBoYW5kbGVQYWlyKHB0
cmRpZmZfdCBvZmZzZXQsIFJlZ1R5cGUgcmVnMSwgUmVnVHlwZSByZWcyKQorICAgIHsKKyAgICAg
ICAgbV9qaXQuc3RvcmVQYWlyNjQocmVnMSwgcmVnMiwgbV9iYXNlR1BSLCBUcnVzdGVkSW1tMzIo
b2Zmc2V0KSk7CisgICAgfQorI2Vsc2UKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSZWdUeXBlPgor
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBoYW5kbGVQYWlyKHB0cmRpZmZfdCwgUmVnVHlwZSwgUmVn
VHlwZSkgeyB9CisjZW5kaWYKKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBoYW5kbGVTaW5nbGUo
cHRyZGlmZl90IG9mZnNldCwgR1BSUmVnIHJlZykKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkK
KyAgICAgICAgbV9qaXQuc3RvcmU2NChyZWcsIEFkZHJlc3MobV9iYXNlR1BSLCBvZmZzZXQpKTsK
KyNlbHNlCisgICAgICAgIG1faml0LnN0b3JlMzIocmVnLCBBZGRyZXNzKG1fYmFzZUdQUiwgb2Zm
c2V0KSk7CisjZW5kaWYKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgaGFuZGxlU2lu
Z2xlKHB0cmRpZmZfdCBvZmZzZXQsIEZQUlJlZyByZWcpCisgICAgeworICAgICAgICBtX2ppdC5z
dG9yZURvdWJsZShyZWcsIEFkZHJlc3MobV9iYXNlR1BSLCBvZmZzZXQpKTsKKyAgICB9Cit9Owor
CisvLyBXb3JrYXJvdW5kIGZvciBnY2MncyBpbmJpbGl0eSB0byBzcGVjaWFsaXplIHRlbXBsYXRl
IGZ1bmN0aW9ucyBmb3IgdGVtcGxhdGUKKy8vIGZ1bmN0aW9ucyBkZWNsYXJlZCB3aXRoaW4gdGhl
IHNhbWUgY2xhc3MuCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZWdUeXBlPgorc3RydWN0IFJlZ0Rpc3Bh
dGNoIHsKKyAgICBzdGF0aWMgUmVnVHlwZSBnZXQoUmVnKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBTcG9vbGVyPiBzdGF0aWMgUmVnVHlwZSB0ZW1wMShjb25zdCBTcG9vbGVyKik7CisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgU3Bvb2xlcj4gc3RhdGljIFJlZ1R5cGUgdGVtcDIoY29uc3QgU3Bvb2xl
ciopOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNwb29sZXI+IHN0YXRpYyBSZWdUeXBlJiByZWdU
b1N0b3JlKFNwb29sZXIqKTsKKyAgICBzdGF0aWMgY29uc3RleHByIFJlZ1R5cGUgaW52YWxpZCgp
OworICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHJlZ1NpemUoKTsKKyAgICBzdGF0aWMgYm9v
bCBpc1ZhbGlkTG9hZFBhaXJJbW0oaW50KTsKKyAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkU3RvcmVQ
YWlySW1tKGludCk7Cit9OworCit0ZW1wbGF0ZTw+CitzdHJ1Y3QgUmVnRGlzcGF0Y2g8R1BSUmVn
PiB7CisgICAgc3RhdGljIEdQUlJlZyBnZXQoUmVnIHJlZykgeyByZXR1cm4gcmVnLmdwcigpOyB9
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgU3Bvb2xlcj4gc3RhdGljIEdQUlJlZyB0ZW1wMShjb25z
dCBTcG9vbGVyKiBzcG9vbGVyKSB7IHJldHVybiBzcG9vbGVyLT5tX3RlbXAxR1BSOyB9CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgU3Bvb2xlcj4gc3RhdGljIEdQUlJlZyB0ZW1wMihjb25zdCBTcG9v
bGVyKiBzcG9vbGVyKSB7IHJldHVybiBzcG9vbGVyLT5tX3RlbXAyR1BSOyB9CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgU3Bvb2xlcj4gc3RhdGljIEdQUlJlZyYgcmVnVG9TdG9yZShTcG9vbGVyKiBz
cG9vbGVyKSB7IHJldHVybiBzcG9vbGVyLT5tX2dwclRvU3RvcmU7IH0KKyAgICBzdGF0aWMgY29u
c3RleHByIEdQUlJlZyBpbnZhbGlkKCkgeyByZXR1cm4gSW52YWxpZEdQUlJlZzsgfQorICAgIHN0
YXRpYyBjb25zdGV4cHIgc2l6ZV90IHJlZ1NpemUoKSB7IHJldHVybiBzaXplb2YoQ1BVUmVnaXN0
ZXIpOyB9CisjaWYgQ1BVKEFSTTY0KQorICAgIHN0YXRpYyBib29sIGlzVmFsaWRMb2FkUGFpcklt
bShpbnQgb2Zmc2V0KSB7IHJldHVybiBBUk02NEFzc2VtYmxlcjo6aXNWYWxpZExEUEltbTw2ND4o
b2Zmc2V0KTsgfQorICAgIHN0YXRpYyBib29sIGlzVmFsaWRTdG9yZVBhaXJJbW0oaW50IG9mZnNl
dCkgeyByZXR1cm4gQVJNNjRBc3NlbWJsZXI6OmlzVmFsaWRTVFBJbW08NjQ+KG9mZnNldCk7IH0K
KyNlbHNlCisgICAgc3RhdGljIGJvb2wgaXNWYWxpZExvYWRQYWlySW1tKGludCkgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkU3RvcmVQYWlySW1tKGludCkgeyByZXR1
cm4gZmFsc2U7IH0KKyNlbmRpZgorfTsKKwordGVtcGxhdGU8Pgorc3RydWN0IFJlZ0Rpc3BhdGNo
PEZQUlJlZz4geworICAgIHN0YXRpYyBGUFJSZWcgZ2V0KFJlZyByZWcpIHsgcmV0dXJuIHJlZy5m
cHIoKTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNwb29sZXI+IHN0YXRpYyBGUFJSZWcgdGVt
cDEoY29uc3QgU3Bvb2xlciogc3Bvb2xlcikgeyByZXR1cm4gc3Bvb2xlci0+bV90ZW1wMUZQUjsg
fQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNwb29sZXI+IHN0YXRpYyBGUFJSZWcgdGVtcDIoY29u
c3QgU3Bvb2xlciogc3Bvb2xlcikgeyByZXR1cm4gc3Bvb2xlci0+bV90ZW1wMkZQUjsgfQorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFNwb29sZXI+IHN0YXRpYyBGUFJSZWcmIHJlZ1RvU3RvcmUoU3Bv
b2xlciogc3Bvb2xlcikgeyByZXR1cm4gc3Bvb2xlci0+bV9mcHJUb1N0b3JlOyB9CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBGUFJSZWcgaW52YWxpZCgpIHsgcmV0dXJuIEludmFsaWRGUFJSZWc7IH0K
KyAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCByZWdTaXplKCkgeyByZXR1cm4gc2l6ZW9mKGRv
dWJsZSk7IH0KKyNpZiBDUFUoQVJNNjQpCisgICAgc3RhdGljIGJvb2wgaXNWYWxpZExvYWRQYWly
SW1tKGludCBvZmZzZXQpIHsgcmV0dXJuIEFSTTY0QXNzZW1ibGVyOjppc1ZhbGlkTERQRlBJbW08
NjQ+KG9mZnNldCk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkU3RvcmVQYWlySW1tKGludCBv
ZmZzZXQpIHsgcmV0dXJuIEFSTTY0QXNzZW1ibGVyOjppc1ZhbGlkU1RQRlBJbW08NjQ+KG9mZnNl
dCk7IH0KKyNlbHNlCisgICAgc3RhdGljIGJvb2wgaXNWYWxpZExvYWRQYWlySW1tKGludCkgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkU3RvcmVQYWlySW1tKGludCkg
eyByZXR1cm4gZmFsc2U7IH0KKyNlbmRpZgorfTsKKworY2xhc3MgQXNzZW1ibHlIZWxwZXJzOjpD
b3B5U3Bvb2xlciB7CitwdWJsaWM6CisgICAgdXNpbmcgSklUID0gQXNzZW1ibHlIZWxwZXJzOwor
ICAgIHVzaW5nIEFkZHJlc3MgPSBKSVQ6OkFkZHJlc3M7CisgICAgdXNpbmcgVHJ1c3RlZEltbTMy
ID0gSklUOjpUcnVzdGVkSW1tMzI7CisKKyAgICBzdHJ1Y3QgU291cmNlIHsKKyAgICAgICAgZW51
bSBjbGFzcyBUeXBlIHsgQnVmZmVyT2Zmc2V0LCBSZWcsIEVuY29kZWRKU1ZhbHVlIH0gdHlwZTsK
KyAgICAgICAgaW50IG9mZnNldDsKKyAgICAgICAgUmVnIHJlZzsKKyAgICAgICAgRW5jb2RlZEpT
VmFsdWUgdmFsdWU7CisKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgUmVnVHlwZT4gUmVnVHlw
ZSBnZXRSZWcoKSB7IHJldHVybiBSZWdEaXNwYXRjaDxSZWdUeXBlPjo6Z2V0KHJlZyk7IH07Cisg
ICAgfTsKKworICAgIGVudW0gY2xhc3MgQnVmZmVyUmVncyB7CisgICAgICAgIE5lZWRQcmVzZXJ2
YXRpb24sCisgICAgICAgIEFsbG93TW9kaWZpY2F0aW9uCisgICAgfTsKKworICAgIENvcHlTcG9v
bGVyKEJ1ZmZlclJlZ3MgYXR0cmlidXRlLCBKSVQmIGppdCwgR1BSUmVnIHNyY0J1ZmZlciwgR1BS
UmVnIGRlc3RCdWZmZXIsIEdQUlJlZyB0ZW1wMSwgR1BSUmVnIHRlbXAyLCBGUFJSZWcgZnBUZW1w
MSA9IEludmFsaWRGUFJSZWcsIEZQUlJlZyBmcFRlbXAyID0gSW52YWxpZEZQUlJlZykKKyAgICAg
ICAgOiBtX2ppdChqaXQpCisgICAgICAgICwgbV9zcmNCdWZmZXJHUFIoc3JjQnVmZmVyKQorICAg
ICAgICAsIG1fZHN0QnVmZmVyR1BSKGRlc3RCdWZmZXIpCisgICAgICAgICwgbV90ZW1wMUdQUih0
ZW1wMSkKKyAgICAgICAgLCBtX3RlbXAyR1BSKHRlbXAyKQorICAgICAgICAsIG1fdGVtcDFGUFIo
ZnBUZW1wMSkKKyAgICAgICAgLCBtX3RlbXAyRlBSKGZwVGVtcDIpCisgICAgICAgICwgbV9idWZm
ZXJSZWdzQXR0cihhdHRyaWJ1dGUpCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKGhhc1Bh
aXJPcCAmJiAhaXNBUk02NCgpKQorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsgLy8gdW5zdXBwb3J0ZWQgYXJjaGl0ZWN0dXJlLgorICAgIH0KKworICAgIENvcHlTcG9v
bGVyKEpJVCYgaml0LCBHUFJSZWcgc3JjQnVmZmVyLCBHUFJSZWcgZGVzdEJ1ZmZlciwgR1BSUmVn
IHRlbXAxLCBHUFJSZWcgdGVtcDIsIEZQUlJlZyBmcFRlbXAxID0gSW52YWxpZEZQUlJlZywgRlBS
UmVnIGZwVGVtcDIgPSBJbnZhbGlkRlBSUmVnKQorICAgICAgICA6IENvcHlTcG9vbGVyKEJ1ZmZl
clJlZ3M6Ok5lZWRQcmVzZXJ2YXRpb24sIGppdCwgc3JjQnVmZmVyLCBkZXN0QnVmZmVyLCB0ZW1w
MSwgdGVtcDIsIGZwVGVtcDEsIGZwVGVtcDIpCisgICAgeyB9CisKK3ByaXZhdGU6CisvLyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBSZWdUeXBlPiBSZWdUeXBlIHRlbXAxKCkgY29uc3Q7CisvLyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBSZWdUeXBlPiBSZWdUeXBlIHRlbXAyKCkgY29uc3Q7CisvLworLy8g
ICAgdGVtcGxhdGU8PiBHUFJSZWcgdGVtcDE8R1BSUmVnPigpIGNvbnN0IHsgcmV0dXJuIG1fdGVt
cDFHUFI7IH0KKy8vICAgIHRlbXBsYXRlPD4gR1BSUmVnIHRlbXAyPEdQUlJlZz4oKSBjb25zdCB7
IHJldHVybiBtX3RlbXAyR1BSOyB9CisvLyAgICB0ZW1wbGF0ZTw+IEZQUlJlZyB0ZW1wMTxGUFJS
ZWc+KCkgY29uc3QgeyByZXR1cm4gbV90ZW1wMUZQUjsgfQorLy8gICAgdGVtcGxhdGU8PiBGUFJS
ZWcgdGVtcDI8RlBSUmVnPigpIGNvbnN0IHsgcmV0dXJuIG1fdGVtcDJGUFI7IH0KKworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFJlZ1R5cGU+IFJlZ1R5cGUgdGVtcDEoKSBjb25zdCB7IHJldHVybiBS
ZWdEaXNwYXRjaDxSZWdUeXBlPjo6dGVtcDEodGhpcyk7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBSZWdUeXBlPiBSZWdUeXBlIHRlbXAyKCkgY29uc3QgeyByZXR1cm4gUmVnRGlzcGF0Y2g8UmVn
VHlwZT46OnRlbXAyKHRoaXMpOyB9CisKKy8vICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJlZ1R5cGU+
IFJlZ1R5cGUmIHJlZ1RvU3RvcmUoKTsKKy8vICAgIHRlbXBsYXRlPD4gR1BSUmVnJiByZWdUb1N0
b3JlPEdQUlJlZz4oKSB7IHJldHVybiBtX2dwclRvU3RvcmU7IH0KKy8vICAgIHRlbXBsYXRlPD4g
RlBSUmVnJiByZWdUb1N0b3JlPEZQUlJlZz4oKSB7IHJldHVybiBtX2ZwclRvU3RvcmU7IH0KKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBSZWdUeXBlPiBSZWdUeXBlJiByZWdUb1N0b3JlKCkgeyByZXR1
cm4gUmVnRGlzcGF0Y2g8UmVnVHlwZT46OnJlZ1RvU3RvcmUodGhpcyk7IH0KKworLy8gICAgdGVt
cGxhdGU8dHlwZW5hbWUgUmVnVHlwZT4gc3RhdGljIGNvbnN0ZXhwciBSZWdUeXBlIGludmFsaWQo
KTsKKy8vICAgIHRlbXBsYXRlPD4gY29uc3RleHByIEdQUlJlZyBpbnZhbGlkPEdQUlJlZz4oKSB7
IHJldHVybiBJbnZhbGlkR1BSUmVnOyB9CisvLyAgICB0ZW1wbGF0ZTw+IGNvbnN0ZXhwciBGUFJS
ZWcgaW52YWxpZDxGUFJSZWc+KCkgeyByZXR1cm4gSW52YWxpZEZQUlJlZzsgfQorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFJlZ1R5cGU+IHN0YXRpYyBjb25zdGV4cHIgUmVnVHlwZSBpbnZhbGlkKCkg
eyByZXR1cm4gUmVnRGlzcGF0Y2g8UmVnVHlwZT46OmludmFsaWQoKTsgfQorCisvLyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBSZWdUeXBlPgorLy8gICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgcmVnU2l6
ZSgpCisvLyAgICB7CisvLyAgICAgICAgcmV0dXJuIHN0ZDo6aXNfc2FtZTxSZWdUeXBlLCBHUFJS
ZWc+Ojp2YWx1ZSA/IHNpemVvZihDUFVSZWdpc3RlcikgOiBzaXplb2YoZG91YmxlKTsKKy8vICAg
IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSZWdUeXBlPiBzdGF0aWMgY29uc3RleHByIGludCBy
ZWdTaXplKCkgeyByZXR1cm4gUmVnRGlzcGF0Y2g8UmVnVHlwZT46OnJlZ1NpemUoKTsgfQorCisv
LyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSZWdUeXBlPiBzdGF0aWMgYm9vbCBpc1ZhbGlkTG9hZFBh
aXJJbW0oaW50KSB7IHJldHVybiBmYWxzZTsgfQorLy8gICAgdGVtcGxhdGU8dHlwZW5hbWUgUmVn
VHlwZT4gc3RhdGljIGJvb2wgaXNWYWxpZFN0b3JlUGFpckltbShpbnQpIHsgcmV0dXJuIGZhbHNl
OyB9CisvLworLy8jaWYgQ1BVKEFSTTY0KQorLy8gICAgdGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5F
IGJvb2wgaXNWYWxpZExvYWRQYWlySW1tPEdQUlJlZz4oaW50IG9mZnNldCkKKy8vICAgIHsKKy8v
ICAgICAgICByZXR1cm4gQVJNNjRBc3NlbWJsZXI6OmlzVmFsaWRMRFBJbW08NjQ+KG9mZnNldCk7
CisvLyAgICB9CisvLworLy8gICAgdGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIGJvb2wgaXNWYWxp
ZExvYWRQYWlySW1tPEZQUlJlZz4oaW50IG9mZnNldCkKKy8vICAgIHsKKy8vICAgICAgICByZXR1
cm4gQVJNNjRBc3NlbWJsZXI6OmlzVmFsaWRMRFBGUEltbTw2ND4ob2Zmc2V0KTsKKy8vICAgIH0K
Ky8vCisvLyAgICB0ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgYm9vbCBpc1ZhbGlkU3RvcmVQYWly
SW1tPEdQUlJlZz4oaW50IG9mZnNldCkKKy8vICAgIHsKKy8vICAgICAgICByZXR1cm4gQVJNNjRB
c3NlbWJsZXI6OmlzVmFsaWRTVFBJbW08NjQ+KG9mZnNldCk7CisvLyAgICB9CisvLworLy8gICAg
dGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIGJvb2wgaXNWYWxpZFN0b3JlUGFpckltbTxGUFJSZWc+
KGludCBvZmZzZXQpCisvLyAgICB7CisvLyAgICAgICAgcmV0dXJuIEFSTTY0QXNzZW1ibGVyOjpp
c1ZhbGlkU1RQRlBJbW08NjQ+KG9mZnNldCk7CisvLyAgICB9CisvLyNlbmRpZiAvLyBDUFUoQVJN
NjQpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgUmVnVHlwZT4gc3RhdGljIGJvb2wgaXNWYWxpZExv
YWRQYWlySW1tKGludCBvZmZzZXQpIHsgcmV0dXJuIFJlZ0Rpc3BhdGNoPFJlZ1R5cGU+Ojppc1Zh
bGlkTG9hZFBhaXJJbW0ob2Zmc2V0KTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJlZ1R5cGU+
IHN0YXRpYyBib29sIGlzVmFsaWRTdG9yZVBhaXJJbW0oaW50IG9mZnNldCkgeyByZXR1cm4gUmVn
RGlzcGF0Y2g8UmVnVHlwZT46OmlzVmFsaWRTdG9yZVBhaXJJbW0ob2Zmc2V0KTsgfQorCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgUmVnVHlwZT4KKyAgICB2b2lkIGxvYWQoaW50IG9mZnNldCkKKyAg
ICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAoIWhhc1BhaXJPcCkgeworICAgICAgICAgICAgYXV0
byYgcmVnVG9TdG9yZSA9IHRoaXMtPnJlZ1RvU3RvcmU8UmVnVHlwZT4oKTsKKyAgICAgICAgICAg
IHJlZ1RvU3RvcmUgPSB0ZW1wMTxSZWdUeXBlPigpOworICAgICAgICAgICAgbG9hZChvZmZzZXQs
IHJlZ1RvU3RvcmUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAg
YXV0byYgc291cmNlID0gbV9zb3VyY2VzW21fY3VycmVudFNvdXJjZSsrXTsKKyAgICAgICAgc291
cmNlLnR5cGUgPSBTb3VyY2U6OlR5cGU6OkJ1ZmZlck9mZnNldDsKKyAgICAgICAgc291cmNlLm9m
ZnNldCA9IG9mZnNldDsKKyAgICB9CisKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIHZvaWQgbW92
ZShFbmNvZGVkSlNWYWx1ZSB2YWx1ZSkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAoIWhh
c1BhaXJPcCkgeworICAgICAgICAgICAgYXV0byYgcmVnVG9TdG9yZSA9IHRoaXMtPnJlZ1RvU3Rv
cmU8R1BSUmVnPigpOworICAgICAgICAgICAgcmVnVG9TdG9yZSA9IHRlbXAxPEdQUlJlZz4oKTsK
KyAgICAgICAgICAgIG1vdmUodmFsdWUsIHJlZ1RvU3RvcmUpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKKyAgICAgICAgYXV0byYgc291cmNlID0gbV9zb3VyY2VzW21fY3VycmVu
dFNvdXJjZSsrXTsKKyAgICAgICAgc291cmNlLnR5cGUgPSBTb3VyY2U6OlR5cGU6OkVuY29kZWRK
U1ZhbHVlOworICAgICAgICBzb3VyY2UudmFsdWUgPSB2YWx1ZTsKKyAgICB9CisjZW5kaWYKKwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJlZ1R5cGU+CisgICAgdm9pZCBjb3B5KFJlZ1R5cGUgcmVn
KQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByICghaGFzUGFpck9wKSB7CisgICAgICAgICAg
ICBhdXRvJiByZWdUb1N0b3JlID0gdGhpcy0+cmVnVG9TdG9yZTxSZWdUeXBlPigpOworICAgICAg
ICAgICAgcmVnVG9TdG9yZSA9IHJlZzsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIGF1dG8mIHNvdXJjZSA9IG1fc291cmNlc1ttX2N1cnJlbnRTb3VyY2UrK107Cisg
ICAgICAgIHNvdXJjZS50eXBlID0gU291cmNlOjpUeXBlOjpSZWc7CisgICAgICAgIHNvdXJjZS5y
ZWcgPSByZWc7CisgICAgfTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJlZ1R5cGU+CisgICAg
dm9pZCBzdG9yZShpbnQgc3RvcmVPZmZzZXQpCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIg
KCFoYXNQYWlyT3ApIHsKKyAgICAgICAgICAgIGF1dG8gcmVnVG9TdG9yZSA9IHRoaXMtPnJlZ1Rv
U3RvcmU8UmVnVHlwZT4oKTsKKyAgICAgICAgICAgIHN0b3JlKHJlZ1RvU3RvcmUsIHN0b3JlT2Zm
c2V0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnN0IGJv
b2wgcmVnVHlwZUlzR1BSID0gc3RkOjppc19zYW1lPFJlZ1R5cGUsIEdQUlJlZz46OnZhbHVlOwor
CisgICAgICAgIGlmIChtX2N1cnJlbnRTb3VyY2UgPCAyKSB7CisgICAgICAgICAgICBtX2RlZmVy
cmVkU3RvcmVPZmZzZXQgPSBzdG9yZU9mZnNldDsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorCisgICAgICAgIFJlZ1R5cGUgcmVnVG9TdG9yZTEgPSBpbnZhbGlkPFJlZ1R5cGU+KCk7
CisgICAgICAgIFJlZ1R5cGUgcmVnVG9TdG9yZTIgPSBpbnZhbGlkPFJlZ1R5cGU+KCk7CisgICAg
ICAgIGF1dG8mIHNvdXJjZTEgPSBtX3NvdXJjZXNbMF07CisgICAgICAgIGF1dG8mIHNvdXJjZTIg
PSBtX3NvdXJjZXNbMV07CisgICAgICAgIGF1dG8gc3JjT2Zmc2V0MSA9IG1fc291cmNlc1swXS5v
ZmZzZXQgLSBtX3NyY09mZnNldEFkanVzdG1lbnQ7CisgICAgICAgIGF1dG8gc3JjT2Zmc2V0MiA9
IG1fc291cmNlc1sxXS5vZmZzZXQgLSBtX3NyY09mZnNldEFkanVzdG1lbnQ7CisgICAgICAgIGNv
bnN0ZXhwciBpbnQgcmVnaXN0ZXJTaXplID0gcmVnU2l6ZTxSZWdUeXBlPigpOworCisgICAgICAg
IGlmIChzb3VyY2UxLnR5cGUgPT0gU291cmNlOjpUeXBlOjpCdWZmZXJPZmZzZXQgJiYgc291cmNl
Mi50eXBlID09IFNvdXJjZTo6VHlwZTo6QnVmZmVyT2Zmc2V0KSB7CisgICAgICAgICAgICByZWdU
b1N0b3JlMSA9IHRlbXAxPFJlZ1R5cGU+KCk7CisgICAgICAgICAgICByZWdUb1N0b3JlMiA9IHRl
bXAyPFJlZ1R5cGU+KCk7CisKKyAgICAgICAgICAgIGludCBvZmZzZXREZWx0YSA9IGFicyhzcmNP
ZmZzZXQxIC0gc3JjT2Zmc2V0Mik7CisgICAgICAgICAgICBpbnQgbWluT2Zmc2V0ID0gc3RkOjpt
aW4oc3JjT2Zmc2V0MSwgc3JjT2Zmc2V0Mik7CisgICAgICAgICAgICBib29sIGlzVmFsaWRPZmZz
ZXQgPSBpc1ZhbGlkTG9hZFBhaXJJbW08UmVnVHlwZT4obWluT2Zmc2V0KTsKKworICAgICAgICAg
ICAgaWYgKG9mZnNldERlbHRhICE9IHJlZ2lzdGVyU2l6ZSB8fCAoIWlzVmFsaWRPZmZzZXQgJiYg
bV9idWZmZXJSZWdzQXR0ciAhPSBCdWZmZXJSZWdzOjpBbGxvd01vZGlmaWNhdGlvbikpIHsKKyAg
ICAgICAgICAgICAgICBsb2FkKHNyY09mZnNldDEsIHJlZ1RvU3RvcmUxKTsKKyAgICAgICAgICAg
ICAgICBsb2FkKHNyY09mZnNldDIsIHJlZ1RvU3RvcmUyKTsKKyAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KSB7CisgICAgICAgICAgICAgICAg
ICAgIEFTU0VSVChtX2J1ZmZlclJlZ3NBdHRyID09IEJ1ZmZlclJlZ3M6OkFsbG93TW9kaWZpY2F0
aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgbV9zcmNPZmZzZXRBZGp1c3RtZW50ICs9IG1pbk9m
ZnNldDsKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQuYWRkUHRyKFRydXN0ZWRJbW0zMihtaW5P
ZmZzZXQpLCBtX3NyY0J1ZmZlckdQUik7CisKKyAgICAgICAgICAgICAgICAgICAgc3JjT2Zmc2V0
MSAtPSBtaW5PZmZzZXQ7CisgICAgICAgICAgICAgICAgICAgIHNyY09mZnNldDIgLT0gbWluT2Zm
c2V0OworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoaXNWYWxpZExvYWRQYWlySW1tPFJlZ1R5
cGU+KHN0ZDo6bWluKHNyY09mZnNldDEsIHNyY09mZnNldDIpKSk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGlmIChzcmNPZmZzZXQxIDwgc3JjT2Zmc2V0MikKKyAgICAgICAg
ICAgICAgICAgICAgbG9hZFBhaXIoc3JjT2Zmc2V0MSwgcmVnVG9TdG9yZTEsIHJlZ1RvU3RvcmUy
KTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGxvYWRQYWlyKHNy
Y09mZnNldDIsIHJlZ1RvU3RvcmUyLCByZWdUb1N0b3JlMSk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0gZWxzZSBpZiAoc291cmNlMS50eXBlID09IFNvdXJjZTo6VHlwZTo6QnVmZmVyT2Zmc2V0
KSB7CisgICAgICAgICAgICByZWdUb1N0b3JlMSA9IHRlbXAxPFJlZ1R5cGU+KCk7CisgICAgICAg
ICAgICBsb2FkKHNyY09mZnNldDEsIHJlZ1RvU3RvcmUxKTsKKyAgICAgICAgICAgIGlmIChzb3Vy
Y2UyLnR5cGUgPT0gU291cmNlOjpUeXBlOjpFbmNvZGVkSlNWYWx1ZSkgeworICAgICAgICAgICAg
ICAgIGlmIGNvbnN0ZXhwciAocmVnVHlwZUlzR1BSKSB7CisgICAgICAgICAgICAgICAgICAgIHJl
Z1RvU3RvcmUyID0gdGVtcDI8UmVnVHlwZT4oKTsKKyAgICAgICAgICAgICAgICAgICAgbW92ZShz
b3VyY2UyLnZhbHVlLCByZWdUb1N0b3JlMik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfSBlbHNlCisgICAgICAgICAgICAgICAgcmVnVG9TdG9yZTIgPSBzb3VyY2UyLmdldFJlZzxS
ZWdUeXBlPigpOworCisgICAgICAgIH0gZWxzZSBpZiAoc291cmNlMi50eXBlID09IFNvdXJjZTo6
VHlwZTo6QnVmZmVyT2Zmc2V0KSB7CisgICAgICAgICAgICBpZiAoc291cmNlMS50eXBlID09IFNv
dXJjZTo6VHlwZTo6RW5jb2RlZEpTVmFsdWUpIHsKKyAgICAgICAgICAgICAgICBpZiBjb25zdGV4
cHIgKHJlZ1R5cGVJc0dQUikgeworICAgICAgICAgICAgICAgICAgICByZWdUb1N0b3JlMSA9IHRl
bXAxPFJlZ1R5cGU+KCk7CisgICAgICAgICAgICAgICAgICAgIG1vdmUoc291cmNlMS52YWx1ZSwg
cmVnVG9TdG9yZTEpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgICAgIHJlZ1RvU3RvcmUxID0gc291cmNlMS5nZXRSZWc8UmVnVHlwZT4oKTsKKyAg
ICAgICAgICAgIHJlZ1RvU3RvcmUyID0gdGVtcDI8UmVnVHlwZT4oKTsKKyAgICAgICAgICAgIGxv
YWQoc3JjT2Zmc2V0MiwgcmVnVG9TdG9yZTIpOworCisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICBpZiAoc291cmNlMS50eXBlID09IFNvdXJjZTo6VHlwZTo6RW5jb2RlZEpTVmFsdWUpIHsK
KyAgICAgICAgICAgICAgICBpZiBjb25zdGV4cHIgKHJlZ1R5cGVJc0dQUikgeworICAgICAgICAg
ICAgICAgICAgICByZWdUb1N0b3JlMSA9IHRlbXAxPFJlZ1R5cGU+KCk7CisgICAgICAgICAgICAg
ICAgICAgIG1vdmUoc291cmNlMS52YWx1ZSwgcmVnVG9TdG9yZTEpOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHJlZ1RvU3RvcmUxID0gc291
cmNlMS5nZXRSZWc8UmVnVHlwZT4oKTsKKworICAgICAgICAgICAgaWYgKHNvdXJjZTIudHlwZSA9
PSBTb3VyY2U6OlR5cGU6OkVuY29kZWRKU1ZhbHVlKSB7CisgICAgICAgICAgICAgICAgaWYgY29u
c3RleHByIChyZWdUeXBlSXNHUFIpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVnVG9TdG9yZTIg
PSB0ZW1wMjxSZWdUeXBlPigpOworICAgICAgICAgICAgICAgICAgICBtb3ZlKHNvdXJjZTIudmFs
dWUsIHJlZ1RvU3RvcmUyKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UK
KyAgICAgICAgICAgICAgICByZWdUb1N0b3JlMiA9IHNvdXJjZTIuZ2V0UmVnPFJlZ1R5cGU+KCk7
CisgICAgICAgIH0KKworICAgICAgICBpbnQgZHN0T2Zmc2V0MSA9IG1fZGVmZXJyZWRTdG9yZU9m
ZnNldCAtIG1fZHN0T2Zmc2V0QWRqdXN0bWVudDsKKyAgICAgICAgaW50IGRzdE9mZnNldDIgPSBz
dG9yZU9mZnNldCAtIG1fZHN0T2Zmc2V0QWRqdXN0bWVudDsKKworICAgICAgICBpbnQgb2Zmc2V0
RGVsdGEgPSBhYnMoZHN0T2Zmc2V0MSAtIGRzdE9mZnNldDIpOworICAgICAgICBpbnQgbWluT2Zm
c2V0ID0gc3RkOjptaW4oZHN0T2Zmc2V0MSwgZHN0T2Zmc2V0Mik7CisgICAgICAgIGJvb2wgaXNW
YWxpZE9mZnNldCA9IGlzVmFsaWRTdG9yZVBhaXJJbW08UmVnVHlwZT4obWluT2Zmc2V0KTsKKwor
ICAgICAgICBpZiAob2Zmc2V0RGVsdGEgIT0gcmVnaXN0ZXJTaXplIHx8ICghaXNWYWxpZE9mZnNl
dCAmJiBtX2J1ZmZlclJlZ3NBdHRyICE9IEJ1ZmZlclJlZ3M6OkFsbG93TW9kaWZpY2F0aW9uKSkg
eworICAgICAgICAgICAgc3RvcmUocmVnVG9TdG9yZTEsIGRzdE9mZnNldDEpOworICAgICAgICAg
ICAgc3RvcmUocmVnVG9TdG9yZTIsIGRzdE9mZnNldDIpOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKG1f
YnVmZmVyUmVnc0F0dHIgPT0gQnVmZmVyUmVnczo6QWxsb3dNb2RpZmljYXRpb24pOworICAgICAg
ICAgICAgICAgIG1fZHN0T2Zmc2V0QWRqdXN0bWVudCArPSBtaW5PZmZzZXQ7CisgICAgICAgICAg
ICAgICAgbV9qaXQuYWRkUHRyKFRydXN0ZWRJbW0zMihtaW5PZmZzZXQpLCBtX2RzdEJ1ZmZlckdQ
Uik7CisKKyAgICAgICAgICAgICAgICBkc3RPZmZzZXQxIC09IG1pbk9mZnNldDsKKyAgICAgICAg
ICAgICAgICBkc3RPZmZzZXQyIC09IG1pbk9mZnNldDsKKyAgICAgICAgICAgICAgICBBU1NFUlQo
aXNWYWxpZFN0b3JlUGFpckltbTxSZWdUeXBlPihzdGQ6Om1pbihkc3RPZmZzZXQxLCBkc3RPZmZz
ZXQyKSkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGRzdE9mZnNldDEgPCBkc3RP
ZmZzZXQyKQorICAgICAgICAgICAgICAgIHN0b3JlUGFpcihyZWdUb1N0b3JlMSwgcmVnVG9TdG9y
ZTIsIGRzdE9mZnNldDEpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHN0b3Jl
UGFpcihyZWdUb1N0b3JlMiwgcmVnVG9TdG9yZTEsIGRzdE9mZnNldDIpOworICAgICAgICB9CisK
KyAgICAgICAgbV9jdXJyZW50U291cmNlID0gMDsKKyAgICB9OworCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgUmVnVHlwZT4KKyAgICB2b2lkIGZsdXNoKCkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0
ZXhwciAoIWhhc1BhaXJPcCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoIW1f
Y3VycmVudFNvdXJjZSkKKyAgICAgICAgICAgIHJldHVybjsgLy8gTm90aGluZyB0byBmbHVzaC4K
KworICAgICAgICBBU1NFUlQobV9jdXJyZW50U291cmNlID09IDEpOworCisgICAgICAgIFJlZ1R5
cGUgcmVnVG9TdG9yZSA9IGludmFsaWQ8UmVnVHlwZT4oKTsKKyAgICAgICAgYXV0byYgc291cmNl
ID0gbV9zb3VyY2VzWzBdOworICAgICAgICBhdXRvJiBzcmNPZmZzZXQgPSBzb3VyY2Uub2Zmc2V0
OworICAgICAgICBjb25zdCBib29sIHJlZ1R5cGVJc0dQUiA9IHN0ZDo6aXNfc2FtZTxSZWdUeXBl
LCBHUFJSZWc+Ojp2YWx1ZTsKKworICAgICAgICBpZiAoc291cmNlLnR5cGUgPT0gU291cmNlOjpU
eXBlOjpCdWZmZXJPZmZzZXQpIHsKKyAgICAgICAgICAgIHJlZ1RvU3RvcmUgPSB0ZW1wMTxSZWdU
eXBlPigpOworICAgICAgICAgICAgbG9hZChzcmNPZmZzZXQgLSBtX3NyY09mZnNldEFkanVzdG1l
bnQsIHJlZ1RvU3RvcmUpOworICAgICAgICB9IGVsc2UgaWYgKHNvdXJjZS50eXBlID09IFNvdXJj
ZTo6VHlwZTo6UmVnKQorICAgICAgICAgICAgcmVnVG9TdG9yZSA9IHNvdXJjZS5nZXRSZWc8UmVn
VHlwZT4oKTsKKyAgICAgICAgZWxzZSBpZiBjb25zdGV4cHIgKHJlZ1R5cGVJc0dQUikgeworICAg
ICAgICAgICAgcmVnVG9TdG9yZSA9IHRlbXAxPFJlZ1R5cGU+KCk7CisgICAgICAgICAgICBtb3Zl
KHNvdXJjZS52YWx1ZSwgcmVnVG9TdG9yZSk7CisgICAgICAgIH0KKworICAgICAgICBzdG9yZShy
ZWdUb1N0b3JlLCBtX2RlZmVycmVkU3RvcmVPZmZzZXQgLSBtX2RzdE9mZnNldEFkanVzdG1lbnQp
OworICAgICAgICBtX2N1cnJlbnRTb3VyY2UgPSAwOworICAgIH0KKworcHVibGljOgorICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBsb2FkR1BSKGludCBzcmNPZmZzZXQpIHsgbG9hZDxHUFJSZWc+KHNy
Y09mZnNldCk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgY29weUdQUihHUFJSZWcgZ3ByKSB7
IGNvcHk8R1BSUmVnPihncHIpOyB9CisgICAgQUxXQVlTX0lOTElORSB2b2lkIG1vdmVDb25zdGFu
dChFbmNvZGVkSlNWYWx1ZSB2YWx1ZSkgeyBtb3ZlKHZhbHVlKTsgfQorICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBzdG9yZUdQUihpbnQgZHN0T2Zmc2V0KSB7IHN0b3JlPEdQUlJlZz4oZHN0T2Zmc2V0
KTsgfQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBmbHVzaEdQUigpIHsgZmx1c2g8R1BSUmVnPigp
OyB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbG9hZEZQUihpbnQgc3JjT2Zmc2V0KSB7IGxv
YWQ8RlBSUmVnPihzcmNPZmZzZXQpOyB9CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGNvcHlGUFIo
RlBSUmVnIGdwcikgeyBjb3B5PEZQUlJlZz4oZ3ByKTsgfQorICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBzdG9yZUZQUihpbnQgZHN0T2Zmc2V0KSB7IHN0b3JlPEZQUlJlZz4oZHN0T2Zmc2V0KTsgfQor
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBmbHVzaEZQUigpIHsgZmx1c2g8RlBSUmVnPigpOyB9CisK
K3Byb3RlY3RlZDoKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBt
b3ZlKEVuY29kZWRKU1ZhbHVlIHZhbHVlLCBHUFJSZWcgZGVzdCkKKyAgICB7CisgICAgICAgIG1f
aml0Lm1vdmUoVHJ1c3RlZEltbTY0KHZhbHVlKSwgZGVzdCk7CisgICAgfQorI2VuZGlmCisKKyAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgbG9hZChpbnQgb2Zmc2V0LCBHUFJSZWcgZGVzdCkKKyAgICB7
CisgICAgICAgIG1faml0LmxvYWRQdHIoQWRkcmVzcyhtX3NyY0J1ZmZlckdQUiwgb2Zmc2V0KSwg
ZGVzdCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHN0b3JlKEdQUlJlZyBzcmMs
IGludCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2ppdC5zdG9yZVB0cihzcmMsIEFkZHJlc3Mo
bV9kc3RCdWZmZXJHUFIsIG9mZnNldCkpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBsb2FkKGludCBvZmZzZXQsIEZQUlJlZyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9qaXQubG9h
ZERvdWJsZShBZGRyZXNzKG1fc3JjQnVmZmVyR1BSLCBvZmZzZXQpLCBkZXN0KTsKKyAgICB9CisK
KyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc3RvcmUoRlBSUmVnIHNyYywgaW50IG9mZnNldCkKKyAg
ICB7CisgICAgICAgIG1faml0LnN0b3JlRG91YmxlKHNyYywgQWRkcmVzcyhtX2RzdEJ1ZmZlckdQ
Uiwgb2Zmc2V0KSk7CisgICAgfQorCisjaWYgQ1BVKEFSTTY0KQorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFJlZ1R5cGU+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGxvYWRQYWlyKGludCBvZmZzZXQs
IFJlZ1R5cGUgZGVzdDEsIFJlZ1R5cGUgZGVzdDIpCisgICAgeworICAgICAgICBtX2ppdC5sb2Fk
UGFpcjY0KG1fc3JjQnVmZmVyR1BSLCBUcnVzdGVkSW1tMzIob2Zmc2V0KSwgZGVzdDEsIGRlc3Qy
KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSZWdUeXBlPgorICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBzdG9yZVBhaXIoUmVnVHlwZSBzcmMxLCBSZWdUeXBlIHNyYzIsIGludCBvZmZz
ZXQpCisgICAgeworICAgICAgICBtX2ppdC5zdG9yZVBhaXI2NChzcmMxLCBzcmMyLCBtX2RzdEJ1
ZmZlckdQUiwgVHJ1c3RlZEltbTMyKG9mZnNldCkpOworICAgIH0KKworICAgIHN0YXRpYyBjb25z
dGV4cHIgYm9vbCBoYXNQYWlyT3AgPSB0cnVlOworI2Vsc2UKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBSZWdUeXBlPiBBTFdBWVNfSU5MSU5FIHZvaWQgbG9hZFBhaXIoaW50LCBSZWdUeXBlLCBSZWdU
eXBlKSB7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSZWdUeXBlPiBBTFdBWVNfSU5MSU5FIHZv
aWQgc3RvcmVQYWlyKFJlZ1R5cGUsIFJlZ1R5cGUsIGludCkgeyB9CisKKyAgICBzdGF0aWMgY29u
c3RleHByIGJvb2wgaGFzUGFpck9wID0gZmFsc2U7CisjZW5kaWYKKworICAgIEpJVCYgbV9qaXQ7
CisKKyAgICBHUFJSZWcgbV9zcmNCdWZmZXJHUFI7CisgICAgR1BSUmVnIG1fZHN0QnVmZmVyR1BS
OworICAgIEdQUlJlZyBtX3RlbXAxR1BSOworICAgIEdQUlJlZyBtX3RlbXAyR1BSOworICAgIEZQ
UlJlZyBtX3RlbXAxRlBSOworICAgIEZQUlJlZyBtX3RlbXAyRlBSOworCitwcml2YXRlOgorICAg
IHN0YXRpYyBjb25zdGV4cHIgaW50IGdwclNpemUgPSBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihD
UFVSZWdpc3RlcikpOworICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IGZwclNpemUgPSBzdGF0aWNf
Y2FzdDxpbnQ+KHNpemVvZihkb3VibGUpKTsKKworICAgIC8vIFRoZXNlIHBvaW50IHRvIHdoaWNo
IHJlZ2lzdGVyIHRvIHVzZS4KKyAgICBHUFJSZWcgbV9ncHJUb1N0b3JlIHsgSW52YWxpZEdQUlJl
ZyB9OyAvLyBPbmx5IHVzZWQgd2hlbiAhaGFzUGFpck9wLgorICAgIEZQUlJlZyBtX2ZwclRvU3Rv
cmUgeyBJbnZhbGlkRlBSUmVnIH07IC8vIE9ubHkgdXNlZCB3aGVuICFoYXNQYWlyT3AuCisKKyAg
ICBCdWZmZXJSZWdzIG1fYnVmZmVyUmVnc0F0dHI7CisgICAgU291cmNlIG1fc291cmNlc1syXTsK
KyAgICB1bnNpZ25lZCBtX2N1cnJlbnRTb3VyY2UgeyAwIH07CisgICAgaW50IG1fc3JjT2Zmc2V0
QWRqdXN0bWVudCB7IDAgfTsKKyAgICBpbnQgbV9kc3RPZmZzZXRBZGp1c3RtZW50IHsgMCB9Owor
ICAgIGludCBtX2RlZmVycmVkU3RvcmVPZmZzZXQ7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBS
ZWdUeXBlPiBmcmllbmQgc3RydWN0IFJlZ0Rpc3BhdGNoOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
SlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9TY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmNwcAkocmV2aXNpb24g
Mjc4ODg2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TY3JhdGNoUmVnaXN0ZXJBbGxv
Y2F0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxF
KEpJVCkKIAorI2luY2x1ZGUgIkFzc2VtYmx5SGVscGVyc1Nwb29sZXJzLmgiCiAjaW5jbHVkZSAi
TWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwuaCIKICNpbmNsdWRlICJWTS5oIgogCkBAIC0x
MDEsNyArMTAyLDcgQEAgdHlwZW5hbWUgQmFua0luZm86OlJlZ2lzdGVyVHlwZSBTY3JhdGNoUgog
R1BSUmVnIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6YWxsb2NhdGVTY3JhdGNoR1BSKCkgeyBy
ZXR1cm4gYWxsb2NhdGVTY3JhdGNoPEdQUkluZm8+KCk7IH0KIEZQUlJlZyBTY3JhdGNoUmVnaXN0
ZXJBbGxvY2F0b3I6OmFsbG9jYXRlU2NyYXRjaEZQUigpIHsgcmV0dXJuIGFsbG9jYXRlU2NyYXRj
aDxGUFJJbmZvPigpOyB9CiAKLVNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6UHJlc2VydmVkU3Rh
dGUgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpwcmVzZXJ2ZVJldXNlZFJlZ2lzdGVyc0J5UHVz
aGluZyhNYWNyb0Fzc2VtYmxlciYgaml0LCBFeHRyYVN0YWNrU3BhY2UgZXh0cmFTdGFja1NwYWNl
KQorU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpQcmVzZXJ2ZWRTdGF0ZSBTY3JhdGNoUmVnaXN0
ZXJBbGxvY2F0b3I6OnByZXNlcnZlUmV1c2VkUmVnaXN0ZXJzQnlQdXNoaW5nKEFzc2VtYmx5SGVs
cGVycyYgaml0LCBFeHRyYVN0YWNrU3BhY2UgZXh0cmFTdGFja1NwYWNlKQogewogICAgIGlmICgh
ZGlkUmV1c2VSZWdpc3RlcnMoKSkKICAgICAgICAgcmV0dXJuIFByZXNlcnZlZFN0YXRlKDAsIGV4
dHJhU3RhY2tTcGFjZSk7CkBAIC0xMjQsNyArMTI1LDcgQEAgU2NyYXRjaFJlZ2lzdGVyQWxsb2Nh
dG9yOjpQcmVzZXJ2ZWRTdGF0ZQogICAgIHJldHVybiBQcmVzZXJ2ZWRTdGF0ZShzdGFja0FkanVz
dG1lbnRTaXplLCBleHRyYVN0YWNrU3BhY2UpOwogfQogCi12b2lkIFNjcmF0Y2hSZWdpc3RlckFs
bG9jYXRvcjo6cmVzdG9yZVJldXNlZFJlZ2lzdGVyc0J5UG9wcGluZyhNYWNyb0Fzc2VtYmxlciYg
aml0LCBjb25zdCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OlByZXNlcnZlZFN0YXRlJiBwcmVz
ZXJ2ZWRTdGF0ZSkKK3ZvaWQgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpyZXN0b3JlUmV1c2Vk
UmVnaXN0ZXJzQnlQb3BwaW5nKEFzc2VtYmx5SGVscGVycyYgaml0LCBjb25zdCBTY3JhdGNoUmVn
aXN0ZXJBbGxvY2F0b3I6OlByZXNlcnZlZFN0YXRlJiBwcmVzZXJ2ZWRTdGF0ZSkKIHsKICAgICBS
RUxFQVNFX0FTU0VSVChwcmVzZXJ2ZWRTdGF0ZSk7CiAgICAgaWYgKCFkaWRSZXVzZVJlZ2lzdGVy
cygpKQpAQCAtMTYxLDcgKzE2Miw3IEBAIHVuc2lnbmVkIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRv
cjo6ZGVzaXIKICAgICByZXR1cm4gdXNlZFJlZ2lzdGVyc0ZvckNhbGwoKS5udW1iZXJPZlNldFJl
Z2lzdGVycygpICogc2l6ZW9mKEpTVmFsdWUpOwogfQogCi11bnNpZ25lZCBTY3JhdGNoUmVnaXN0
ZXJBbGxvY2F0b3I6OnByZXNlcnZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGwoTWFjcm9Bc3NlbWJs
ZXImIGppdCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIHVuc2lnbmVkIGV4dHJh
Qnl0ZXNBdFRvcE9mU3RhY2spCit1bnNpZ25lZCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OnBy
ZXNlcnZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGwoQXNzZW1ibHlIZWxwZXJzJiBqaXQsIGNvbnN0
IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCB1bnNpZ25lZCBleHRyYUJ5dGVzQXRUb3BPZlN0
YWNrKQogewogICAgIFJFTEVBU0VfQVNTRVJUKGV4dHJhQnl0ZXNBdFRvcE9mU3RhY2sgJSBzaXpl
b2Yodm9pZCopID09IDApOwogICAgIGlmICghdXNlZFJlZ2lzdGVycy5udW1iZXJPZlNldFJlZ2lz
dGVycygpKQpAQCAtMTc0LDI2ICsxNzUsMzEgQEAgdW5zaWduZWQgU2NyYXRjaFJlZ2lzdGVyQWxs
b2NhdG9yOjpwcmVzZQogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKHN0YWNr
T2Zmc2V0KSwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsK
IAorICAgIEFzc2VtYmx5SGVscGVyczo6U3RvcmVSZWdTcG9vbGVyIHNwb29sZXIoaml0LCBNYWNy
b0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOworCiAgICAgdW5zaWduZWQgY291bnQg
PSAwOwogICAgIGZvciAoR1BSUmVnIHJlZyA9IE1hY3JvQXNzZW1ibGVyOjpmaXJzdFJlZ2lzdGVy
KCk7IHJlZyA8PSBNYWNyb0Fzc2VtYmxlcjo6bGFzdFJlZ2lzdGVyKCk7IHJlZyA9IE1hY3JvQXNz
ZW1ibGVyOjpuZXh0UmVnaXN0ZXIocmVnKSkgewogICAgICAgICBpZiAodXNlZFJlZ2lzdGVycy5n
ZXQocmVnKSkgewotICAgICAgICAgICAgaml0LnN0b3JlUHRyKHJlZywgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBleHRyYUJ5dGVz
QXRUb3BPZlN0YWNrICsgKGNvdW50ICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSkpKTsKKyAgICAg
ICAgICAgIHNwb29sZXIuc3RvcmVHUFIoeyByZWcsIHN0YXRpY19jYXN0PHB0cmRpZmZfdD4oZXh0
cmFCeXRlc0F0VG9wT2ZTdGFjayArIChjb3VudCAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpKSB9
KTsKICAgICAgICAgICAgIGNvdW50Kys7CiAgICAgICAgIH0KICAgICB9CisgICAgc3Bvb2xlci5m
bHVzaEdQUigpOworCiAgICAgZm9yIChGUFJSZWcgcmVnID0gTWFjcm9Bc3NlbWJsZXI6OmZpcnN0
RlBSZWdpc3RlcigpOyByZWcgPD0gTWFjcm9Bc3NlbWJsZXI6Omxhc3RGUFJlZ2lzdGVyKCk7IHJl
ZyA9IE1hY3JvQXNzZW1ibGVyOjpuZXh0RlBSZWdpc3RlcihyZWcpKSB7CiAgICAgICAgIGlmICh1
c2VkUmVnaXN0ZXJzLmdldChyZWcpKSB7Ci0gICAgICAgICAgICBqaXQuc3RvcmVEb3VibGUocmVn
LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVn
aXN0ZXIsIGV4dHJhQnl0ZXNBdFRvcE9mU3RhY2sgKyAoY291bnQgKiBzaXplb2YoRW5jb2RlZEpT
VmFsdWUpKSkpOworICAgICAgICAgICAgc3Bvb2xlci5zdG9yZUZQUih7IHJlZywgc3RhdGljX2Nh
c3Q8cHRyZGlmZl90PihleHRyYUJ5dGVzQXRUb3BPZlN0YWNrICsgKGNvdW50ICogc2l6ZW9mKEVu
Y29kZWRKU1ZhbHVlKSkpIH0pOwogICAgICAgICAgICAgY291bnQrKzsKICAgICAgICAgfQogICAg
IH0KKyAgICBzcG9vbGVyLmZsdXNoRlBSKCk7CiAKICAgICBSRUxFQVNFX0FTU0VSVChjb3VudCA9
PSB1c2VkUmVnaXN0ZXJzLm51bWJlck9mU2V0UmVnaXN0ZXJzKCkpOwogCiAgICAgcmV0dXJuIHN0
YWNrT2Zmc2V0OwogfQogCi12b2lkIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6cmVzdG9yZVJl
Z2lzdGVyc0Zyb21TdGFja0ZvckNhbGwoTWFjcm9Bc3NlbWJsZXImIGppdCwgY29uc3QgUmVnaXN0
ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIGNvbnN0IFJlZ2lzdGVyU2V0JiBpZ25vcmUsIHVuc2lnbmVk
IG51bWJlck9mU3RhY2tCeXRlc1VzZWRGb3JSZWdpc3RlclByZXNlcnZhdGlvbiwgdW5zaWduZWQg
ZXh0cmFCeXRlc0F0VG9wT2ZTdGFjaykKK3ZvaWQgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpy
ZXN0b3JlUmVnaXN0ZXJzRnJvbVN0YWNrRm9yQ2FsbChBc3NlbWJseUhlbHBlcnMmIGppdCwgY29u
c3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIGNvbnN0IFJlZ2lzdGVyU2V0JiBpZ25vcmUs
IHVuc2lnbmVkIG51bWJlck9mU3RhY2tCeXRlc1VzZWRGb3JSZWdpc3RlclByZXNlcnZhdGlvbiwg
dW5zaWduZWQgZXh0cmFCeXRlc0F0VG9wT2ZTdGFjaykKIHsKICAgICBSRUxFQVNFX0FTU0VSVChl
eHRyYUJ5dGVzQXRUb3BPZlN0YWNrICUgc2l6ZW9mKHZvaWQqKSA9PSAwKTsKICAgICBpZiAoIXVz
ZWRSZWdpc3RlcnMubnVtYmVyT2ZTZXRSZWdpc3RlcnMoKSkgewpAQCAtMjAxLDIxICsyMDcsMjYg
QEAgdm9pZCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OnJlc3RvcmVSZQogICAgICAgICByZXR1
cm47CiAgICAgfQogCisgICAgQXNzZW1ibHlIZWxwZXJzOjpMb2FkUmVnU3Bvb2xlciBzcG9vbGVy
KGppdCwgTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKwogICAgIHVuc2ln
bmVkIGNvdW50ID0gMDsKICAgICBmb3IgKEdQUlJlZyByZWcgPSBNYWNyb0Fzc2VtYmxlcjo6Zmly
c3RSZWdpc3RlcigpOyByZWcgPD0gTWFjcm9Bc3NlbWJsZXI6Omxhc3RSZWdpc3RlcigpOyByZWcg
PSBNYWNyb0Fzc2VtYmxlcjo6bmV4dFJlZ2lzdGVyKHJlZykpIHsKICAgICAgICAgaWYgKHVzZWRS
ZWdpc3RlcnMuZ2V0KHJlZykpIHsKICAgICAgICAgICAgIGlmICghaWdub3JlLmdldChyZWcpKQot
ICAgICAgICAgICAgICAgIGppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKE1hY3Jv
QXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3RlciwgZXh0cmFCeXRlc0F0VG9wT2ZTdGFjayAr
IChzaXplb2YoRW5jb2RlZEpTVmFsdWUpICogY291bnQpKSwgcmVnKTsKKyAgICAgICAgICAgICAg
ICBzcG9vbGVyLmxvYWRHUFIoeyByZWcsIHN0YXRpY19jYXN0PHB0cmRpZmZfdD4oZXh0cmFCeXRl
c0F0VG9wT2ZTdGFjayArIChzaXplb2YoRW5jb2RlZEpTVmFsdWUpICogY291bnQpKSB9KTsKICAg
ICAgICAgICAgIGNvdW50Kys7CiAgICAgICAgIH0KICAgICB9CisgICAgc3Bvb2xlci5mbHVzaEdQ
UigpOworCiAgICAgZm9yIChGUFJSZWcgcmVnID0gTWFjcm9Bc3NlbWJsZXI6OmZpcnN0RlBSZWdp
c3RlcigpOyByZWcgPD0gTWFjcm9Bc3NlbWJsZXI6Omxhc3RGUFJlZ2lzdGVyKCk7IHJlZyA9IE1h
Y3JvQXNzZW1ibGVyOjpuZXh0RlBSZWdpc3RlcihyZWcpKSB7CiAgICAgICAgIGlmICh1c2VkUmVn
aXN0ZXJzLmdldChyZWcpKSB7CiAgICAgICAgICAgICBpZiAoIWlnbm9yZS5nZXQocmVnKSkKLSAg
ICAgICAgICAgICAgICBqaXQubG9hZERvdWJsZShNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhNYWNy
b0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIGV4dHJhQnl0ZXNBdFRvcE9mU3RhY2sg
KyAoc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAqIGNvdW50KSksIHJlZyk7CisgICAgICAgICAgICAg
ICAgc3Bvb2xlci5sb2FkRlBSKHsgcmVnLCBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KGV4dHJhQnl0
ZXNBdFRvcE9mU3RhY2sgKyAoc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAqIGNvdW50KSkgfSk7CiAg
ICAgICAgICAgICBjb3VudCsrOwogICAgICAgICB9CiAgICAgfQorICAgIHNwb29sZXIuZmx1c2hG
UFIoKTsKIAogICAgIHVuc2lnbmVkIHN0YWNrT2Zmc2V0ID0gKHVzZWRSZWdpc3RlcnMubnVtYmVy
T2ZTZXRSZWdpc3RlcnMoKSkgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpOwogICAgIHN0YWNrT2Zm
c2V0ICs9IGV4dHJhQnl0ZXNBdFRvcE9mU3RhY2s7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmgJKHJldmlzaW9uIDI3
ODg4NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2NyYXRjaFJlZ2lzdGVyQWxsb2Nh
dG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDEyLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsMTIgKzI3LDEyIEBACiAKICNpZiBFTkFCTEUo
SklUKQogCi0jaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKICNpbmNsdWRlICJSZWdpc3RlclNl
dC5oIgogI2luY2x1ZGUgIlRlbXBSZWdpc3RlclNldC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAor
Y2xhc3MgQXNzZW1ibHlIZWxwZXJzOwogc3RydWN0IFNjcmF0Y2hCdWZmZXI7CiAKIC8vIFRoaXMg
Y2xhc3MgcHJvdmlkZXMgYSBsb3ctbGV2ZWwgcmVnaXN0ZXIgYWxsb2NhdG9yIGZvciB1c2UgaW4g
c3R1YnMuCkBAIC04NCwxNSArODQsMTUgQEAgcHVibGljOgogICAgICAgICBFeHRyYVN0YWNrU3Bh
Y2UgZXh0cmFTdGFja1NwYWNlUmVxdWlyZW1lbnQ7CiAgICAgfTsKIAotICAgIFByZXNlcnZlZFN0
YXRlIHByZXNlcnZlUmV1c2VkUmVnaXN0ZXJzQnlQdXNoaW5nKE1hY3JvQXNzZW1ibGVyJiBqaXQs
IEV4dHJhU3RhY2tTcGFjZSk7Ci0gICAgdm9pZCByZXN0b3JlUmV1c2VkUmVnaXN0ZXJzQnlQb3Bw
aW5nKE1hY3JvQXNzZW1ibGVyJiBqaXQsIGNvbnN0IFByZXNlcnZlZFN0YXRlJik7CisgICAgUHJl
c2VydmVkU3RhdGUgcHJlc2VydmVSZXVzZWRSZWdpc3RlcnNCeVB1c2hpbmcoQXNzZW1ibHlIZWxw
ZXJzJiBqaXQsIEV4dHJhU3RhY2tTcGFjZSk7CisgICAgdm9pZCByZXN0b3JlUmV1c2VkUmVnaXN0
ZXJzQnlQb3BwaW5nKEFzc2VtYmx5SGVscGVycyYgaml0LCBjb25zdCBQcmVzZXJ2ZWRTdGF0ZSYp
OwogICAgIAogICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnNGb3JDYWxsKCkgY29uc3Q7CiAg
ICAgCiAgICAgdW5zaWduZWQgZGVzaXJlZFNjcmF0Y2hCdWZmZXJTaXplRm9yQ2FsbCgpIGNvbnN0
OwotICAgIAotICAgIHN0YXRpYyB1bnNpZ25lZCBwcmVzZXJ2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JD
YWxsKE1hY3JvQXNzZW1ibGVyJiBqaXQsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJz
LCB1bnNpZ25lZCBleHRyYVBhZGRpbmdJbkJ5dGVzKTsKLSAgICBzdGF0aWMgdm9pZCByZXN0b3Jl
UmVnaXN0ZXJzRnJvbVN0YWNrRm9yQ2FsbChNYWNyb0Fzc2VtYmxlciYgaml0LCBjb25zdCBSZWdp
c3RlclNldCYgdXNlZFJlZ2lzdGVycywgY29uc3QgUmVnaXN0ZXJTZXQmIGlnbm9yZSwgdW5zaWdu
ZWQgbnVtYmVyT2ZTdGFja0J5dGVzVXNlZEZvclJlZ2lzdGVyUHJlc2VydmF0aW9uLCB1bnNpZ25l
ZCBleHRyYVBhZGRpbmdJbkJ5dGVzKTsKKworICAgIHN0YXRpYyB1bnNpZ25lZCBwcmVzZXJ2ZVJl
Z2lzdGVyc1RvU3RhY2tGb3JDYWxsKEFzc2VtYmx5SGVscGVycyYgaml0LCBjb25zdCBSZWdpc3Rl
clNldCYgdXNlZFJlZ2lzdGVycywgdW5zaWduZWQgZXh0cmFQYWRkaW5nSW5CeXRlcyk7CisgICAg
c3RhdGljIHZvaWQgcmVzdG9yZVJlZ2lzdGVyc0Zyb21TdGFja0ZvckNhbGwoQXNzZW1ibHlIZWxw
ZXJzJiBqaXQsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBjb25zdCBSZWdpc3Rl
clNldCYgaWdub3JlLCB1bnNpZ25lZCBudW1iZXJPZlN0YWNrQnl0ZXNVc2VkRm9yUmVnaXN0ZXJQ
cmVzZXJ2YXRpb24sIHVuc2lnbmVkIGV4dHJhUGFkZGluZ0luQnl0ZXMpOwogCiBwcml2YXRlOgog
ICAgIFJlZ2lzdGVyU2V0IG1fdXNlZFJlZ2lzdGVyczsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMjc4ODg2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkt
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI5ODEsMTAgKzI5ODEsNyBAQCBhdXRvIEFpcklSR2VuZXJhdG9y
OjphZGRSZXR1cm4oY29uc3QgQ29uCiAgICAgQjM6OlBhdGNocG9pbnRWYWx1ZSogcGF0Y2ggPSBh
ZGRQYXRjaHBvaW50KEIzOjpWb2lkKTsKICAgICBwYXRjaC0+c2V0R2VuZXJhdG9yKFtdIChDQ2Fs
bEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1z
KSB7CiAgICAgICAgIGF1dG8gY2FsbGVlU2F2ZXMgPSBwYXJhbXMuY29kZSgpLmNhbGxlZVNhdmVS
ZWdpc3RlckF0T2Zmc2V0TGlzdCgpOwotCi0gICAgICAgIGZvciAoUmVnaXN0ZXJBdE9mZnNldCBj
YWxsZWVTYXZlIDogY2FsbGVlU2F2ZXMpCi0gICAgICAgICAgICBqaXQubG9hZDY0VG9SZWcoQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBjYWxsZWVTYXZl
Lm9mZnNldCgpKSwgY2FsbGVlU2F2ZS5yZWcoKSk7Ci0KKyAgICAgICAgaml0LmVtaXRSZXN0b3Jl
KGNhbGxlZVNhdmVzKTsKICAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CiAgICAg
ICAgIGppdC5yZXQoKTsKICAgICB9KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21CM0lSR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDI3ODg4NikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTIyODQsMTAgKzIyODQsNyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZFJldHVybihj
b25zdCBDb250CiAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaCA9IG1fcHJvYy5hZGQ8UGF0Y2hw
b2ludFZhbHVlPihCMzo6Vm9pZCwgb3JpZ2luKCkpOwogICAgIHBhdGNoLT5zZXRHZW5lcmF0b3Io
W10gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1z
JiBwYXJhbXMpIHsKICAgICAgICAgYXV0byBjYWxsZWVTYXZlcyA9IHBhcmFtcy5jb2RlKCkuY2Fs
bGVlU2F2ZVJlZ2lzdGVyQXRPZmZzZXRMaXN0KCk7Ci0KLSAgICAgICAgZm9yIChSZWdpc3RlckF0
T2Zmc2V0IGNhbGxlZVNhdmUgOiBjYWxsZWVTYXZlcykKLSAgICAgICAgICAgIGppdC5sb2FkNjRU
b1JlZyhDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGNh
bGxlZVNhdmUub2Zmc2V0KCkpLCBjYWxsZWVTYXZlLnJlZygpKTsKLQorICAgICAgICBqaXQuZW1p
dFJlc3RvcmUoY2FsbGVlU2F2ZXMpOwogICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUo
KTsKICAgICAgICAgaml0LnJldCgpOwogICAgIH0pOwo=
</data>
<flag name="commit-queue"
          id="453272"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431482</attachid>
            <date>2021-06-15 14:34:53 -0700</date>
            <delta_ts>2021-06-15 14:41:54 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-227039.patch</filename>
            <type>text/plain</type>
            <size>108843</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjc4ODk4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzMCBA
QAorMjAyMS0wNi0xNSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
VXNlIGxkcCBhbmQgc3RwIG1vcmUgZm9yIHNhdmluZyAvIHJlc3RvcmluZyByZWdpc3RlcnMgb24g
QVJNNjQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjcwMzkKKyAgICAgICAgcmRhcjovLzc5MzU0NzM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgc3Bvb2xlciBh
YnN0cmFjdGlvbiBpbiBBc3NlbWJseUhlbHBlcnMuICBUaGUgc3Bvb2xlcgorICAgICAgICBiYXNp
Y2FsbHkgYmF0Y2hlcyB1cCBsb2FkIC8gc3RvcmUgb3BlcmF0aW9ucyBhbmQgZW1pdCB0aGVtIGFz
IHBhaXIgaW5zdHJ1Y3Rpb25zCisgICAgICAgIGlmIGFwcHJvcHJpYXRlLgorCisgICAgICAgIFRo
ZXJlIGFyZSA0IHNwb29sZXIgY2xhc3NlczoKKyAgICAgICAgYS4gU3Bvb2xlcgorICAgICAgICAg
ICAtIHRlbXBsYXRlIGJhc2UgY2xhc3MgZm9yIExvYWRSZWdTcG9vbGVyIGFuZCBTdG9yZVJlZ1Nw
b29sZXIuCisgICAgICAgICAgIC0gZW5jYXBzdWxhdGVzIHRoZSBiYXRjaGluZyBzdHJhdGVneSBm
b3IgbG9hZCAvIHN0b3JlIHBhaXJzLgorCisgICAgICAgIGIuIExvYWRSZWdTcG9vbGVyIC0gc3Bl
Y2lhbGl6ZXMgU3Bvb2xlciB0byBoYW5kbGUgbG9hZCBwYWlycy4KKyAgICAgICAgYi4gU3RvcmVS
ZWdTcG9vbGVyIC0gc3BlY2lhbGl6ZXMgU3Bvb2xlciB0byBoYW5kbGUgc3RvcmUgcGFpcnMuCisK
KyAgICAgICAgZC4gQ29weVNwb29sZXIKKyAgICAgICAgICAgLSBoYW5kbGVzIG1hdGNoaW5nIGxv
YWRzIHdpdGggc3RvcmVzLgorICAgICAgICAgICAtIHRyaWVzIHRvIGVtaXQgbG9hZHMgYXMgbG9h
ZCBwYWlycyBpZiBwb3NzaWJsZS4KKyAgICAgICAgICAgLSB0cmllcyB0byBlbW90IHN0b3JlcyBh
cyBzdG9yZSBwYWlycyBpZiBwb3NzaWJsZS4KKyAgICAgICAgICAgLSBlbnN1cmVzIHRoYXQgcHJl
LXJlcXVpc2l0ZSBsb2FkcyBhcmUgZW1pdHRlZCBiZWZvcmUgc3RvcmVzIGFyZSBlbWl0dGVkLgor
ICAgICAgICAgICAtIG90aGVyIHRoYW4gbG9hZHMsIGFsc28gc3VwcG9ydCBjb25zdGFudHMgYW5k
IHJlZ2lzdGVycyBhcyBzb3VyY2VzIG9mIHZhbHVlcworICAgICAgICAgICAgIHRvIGJlIHN0b3Jl
ZC4gIFRoaXMgaXMgdXNlZnVsIGluIE9TUiBleGl0IHJhbXBzIHdoZXJlIHdlIG1heSBtYXRlcmlh
bGl6ZSBhCisgICAgICAgICAgICAgc3RhY2sgdmFsdWUgdG8gc3RvcmUgZnJvbSBjb25zdGFudHMg
b3IgcmVnaXN0ZXJzIGluIGFkZGl0aW9uIHRvIHZhbHVlcyB3ZQorICAgICAgICAgICAgIGxvYWQg
ZnJvbSB0aGUgb2xkIHN0YWNrIGZyYW1lIG9yIGZyb20gYSBzY3JhdGNoIGJ1ZmZlci4KKworICAg
ICAgICBJbiB0aGlzIHBhdGNoLCB3ZSBhbHNvIGRvIHRoZSBmb2xsb3dpbmc6CisKKyAgICAgICAg
MS4gVXNlIHNwb29sZXJzIGluIG1hbnkgcGxhY2VzIHNvIHRoYXQgd2UgY2FuIGVtaXQgbG9hZCAv
IHN0b3JlIHBhaXJzIGluc3RlYWQgb2YKKyAgICAgICAgICAgc2luZ2xlIGxvYWQgLyBzdG9yZXMu
ICBUaGlzIGhlbHBzIHNocmluayBKSVQgY29kZSBzaWRlLCBhbmQgYWxzbyBwb3RlbnRpYWxseQor
ICAgICAgICAgICBpbXByb3ZlcyBwZXJmb3JtYW5jZS4KKworICAgICAgICAyLiBJbiBERkc6Ok9T
UkV4aXQ6OmNvbXBpbGVFeGl0KCksIHdlIHVzZWQgdG8gcmVjb3ZlciBjb25zdGFudHMgaW50byBh
IHNjcmF0Y2gKKyAgICAgICAgICAgYnVmZmVyLCBhbmQgdGhlbiBsYXRlciwgbG9hZCBmcm9tIHRo
YXQgc2NyYXRjaCBidWZmZXIgdG8gc3RvcmUgaW50byB0aGUKKyAgICAgICAgICAgbmV3IHN0YWNr
IGZyYW1lKHMpLgorCisgICAgICAgICAgIFRoaXMgcGF0Y2ggY2hhbmdlcyBpdCBzbyB0aGF0IHdl
IGRlZmVyIGNvbnN0YW50IHJlY292ZXJ5IHVudGlsIHRoZSBmaW5hbAorICAgICAgICAgICBsb29w
IHdoZXJlIHdlIHN0b3JlIHRoZSByZWNvdmVyZWQgdmFsdWUgZGlyZWN0bHkgaW50byB0aGUgbmV3
IHN0YWNrIGZyYW1lKHMpLgorICAgICAgICAgICBUaGlzIHNhdmVzIHVzIHRoZSB3b3JrIChhbmQg
SklUIGNvZGUgc3BhY2UpIGZvciBzdG9yaW5nIGludG8gYSBzY3JhdGNoIGJ1ZmZlcgorICAgICAg
ICAgICBhbmQgdGhlbiByZWxvYWRpbmcgZnJvbSB0aGUgc2NyYXRjaCBidWZmZXIuCisKKyAgICAg
ICAgICAgVGhlcmUgaXMgb25lIGV4Y2VwdGlvbjogdG1wIHZhbHVlcyB1c2VkIGJ5IGFjdGl2ZSBj
aGVja3BvaW50cy4gIFdlIG5lZWQgdG8gY2FsbAorICAgICAgICAgICBvcGVyYXRpb25NYXRlcmlh
bGl6ZU9TUkV4aXRTaWRlU3RhdGUoKSB0byBtYXRlcmlhbGl6ZSB0aGUgYWN0aXZlIGNoZWNrcG9p
bnQKKyAgICAgICAgICAgc2lkZSBzdGF0ZSBiZWZvcmUgdGhlIGZpbmFsIGxvb3Agd2hlcmUgd2Ug
bm93IHJlY292ZXIgY29uc3RhbnRzLiAgSGVuY2UsIHdlCisgICAgICAgICAgIG5lZWQgdGhlc2Ug
dG1wIHZhbHVlcyByZWNvdmVyZWQgYmVmb3JlIGhhbmQuCisKKyAgICAgICAgICAgU28sIHdlIGNo
ZWNrIHVwZnJvbnQgaWYgd2UgaGF2ZSBhY3RpdmUgY2hlY2twb2ludCBzaWRlIHN0YXRlIHRvIG1h
dGVyaWFsaXplLgorICAgICAgICAgICBJZiBzbywgd2UnbGwgZWFnZXJseSByZWNvdmVyIHRoZSBj
b25zdGFudHMgZm9yIGluaXRpYWxpemluZyB0aG9zZSB0bXBzLgorCisgICAgICAgICAgIFdlIGFs
c28gdXNlIHRoZSBDb3B5U3Bvb2xlciBpbiB0aGUgZmluYWwgbG9vcCB0byBlbWl0IGxvYWQgLyBz
dG9yZSBwYWlycyBmb3IKKyAgICAgICAgICAgZmlsbGluZyBpbiB0aGUgbmV3IHN0YWNrIGZyYW1l
KHMpLgorCisgICAgICAgICAgIE9uZSBtb3JlIHRoaW5nOiBpdCB0dXJucyBvdXQgdGhhdCB0aGUg
dmFzdCBtYWpvcml0eSBvZiBjb25zdGFudHMgdG8gYmUgcmVjb3ZlcmVkCisgICAgICAgICAgIGlz
IHNpbXBseSB0aGUgdW5kZWZpbmVkIHZhbHVlLiAgU28sIGFzIGFuIG9wdGltaXphdGlvbiwgdGhl
IGZpbmFsIGxvb3Aga2VlcHMKKyAgICAgICAgICAgdGhlIHVuZGVmaW5lZCB2YWx1ZSBpbiBhIHJl
Z2lzdGVyLCBhbmQgaGFzIHRoZSBzcG9vbGVyIHN0b3JlIGRpcmVjdGx5IGZyb20KKyAgICAgICAg
ICAgdGhhdCByZWdpc3RlciB3aGVuIGFwcHJvcHJpYXRlLiAgVGhpcyBzYXZlcyBvbiBKSVQgY29k
ZSB0byByZXBlYXRlZGx5IG1hdGVyaWFsaXplCisgICAgICAgICAgIHRoZSB1bmRlZmluZWQgSlNW
YWx1ZSBjb25zdGFudC4KKworICAgICAgICAzLiBJbiByZWlmeUlubGluZWRDYWxsRnJhbWVzKCks
IHJlcGxhY2UgdGhlIHVzZSBvZiBHUFJJbmZvOjpub25BcmdHUFIwIHdpdGgKKyAgICAgICAgICAg
R1BSSW5mbzo6cmVnVDQuICBub25BcmdHUFJzIGFyZSBzb21ldGltZXMgbWFwIHRvIGNlcnRhaW4g
cmVnVFhzIG9uIGNlcnRhaW4gcG9ydHMuCisgICAgICAgICAgIFJlcGxhY2luZyB3aXRoIHJlZ1Q0
IG1ha2VzIGl0IGVhc2llciB0byBlbnN1cmUgdGhhdCB3ZSdyZSBub3QgdHJhc2hpbmcgdGhlCisg
ICAgICAgICAgIHJlZ2lzdGVyIHdoZW4gd2UgdXNlIG1vcmUgdGVtcCByZWdpc3RlcnMuCisKKyAg
ICAgICAgICAgcmVpZnlJbmxpbmVkQ2FsbEZyYW1lcygpIHdpbGwgYmUgdXNpbmcgZW1pdFNhdmVP
ckNvcHlMTEludEJhc2VsaW5lQ2FsbGVlU2F2ZXNGb3IoKQorICAgICAgICAgICBsYXRlciB3aGVy
ZSB3ZSBuZWVkIG1vcmUgdGVtcCByZWdpc3RlcnMuCisKKyAgICAgICAgNC4gTW92ZSB0aGUgZm9s
bG93aW5nIGZ1bmN0aW9ucyB0byBBc3NlbWJseUhlbHBlcnMuY3BwLiAgVGhleSBkb24ndCBuZWVk
IHRvIGJlCisgICAgICAgICAgIGlubGluZSBmdW5jdGlvbnMuICBTcGVlZG9tZXRlcjIgYW5kIEpl
dFN0cmVhbTIgc2hvd3MgdGhhdCBtYWtpbmcgdGhlc2Ugbm9uCisgICAgICAgICAgIGlubGluZSBk
b2VzIG5vdCBodXJ0IHBlcmZvcm1hbmNlOgorCisgICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxw
ZXJzOjplbWl0U2F2ZShjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCYpOworICAgICAgICAgICAg
ICAgIEFzc2VtYmx5SGVscGVyczo6ZW1pdFJlc3RvcmUoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExp
c3QmKTsKKyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OmVtaXRTYXZlQ2FsbGVlU2F2
ZXNGb3IoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QqKTsKKyAgICAgICAgICAgICAgICBBc3Nl
bWJseUhlbHBlcnM6OmVtaXRTYXZlT3JDb3B5Q2FsbGVlU2F2ZXNGb3IoLi4uKTsKKyAgICAgICAg
ICAgICAgICBBc3NlbWJseUhlbHBlcnM6OmVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXNGb3IoY29uc3Qg
UmVnaXN0ZXJBdE9mZnNldExpc3QqKTsKKyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6
OmNvcHlMTEludEJhc2VsaW5lQ2FsbGVlU2F2ZXNGcm9tRnJhbWVPclJlZ2lzdGVyVG9FbnRyeUZy
YW1lQ2FsbGVlU2F2ZXNCdWZmZXIoLi4uKTsKKworICAgICAgICAgICBBbHNvIHJlbmFtZWQgZW1p
dFNhdmVPckNvcHlDYWxsZWVTYXZlc0ZvcigpIHRvIGVtaXRTYXZlT3JDb3B5TExJbnRCYXNlbGlu
ZUNhbGxlZVNhdmVzRm9yKCkKKyAgICAgICAgICAgYmVjYXVzZSBpdCBpcyBvbmx5IHVzZWQgd2l0
aCBiYXNlbGluZSBjb2RlQmxvY2tzLgorCisgICAgICAgIFJlc3VsdHM6CisgICAgICAgIEN1bW11
bGF0aXZlIExpbmtCdWZmZXIgcHJvZmlsZSBzaXplcyBzaHJ1bmsgYnkgfjJNIGluIGFnZ3JlZ2F0
ZToKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UgICAgICAgICAgICAgICAgICAg
ICAgICAgICBuZXcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PT09ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPT09CisgICAgICAgICAgICAgICBCYXNlbGluZUpJVDogODM4MjcwNDgg
KDc5Ljk0MzcwMyBNQikgICAgID0+IDgzNzE4NzM2ICg3OS44NDA0MDggTUIpCisgICAgICAgICAg
ICAgICAgICAgICAgIERGRzogNTY1OTQ4MzYgKDUzLjk3MzA0MiBNQikgICAgID0+IDU2NjAzNTA4
ICg1My45ODEzMTIgTUIpCisgICAgICAgICAgICAgICBJbmxpbmVDYWNoZTogMzM5MjM5MDAgKDMy
LjM1MjM1MiBNQikgICAgID0+IDMzMTgzMTU2ICgzMS42NDU5MjQgTUIpCisgICAgICAgICAgICAg
ICAgICAgICAgIEZUTDogNjc3MDk1NiAoNi40NTcyODcgTUIpICAgICAgID0+IDY1Njg5NjQgKDYu
MjY0NjUyIE1CKQorICAgICAgICAgICAgICAgIERGR09TUkV4aXQ6IDUyMTIwOTYgKDQuOTcwNjQy
IE1CKSAgICAgICA9PiAzNzI4MDg4ICgzLjU1NTM4MiBNQikKKyAgICAgICAgICAgICAgICAgICAg
Q1NTSklUOiA3NDg0MjggKDczMC44ODY3MTkgS0IpICAgICAgPT4gNzQ4NDI4ICg3MzAuODg2NzE5
IEtCKQorICAgICAgICAgICAgICAgIEZUTE9TUkV4aXQ6IDY5MjI3NiAoNjc2LjA1MDc4MSBLQikg
ICAgICA9PiA2NTY4ODQgKDY0MS40ODgyODEgS0IpCisgICAgICAgICAgICAgICAgICAgWWFyckpJ
VDogNDQ1MjgwICg0MzQuODQzNzUwIEtCKSAgICAgID0+IDUxMjk4OCAoNTAwLjk2NDg0NCBLQikK
KyAgICAgICAgICAgICAgICAgIEZUTFRodW5rOiAyMjkwOCAoMjIuMzcxMDk0IEtCKSAgICAgICAg
PT4gMjI1NTYgKDIyLjAyNzM0NCBLQikKKyAgICAgICAgQm91bmRGdW5jdGlvblRodW5rOiA4NDAw
ICg4LjIwMzEyNSBLQikgICAgICAgICAgPT4gMTAwODggKDkuODUxNTYyIEtCKQorICAgICAgICAg
ICAgIEV4dHJhQ1RJVGh1bms6IDY5NTIgKDYuNzg5MDYyIEtCKSAgICAgICAgICA9PiA2ODI0ICg2
LjY2NDA2MiBLQikKKyAgICAgICAgICBTcGVjaWFsaXplZFRodW5rOiA0NTA4ICg0LjQwMjM0NCBL
QikgICAgICAgICAgPT4gNDUwOCAoNC40MDIzNDQgS0IpCisgICAgICAgICAgICAgICAgICAgICBU
aHVuazogMzkxMiAoMy44MjAzMTIgS0IpICAgICAgICAgID0+IDM3ODQgKDMuNjk1MzEyIEtCKQor
ICAgICAgICAgICAgICAgIExMSW50VGh1bms6IDI5MDggKDIuODM5ODQ0IEtCKSAgICAgICAgICA9
PiAyOTA4ICgyLjgzOTg0NCBLQikKKyAgICAgICAgICAgICAgVmlydHVhbFRodW5rOiAxMjQ4ICgx
LjIxODc1MCBLQikgICAgICAgICAgPT4gMTI0OCAoMS4yMTg3NTAgS0IpCisgICAgICAgICAgICAg
ICAgICBERkdUaHVuazogMTA4NCAoMS4wNTg1OTQgS0IpICAgICAgICAgID0+IDQ0NAorICAgICAg
ICAgICAgICAgREZHT1NSRW50cnk6IDIxNiAgICAgICAgICAgICAgICAgICAgICAgICA9PiAxODQK
KyAgICAgICAgICAgICAgICBKdW1wSXNsYW5kOiAwCisgICAgICAgICAgICAgICAgIFdhc21UaHVu
azogMAorICAgICAgICAgICAgICAgICAgICAgIFdhc206IDAKKyAgICAgICAgICAgICBVbmNhdGVn
b3JpemVkOiAwCisgICAgICAgICAgICAgICAgICAgICBUb3RhbDogMTg4MjY2OTU2ICgxNzkuNTQ1
MzYxIE1CKSAgID0+IDE4NTc3MzI5NiAoMTc3LjE2NzIyMSBNQikKKworICAgICAgICBTcGVlZG9t
ZXRlcjIgYW5kIEpldFN0cmVhbTIgcmVzdWx0cyBzaG93cyB0aGF0IHBlcmZvcm1hbmNlIGlzIG5l
dXRyYWwgZm9yIHRoaXMKKyAgICAgICAgcGF0Y2ggKGFzIG1lYXN1cmVkIG9uIGFuIE0xIE1hYyk6
CisKKyAgICAgICAgU3BlZWRvbWV0ZXIyOgorICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAg
ICAgIHwgICAgICAgICAgICAgICBzdWJ0ZXN0ICAgICAgICAgICAgICAgIHwgICAgIG1zICAgICAg
fCAgICAgbXMgICAgICB8ICBiIC8gYSAgIHwgcFZhbHVlIChzaWduaWZpY2FuY2UgdXNpbmcgRmFs
c2UgRGlzY292ZXJ5IFJhdGUpIHwKKyAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICB8
IEVsbS1Ub2RvTVZDICAgICAgICAgICAgICAgICAgICAgICAgICB8MTI5LjAzNzUwMCAgIHwxMjcu
MjEyNTAwICAgfDAuOTg1ODU3ICB8IDAuMDEyNzA2ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8CisgICAgICAgIHwgVnVlSlMtVG9kb01WQyAgICAgICAgICAgICAgICAg
ICAgICAgIHwyOC4zMTI1MDAgICAgfDI3LjUyNTAwMCAgICB8MC45NzIxODUgIHwgMC4yNDAzMTUg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBFbWJl
ckpTLVRvZG9NVkMgICAgICAgICAgICAgICAgICAgICAgfDEzMi41NTAwMDAgICB8MTMyLjAyNTAw
MCAgIHwwLjk5NjAzOSAgfCAwLjUzODAzNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfAorICAgICAgICB8IEZsaWdodC1Ub2RvTVZDICAgICAgICAgICAgICAgICAgICAg
ICB8ODAuNzYyNTAwICAgIHw4MC44NzUwMDAgICAgfDEuMDAxMzkzICB8IDAuOTE0NzQ5ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgQmFja2JvbmVK
Uy1Ub2RvTVZDICAgICAgICAgICAgICAgICAgIHw1MS42Mzc1MDAgICAgfDUxLjE3NTAwMCAgICB8
MC45OTEwNDMgIHwgMC4yODU0MjcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwKKyAgICAgICAgfCBQcmVhY3QtVG9kb01WQyAgICAgICAgICAgICAgICAgICAgICAgfDIx
LjAyNTAwMCAgICB8MjIuMDc1MDAwICAgIHwxLjA0OTk0MSAgfCAwLjIwNjE0MCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IEFuZ3VsYXJKUy1Ub2Rv
TVZDICAgICAgICAgICAgICAgICAgICB8MTQyLjkwMDAwMCAgIHwxNDIuODg3NTAwICAgfDAuOTk5
OTEzICB8IDAuOTkwNjgxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
CisgICAgICAgIHwgSW5mZXJuby1Ub2RvTVZDICAgICAgICAgICAgICAgICAgICAgIHw2OS4zMDAw
MDAgICAgfDY5Ljc3NTAwMCAgICB8MS4wMDY4NTQgIHwgMC41MDUyMDEgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBWYW5pbGxhLUVTMjAxNS1Ub2Rv
TVZDICAgICAgICAgICAgICAgfDcxLjUwMDAwMCAgICB8NzEuMjI1MDAwICAgIHwwLjk5NjE1NCAg
fCAwLjYwODY1MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAg
ICAgICB8IEFuZ3VsYXIyLVR5cGVTY3JpcHQtVG9kb01WQyAgICAgICAgICB8NDMuMjg3NTAwICAg
IHw0My4yNzUwMDAgICAgfDAuOTk5NzExICB8IDAuOTg3OTI2ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgVmFuaWxsYUpTLVRvZG9NVkMgICAgICAg
ICAgICAgICAgICAgIHw1Ny4yMTI1MDAgICAgfDU3LjgxMjUwMCAgICB8MS4wMTA0ODcgIHwgMC4z
MzMzNTcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAg
fCBqUXVlcnktVG9kb01WQyAgICAgICAgICAgICAgICAgICAgICAgfDI3Ni4xNTAwMDAgICB8Mjc2
Ljc3NTAwMCAgIHwxLjAwMjI2MyAgfCAwLjYxNDQwNCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfAorICAgICAgICB8IEVtYmVySlMtRGVidWctVG9kb01WQyAgICAgICAg
ICAgICAgICB8MzUzLjYxMjUwMCAgIHwzNTIuNzYyNTAwICAgfDAuOTk3NTk2ICB8IDAuNTE4ODM2
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgUmVh
Y3QtVG9kb01WQyAgICAgICAgICAgICAgICAgICAgICAgIHw5My42Mzc1MDAgICAgfDkyLjYzNzUw
MCAgICB8MC45ODkzMjEgIHwgMC4wMzYyNzcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwKKyAgICAgICAgfCBSZWFjdC1SZWR1eC1Ub2RvTVZDICAgICAgICAgICAgICAg
ICAgfDE1OC4yMzc1MDAgICB8MTU2LjU4NzUwMCAgIHwwLjk4OTU3MyAgfCAwLjA0MjE1NCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IFZhbmlsbGEt
RVMyMDE1LUJhYmVsLVdlYnBhY2stVG9kb01WQyB8NjguMDUwMDAwICAgIHw2OC4wODc1MDAgICAg
fDEuMDAwNTUxICB8IDAuODk3MTQ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8CisgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgICAgICBhIG1lYW4gPSAyMzYu
MjY5NTAKKyAgICAgICAgYiBtZWFuID0gMjM2LjU3OTY0CisgICAgICAgIHBWYWx1ZSA9IDAuNzgz
MDc4NTkzOAorICAgICAgICAoQmlnZ2VyIG1lYW5zIGFyZSBiZXR0ZXIuKQorICAgICAgICAxLjAw
MSB0aW1lcyBiZXR0ZXIKKyAgICAgICAgUmVzdWx0cyBBUkUgTk9UIHNpZ25pZmljYW50CisKKyAg
ICAgICAgSmV0U3RyZWFtMjoKKyAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICB8ICAgICAgICAgIHN1
YnRlc3QgICAgICAgICAgfCAgICAgcHRzICAgICAgfCAgICAgcHRzICAgICAgfCAgYiAvIGEgICB8
IHBWYWx1ZSAoc2lnbmlmaWNhbmNlIHVzaW5nIEZhbHNlIERpc2NvdmVyeSBSYXRlKSB8CisgICAg
ICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKyAgICAgICAgfCBnYXVzc2lhbi1ibHVyICAgICAgICAgICAgIHw1NDIuNTcw
MDU3ICAgIHw1NDIuNjcxODg1ICAgIHwxLjAwMDE4OCAgfCAwLjk4MjU3MyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IEhhc2hTZXQtd2FzbSAgICAg
ICAgICAgICAgfDU3LjcxMDQ5OCAgICAgfDY0LjQwNjM3MSAgICAgfDEuMTE2MDI1ICB8IDAuNDAx
NDI0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwg
Z2NjLWxvb3BzLXdhc20gICAgICAgICAgICB8NDQuNTE2MDA5ICAgICB8NDQuNDUzNTM1ICAgICB8
MC45OTg1OTcgIHwgMC45NzM2NTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwKKyAgICAgICAgfCBqc29uLXBhcnNlLWluc3BlY3RvciAgICAgIHwyNDEuMjc1MDg1ICAg
IHwyNDAuNzIwNDkxICAgIHwwLjk5NzcwMSAgfCAwLjcwNDczMiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IHByZXBhY2std3RiICAgICAgICAgICAg
ICAgfDYyLjY0MDExNCAgICAgfDYzLjc1NDg3OCAgICAgfDEuMDE3Nzk2ICB8IDAuMjA1ODQwICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgZGF0ZS1m
b3JtYXQteHBhcmItU1AgICAgICB8NDE2Ljk3NjgxNyAgICB8NDQ4LjkyMTQwOSAgICB8MS4wNzY2
MTAgIHwgMC4wNTI5NzcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwK
KyAgICAgICAgfCBXU0wgICAgICAgICAgICAgICAgICAgICAgIHwxLjU1NTI1NyAgICAgIHwxLjU3
MDIzMyAgICAgIHwxLjAwOTYyOSAgfCAwLjQyNzkyNCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfAorICAgICAgICB8IE9mZmxpbmVBc3NlbWJsZXIgICAgICAgICAgfDE3
Ny4wNTIzNTIgICAgfDE3OS43NDY1MTEgICAgfDEuMDE1MjE3ICB8IDAuMTEyMTE0ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgY2RqcyAgICAgICAg
ICAgICAgICAgICAgICB8MTkyLjUxNzU4NiAgICB8MTk0LjU5ODkwNiAgICB8MS4wMTA4MTEgIHwg
MC4wMjU4MDcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAg
ICAgfCBVbmlQb2tlciAgICAgICAgICAgICAgICAgIHw1MTQuMDIzNjk0ICAgIHw1MjYuMTExNTAw
ICAgIHwxLjAyMzUxNiAgfCAwLjI2OTg5MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfAorICAgICAgICB8IGpzb24tc3RyaW5naWZ5LWluc3BlY3RvciAgfDIyNy41ODQ3
MjUgICAgfDIyMy42MTkzOTAgICAgfDAuOTgyNTc2ICB8IDAuMTAyNzE0ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgY3J5cHRvLXNoYTEtU1AgICAg
ICAgICAgICB8OTgwLjcyODc4OCAgICB8OTg0LjE5MjEwNCAgICB8MS4wMDM1MzEgIHwgMC44Mzg2
MTggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBC
YXNpYyAgICAgICAgICAgICAgICAgICAgIHw2ODUuMTQ4NDgzICAgIHw3MTEuNTkwMjQ3ICAgIHwx
LjAzODU5MyAgfCAwLjE0Mjk1MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfAorICAgICAgICB8IGNoYWktd3RiICAgICAgICAgICAgICAgICAgfDEwNi4yNTYzNzYgICAg
fDEwNi41OTAzMTggICAgfDEuMDAzMTQzICB8IDAuODY1ODk0ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgY3J5cHRvLWFlcy1TUCAgICAgICAgICAg
ICB8NzIyLjMwODgyOSAgICB8NzI4LjcwMjMxMCAgICB8MS4wMDg4NTEgIHwgMC40ODY3NjYgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBCYWJ5bG9u
ICAgICAgICAgICAgICAgICAgIHw2NTUuODU3NTYxICAgIHw2NTQuMjA0OTAxICAgIHwwLjk5NzQ4
MCAgfCAwLjkzMTUyMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAor
ICAgICAgICB8IHN0cmluZy11bnBhY2stY29kZS1TUCAgICAgfDQwNy44MzcyNzEgICAgfDQwNS43
MTA3NTIgICAgfDAuOTk0Nzg2ICB8IDAuNzI5MTIyICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8CisgICAgICAgIHwgc3RhbmZvcmQtY3J5cHRvLWFlcyAgICAgICB8NDU2
LjkwNjAyMSAgICB8NDQ5Ljk5Mzg1NiAgICB8MC45ODQ4NzIgIHwgMC4yNzI5OTQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCByYXl0cmFjZSAgICAg
ICAgICAgICAgICAgIHw4ODMuOTExMzM1ICAgIHw5MDIuODg3MjM4ICAgIHwxLjAyMTQ2OCAgfCAw
LjE4OTc4NSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAg
ICB8IG11bHRpLWluc3BlY3Rvci1jb2RlLWxvYWQgfDQwOS45OTczNDcgICAgfDQwNS42NDM2Mzkg
ICAgfDAuOTg5MzgxICB8IDAuNjQ0NDQ3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8CisgICAgICAgIHwgaGFzaC1tYXAgICAgICAgICAgICAgICAgICB8NTkzLjU5MDE2
MCAgICB8NjAxLjU3NjMzMiAgICB8MS4wMTM0NTQgIHwgMC4yNDk0MTQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBzdGFuZm9yZC1jcnlwdG8tcGJr
ZGYyICAgIHw3MjIuMTc4NjM4ICAgIHw3MjguMjgzNTMyICAgIHwxLjAwODQ1MyAgfCAwLjY2MTE5
NSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IGNv
ZmZlZXNjcmlwdC13dGIgICAgICAgICAgfDQyLjM5MzU0NCAgICAgfDQxLjg2OTU0NSAgICAgfDAu
OTg3NjQwICB8IDAuMTk3NDQxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8CisgICAgICAgIHwgQm94MkQgICAgICAgICAgICAgICAgICAgICB8NDUyLjAzNDY4NSAgICB8
NDU0LjEwNDg2OCAgICB8MS4wMDQ1ODAgIHwgMC41MzUzNDIgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCByaWNoYXJkcy13YXNtICAgICAgICAgICAg
IHwxNDAuODczNjg4ICAgIHwxNDguMzk0MDUwICAgIHwxLjA1MzM4NCAgfCAwLjMwMzY1MSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IGxlYmFiLXd0
YiAgICAgICAgICAgICAgICAgfDYxLjY3MTMxOCAgICAgfDYyLjExOTQwMyAgICAgfDEuMDA3MjY2
ICB8IDAuNjIwOTk4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cisg
ICAgICAgIHwgdHNmLXdhc20gICAgICAgICAgICAgICAgICB8MTA4LjU5Mjc5NCAgICB8MTE5LjQ5
ODM5OCAgICB8MS4xMDA0MjcgIHwgMC41MDQ3MTAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwKKyAgICAgICAgfCBiYXNlNjQtU1AgICAgICAgICAgICAgICAgIHw2Mjku
NzQ0NjQzICAgIHw2MDMuNDI1NTY1ICAgIHwwLjk1ODIwNyAgfCAwLjA0OTk5NyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IG5hdmllci1zdG9rZXMg
ICAgICAgICAgICAgfDc0MC41ODg1MjMgICAgfDczOS45NTE2NjIgICAgfDAuOTk5MTQwICB8IDAu
ODcxNDQ1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAg
IHwganNoaW50LXd0YiAgICAgICAgICAgICAgICB8NTEuOTM4MzU5ICAgICB8NTIuNjUxMTA0ICAg
ICB8MS4wMTM3MjMgIHwgMC4yMTcxMzcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwKKyAgICAgICAgfCByZWdleC1kbmEtU1AgICAgICAgICAgICAgIHw0NTkuMjUxMTQ4
ICAgIHw0NjMuNDkyNDg5ICAgIHwxLjAwOTIzNSAgfCAwLjM3MTg5MSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IGFzeW5jLWZzICAgICAgICAgICAg
ICAgICAgfDIzNS44NTM4MjAgICAgfDIzNi4wMzExODkgICAgfDEuMDAwNzUyICB8IDAuOTM4NDU5
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgZmly
c3QtaW5zcGVjdG9yLWNvZGUtbG9hZCB8Mjc1LjI5ODMyNSAgICB8Mjc0LjE3MjEyNSAgICB8MC45
OTU5MDkgIHwgMC42MjM0MDMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwKKyAgICAgICAgfCBzZWdtZW50YXRpb24gICAgICAgICAgICAgIHw0NC4wMDI4NDIgICAgIHw0
My40NDU5NjAgICAgIHwwLjk4NzM0NCAgfCAwLjIwNzEzNCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IHR5cGVzY3JpcHQgICAgICAgICAgICAgICAg
fDI2LjM2MDE2MSAgICAgfDI2LjQ1ODgyMCAgICAgfDEuMDAzNzQzICB8IDAuNjA5OTQyICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgb2N0YW5lLWNv
ZGUtbG9hZCAgICAgICAgICB8MTEyNi43NDkwMzYgICB8MTA4Ny4xMzIwMjQgICB8MC45NjQ4NDAg
IHwgMC41MjQxNzEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAg
ICAgICAgfCBmbG9hdC1tbS5jICAgICAgICAgICAgICAgIHwxNi42OTE5MzUgICAgIHwxNi43MjEz
NTQgICAgIHwxLjAwMTc2MiAgfCAwLjE5NDQyNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfAorICAgICAgICB8IHF1aWNrc29ydC13YXNtICAgICAgICAgICAgfDQ2MS42
MzAwOTEgICAgfDQ1MC4xNjExMjcgICAgfDAuOTc1MTU2ICB8IDAuMzcxMzk0ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgQWlyICAgICAgICAgICAg
ICAgICAgICAgICB8MzkyLjQ0MjM3NSAgICB8NDEyLjIwMTgxMCAgICB8MS4wNTAzNTAgIHwgMC4w
NDY4ODcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAg
fCBzcGxheSAgICAgICAgICAgICAgICAgICAgIHw1MTAuMTExODg2ICAgIHw0NzUuMTMxNjU3ICAg
IHwwLjkzMTQyNiAgfCAwLjAyNDczMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfAorICAgICAgICB8IGFpLWFzdGFyICAgICAgICAgICAgICAgICAgfDYwNy45NjY5NzQg
ICAgfDYyNi41NzMxODEgICAgfDEuMDMwNjA0ICB8IDAuNDY4NzExICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgYWNvcm4td3RiICAgICAgICAgICAg
ICAgICB8NjcuNTEwNzY2ICAgICB8NjguMTQzOTU2ICAgICB8MS4wMDkzNzkgIHwgMC40ODE2NjMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBnYmVt
dSAgICAgICAgICAgICAgICAgICAgIHwxNDQuMTMzODQyICAgIHwxNDUuNjIwMzA0ICAgIHwxLjAx
MDMxMyAgfCAwLjgwMjE1NCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fAorICAgICAgICB8IHJpY2hhcmRzICAgICAgICAgICAgICAgICAgfDk2My40NzUwNzggICAgfDk0
Ni42NTg4NzkgICAgfDAuOTgyNTQ2ICB8IDAuMjMxMTg5ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgM2QtY3ViZS1TUCAgICAgICAgICAgICAgICB8
NTQ5LjQyNjc4NCAgICB8NTUwLjQ3OTE1NCAgICB8MS4wMDE5MTUgIHwgMC44MzEzMDcgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBlc3ByZWUtd3Ri
ICAgICAgICAgICAgICAgIHw2OC43MDc0ODMgICAgIHw3My43NjIyMDIgICAgIHwxLjA3MzU2OSAg
fCAwLjAzMzYwMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAg
ICAgICB8IGJvbWItd29ya2VycyAgICAgICAgICAgICAgfDk2Ljg4MjU5NiAgICAgfDk2LjExNjEy
MSAgICAgfDAuOTkyMDg5ICB8IDAuNjg3OTUyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8CisgICAgICAgIHwgdGFnY2xvdWQtU1AgICAgICAgICAgICAgICB8MzA5Ljg4
ODc2NyAgICB8MzAzLjUzODUxMSAgICB8MC45Nzk1MDggIHwgMC4xODc3NjggICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBtYW5kcmVlbCAgICAgICAg
ICAgICAgICAgIHwxMzMuNjY3MDMxICAgIHwxMzUuMDA5OTI5ICAgIHwxLjAxMDA0NyAgfCAwLjA3
NTIzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8
IDNkLXJheXRyYWNlLVNQICAgICAgICAgICAgfDQ5MS45Njc2NDkgICAgfDQ5Mi41Mjg5OTIgICAg
fDEuMDAxMTQxICB8IDAuOTU3ODQyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8CisgICAgICAgIHwgZGVsdGEtYmx1ZSAgICAgICAgICAgICAgICB8MTA2Ni43MTgzMTIg
ICB8MTA4MC4yMzA3NzIgICB8MS4wMTI2NjcgIHwgMC41NDkzODIgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBNTCAgICAgICAgICAgICAgICAgICAg
ICAgIHwxMzkuNjE3MjkzICAgIHwxNDAuMDg4NjMwICAgIHwxLjAwMzM3NiAgfCAwLjY2MTY1MSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IHJlZ2V4
cCAgICAgICAgICAgICAgICAgICAgfDM1MS43NzM5NTYgICAgfDM1MS4wNzU5MzUgICAgfDAuOTk4
MDE2ICB8IDAuNzY5MjUwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
CisgICAgICAgIHwgY3J5cHRvICAgICAgICAgICAgICAgICAgICB8MTUxMC40NzQ2NjMgICB8MTUx
OS4yMTg4NDIgICB8MS4wMDU3ODkgIHwgMC42Mzg0MjAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBjcnlwdG8tbWQ1LVNQICAgICAgICAgICAgIHw3
OTUuNDQ3ODk5ICAgIHw3NzQuMDgyNDkzICAgIHwwLjk3MzE0MCAgfCAwLjA3OTcyOCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IGVhcmxleS1ib3ll
ciAgICAgICAgICAgICAgfDgxMi41NzQ1NDUgICAgfDg3MC42NzgzNzIgICAgfDEuMDcxNTA2ICB8
IDAuMDQ0MDgxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAg
ICAgIHwgb2N0YW5lLXpsaWIgICAgICAgICAgICAgICB8MjUuMTYyNDcwICAgICB8MjUuNjYwMjYx
ICAgICB8MS4wMTk3ODMgIHwgMC41NTQ1OTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwKKyAgICAgICAgfCBkYXRlLWZvcm1hdC10b2Z0ZS1TUCAgICAgIHwzOTUuMjk2
MTM1ICAgIHwzOTguMDA4OTkyICAgIHwxLjAwNjg2MyAgfCAwLjY1MDQ3NSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IG4tYm9keS1TUCAgICAgICAg
ICAgICAgICAgfDExNjUuMzg2NjExICAgfDExNTAuNTI1MTEwICAgfDAuOTg3MjQ4ICB8IDAuMjI3
OTA4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwg
cGRmanMgICAgICAgICAgICAgICAgICAgICB8MTg5LjA2MDI1MiAgICB8MTkxLjAxNTYyOCAgICB8
MS4wMTAzNDMgIHwgMC42MzM3NzcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwKKyAgICAgICAgfCBGbGlnaHRQbGFubmVyICAgICAgICAgICAgIHw5MDguNDI2MTkyICAg
IHw5MDMuNjM2NjQyICAgIHwwLjk5NDcyOCAgfCAwLjgzODgyMSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IHVnbGlmeS1qcy13dGIgICAgICAgICAg
ICAgfDM0LjAyOTM5OSAgICAgfDM0LjE2NDM0MiAgICAgfDEuMDAzOTY1ICB8IDAuNjU1NjUyICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgYmFieWxv
bi13dGIgICAgICAgICAgICAgICB8ODEuMzI5ODY5ICAgICB8ODAuODU1NjgwICAgICB8MC45OTQx
NzAgIHwgMC44NTQzOTMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwK
KyAgICAgICAgfCBzdGFuZm9yZC1jcnlwdG8tc2hhMjU2ICAgIHw4MjYuODUwNTMzICAgIHw4Mzgu
NDk0MTY0ICAgIHwxLjAxNDA4MiAgfCAwLjU3OTYzNiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfAorICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAgICAgYSBtZWFuID0gMjM3
LjkxMDg0CisgICAgICAgIGIgbWVhbiA9IDIzOS45MjY3MAorICAgICAgICBwVmFsdWUgPSAwLjA2
NTc3MTA4OTcKKyAgICAgICAgKEJpZ2dlciBtZWFucyBhcmUgYmV0dGVyLikKKyAgICAgICAgMS4w
MDggdGltZXMgYmV0dGVyCisgICAgICAgIFJlc3VsdHMgQVJFIE5PVCBzaWduaWZpY2FudAorCisg
ICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIu
aDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OnB1c2hUb1NhdmVCeXRlT2Zmc2V0KToK
KyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpwdXNoVG9TYXZlQnl0ZU9mZnNldCk6CisgICAgICAgICog
ZGZnL0RGR09TUkV4aXQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXQ6OmNvbXBpbGVF
eGl0KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpyZWlmeUlubGluZWRDYWxsRnJhbWVzKToKKyAgICAgICAgKiBkZmcvREZH
VGh1bmtzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpvc3JFeGl0R2VuZXJhdGlvblRodW5rR2Vu
ZXJhdG9yKToKKyAgICAgICAgKiBmdGwvRlRMU2F2ZVJlc3RvcmUuY3BwOgorICAgICAgICAoSlND
OjpGVEw6OnNhdmVBbGxSZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpGVEw6OnJlc3RvcmVBbGxS
ZWdpc3RlcnMpOgorICAgICAgICAqIGZ0bC9GVExTYXZlUmVzdG9yZS5oOgorICAgICAgICAqIGZ0
bC9GVExUaHVua3MuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmdlbmVyaWNHZW5lcmF0aW9uVGh1
bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpGVEw6OnNsb3dQYXRoQ2FsbFRodW5rR2VuZXJh
dG9yKToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6
QXNzZW1ibHlIZWxwZXJzOjpyZXN0b3JlQ2FsbGVlU2F2ZXNGcm9tRW50cnlGcmFtZUNhbGxlZVNh
dmVzQnVmZmVyKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpjb3B5Q2FsbGVlU2F2
ZXNUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlckltcGwpOgorICAgICAgICAoSlNDOjpBc3Nl
bWJseUhlbHBlcnM6OmVtaXRTYXZlKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpl
bWl0UmVzdG9yZSk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdFNhdmVDYWxs
ZWVTYXZlc0Zvcik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdFJlc3RvcmVD
YWxsZWVTYXZlc0Zvcik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6Y29weUxMSW50
QmFzZWxpbmVDYWxsZWVTYXZlc0Zyb21GcmFtZU9yUmVnaXN0ZXJUb0VudHJ5RnJhbWVDYWxsZWVT
YXZlc0J1ZmZlcik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdFNhdmVPckNv
cHlMTEludEJhc2VsaW5lQ2FsbGVlU2F2ZXNGb3IpOgorICAgICAgICAqIGppdC9Bc3NlbWJseUhl
bHBlcnMuaDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpjb3B5TExJbnRCYXNlbGlu
ZUNhbGxlZVNhdmVzRnJvbUZyYW1lT3JSZWdpc3RlclRvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVm
ZmVyKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0U2F2ZSk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdFJlc3RvcmUpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRTYXZlT3JDb3B5Q2FsbGVlU2F2ZXNG
b3IpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnNTcG9vbGVycy5oOiBB
ZGRlZC4KKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpTcG9vbGVyOjpTcG9vbGVyKToK
KyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpTcG9vbGVyOjpoYW5kbGVHUFIpOgorICAg
ICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OlNwb29sZXI6OmZsdXNoR1BSKToKKyAgICAgICAg
KEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpTcG9vbGVyOjpoYW5kbGVGUFIpOgorICAgICAgICAoSlND
OjpBc3NlbWJseUhlbHBlcnM6OlNwb29sZXI6OmZsdXNoRlBSKToKKyAgICAgICAgKEpTQzo6QXNz
ZW1ibHlIZWxwZXJzOjpTcG9vbGVyOjpvcCk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVy
czo6TG9hZFJlZ1Nwb29sZXI6OkxvYWRSZWdTcG9vbGVyKToKKyAgICAgICAgKEpTQzo6QXNzZW1i
bHlIZWxwZXJzOjpMb2FkUmVnU3Bvb2xlcjo6bG9hZEdQUik6CisgICAgICAgIChKU0M6OkFzc2Vt
Ymx5SGVscGVyczo6TG9hZFJlZ1Nwb29sZXI6OmZsdXNoR1BSKToKKyAgICAgICAgKEpTQzo6QXNz
ZW1ibHlIZWxwZXJzOjpMb2FkUmVnU3Bvb2xlcjo6bG9hZEZQUik6CisgICAgICAgIChKU0M6OkFz
c2VtYmx5SGVscGVyczo6TG9hZFJlZ1Nwb29sZXI6OmZsdXNoRlBSKToKKyAgICAgICAgKEpTQzo6
QXNzZW1ibHlIZWxwZXJzOjpMb2FkUmVnU3Bvb2xlcjo6aGFuZGxlUGFpcik6CisgICAgICAgIChK
U0M6OkFzc2VtYmx5SGVscGVyczo6TG9hZFJlZ1Nwb29sZXI6OmhhbmRsZVNpbmdsZSk6CisgICAg
ICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6U3RvcmVSZWdTcG9vbGVyOjpTdG9yZVJlZ1Nwb29s
ZXIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OlN0b3JlUmVnU3Bvb2xlcjo6c3Rv
cmVHUFIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OlN0b3JlUmVnU3Bvb2xlcjo6
Zmx1c2hHUFIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OlN0b3JlUmVnU3Bvb2xl
cjo6c3RvcmVGUFIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OlN0b3JlUmVnU3Bv
b2xlcjo6Zmx1c2hGUFIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OlN0b3JlUmVn
U3Bvb2xlcjo6aGFuZGxlUGFpcik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6U3Rv
cmVSZWdTcG9vbGVyOjpoYW5kbGVTaW5nbGUpOgorICAgICAgICAoSlNDOjpSZWdEaXNwYXRjaDxH
UFJSZWc+OjpnZXQpOgorICAgICAgICAoSlNDOjpSZWdEaXNwYXRjaDxHUFJSZWc+Ojp0ZW1wMSk6
CisgICAgICAgIChKU0M6OlJlZ0Rpc3BhdGNoPEdQUlJlZz46OnRlbXAyKToKKyAgICAgICAgKEpT
Qzo6UmVnRGlzcGF0Y2g8R1BSUmVnPjo6cmVnVG9TdG9yZSk6CisgICAgICAgIChKU0M6OlJlZ0Rp
c3BhdGNoPEdQUlJlZz46OmludmFsaWQpOgorICAgICAgICAoSlNDOjpSZWdEaXNwYXRjaDxHUFJS
ZWc+OjpyZWdTaXplKToKKyAgICAgICAgKEpTQzo6UmVnRGlzcGF0Y2g8R1BSUmVnPjo6aXNWYWxp
ZExvYWRQYWlySW1tKToKKyAgICAgICAgKEpTQzo6UmVnRGlzcGF0Y2g8R1BSUmVnPjo6aXNWYWxp
ZFN0b3JlUGFpckltbSk6CisgICAgICAgIChKU0M6OlJlZ0Rpc3BhdGNoPEZQUlJlZz46OmdldCk6
CisgICAgICAgIChKU0M6OlJlZ0Rpc3BhdGNoPEZQUlJlZz46OnRlbXAxKToKKyAgICAgICAgKEpT
Qzo6UmVnRGlzcGF0Y2g8RlBSUmVnPjo6dGVtcDIpOgorICAgICAgICAoSlNDOjpSZWdEaXNwYXRj
aDxGUFJSZWc+OjpyZWdUb1N0b3JlKToKKyAgICAgICAgKEpTQzo6UmVnRGlzcGF0Y2g8RlBSUmVn
Pjo6aW52YWxpZCk6CisgICAgICAgIChKU0M6OlJlZ0Rpc3BhdGNoPEZQUlJlZz46OnJlZ1NpemUp
OgorICAgICAgICAoSlNDOjpSZWdEaXNwYXRjaDxGUFJSZWc+Ojppc1ZhbGlkTG9hZFBhaXJJbW0p
OgorICAgICAgICAoSlNDOjpSZWdEaXNwYXRjaDxGUFJSZWc+Ojppc1ZhbGlkU3RvcmVQYWlySW1t
KToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpDb3B5U3Bvb2xlcjo6U291cmNlOjpn
ZXRSZWcpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OkNvcHlTcG9vbGVyOjpDb3B5
U3Bvb2xlcik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6Q29weVNwb29sZXI6OnRl
bXAxIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpDb3B5U3Bvb2xlcjo6
dGVtcDIgY29uc3QpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OkNvcHlTcG9vbGVy
OjpyZWdUb1N0b3JlKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpDb3B5U3Bvb2xl
cjo6aW52YWxpZCk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6Q29weVNwb29sZXI6
OnJlZ1NpemUpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OkNvcHlTcG9vbGVyOjpp
c1ZhbGlkTG9hZFBhaXJJbW0pOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OkNvcHlT
cG9vbGVyOjppc1ZhbGlkU3RvcmVQYWlySW1tKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxw
ZXJzOjpDb3B5U3Bvb2xlcjo6bG9hZCk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6
Q29weVNwb29sZXI6Om1vdmUpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OkNvcHlT
cG9vbGVyOjpjb3B5KToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpDb3B5U3Bvb2xl
cjo6c3RvcmUpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OkNvcHlTcG9vbGVyOjpm
bHVzaCk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6Q29weVNwb29sZXI6OmxvYWRH
UFIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OkNvcHlTcG9vbGVyOjpjb3B5R1BS
KToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpDb3B5U3Bvb2xlcjo6bW92ZUNvbnN0
YW50KToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpDb3B5U3Bvb2xlcjo6c3RvcmVH
UFIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OkNvcHlTcG9vbGVyOjpmbHVzaEdQ
Uik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6Q29weVNwb29sZXI6OmxvYWRGUFIp
OgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OkNvcHlTcG9vbGVyOjpjb3B5RlBSKToK
KyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpDb3B5U3Bvb2xlcjo6c3RvcmVGUFIpOgor
ICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OkNvcHlTcG9vbGVyOjpmbHVzaEZQUik6Cisg
ICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6Q29weVNwb29sZXI6OmxvYWRQYWlyKToKKyAg
ICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpDb3B5U3Bvb2xlcjo6c3RvcmVQYWlyKToKKyAg
ICAgICAgKiBqaXQvU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
U2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpwcmVzZXJ2ZVJldXNlZFJlZ2lzdGVyc0J5UHVzaGlu
Zyk6CisgICAgICAgIChKU0M6OlNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6cmVzdG9yZVJldXNl
ZFJlZ2lzdGVyc0J5UG9wcGluZyk6CisgICAgICAgIChKU0M6OlNjcmF0Y2hSZWdpc3RlckFsbG9j
YXRvcjo6cHJlc2VydmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbCk6CisgICAgICAgIChKU0M6OlNj
cmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6cmVzdG9yZVJlZ2lzdGVyc0Zyb21TdGFja0ZvckNhbGwp
OgorICAgICAgICAqIGppdC9TY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuaDoKKyAgICAgICAgKiB3
YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2Vu
ZXJhdG9yOjphZGRSZXR1cm4pOgorICAgICAgICAqIHdhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3Bw
OgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjphZGRSZXR1cm4pOgorCiAyMDIx
LTA2LTE1ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAgICAgICAg
IFNob3VsZG4ndCBkcmFpbiB0aGUgbWljcm8gdGFzayBxdWV1ZSB3aGVuIGNhbGxpbmcgb3V0IHRv
IE9iakMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDI3
ODg4NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtNzU3LDYgKzc1Nyw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1F
V09SS19IRUEKICAgICBpbnRlcnByZXRlci9WTUVudHJ5UmVjb3JkLmgKIAogICAgIGppdC9Bc3Nl
bWJseUhlbHBlcnMuaAorICAgIGppdC9Bc3NlbWJseUhlbHBlcnNTcG9vbGVycy5oCiAgICAgaml0
L0NDYWxsSGVscGVycy5oCiAgICAgaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuaAogICAgIGppdC9G
UFJJbmZvLmgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNzg4
ODYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTE0OCw2ICsxMTQ4LDcgQEAKIAkJNjVC
ODM5MkUxQkFDQUQzNjAwNDRFODI0IC8qIENhY2hlZFJlY292ZXJ5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUI4MzkyQzFCQUNBOTJBMDA0NEU4MjQg
LyogQ2FjaGVkUmVjb3ZlcnkuaCAqLzsgfTsKIAkJNkEzOENGQUExRTMyQjVBQjAwNjAyMDZGIC8q
IEFzeW5jU3RhY2tUcmFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNkEzOENGQTgxRTMyQjU4QjAwNjAyMDZGIC8qIEFzeW5jU3RhY2tUcmFjZS5oICov
OyB9OwogCQk2QUQyQ0I0RDE5QjkxNDAxMDAwNjU3MTkgLyogRGVidWdnZXJFdmFsRW5hYmxlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkFEMkNCNEMx
OUI5MTQwMTAwMDY1NzE5IC8qIERlYnVnZ2VyRXZhbEVuYWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk2Qjc2N0U3QjI2NzkxRjI3MDAxN0Y4
RDEgLyogQXNzZW1ibHlIZWxwZXJzU3Bvb2xlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZCNzY3RTdBMjY3OTFGMjcwMDE3RjhEMSAvKiBBc3NlbWJs
eUhlbHBlcnNTcG9vbGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTZCQ0NFQzA0MjVEMUZBMjcwMDBGMzkxRCAvKiBWZXJpZmllclNsb3RWaXNp
dG9ySW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNkJDQ0VDMDMyNUQxRkEyNzAwMEYzOTFEIC8qIFZlcmlmaWVyU2xvdFZpc2l0b3JJbmxpbmVz
LmggKi87IH07CiAJCTcwMTEzRDRDMUE4REIwOTMwMDM4NDhDNCAvKiBJdGVyYXRvck9wZXJhdGlv
bnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwMTEz
RDRBMUE4REIwOTMwMDM4NDhDNCAvKiBJdGVyYXRvck9wZXJhdGlvbnMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MDEzQ0E4QzFCNDkxQTk0MDBD
QUU2MTMgLyogSlNNaWNyb3Rhc2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDcwMTNDQThBMUI0OTFBOTQwMENBRTYxMyAvKiBKU01pY3JvdGFzay5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zOTk3LDYg
KzM5OTgsNyBAQAogCQk2QTM4Q0ZBODFFMzJCNThCMDA2MDIwNkYgLyogQXN5bmNTdGFja1RyYWNl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFzeW5jU3RhY2tUcmFjZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2QUQyQ0I0QzE5QjkxNDAxMDAwNjU3MTkgLyog
RGVidWdnZXJFdmFsRW5hYmxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
ZWJ1Z2dlckV2YWxFbmFibGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZCNzMx
Q0MwMjY0N0E4MzcwMDE0NjQ2RiAvKiBTbG93UGF0aENhbGwuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gU2xvd1BhdGhDYWxsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkI3NjdF
N0EyNjc5MUYyNzAwMTdGOEQxIC8qIEFzc2VtYmx5SGVscGVyc1Nwb29sZXJzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFzc2VtYmx5SGVscGVyc1Nwb29sZXJzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZCQTkzQzk1OTA0ODRDNUJBRDkzMTZFQSAvKiBKU1Nj
cmlwdEZldGNoZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTY3JpcHRG
ZXRjaGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZCQ0NFQzAzMjVEMUZBMjcw
MDBGMzkxRCAvKiBWZXJpZmllclNsb3RWaXNpdG9ySW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBWZXJpZmllclNsb3RWaXNpdG9ySW5saW5lcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3MDExM0Q0OTFBOERCMDkzMDAzODQ4QzQgLyogSXRlcmF0b3JP
cGVyYXRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEl0ZXJh
dG9yT3BlcmF0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MTk3LDYg
KzYxOTksNyBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMEYyNEU1M0IxN0VBOUY1OTAwQUJCMjE3
IC8qIEFzc2VtYmx5SGVscGVycy5jcHAgKi8sCiAJCQkJMEYyNEU1M0MxN0VBOUY1OTAwQUJCMjE3
IC8qIEFzc2VtYmx5SGVscGVycy5oICovLAorCQkJCTZCNzY3RTdBMjY3OTFGMjcwMDE3RjhEMSAv
KiBBc3NlbWJseUhlbHBlcnNTcG9vbGVycy5oICovLAogCQkJCTcyMzk5OEY2MjY1REJDREIwMDU3
ODY3RiAvKiBCYXNlbGluZUpJVFBsYW4uY3BwICovLAogCQkJCTcyMzk5OEY1MjY1REJDREIwMDU3
ODY3RiAvKiBCYXNlbGluZUpJVFBsYW4uaCAqLywKIAkJCQkwRjY0QjI2RjFBNzg0QkFGMDA2RTRF
NjYgLyogQmluYXJ5U3dpdGNoLmNwcCAqLywKQEAgLTkxNTEsNiArOTE1NCw3IEBACiAJCQkJRkU5
MTJCNTEyNTMxMUFEMTAwRkFCRERGIC8qIEFic3RyYWN0U2xvdFZpc2l0b3JJbmxpbmVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1MzRFMDM0RTFFNEQ0QjE2MDAyMTNGNjQgLyogQWNjZXNzQ2FzZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRTNCRkQwQkMxREFGODA4RTAwNjVERUEyIC8qIEFjY2Vzc0Nh
c2VTbmlwcGV0UGFyYW1zLmggaW4gSGVhZGVycyAqLywKKwkJCQk2Qjc2N0U3QjI2NzkxRjI3MDAx
N0Y4RDEgLyogQXNzZW1ibHlIZWxwZXJzU3Bvb2xlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUz
NzBCNEY2MUJGMjYyMDUwMDVDNDBGQyAvKiBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdh
dGNocG9pbnRCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MTY4QkQ4NzI0NDdCQTRFMDA4MEZG
QjQgLyogQWdncmVnYXRlRXJyb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTkxOEUxNUMzMjQ0N0Iy
MjcwMDQ0N0E1NiAvKiBBZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyLmgJKHJldmlzaW9uIDI3ODg4NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzM3LDcgKzMzNyw3IEBAIHB1
YmxpYzoKICAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihzaXplb2YoZG91YmxlKSksIHN0YWNr
UG9pbnRlclJlZ2lzdGVyKTsKICAgICB9CiAgICAgCi0gICAgc3RhdGljIHB0cmRpZmZfdCBwdXNo
VG9TYXZlQnl0ZU9mZnNldCgpIHsgcmV0dXJuIHNpemVvZih2b2lkKik7IH0KKyAgICBzdGF0aWMg
Y29uc3RleHByIHB0cmRpZmZfdCBwdXNoVG9TYXZlQnl0ZU9mZnNldCgpIHsgcmV0dXJuIHNpemVv
Zih2b2lkKik7IH0KICNlbmRpZiAvLyAhQ1BVKEFSTTY0KQogCiAjaWYgQ1BVKFg4Nl82NCkgfHwg
Q1BVKEFSTTY0KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckFSTTY0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgJKHJldmlzaW9uIDI3ODg4NikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNTA0LDcgKzI1MDQsNyBAQCBwdWJsaWM6CiAgICAgICAgIHN0b3JlRG91YmxlKHNy
Yywgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgIH0KIAotICAgIHN0YXRpYyBwdHJkaWZmX3Qg
cHVzaFRvU2F2ZUJ5dGVPZmZzZXQoKSB7IHJldHVybiAxNjsgfQorICAgIHN0YXRpYyBjb25zdGV4
cHIgcHRyZGlmZl90IHB1c2hUb1NhdmVCeXRlT2Zmc2V0KCkgeyByZXR1cm4gMTY7IH0KIAogICAg
IC8vIFJlZ2lzdGVyIG1vdmUgb3BlcmF0aW9uczoKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPU1JFeGl0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09TUkV4aXQuY3BwCShyZXZpc2lvbiAyNzg4ODYpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3
IEBACiAKICNpZiBFTkFCTEUoREZHX0pJVCkKIAotI2luY2x1ZGUgIkFzc2VtYmx5SGVscGVycy5o
IgorI2luY2x1ZGUgIkFzc2VtYmx5SGVscGVyc1Nwb29sZXJzLmgiCiAjaW5jbHVkZSAiQnl0ZWNv
ZGVTdHJ1Y3RzLmgiCiAjaW5jbHVkZSAiQ2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGUuaCIKICNp
bmNsdWRlICJERkdHcmFwaC5oIgpAQCAtNTYyLDEzICs1NjIsMTkgQEAgdm9pZCBPU1JFeGl0Ojpj
b21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIAogICAgIC8vIGRvIHRoaXMgZXZlbiBmb3Igc3RhdGUg
dGhhdCdzIGFscmVhZHkgaW4gdGhlIHJpZ2h0IHBsYWNlIG9uIHRoZSBzdGFjay4KICAgICAvLyBJ
dCBtYWtlcyB0aGluZ3Mgc2ltcGxlciBsYXRlci4KIAorICAgIGJvb2wgaW5saW5lU3RhY2tDb250
YWluc0FjdGl2ZUNoZWNrcG9pbnQgPSBleGl0Lm1fY29kZU9yaWdpbi5pbmxpbmVTdGFja0NvbnRh
aW5zQWN0aXZlQ2hlY2twb2ludCgpOworICAgIHNpemVfdCBmaXJzdFRtcFRvUmVzdG9yZUVhcmx5
ID0gb3BlcmFuZHMuc2l6ZSgpIC0gb3BlcmFuZHMubnVtYmVyT2ZUbXBzKCk7CisgICAgaWYgKCFp
bmxpbmVTdGFja0NvbnRhaW5zQWN0aXZlQ2hlY2twb2ludCkKKyAgICAgICAgZmlyc3RUbXBUb1Jl
c3RvcmVFYXJseSA9IG9wZXJhbmRzLnNpemUoKTsgLy8gRG9uJ3QgZWFnZXJseSByZXN0b3JlLgor
CiAgICAgLy8gVGhlIHRhZyByZWdpc3RlcnMgYXJlIG5lZWRlZCB0byBtYXRlcmlhbGl6ZSByZWNv
dmVyaWVzIGJlbG93LgogICAgIGppdC5lbWl0TWF0ZXJpYWxpemVUYWdDaGVja1JlZ2lzdGVycygp
OwogCiAgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG9wZXJhbmRzLnNpemUoKTsg
KytpbmRleCkgewogICAgICAgICBjb25zdCBWYWx1ZVJlY292ZXJ5JiByZWNvdmVyeSA9IG9wZXJh
bmRzW2luZGV4XTsKIAotICAgICAgICBzd2l0Y2ggKHJlY292ZXJ5LnRlY2huaXF1ZSgpKSB7Cisg
ICAgICAgIGF1dG8gY3VycmVudFRlY2huaXF1ZSA9IHJlY292ZXJ5LnRlY2huaXF1ZSgpOworICAg
ICAgICBzd2l0Y2ggKGN1cnJlbnRUZWNobmlxdWUpIHsKICAgICAgICAgY2FzZSBEaXNwbGFjZWRJ
bkpTU3RhY2s6CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgY2FzZSBDZWxsRGlzcGxhY2Vk
SW5KU1N0YWNrOgpAQCAtNTk0LDkgKzYwMCwxMiBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVFeGl0
KENDYWxsSGVscGVycyYgCiAKICAgICAgICAgY2FzZSBDb25zdGFudDogewogI2lmIFVTRShKU1ZB
TFVFNjQpCi0gICAgICAgICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW02
NChKU1ZhbHVlOjplbmNvZGUocmVjb3ZlcnkuY29uc3RhbnQoKSkpLCBHUFJJbmZvOjpyZWdUMCk7
Ci0gICAgICAgICAgICBqaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwgc2NyYXRjaCArIGluZGV4
KTsKLSNlbHNlCisgICAgICAgICAgICBpZiAoaW5kZXggPj0gZmlyc3RUbXBUb1Jlc3RvcmVFYXJs
eSkgeworICAgICAgICAgICAgICAgIEFTU0VSVChvcGVyYW5kcy5vcGVyYW5kRm9ySW5kZXgoaW5k
ZXgpLmlzVG1wKCkpOworICAgICAgICAgICAgICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6
VHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShyZWNvdmVyeS5jb25zdGFudCgpKSksIEdQUklu
Zm86OnJlZ1QwKTsKKyAgICAgICAgICAgICAgICBqaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwg
c2NyYXRjaCArIGluZGV4KTsKKyAgICAgICAgICAgIH0KKyNlbHNlIC8vIG5vdCBVU0UoSlNWQUxV
RTY0KQogICAgICAgICAgICAgaml0LnN0b3JlMzIoCiAgICAgICAgICAgICAgICAgQXNzZW1ibHlI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIocmVjb3ZlcnkuY29uc3RhbnQoKS50YWcoKSksCiAgICAgICAg
ICAgICAgICAgJmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCAr
IGluZGV4KS0+YXNCaXRzLnRhZyk7CkBAIC03NjYsNyArNzc1LDcgQEAgdm9pZCBPU1JFeGl0Ojpj
b21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIAogICAgIGlmIChleGl0LmlzRXhjZXB0aW9uSGFuZGxl
cigpKQogICAgICAgICBqaXQuY29weUNhbGxlZVNhdmVzVG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNC
dWZmZXIodm0udG9wRW50cnlGcmFtZSk7CiAKLSAgICBpZiAoZXhpdC5tX2NvZGVPcmlnaW4uaW5s
aW5lU3RhY2tDb250YWluc0FjdGl2ZUNoZWNrcG9pbnQoKSkgeworICAgIGlmIChpbmxpbmVTdGFj
a0NvbnRhaW5zQWN0aXZlQ2hlY2twb2ludCkgewogICAgICAgICBFbmNvZGVkSlNWYWx1ZSogdG1w
U2NyYXRjaCA9IHNjcmF0Y2ggKyBvcGVyYW5kcy50bXBJbmRleCgwKTsKICAgICAgICAgaml0LnNl
dHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbk1hdGVyaWFsaXplT1NSRXhpdFNpZGVTdGF0
ZSk+KCZ2bSwgJmV4aXQsIHRtcFNjcmF0Y2gpOwogICAgICAgICBqaXQucHJlcGFyZUNhbGxPcGVy
YXRpb24odm0pOwpAQCAtNzc2LDYgKzc4NSwxNiBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVFeGl0
KENDYWxsSGVscGVycyYgCiAKICAgICAvLyBEbyBhbGwgZGF0YSBmb3JtYXQgY29udmVyc2lvbnMg
YW5kIHN0b3JlIHRoZSByZXN1bHRzIGludG8gdGhlIHN0YWNrLgogCisjaWYgVVNFKEpTVkFMVUU2
NCkKKyAgICBjb25zdGV4cHIgR1BSUmVnIHNyY0J1ZmZlckdQUiA9IEdQUkluZm86OnJlZ1QyOwor
ICAgIGNvbnN0ZXhwciBHUFJSZWcgZGVzdEJ1ZmZlckdQUiA9IEdQUkluZm86OnJlZ1QzOworICAg
IGNvbnN0ZXhwciBHUFJSZWcgdW5kZWZpbmVkR1BSID0gR1BSSW5mbzo6cmVnVDQ7CisgICAgYm9v
bCB1bmRlZmluZWRHUFJJc0luaXRpYWxpemVkID0gZmFsc2U7CisKKyAgICBqaXQubW92ZShDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc2NyYXRjaCksIHNyY0J1ZmZlckdQUik7CisgICAgaml0
Lm1vdmUoQ0NhbGxIZWxwZXJzOjpmcmFtZVBvaW50ZXJSZWdpc3RlciwgZGVzdEJ1ZmZlckdQUik7
CisgICAgQ0NhbGxIZWxwZXJzOjpDb3B5U3Bvb2xlciBzcG9vbGVyKENDYWxsSGVscGVyczo6Q29w
eVNwb29sZXI6OkJ1ZmZlclJlZ3M6OkFsbG93TW9kaWZpY2F0aW9uLCBqaXQsIHNyY0J1ZmZlckdQ
UiwgZGVzdEJ1ZmZlckdQUiwgR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QxKTsKKyNlbmRp
ZgogICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBvcGVyYW5kcy5zaXplKCk7ICsr
aW5kZXgpIHsKICAgICAgICAgY29uc3QgVmFsdWVSZWNvdmVyeSYgcmVjb3ZlcnkgPSBvcGVyYW5k
c1tpbmRleF07CiAgICAgICAgIE9wZXJhbmQgb3BlcmFuZCA9IG9wZXJhbmRzLm9wZXJhbmRGb3JJ
bmRleChpbmRleCk7CkBAIC03ODYsNiArODA1LDIzIEBAIHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4
aXQoQ0NhbGxIZWxwZXJzJiAKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIHN3aXRj
aCAocmVjb3ZlcnkudGVjaG5pcXVlKCkpIHsKKyAgICAgICAgY2FzZSBDb25zdGFudDogeworI2lm
IFVTRShKU1ZBTFVFNjQpCisgICAgICAgICAgICBFbmNvZGVkSlNWYWx1ZSBjdXJyZW50Q29uc3Rh
bnQgPSBKU1ZhbHVlOjplbmNvZGUocmVjb3ZlcnkuY29uc3RhbnQoKSk7CisgICAgICAgICAgICBp
ZiAoY3VycmVudENvbnN0YW50ID09IGVuY29kZWRKU1VuZGVmaW5lZCgpKSB7CisgICAgICAgICAg
ICAgICAgaWYgKCF1bmRlZmluZWRHUFJJc0luaXRpYWxpemVkKSB7CisgICAgICAgICAgICAgICAg
ICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KGVuY29kZWRKU1VuZGVmaW5l
ZCgpKSwgdW5kZWZpbmVkR1BSKTsKKyAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkR1BSSXNJ
bml0aWFsaXplZCA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHNw
b29sZXIuY29weUdQUih1bmRlZmluZWRHUFIpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICAgICAgc3Bvb2xlci5tb3ZlQ29uc3RhbnQoY3VycmVudENvbnN0YW50KTsKKyAgICAgICAg
ICAgIHNwb29sZXIuc3RvcmVHUFIob3BlcmFuZC52aXJ0dWFsUmVnaXN0ZXIoKS5vZmZzZXQoKSAq
IHNpemVvZihDUFVSZWdpc3RlcikpOworICAgICAgICAgICAgYnJlYWs7CisjZWxzZQorICAgICAg
ICAgICAgRkFMTFRIUk9VR0g7CisjZW5kaWYKKyAgICAgICAgfQogICAgICAgICBjYXNlIERpc3Bs
YWNlZEluSlNTdGFjazoKICAgICAgICAgY2FzZSBCb29sZWFuRGlzcGxhY2VkSW5KU1N0YWNrOgog
ICAgICAgICBjYXNlIEludDMyRGlzcGxhY2VkSW5KU1N0YWNrOgpAQCAtNzk1LDcgKzgzMSw2IEBA
IHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiAKICAgICAgICAgY2FzZSBV
bmJveGVkSW50MzJJbkdQUjoKICAgICAgICAgY2FzZSBVbmJveGVkQ2VsbEluR1BSOgogICAgICAg
ICBjYXNlIFVuYm94ZWREb3VibGVJbkZQUjoKLSAgICAgICAgY2FzZSBDb25zdGFudDoKICAgICAg
ICAgY2FzZSBJbkZQUjoKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBjYXNlIEluR1BSOgpA
QCAtODAzLDggKzgzOCw4IEBAIHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJz
JiAKICAgICAgICAgY2FzZSBJbnQ1MkRpc3BsYWNlZEluSlNTdGFjazoKICAgICAgICAgY2FzZSBV
bmJveGVkU3RyaWN0SW50NTJJbkdQUjoKICAgICAgICAgY2FzZSBTdHJpY3RJbnQ1MkRpc3BsYWNl
ZEluSlNTdGFjazoKLSAgICAgICAgICAgIGppdC5sb2FkNjQoc2NyYXRjaCArIGluZGV4LCBHUFJJ
bmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBqaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwgQXNz
ZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQpKTsKKyAgICAgICAgICAgIHNwb29sZXIu
bG9hZEdQUihpbmRleCAqIHNpemVvZihDUFVSZWdpc3RlcikpOworICAgICAgICAgICAgc3Bvb2xl
ci5zdG9yZUdQUihvcGVyYW5kLnZpcnR1YWxSZWdpc3RlcigpLm9mZnNldCgpICogc2l6ZW9mKENQ
VVJlZ2lzdGVyKSk7CiAgICAgICAgICAgICBicmVhazsKICNlbHNlIC8vIG5vdCBVU0UoSlNWQUxV
RTY0KQogICAgICAgICBjYXNlIEluUGFpcjoKQEAgLTgzMyw2ICs4NjgsOSBAQCB2b2lkIE9TUkV4
aXQ6OmNvbXBpbGVFeGl0KENDYWxsSGVscGVycyYgCiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgIH0KKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIHNwb29sZXIuZmx1c2hHUFIoKTsK
KyNlbmRpZgogCiAgICAgLy8gTm93IHRoYXQgdGhpbmdzIG9uIHRoZSBzdGFjayBhcmUgcmVjb3Zl
cmVkLCBkbyB0aGUgYXJndW1lbnRzIHJlY292ZXJ5LiBXZSBhc3N1bWUgdGhhdCBhcmd1bWVudHMK
ICAgICAvLyByZWNvdmVyaWVzIGRvbid0IHJlY3Vyc2l2ZWx5IHJlZmVyIHRvIGVhY2ggb3RoZXIu
IEJ1dCwgd2UgZG9uJ3QgdHJ5IHRvIGFzc3VtZSB0aGF0IHRoZXkgb25seQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9u
LmNwcAkocmV2aXNpb24gMjc4ODg2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODQsNyArMjg0LDcg
QEAgdm9pZCByZWlmeUlubGluZWRDYWxsRnJhbWVzKENDYWxsSGVscGVycwogICAgICAgICAgICAg
aml0LmFkZFB0cihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihzaXplb2YoQ2FsbGVyRnJh
bWVBbmRQQykpLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6cmVnVDIpOwog
ICAgICAgICAgICAgaml0LnVudGFnUHRyKEdQUkluZm86OnJlZ1QyLCBHUFJJbmZvOjpyZWdUMyk7
CiAgICAgICAgICAgICBqaXQuYWRkUHRyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKGlu
bGluZUNhbGxGcmFtZS0+cmV0dXJuUENPZmZzZXQoKSArIHNpemVvZih2b2lkKikpLCBHUFJJbmZv
OjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6cmVnVDIpOwotICAgICAgICAgICAgaml0LnZh
bGlkYXRlVW50YWdnZWRQdHIoR1BSSW5mbzo6cmVnVDMsIEdQUkluZm86Om5vbkFyZ0dQUjApOwor
ICAgICAgICAgICAgaml0LnZhbGlkYXRlVW50YWdnZWRQdHIoR1BSSW5mbzo6cmVnVDMsIEdQUklu
Zm86OnJlZ1Q0KTsKICAgICAgICAgICAgIGppdC50YWdQdHIoR1BSSW5mbzo6cmVnVDIsIEdQUklu
Zm86OnJlZ1QzKTsKICNlbmRpZgogICAgICAgICAgICAgaml0LnN0b3JlUHRyKEdQUkluZm86OnJl
Z1QzLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3JCeXRlT2Zmc2V0KGlubGluZUNhbGxGcmFt
ZS0+cmV0dXJuUENPZmZzZXQoKSkpOwpAQCAtMzA1LDkgKzMwNSw5IEBAIHZvaWQgcmVpZnlJbmxp
bmVkQ2FsbEZyYW1lcyhDQ2FsbEhlbHBlcnMKIAogI2lmIENQVShBUk02NEUpCiAgICAgICAgICAg
ICBqaXQuYWRkUHRyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKGlubGluZUNhbGxGcmFt
ZS0+cmV0dXJuUENPZmZzZXQoKSArIHNpemVvZih2b2lkKikpLCBHUFJJbmZvOjpjYWxsRnJhbWVS
ZWdpc3RlciwgR1BSSW5mbzo6cmVnVDIpOwotICAgICAgICAgICAgaml0Lm1vdmUoQXNzZW1ibHlI
ZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGp1bXBUYXJnZXQudW50YWdnZWRFeGVjdXRhYmxlQWRkcmVz
cygpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7Ci0gICAgICAgICAgICBqaXQudGFnUHRyKEdQUklu
Zm86OnJlZ1QyLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKLSAgICAgICAgICAgIGppdC5zdG9yZVB0
cihHUFJJbmZvOjpub25BcmdHUFIwLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3JCeXRlT2Zm
c2V0KGlubGluZUNhbGxGcmFtZS0+cmV0dXJuUENPZmZzZXQoKSkpOworICAgICAgICAgICAgaml0
Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGp1bXBUYXJnZXQudW50YWdnZWRF
eGVjdXRhYmxlQWRkcmVzcygpKSwgR1BSSW5mbzo6cmVnVDQpOworICAgICAgICAgICAgaml0LnRh
Z1B0cihHUFJJbmZvOjpyZWdUMiwgR1BSSW5mbzo6cmVnVDQpOworICAgICAgICAgICAgaml0LnN0
b3JlUHRyKEdQUkluZm86OnJlZ1Q0LCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3JCeXRlT2Zm
c2V0KGlubGluZUNhbGxGcmFtZS0+cmV0dXJuUENPZmZzZXQoKSkpOwogI2Vsc2UKICAgICAgICAg
ICAgIGppdC5zdG9yZVB0cihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoanVtcFRhcmdl
dC51bnRhZ2dlZEV4ZWN1dGFibGVBZGRyZXNzKCkpLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NG
b3JCeXRlT2Zmc2V0KGlubGluZUNhbGxGcmFtZS0+cmV0dXJuUENPZmZzZXQoKSkpOwogI2VuZGlm
CkBAIC0zMTgsMTEgKzMxOCwxMSBAQCB2b2lkIHJlaWZ5SW5saW5lZENhbGxGcmFtZXMoQ0NhbGxI
ZWxwZXJzCiAgICAgICAgIC8vIFJlc3RvcmUgdGhlIGlubGluZSBjYWxsIGZyYW1lJ3MgY2FsbGVl
IHNhdmUgcmVnaXN0ZXJzLgogICAgICAgICAvLyBJZiB0aGlzIGlubGluZWQgZnJhbWUgaXMgYSB0
YWlsIGNhbGwgdGhhdCB3aWxsIHJldHVybiBiYWNrIHRvIHRoZSBvcmlnaW5hbCBjYWxsZXIsIHdl
IG5lZWQgdG8KICAgICAgICAgLy8gY29weSB0aGUgcHJpb3IgY29udGVudHMgb2YgdGhlIHRhZyBy
ZWdpc3RlcnMgYWxyZWFkeSBzYXZlZCBmb3IgdGhlIG91dGVyIGZyYW1lIHRvIHRoaXMgZnJhbWUu
Ci0gICAgICAgIGppdC5lbWl0U2F2ZU9yQ29weUNhbGxlZVNhdmVzRm9yKAorICAgICAgICBqaXQu
ZW1pdFNhdmVPckNvcHlMTEludEJhc2VsaW5lQ2FsbGVlU2F2ZXNGb3IoCiAgICAgICAgICAgICBi
YXNlbGluZUNvZGVCbG9jaywKICAgICAgICAgICAgIHN0YXRpY19jYXN0PFZpcnR1YWxSZWdpc3Rl
cj4oaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCksCiAgICAgICAgICAgICB0cnVlQ2FsbGVy
ID8gQXNzZW1ibHlIZWxwZXJzOjpVc2VFeGlzdGluZ1RhZ1JlZ2lzdGVyQ29udGVudHMgOiBBc3Nl
bWJseUhlbHBlcnM6OkNvcHlCYXNlbGluZUNhbGxlZVNhdmVkUmVnaXN0ZXJzRnJvbUJhc2VGcmFt
ZSwKLSAgICAgICAgICAgIEdQUkluZm86OnJlZ1QyKTsKKyAgICAgICAgICAgIEdQUkluZm86OnJl
Z1QyLCBHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVnVDQpOwogCiAgICAgICAgIGlmIChjYWxs
ZXJJc0xMSW50KSB7CiAgICAgICAgICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrRm9y
Q2FsbGVyID0gaml0LmJhc2VsaW5lQ29kZUJsb2NrRm9yKCp0cnVlQ2FsbGVyKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5jcHAJKHJldmlzaW9uIDI3ODg4NikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKERGR19KSVQpCiAKKyNpbmNsdWRlICJBc3Nl
bWJseUhlbHBlcnNTcG9vbGVycy5oIgogI2luY2x1ZGUgIkNDYWxsSGVscGVycy5oIgogI2luY2x1
ZGUgIkRGR0pJVENvZGUuaCIKICNpbmNsdWRlICJERkdPU1JFeGl0LmgiCkBAIC00OSwzNCArNTAs
NzMgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBvcwogICAgIHNpemVf
dCBzY3JhdGNoU2l6ZSA9IHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgKiAoR1BSSW5mbzo6bnVtYmVy
T2ZSZWdpc3RlcnMgKyBGUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyk7CiAgICAgU2NyYXRjaEJ1
ZmZlciogc2NyYXRjaEJ1ZmZlciA9IHZtLnNjcmF0Y2hCdWZmZXJGb3JTaXplKHNjcmF0Y2hTaXpl
KTsKICAgICBFbmNvZGVkSlNWYWx1ZSogYnVmZmVyID0gc3RhdGljX2Nhc3Q8RW5jb2RlZEpTVmFs
dWUqPihzY3JhdGNoQnVmZmVyLT5kYXRhQnVmZmVyKCkpOwotICAgIAotICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVyczsgKytpKSB7CisKKyNpZiBD
UFUoQVJNNjQpCisgICAgY29uc3RleHByIEdQUlJlZyBidWZmZXJHUFIgPSBDQ2FsbEhlbHBlcnM6
Om1lbW9yeVRlbXBSZWdpc3RlcjsKKyAgICBjb25zdGV4cHIgdW5zaWduZWQgZmlyc3RHUFIgPSAw
OworI2VsaWYgQ1BVKFg4Nl82NCkKKyAgICBHUFJSZWcgYnVmZmVyR1BSID0gaml0LnNjcmF0Y2hS
ZWdpc3RlcigpOworICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBmaXJzdEdQUiA9IDA7CisjZWxzZQor
ICAgIEdQUlJlZyBidWZmZXJHUFIgPSBHUFJJbmZvOjp0b1JlZ2lzdGVyKDApOworICAgIGNvbnN0
ZXhwciB1bnNpZ25lZCBmaXJzdEdQUiA9IDE7CisjZW5kaWYKKworICAgIGlmIGNvbnN0ZXhwciAo
Zmlyc3RHUFIpIHsKKyAgICAgICAgLy8gV2UncmUgdXNpbmcgdGhlIGZpcnN0R1BSIGFzIHRoZSBi
dWZmZXJHUFIsIGFuZCBuZWVkIHRvIHNhdmUgaXQgbWFudWFsbHkuCisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzID49IDEpOworICAgICAgICBSRUxFQVNF
X0FTU0VSVChidWZmZXJHUFIgPT0gR1BSSW5mbzo6dG9SZWdpc3RlcigwKSk7CiAjaWYgVVNFKEpT
VkFMVUU2NCkKLSAgICAgICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6dG9SZWdpc3RlcihpKSwgYnVm
ZmVyICsgaSk7CisgICAgICAgIGppdC5zdG9yZTY0KGJ1ZmZlckdQUiwgYnVmZmVyKTsKICNlbHNl
Ci0gICAgICAgIGppdC5zdG9yZTMyKEdQUkluZm86OnRvUmVnaXN0ZXIoaSksIGJ1ZmZlciArIGkp
OworICAgICAgICBqaXQuc3RvcmUzMihidWZmZXJHUFIsIGJ1ZmZlcik7CiAjZW5kaWYKICAgICB9
CisKKyAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoYnVmZmVyKSwgYnVm
ZmVyR1BSKTsKKworICAgIENDYWxsSGVscGVyczo6U3RvcmVSZWdTcG9vbGVyIHN0b3JlU3Bvb2xl
cihqaXQsIGJ1ZmZlckdQUik7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBmaXJzdEdQUjsgaSA8
IEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyArK2kpIHsKKyAgICAgICAgcHRyZGlmZl90IG9m
ZnNldCA9IGkgKiBzaXplb2YoQ1BVUmVnaXN0ZXIpOworICAgICAgICBzdG9yZVNwb29sZXIuc3Rv
cmVHUFIoeyBHUFJJbmZvOjp0b1JlZ2lzdGVyKGkpLCBvZmZzZXQgfSk7CisgICAgfQorICAgIHN0
b3JlU3Bvb2xlci5mbHVzaEdQUigpOworCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEZQ
UkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyArK2kpIHsKLSAgICAgICAgaml0Lm1vdmUoTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoYnVmZmVyICsgR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3Rl
cnMgKyBpKSwgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICBqaXQuc3RvcmVEb3VibGUoRlBSSW5m
bzo6dG9SZWdpc3RlcihpKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAp
KTsKKyAgICAgICAgcHRyZGlmZl90IG9mZnNldCA9IChHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVy
cyArIGkpICogc2l6ZW9mKGRvdWJsZSk7CisgICAgICAgIHN0b3JlU3Bvb2xlci5zdG9yZUZQUih7
IEZQUkluZm86OnRvUmVnaXN0ZXIoaSksIG9mZnNldCB9KTsKICAgICB9Ci0gICAgCisgICAgc3Rv
cmVTcG9vbGVyLmZsdXNoRlBSKCk7CisKICAgICAvLyBTZXQgdXAgb25lIGFyZ3VtZW50LgogICAg
IGppdC5tb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAKICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6Q2FsbCBmdW5jdGlvbkNhbGwgPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOwogCisg
ICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGJ1ZmZlciksIGJ1ZmZlckdQ
Uik7CisgICAgQ0NhbGxIZWxwZXJzOjpMb2FkUmVnU3Bvb2xlciBsb2FkbFNwb29sZXIoaml0LCBi
dWZmZXJHUFIpOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gZmlyc3RHUFI7IGkgPCBHUFJJbmZv
OjpudW1iZXJPZlJlZ2lzdGVyczsgKytpKSB7CisgICAgICAgIHB0cmRpZmZfdCBvZmZzZXQgPSBp
ICogc2l6ZW9mKENQVVJlZ2lzdGVyKTsKKyAgICAgICAgbG9hZGxTcG9vbGVyLmxvYWRHUFIoeyBH
UFJJbmZvOjp0b1JlZ2lzdGVyKGkpLCBvZmZzZXQgfSk7CisgICAgfQorICAgIGxvYWRsU3Bvb2xl
ci5mbHVzaEdQUigpOworCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEZQUkluZm86Om51
bWJlck9mUmVnaXN0ZXJzOyArK2kpIHsKLSAgICAgICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW1QdHIoYnVmZmVyICsgR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgKyBpKSwg
R1BSSW5mbzo6cmVnVDApOwotICAgICAgICBqaXQubG9hZERvdWJsZShNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCksIEZQUkluZm86OnRvUmVnaXN0ZXIoaSkpOworICAgICAg
ICBwdHJkaWZmX3Qgb2Zmc2V0ID0gKEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzICsgaSkgKiBz
aXplb2YoZG91YmxlKTsKKyAgICAgICAgbG9hZGxTcG9vbGVyLmxvYWRGUFIoeyBGUFJJbmZvOjp0
b1JlZ2lzdGVyKGkpLCBvZmZzZXQgfSk7CiAgICAgfQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVyczsgKytpKSB7CisgICAgbG9hZGxTcG9vbGVy
LmZsdXNoRlBSKCk7CisKKyAgICBpZiBjb25zdGV4cHIgKGZpcnN0R1BSKSB7CisgICAgICAgIC8v
IFdlJ3JlIHVzaW5nIHRoZSBmaXJzdEdQUiBhcyB0aGUgYnVmZmVyR1BSLCBhbmQgbmVlZCB0byBy
ZXN0b3JlIGl0IG1hbnVhbGx5LgorICAgICAgICBBU1NFUlQoYnVmZmVyR1BSID09IEdQUkluZm86
OnRvUmVnaXN0ZXIoMCkpOwogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIGppdC5sb2FkNjQo
YnVmZmVyICsgaSwgR1BSSW5mbzo6dG9SZWdpc3RlcihpKSk7CisgICAgICAgIGppdC5sb2FkNjQo
YnVmZmVyLCBidWZmZXJHUFIpOwogI2Vsc2UKLSAgICAgICAgaml0LmxvYWQzMihidWZmZXIgKyBp
LCBHUFJJbmZvOjp0b1JlZ2lzdGVyKGkpKTsKKyAgICAgICAgaml0LmxvYWQzMihidWZmZXIsIGJ1
ZmZlckdQUik7CiAjZW5kaWYKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMU2F2ZVJlc3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMU2F2ZVJlc3RvcmUuY3BwCShyZXZpc2lvbiAyNzg4ODYpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTFNhdmVSZXN0b3JlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
OCw5ICsyOCwxMCBAQAogCiAjaWYgRU5BQkxFKEZUTF9KSVQpCiAKKyNpbmNsdWRlICJBc3NlbWJs
eUhlbHBlcnNTcG9vbGVycy5oIgogI2luY2x1ZGUgIkZQUkluZm8uaCIKICNpbmNsdWRlICJHUFJJ
bmZvLmgiCi0jaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKKyNpbmNsdWRlICJSZWcuaCIKICNp
bmNsdWRlICJSZWdpc3RlclNldC5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7
CkBAIC03Nyw3MCArNzgsMTA0IEBAIHN0cnVjdCBSZWdzIHsKICAgICB7CiAgICAgICAgIHNwZWNp
YWwgPSBSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKTsKICAgICAgICAgc3BlY2lhbC5tZXJn
ZShSZWdpc3RlclNldDo6cmVzZXJ2ZWRIYXJkd2FyZVJlZ2lzdGVycygpKTsKLSAgICAgICAgCisK
ICAgICAgICAgZmlyc3QgPSBNYWNyb0Fzc2VtYmxlcjo6Zmlyc3RSZWdpc3RlcigpOwogICAgICAg
ICB3aGlsZSAoc3BlY2lhbC5nZXQoZmlyc3QpKQogICAgICAgICAgICAgZmlyc3QgPSBNYWNyb0Fz
c2VtYmxlcjo6bmV4dFJlZ2lzdGVyKGZpcnN0KTsKLSAgICAgICAgc2Vjb25kID0gTWFjcm9Bc3Nl
bWJsZXI6Om5leHRSZWdpc3RlcihmaXJzdCk7Ci0gICAgICAgIHdoaWxlIChzcGVjaWFsLmdldChz
ZWNvbmQpKQotICAgICAgICAgICAgc2Vjb25kID0gTWFjcm9Bc3NlbWJsZXI6Om5leHRSZWdpc3Rl
cihzZWNvbmQpOwogICAgIH0KLSAgICAKKworICAgIEdQUlJlZyBuZXh0UmVnaXN0ZXIoR1BSUmVn
IGN1cnJlbnQpCisgICAgeworICAgICAgICBhdXRvIG5leHQgPSBNYWNyb0Fzc2VtYmxlcjo6bmV4
dFJlZ2lzdGVyKGN1cnJlbnQpOworICAgICAgICB3aGlsZSAoc3BlY2lhbC5nZXQobmV4dCkpCisg
ICAgICAgICAgICBuZXh0ID0gTWFjcm9Bc3NlbWJsZXI6Om5leHRSZWdpc3RlcihuZXh0KTsKKyAg
ICAgICAgcmV0dXJuIG5leHQ7CisgICAgfQorCisgICAgRlBSUmVnIG5leHRGUFJlZ2lzdGVyKEZQ
UlJlZyBjdXJyZW50KQorICAgIHsKKyAgICAgICAgYXV0byBuZXh0ID0gTWFjcm9Bc3NlbWJsZXI6
Om5leHRGUFJlZ2lzdGVyKGN1cnJlbnQpOworICAgICAgICB3aGlsZSAoc3BlY2lhbC5nZXQobmV4
dCkpCisgICAgICAgICAgICBuZXh0ID0gTWFjcm9Bc3NlbWJsZXI6Om5leHRGUFJlZ2lzdGVyKG5l
eHQpOworICAgICAgICByZXR1cm4gbmV4dDsKKyAgICB9CisKICAgICBSZWdpc3RlclNldCBzcGVj
aWFsOwogICAgIEdQUlJlZyBmaXJzdDsKLSAgICBHUFJSZWcgc2Vjb25kOwogfTsKIAogfSAvLyBh
bm9ueW1vdXMgbmFtZXNwYWNlCiAKLXZvaWQgc2F2ZUFsbFJlZ2lzdGVycyhNYWNyb0Fzc2VtYmxl
ciYgaml0LCBjaGFyKiBzY3JhdGNoTWVtb3J5KQordm9pZCBzYXZlQWxsUmVnaXN0ZXJzKEFzc2Vt
Ymx5SGVscGVycyYgaml0LCBjaGFyKiBzY3JhdGNoTWVtb3J5KQogewogICAgIFJlZ3MgcmVnczsK
ICAgICAKICAgICAvLyBHZXQgdGhlIGZpcnN0IHJlZ2lzdGVyIG91dCBvZiB0aGUgd2F5LCBzbyB0
aGF0IHdlIGNhbiB1c2UgaXQgYXMgYSBwb2ludGVyLgotICAgIGppdC5wb2tlNjQocmVncy5maXJz
dCwgMCk7Ci0gICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoc2NyYXRj
aE1lbW9yeSksIHJlZ3MuZmlyc3QpOwotICAgIAorICAgIEdQUlJlZyBiYXNlR1BSID0gcmVncy5m
aXJzdDsKKyNpZiBDUFUoQVJNNjQpCisgICAgR1BSUmVnIG5leHRHUFIgPSByZWdzLm5leHRSZWdp
c3RlcihiYXNlR1BSKTsKKyAgICBHUFJSZWcgZmlyc3RUb1NhdmVHUFIgPSByZWdzLm5leHRSZWdp
c3RlcihuZXh0R1BSKTsKKyAgICBBU1NFUlQoYmFzZUdQUiA9PSBBUk02NFJlZ2lzdGVyczo6eDAp
OworICAgIEFTU0VSVChuZXh0R1BSID09IEFSTTY0UmVnaXN0ZXJzOjp4MSk7CisjZWxzZQorICAg
IEdQUlJlZyBmaXJzdFRvU2F2ZUdQUiA9IHJlZ3MubmV4dFJlZ2lzdGVyKGJhc2VHUFIpOworI2Vu
ZGlmCisgICAgaml0LnBva2U2NChiYXNlR1BSLCAwKTsKKyAgICBqaXQubW92ZShNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbVB0cihzY3JhdGNoTWVtb3J5KSwgYmFzZUdQUik7CisKKyAgICBBc3Nl
bWJseUhlbHBlcnM6OlN0b3JlUmVnU3Bvb2xlciBzcG9vbGVyKGppdCwgYmFzZUdQUik7CisKICAg
ICAvLyBHZXQgYWxsIG9mIHRoZSBvdGhlciBHUFJzIG91dCBvZiB0aGUgd2F5LgotICAgIGZvciAo
TWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgcmVnID0gcmVncy5zZWNvbmQ7IHJlZyA8PSBNYWNy
b0Fzc2VtYmxlcjo6bGFzdFJlZ2lzdGVyKCk7IHJlZyA9IE1hY3JvQXNzZW1ibGVyOjpuZXh0UmVn
aXN0ZXIocmVnKSkgewotICAgICAgICBpZiAocmVncy5zcGVjaWFsLmdldChyZWcpKQotICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgIGppdC5zdG9yZTY0KHJlZywgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MocmVncy5maXJzdCwgb2Zmc2V0T2ZHUFIocmVnKSkpOwotICAgIH0KKyAgICBmb3Ig
KEdQUlJlZyByZWcgPSBmaXJzdFRvU2F2ZUdQUjsgcmVnIDw9IE1hY3JvQXNzZW1ibGVyOjpsYXN0
UmVnaXN0ZXIoKTsgcmVnID0gcmVncy5uZXh0UmVnaXN0ZXIocmVnKSkKKyAgICAgICAgc3Bvb2xl
ci5zdG9yZUdQUih7IHJlZywgc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihvZmZzZXRPZkdQUihyZWcp
KSB9KTsKKyAgICBzcG9vbGVyLmZsdXNoR1BSKCk7CiAgICAgCiAgICAgLy8gUmVzdG9yZSB0aGUg
Zmlyc3QgcmVnaXN0ZXIgaW50byB0aGUgc2Vjb25kIG9uZSBhbmQgc2F2ZSBpdC4KLSAgICBqaXQu
cGVlazY0KHJlZ3Muc2Vjb25kLCAwKTsKLSAgICBqaXQuc3RvcmU2NChyZWdzLnNlY29uZCwgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVncy5maXJzdCwgb2Zmc2V0T2ZHUFIocmVncy5maXJzdCkp
KTsKKyAgICBqaXQucGVlazY0KGZpcnN0VG9TYXZlR1BSLCAwKTsKKyNpZiBDUFUoQVJNNjQpCisg
ICAgaml0LnN0b3JlUGFpcjY0KGZpcnN0VG9TYXZlR1BSLCBuZXh0R1BSLCBiYXNlR1BSLCBBc3Nl
bWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihvZmZzZXRPZkdQUihiYXNlR1BSKSkpOworI2Vsc2UK
KyAgICBqaXQuc3RvcmU2NChmaXJzdFRvU2F2ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
YmFzZUdQUiwgb2Zmc2V0T2ZHUFIoYmFzZUdQUikpKTsKKyNlbmRpZgogICAgIAogICAgIC8vIEZp
bmFsbHkgc2F2ZSBhbGwgRlBSJ3MuCi0gICAgZm9yIChNYWNyb0Fzc2VtYmxlcjo6RlBSZWdpc3Rl
cklEIHJlZyA9IE1hY3JvQXNzZW1ibGVyOjpmaXJzdEZQUmVnaXN0ZXIoKTsgcmVnIDw9IE1hY3Jv
QXNzZW1ibGVyOjpsYXN0RlBSZWdpc3RlcigpOyByZWcgPSBNYWNyb0Fzc2VtYmxlcjo6bmV4dEZQ
UmVnaXN0ZXIocmVnKSkgewotICAgICAgICBpZiAocmVncy5zcGVjaWFsLmdldChyZWcpKQotICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGppdC5zdG9yZURvdWJsZShyZWcsIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKHJlZ3MuZmlyc3QsIG9mZnNldE9mRlBSKHJlZykpKTsKLSAgICB9Cisg
ICAgZm9yIChNYWNyb0Fzc2VtYmxlcjo6RlBSZWdpc3RlcklEIHJlZyA9IE1hY3JvQXNzZW1ibGVy
OjpmaXJzdEZQUmVnaXN0ZXIoKTsgcmVnIDw9IE1hY3JvQXNzZW1ibGVyOjpsYXN0RlBSZWdpc3Rl
cigpOyByZWcgPSByZWdzLm5leHRGUFJlZ2lzdGVyKHJlZykpCisgICAgICAgIHNwb29sZXIuc3Rv
cmVGUFIoeyByZWcsIHN0YXRpY19jYXN0PHB0cmRpZmZfdD4ob2Zmc2V0T2ZGUFIocmVnKSkgfSk7
CisgICAgc3Bvb2xlci5mbHVzaEZQUigpOwogfQogCi12b2lkIHJlc3RvcmVBbGxSZWdpc3RlcnMo
TWFjcm9Bc3NlbWJsZXImIGppdCwgY2hhciogc2NyYXRjaE1lbW9yeSkKK3ZvaWQgcmVzdG9yZUFs
bFJlZ2lzdGVycyhBc3NlbWJseUhlbHBlcnMmIGppdCwgY2hhciogc2NyYXRjaE1lbW9yeSkKIHsK
ICAgICBSZWdzIHJlZ3M7CiAgICAgCiAgICAgLy8gR2l2ZSBvdXJzZWx2ZXMgYSBwb2ludGVyIHRv
IHRoZSBzY3JhdGNoIG1lbW9yeS4KLSAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbVB0cihzY3JhdGNoTWVtb3J5KSwgcmVncy5maXJzdCk7CisgICAgR1BSUmVnIGJhc2VHUFIg
PSByZWdzLmZpcnN0OworICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
KHNjcmF0Y2hNZW1vcnkpLCBiYXNlR1BSKTsKICAgICAKKyAgICBBc3NlbWJseUhlbHBlcnM6Okxv
YWRSZWdTcG9vbGVyIHNwb29sZXIoaml0LCBiYXNlR1BSKTsKKwogICAgIC8vIFJlc3RvcmUgYWxs
IEZQUidzLgotICAgIGZvciAoTWFjcm9Bc3NlbWJsZXI6OkZQUmVnaXN0ZXJJRCByZWcgPSBNYWNy
b0Fzc2VtYmxlcjo6Zmlyc3RGUFJlZ2lzdGVyKCk7IHJlZyA8PSBNYWNyb0Fzc2VtYmxlcjo6bGFz
dEZQUmVnaXN0ZXIoKTsgcmVnID0gTWFjcm9Bc3NlbWJsZXI6Om5leHRGUFJlZ2lzdGVyKHJlZykp
IHsKLSAgICAgICAgaWYgKHJlZ3Muc3BlY2lhbC5nZXQocmVnKSkKLSAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICBqaXQubG9hZERvdWJsZShNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZWdz
LmZpcnN0LCBvZmZzZXRPZkZQUihyZWcpKSwgcmVnKTsKLSAgICB9Ci0gICAgCi0gICAgZm9yIChN
YWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRCByZWcgPSByZWdzLnNlY29uZDsgcmVnIDw9IE1hY3Jv
QXNzZW1ibGVyOjpsYXN0UmVnaXN0ZXIoKTsgcmVnID0gTWFjcm9Bc3NlbWJsZXI6Om5leHRSZWdp
c3RlcihyZWcpKSB7Ci0gICAgICAgIGlmIChyZWdzLnNwZWNpYWwuZ2V0KHJlZykpCi0gICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgaml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhyZWdzLmZpcnN0LCBvZmZzZXRPZkdQUihyZWcpKSwgcmVnKTsKLSAgICB9Ci0gICAgCi0gICAg
aml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZWdzLmZpcnN0LCBvZmZzZXRPZkdQ
UihyZWdzLmZpcnN0KSksIHJlZ3MuZmlyc3QpOworICAgIGZvciAoTWFjcm9Bc3NlbWJsZXI6OkZQ
UmVnaXN0ZXJJRCByZWcgPSBNYWNyb0Fzc2VtYmxlcjo6Zmlyc3RGUFJlZ2lzdGVyKCk7IHJlZyA8
PSBNYWNyb0Fzc2VtYmxlcjo6bGFzdEZQUmVnaXN0ZXIoKTsgcmVnID0gcmVncy5uZXh0RlBSZWdp
c3RlcihyZWcpKQorICAgICAgICBzcG9vbGVyLmxvYWRGUFIoeyByZWcsIHN0YXRpY19jYXN0PHB0
cmRpZmZfdD4ob2Zmc2V0T2ZGUFIocmVnKSkgfSk7CisgICAgc3Bvb2xlci5mbHVzaEZQUigpOwor
ICAgIAorI2lmIENQVShBUk02NCkKKyAgICBHUFJSZWcgbmV4dEdQUiA9IHJlZ3MubmV4dFJlZ2lz
dGVyKGJhc2VHUFIpOworICAgIEdQUlJlZyBmaXJzdFRvUmVzdG9yZUdQUiA9IHJlZ3MubmV4dFJl
Z2lzdGVyKG5leHRHUFIpOworICAgIEFTU0VSVChiYXNlR1BSID09IEFSTTY0UmVnaXN0ZXJzOjp4
MCk7CisgICAgQVNTRVJUKG5leHRHUFIgPT0gQVJNNjRSZWdpc3RlcnM6OngxKTsKKyNlbHNlCisg
ICAgR1BSUmVnIGZpcnN0VG9SZXN0b3JlR1BSID0gcmVncy5uZXh0UmVnaXN0ZXIoYmFzZUdQUik7
CisjZW5kaWYKKyAgICBmb3IgKE1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEIHJlZyA9IGZpcnN0
VG9SZXN0b3JlR1BSOyByZWcgPD0gTWFjcm9Bc3NlbWJsZXI6Omxhc3RSZWdpc3RlcigpOyByZWcg
PSByZWdzLm5leHRSZWdpc3RlcihyZWcpKQorICAgICAgICBzcG9vbGVyLmxvYWRHUFIoeyByZWcs
IHN0YXRpY19jYXN0PHB0cmRpZmZfdD4ob2Zmc2V0T2ZHUFIocmVnKSkgfSk7CisgICAgc3Bvb2xl
ci5mbHVzaEdQUigpOworCisjaWYgQ1BVKEFSTTY0KQorICAgIGppdC5sb2FkUGFpcjY0KGJhc2VH
UFIsIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKG9mZnNldE9mR1BSKGJhc2VHUFIpKSwg
YmFzZUdQUiwgbmV4dEdQUik7CisjZWxzZQorICAgIGppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoYmFzZUdQUiwgb2Zmc2V0T2ZHUFIoYmFzZUdQUikpLCBiYXNlR1BSKTsKKyNlbmRp
ZgogfQogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6RlRMCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTFNhdmVSZXN0b3JlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExTYXZlUmVzdG9yZS5oCShyZXZpc2lvbiAyNzg4ODYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNhdmVSZXN0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsNyAr
MzMsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgTWFjcm9Bc3NlbWJsZXI7CitjbGFz
cyBBc3NlbWJseUhlbHBlcnM7CiAKIG5hbWVzcGFjZSBGVEwgewogCkBAIC00Niw5ICs0Niw5IEBA
IHNpemVfdCBvZmZzZXRPZkZQUihGUFJSZWcpOwogLy8gQXNzdW1lcyB0aGF0IHRvcC1vZi1zdGFj
ayBjYW4gYmUgdXNlZCBhcyBhIHBvaW50ZXItc2l6ZWQgc2NyYXRjaHBhZC4gU2F2ZXMgYWxsIG9m
CiAvLyB0aGUgcmVnaXN0ZXJzIGludG8gdGhlIHNjcmF0Y2ggYnVmZmVyIHN1Y2ggdGhhdCBSZWdp
c3RlcklEICogc2l6ZW9mKGludDY0X3QpIGlzIHRoZQogLy8gb2Zmc2V0IG9mIGV2ZXJ5IHJlZ2lz
dGVyLgotdm9pZCBzYXZlQWxsUmVnaXN0ZXJzKE1hY3JvQXNzZW1ibGVyJiBqaXQsIGNoYXIqIHNj
cmF0Y2hNZW1vcnkpOwordm9pZCBzYXZlQWxsUmVnaXN0ZXJzKEFzc2VtYmx5SGVscGVycyYgaml0
LCBjaGFyKiBzY3JhdGNoTWVtb3J5KTsKIAotdm9pZCByZXN0b3JlQWxsUmVnaXN0ZXJzKE1hY3Jv
QXNzZW1ibGVyJiBqaXQsIGNoYXIqIHNjcmF0Y2hNZW1vcnkpOwordm9pZCByZXN0b3JlQWxsUmVn
aXN0ZXJzKEFzc2VtYmx5SGVscGVycyYgaml0LCBjaGFyKiBzY3JhdGNoTWVtb3J5KTsKIAogfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OkZUTAogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTFRodW5rcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExUaHVua3MuY3BwCShyZXZpc2lvbiAyNzg4ODYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTFRodW5rcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2lm
IEVOQUJMRShGVExfSklUKQogCi0jaW5jbHVkZSAiQXNzZW1ibHlIZWxwZXJzLmgiCisjaW5jbHVk
ZSAiQXNzZW1ibHlIZWxwZXJzU3Bvb2xlcnMuaCIKICNpbmNsdWRlICJERkdPU1JFeGl0Q29tcGls
ZXJDb21tb24uaCIKICNpbmNsdWRlICJGVExPU1JFeGl0Q29tcGlsZXIuaCIKICNpbmNsdWRlICJG
VExPcGVyYXRpb25zLmgiCkBAIC01NiwzMSArNTYsMzQgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0cgogICAgIH0KICAgICAKICAgICAvLyBOb3RlIHRoYXQgdGhlICJy
ZXR1cm4gYWRkcmVzcyIgd2lsbCBiZSB0aGUgSUQgdGhhdCB3ZSBwYXNzIHRvIHRoZSBnZW5lcmF0
aW9uIGZ1bmN0aW9uLgotICAgIAotICAgIHB0cmRpZmZfdCBzdGFja01pc2FsaWdubWVudCA9IE1h
Y3JvQXNzZW1ibGVyOjpwdXNoVG9TYXZlQnl0ZU9mZnNldCgpOwotICAgIAorCisgICAgY29uc3Rl
eHByIEdQUlJlZyBzdGFja1BvaW50ZXJSZWdpc3RlciA9IE1hY3JvQXNzZW1ibGVyOjpzdGFja1Bv
aW50ZXJSZWdpc3RlcjsKKyAgICBjb25zdGV4cHIgR1BSUmVnIGZyYW1lUG9pbnRlclJlZ2lzdGVy
ID0gTWFjcm9Bc3NlbWJsZXI6OmZyYW1lUG9pbnRlclJlZ2lzdGVyOworICAgIGNvbnN0ZXhwciBw
dHJkaWZmX3QgcHVzaFRvU2F2ZUJ5dGVPZmZzZXQgPSBNYWNyb0Fzc2VtYmxlcjo6cHVzaFRvU2F2
ZUJ5dGVPZmZzZXQoKTsKKyAgICBwdHJkaWZmX3Qgc3RhY2tNaXNhbGlnbm1lbnQgPSBwdXNoVG9T
YXZlQnl0ZU9mZnNldDsKKwogICAgIC8vIFByZXRlbmQgdGhhdCB3ZSdyZSBhIEMgY2FsbCBmcmFt
ZS4KLSAgICBqaXQucHVzaFRvU2F2ZShNYWNyb0Fzc2VtYmxlcjo6ZnJhbWVQb2ludGVyUmVnaXN0
ZXIpOwotICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlciwg
TWFjcm9Bc3NlbWJsZXI6OmZyYW1lUG9pbnRlclJlZ2lzdGVyKTsKLSAgICBzdGFja01pc2FsaWdu
bWVudCArPSBNYWNyb0Fzc2VtYmxlcjo6cHVzaFRvU2F2ZUJ5dGVPZmZzZXQoKTsKLSAgICAKKyAg
ICBqaXQucHVzaFRvU2F2ZShmcmFtZVBvaW50ZXJSZWdpc3Rlcik7CisgICAgaml0Lm1vdmUoc3Rh
Y2tQb2ludGVyUmVnaXN0ZXIsIGZyYW1lUG9pbnRlclJlZ2lzdGVyKTsKKyAgICBzdGFja01pc2Fs
aWdubWVudCArPSBwdXNoVG9TYXZlQnl0ZU9mZnNldDsKKwogICAgIC8vIE5vdyBjcmVhdGUgb3Vy
c2VsdmVzIGVub3VnaCBzdGFjayBzcGFjZSB0byBnaXZlIHNhdmVBbGxSZWdpc3RlcnMoKSBhIHNj
cmF0Y2ggc2xvdC4KICAgICB1bnNpZ25lZCBudW1iZXJPZlJlcXVpcmVkUG9wcyA9IDA7CiAgICAg
ZG8gewotICAgICAgICBqaXQucHVzaFRvU2F2ZShHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgIHN0
YWNrTWlzYWxpZ25tZW50ICs9IE1hY3JvQXNzZW1ibGVyOjpwdXNoVG9TYXZlQnl0ZU9mZnNldCgp
OworICAgICAgICBzdGFja01pc2FsaWdubWVudCArPSBwdXNoVG9TYXZlQnl0ZU9mZnNldDsKICAg
ICAgICAgbnVtYmVyT2ZSZXF1aXJlZFBvcHMrKzsKICAgICB9IHdoaWxlIChzdGFja01pc2FsaWdu
bWVudCAlIHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSk7Ci0gICAgCisgICAgaml0LnN1YlB0cihNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKG51bWJlck9mUmVxdWlyZWRQb3BzICogcHVzaFRvU2F2
ZUJ5dGVPZmZzZXQpLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisKICAgICBTY3JhdGNoQnVmZmVy
KiBzY3JhdGNoQnVmZmVyID0gdm0uc2NyYXRjaEJ1ZmZlckZvclNpemUocmVxdWlyZWRTY3JhdGNo
TWVtb3J5U2l6ZUluQnl0ZXMoKSk7CiAgICAgY2hhciogYnVmZmVyID0gc3RhdGljX2Nhc3Q8Y2hh
cio+KHNjcmF0Y2hCdWZmZXItPmRhdGFCdWZmZXIoKSk7CiAgICAgCiAgICAgc2F2ZUFsbFJlZ2lz
dGVycyhqaXQsIGJ1ZmZlcik7CiAKLSAgICBqaXQubG9hZFB0cihHUFJJbmZvOjpjYWxsRnJhbWVS
ZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBqaXQubG9hZFB0cihmcmFtZVBv
aW50ZXJSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICBqaXQucGVlaygKICAg
ICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIxLAotICAgICAgICAoc3RhY2tNaXNhbGlnbm1lbnQg
LSBNYWNyb0Fzc2VtYmxlcjo6cHVzaFRvU2F2ZUJ5dGVPZmZzZXQoKSkgLyBzaXplb2Yodm9pZCop
KTsKKyAgICAgICAgKHN0YWNrTWlzYWxpZ25tZW50IC0gcHVzaFRvU2F2ZUJ5dGVPZmZzZXQpIC8g
c2l6ZW9mKHZvaWQqKSk7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKICAgICBN
YWNyb0Fzc2VtYmxlcjo6Q2FsbCBmdW5jdGlvbkNhbGwgPSBqaXQuY2FsbChPcGVyYXRpb25QdHJU
YWcpOwogCkBAIC05MiwxNCArOTUsMTMgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
SVRUaHVua1B0cgogICAgIGppdC5tb3ZlKEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBHUFJJbmZv
OjpyZWdUMCk7CiAKICAgICAvLyBQcmVwYXJlIGZvciB0YWlsIGNhbGwuCi0gICAgd2hpbGUgKG51
bWJlck9mUmVxdWlyZWRQb3BzLS0pCi0gICAgICAgIGppdC5wb3BUb1Jlc3RvcmUoR1BSSW5mbzo6
cmVnVDEpOwotICAgIGppdC5wb3BUb1Jlc3RvcmUoTWFjcm9Bc3NlbWJsZXI6OmZyYW1lUG9pbnRl
clJlZ2lzdGVyKTsKLQotICAgIC8vIFdoZW4gd2UgY2FtZSBpbiBoZXJlLCB0aGVyZSB3YXMgYW4g
YWRkaXRpb25hbCB0aGluZyBwdXNoZWQgdG8gdGhlIHN0YWNrLiBTb21lIGNsaWVudHMgd2FudCBp
dAotICAgIC8vIHBvcHBlZCBiZWZvcmUgcHJvY2VlZGluZy4KLSAgICB3aGlsZSAoZXh0cmFQb3Bz
VG9SZXN0b3JlLS0pCi0gICAgICAgIGppdC5wb3BUb1Jlc3RvcmUoR1BSSW5mbzo6cmVnVDEpOwor
CisgICAgaml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RhY2tQb2ludGVyUmVn
aXN0ZXIsIG51bWJlck9mUmVxdWlyZWRQb3BzICogcHVzaFRvU2F2ZUJ5dGVPZmZzZXQpLCBmcmFt
ZVBvaW50ZXJSZWdpc3Rlcik7CisKKyAgICAvLyBXaGVuIHdlIGNhbWUgaW4gaGVyZSwgdGhlcmUg
d2FzIGFuIGFkZGl0aW9uYWwgdGhpbmcgcHVzaGVkIHRvIHRoZSBzdGFjayAoZXh0cmFQb3BzVG9S
ZXN0b3JlKS4KKyAgICAvLyBTb21lIGNsaWVudHMgd2FudCBpdCBwb3BwZWQgYmVmb3JlIHByb2Nl
ZWRpbmcuIEFsc28gYWRkIDEgZm9yIHRoZSBwdXNoVG9TYXZlIG9mIHRoZSBmcmFtZVBvaW50ZXJS
ZWdpc3Rlci4KKyAgICBudW1iZXJPZlJlcXVpcmVkUG9wcyArPSAxICsgZXh0cmFQb3BzVG9SZXN0
b3JlOworICAgIGppdC5hZGRQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihudW1iZXJP
ZlJlcXVpcmVkUG9wcyAqIHB1c2hUb1NhdmVCeXRlT2Zmc2V0KSwgc3RhY2tQb2ludGVyUmVnaXN0
ZXIpOwogCiAgICAgLy8gUHV0IHRoZSByZXR1cm4gYWRkcmVzcyB3aGVyZXZlciB0aGUgcmV0dXJu
IGluc3RydWN0aW9uIHdhbnRzIGl0LiBPbiBhbGwgcGxhdGZvcm1zLCB0aGlzCiAgICAgLy8gZW5z
dXJlcyB0aGF0IHRoZSByZXR1cm4gYWRkcmVzcyBpcyBvdXQgb2YgdGhlIHdheSBvZiByZWdpc3Rl
ciByZXN0b3JhdGlvbi4KQEAgLTE3NywyMSArMTc5LDI1IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRUaHVua1B0clRhZz4gc2wKICNpZiBDUFUoWDg2XzY0KQogICAgIGN1cnJlbnRPZmZzZXQg
Kz0gc2l6ZW9mKHZvaWQqKTsKICNlbmRpZgotICAgIAorCisgICAgQXNzZW1ibHlIZWxwZXJzOjpT
dG9yZVJlZ1Nwb29sZXIgc3RvcmVTcG9vbGVyKGppdCwgTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9p
bnRlclJlZ2lzdGVyKTsKKwogICAgIGZvciAoTWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgcmVn
ID0gTWFjcm9Bc3NlbWJsZXI6OmZpcnN0UmVnaXN0ZXIoKTsgcmVnIDw9IE1hY3JvQXNzZW1ibGVy
OjpsYXN0UmVnaXN0ZXIoKTsgcmVnID0gc3RhdGljX2Nhc3Q8TWFjcm9Bc3NlbWJsZXI6OlJlZ2lz
dGVySUQ+KHJlZyArIDEpKSB7CiAgICAgICAgIGlmICgha2V5LnVzZWRSZWdpc3RlcnMoKS5nZXQo
cmVnKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBqaXQuc3RvcmVQdHIocmVnLCBB
c3NlbWJseUhlbHBlcnM6OkFkZHJlc3MoTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lz
dGVyLCBjdXJyZW50T2Zmc2V0KSk7CisgICAgICAgIHN0b3JlU3Bvb2xlci5zdG9yZUdQUih7IHJl
Zywgc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihjdXJyZW50T2Zmc2V0KSB9KTsKICAgICAgICAgY3Vy
cmVudE9mZnNldCArPSBzaXplb2Yodm9pZCopOwogICAgIH0KLSAgICAKKyAgICBzdG9yZVNwb29s
ZXIuZmx1c2hHUFIoKTsKKwogICAgIGZvciAoTWFjcm9Bc3NlbWJsZXI6OkZQUmVnaXN0ZXJJRCBy
ZWcgPSBNYWNyb0Fzc2VtYmxlcjo6Zmlyc3RGUFJlZ2lzdGVyKCk7IHJlZyA8PSBNYWNyb0Fzc2Vt
Ymxlcjo6bGFzdEZQUmVnaXN0ZXIoKTsgcmVnID0gc3RhdGljX2Nhc3Q8TWFjcm9Bc3NlbWJsZXI6
OkZQUmVnaXN0ZXJJRD4ocmVnICsgMSkpIHsKICAgICAgICAgaWYgKCFrZXkudXNlZFJlZ2lzdGVy
cygpLmdldChyZWcpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGppdC5zdG9yZURv
dWJsZShyZWcsIEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQ
b2ludGVyUmVnaXN0ZXIsIGN1cnJlbnRPZmZzZXQpKTsKKyAgICAgICAgc3RvcmVTcG9vbGVyLnN0
b3JlRlBSKHsgcmVnLCBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KGN1cnJlbnRPZmZzZXQpIH0pOwog
ICAgICAgICBjdXJyZW50T2Zmc2V0ICs9IHNpemVvZihkb3VibGUpOwogICAgIH0KLSAgICAKKyAg
ICBzdG9yZVNwb29sZXIuZmx1c2hGUFIoKTsKKwogICAgIGppdC5wcmVzZXJ2ZVJldHVybkFkZHJl
c3NBZnRlckNhbGwoR1BSSW5mbzo6bm9uQXJnR1BSMSk7CiAgICAgaml0LnN0b3JlUHRyKEdQUklu
Zm86Om5vbkFyZ0dQUjEsIEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6
c3RhY2tQb2ludGVyUmVnaXN0ZXIsIGtleS5vZmZzZXQoKSkpOwogICAgIGppdC5wcmVwYXJlQ2Fs
bE9wZXJhdGlvbih2bSk7CkBAIC0yMTAsMjQgKzIxNiwyOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IHNsCiAgICAgaml0LmxvYWRQdHIoQXNzZW1ibHlIZWxwZXJzOjpB
ZGRyZXNzKE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlciwga2V5Lm9mZnNldCgp
KSwgR1BSSW5mbzo6bm9uUHJlc2VydmVkTm9uUmV0dXJuR1BSKTsKICAgICBqaXQucmVzdG9yZVJl
dHVybkFkZHJlc3NCZWZvcmVSZXR1cm4oR1BSSW5mbzo6bm9uUHJlc2VydmVkTm9uUmV0dXJuR1BS
KTsKICAgICAKKyAgICBBc3NlbWJseUhlbHBlcnM6OkxvYWRSZWdTcG9vbGVyIGxvYWRTcG9vbGVy
KGppdCwgTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKwogICAgIGZvciAo
TWFjcm9Bc3NlbWJsZXI6OkZQUmVnaXN0ZXJJRCByZWcgPSBNYWNyb0Fzc2VtYmxlcjo6bGFzdEZQ
UmVnaXN0ZXIoKTsgOyByZWcgPSBzdGF0aWNfY2FzdDxNYWNyb0Fzc2VtYmxlcjo6RlBSZWdpc3Rl
cklEPihyZWcgLSAxKSkgewogICAgICAgICBpZiAoa2V5LnVzZWRSZWdpc3RlcnMoKS5nZXQocmVn
KSkgewogICAgICAgICAgICAgY3VycmVudE9mZnNldCAtPSBzaXplb2YoZG91YmxlKTsKLSAgICAg
ICAgICAgIGppdC5sb2FkRG91YmxlKEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhNYWNyb0Fzc2Vt
Ymxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIGN1cnJlbnRPZmZzZXQpLCByZWcpOworICAgICAg
ICAgICAgbG9hZFNwb29sZXIubG9hZEZQUih7IHJlZywgc3RhdGljX2Nhc3Q8cHRyZGlmZl90Pihj
dXJyZW50T2Zmc2V0KSB9KTsKICAgICAgICAgfQogICAgICAgICBpZiAocmVnID09IE1hY3JvQXNz
ZW1ibGVyOjpmaXJzdEZQUmVnaXN0ZXIoKSkKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KLSAg
ICAKKyAgICBsb2FkU3Bvb2xlci5mbHVzaEZQUigpOworCiAgICAgZm9yIChNYWNyb0Fzc2VtYmxl
cjo6UmVnaXN0ZXJJRCByZWcgPSBNYWNyb0Fzc2VtYmxlcjo6bGFzdFJlZ2lzdGVyKCk7IDsgcmVn
ID0gc3RhdGljX2Nhc3Q8TWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQ+KHJlZyAtIDEpKSB7CiAg
ICAgICAgIGlmIChrZXkudXNlZFJlZ2lzdGVycygpLmdldChyZWcpKSB7CiAgICAgICAgICAgICBj
dXJyZW50T2Zmc2V0IC09IHNpemVvZih2b2lkKik7Ci0gICAgICAgICAgICBqaXQubG9hZFB0cihB
c3NlbWJseUhlbHBlcnM6OkFkZHJlc3MoTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lz
dGVyLCBjdXJyZW50T2Zmc2V0KSwgcmVnKTsKKyAgICAgICAgICAgIGxvYWRTcG9vbGVyLmxvYWRH
UFIoeyByZWcsIHN0YXRpY19jYXN0PHB0cmRpZmZfdD4oY3VycmVudE9mZnNldCkgfSk7CiAgICAg
ICAgIH0KICAgICAgICAgaWYgKHJlZyA9PSBNYWNyb0Fzc2VtYmxlcjo6Zmlyc3RSZWdpc3Rlcigp
KQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIAorICAgIGxvYWRTcG9vbGVyLmZsdXNo
R1BSKCk7CisKICAgICBqaXQucmV0KCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGpp
dCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpGVExUaHVuayk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCShyZXZp
c2lvbiAyNzg4ODYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVy
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoSklUKQog
CiAjaW5jbHVkZSAiQWNjZXNzQ2FzZS5oIgorI2luY2x1ZGUgIkFzc2VtYmx5SGVscGVyc1Nwb29s
ZXJzLmgiCiAjaW5jbHVkZSAiSklUT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkpTQXJyYXlCdWZm
ZXJWaWV3LmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKQEAgLTYwNiw0MiArNjA3
LDkzIEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjpyZXN0b3JlQ2FsbGVlU2F2ZXMKIAogICAgIEdQ
UlJlZyBzY3JhdGNoID0gSW52YWxpZEdQUlJlZzsKICAgICB1bnNpZ25lZCBzY3JhdGNoR1BSRW50
cnlJbmRleCA9IDA7CisjaWYgQ1BVKEFSTTY0KQorICAgIC8vIFdlIGRvbid0IG5lZWQgYSBzZWNv
bmQgc2NyYXRjaCBHUFIsIGJ1dCB3ZSdsbCBhbHNvIGRlZmVyIHJlc3RvcmluZyB0aGlzCisgICAg
Ly8gR1BSIChpbiB0aGUgbmV4dCBzbG90IGFmdGVyIHRoZSBzY3JhdGNoKSBzbyB0aGF0IHdlIGNh
biByZXN0b3JlIHRoZW0gdG9nZXRoZXIKKyAgICAvLyBsYXRlciB1c2luZyBhIGxvYWRQYWlyNjQu
CisgICAgR1BSUmVnIHVudXNlZE5leHRTbG90R1BSID0gSW52YWxpZEdQUlJlZzsKKyNlbmRpZgog
Ci0gICAgLy8gVXNlIHRoZSBmaXJzdCBHUFIgZW50cnkncyByZWdpc3RlciBhcyBvdXIgc2NyYXRj
aC4KKyAgICAvLyBVc2UgdGhlIGZpcnN0IEdQUiBlbnRyeSdzIHJlZ2lzdGVyIGFzIG91ciBiYXNl
R1BSLgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZWdpc3RlckNvdW50OyBpKyspIHsK
ICAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCBlbnRyeSA9IGFsbENhbGxlZVNhdmVzLT5hdChpKTsK
LSAgICAgICAgaWYgKGRvbnRSZXN0b3JlUmVnaXN0ZXJzLmdldChlbnRyeS5yZWcoKSkpCisgICAg
ICAgIGlmIChkb250UmVzdG9yZVJlZ2lzdGVycy5jb250YWlucyhlbnRyeS5yZWcoKSkpCiAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKGVudHJ5LnJlZygpLmlzR1BSKCkpIHsKKyNp
ZiBDUFUoQVJNNjQpCisgICAgICAgICAgICBpZiAoaSArIDEgPCByZWdpc3RlckNvdW50KSB7Cisg
ICAgICAgICAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCBlbnRyeTIgPSBhbGxDYWxsZWVTYXZlcy0+
YXQoaSArIDEpOworICAgICAgICAgICAgICAgIGlmICghZG9udFJlc3RvcmVSZWdpc3RlcnMuY29u
dGFpbnMoZW50cnkyLnJlZygpKQorICAgICAgICAgICAgICAgICAgICAmJiBlbnRyeTIucmVnKCku
aXNHUFIoKQorICAgICAgICAgICAgICAgICAgICAmJiBlbnRyeTIub2Zmc2V0KCkgPT0gZW50cnku
b2Zmc2V0KCkgKyBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KHNpemVvZihDUFVSZWdpc3RlcikpKSB7
CisgICAgICAgICAgICAgICAgICAgIHNjcmF0Y2hHUFJFbnRyeUluZGV4ID0gaTsKKyAgICAgICAg
ICAgICAgICAgICAgc2NyYXRjaCA9IGVudHJ5LnJlZygpLmdwcigpOworICAgICAgICAgICAgICAg
ICAgICB1bnVzZWROZXh0U2xvdEdQUiA9IGVudHJ5Mi5yZWcoKS5ncHIoKTsKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorI2Vsc2UK
ICAgICAgICAgICAgIHNjcmF0Y2hHUFJFbnRyeUluZGV4ID0gaTsKICAgICAgICAgICAgIHNjcmF0
Y2ggPSBlbnRyeS5yZWcoKS5ncHIoKTsKICAgICAgICAgICAgIGJyZWFrOworI2VuZGlmCiAgICAg
ICAgIH0KICAgICB9CiAgICAgQVNTRVJUKHNjcmF0Y2ggIT0gSW52YWxpZEdQUlJlZyk7CisgICAg
CisgICAgUmVnaXN0ZXJTZXQgc2tpcExpc3Q7CisgICAgc2tpcExpc3Quc2V0KGRvbnRSZXN0b3Jl
UmVnaXN0ZXJzKTsKKworICAgIC8vIFNraXAgdGhlIHNjcmF0Y2ggcmVnaXN0ZXIocykuIFdlJ2xs
IHJlc3RvcmUgdGhlbSBsYXRlci4KKyAgICBza2lwTGlzdC5hZGQoc2NyYXRjaCk7CisjaWYgQ1BV
KEFSTTY0KQorICAgIFJFTEVBU0VfQVNTRVJUKHVudXNlZE5leHRTbG90R1BSICE9IEludmFsaWRH
UFJSZWcpOworICAgIHNraXBMaXN0LmFkZCh1bnVzZWROZXh0U2xvdEdQUik7CisjZW5kaWYKIAog
ICAgIGxvYWRQdHIoJnRvcEVudHJ5RnJhbWUsIHNjcmF0Y2gpOwogICAgIGFkZFB0cihUcnVzdGVk
SW1tMzIoRW50cnlGcmFtZTo6Y2FsbGVlU2F2ZVJlZ2lzdGVyc0J1ZmZlck9mZnNldCgpKSwgc2Ny
YXRjaCk7CiAKKyAgICBMb2FkUmVnU3Bvb2xlciBzcG9vbGVyKCp0aGlzLCBzY3JhdGNoKTsKKwog
ICAgIC8vIFJlc3RvcmUgYWxsIGNhbGxlZSBzYXZlcyBleGNlcHQgZm9yIHRoZSBzY3JhdGNoLgot
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZWdpc3RlckNvdW50OyBpKyspIHsKKyAgICB1
bnNpZ25lZCBpID0gMDsKKyAgICBmb3IgKDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkrKykgewogICAg
ICAgICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5ID0gYWxsQ2FsbGVlU2F2ZXMtPmF0KGkpOwotICAg
ICAgICBpZiAoZG9udFJlc3RvcmVSZWdpc3RlcnMuZ2V0KGVudHJ5LnJlZygpKSkKKyAgICAgICAg
aWYgKHNraXBMaXN0LmNvbnRhaW5zKGVudHJ5LnJlZygpKSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICBpZiAoaSA9PSBzY3JhdGNoR1BSRW50cnlJbmRleCkKKyAgICAgICAgaWYgKCFl
bnRyeS5yZWcoKS5pc0dQUigpKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIHNwb29sZXIu
bG9hZEdQUihlbnRyeSk7CisgICAgfQorICAgIHNwb29sZXIuZmx1c2hHUFIoKTsKKyAgICBmb3Ig
KDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkrKykgeworICAgICAgICBSZWdpc3RlckF0T2Zmc2V0IGVu
dHJ5ID0gYWxsQ2FsbGVlU2F2ZXMtPmF0KGkpOworICAgICAgICBpZiAoc2tpcExpc3QuY29udGFp
bnMoZW50cnkucmVnKCkpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGxvYWRSZWco
QWRkcmVzcyhzY3JhdGNoLCBlbnRyeS5vZmZzZXQoKSksIGVudHJ5LnJlZygpKTsKKyAgICAgICAg
QVNTRVJUKCFlbnRyeS5yZWcoKS5pc0dQUigpKTsKKyAgICAgICAgc3Bvb2xlci5sb2FkRlBSKGVu
dHJ5KTsKICAgICB9CisgICAgc3Bvb2xlci5mbHVzaEZQUigpOwogCiAgICAgLy8gUmVzdG9yZSB0
aGUgY2FsbGVlIHNhdmUgdmFsdWUgb2YgdGhlIHNjcmF0Y2guCiAgICAgUmVnaXN0ZXJBdE9mZnNl
dCBlbnRyeSA9IGFsbENhbGxlZVNhdmVzLT5hdChzY3JhdGNoR1BSRW50cnlJbmRleCk7CiAgICAg
QVNTRVJUKCFkb250UmVzdG9yZVJlZ2lzdGVycy5nZXQoZW50cnkucmVnKCkpKTsKICAgICBBU1NF
UlQoZW50cnkucmVnKCkuaXNHUFIoKSk7CiAgICAgQVNTRVJUKHNjcmF0Y2ggPT0gZW50cnkucmVn
KCkuZ3ByKCkpOwotICAgIGxvYWRSZWcoQWRkcmVzcyhzY3JhdGNoLCBlbnRyeS5vZmZzZXQoKSks
IHNjcmF0Y2gpOworI2lmIENQVShBUk02NCkKKyAgICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5MiA9
IGFsbENhbGxlZVNhdmVzLT5hdChzY3JhdGNoR1BSRW50cnlJbmRleCArIDEpOworICAgIEFTU0VS
VF9VTlVTRUQoZW50cnkyLCAhZG9udFJlc3RvcmVSZWdpc3RlcnMuZ2V0KGVudHJ5Mi5yZWcoKSkp
OworICAgIEFTU0VSVChlbnRyeTIucmVnKCkuaXNHUFIoKSk7CisgICAgQVNTRVJUKHVudXNlZE5l
eHRTbG90R1BSID09IGVudHJ5Mi5yZWcoKS5ncHIoKSk7CisgICAgbG9hZFBhaXI2NChzY3JhdGNo
LCBUcnVzdGVkSW1tMzIoZW50cnkub2Zmc2V0KCkpLCBzY3JhdGNoLCB1bnVzZWROZXh0U2xvdEdQ
Uik7CiAjZWxzZQotICAgIFVOVVNFRF9QQVJBTSh0b3BFbnRyeUZyYW1lKTsKKyAgICBsb2FkUHRy
KEFkZHJlc3Moc2NyYXRjaCwgZW50cnkub2Zmc2V0KCkpLCBzY3JhdGNoKTsKICNlbmRpZgorCisj
ZWxzZQorICAgIFVOVVNFRF9QQVJBTSh0b3BFbnRyeUZyYW1lKTsKKyNlbmRpZiAvLyBOVU1CRVJf
T0ZfQ0FMTEVFX1NBVkVTX1JFR0lTVEVSUyA+IDAKIH0KIAogdm9pZCBBc3NlbWJseUhlbHBlcnM6
OmVtaXRWaXJ0dWFsQ2FsbChWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxMaW5rSW5mbyogaW5mbykKQEAgLTk5OSwxMyArMTA1MSwyNyBAQCB2b2lkIEFzc2VtYmx5SGVs
cGVyczo6Y29weUNhbGxlZVNhdmVzVG9FCiAgICAgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGFsbENh
bGxlZVNhdmVzID0gUmVnaXN0ZXJTZXQ6OnZtQ2FsbGVlU2F2ZVJlZ2lzdGVyT2Zmc2V0cygpOwog
ICAgIFJlZ2lzdGVyU2V0IGRvbnRDb3B5UmVnaXN0ZXJzID0gUmVnaXN0ZXJTZXQ6OnN0YWNrUmVn
aXN0ZXJzKCk7CiAgICAgdW5zaWduZWQgcmVnaXN0ZXJDb3VudCA9IGFsbENhbGxlZVNhdmVzLT5z
aXplKCk7Ci0gICAgCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlZ2lzdGVyQ291bnQ7
IGkrKykgeworCisgICAgU3RvcmVSZWdTcG9vbGVyIHNwb29sZXIoKnRoaXMsIGNhbGxlZVNhdmVz
QnVmZmVyKTsKKworICAgIHVuc2lnbmVkIGkgPSAwOworICAgIGZvciAoOyBpIDwgcmVnaXN0ZXJD
b3VudDsgaSsrKSB7CiAgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQgZW50cnkgPSBhbGxDYWxsZWVT
YXZlcy0+YXQoaSk7Ci0gICAgICAgIGlmIChkb250Q29weVJlZ2lzdGVycy5nZXQoZW50cnkucmVn
KCkpKQorICAgICAgICBpZiAoZG9udENvcHlSZWdpc3RlcnMuY29udGFpbnMoZW50cnkucmVnKCkp
KQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICghZW50cnkucmVnKCkuaXNHUFIo
KSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBzcG9vbGVyLnN0b3JlR1BSKGVudHJ5KTsK
KyAgICB9CisgICAgc3Bvb2xlci5mbHVzaEdQUigpOworICAgIGZvciAoOyBpIDwgcmVnaXN0ZXJD
b3VudDsgaSsrKSB7CisgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQgZW50cnkgPSBhbGxDYWxsZWVT
YXZlcy0+YXQoaSk7CisgICAgICAgIGlmIChkb250Q29weVJlZ2lzdGVycy5jb250YWlucyhlbnRy
eS5yZWcoKSkpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgc3RvcmVSZWcoZW50cnku
cmVnKCksIEFkZHJlc3MoY2FsbGVlU2F2ZXNCdWZmZXIsIGVudHJ5Lm9mZnNldCgpKSk7CisgICAg
ICAgIHNwb29sZXIuc3RvcmVGUFIoZW50cnkpOwogICAgIH0KKyAgICBzcG9vbGVyLmZsdXNoRlBS
KCk7CisKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGNhbGxlZVNhdmVzQnVmZmVyKTsKICNlbmRp
ZgpAQCAtMTEwMyw2ICsxMTY5LDE4NCBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6Y2FnZUNvbmRp
dGlvbmFsbHlBCiAgICAgVU5VU0VEX1BBUkFNKHNjcmF0Y2gpOwogfQogCit2b2lkIEFzc2VtYmx5
SGVscGVyczo6ZW1pdFNhdmUoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QmIGxpc3QpCit7Cisg
ICAgU3RvcmVSZWdTcG9vbGVyIHNwb29sZXIoKnRoaXMsIGZyYW1lUG9pbnRlclJlZ2lzdGVyKTsK
KworICAgIHNpemVfdCBsaXN0U2l6ZSA9IGxpc3Quc2l6ZSgpOworICAgIHNpemVfdCBpID0gMDsK
KyAgICBmb3IgKDsgaSA8IGxpc3RTaXplOyBpKyspIHsKKyAgICAgICAgYXV0byBlbnRyeSA9IGxp
c3QuYXQoaSk7CisgICAgICAgIGlmICghZW50cnkucmVnKCkuaXNHUFIoKSkKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBzcG9vbGVyLnN0b3JlR1BSKGVudHJ5KTsKKyAgICB9CisgICAgc3Bv
b2xlci5mbHVzaEdQUigpOworCisgICAgZm9yICg7IGkgPCBsaXN0U2l6ZTsgaSsrKQorICAgICAg
ICBzcG9vbGVyLnN0b3JlRlBSKGxpc3QuYXQoaSkpOworICAgIHNwb29sZXIuZmx1c2hGUFIoKTsK
K30KKwordm9pZCBBc3NlbWJseUhlbHBlcnM6OmVtaXRSZXN0b3JlKGNvbnN0IFJlZ2lzdGVyQXRP
ZmZzZXRMaXN0JiBsaXN0KQoreworICAgIExvYWRSZWdTcG9vbGVyIHNwb29sZXIoKnRoaXMsIGZy
YW1lUG9pbnRlclJlZ2lzdGVyKTsKKworICAgIHNpemVfdCBsaXN0U2l6ZSA9IGxpc3Quc2l6ZSgp
OworICAgIHNpemVfdCBpID0gMDsKKyAgICBmb3IgKDsgaSA8IGxpc3RTaXplOyBpKyspIHsKKyAg
ICAgICAgYXV0byBlbnRyeSA9IGxpc3QuYXQoaSk7CisgICAgICAgIGlmICghZW50cnkucmVnKCku
aXNHUFIoKSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBzcG9vbGVyLmxvYWRHUFIoZW50
cnkpOworICAgIH0KKyAgICBzcG9vbGVyLmZsdXNoR1BSKCk7CisKKyAgICBmb3IgKDsgaSA8IGxp
c3RTaXplOyBpKyspCisgICAgICAgIHNwb29sZXIubG9hZEZQUihsaXN0LmF0KGkpKTsKKyAgICBz
cG9vbGVyLmZsdXNoRlBSKCk7Cit9CisKK3ZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0U2F2ZUNh
bGxlZVNhdmVzRm9yKGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBjYWxsZWVTYXZlcykKK3sK
KyAgICBSZWdpc3RlclNldCBkb250U2F2ZVJlZ2lzdGVycyA9IFJlZ2lzdGVyU2V0KFJlZ2lzdGVy
U2V0OjpzdGFja1JlZ2lzdGVycygpLCBSZWdpc3RlclNldDo6YWxsRlBScygpKTsKKyAgICB1bnNp
Z25lZCByZWdpc3RlckNvdW50ID0gY2FsbGVlU2F2ZXMtPnNpemUoKTsKKworICAgIFN0b3JlUmVn
U3Bvb2xlciBzcG9vbGVyKCp0aGlzLCBmcmFtZVBvaW50ZXJSZWdpc3Rlcik7CisKKyAgICB1bnNp
Z25lZCBpID0gMDsKKyAgICBmb3IgKDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkrKykgeworICAgICAg
ICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5ID0gY2FsbGVlU2F2ZXMtPmF0KGkpOworICAgICAgICBp
ZiAoZG9udFNhdmVSZWdpc3RlcnMuY29udGFpbnMoZW50cnkucmVnKCkpKQorICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIHNwb29sZXIuc3RvcmVHUFIoZW50cnkpOworICAgIH0KKyAgICBz
cG9vbGVyLmZsdXNoR1BSKCk7CisgICAgZm9yICg7IGkgPCByZWdpc3RlckNvdW50OyBpKyspIHsK
KyAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCBlbnRyeSA9IGNhbGxlZVNhdmVzLT5hdChpKTsKKyAg
ICAgICAgaWYgKGRvbnRTYXZlUmVnaXN0ZXJzLmNvbnRhaW5zKGVudHJ5LnJlZygpKSkKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICBzcG9vbGVyLnN0b3JlRlBSKGVudHJ5KTsKKyAgICB9
CisgICAgc3Bvb2xlci5mbHVzaEZQUigpOworfQorCit2b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1p
dFJlc3RvcmVDYWxsZWVTYXZlc0Zvcihjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCogY2FsbGVl
U2F2ZXMpCit7CisgICAgUmVnaXN0ZXJTZXQgZG9udFJlc3RvcmVSZWdpc3RlcnMgPSBSZWdpc3Rl
clNldChSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKSwgUmVnaXN0ZXJTZXQ6OmFsbEZQUnMo
KSk7CisgICAgdW5zaWduZWQgcmVnaXN0ZXJDb3VudCA9IGNhbGxlZVNhdmVzLT5zaXplKCk7Cisg
ICAgCisgICAgTG9hZFJlZ1Nwb29sZXIgc3Bvb2xlcigqdGhpcywgZnJhbWVQb2ludGVyUmVnaXN0
ZXIpOworCisgICAgdW5zaWduZWQgaSA9IDA7CisgICAgZm9yICg7IGkgPCByZWdpc3RlckNvdW50
OyBpKyspIHsKKyAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCBlbnRyeSA9IGNhbGxlZVNhdmVzLT5h
dChpKTsKKyAgICAgICAgaWYgKGRvbnRSZXN0b3JlUmVnaXN0ZXJzLmdldChlbnRyeS5yZWcoKSkp
CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgc3Bvb2xlci5sb2FkR1BSKGVudHJ5KTsK
KyAgICB9CisgICAgc3Bvb2xlci5mbHVzaEdQUigpOworICAgIGZvciAoOyBpIDwgcmVnaXN0ZXJD
b3VudDsgaSsrKSB7CisgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQgZW50cnkgPSBjYWxsZWVTYXZl
cy0+YXQoaSk7CisgICAgICAgIGlmIChkb250UmVzdG9yZVJlZ2lzdGVycy5nZXQoZW50cnkucmVn
KCkpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIHNwb29sZXIubG9hZEZQUihlbnRy
eSk7CisgICAgfQorICAgIHNwb29sZXIuZmx1c2hGUFIoKTsKK30KKwordm9pZCBBc3NlbWJseUhl
bHBlcnM6OmNvcHlMTEludEJhc2VsaW5lQ2FsbGVlU2F2ZXNGcm9tRnJhbWVPclJlZ2lzdGVyVG9F
bnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIoRW50cnlGcmFtZSomIHRvcEVudHJ5RnJhbWUsIGNv
bnN0IFRlbXBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycykKK3sKKyNpZiBOVU1CRVJfT0ZfQ0FM
TEVFX1NBVkVTX1JFR0lTVEVSUyA+IDAKKyAgICAvLyBDb3B5IHNhdmVkIGNhbGxlZVNhdmVzIG9u
IHN0YWNrIG9yIHVuc2F2ZWQgY2FsbGVlU2F2ZXMgaW4gcmVnaXN0ZXIgdG8gdm0gY2FsbGVlU2F2
ZSBidWZmZXIKKyAgICBHUFJSZWcgZGVzdEJ1ZmZlckdQUiA9IHVzZWRSZWdpc3RlcnMuZ2V0RnJl
ZUdQUigwKTsKKyAgICBHUFJSZWcgdGVtcDEgPSB1c2VkUmVnaXN0ZXJzLmdldEZyZWVHUFIoMSk7
CisgICAgRlBSUmVnIGZwVGVtcDEgPSB1c2VkUmVnaXN0ZXJzLmdldEZyZWVGUFIoMCk7CisgICAg
R1BSUmVnIHRlbXAyID0gaXNBUk02NCgpID8gdXNlZFJlZ2lzdGVycy5nZXRGcmVlR1BSKDIpIDog
SW52YWxpZEdQUlJlZzsKKyAgICBGUFJSZWcgZnBUZW1wMiA9IGlzQVJNNjQoKSA/IHVzZWRSZWdp
c3RlcnMuZ2V0RnJlZUZQUigxKSA6IEludmFsaWRGUFJSZWc7CisKKyAgICBsb2FkUHRyKCZ0b3BF
bnRyeUZyYW1lLCBkZXN0QnVmZmVyR1BSKTsKKyAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKEVudHJ5
RnJhbWU6OmNhbGxlZVNhdmVSZWdpc3RlcnNCdWZmZXJPZmZzZXQoKSksIGRlc3RCdWZmZXJHUFIp
OworCisgICAgQ29weVNwb29sZXIgc3Bvb2xlcigqdGhpcywgZnJhbWVQb2ludGVyUmVnaXN0ZXIs
IGRlc3RCdWZmZXJHUFIsIHRlbXAxLCB0ZW1wMiwgZnBUZW1wMSwgZnBUZW1wMik7CisKKyAgICBS
ZWdpc3RlckF0T2Zmc2V0TGlzdCogYWxsQ2FsbGVlU2F2ZXMgPSBSZWdpc3RlclNldDo6dm1DYWxs
ZWVTYXZlUmVnaXN0ZXJPZmZzZXRzKCk7CisgICAgY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3Qq
IGN1cnJlbnRDYWxsZWVTYXZlcyA9ICZSZWdpc3RlckF0T2Zmc2V0TGlzdDo6bGxpbnRCYXNlbGlu
ZUNhbGxlZVNhdmVSZWdpc3RlcnMoKTsKKyAgICBSZWdpc3RlclNldCBkb250Q29weVJlZ2lzdGVy
cyA9IFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpOworICAgIHVuc2lnbmVkIHJlZ2lzdGVy
Q291bnQgPSBhbGxDYWxsZWVTYXZlcy0+c2l6ZSgpOworCisgICAgdW5zaWduZWQgaSA9IDA7Cisg
ICAgZm9yICg7IGkgPCByZWdpc3RlckNvdW50OyBpKyspIHsKKyAgICAgICAgUmVnaXN0ZXJBdE9m
ZnNldCBlbnRyeSA9IGFsbENhbGxlZVNhdmVzLT5hdChpKTsKKyAgICAgICAgaWYgKGRvbnRDb3B5
UmVnaXN0ZXJzLmNvbnRhaW5zKGVudHJ5LnJlZygpKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICBSZWdpc3RlckF0T2Zmc2V0KiBjdXJyZW50RnJhbWVFbnRyeSA9IGN1cnJlbnRDYWxs
ZWVTYXZlcy0+ZmluZChlbnRyeS5yZWcoKSk7CisKKyAgICAgICAgaWYgKCFlbnRyeS5yZWcoKS5p
c0dQUigpKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmIChjdXJyZW50RnJhbWVFbnRy
eSkKKyAgICAgICAgICAgIHNwb29sZXIubG9hZEdQUihjdXJyZW50RnJhbWVFbnRyeS0+b2Zmc2V0
KCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzcG9vbGVyLmNvcHlHUFIoZW50cnkucmVn
KCkuZ3ByKCkpOworICAgICAgICBzcG9vbGVyLnN0b3JlR1BSKGVudHJ5Lm9mZnNldCgpKTsKKyAg
ICB9CisgICAgc3Bvb2xlci5mbHVzaEdQUigpOworCisgICAgZm9yICg7IGkgPCByZWdpc3RlckNv
dW50OyBpKyspIHsKKyAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCBlbnRyeSA9IGFsbENhbGxlZVNh
dmVzLT5hdChpKTsKKyAgICAgICAgaWYgKGRvbnRDb3B5UmVnaXN0ZXJzLmdldChlbnRyeS5yZWco
KSkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCogY3Vy
cmVudEZyYW1lRW50cnkgPSBjdXJyZW50Q2FsbGVlU2F2ZXMtPmZpbmQoZW50cnkucmVnKCkpOwor
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGVudHJ5LnJlZygpLmlzRlBSKCkpOworICAgICAgICBp
ZiAoY3VycmVudEZyYW1lRW50cnkpCisgICAgICAgICAgICBzcG9vbGVyLmxvYWRGUFIoY3VycmVu
dEZyYW1lRW50cnktPm9mZnNldCgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc3Bvb2xl
ci5jb3B5RlBSKGVudHJ5LnJlZygpLmZwcigpKTsKKyAgICAgICAgc3Bvb2xlci5zdG9yZUZQUihl
bnRyeS5vZmZzZXQoKSk7CisgICAgfQorICAgIHNwb29sZXIuZmx1c2hGUFIoKTsKKworI2Vsc2UK
KyAgICBVTlVTRURfUEFSQU0odG9wRW50cnlGcmFtZSk7CisgICAgVU5VU0VEX1BBUkFNKHVzZWRS
ZWdpc3RlcnMpOworI2VuZGlmCit9CisKK3ZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0U2F2ZU9y
Q29weUxMSW50QmFzZWxpbmVDYWxsZWVTYXZlc0ZvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmly
dHVhbFJlZ2lzdGVyIG9mZnNldFZpcnR1YWxSZWdpc3RlciwgUmVzdG9yZVRhZ1JlZ2lzdGVyTW9k
ZSB0YWdSZWdpc3Rlck1vZGUsIEdQUlJlZyB0ZW1wMSwgR1BSUmVnIHRlbXAyLCBHUFJSZWcgdGVt
cDMpCit7CisgICAgQVNTRVJUKGNvZGVCbG9jayk7CisKKyAgICBSRUxFQVNFX0FTU0VSVCghSklU
Q29kZTo6aXNPcHRpbWl6aW5nSklUKGNvZGVCbG9jay0+aml0VHlwZSgpKSk7CisgICAgUkVMRUFT
RV9BU1NFUlQoY29kZUJsb2NrLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCkgPT0gJlJlZ2lzdGVyQXRP
ZmZzZXRMaXN0OjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsKKyAgICBjb25z
dCBSZWdpc3RlckF0T2Zmc2V0TGlzdCogY2FsbGVlU2F2ZXMgPSAmUmVnaXN0ZXJBdE9mZnNldExp
c3Q6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCk7CisgICAgUmVnaXN0ZXJTZXQg
ZG9udFNhdmVSZWdpc3RlcnMgPSBSZWdpc3RlclNldChSZWdpc3RlclNldDo6c3RhY2tSZWdpc3Rl
cnMoKSwgUmVnaXN0ZXJTZXQ6OmFsbEZQUnMoKSk7CisgICAgdW5zaWduZWQgcmVnaXN0ZXJDb3Vu
dCA9IGNhbGxlZVNhdmVzLT5zaXplKCk7CisKKyAgICBHUFJSZWcgZHN0QnVmZmVyR1BSID0gdGVt
cDE7CisgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihvZmZzZXRWaXJ0dWFsUmVnaXN0ZXIub2Zmc2V0
SW5CeXRlcygpKSwgZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGRzdEJ1ZmZlckdQUik7CisKKyAgICBD
b3B5U3Bvb2xlciBzcG9vbGVyKCp0aGlzLCBmcmFtZVBvaW50ZXJSZWdpc3RlciwgZHN0QnVmZmVy
R1BSLCB0ZW1wMiwgdGVtcDMpOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlZ2lz
dGVyQ291bnQ7IGkrKykgeworICAgICAgICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5ID0gY2FsbGVl
U2F2ZXMtPmF0KGkpOworICAgICAgICBpZiAoZG9udFNhdmVSZWdpc3RlcnMuZ2V0KGVudHJ5LnJl
ZygpKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAKKyNpZiBVU0UoSlNWQUxVRTMy
XzY0KQorICAgICAgICBVTlVTRURfUEFSQU0odGFnUmVnaXN0ZXJNb2RlKTsKKyAgICAgICAgVU5V
U0VEX1BBUkFNKHRlbXApOworI2Vsc2UKKyAgICAgICAgaWYgKHRhZ1JlZ2lzdGVyTW9kZSA9PSBD
b3B5QmFzZWxpbmVDYWxsZWVTYXZlZFJlZ2lzdGVyc0Zyb21CYXNlRnJhbWUpCisgICAgICAgICAg
ICBzcG9vbGVyLmxvYWRHUFIoZW50cnkub2Zmc2V0KCkpOworICAgICAgICBlbHNlCisjZW5kaWYK
KyAgICAgICAgICAgIHNwb29sZXIuY29weUdQUihlbnRyeS5yZWcoKS5ncHIoKSk7CisgICAgICAg
IHNwb29sZXIuc3RvcmVHUFIoZW50cnkub2Zmc2V0KCkpOworICAgIH0KKyAgICBzcG9vbGVyLmZs
dXNoR1BSKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRU5BQkxFKEpJ
VCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAko
cmV2aXNpb24gMjc4ODg2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhl
bHBlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjk1LDMxICsyOTUsMTkgQEAgcHVibGljOgogICAg
ICAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMih2YWx1ZS5wYXlsb2FkKCkpLCBhZGRyZXNzLndpdGhP
ZmZzZXQoUGF5bG9hZE9mZnNldCkpOwogI2VuZGlmCiAgICAgfQotICAgIAorCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgT3A+IGNsYXNzIFNwb29sZXI7CisgICAgY2xhc3MgTG9hZFJlZ1Nwb29sZXI7
CisgICAgY2xhc3MgU3RvcmVSZWdTcG9vbGVyOworICAgIGNsYXNzIENvcHlTcG9vbGVyOworCiAg
ICAgQWRkcmVzcyBhZGRyZXNzRm9yKGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXQmIGVudHJ5KQogICAg
IHsKICAgICAgICAgcmV0dXJuIEFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGVu
dHJ5Lm9mZnNldCgpKTsKICAgICB9Ci0gICAgCi0gICAgdm9pZCBlbWl0U2F2ZShjb25zdCBSZWdp
c3RlckF0T2Zmc2V0TGlzdCYgbGlzdCkKLSAgICB7Ci0gICAgICAgIGZvciAoY29uc3QgUmVnaXN0
ZXJBdE9mZnNldCYgZW50cnkgOiBsaXN0KSB7Ci0gICAgICAgICAgICBpZiAoZW50cnkucmVnKCku
aXNHUFIoKSkKLSAgICAgICAgICAgICAgICBzdG9yZVB0cihlbnRyeS5yZWcoKS5ncHIoKSwgYWRk
cmVzc0ZvcihlbnRyeSkpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHN0b3Jl
RG91YmxlKGVudHJ5LnJlZygpLmZwcigpLCBhZGRyZXNzRm9yKGVudHJ5KSk7Ci0gICAgICAgIH0K
LSAgICB9Ci0gICAgCi0gICAgdm9pZCBlbWl0UmVzdG9yZShjb25zdCBSZWdpc3RlckF0T2Zmc2V0
TGlzdCYgbGlzdCkKLSAgICB7Ci0gICAgICAgIGZvciAoY29uc3QgUmVnaXN0ZXJBdE9mZnNldCYg
ZW50cnkgOiBsaXN0KSB7Ci0gICAgICAgICAgICBpZiAoZW50cnkucmVnKCkuaXNHUFIoKSkKLSAg
ICAgICAgICAgICAgICBsb2FkUHRyKGFkZHJlc3NGb3IoZW50cnkpLCBlbnRyeS5yZWcoKS5ncHIo
KSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbG9hZERvdWJsZShhZGRyZXNz
Rm9yKGVudHJ5KSwgZW50cnkucmVnKCkuZnByKCkpOwotICAgICAgICB9Ci0gICAgfQorCisgICAg
dm9pZCBlbWl0U2F2ZShjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCYpOworICAgIHZvaWQgZW1p
dFJlc3RvcmUoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QmKTsKIAogICAgIHZvaWQgZW1pdFNh
dmVDYWxsZWVTYXZlc0ZvcihDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAgICB7CkBAIC0zMjksNTQg
KzMxNywxMSBAQCBwdWJsaWM6CiAgICAgICAgIGVtaXRTYXZlQ2FsbGVlU2F2ZXNGb3IoY2FsbGVl
U2F2ZXMpOwogICAgIH0KIAotICAgIHZvaWQgZW1pdFNhdmVDYWxsZWVTYXZlc0Zvcihjb25zdCBS
ZWdpc3RlckF0T2Zmc2V0TGlzdCogY2FsbGVlU2F2ZXMpCi0gICAgewotICAgICAgICBSZWdpc3Rl
clNldCBkb250U2F2ZVJlZ2lzdGVycyA9IFJlZ2lzdGVyU2V0KFJlZ2lzdGVyU2V0OjpzdGFja1Jl
Z2lzdGVycygpLCBSZWdpc3RlclNldDo6YWxsRlBScygpKTsKLSAgICAgICAgdW5zaWduZWQgcmVn
aXN0ZXJDb3VudCA9IGNhbGxlZVNhdmVzLT5zaXplKCk7Ci0KLSAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkrKykgewotICAgICAgICAgICAgUmVnaXN0ZXJB
dE9mZnNldCBlbnRyeSA9IGNhbGxlZVNhdmVzLT5hdChpKTsKLSAgICAgICAgICAgIGlmIChkb250
U2F2ZVJlZ2lzdGVycy5nZXQoZW50cnkucmVnKCkpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICAgICAgc3RvcmVQdHIoZW50cnkucmVnKCkuZ3ByKCksIEFkZHJlc3MoZnJhbWVQ
b2ludGVyUmVnaXN0ZXIsIGVudHJ5Lm9mZnNldCgpKSk7Ci0gICAgICAgIH0KLSAgICB9CisgICAg
dm9pZCBlbWl0U2F2ZUNhbGxlZVNhdmVzRm9yKGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBj
YWxsZWVTYXZlcyk7CiAgICAgCiAgICAgZW51bSBSZXN0b3JlVGFnUmVnaXN0ZXJNb2RlIHsgVXNl
RXhpc3RpbmdUYWdSZWdpc3RlckNvbnRlbnRzLCBDb3B5QmFzZWxpbmVDYWxsZWVTYXZlZFJlZ2lz
dGVyc0Zyb21CYXNlRnJhbWUgfTsKIAotICAgIHZvaWQgZW1pdFNhdmVPckNvcHlDYWxsZWVTYXZl
c0ZvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmlydHVhbFJlZ2lzdGVyIG9mZnNldFZpcnR1YWxS
ZWdpc3RlciwgUmVzdG9yZVRhZ1JlZ2lzdGVyTW9kZSB0YWdSZWdpc3Rlck1vZGUsIEdQUlJlZyB0
ZW1wKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGNvZGVCbG9jayk7Ci0gICAgICAgIAotICAgICAg
ICBjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCogY2FsbGVlU2F2ZXMgPSBjb2RlQmxvY2stPmNh
bGxlZVNhdmVSZWdpc3RlcnMoKTsKLSAgICAgICAgUmVnaXN0ZXJTZXQgZG9udFNhdmVSZWdpc3Rl
cnMgPSBSZWdpc3RlclNldChSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKSwgUmVnaXN0ZXJT
ZXQ6OmFsbEZQUnMoKSk7Ci0gICAgICAgIHVuc2lnbmVkIHJlZ2lzdGVyQ291bnQgPSBjYWxsZWVT
YXZlcy0+c2l6ZSgpOwotCi0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgUmVnaXN0ZXJTZXQg
YmFzZWxpbmVDYWxsZWVTYXZlcyA9IFJlZ2lzdGVyU2V0OjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2
ZVJlZ2lzdGVycygpOwotI2VuZGlmCi0gICAgICAgIAotICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgcmVnaXN0ZXJDb3VudDsgaSsrKSB7Ci0gICAgICAgICAgICBSZWdpc3RlckF0T2Zm
c2V0IGVudHJ5ID0gY2FsbGVlU2F2ZXMtPmF0KGkpOwotICAgICAgICAgICAgaWYgKGRvbnRTYXZl
UmVnaXN0ZXJzLmdldChlbnRyeS5yZWcoKSkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgICAgICAKLSAgICAgICAgICAgIEdQUlJlZyByZWdpc3RlclRvV3JpdGU7Ci0gICAgICAg
ICAgICAKLSNpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgICAgICAgICAgVU5VU0VEX1BBUkFNKHRh
Z1JlZ2lzdGVyTW9kZSk7Ci0gICAgICAgICAgICBVTlVTRURfUEFSQU0odGVtcCk7Ci0jZWxzZQot
ICAgICAgICAgICAgaWYgKHRhZ1JlZ2lzdGVyTW9kZSA9PSBDb3B5QmFzZWxpbmVDYWxsZWVTYXZl
ZFJlZ2lzdGVyc0Zyb21CYXNlRnJhbWUgJiYgYmFzZWxpbmVDYWxsZWVTYXZlcy5nZXQoZW50cnku
cmVnKCkpKSB7Ci0gICAgICAgICAgICAgICAgcmVnaXN0ZXJUb1dyaXRlID0gdGVtcDsKLSAgICAg
ICAgICAgICAgICBsb2FkUHRyKEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpjYWxs
RnJhbWVSZWdpc3RlciwgZW50cnkub2Zmc2V0KCkpLCByZWdpc3RlclRvV3JpdGUpOwotICAgICAg
ICAgICAgfSBlbHNlCi0jZW5kaWYKLSAgICAgICAgICAgICAgICByZWdpc3RlclRvV3JpdGUgPSBl
bnRyeS5yZWcoKS5ncHIoKTsKLQotICAgICAgICAgICAgc3RvcmVQdHIocmVnaXN0ZXJUb1dyaXRl
LCBBZGRyZXNzKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBvZmZzZXRWaXJ0dWFsUmVnaXN0ZXIub2Zm
c2V0SW5CeXRlcygpICsgZW50cnkub2Zmc2V0KCkpKTsKLSAgICAgICAgfQotICAgIH0KKyAgICB2
b2lkIGVtaXRTYXZlT3JDb3B5TExJbnRCYXNlbGluZUNhbGxlZVNhdmVzRm9yKENvZGVCbG9jayos
IFZpcnR1YWxSZWdpc3RlciBvZmZzZXRWaXJ0dWFsUmVnaXN0ZXIsIFJlc3RvcmVUYWdSZWdpc3Rl
ck1vZGUsIEdQUlJlZyB0ZW1wMSwgR1BSUmVnIHRlbXAyLCBHUFJSZWcgdGVtcDMpOwogICAgIAog
ICAgIHZvaWQgZW1pdFJlc3RvcmVDYWxsZWVTYXZlc0ZvcihDb2RlQmxvY2sqIGNvZGVCbG9jaykK
ICAgICB7CkBAIC0zODYsMTggKzMzMSw3IEBAIHB1YmxpYzoKICAgICAgICAgZW1pdFJlc3RvcmVD
YWxsZWVTYXZlc0ZvcihjYWxsZWVTYXZlcyk7CiAgICAgfQogCi0gICAgdm9pZCBlbWl0UmVzdG9y
ZUNhbGxlZVNhdmVzRm9yKGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBjYWxsZWVTYXZlcykK
LSAgICB7Ci0gICAgICAgIFJlZ2lzdGVyU2V0IGRvbnRSZXN0b3JlUmVnaXN0ZXJzID0gUmVnaXN0
ZXJTZXQoUmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCksIFJlZ2lzdGVyU2V0OjphbGxGUFJz
KCkpOwotICAgICAgICB1bnNpZ25lZCByZWdpc3RlckNvdW50ID0gY2FsbGVlU2F2ZXMtPnNpemUo
KTsKLSAgICAgICAgCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZWdpc3RlckNv
dW50OyBpKyspIHsKLSAgICAgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQgZW50cnkgPSBjYWxsZWVT
YXZlcy0+YXQoaSk7Ci0gICAgICAgICAgICBpZiAoZG9udFJlc3RvcmVSZWdpc3RlcnMuZ2V0KGVu
dHJ5LnJlZygpKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGxvYWRQ
dHIoQWRkcmVzcyhmcmFtZVBvaW50ZXJSZWdpc3RlciwgZW50cnkub2Zmc2V0KCkpLCBlbnRyeS5y
ZWcoKS5ncHIoKSk7Ci0gICAgICAgIH0KLSAgICB9CisgICAgdm9pZCBlbWl0UmVzdG9yZUNhbGxl
ZVNhdmVzRm9yKGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBjYWxsZWVTYXZlcyk7CiAKICAg
ICB2b2lkIGVtaXRTYXZlQ2FsbGVlU2F2ZXMoKQogICAgIHsKQEAgLTQ3OCw1OCArNDEyLDcgQEAg
cHVibGljOgogCiAgICAgdm9pZCByZXN0b3JlQ2FsbGVlU2F2ZXNGcm9tRW50cnlGcmFtZUNhbGxl
ZVNhdmVzQnVmZmVyKEVudHJ5RnJhbWUqJik7CiAKLSAgICB2b2lkIGNvcHlMTEludEJhc2VsaW5l
Q2FsbGVlU2F2ZXNGcm9tRnJhbWVPclJlZ2lzdGVyVG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZm
ZXIoRW50cnlGcmFtZSomIHRvcEVudHJ5RnJhbWUsIGNvbnN0IFRlbXBSZWdpc3RlclNldCYgdXNl
ZFJlZ2lzdGVycyA9IHsgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpIH0p
Ci0gICAgewotI2lmIE5VTUJFUl9PRl9DQUxMRUVfU0FWRVNfUkVHSVNURVJTID4gMAotICAgICAg
ICBHUFJSZWcgdGVtcDEgPSB1c2VkUmVnaXN0ZXJzLmdldEZyZWVHUFIoMCk7Ci0gICAgICAgIEdQ
UlJlZyB0ZW1wMiA9IHVzZWRSZWdpc3RlcnMuZ2V0RnJlZUdQUigxKTsKLSAgICAgICAgRlBSUmVn
IGZwVGVtcCA9IHVzZWRSZWdpc3RlcnMuZ2V0RnJlZUZQUigpOwotICAgICAgICBBU1NFUlQodGVt
cDIgIT0gSW52YWxpZEdQUlJlZyk7Ci0KLSAgICAgICAgLy8gQ29weSBzYXZlZCBjYWxsZWVTYXZl
cyBvbiBzdGFjayBvciB1bnNhdmVkIGNhbGxlZVNhdmVzIGluIHJlZ2lzdGVyIHRvIHZtIGNhbGxl
ZVNhdmUgYnVmZmVyCi0gICAgICAgIGxvYWRQdHIoJnRvcEVudHJ5RnJhbWUsIHRlbXAxKTsKLSAg
ICAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihFbnRyeUZyYW1lOjpjYWxsZWVTYXZlUmVnaXN0ZXJz
QnVmZmVyT2Zmc2V0KCkpLCB0ZW1wMSk7Ci0KLSAgICAgICAgUmVnaXN0ZXJBdE9mZnNldExpc3Qq
IGFsbENhbGxlZVNhdmVzID0gUmVnaXN0ZXJTZXQ6OnZtQ2FsbGVlU2F2ZVJlZ2lzdGVyT2Zmc2V0
cygpOwotICAgICAgICBjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCogY3VycmVudENhbGxlZVNh
dmVzID0gJlJlZ2lzdGVyQXRPZmZzZXRMaXN0OjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVJlZ2lz
dGVycygpOwotICAgICAgICBSZWdpc3RlclNldCBkb250Q29weVJlZ2lzdGVycyA9IFJlZ2lzdGVy
U2V0OjpzdGFja1JlZ2lzdGVycygpOwotICAgICAgICB1bnNpZ25lZCByZWdpc3RlckNvdW50ID0g
YWxsQ2FsbGVlU2F2ZXMtPnNpemUoKTsKLQotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgcmVnaXN0ZXJDb3VudDsgaSsrKSB7Ci0gICAgICAgICAgICBSZWdpc3RlckF0T2Zmc2V0IGVu
dHJ5ID0gYWxsQ2FsbGVlU2F2ZXMtPmF0KGkpOwotICAgICAgICAgICAgaWYgKGRvbnRDb3B5UmVn
aXN0ZXJzLmdldChlbnRyeS5yZWcoKSkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgICAgICBSZWdpc3RlckF0T2Zmc2V0KiBjdXJyZW50RnJhbWVFbnRyeSA9IGN1cnJlbnRDYWxs
ZWVTYXZlcy0+ZmluZChlbnRyeS5yZWcoKSk7Ci0KLSAgICAgICAgICAgIGlmIChlbnRyeS5yZWco
KS5pc0dQUigpKSB7Ci0gICAgICAgICAgICAgICAgR1BSUmVnIHJlZ1RvU3RvcmU7Ci0gICAgICAg
ICAgICAgICAgaWYgKGN1cnJlbnRGcmFtZUVudHJ5KSB7Ci0gICAgICAgICAgICAgICAgICAgIC8v
IExvYWQgY2FsbGVlU2F2ZSBmcm9tIHN0YWNrIGludG8gdGVtcCByZWdpc3RlcgotICAgICAgICAg
ICAgICAgICAgICByZWdUb1N0b3JlID0gdGVtcDI7Ci0gICAgICAgICAgICAgICAgICAgIGxvYWRQ
dHIoQWRkcmVzcyhmcmFtZVBvaW50ZXJSZWdpc3RlciwgY3VycmVudEZyYW1lRW50cnktPm9mZnNl
dCgpKSwgcmVnVG9TdG9yZSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAg
ICAgICAgIC8vIEp1c3Qgc3RvcmUgY2FsbGVlIHNhdmUgZGlyZWN0bHkKLSAgICAgICAgICAgICAg
ICAgICAgcmVnVG9TdG9yZSA9IGVudHJ5LnJlZygpLmdwcigpOwotCi0gICAgICAgICAgICAgICAg
c3RvcmVQdHIocmVnVG9TdG9yZSwgQWRkcmVzcyh0ZW1wMSwgZW50cnkub2Zmc2V0KCkpKTsKLSAg
ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgRlBSUmVnIGZwUmVnVG9TdG9yZTsK
LSAgICAgICAgICAgICAgICBpZiAoY3VycmVudEZyYW1lRW50cnkpIHsKLSAgICAgICAgICAgICAg
ICAgICAgLy8gTG9hZCBjYWxsZWVTYXZlIGZyb20gc3RhY2sgaW50byB0ZW1wIHJlZ2lzdGVyCi0g
ICAgICAgICAgICAgICAgICAgIGZwUmVnVG9TdG9yZSA9IGZwVGVtcDsKLSAgICAgICAgICAgICAg
ICAgICAgbG9hZERvdWJsZShBZGRyZXNzKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBjdXJyZW50RnJh
bWVFbnRyeS0+b2Zmc2V0KCkpLCBmcFJlZ1RvU3RvcmUpOwotICAgICAgICAgICAgICAgIH0gZWxz
ZQotICAgICAgICAgICAgICAgICAgICAvLyBKdXN0IHN0b3JlIGNhbGxlZSBzYXZlIGRpcmVjdGx5
Ci0gICAgICAgICAgICAgICAgICAgIGZwUmVnVG9TdG9yZSA9IGVudHJ5LnJlZygpLmZwcigpOwot
Ci0gICAgICAgICAgICAgICAgc3RvcmVEb3VibGUoZnBSZWdUb1N0b3JlLCBBZGRyZXNzKHRlbXAx
LCBlbnRyeS5vZmZzZXQoKSkpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0jZWxzZQotICAg
ICAgICBVTlVTRURfUEFSQU0odG9wRW50cnlGcmFtZSk7Ci0gICAgICAgIFVOVVNFRF9QQVJBTSh1
c2VkUmVnaXN0ZXJzKTsKLSNlbmRpZgotICAgIH0KKyAgICB2b2lkIGNvcHlMTEludEJhc2VsaW5l
Q2FsbGVlU2F2ZXNGcm9tRnJhbWVPclJlZ2lzdGVyVG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZm
ZXIoRW50cnlGcmFtZSomLCBjb25zdCBUZW1wUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMgPSB7
IFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSB9KTsKIAogICAgIHZvaWQg
ZW1pdE1hdGVyaWFsaXplVGFnQ2hlY2tSZWdpc3RlcnMoKQogICAgIHsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzU3Bvb2xlcnMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVyc1Nwb29sZXJzLmgJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnNT
cG9vbGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTgxIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoSklUKQorCisjaW5jbHVkZSAiQXNzZW1ibHlIZWxwZXJzLmgiCisKK25hbWVzcGFjZSBKU0Mg
eworCit0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KK2NsYXNzIEFzc2VtYmx5SGVscGVyczo6U3Bvb2xl
ciB7CitwdWJsaWM6CisgICAgdXNpbmcgSklUID0gQXNzZW1ibHlIZWxwZXJzOworCisgICAgU3Bv
b2xlcihKSVQmIGppdCwgR1BSUmVnIGJhc2VHUFIpCisgICAgICAgIDogbV9qaXQoaml0KQorICAg
ICAgICAsIG1fYmFzZUdQUihiYXNlR1BSKQorICAgIHsgfQorCisgICAgdm9pZCBoYW5kbGVHUFIo
Y29uc3QgUmVnaXN0ZXJBdE9mZnNldCYgZW50cnkpCisgICAgeworICAgICAgICBBU1NFUlQoZW50
cnkucmVnKCkuaXNHUFIoKSk7CisgICAgICAgIGlmIGNvbnN0ZXhwciAoIWhhc1BhaXJPcCkKKyAg
ICAgICAgICAgIHJldHVybiBvcCgpLmhhbmRsZVNpbmdsZShlbnRyeS5vZmZzZXQoKSwgZW50cnku
cmVnKCkuZ3ByKCkpOworCisgICAgICAgIGlmICghbV9idWZmZXJlZEVudHJ5LnJlZygpLmlzU2V0
KCkpIHsKKyAgICAgICAgICAgIG1fYnVmZmVyZWRFbnRyeSA9IGVudHJ5OworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChlbnRyeS5vZmZzZXQoKSA9PSBtX2J1ZmZl
cmVkRW50cnkub2Zmc2V0KCkgKyBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KGdwclNpemUpKSB7Cisg
ICAgICAgICAgICBvcCgpLmhhbmRsZVBhaXIobV9idWZmZXJlZEVudHJ5Lm9mZnNldCgpLCBtX2J1
ZmZlcmVkRW50cnkucmVnKCkuZ3ByKCksIGVudHJ5LnJlZygpLmdwcigpKTsKKyAgICAgICAgICAg
IG1fYnVmZmVyZWRFbnRyeSA9IHsgfTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgICAgICBpZiAobV9idWZmZXJlZEVudHJ5Lm9mZnNldCgpID09IGVudHJ5Lm9mZnNldCgpICsg
c3RhdGljX2Nhc3Q8cHRyZGlmZl90PihncHJTaXplKSkgeworICAgICAgICAgICAgb3AoKS5oYW5k
bGVQYWlyKGVudHJ5Lm9mZnNldCgpLCBlbnRyeS5yZWcoKS5ncHIoKSwgbV9idWZmZXJlZEVudHJ5
LnJlZygpLmdwcigpKTsKKyAgICAgICAgICAgIG1fYnVmZmVyZWRFbnRyeSA9IHsgfTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGZsdXNoR1BSKCk7CisgICAgICAg
IGhhbmRsZUdQUihlbnRyeSk7CisgICAgfQorCisgICAgdm9pZCBmbHVzaEdQUigpCisgICAgewor
ICAgICAgICBpZiBjb25zdGV4cHIgKGhhc1BhaXJPcCkgeworICAgICAgICAgICAgaWYgKG1fYnVm
ZmVyZWRFbnRyeS5yZWcoKS5pc1NldCgpKSB7CisgICAgICAgICAgICAgICAgb3AoKS5oYW5kbGVT
aW5nbGUobV9idWZmZXJlZEVudHJ5Lm9mZnNldCgpLCBtX2J1ZmZlcmVkRW50cnkucmVnKCkuZ3By
KCkpOworICAgICAgICAgICAgICAgIG1fYnVmZmVyZWRFbnRyeSA9IHsgfTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgaGFuZGxlRlBSKGNvbnN0IFJlZ2lzdGVy
QXRPZmZzZXQmIGVudHJ5KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGVudHJ5LnJlZygpLmlzRlBS
KCkpOworICAgICAgICBpZiBjb25zdGV4cHIgKCFoYXNQYWlyT3ApCisgICAgICAgICAgICByZXR1
cm4gb3AoKS5oYW5kbGVTaW5nbGUoZW50cnkub2Zmc2V0KCksIGVudHJ5LnJlZygpLmZwcigpKTsK
KworICAgICAgICBpZiAoIW1fYnVmZmVyZWRFbnRyeS5yZWcoKS5pc1NldCgpKSB7CisgICAgICAg
ICAgICBtX2J1ZmZlcmVkRW50cnkgPSBlbnRyeTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgICAgICBpZiAoZW50cnkub2Zmc2V0KCkgPT0gbV9idWZmZXJlZEVudHJ5Lm9mZnNl
dCgpICsgc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihmcHJTaXplKSkgeworICAgICAgICAgICAgb3Ao
KS5oYW5kbGVQYWlyKG1fYnVmZmVyZWRFbnRyeS5vZmZzZXQoKSwgbV9idWZmZXJlZEVudHJ5LnJl
ZygpLmZwcigpLCBlbnRyeS5yZWcoKS5mcHIoKSk7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRW50
cnkgPSB7IH07CisgICAgICAgIH0gZWxzZSBpZiAobV9idWZmZXJlZEVudHJ5Lm9mZnNldCgpID09
IGVudHJ5Lm9mZnNldCgpICsgc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihmcHJTaXplKSkgeworICAg
ICAgICAgICAgb3AoKS5oYW5kbGVQYWlyKGVudHJ5Lm9mZnNldCgpLCBlbnRyeS5yZWcoKS5mcHIo
KSwgbV9idWZmZXJlZEVudHJ5LnJlZygpLmZwcigpKTsKKyAgICAgICAgICAgIG1fYnVmZmVyZWRF
bnRyeSA9IHsgfTsKKyAgICAgICAgfQorCisgICAgICAgIGZsdXNoRlBSKCk7CisgICAgICAgIGhh
bmRsZUZQUihlbnRyeSk7CisgICAgfQorCisgICAgdm9pZCBmbHVzaEZQUigpCisgICAgeworICAg
ICAgICBpZiBjb25zdGV4cHIgKGhhc1BhaXJPcCkgeworICAgICAgICAgICAgaWYgKG1fYnVmZmVy
ZWRFbnRyeS5yZWcoKS5pc1NldCgpKSB7CisgICAgICAgICAgICAgICAgb3AoKS5oYW5kbGVTaW5n
bGUobV9idWZmZXJlZEVudHJ5Lm9mZnNldCgpLCBtX2J1ZmZlcmVkRW50cnkucmVnKCkuZnByKCkp
OworICAgICAgICAgICAgICAgIG1fYnVmZmVyZWRFbnRyeSA9IHsgfTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH0KKworcHJpdmF0ZToKKyAgICBzdGF0aWMgY29uc3RleHByIHNpemVf
dCBncHJTaXplID0gc2l6ZW9mKENQVVJlZ2lzdGVyKTsKKyAgICBzdGF0aWMgY29uc3RleHByIHNp
emVfdCBmcHJTaXplID0gc2l6ZW9mKGRvdWJsZSk7CisjaWYgQ1BVKEFSTTY0KQorICAgIHN0YXRp
YyBjb25zdGV4cHIgYm9vbCBoYXNQYWlyT3AgPSB0cnVlOworI2Vsc2UKKyAgICBzdGF0aWMgY29u
c3RleHByIGJvb2wgaGFzUGFpck9wID0gZmFsc2U7CisjZW5kaWYKKworICAgIE9wJiBvcCgpIHsg
cmV0dXJuICpyZWludGVycHJldF9jYXN0PE9wKj4odGhpcyk7IH0KKworcHJvdGVjdGVkOgorICAg
IEpJVCYgbV9qaXQ7CisgICAgR1BSUmVnIG1fYmFzZUdQUjsKKyAgICBSZWdpc3RlckF0T2Zmc2V0
IG1fYnVmZmVyZWRFbnRyeTsKK307CisKK2NsYXNzIEFzc2VtYmx5SGVscGVyczo6TG9hZFJlZ1Nw
b29sZXIgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzOjpTcG9vbGVyPExvYWRSZWdTcG9vbGVyPiB7
CisgICAgdXNpbmcgQmFzZSA9IFNwb29sZXI8TG9hZFJlZ1Nwb29sZXI+OworICAgIHVzaW5nIEpJ
VCA9IEJhc2U6OkpJVDsKK3B1YmxpYzoKKyAgICBMb2FkUmVnU3Bvb2xlcihKSVQmIGppdCwgR1BS
UmVnIGJhc2VHUFIpCisgICAgICAgIDogQmFzZShqaXQsIGJhc2VHUFIpCisgICAgeyB9CisKKyAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgbG9hZEdQUihjb25zdCBSZWdpc3RlckF0T2Zmc2V0JiBlbnRy
eSkgeyBCYXNlOjpoYW5kbGVHUFIoZW50cnkpOyB9CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGZs
dXNoR1BSKCkgeyBCYXNlOjpmbHVzaEdQUigpOyB9CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGxv
YWRGUFIoY29uc3QgUmVnaXN0ZXJBdE9mZnNldCYgZW50cnkpIHsgQmFzZTo6aGFuZGxlRlBSKGVu
dHJ5KTsgfQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBmbHVzaEZQUigpIHsgQmFzZTo6Zmx1c2hG
UFIoKTsgfQorCisjaWYgQ1BVKEFSTTY0KQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJlZ1R5cGU+
CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGhhbmRsZVBhaXIocHRyZGlmZl90IG9mZnNldCwgUmVn
VHlwZSByZWcxLCBSZWdUeXBlIHJlZzIpCisgICAgeworICAgICAgICBtX2ppdC5sb2FkUGFpcjY0
KG1fYmFzZUdQUiwgVHJ1c3RlZEltbTMyKG9mZnNldCksIHJlZzEsIHJlZzIpOworICAgIH0KKyNl
bHNlCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgUmVnVHlwZT4KKyAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgaGFuZGxlUGFpcihwdHJkaWZmX3QsIFJlZ1R5cGUsIFJlZ1R5cGUpIHsgfQorI2VuZGlmCisK
KyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgaGFuZGxlU2luZ2xlKHB0cmRpZmZfdCBvZmZzZXQsIEdQ
UlJlZyByZWcpCisgICAgeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIG1faml0LmxvYWQ2
NChBZGRyZXNzKG1fYmFzZUdQUiwgb2Zmc2V0KSwgcmVnKTsKKyNlbHNlCisgICAgICAgIG1faml0
LmxvYWQzMihBZGRyZXNzKG1fYmFzZUdQUiwgb2Zmc2V0KSwgcmVnKTsKKyNlbmRpZgorICAgIH0K
KworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBoYW5kbGVTaW5nbGUocHRyZGlmZl90IG9mZnNldCwg
RlBSUmVnIHJlZykKKyAgICB7CisgICAgICAgIG1faml0LmxvYWREb3VibGUoQWRkcmVzcyhtX2Jh
c2VHUFIsIG9mZnNldCksIHJlZyk7CisgICAgfQorfTsKKworY2xhc3MgQXNzZW1ibHlIZWxwZXJz
OjpTdG9yZVJlZ1Nwb29sZXIgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzOjpTcG9vbGVyPFN0b3Jl
UmVnU3Bvb2xlcj4geworICAgIHVzaW5nIEJhc2UgPSBTcG9vbGVyPFN0b3JlUmVnU3Bvb2xlcj47
CisgICAgdXNpbmcgSklUID0gdHlwZW5hbWUgQmFzZTo6SklUOworcHVibGljOgorICAgIFN0b3Jl
UmVnU3Bvb2xlcihKSVQmIGppdCwgR1BSUmVnIGJhc2VHUFIpCisgICAgICAgIDogQmFzZShqaXQs
IGJhc2VHUFIpCisgICAgeyB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc3RvcmVHUFIoY29u
c3QgUmVnaXN0ZXJBdE9mZnNldCYgZW50cnkpIHsgQmFzZTo6aGFuZGxlR1BSKGVudHJ5KTsgfQor
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBmbHVzaEdQUigpIHsgQmFzZTo6Zmx1c2hHUFIoKTsgfQor
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzdG9yZUZQUihjb25zdCBSZWdpc3RlckF0T2Zmc2V0JiBl
bnRyeSkgeyBCYXNlOjpoYW5kbGVGUFIoZW50cnkpOyB9CisgICAgQUxXQVlTX0lOTElORSB2b2lk
IGZsdXNoRlBSKCkgeyBCYXNlOjpmbHVzaEZQUigpOyB9CisKKyNpZiBDUFUoQVJNNjQpCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgUmVnVHlwZT4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgaGFuZGxl
UGFpcihwdHJkaWZmX3Qgb2Zmc2V0LCBSZWdUeXBlIHJlZzEsIFJlZ1R5cGUgcmVnMikKKyAgICB7
CisgICAgICAgIG1faml0LnN0b3JlUGFpcjY0KHJlZzEsIHJlZzIsIG1fYmFzZUdQUiwgVHJ1c3Rl
ZEltbTMyKG9mZnNldCkpOworICAgIH0KKyNlbHNlCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgUmVn
VHlwZT4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgaGFuZGxlUGFpcihwdHJkaWZmX3QsIFJlZ1R5
cGUsIFJlZ1R5cGUpIHsgfQorI2VuZGlmCisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgaGFuZGxl
U2luZ2xlKHB0cmRpZmZfdCBvZmZzZXQsIEdQUlJlZyByZWcpCisgICAgeworI2lmIFVTRShKU1ZB
TFVFNjQpCisgICAgICAgIG1faml0LnN0b3JlNjQocmVnLCBBZGRyZXNzKG1fYmFzZUdQUiwgb2Zm
c2V0KSk7CisjZWxzZQorICAgICAgICBtX2ppdC5zdG9yZTMyKHJlZywgQWRkcmVzcyhtX2Jhc2VH
UFIsIG9mZnNldCkpOworI2VuZGlmCisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIGhh
bmRsZVNpbmdsZShwdHJkaWZmX3Qgb2Zmc2V0LCBGUFJSZWcgcmVnKQorICAgIHsKKyAgICAgICAg
bV9qaXQuc3RvcmVEb3VibGUocmVnLCBBZGRyZXNzKG1fYmFzZUdQUiwgb2Zmc2V0KSk7CisgICAg
fQorfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgUmVnVHlwZT4KK3N0cnVjdCBSZWdEaXNwYXRjaCB7
CisgICAgc3RhdGljIFJlZ1R5cGUgZ2V0KFJlZyk7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgU3Bv
b2xlcj4gc3RhdGljIFJlZ1R5cGUgdGVtcDEoY29uc3QgU3Bvb2xlciopOworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFNwb29sZXI+IHN0YXRpYyBSZWdUeXBlIHRlbXAyKGNvbnN0IFNwb29sZXIqKTsK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTcG9vbGVyPiBzdGF0aWMgUmVnVHlwZSYgcmVnVG9TdG9y
ZShTcG9vbGVyKik7CisgICAgc3RhdGljIGNvbnN0ZXhwciBSZWdUeXBlIGludmFsaWQoKTsKKyAg
ICBzdGF0aWMgY29uc3RleHByIHNpemVfdCByZWdTaXplKCk7CisgICAgc3RhdGljIGJvb2wgaXNW
YWxpZExvYWRQYWlySW1tKGludCk7CisgICAgc3RhdGljIGJvb2wgaXNWYWxpZFN0b3JlUGFpcklt
bShpbnQpOworfTsKKwordGVtcGxhdGU8Pgorc3RydWN0IFJlZ0Rpc3BhdGNoPEdQUlJlZz4gewor
ICAgIHN0YXRpYyBHUFJSZWcgZ2V0KFJlZyByZWcpIHsgcmV0dXJuIHJlZy5ncHIoKTsgfQorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFNwb29sZXI+IHN0YXRpYyBHUFJSZWcgdGVtcDEoY29uc3QgU3Bv
b2xlciogc3Bvb2xlcikgeyByZXR1cm4gc3Bvb2xlci0+bV90ZW1wMUdQUjsgfQorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFNwb29sZXI+IHN0YXRpYyBHUFJSZWcgdGVtcDIoY29uc3QgU3Bvb2xlciog
c3Bvb2xlcikgeyByZXR1cm4gc3Bvb2xlci0+bV90ZW1wMkdQUjsgfQorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFNwb29sZXI+IHN0YXRpYyBHUFJSZWcmIHJlZ1RvU3RvcmUoU3Bvb2xlciogc3Bvb2xl
cikgeyByZXR1cm4gc3Bvb2xlci0+bV9ncHJUb1N0b3JlOyB9CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBHUFJSZWcgaW52YWxpZCgpIHsgcmV0dXJuIEludmFsaWRHUFJSZWc7IH0KKyAgICBzdGF0aWMg
Y29uc3RleHByIHNpemVfdCByZWdTaXplKCkgeyByZXR1cm4gc2l6ZW9mKENQVVJlZ2lzdGVyKTsg
fQorI2lmIENQVShBUk02NCkKKyAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkTG9hZFBhaXJJbW0oaW50
IG9mZnNldCkgeyByZXR1cm4gQVJNNjRBc3NlbWJsZXI6OmlzVmFsaWRMRFBJbW08NjQ+KG9mZnNl
dCk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkU3RvcmVQYWlySW1tKGludCBvZmZzZXQpIHsg
cmV0dXJuIEFSTTY0QXNzZW1ibGVyOjppc1ZhbGlkU1RQSW1tPDY0PihvZmZzZXQpOyB9CisjZWxz
ZQorICAgIHN0YXRpYyBib29sIGlzVmFsaWRMb2FkUGFpckltbShpbnQpIHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgc3RhdGljIGJvb2wgaXNWYWxpZFN0b3JlUGFpckltbShpbnQpIHsgcmV0dXJuIGZh
bHNlOyB9CisjZW5kaWYKK307CisKK3RlbXBsYXRlPD4KK3N0cnVjdCBSZWdEaXNwYXRjaDxGUFJS
ZWc+IHsKKyAgICBzdGF0aWMgRlBSUmVnIGdldChSZWcgcmVnKSB7IHJldHVybiByZWcuZnByKCk7
IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTcG9vbGVyPiBzdGF0aWMgRlBSUmVnIHRlbXAxKGNv
bnN0IFNwb29sZXIqIHNwb29sZXIpIHsgcmV0dXJuIHNwb29sZXItPm1fdGVtcDFGUFI7IH0KKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBTcG9vbGVyPiBzdGF0aWMgRlBSUmVnIHRlbXAyKGNvbnN0IFNw
b29sZXIqIHNwb29sZXIpIHsgcmV0dXJuIHNwb29sZXItPm1fdGVtcDJGUFI7IH0KKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBTcG9vbGVyPiBzdGF0aWMgRlBSUmVnJiByZWdUb1N0b3JlKFNwb29sZXIq
IHNwb29sZXIpIHsgcmV0dXJuIHNwb29sZXItPm1fZnByVG9TdG9yZTsgfQorICAgIHN0YXRpYyBj
b25zdGV4cHIgRlBSUmVnIGludmFsaWQoKSB7IHJldHVybiBJbnZhbGlkRlBSUmVnOyB9CisgICAg
c3RhdGljIGNvbnN0ZXhwciBzaXplX3QgcmVnU2l6ZSgpIHsgcmV0dXJuIHNpemVvZihkb3VibGUp
OyB9CisjaWYgQ1BVKEFSTTY0KQorICAgIHN0YXRpYyBib29sIGlzVmFsaWRMb2FkUGFpckltbShp
bnQgb2Zmc2V0KSB7IHJldHVybiBBUk02NEFzc2VtYmxlcjo6aXNWYWxpZExEUEZQSW1tPDY0Pihv
ZmZzZXQpOyB9CisgICAgc3RhdGljIGJvb2wgaXNWYWxpZFN0b3JlUGFpckltbShpbnQgb2Zmc2V0
KSB7IHJldHVybiBBUk02NEFzc2VtYmxlcjo6aXNWYWxpZFNUUEZQSW1tPDY0PihvZmZzZXQpOyB9
CisjZWxzZQorICAgIHN0YXRpYyBib29sIGlzVmFsaWRMb2FkUGFpckltbShpbnQpIHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgc3RhdGljIGJvb2wgaXNWYWxpZFN0b3JlUGFpckltbShpbnQpIHsgcmV0
dXJuIGZhbHNlOyB9CisjZW5kaWYKK307CisKK2NsYXNzIEFzc2VtYmx5SGVscGVyczo6Q29weVNw
b29sZXIgeworcHVibGljOgorICAgIHVzaW5nIEpJVCA9IEFzc2VtYmx5SGVscGVyczsKKyAgICB1
c2luZyBBZGRyZXNzID0gSklUOjpBZGRyZXNzOworICAgIHVzaW5nIFRydXN0ZWRJbW0zMiA9IEpJ
VDo6VHJ1c3RlZEltbTMyOworCisgICAgc3RydWN0IFNvdXJjZSB7CisgICAgICAgIGVudW0gY2xh
c3MgVHlwZSB7IEJ1ZmZlck9mZnNldCwgUmVnLCBFbmNvZGVkSlNWYWx1ZSB9IHR5cGU7CisgICAg
ICAgIGludCBvZmZzZXQ7CisgICAgICAgIFJlZyByZWc7CisgICAgICAgIEVuY29kZWRKU1ZhbHVl
IHZhbHVlOworCisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJlZ1R5cGU+IFJlZ1R5cGUgZ2V0
UmVnKCkgeyByZXR1cm4gUmVnRGlzcGF0Y2g8UmVnVHlwZT46OmdldChyZWcpOyB9OworICAgIH07
CisKKyAgICBlbnVtIGNsYXNzIEJ1ZmZlclJlZ3MgeworICAgICAgICBOZWVkUHJlc2VydmF0aW9u
LAorICAgICAgICBBbGxvd01vZGlmaWNhdGlvbgorICAgIH07CisKKyAgICBDb3B5U3Bvb2xlcihC
dWZmZXJSZWdzIGF0dHJpYnV0ZSwgSklUJiBqaXQsIEdQUlJlZyBzcmNCdWZmZXIsIEdQUlJlZyBk
ZXN0QnVmZmVyLCBHUFJSZWcgdGVtcDEsIEdQUlJlZyB0ZW1wMiwgRlBSUmVnIGZwVGVtcDEgPSBJ
bnZhbGlkRlBSUmVnLCBGUFJSZWcgZnBUZW1wMiA9IEludmFsaWRGUFJSZWcpCisgICAgICAgIDog
bV9qaXQoaml0KQorICAgICAgICAsIG1fc3JjQnVmZmVyR1BSKHNyY0J1ZmZlcikKKyAgICAgICAg
LCBtX2RzdEJ1ZmZlckdQUihkZXN0QnVmZmVyKQorICAgICAgICAsIG1fdGVtcDFHUFIodGVtcDEp
CisgICAgICAgICwgbV90ZW1wMkdQUih0ZW1wMikKKyAgICAgICAgLCBtX3RlbXAxRlBSKGZwVGVt
cDEpCisgICAgICAgICwgbV90ZW1wMkZQUihmcFRlbXAyKQorICAgICAgICAsIG1fYnVmZmVyUmVn
c0F0dHIoYXR0cmlidXRlKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByIChoYXNQYWlyT3Ag
JiYgIWlzQVJNNjQoKSkKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
IC8vIHVuc3VwcG9ydGVkIGFyY2hpdGVjdHVyZS4KKyAgICB9CisKKyAgICBDb3B5U3Bvb2xlcihK
SVQmIGppdCwgR1BSUmVnIHNyY0J1ZmZlciwgR1BSUmVnIGRlc3RCdWZmZXIsIEdQUlJlZyB0ZW1w
MSwgR1BSUmVnIHRlbXAyLCBGUFJSZWcgZnBUZW1wMSA9IEludmFsaWRGUFJSZWcsIEZQUlJlZyBm
cFRlbXAyID0gSW52YWxpZEZQUlJlZykKKyAgICAgICAgOiBDb3B5U3Bvb2xlcihCdWZmZXJSZWdz
OjpOZWVkUHJlc2VydmF0aW9uLCBqaXQsIHNyY0J1ZmZlciwgZGVzdEJ1ZmZlciwgdGVtcDEsIHRl
bXAyLCBmcFRlbXAxLCBmcFRlbXAyKQorICAgIHsgfQorCitwcml2YXRlOgorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFJlZ1R5cGU+IFJlZ1R5cGUgdGVtcDEoKSBjb25zdCB7IHJldHVybiBSZWdEaXNw
YXRjaDxSZWdUeXBlPjo6dGVtcDEodGhpcyk7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSZWdU
eXBlPiBSZWdUeXBlIHRlbXAyKCkgY29uc3QgeyByZXR1cm4gUmVnRGlzcGF0Y2g8UmVnVHlwZT46
OnRlbXAyKHRoaXMpOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgUmVnVHlwZT4gUmVnVHlwZSYg
cmVnVG9TdG9yZSgpIHsgcmV0dXJuIFJlZ0Rpc3BhdGNoPFJlZ1R5cGU+OjpyZWdUb1N0b3JlKHRo
aXMpOyB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSZWdUeXBlPiBzdGF0aWMgY29uc3RleHBy
IFJlZ1R5cGUgaW52YWxpZCgpIHsgcmV0dXJuIFJlZ0Rpc3BhdGNoPFJlZ1R5cGU+OjppbnZhbGlk
KCk7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSZWdUeXBlPiBzdGF0aWMgY29uc3RleHByIGlu
dCByZWdTaXplKCkgeyByZXR1cm4gUmVnRGlzcGF0Y2g8UmVnVHlwZT46OnJlZ1NpemUoKTsgfQor
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgUmVnVHlwZT4gc3RhdGljIGJvb2wgaXNWYWxpZExvYWRQ
YWlySW1tKGludCBvZmZzZXQpIHsgcmV0dXJuIFJlZ0Rpc3BhdGNoPFJlZ1R5cGU+Ojppc1ZhbGlk
TG9hZFBhaXJJbW0ob2Zmc2V0KTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJlZ1R5cGU+IHN0
YXRpYyBib29sIGlzVmFsaWRTdG9yZVBhaXJJbW0oaW50IG9mZnNldCkgeyByZXR1cm4gUmVnRGlz
cGF0Y2g8UmVnVHlwZT46OmlzVmFsaWRTdG9yZVBhaXJJbW0ob2Zmc2V0KTsgfQorCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgUmVnVHlwZT4KKyAgICB2b2lkIGxvYWQoaW50IG9mZnNldCkKKyAgICB7
CisgICAgICAgIGlmIGNvbnN0ZXhwciAoIWhhc1BhaXJPcCkgeworICAgICAgICAgICAgYXV0byYg
cmVnVG9TdG9yZSA9IHRoaXMtPnJlZ1RvU3RvcmU8UmVnVHlwZT4oKTsKKyAgICAgICAgICAgIHJl
Z1RvU3RvcmUgPSB0ZW1wMTxSZWdUeXBlPigpOworICAgICAgICAgICAgbG9hZChvZmZzZXQsIHJl
Z1RvU3RvcmUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgYXV0
byYgc291cmNlID0gbV9zb3VyY2VzW21fY3VycmVudFNvdXJjZSsrXTsKKyAgICAgICAgc291cmNl
LnR5cGUgPSBTb3VyY2U6OlR5cGU6OkJ1ZmZlck9mZnNldDsKKyAgICAgICAgc291cmNlLm9mZnNl
dCA9IG9mZnNldDsKKyAgICB9CisKKyAgICB2b2lkIG1vdmUoRW5jb2RlZEpTVmFsdWUgdmFsdWUp
CisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKCFoYXNQYWlyT3ApIHsKKyAgICAgICAgICAg
IGF1dG8mIHJlZ1RvU3RvcmUgPSB0aGlzLT5yZWdUb1N0b3JlPEdQUlJlZz4oKTsKKyAgICAgICAg
ICAgIHJlZ1RvU3RvcmUgPSB0ZW1wMTxHUFJSZWc+KCk7CisgICAgICAgICAgICBtb3ZlKHZhbHVl
LCByZWdUb1N0b3JlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IGF1dG8mIHNvdXJjZSA9IG1fc291cmNlc1ttX2N1cnJlbnRTb3VyY2UrK107CisgICAgICAgIHNv
dXJjZS50eXBlID0gU291cmNlOjpUeXBlOjpFbmNvZGVkSlNWYWx1ZTsKKyAgICAgICAgc291cmNl
LnZhbHVlID0gdmFsdWU7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgUmVnVHlwZT4K
KyAgICB2b2lkIGNvcHkoUmVnVHlwZSByZWcpCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIg
KCFoYXNQYWlyT3ApIHsKKyAgICAgICAgICAgIGF1dG8mIHJlZ1RvU3RvcmUgPSB0aGlzLT5yZWdU
b1N0b3JlPFJlZ1R5cGU+KCk7CisgICAgICAgICAgICByZWdUb1N0b3JlID0gcmVnOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgYXV0byYgc291cmNlID0gbV9zb3Vy
Y2VzW21fY3VycmVudFNvdXJjZSsrXTsKKyAgICAgICAgc291cmNlLnR5cGUgPSBTb3VyY2U6OlR5
cGU6OlJlZzsKKyAgICAgICAgc291cmNlLnJlZyA9IHJlZzsKKyAgICB9OworCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgUmVnVHlwZT4KKyAgICB2b2lkIHN0b3JlKGludCBzdG9yZU9mZnNldCkKKyAg
ICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAoIWhhc1BhaXJPcCkgeworICAgICAgICAgICAgYXV0
byByZWdUb1N0b3JlID0gdGhpcy0+cmVnVG9TdG9yZTxSZWdUeXBlPigpOworICAgICAgICAgICAg
c3RvcmUocmVnVG9TdG9yZSwgc3RvcmVPZmZzZXQpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgY29uc3QgYm9vbCByZWdUeXBlSXNHUFIgPSBzdGQ6OmlzX3NhbWU8
UmVnVHlwZSwgR1BSUmVnPjo6dmFsdWU7CisKKyAgICAgICAgaWYgKG1fY3VycmVudFNvdXJjZSA8
IDIpIHsKKyAgICAgICAgICAgIG1fZGVmZXJyZWRTdG9yZU9mZnNldCA9IHN0b3JlT2Zmc2V0Owor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgUmVnVHlwZSByZWdUb1N0
b3JlMSA9IGludmFsaWQ8UmVnVHlwZT4oKTsKKyAgICAgICAgUmVnVHlwZSByZWdUb1N0b3JlMiA9
IGludmFsaWQ8UmVnVHlwZT4oKTsKKyAgICAgICAgYXV0byYgc291cmNlMSA9IG1fc291cmNlc1sw
XTsKKyAgICAgICAgYXV0byYgc291cmNlMiA9IG1fc291cmNlc1sxXTsKKyAgICAgICAgYXV0byBz
cmNPZmZzZXQxID0gbV9zb3VyY2VzWzBdLm9mZnNldCAtIG1fc3JjT2Zmc2V0QWRqdXN0bWVudDsK
KyAgICAgICAgYXV0byBzcmNPZmZzZXQyID0gbV9zb3VyY2VzWzFdLm9mZnNldCAtIG1fc3JjT2Zm
c2V0QWRqdXN0bWVudDsKKyAgICAgICAgY29uc3RleHByIGludCByZWdpc3RlclNpemUgPSByZWdT
aXplPFJlZ1R5cGU+KCk7CisKKyAgICAgICAgaWYgKHNvdXJjZTEudHlwZSA9PSBTb3VyY2U6OlR5
cGU6OkJ1ZmZlck9mZnNldCAmJiBzb3VyY2UyLnR5cGUgPT0gU291cmNlOjpUeXBlOjpCdWZmZXJP
ZmZzZXQpIHsKKyAgICAgICAgICAgIHJlZ1RvU3RvcmUxID0gdGVtcDE8UmVnVHlwZT4oKTsKKyAg
ICAgICAgICAgIHJlZ1RvU3RvcmUyID0gdGVtcDI8UmVnVHlwZT4oKTsKKworICAgICAgICAgICAg
aW50IG9mZnNldERlbHRhID0gYWJzKHNyY09mZnNldDEgLSBzcmNPZmZzZXQyKTsKKyAgICAgICAg
ICAgIGludCBtaW5PZmZzZXQgPSBzdGQ6Om1pbihzcmNPZmZzZXQxLCBzcmNPZmZzZXQyKTsKKyAg
ICAgICAgICAgIGJvb2wgaXNWYWxpZE9mZnNldCA9IGlzVmFsaWRMb2FkUGFpckltbTxSZWdUeXBl
PihtaW5PZmZzZXQpOworCisgICAgICAgICAgICBpZiAob2Zmc2V0RGVsdGEgIT0gcmVnaXN0ZXJT
aXplIHx8ICghaXNWYWxpZE9mZnNldCAmJiBtX2J1ZmZlclJlZ3NBdHRyICE9IEJ1ZmZlclJlZ3M6
OkFsbG93TW9kaWZpY2F0aW9uKSkgeworICAgICAgICAgICAgICAgIGxvYWQoc3JjT2Zmc2V0MSwg
cmVnVG9TdG9yZTEpOworICAgICAgICAgICAgICAgIGxvYWQoc3JjT2Zmc2V0MiwgcmVnVG9TdG9y
ZTIpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAoIWlzVmFsaWRP
ZmZzZXQpIHsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG1fYnVmZmVyUmVnc0F0dHIgPT0g
QnVmZmVyUmVnczo6QWxsb3dNb2RpZmljYXRpb24pOworICAgICAgICAgICAgICAgICAgICBtX3Ny
Y09mZnNldEFkanVzdG1lbnQgKz0gbWluT2Zmc2V0OworICAgICAgICAgICAgICAgICAgICBtX2pp
dC5hZGRQdHIoVHJ1c3RlZEltbTMyKG1pbk9mZnNldCksIG1fc3JjQnVmZmVyR1BSKTsKKworICAg
ICAgICAgICAgICAgICAgICBzcmNPZmZzZXQxIC09IG1pbk9mZnNldDsKKyAgICAgICAgICAgICAg
ICAgICAgc3JjT2Zmc2V0MiAtPSBtaW5PZmZzZXQ7CisgICAgICAgICAgICAgICAgICAgIEFTU0VS
VChpc1ZhbGlkTG9hZFBhaXJJbW08UmVnVHlwZT4oc3RkOjptaW4oc3JjT2Zmc2V0MSwgc3JjT2Zm
c2V0MikpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKHNyY09mZnNl
dDEgPCBzcmNPZmZzZXQyKQorICAgICAgICAgICAgICAgICAgICBsb2FkUGFpcihzcmNPZmZzZXQx
LCByZWdUb1N0b3JlMSwgcmVnVG9TdG9yZTIpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICAgICAgbG9hZFBhaXIoc3JjT2Zmc2V0MiwgcmVnVG9TdG9yZTIsIHJlZ1RvU3Rv
cmUxKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChzb3VyY2UxLnR5cGUgPT0g
U291cmNlOjpUeXBlOjpCdWZmZXJPZmZzZXQpIHsKKyAgICAgICAgICAgIHJlZ1RvU3RvcmUxID0g
dGVtcDE8UmVnVHlwZT4oKTsKKyAgICAgICAgICAgIGxvYWQoc3JjT2Zmc2V0MSwgcmVnVG9TdG9y
ZTEpOworICAgICAgICAgICAgaWYgKHNvdXJjZTIudHlwZSA9PSBTb3VyY2U6OlR5cGU6OkVuY29k
ZWRKU1ZhbHVlKSB7CisgICAgICAgICAgICAgICAgaWYgY29uc3RleHByIChyZWdUeXBlSXNHUFIp
IHsKKyAgICAgICAgICAgICAgICAgICAgcmVnVG9TdG9yZTIgPSB0ZW1wMjxSZWdUeXBlPigpOwor
ICAgICAgICAgICAgICAgICAgICBtb3ZlKHNvdXJjZTIudmFsdWUsIHJlZ1RvU3RvcmUyKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICByZWdU
b1N0b3JlMiA9IHNvdXJjZTIuZ2V0UmVnPFJlZ1R5cGU+KCk7CisKKyAgICAgICAgfSBlbHNlIGlm
IChzb3VyY2UyLnR5cGUgPT0gU291cmNlOjpUeXBlOjpCdWZmZXJPZmZzZXQpIHsKKyAgICAgICAg
ICAgIGlmIChzb3VyY2UxLnR5cGUgPT0gU291cmNlOjpUeXBlOjpFbmNvZGVkSlNWYWx1ZSkgewor
ICAgICAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAocmVnVHlwZUlzR1BSKSB7CisgICAgICAgICAg
ICAgICAgICAgIHJlZ1RvU3RvcmUxID0gdGVtcDE8UmVnVHlwZT4oKTsKKyAgICAgICAgICAgICAg
ICAgICAgbW92ZShzb3VyY2UxLnZhbHVlLCByZWdUb1N0b3JlMSk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgcmVnVG9TdG9yZTEgPSBzb3Vy
Y2UxLmdldFJlZzxSZWdUeXBlPigpOworICAgICAgICAgICAgcmVnVG9TdG9yZTIgPSB0ZW1wMjxS
ZWdUeXBlPigpOworICAgICAgICAgICAgbG9hZChzcmNPZmZzZXQyLCByZWdUb1N0b3JlMik7CisK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChzb3VyY2UxLnR5cGUgPT0gU291cmNl
OjpUeXBlOjpFbmNvZGVkSlNWYWx1ZSkgeworICAgICAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAo
cmVnVHlwZUlzR1BSKSB7CisgICAgICAgICAgICAgICAgICAgIHJlZ1RvU3RvcmUxID0gdGVtcDE8
UmVnVHlwZT4oKTsKKyAgICAgICAgICAgICAgICAgICAgbW92ZShzb3VyY2UxLnZhbHVlLCByZWdU
b1N0b3JlMSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICAgICAgcmVnVG9TdG9yZTEgPSBzb3VyY2UxLmdldFJlZzxSZWdUeXBlPigpOworCisgICAg
ICAgICAgICBpZiAoc291cmNlMi50eXBlID09IFNvdXJjZTo6VHlwZTo6RW5jb2RlZEpTVmFsdWUp
IHsKKyAgICAgICAgICAgICAgICBpZiBjb25zdGV4cHIgKHJlZ1R5cGVJc0dQUikgeworICAgICAg
ICAgICAgICAgICAgICByZWdUb1N0b3JlMiA9IHRlbXAyPFJlZ1R5cGU+KCk7CisgICAgICAgICAg
ICAgICAgICAgIG1vdmUoc291cmNlMi52YWx1ZSwgcmVnVG9TdG9yZTIpOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHJlZ1RvU3RvcmUyID0g
c291cmNlMi5nZXRSZWc8UmVnVHlwZT4oKTsKKyAgICAgICAgfQorCisgICAgICAgIGludCBkc3RP
ZmZzZXQxID0gbV9kZWZlcnJlZFN0b3JlT2Zmc2V0IC0gbV9kc3RPZmZzZXRBZGp1c3RtZW50Owor
ICAgICAgICBpbnQgZHN0T2Zmc2V0MiA9IHN0b3JlT2Zmc2V0IC0gbV9kc3RPZmZzZXRBZGp1c3Rt
ZW50OworCisgICAgICAgIGludCBvZmZzZXREZWx0YSA9IGFicyhkc3RPZmZzZXQxIC0gZHN0T2Zm
c2V0Mik7CisgICAgICAgIGludCBtaW5PZmZzZXQgPSBzdGQ6Om1pbihkc3RPZmZzZXQxLCBkc3RP
ZmZzZXQyKTsKKyAgICAgICAgYm9vbCBpc1ZhbGlkT2Zmc2V0ID0gaXNWYWxpZFN0b3JlUGFpcklt
bTxSZWdUeXBlPihtaW5PZmZzZXQpOworCisgICAgICAgIGlmIChvZmZzZXREZWx0YSAhPSByZWdp
c3RlclNpemUgfHwgKCFpc1ZhbGlkT2Zmc2V0ICYmIG1fYnVmZmVyUmVnc0F0dHIgIT0gQnVmZmVy
UmVnczo6QWxsb3dNb2RpZmljYXRpb24pKSB7CisgICAgICAgICAgICBzdG9yZShyZWdUb1N0b3Jl
MSwgZHN0T2Zmc2V0MSk7CisgICAgICAgICAgICBzdG9yZShyZWdUb1N0b3JlMiwgZHN0T2Zmc2V0
Mik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoIWlzVmFsaWRPZmZzZXQpIHsK
KyAgICAgICAgICAgICAgICBBU1NFUlQobV9idWZmZXJSZWdzQXR0ciA9PSBCdWZmZXJSZWdzOjpB
bGxvd01vZGlmaWNhdGlvbik7CisgICAgICAgICAgICAgICAgbV9kc3RPZmZzZXRBZGp1c3RtZW50
ICs9IG1pbk9mZnNldDsKKyAgICAgICAgICAgICAgICBtX2ppdC5hZGRQdHIoVHJ1c3RlZEltbTMy
KG1pbk9mZnNldCksIG1fZHN0QnVmZmVyR1BSKTsKKworICAgICAgICAgICAgICAgIGRzdE9mZnNl
dDEgLT0gbWluT2Zmc2V0OworICAgICAgICAgICAgICAgIGRzdE9mZnNldDIgLT0gbWluT2Zmc2V0
OworICAgICAgICAgICAgICAgIEFTU0VSVChpc1ZhbGlkU3RvcmVQYWlySW1tPFJlZ1R5cGU+KHN0
ZDo6bWluKGRzdE9mZnNldDEsIGRzdE9mZnNldDIpKSk7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBpZiAoZHN0T2Zmc2V0MSA8IGRzdE9mZnNldDIpCisgICAgICAgICAgICAgICAgc3RvcmVQ
YWlyKHJlZ1RvU3RvcmUxLCByZWdUb1N0b3JlMiwgZHN0T2Zmc2V0MSk7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgc3RvcmVQYWlyKHJlZ1RvU3RvcmUyLCByZWdUb1N0b3JlMSwg
ZHN0T2Zmc2V0Mik7CisgICAgICAgIH0KKworICAgICAgICBtX2N1cnJlbnRTb3VyY2UgPSAwOwor
ICAgIH07CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSZWdUeXBlPgorICAgIHZvaWQgZmx1c2go
KQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByICghaGFzUGFpck9wKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIGlmICghbV9jdXJyZW50U291cmNlKQorICAgICAgICAgICAgcmV0
dXJuOyAvLyBOb3RoaW5nIHRvIGZsdXNoLgorCisgICAgICAgIEFTU0VSVChtX2N1cnJlbnRTb3Vy
Y2UgPT0gMSk7CisKKyAgICAgICAgUmVnVHlwZSByZWdUb1N0b3JlID0gaW52YWxpZDxSZWdUeXBl
PigpOworICAgICAgICBhdXRvJiBzb3VyY2UgPSBtX3NvdXJjZXNbMF07CisgICAgICAgIGF1dG8m
IHNyY09mZnNldCA9IHNvdXJjZS5vZmZzZXQ7CisgICAgICAgIGNvbnN0IGJvb2wgcmVnVHlwZUlz
R1BSID0gc3RkOjppc19zYW1lPFJlZ1R5cGUsIEdQUlJlZz46OnZhbHVlOworCisgICAgICAgIGlm
IChzb3VyY2UudHlwZSA9PSBTb3VyY2U6OlR5cGU6OkJ1ZmZlck9mZnNldCkgeworICAgICAgICAg
ICAgcmVnVG9TdG9yZSA9IHRlbXAxPFJlZ1R5cGU+KCk7CisgICAgICAgICAgICBsb2FkKHNyY09m
ZnNldCAtIG1fc3JjT2Zmc2V0QWRqdXN0bWVudCwgcmVnVG9TdG9yZSk7CisgICAgICAgIH0gZWxz
ZSBpZiAoc291cmNlLnR5cGUgPT0gU291cmNlOjpUeXBlOjpSZWcpCisgICAgICAgICAgICByZWdU
b1N0b3JlID0gc291cmNlLmdldFJlZzxSZWdUeXBlPigpOworICAgICAgICBlbHNlIGlmIGNvbnN0
ZXhwciAocmVnVHlwZUlzR1BSKSB7CisgICAgICAgICAgICByZWdUb1N0b3JlID0gdGVtcDE8UmVn
VHlwZT4oKTsKKyAgICAgICAgICAgIG1vdmUoc291cmNlLnZhbHVlLCByZWdUb1N0b3JlKTsKKyAg
ICAgICAgfQorCisgICAgICAgIHN0b3JlKHJlZ1RvU3RvcmUsIG1fZGVmZXJyZWRTdG9yZU9mZnNl
dCAtIG1fZHN0T2Zmc2V0QWRqdXN0bWVudCk7CisgICAgICAgIG1fY3VycmVudFNvdXJjZSA9IDA7
CisgICAgfQorCitwdWJsaWM6CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGxvYWRHUFIoaW50IHNy
Y09mZnNldCkgeyBsb2FkPEdQUlJlZz4oc3JjT2Zmc2V0KTsgfQorICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBjb3B5R1BSKEdQUlJlZyBncHIpIHsgY29weTxHUFJSZWc+KGdwcik7IH0KKyAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgbW92ZUNvbnN0YW50KEVuY29kZWRKU1ZhbHVlIHZhbHVlKSB7IG1vdmUo
dmFsdWUpOyB9CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHN0b3JlR1BSKGludCBkc3RPZmZzZXQp
IHsgc3RvcmU8R1BSUmVnPihkc3RPZmZzZXQpOyB9CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGZs
dXNoR1BSKCkgeyBmbHVzaDxHUFJSZWc+KCk7IH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBs
b2FkRlBSKGludCBzcmNPZmZzZXQpIHsgbG9hZDxGUFJSZWc+KHNyY09mZnNldCk7IH0KKyAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgY29weUZQUihGUFJSZWcgZ3ByKSB7IGNvcHk8RlBSUmVnPihncHIp
OyB9CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHN0b3JlRlBSKGludCBkc3RPZmZzZXQpIHsgc3Rv
cmU8RlBSUmVnPihkc3RPZmZzZXQpOyB9CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGZsdXNoRlBS
KCkgeyBmbHVzaDxGUFJSZWc+KCk7IH0KKworcHJvdGVjdGVkOgorICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBtb3ZlKEVuY29kZWRKU1ZhbHVlIHZhbHVlLCBHUFJSZWcgZGVzdCkKKyAgICB7CisgICAg
ICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTY0KHZhbHVlKSwgZGVzdCk7CisgICAgfQorCisgICAg
QUxXQVlTX0lOTElORSB2b2lkIGxvYWQoaW50IG9mZnNldCwgR1BSUmVnIGRlc3QpCisgICAgewor
ICAgICAgICBtX2ppdC5sb2FkUHRyKEFkZHJlc3MobV9zcmNCdWZmZXJHUFIsIG9mZnNldCksIGRl
c3QpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzdG9yZShHUFJSZWcgc3JjLCBp
bnQgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9qaXQuc3RvcmVQdHIoc3JjLCBBZGRyZXNzKG1f
ZHN0QnVmZmVyR1BSLCBvZmZzZXQpKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
bG9hZChpbnQgb2Zmc2V0LCBGUFJSZWcgZGVzdCkKKyAgICB7CisgICAgICAgIG1faml0LmxvYWRE
b3VibGUoQWRkcmVzcyhtX3NyY0J1ZmZlckdQUiwgb2Zmc2V0KSwgZGVzdCk7CisgICAgfQorCisg
ICAgQUxXQVlTX0lOTElORSB2b2lkIHN0b3JlKEZQUlJlZyBzcmMsIGludCBvZmZzZXQpCisgICAg
eworICAgICAgICBtX2ppdC5zdG9yZURvdWJsZShzcmMsIEFkZHJlc3MobV9kc3RCdWZmZXJHUFIs
IG9mZnNldCkpOworICAgIH0KKworI2lmIENQVShBUk02NCkKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBSZWdUeXBlPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBsb2FkUGFpcihpbnQgb2Zmc2V0LCBS
ZWdUeXBlIGRlc3QxLCBSZWdUeXBlIGRlc3QyKQorICAgIHsKKyAgICAgICAgbV9qaXQubG9hZFBh
aXI2NChtX3NyY0J1ZmZlckdQUiwgVHJ1c3RlZEltbTMyKG9mZnNldCksIGRlc3QxLCBkZXN0Mik7
CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgUmVnVHlwZT4KKyAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgc3RvcmVQYWlyKFJlZ1R5cGUgc3JjMSwgUmVnVHlwZSBzcmMyLCBpbnQgb2Zmc2V0
KQorICAgIHsKKyAgICAgICAgbV9qaXQuc3RvcmVQYWlyNjQoc3JjMSwgc3JjMiwgbV9kc3RCdWZm
ZXJHUFIsIFRydXN0ZWRJbW0zMihvZmZzZXQpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgY29uc3Rl
eHByIGJvb2wgaGFzUGFpck9wID0gdHJ1ZTsKKyNlbHNlCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
UmVnVHlwZT4gQUxXQVlTX0lOTElORSB2b2lkIGxvYWRQYWlyKGludCwgUmVnVHlwZSwgUmVnVHlw
ZSkgeyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgUmVnVHlwZT4gQUxXQVlTX0lOTElORSB2b2lk
IHN0b3JlUGFpcihSZWdUeXBlLCBSZWdUeXBlLCBpbnQpIHsgfQorCisgICAgc3RhdGljIGNvbnN0
ZXhwciBib29sIGhhc1BhaXJPcCA9IGZhbHNlOworI2VuZGlmCisKKyAgICBKSVQmIG1faml0Owor
CisgICAgR1BSUmVnIG1fc3JjQnVmZmVyR1BSOworICAgIEdQUlJlZyBtX2RzdEJ1ZmZlckdQUjsK
KyAgICBHUFJSZWcgbV90ZW1wMUdQUjsKKyAgICBHUFJSZWcgbV90ZW1wMkdQUjsKKyAgICBGUFJS
ZWcgbV90ZW1wMUZQUjsKKyAgICBGUFJSZWcgbV90ZW1wMkZQUjsKKworcHJpdmF0ZToKKyAgICBz
dGF0aWMgY29uc3RleHByIGludCBncHJTaXplID0gc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoQ1BV
UmVnaXN0ZXIpKTsKKyAgICBzdGF0aWMgY29uc3RleHByIGludCBmcHJTaXplID0gc3RhdGljX2Nh
c3Q8aW50PihzaXplb2YoZG91YmxlKSk7CisKKyAgICAvLyBUaGVzZSBwb2ludCB0byB3aGljaCBy
ZWdpc3RlciB0byB1c2UuCisgICAgR1BSUmVnIG1fZ3ByVG9TdG9yZSB7IEludmFsaWRHUFJSZWcg
fTsgLy8gT25seSB1c2VkIHdoZW4gIWhhc1BhaXJPcC4KKyAgICBGUFJSZWcgbV9mcHJUb1N0b3Jl
IHsgSW52YWxpZEZQUlJlZyB9OyAvLyBPbmx5IHVzZWQgd2hlbiAhaGFzUGFpck9wLgorCisgICAg
QnVmZmVyUmVncyBtX2J1ZmZlclJlZ3NBdHRyOworICAgIFNvdXJjZSBtX3NvdXJjZXNbMl07Cisg
ICAgdW5zaWduZWQgbV9jdXJyZW50U291cmNlIHsgMCB9OworICAgIGludCBtX3NyY09mZnNldEFk
anVzdG1lbnQgeyAwIH07CisgICAgaW50IG1fZHN0T2Zmc2V0QWRqdXN0bWVudCB7IDAgfTsKKyAg
ICBpbnQgbV9kZWZlcnJlZFN0b3JlT2Zmc2V0OworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgUmVn
VHlwZT4gZnJpZW5kIHN0cnVjdCBSZWdEaXNwYXRjaDsKK307CisKK30gLy8gbmFtZXNwYWNlIEpT
QworCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5jcHAJKHJldmlzaW9uIDI3
ODg4NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2NyYXRjaFJlZ2lzdGVyQWxsb2Nh
dG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTQtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTQtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShK
SVQpCiAKKyNpbmNsdWRlICJBc3NlbWJseUhlbHBlcnNTcG9vbGVycy5oIgogI2luY2x1ZGUgIk1h
eEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsLmgiCiAjaW5jbHVkZSAiVk0uaCIKIApAQCAtMTAx
LDcgKzEwMiw3IEBAIHR5cGVuYW1lIEJhbmtJbmZvOjpSZWdpc3RlclR5cGUgU2NyYXRjaFIKIEdQ
UlJlZyBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OmFsbG9jYXRlU2NyYXRjaEdQUigpIHsgcmV0
dXJuIGFsbG9jYXRlU2NyYXRjaDxHUFJJbmZvPigpOyB9CiBGUFJSZWcgU2NyYXRjaFJlZ2lzdGVy
QWxsb2NhdG9yOjphbGxvY2F0ZVNjcmF0Y2hGUFIoKSB7IHJldHVybiBhbGxvY2F0ZVNjcmF0Y2g8
RlBSSW5mbz4oKTsgfQogCi1TY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OlByZXNlcnZlZFN0YXRl
IFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6cHJlc2VydmVSZXVzZWRSZWdpc3RlcnNCeVB1c2hp
bmcoTWFjcm9Bc3NlbWJsZXImIGppdCwgRXh0cmFTdGFja1NwYWNlIGV4dHJhU3RhY2tTcGFjZSkK
K1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6UHJlc2VydmVkU3RhdGUgU2NyYXRjaFJlZ2lzdGVy
QWxsb2NhdG9yOjpwcmVzZXJ2ZVJldXNlZFJlZ2lzdGVyc0J5UHVzaGluZyhBc3NlbWJseUhlbHBl
cnMmIGppdCwgRXh0cmFTdGFja1NwYWNlIGV4dHJhU3RhY2tTcGFjZSkKIHsKICAgICBpZiAoIWRp
ZFJldXNlUmVnaXN0ZXJzKCkpCiAgICAgICAgIHJldHVybiBQcmVzZXJ2ZWRTdGF0ZSgwLCBleHRy
YVN0YWNrU3BhY2UpOwpAQCAtMTI0LDcgKzEyNSw3IEBAIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRv
cjo6UHJlc2VydmVkU3RhdGUKICAgICByZXR1cm4gUHJlc2VydmVkU3RhdGUoc3RhY2tBZGp1c3Rt
ZW50U2l6ZSwgZXh0cmFTdGFja1NwYWNlKTsKIH0KIAotdm9pZCBTY3JhdGNoUmVnaXN0ZXJBbGxv
Y2F0b3I6OnJlc3RvcmVSZXVzZWRSZWdpc3RlcnNCeVBvcHBpbmcoTWFjcm9Bc3NlbWJsZXImIGpp
dCwgY29uc3QgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpQcmVzZXJ2ZWRTdGF0ZSYgcHJlc2Vy
dmVkU3RhdGUpCit2b2lkIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6cmVzdG9yZVJldXNlZFJl
Z2lzdGVyc0J5UG9wcGluZyhBc3NlbWJseUhlbHBlcnMmIGppdCwgY29uc3QgU2NyYXRjaFJlZ2lz
dGVyQWxsb2NhdG9yOjpQcmVzZXJ2ZWRTdGF0ZSYgcHJlc2VydmVkU3RhdGUpCiB7CiAgICAgUkVM
RUFTRV9BU1NFUlQocHJlc2VydmVkU3RhdGUpOwogICAgIGlmICghZGlkUmV1c2VSZWdpc3RlcnMo
KSkKQEAgLTE2MSw3ICsxNjIsNyBAQCB1bnNpZ25lZCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6
OmRlc2lyCiAgICAgcmV0dXJuIHVzZWRSZWdpc3RlcnNGb3JDYWxsKCkubnVtYmVyT2ZTZXRSZWdp
c3RlcnMoKSAqIHNpemVvZihKU1ZhbHVlKTsKIH0KIAotdW5zaWduZWQgU2NyYXRjaFJlZ2lzdGVy
QWxsb2NhdG9yOjpwcmVzZXJ2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKE1hY3JvQXNzZW1ibGVy
JiBqaXQsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCB1bnNpZ25lZCBleHRyYUJ5
dGVzQXRUb3BPZlN0YWNrKQordW5zaWduZWQgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpwcmVz
ZXJ2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKEFzc2VtYmx5SGVscGVycyYgaml0LCBjb25zdCBS
ZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgdW5zaWduZWQgZXh0cmFCeXRlc0F0VG9wT2ZTdGFj
aykKIHsKICAgICBSRUxFQVNFX0FTU0VSVChleHRyYUJ5dGVzQXRUb3BPZlN0YWNrICUgc2l6ZW9m
KHZvaWQqKSA9PSAwKTsKICAgICBpZiAoIXVzZWRSZWdpc3RlcnMubnVtYmVyT2ZTZXRSZWdpc3Rl
cnMoKSkKQEAgLTE3NCwyNiArMTc1LDMxIEBAIHVuc2lnbmVkIFNjcmF0Y2hSZWdpc3RlckFsbG9j
YXRvcjo6cHJlc2UKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihzdGFja09m
ZnNldCksCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAK
KyAgICBBc3NlbWJseUhlbHBlcnM6OlN0b3JlUmVnU3Bvb2xlciBzcG9vbGVyKGppdCwgTWFjcm9B
c3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKwogICAgIHVuc2lnbmVkIGNvdW50ID0g
MDsKICAgICBmb3IgKEdQUlJlZyByZWcgPSBNYWNyb0Fzc2VtYmxlcjo6Zmlyc3RSZWdpc3Rlcigp
OyByZWcgPD0gTWFjcm9Bc3NlbWJsZXI6Omxhc3RSZWdpc3RlcigpOyByZWcgPSBNYWNyb0Fzc2Vt
Ymxlcjo6bmV4dFJlZ2lzdGVyKHJlZykpIHsKICAgICAgICAgaWYgKHVzZWRSZWdpc3RlcnMuZ2V0
KHJlZykpIHsKLSAgICAgICAgICAgIGppdC5zdG9yZVB0cihyZWcsIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3RlciwgZXh0cmFCeXRlc0F0
VG9wT2ZTdGFjayArIChjb3VudCAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpKSk7CisgICAgICAg
ICAgICBzcG9vbGVyLnN0b3JlR1BSKHsgcmVnLCBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KGV4dHJh
Qnl0ZXNBdFRvcE9mU3RhY2sgKyAoY291bnQgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSkgfSk7
CiAgICAgICAgICAgICBjb3VudCsrOwogICAgICAgICB9CiAgICAgfQorICAgIHNwb29sZXIuZmx1
c2hHUFIoKTsKKwogICAgIGZvciAoRlBSUmVnIHJlZyA9IE1hY3JvQXNzZW1ibGVyOjpmaXJzdEZQ
UmVnaXN0ZXIoKTsgcmVnIDw9IE1hY3JvQXNzZW1ibGVyOjpsYXN0RlBSZWdpc3RlcigpOyByZWcg
PSBNYWNyb0Fzc2VtYmxlcjo6bmV4dEZQUmVnaXN0ZXIocmVnKSkgewogICAgICAgICBpZiAodXNl
ZFJlZ2lzdGVycy5nZXQocmVnKSkgewotICAgICAgICAgICAgaml0LnN0b3JlRG91YmxlKHJlZywg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lz
dGVyLCBleHRyYUJ5dGVzQXRUb3BPZlN0YWNrICsgKGNvdW50ICogc2l6ZW9mKEVuY29kZWRKU1Zh
bHVlKSkpKTsKKyAgICAgICAgICAgIHNwb29sZXIuc3RvcmVGUFIoeyByZWcsIHN0YXRpY19jYXN0
PHB0cmRpZmZfdD4oZXh0cmFCeXRlc0F0VG9wT2ZTdGFjayArIChjb3VudCAqIHNpemVvZihFbmNv
ZGVkSlNWYWx1ZSkpKSB9KTsKICAgICAgICAgICAgIGNvdW50Kys7CiAgICAgICAgIH0KICAgICB9
CisgICAgc3Bvb2xlci5mbHVzaEZQUigpOwogCiAgICAgUkVMRUFTRV9BU1NFUlQoY291bnQgPT0g
dXNlZFJlZ2lzdGVycy5udW1iZXJPZlNldFJlZ2lzdGVycygpKTsKIAogICAgIHJldHVybiBzdGFj
a09mZnNldDsKIH0KIAotdm9pZCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OnJlc3RvcmVSZWdp
c3RlcnNGcm9tU3RhY2tGb3JDYWxsKE1hY3JvQXNzZW1ibGVyJiBqaXQsIGNvbnN0IFJlZ2lzdGVy
U2V0JiB1c2VkUmVnaXN0ZXJzLCBjb25zdCBSZWdpc3RlclNldCYgaWdub3JlLCB1bnNpZ25lZCBu
dW1iZXJPZlN0YWNrQnl0ZXNVc2VkRm9yUmVnaXN0ZXJQcmVzZXJ2YXRpb24sIHVuc2lnbmVkIGV4
dHJhQnl0ZXNBdFRvcE9mU3RhY2spCit2b2lkIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6cmVz
dG9yZVJlZ2lzdGVyc0Zyb21TdGFja0ZvckNhbGwoQXNzZW1ibHlIZWxwZXJzJiBqaXQsIGNvbnN0
IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBjb25zdCBSZWdpc3RlclNldCYgaWdub3JlLCB1
bnNpZ25lZCBudW1iZXJPZlN0YWNrQnl0ZXNVc2VkRm9yUmVnaXN0ZXJQcmVzZXJ2YXRpb24sIHVu
c2lnbmVkIGV4dHJhQnl0ZXNBdFRvcE9mU3RhY2spCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoZXh0
cmFCeXRlc0F0VG9wT2ZTdGFjayAlIHNpemVvZih2b2lkKikgPT0gMCk7CiAgICAgaWYgKCF1c2Vk
UmVnaXN0ZXJzLm51bWJlck9mU2V0UmVnaXN0ZXJzKCkpIHsKQEAgLTIwMSwyMSArMjA3LDI2IEBA
IHZvaWQgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpyZXN0b3JlUmUKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAorICAgIEFzc2VtYmx5SGVscGVyczo6TG9hZFJlZ1Nwb29sZXIgc3Bvb2xlcihq
aXQsIE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisKICAgICB1bnNpZ25l
ZCBjb3VudCA9IDA7CiAgICAgZm9yIChHUFJSZWcgcmVnID0gTWFjcm9Bc3NlbWJsZXI6OmZpcnN0
UmVnaXN0ZXIoKTsgcmVnIDw9IE1hY3JvQXNzZW1ibGVyOjpsYXN0UmVnaXN0ZXIoKTsgcmVnID0g
TWFjcm9Bc3NlbWJsZXI6Om5leHRSZWdpc3RlcihyZWcpKSB7CiAgICAgICAgIGlmICh1c2VkUmVn
aXN0ZXJzLmdldChyZWcpKSB7CiAgICAgICAgICAgICBpZiAoIWlnbm9yZS5nZXQocmVnKSkKLSAg
ICAgICAgICAgICAgICBqaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhNYWNyb0Fz
c2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIGV4dHJhQnl0ZXNBdFRvcE9mU3RhY2sgKyAo
c2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAqIGNvdW50KSksIHJlZyk7CisgICAgICAgICAgICAgICAg
c3Bvb2xlci5sb2FkR1BSKHsgcmVnLCBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KGV4dHJhQnl0ZXNB
dFRvcE9mU3RhY2sgKyAoc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAqIGNvdW50KSkgfSk7CiAgICAg
ICAgICAgICBjb3VudCsrOwogICAgICAgICB9CiAgICAgfQorICAgIHNwb29sZXIuZmx1c2hHUFIo
KTsKKwogICAgIGZvciAoRlBSUmVnIHJlZyA9IE1hY3JvQXNzZW1ibGVyOjpmaXJzdEZQUmVnaXN0
ZXIoKTsgcmVnIDw9IE1hY3JvQXNzZW1ibGVyOjpsYXN0RlBSZWdpc3RlcigpOyByZWcgPSBNYWNy
b0Fzc2VtYmxlcjo6bmV4dEZQUmVnaXN0ZXIocmVnKSkgewogICAgICAgICBpZiAodXNlZFJlZ2lz
dGVycy5nZXQocmVnKSkgewogICAgICAgICAgICAgaWYgKCFpZ25vcmUuZ2V0KHJlZykpCi0gICAg
ICAgICAgICAgICAgaml0LmxvYWREb3VibGUoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoTWFjcm9B
c3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBleHRyYUJ5dGVzQXRUb3BPZlN0YWNrICsg
KHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgKiBjb3VudCkpLCByZWcpOworICAgICAgICAgICAgICAg
IHNwb29sZXIubG9hZEZQUih7IHJlZywgc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihleHRyYUJ5dGVz
QXRUb3BPZlN0YWNrICsgKHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgKiBjb3VudCkpIH0pOwogICAg
ICAgICAgICAgY291bnQrKzsKICAgICAgICAgfQogICAgIH0KKyAgICBzcG9vbGVyLmZsdXNoRlBS
KCk7CiAKICAgICB1bnNpZ25lZCBzdGFja09mZnNldCA9ICh1c2VkUmVnaXN0ZXJzLm51bWJlck9m
U2V0UmVnaXN0ZXJzKCkpICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKTsKICAgICBzdGFja09mZnNl
dCArPSBleHRyYUJ5dGVzQXRUb3BPZlN0YWNrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9TY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5oCShyZXZpc2lvbiAyNzg4
ODYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRv
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMiwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTItMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDEyICsyNywxMiBAQAogCiAjaWYgRU5BQkxFKEpJ
VCkKIAotI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJTZXQu
aCIKICNpbmNsdWRlICJUZW1wUmVnaXN0ZXJTZXQuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2Ns
YXNzIEFzc2VtYmx5SGVscGVyczsKIHN0cnVjdCBTY3JhdGNoQnVmZmVyOwogCiAvLyBUaGlzIGNs
YXNzIHByb3ZpZGVzIGEgbG93LWxldmVsIHJlZ2lzdGVyIGFsbG9jYXRvciBmb3IgdXNlIGluIHN0
dWJzLgpAQCAtODQsMTUgKzg0LDE1IEBAIHB1YmxpYzoKICAgICAgICAgRXh0cmFTdGFja1NwYWNl
IGV4dHJhU3RhY2tTcGFjZVJlcXVpcmVtZW50OwogICAgIH07CiAKLSAgICBQcmVzZXJ2ZWRTdGF0
ZSBwcmVzZXJ2ZVJldXNlZFJlZ2lzdGVyc0J5UHVzaGluZyhNYWNyb0Fzc2VtYmxlciYgaml0LCBF
eHRyYVN0YWNrU3BhY2UpOwotICAgIHZvaWQgcmVzdG9yZVJldXNlZFJlZ2lzdGVyc0J5UG9wcGlu
ZyhNYWNyb0Fzc2VtYmxlciYgaml0LCBjb25zdCBQcmVzZXJ2ZWRTdGF0ZSYpOworICAgIFByZXNl
cnZlZFN0YXRlIHByZXNlcnZlUmV1c2VkUmVnaXN0ZXJzQnlQdXNoaW5nKEFzc2VtYmx5SGVscGVy
cyYgaml0LCBFeHRyYVN0YWNrU3BhY2UpOworICAgIHZvaWQgcmVzdG9yZVJldXNlZFJlZ2lzdGVy
c0J5UG9wcGluZyhBc3NlbWJseUhlbHBlcnMmIGppdCwgY29uc3QgUHJlc2VydmVkU3RhdGUmKTsK
ICAgICAKICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzRm9yQ2FsbCgpIGNvbnN0OwogICAg
IAogICAgIHVuc2lnbmVkIGRlc2lyZWRTY3JhdGNoQnVmZmVyU2l6ZUZvckNhbGwoKSBjb25zdDsK
LSAgICAKLSAgICBzdGF0aWMgdW5zaWduZWQgcHJlc2VydmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2Fs
bChNYWNyb0Fzc2VtYmxlciYgaml0LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywg
dW5zaWduZWQgZXh0cmFQYWRkaW5nSW5CeXRlcyk7Ci0gICAgc3RhdGljIHZvaWQgcmVzdG9yZVJl
Z2lzdGVyc0Zyb21TdGFja0ZvckNhbGwoTWFjcm9Bc3NlbWJsZXImIGppdCwgY29uc3QgUmVnaXN0
ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIGNvbnN0IFJlZ2lzdGVyU2V0JiBpZ25vcmUsIHVuc2lnbmVk
IG51bWJlck9mU3RhY2tCeXRlc1VzZWRGb3JSZWdpc3RlclByZXNlcnZhdGlvbiwgdW5zaWduZWQg
ZXh0cmFQYWRkaW5nSW5CeXRlcyk7CisKKyAgICBzdGF0aWMgdW5zaWduZWQgcHJlc2VydmVSZWdp
c3RlcnNUb1N0YWNrRm9yQ2FsbChBc3NlbWJseUhlbHBlcnMmIGppdCwgY29uc3QgUmVnaXN0ZXJT
ZXQmIHVzZWRSZWdpc3RlcnMsIHVuc2lnbmVkIGV4dHJhUGFkZGluZ0luQnl0ZXMpOworICAgIHN0
YXRpYyB2b2lkIHJlc3RvcmVSZWdpc3RlcnNGcm9tU3RhY2tGb3JDYWxsKEFzc2VtYmx5SGVscGVy
cyYgaml0LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgY29uc3QgUmVnaXN0ZXJT
ZXQmIGlnbm9yZSwgdW5zaWduZWQgbnVtYmVyT2ZTdGFja0J5dGVzVXNlZEZvclJlZ2lzdGVyUHJl
c2VydmF0aW9uLCB1bnNpZ25lZCBleHRyYVBhZGRpbmdJbkJ5dGVzKTsKIAogcHJpdmF0ZToKICAg
ICBSZWdpc3RlclNldCBtX3VzZWRSZWdpc3RlcnM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDI3ODg4NikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE5LTIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yOTgxLDEwICsyOTgxLDcgQEAgYXV0byBBaXJJUkdlbmVyYXRvcjo6
YWRkUmV0dXJuKGNvbnN0IENvbgogICAgIEIzOjpQYXRjaHBvaW50VmFsdWUqIHBhdGNoID0gYWRk
UGF0Y2hwb2ludChCMzo6Vm9pZCk7CiAgICAgcGF0Y2gtPnNldEdlbmVyYXRvcihbXSAoQ0NhbGxI
ZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykg
ewogICAgICAgICBhdXRvIGNhbGxlZVNhdmVzID0gcGFyYW1zLmNvZGUoKS5jYWxsZWVTYXZlUmVn
aXN0ZXJBdE9mZnNldExpc3QoKTsKLQotICAgICAgICBmb3IgKFJlZ2lzdGVyQXRPZmZzZXQgY2Fs
bGVlU2F2ZSA6IGNhbGxlZVNhdmVzKQotICAgICAgICAgICAgaml0LmxvYWQ2NFRvUmVnKENDYWxs
SGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgY2FsbGVlU2F2ZS5v
ZmZzZXQoKSksIGNhbGxlZVNhdmUucmVnKCkpOwotCisgICAgICAgIGppdC5lbWl0UmVzdG9yZShj
YWxsZWVTYXZlcyk7CiAgICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOwogICAgICAg
ICBqaXQucmV0KCk7CiAgICAgfSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtQjNJUkdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAyNzg4ODYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yMjg0LDEwICsyMjg0LDcgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRSZXR1cm4oY29u
c3QgQ29udAogICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2ggPSBtX3Byb2MuYWRkPFBhdGNocG9p
bnRWYWx1ZT4oQjM6OlZvaWQsIG9yaWdpbigpKTsKICAgICBwYXRjaC0+c2V0R2VuZXJhdG9yKFtd
IChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYg
cGFyYW1zKSB7CiAgICAgICAgIGF1dG8gY2FsbGVlU2F2ZXMgPSBwYXJhbXMuY29kZSgpLmNhbGxl
ZVNhdmVSZWdpc3RlckF0T2Zmc2V0TGlzdCgpOwotCi0gICAgICAgIGZvciAoUmVnaXN0ZXJBdE9m
ZnNldCBjYWxsZWVTYXZlIDogY2FsbGVlU2F2ZXMpCi0gICAgICAgICAgICBqaXQubG9hZDY0VG9S
ZWcoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBjYWxs
ZWVTYXZlLm9mZnNldCgpKSwgY2FsbGVlU2F2ZS5yZWcoKSk7Ci0KKyAgICAgICAgaml0LmVtaXRS
ZXN0b3JlKGNhbGxlZVNhdmVzKTsKICAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7
CiAgICAgICAgIGppdC5yZXQoKTsKICAgICB9KTsK
</data>
<flag name="commit-queue"
          id="453275"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431483</attachid>
            <date>2021-06-15 14:41:54 -0700</date>
            <delta_ts>2021-06-15 14:45:49 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-227039.patch</filename>
            <type>text/plain</type>
            <size>108974</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjc4ODk4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzMCBA
QAorMjAyMS0wNi0xNSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
VXNlIGxkcCBhbmQgc3RwIG1vcmUgZm9yIHNhdmluZyAvIHJlc3RvcmluZyByZWdpc3RlcnMgb24g
QVJNNjQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjcwMzkKKyAgICAgICAgcmRhcjovLzc5MzU0NzM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgc3Bvb2xlciBh
YnN0cmFjdGlvbiBpbiBBc3NlbWJseUhlbHBlcnMuICBUaGUgc3Bvb2xlcgorICAgICAgICBiYXNp
Y2FsbHkgYmF0Y2hlcyB1cCBsb2FkIC8gc3RvcmUgb3BlcmF0aW9ucyBhbmQgZW1pdCB0aGVtIGFz
IHBhaXIgaW5zdHJ1Y3Rpb25zCisgICAgICAgIGlmIGFwcHJvcHJpYXRlLgorCisgICAgICAgIFRo
ZXJlIGFyZSA0IHNwb29sZXIgY2xhc3NlczoKKyAgICAgICAgYS4gU3Bvb2xlcgorICAgICAgICAg
ICAtIHRlbXBsYXRlIGJhc2UgY2xhc3MgZm9yIExvYWRSZWdTcG9vbGVyIGFuZCBTdG9yZVJlZ1Nw
b29sZXIuCisgICAgICAgICAgIC0gZW5jYXBzdWxhdGVzIHRoZSBiYXRjaGluZyBzdHJhdGVneSBm
b3IgbG9hZCAvIHN0b3JlIHBhaXJzLgorCisgICAgICAgIGIuIExvYWRSZWdTcG9vbGVyIC0gc3Bl
Y2lhbGl6ZXMgU3Bvb2xlciB0byBoYW5kbGUgbG9hZCBwYWlycy4KKyAgICAgICAgYi4gU3RvcmVS
ZWdTcG9vbGVyIC0gc3BlY2lhbGl6ZXMgU3Bvb2xlciB0byBoYW5kbGUgc3RvcmUgcGFpcnMuCisK
KyAgICAgICAgZC4gQ29weVNwb29sZXIKKyAgICAgICAgICAgLSBoYW5kbGVzIG1hdGNoaW5nIGxv
YWRzIHdpdGggc3RvcmVzLgorICAgICAgICAgICAtIHRyaWVzIHRvIGVtaXQgbG9hZHMgYXMgbG9h
ZCBwYWlycyBpZiBwb3NzaWJsZS4KKyAgICAgICAgICAgLSB0cmllcyB0byBlbW90IHN0b3JlcyBh
cyBzdG9yZSBwYWlycyBpZiBwb3NzaWJsZS4KKyAgICAgICAgICAgLSBlbnN1cmVzIHRoYXQgcHJl
LXJlcXVpc2l0ZSBsb2FkcyBhcmUgZW1pdHRlZCBiZWZvcmUgc3RvcmVzIGFyZSBlbWl0dGVkLgor
ICAgICAgICAgICAtIG90aGVyIHRoYW4gbG9hZHMsIGFsc28gc3VwcG9ydCBjb25zdGFudHMgYW5k
IHJlZ2lzdGVycyBhcyBzb3VyY2VzIG9mIHZhbHVlcworICAgICAgICAgICAgIHRvIGJlIHN0b3Jl
ZC4gIFRoaXMgaXMgdXNlZnVsIGluIE9TUiBleGl0IHJhbXBzIHdoZXJlIHdlIG1heSBtYXRlcmlh
bGl6ZSBhCisgICAgICAgICAgICAgc3RhY2sgdmFsdWUgdG8gc3RvcmUgZnJvbSBjb25zdGFudHMg
b3IgcmVnaXN0ZXJzIGluIGFkZGl0aW9uIHRvIHZhbHVlcyB3ZQorICAgICAgICAgICAgIGxvYWQg
ZnJvbSB0aGUgb2xkIHN0YWNrIGZyYW1lIG9yIGZyb20gYSBzY3JhdGNoIGJ1ZmZlci4KKworICAg
ICAgICBJbiB0aGlzIHBhdGNoLCB3ZSBhbHNvIGRvIHRoZSBmb2xsb3dpbmc6CisKKyAgICAgICAg
MS4gVXNlIHNwb29sZXJzIGluIG1hbnkgcGxhY2VzIHNvIHRoYXQgd2UgY2FuIGVtaXQgbG9hZCAv
IHN0b3JlIHBhaXJzIGluc3RlYWQgb2YKKyAgICAgICAgICAgc2luZ2xlIGxvYWQgLyBzdG9yZXMu
ICBUaGlzIGhlbHBzIHNocmluayBKSVQgY29kZSBzaWRlLCBhbmQgYWxzbyBwb3RlbnRpYWxseQor
ICAgICAgICAgICBpbXByb3ZlcyBwZXJmb3JtYW5jZS4KKworICAgICAgICAyLiBJbiBERkc6Ok9T
UkV4aXQ6OmNvbXBpbGVFeGl0KCksIHdlIHVzZWQgdG8gcmVjb3ZlciBjb25zdGFudHMgaW50byBh
IHNjcmF0Y2gKKyAgICAgICAgICAgYnVmZmVyLCBhbmQgdGhlbiBsYXRlciwgbG9hZCBmcm9tIHRo
YXQgc2NyYXRjaCBidWZmZXIgdG8gc3RvcmUgaW50byB0aGUKKyAgICAgICAgICAgbmV3IHN0YWNr
IGZyYW1lKHMpLgorCisgICAgICAgICAgIFRoaXMgcGF0Y2ggY2hhbmdlcyBpdCBzbyB0aGF0IHdl
IGRlZmVyIGNvbnN0YW50IHJlY292ZXJ5IHVudGlsIHRoZSBmaW5hbAorICAgICAgICAgICBsb29w
IHdoZXJlIHdlIHN0b3JlIHRoZSByZWNvdmVyZWQgdmFsdWUgZGlyZWN0bHkgaW50byB0aGUgbmV3
IHN0YWNrIGZyYW1lKHMpLgorICAgICAgICAgICBUaGlzIHNhdmVzIHVzIHRoZSB3b3JrIChhbmQg
SklUIGNvZGUgc3BhY2UpIGZvciBzdG9yaW5nIGludG8gYSBzY3JhdGNoIGJ1ZmZlcgorICAgICAg
ICAgICBhbmQgdGhlbiByZWxvYWRpbmcgZnJvbSB0aGUgc2NyYXRjaCBidWZmZXIuCisKKyAgICAg
ICAgICAgVGhlcmUgaXMgb25lIGV4Y2VwdGlvbjogdG1wIHZhbHVlcyB1c2VkIGJ5IGFjdGl2ZSBj
aGVja3BvaW50cy4gIFdlIG5lZWQgdG8gY2FsbAorICAgICAgICAgICBvcGVyYXRpb25NYXRlcmlh
bGl6ZU9TUkV4aXRTaWRlU3RhdGUoKSB0byBtYXRlcmlhbGl6ZSB0aGUgYWN0aXZlIGNoZWNrcG9p
bnQKKyAgICAgICAgICAgc2lkZSBzdGF0ZSBiZWZvcmUgdGhlIGZpbmFsIGxvb3Agd2hlcmUgd2Ug
bm93IHJlY292ZXIgY29uc3RhbnRzLiAgSGVuY2UsIHdlCisgICAgICAgICAgIG5lZWQgdGhlc2Ug
dG1wIHZhbHVlcyByZWNvdmVyZWQgYmVmb3JlIGhhbmQuCisKKyAgICAgICAgICAgU28sIHdlIGNo
ZWNrIHVwZnJvbnQgaWYgd2UgaGF2ZSBhY3RpdmUgY2hlY2twb2ludCBzaWRlIHN0YXRlIHRvIG1h
dGVyaWFsaXplLgorICAgICAgICAgICBJZiBzbywgd2UnbGwgZWFnZXJseSByZWNvdmVyIHRoZSBj
b25zdGFudHMgZm9yIGluaXRpYWxpemluZyB0aG9zZSB0bXBzLgorCisgICAgICAgICAgIFdlIGFs
c28gdXNlIHRoZSBDb3B5U3Bvb2xlciBpbiB0aGUgZmluYWwgbG9vcCB0byBlbWl0IGxvYWQgLyBz
dG9yZSBwYWlycyBmb3IKKyAgICAgICAgICAgZmlsbGluZyBpbiB0aGUgbmV3IHN0YWNrIGZyYW1l
KHMpLgorCisgICAgICAgICAgIE9uZSBtb3JlIHRoaW5nOiBpdCB0dXJucyBvdXQgdGhhdCB0aGUg
dmFzdCBtYWpvcml0eSBvZiBjb25zdGFudHMgdG8gYmUgcmVjb3ZlcmVkCisgICAgICAgICAgIGlz
IHNpbXBseSB0aGUgdW5kZWZpbmVkIHZhbHVlLiAgU28sIGFzIGFuIG9wdGltaXphdGlvbiwgdGhl
IGZpbmFsIGxvb3Aga2VlcHMKKyAgICAgICAgICAgdGhlIHVuZGVmaW5lZCB2YWx1ZSBpbiBhIHJl
Z2lzdGVyLCBhbmQgaGFzIHRoZSBzcG9vbGVyIHN0b3JlIGRpcmVjdGx5IGZyb20KKyAgICAgICAg
ICAgdGhhdCByZWdpc3RlciB3aGVuIGFwcHJvcHJpYXRlLiAgVGhpcyBzYXZlcyBvbiBKSVQgY29k
ZSB0byByZXBlYXRlZGx5IG1hdGVyaWFsaXplCisgICAgICAgICAgIHRoZSB1bmRlZmluZWQgSlNW
YWx1ZSBjb25zdGFudC4KKworICAgICAgICAzLiBJbiByZWlmeUlubGluZWRDYWxsRnJhbWVzKCks
IHJlcGxhY2UgdGhlIHVzZSBvZiBHUFJJbmZvOjpub25BcmdHUFIwIHdpdGgKKyAgICAgICAgICAg
R1BSSW5mbzo6cmVnVDQuICBub25BcmdHUFJzIGFyZSBzb21ldGltZXMgbWFwIHRvIGNlcnRhaW4g
cmVnVFhzIG9uIGNlcnRhaW4gcG9ydHMuCisgICAgICAgICAgIFJlcGxhY2luZyB3aXRoIHJlZ1Q0
IG1ha2VzIGl0IGVhc2llciB0byBlbnN1cmUgdGhhdCB3ZSdyZSBub3QgdHJhc2hpbmcgdGhlCisg
ICAgICAgICAgIHJlZ2lzdGVyIHdoZW4gd2UgdXNlIG1vcmUgdGVtcCByZWdpc3RlcnMuCisKKyAg
ICAgICAgICAgcmVpZnlJbmxpbmVkQ2FsbEZyYW1lcygpIHdpbGwgYmUgdXNpbmcgZW1pdFNhdmVP
ckNvcHlMTEludEJhc2VsaW5lQ2FsbGVlU2F2ZXNGb3IoKQorICAgICAgICAgICBsYXRlciB3aGVy
ZSB3ZSBuZWVkIG1vcmUgdGVtcCByZWdpc3RlcnMuCisKKyAgICAgICAgNC4gTW92ZSB0aGUgZm9s
bG93aW5nIGZ1bmN0aW9ucyB0byBBc3NlbWJseUhlbHBlcnMuY3BwLiAgVGhleSBkb24ndCBuZWVk
IHRvIGJlCisgICAgICAgICAgIGlubGluZSBmdW5jdGlvbnMuICBTcGVlZG9tZXRlcjIgYW5kIEpl
dFN0cmVhbTIgc2hvd3MgdGhhdCBtYWtpbmcgdGhlc2Ugbm9uCisgICAgICAgICAgIGlubGluZSBk
b2VzIG5vdCBodXJ0IHBlcmZvcm1hbmNlOgorCisgICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxw
ZXJzOjplbWl0U2F2ZShjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCYpOworICAgICAgICAgICAg
ICAgIEFzc2VtYmx5SGVscGVyczo6ZW1pdFJlc3RvcmUoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExp
c3QmKTsKKyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OmVtaXRTYXZlQ2FsbGVlU2F2
ZXNGb3IoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QqKTsKKyAgICAgICAgICAgICAgICBBc3Nl
bWJseUhlbHBlcnM6OmVtaXRTYXZlT3JDb3B5Q2FsbGVlU2F2ZXNGb3IoLi4uKTsKKyAgICAgICAg
ICAgICAgICBBc3NlbWJseUhlbHBlcnM6OmVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXNGb3IoY29uc3Qg
UmVnaXN0ZXJBdE9mZnNldExpc3QqKTsKKyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6
OmNvcHlMTEludEJhc2VsaW5lQ2FsbGVlU2F2ZXNGcm9tRnJhbWVPclJlZ2lzdGVyVG9FbnRyeUZy
YW1lQ2FsbGVlU2F2ZXNCdWZmZXIoLi4uKTsKKworICAgICAgICAgICBBbHNvIHJlbmFtZWQgZW1p
dFNhdmVPckNvcHlDYWxsZWVTYXZlc0ZvcigpIHRvIGVtaXRTYXZlT3JDb3B5TExJbnRCYXNlbGlu
ZUNhbGxlZVNhdmVzRm9yKCkKKyAgICAgICAgICAgYmVjYXVzZSBpdCBpcyBvbmx5IHVzZWQgd2l0
aCBiYXNlbGluZSBjb2RlQmxvY2tzLgorCisgICAgICAgIFJlc3VsdHM6CisgICAgICAgIEN1bW11
bGF0aXZlIExpbmtCdWZmZXIgcHJvZmlsZSBzaXplcyBzaHJ1bmsgYnkgfjJNIGluIGFnZ3JlZ2F0
ZToKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UgICAgICAgICAgICAgICAgICAg
ICAgICAgICBuZXcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PT09ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPT09CisgICAgICAgICAgICAgICBCYXNlbGluZUpJVDogODM4MjcwNDgg
KDc5Ljk0MzcwMyBNQikgICAgID0+IDgzNzE4NzM2ICg3OS44NDA0MDggTUIpCisgICAgICAgICAg
ICAgICAgICAgICAgIERGRzogNTY1OTQ4MzYgKDUzLjk3MzA0MiBNQikgICAgID0+IDU2NjAzNTA4
ICg1My45ODEzMTIgTUIpCisgICAgICAgICAgICAgICBJbmxpbmVDYWNoZTogMzM5MjM5MDAgKDMy
LjM1MjM1MiBNQikgICAgID0+IDMzMTgzMTU2ICgzMS42NDU5MjQgTUIpCisgICAgICAgICAgICAg
ICAgICAgICAgIEZUTDogNjc3MDk1NiAoNi40NTcyODcgTUIpICAgICAgID0+IDY1Njg5NjQgKDYu
MjY0NjUyIE1CKQorICAgICAgICAgICAgICAgIERGR09TUkV4aXQ6IDUyMTIwOTYgKDQuOTcwNjQy
IE1CKSAgICAgICA9PiAzNzI4MDg4ICgzLjU1NTM4MiBNQikKKyAgICAgICAgICAgICAgICAgICAg
Q1NTSklUOiA3NDg0MjggKDczMC44ODY3MTkgS0IpICAgICAgPT4gNzQ4NDI4ICg3MzAuODg2NzE5
IEtCKQorICAgICAgICAgICAgICAgIEZUTE9TUkV4aXQ6IDY5MjI3NiAoNjc2LjA1MDc4MSBLQikg
ICAgICA9PiA2NTY4ODQgKDY0MS40ODgyODEgS0IpCisgICAgICAgICAgICAgICAgICAgWWFyckpJ
VDogNDQ1MjgwICg0MzQuODQzNzUwIEtCKSAgICAgID0+IDUxMjk4OCAoNTAwLjk2NDg0NCBLQikK
KyAgICAgICAgICAgICAgICAgIEZUTFRodW5rOiAyMjkwOCAoMjIuMzcxMDk0IEtCKSAgICAgICAg
PT4gMjI1NTYgKDIyLjAyNzM0NCBLQikKKyAgICAgICAgQm91bmRGdW5jdGlvblRodW5rOiA4NDAw
ICg4LjIwMzEyNSBLQikgICAgICAgICAgPT4gMTAwODggKDkuODUxNTYyIEtCKQorICAgICAgICAg
ICAgIEV4dHJhQ1RJVGh1bms6IDY5NTIgKDYuNzg5MDYyIEtCKSAgICAgICAgICA9PiA2ODI0ICg2
LjY2NDA2MiBLQikKKyAgICAgICAgICBTcGVjaWFsaXplZFRodW5rOiA0NTA4ICg0LjQwMjM0NCBL
QikgICAgICAgICAgPT4gNDUwOCAoNC40MDIzNDQgS0IpCisgICAgICAgICAgICAgICAgICAgICBU
aHVuazogMzkxMiAoMy44MjAzMTIgS0IpICAgICAgICAgID0+IDM3ODQgKDMuNjk1MzEyIEtCKQor
ICAgICAgICAgICAgICAgIExMSW50VGh1bms6IDI5MDggKDIuODM5ODQ0IEtCKSAgICAgICAgICA9
PiAyOTA4ICgyLjgzOTg0NCBLQikKKyAgICAgICAgICAgICAgVmlydHVhbFRodW5rOiAxMjQ4ICgx
LjIxODc1MCBLQikgICAgICAgICAgPT4gMTI0OCAoMS4yMTg3NTAgS0IpCisgICAgICAgICAgICAg
ICAgICBERkdUaHVuazogMTA4NCAoMS4wNTg1OTQgS0IpICAgICAgICAgID0+IDQ0NAorICAgICAg
ICAgICAgICAgREZHT1NSRW50cnk6IDIxNiAgICAgICAgICAgICAgICAgICAgICAgICA9PiAxODQK
KyAgICAgICAgICAgICAgICBKdW1wSXNsYW5kOiAwCisgICAgICAgICAgICAgICAgIFdhc21UaHVu
azogMAorICAgICAgICAgICAgICAgICAgICAgIFdhc206IDAKKyAgICAgICAgICAgICBVbmNhdGVn
b3JpemVkOiAwCisgICAgICAgICAgICAgICAgICAgICBUb3RhbDogMTg4MjY2OTU2ICgxNzkuNTQ1
MzYxIE1CKSAgID0+IDE4NTc3MzI5NiAoMTc3LjE2NzIyMSBNQikKKworICAgICAgICBTcGVlZG9t
ZXRlcjIgYW5kIEpldFN0cmVhbTIgcmVzdWx0cyBzaG93cyB0aGF0IHBlcmZvcm1hbmNlIGlzIG5l
dXRyYWwgZm9yIHRoaXMKKyAgICAgICAgcGF0Y2ggKGFzIG1lYXN1cmVkIG9uIGFuIE0xIE1hYyk6
CisKKyAgICAgICAgU3BlZWRvbWV0ZXIyOgorICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAg
ICAgIHwgICAgICAgICAgICAgICBzdWJ0ZXN0ICAgICAgICAgICAgICAgIHwgICAgIG1zICAgICAg
fCAgICAgbXMgICAgICB8ICBiIC8gYSAgIHwgcFZhbHVlIChzaWduaWZpY2FuY2UgdXNpbmcgRmFs
c2UgRGlzY292ZXJ5IFJhdGUpIHwKKyAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICB8
IEVsbS1Ub2RvTVZDICAgICAgICAgICAgICAgICAgICAgICAgICB8MTI5LjAzNzUwMCAgIHwxMjcu
MjEyNTAwICAgfDAuOTg1ODU3ICB8IDAuMDEyNzA2ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8CisgICAgICAgIHwgVnVlSlMtVG9kb01WQyAgICAgICAgICAgICAgICAg
ICAgICAgIHwyOC4zMTI1MDAgICAgfDI3LjUyNTAwMCAgICB8MC45NzIxODUgIHwgMC4yNDAzMTUg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBFbWJl
ckpTLVRvZG9NVkMgICAgICAgICAgICAgICAgICAgICAgfDEzMi41NTAwMDAgICB8MTMyLjAyNTAw
MCAgIHwwLjk5NjAzOSAgfCAwLjUzODAzNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfAorICAgICAgICB8IEZsaWdodC1Ub2RvTVZDICAgICAgICAgICAgICAgICAgICAg
ICB8ODAuNzYyNTAwICAgIHw4MC44NzUwMDAgICAgfDEuMDAxMzkzICB8IDAuOTE0NzQ5ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgQmFja2JvbmVK
Uy1Ub2RvTVZDICAgICAgICAgICAgICAgICAgIHw1MS42Mzc1MDAgICAgfDUxLjE3NTAwMCAgICB8
MC45OTEwNDMgIHwgMC4yODU0MjcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwKKyAgICAgICAgfCBQcmVhY3QtVG9kb01WQyAgICAgICAgICAgICAgICAgICAgICAgfDIx
LjAyNTAwMCAgICB8MjIuMDc1MDAwICAgIHwxLjA0OTk0MSAgfCAwLjIwNjE0MCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IEFuZ3VsYXJKUy1Ub2Rv
TVZDICAgICAgICAgICAgICAgICAgICB8MTQyLjkwMDAwMCAgIHwxNDIuODg3NTAwICAgfDAuOTk5
OTEzICB8IDAuOTkwNjgxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
CisgICAgICAgIHwgSW5mZXJuby1Ub2RvTVZDICAgICAgICAgICAgICAgICAgICAgIHw2OS4zMDAw
MDAgICAgfDY5Ljc3NTAwMCAgICB8MS4wMDY4NTQgIHwgMC41MDUyMDEgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBWYW5pbGxhLUVTMjAxNS1Ub2Rv
TVZDICAgICAgICAgICAgICAgfDcxLjUwMDAwMCAgICB8NzEuMjI1MDAwICAgIHwwLjk5NjE1NCAg
fCAwLjYwODY1MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAg
ICAgICB8IEFuZ3VsYXIyLVR5cGVTY3JpcHQtVG9kb01WQyAgICAgICAgICB8NDMuMjg3NTAwICAg
IHw0My4yNzUwMDAgICAgfDAuOTk5NzExICB8IDAuOTg3OTI2ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgVmFuaWxsYUpTLVRvZG9NVkMgICAgICAg
ICAgICAgICAgICAgIHw1Ny4yMTI1MDAgICAgfDU3LjgxMjUwMCAgICB8MS4wMTA0ODcgIHwgMC4z
MzMzNTcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAg
fCBqUXVlcnktVG9kb01WQyAgICAgICAgICAgICAgICAgICAgICAgfDI3Ni4xNTAwMDAgICB8Mjc2
Ljc3NTAwMCAgIHwxLjAwMjI2MyAgfCAwLjYxNDQwNCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfAorICAgICAgICB8IEVtYmVySlMtRGVidWctVG9kb01WQyAgICAgICAg
ICAgICAgICB8MzUzLjYxMjUwMCAgIHwzNTIuNzYyNTAwICAgfDAuOTk3NTk2ICB8IDAuNTE4ODM2
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgUmVh
Y3QtVG9kb01WQyAgICAgICAgICAgICAgICAgICAgICAgIHw5My42Mzc1MDAgICAgfDkyLjYzNzUw
MCAgICB8MC45ODkzMjEgIHwgMC4wMzYyNzcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwKKyAgICAgICAgfCBSZWFjdC1SZWR1eC1Ub2RvTVZDICAgICAgICAgICAgICAg
ICAgfDE1OC4yMzc1MDAgICB8MTU2LjU4NzUwMCAgIHwwLjk4OTU3MyAgfCAwLjA0MjE1NCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IFZhbmlsbGEt
RVMyMDE1LUJhYmVsLVdlYnBhY2stVG9kb01WQyB8NjguMDUwMDAwICAgIHw2OC4wODc1MDAgICAg
fDEuMDAwNTUxICB8IDAuODk3MTQ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8CisgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgICAgICBhIG1lYW4gPSAyMzYu
MjY5NTAKKyAgICAgICAgYiBtZWFuID0gMjM2LjU3OTY0CisgICAgICAgIHBWYWx1ZSA9IDAuNzgz
MDc4NTkzOAorICAgICAgICAoQmlnZ2VyIG1lYW5zIGFyZSBiZXR0ZXIuKQorICAgICAgICAxLjAw
MSB0aW1lcyBiZXR0ZXIKKyAgICAgICAgUmVzdWx0cyBBUkUgTk9UIHNpZ25pZmljYW50CisKKyAg
ICAgICAgSmV0U3RyZWFtMjoKKyAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICB8ICAgICAgICAgIHN1
YnRlc3QgICAgICAgICAgfCAgICAgcHRzICAgICAgfCAgICAgcHRzICAgICAgfCAgYiAvIGEgICB8
IHBWYWx1ZSAoc2lnbmlmaWNhbmNlIHVzaW5nIEZhbHNlIERpc2NvdmVyeSBSYXRlKSB8CisgICAg
ICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKyAgICAgICAgfCBnYXVzc2lhbi1ibHVyICAgICAgICAgICAgIHw1NDIuNTcw
MDU3ICAgIHw1NDIuNjcxODg1ICAgIHwxLjAwMDE4OCAgfCAwLjk4MjU3MyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IEhhc2hTZXQtd2FzbSAgICAg
ICAgICAgICAgfDU3LjcxMDQ5OCAgICAgfDY0LjQwNjM3MSAgICAgfDEuMTE2MDI1ICB8IDAuNDAx
NDI0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwg
Z2NjLWxvb3BzLXdhc20gICAgICAgICAgICB8NDQuNTE2MDA5ICAgICB8NDQuNDUzNTM1ICAgICB8
MC45OTg1OTcgIHwgMC45NzM2NTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwKKyAgICAgICAgfCBqc29uLXBhcnNlLWluc3BlY3RvciAgICAgIHwyNDEuMjc1MDg1ICAg
IHwyNDAuNzIwNDkxICAgIHwwLjk5NzcwMSAgfCAwLjcwNDczMiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IHByZXBhY2std3RiICAgICAgICAgICAg
ICAgfDYyLjY0MDExNCAgICAgfDYzLjc1NDg3OCAgICAgfDEuMDE3Nzk2ICB8IDAuMjA1ODQwICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgZGF0ZS1m
b3JtYXQteHBhcmItU1AgICAgICB8NDE2Ljk3NjgxNyAgICB8NDQ4LjkyMTQwOSAgICB8MS4wNzY2
MTAgIHwgMC4wNTI5NzcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwK
KyAgICAgICAgfCBXU0wgICAgICAgICAgICAgICAgICAgICAgIHwxLjU1NTI1NyAgICAgIHwxLjU3
MDIzMyAgICAgIHwxLjAwOTYyOSAgfCAwLjQyNzkyNCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfAorICAgICAgICB8IE9mZmxpbmVBc3NlbWJsZXIgICAgICAgICAgfDE3
Ny4wNTIzNTIgICAgfDE3OS43NDY1MTEgICAgfDEuMDE1MjE3ICB8IDAuMTEyMTE0ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgY2RqcyAgICAgICAg
ICAgICAgICAgICAgICB8MTkyLjUxNzU4NiAgICB8MTk0LjU5ODkwNiAgICB8MS4wMTA4MTEgIHwg
MC4wMjU4MDcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAg
ICAgfCBVbmlQb2tlciAgICAgICAgICAgICAgICAgIHw1MTQuMDIzNjk0ICAgIHw1MjYuMTExNTAw
ICAgIHwxLjAyMzUxNiAgfCAwLjI2OTg5MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfAorICAgICAgICB8IGpzb24tc3RyaW5naWZ5LWluc3BlY3RvciAgfDIyNy41ODQ3
MjUgICAgfDIyMy42MTkzOTAgICAgfDAuOTgyNTc2ICB8IDAuMTAyNzE0ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgY3J5cHRvLXNoYTEtU1AgICAg
ICAgICAgICB8OTgwLjcyODc4OCAgICB8OTg0LjE5MjEwNCAgICB8MS4wMDM1MzEgIHwgMC44Mzg2
MTggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBC
YXNpYyAgICAgICAgICAgICAgICAgICAgIHw2ODUuMTQ4NDgzICAgIHw3MTEuNTkwMjQ3ICAgIHwx
LjAzODU5MyAgfCAwLjE0Mjk1MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfAorICAgICAgICB8IGNoYWktd3RiICAgICAgICAgICAgICAgICAgfDEwNi4yNTYzNzYgICAg
fDEwNi41OTAzMTggICAgfDEuMDAzMTQzICB8IDAuODY1ODk0ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgY3J5cHRvLWFlcy1TUCAgICAgICAgICAg
ICB8NzIyLjMwODgyOSAgICB8NzI4LjcwMjMxMCAgICB8MS4wMDg4NTEgIHwgMC40ODY3NjYgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBCYWJ5bG9u
ICAgICAgICAgICAgICAgICAgIHw2NTUuODU3NTYxICAgIHw2NTQuMjA0OTAxICAgIHwwLjk5NzQ4
MCAgfCAwLjkzMTUyMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAor
ICAgICAgICB8IHN0cmluZy11bnBhY2stY29kZS1TUCAgICAgfDQwNy44MzcyNzEgICAgfDQwNS43
MTA3NTIgICAgfDAuOTk0Nzg2ICB8IDAuNzI5MTIyICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8CisgICAgICAgIHwgc3RhbmZvcmQtY3J5cHRvLWFlcyAgICAgICB8NDU2
LjkwNjAyMSAgICB8NDQ5Ljk5Mzg1NiAgICB8MC45ODQ4NzIgIHwgMC4yNzI5OTQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCByYXl0cmFjZSAgICAg
ICAgICAgICAgICAgIHw4ODMuOTExMzM1ICAgIHw5MDIuODg3MjM4ICAgIHwxLjAyMTQ2OCAgfCAw
LjE4OTc4NSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAg
ICB8IG11bHRpLWluc3BlY3Rvci1jb2RlLWxvYWQgfDQwOS45OTczNDcgICAgfDQwNS42NDM2Mzkg
ICAgfDAuOTg5MzgxICB8IDAuNjQ0NDQ3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8CisgICAgICAgIHwgaGFzaC1tYXAgICAgICAgICAgICAgICAgICB8NTkzLjU5MDE2
MCAgICB8NjAxLjU3NjMzMiAgICB8MS4wMTM0NTQgIHwgMC4yNDk0MTQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBzdGFuZm9yZC1jcnlwdG8tcGJr
ZGYyICAgIHw3MjIuMTc4NjM4ICAgIHw3MjguMjgzNTMyICAgIHwxLjAwODQ1MyAgfCAwLjY2MTE5
NSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IGNv
ZmZlZXNjcmlwdC13dGIgICAgICAgICAgfDQyLjM5MzU0NCAgICAgfDQxLjg2OTU0NSAgICAgfDAu
OTg3NjQwICB8IDAuMTk3NDQxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8CisgICAgICAgIHwgQm94MkQgICAgICAgICAgICAgICAgICAgICB8NDUyLjAzNDY4NSAgICB8
NDU0LjEwNDg2OCAgICB8MS4wMDQ1ODAgIHwgMC41MzUzNDIgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCByaWNoYXJkcy13YXNtICAgICAgICAgICAg
IHwxNDAuODczNjg4ICAgIHwxNDguMzk0MDUwICAgIHwxLjA1MzM4NCAgfCAwLjMwMzY1MSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IGxlYmFiLXd0
YiAgICAgICAgICAgICAgICAgfDYxLjY3MTMxOCAgICAgfDYyLjExOTQwMyAgICAgfDEuMDA3MjY2
ICB8IDAuNjIwOTk4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cisg
ICAgICAgIHwgdHNmLXdhc20gICAgICAgICAgICAgICAgICB8MTA4LjU5Mjc5NCAgICB8MTE5LjQ5
ODM5OCAgICB8MS4xMDA0MjcgIHwgMC41MDQ3MTAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwKKyAgICAgICAgfCBiYXNlNjQtU1AgICAgICAgICAgICAgICAgIHw2Mjku
NzQ0NjQzICAgIHw2MDMuNDI1NTY1ICAgIHwwLjk1ODIwNyAgfCAwLjA0OTk5NyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IG5hdmllci1zdG9rZXMg
ICAgICAgICAgICAgfDc0MC41ODg1MjMgICAgfDczOS45NTE2NjIgICAgfDAuOTk5MTQwICB8IDAu
ODcxNDQ1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAg
IHwganNoaW50LXd0YiAgICAgICAgICAgICAgICB8NTEuOTM4MzU5ICAgICB8NTIuNjUxMTA0ICAg
ICB8MS4wMTM3MjMgIHwgMC4yMTcxMzcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwKKyAgICAgICAgfCByZWdleC1kbmEtU1AgICAgICAgICAgICAgIHw0NTkuMjUxMTQ4
ICAgIHw0NjMuNDkyNDg5ICAgIHwxLjAwOTIzNSAgfCAwLjM3MTg5MSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IGFzeW5jLWZzICAgICAgICAgICAg
ICAgICAgfDIzNS44NTM4MjAgICAgfDIzNi4wMzExODkgICAgfDEuMDAwNzUyICB8IDAuOTM4NDU5
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgZmly
c3QtaW5zcGVjdG9yLWNvZGUtbG9hZCB8Mjc1LjI5ODMyNSAgICB8Mjc0LjE3MjEyNSAgICB8MC45
OTU5MDkgIHwgMC42MjM0MDMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwKKyAgICAgICAgfCBzZWdtZW50YXRpb24gICAgICAgICAgICAgIHw0NC4wMDI4NDIgICAgIHw0
My40NDU5NjAgICAgIHwwLjk4NzM0NCAgfCAwLjIwNzEzNCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IHR5cGVzY3JpcHQgICAgICAgICAgICAgICAg
fDI2LjM2MDE2MSAgICAgfDI2LjQ1ODgyMCAgICAgfDEuMDAzNzQzICB8IDAuNjA5OTQyICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgb2N0YW5lLWNv
ZGUtbG9hZCAgICAgICAgICB8MTEyNi43NDkwMzYgICB8MTA4Ny4xMzIwMjQgICB8MC45NjQ4NDAg
IHwgMC41MjQxNzEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAg
ICAgICAgfCBmbG9hdC1tbS5jICAgICAgICAgICAgICAgIHwxNi42OTE5MzUgICAgIHwxNi43MjEz
NTQgICAgIHwxLjAwMTc2MiAgfCAwLjE5NDQyNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfAorICAgICAgICB8IHF1aWNrc29ydC13YXNtICAgICAgICAgICAgfDQ2MS42
MzAwOTEgICAgfDQ1MC4xNjExMjcgICAgfDAuOTc1MTU2ICB8IDAuMzcxMzk0ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgQWlyICAgICAgICAgICAg
ICAgICAgICAgICB8MzkyLjQ0MjM3NSAgICB8NDEyLjIwMTgxMCAgICB8MS4wNTAzNTAgIHwgMC4w
NDY4ODcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAg
fCBzcGxheSAgICAgICAgICAgICAgICAgICAgIHw1MTAuMTExODg2ICAgIHw0NzUuMTMxNjU3ICAg
IHwwLjkzMTQyNiAgfCAwLjAyNDczMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfAorICAgICAgICB8IGFpLWFzdGFyICAgICAgICAgICAgICAgICAgfDYwNy45NjY5NzQg
ICAgfDYyNi41NzMxODEgICAgfDEuMDMwNjA0ICB8IDAuNDY4NzExICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgYWNvcm4td3RiICAgICAgICAgICAg
ICAgICB8NjcuNTEwNzY2ICAgICB8NjguMTQzOTU2ICAgICB8MS4wMDkzNzkgIHwgMC40ODE2NjMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBnYmVt
dSAgICAgICAgICAgICAgICAgICAgIHwxNDQuMTMzODQyICAgIHwxNDUuNjIwMzA0ICAgIHwxLjAx
MDMxMyAgfCAwLjgwMjE1NCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fAorICAgICAgICB8IHJpY2hhcmRzICAgICAgICAgICAgICAgICAgfDk2My40NzUwNzggICAgfDk0
Ni42NTg4NzkgICAgfDAuOTgyNTQ2ICB8IDAuMjMxMTg5ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgM2QtY3ViZS1TUCAgICAgICAgICAgICAgICB8
NTQ5LjQyNjc4NCAgICB8NTUwLjQ3OTE1NCAgICB8MS4wMDE5MTUgIHwgMC44MzEzMDcgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBlc3ByZWUtd3Ri
ICAgICAgICAgICAgICAgIHw2OC43MDc0ODMgICAgIHw3My43NjIyMDIgICAgIHwxLjA3MzU2OSAg
fCAwLjAzMzYwMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAg
ICAgICB8IGJvbWItd29ya2VycyAgICAgICAgICAgICAgfDk2Ljg4MjU5NiAgICAgfDk2LjExNjEy
MSAgICAgfDAuOTkyMDg5ICB8IDAuNjg3OTUyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8CisgICAgICAgIHwgdGFnY2xvdWQtU1AgICAgICAgICAgICAgICB8MzA5Ljg4
ODc2NyAgICB8MzAzLjUzODUxMSAgICB8MC45Nzk1MDggIHwgMC4xODc3NjggICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBtYW5kcmVlbCAgICAgICAg
ICAgICAgICAgIHwxMzMuNjY3MDMxICAgIHwxMzUuMDA5OTI5ICAgIHwxLjAxMDA0NyAgfCAwLjA3
NTIzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8
IDNkLXJheXRyYWNlLVNQICAgICAgICAgICAgfDQ5MS45Njc2NDkgICAgfDQ5Mi41Mjg5OTIgICAg
fDEuMDAxMTQxICB8IDAuOTU3ODQyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8CisgICAgICAgIHwgZGVsdGEtYmx1ZSAgICAgICAgICAgICAgICB8MTA2Ni43MTgzMTIg
ICB8MTA4MC4yMzA3NzIgICB8MS4wMTI2NjcgIHwgMC41NDkzODIgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBNTCAgICAgICAgICAgICAgICAgICAg
ICAgIHwxMzkuNjE3MjkzICAgIHwxNDAuMDg4NjMwICAgIHwxLjAwMzM3NiAgfCAwLjY2MTY1MSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IHJlZ2V4
cCAgICAgICAgICAgICAgICAgICAgfDM1MS43NzM5NTYgICAgfDM1MS4wNzU5MzUgICAgfDAuOTk4
MDE2ICB8IDAuNzY5MjUwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
CisgICAgICAgIHwgY3J5cHRvICAgICAgICAgICAgICAgICAgICB8MTUxMC40NzQ2NjMgICB8MTUx
OS4yMTg4NDIgICB8MS4wMDU3ODkgIHwgMC42Mzg0MjAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBjcnlwdG8tbWQ1LVNQICAgICAgICAgICAgIHw3
OTUuNDQ3ODk5ICAgIHw3NzQuMDgyNDkzICAgIHwwLjk3MzE0MCAgfCAwLjA3OTcyOCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IGVhcmxleS1ib3ll
ciAgICAgICAgICAgICAgfDgxMi41NzQ1NDUgICAgfDg3MC42NzgzNzIgICAgfDEuMDcxNTA2ICB8
IDAuMDQ0MDgxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAg
ICAgIHwgb2N0YW5lLXpsaWIgICAgICAgICAgICAgICB8MjUuMTYyNDcwICAgICB8MjUuNjYwMjYx
ICAgICB8MS4wMTk3ODMgIHwgMC41NTQ1OTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwKKyAgICAgICAgfCBkYXRlLWZvcm1hdC10b2Z0ZS1TUCAgICAgIHwzOTUuMjk2
MTM1ICAgIHwzOTguMDA4OTkyICAgIHwxLjAwNjg2MyAgfCAwLjY1MDQ3NSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IG4tYm9keS1TUCAgICAgICAg
ICAgICAgICAgfDExNjUuMzg2NjExICAgfDExNTAuNTI1MTEwICAgfDAuOTg3MjQ4ICB8IDAuMjI3
OTA4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwg
cGRmanMgICAgICAgICAgICAgICAgICAgICB8MTg5LjA2MDI1MiAgICB8MTkxLjAxNTYyOCAgICB8
MS4wMTAzNDMgIHwgMC42MzM3NzcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwKKyAgICAgICAgfCBGbGlnaHRQbGFubmVyICAgICAgICAgICAgIHw5MDguNDI2MTkyICAg
IHw5MDMuNjM2NjQyICAgIHwwLjk5NDcyOCAgfCAwLjgzODgyMSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IHVnbGlmeS1qcy13dGIgICAgICAgICAg
ICAgfDM0LjAyOTM5OSAgICAgfDM0LjE2NDM0MiAgICAgfDEuMDAzOTY1ICB8IDAuNjU1NjUyICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgYmFieWxv
bi13dGIgICAgICAgICAgICAgICB8ODEuMzI5ODY5ICAgICB8ODAuODU1NjgwICAgICB8MC45OTQx
NzAgIHwgMC44NTQzOTMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwK
KyAgICAgICAgfCBzdGFuZm9yZC1jcnlwdG8tc2hhMjU2ICAgIHw4MjYuODUwNTMzICAgIHw4Mzgu
NDk0MTY0ICAgIHwxLjAxNDA4MiAgfCAwLjU3OTYzNiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfAorICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAgICAgYSBtZWFuID0gMjM3
LjkxMDg0CisgICAgICAgIGIgbWVhbiA9IDIzOS45MjY3MAorICAgICAgICBwVmFsdWUgPSAwLjA2
NTc3MTA4OTcKKyAgICAgICAgKEJpZ2dlciBtZWFucyBhcmUgYmV0dGVyLikKKyAgICAgICAgMS4w
MDggdGltZXMgYmV0dGVyCisgICAgICAgIFJlc3VsdHMgQVJFIE5PVCBzaWduaWZpY2FudAorCisg
ICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIu
aDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OnB1c2hUb1NhdmVCeXRlT2Zmc2V0KToK
KyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpwdXNoVG9TYXZlQnl0ZU9mZnNldCk6CisgICAgICAgICog
ZGZnL0RGR09TUkV4aXQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXQ6OmNvbXBpbGVF
eGl0KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpyZWlmeUlubGluZWRDYWxsRnJhbWVzKToKKyAgICAgICAgKiBkZmcvREZH
VGh1bmtzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpvc3JFeGl0R2VuZXJhdGlvblRodW5rR2Vu
ZXJhdG9yKToKKyAgICAgICAgKiBmdGwvRlRMU2F2ZVJlc3RvcmUuY3BwOgorICAgICAgICAoSlND
OjpGVEw6OnNhdmVBbGxSZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpGVEw6OnJlc3RvcmVBbGxS
ZWdpc3RlcnMpOgorICAgICAgICAqIGZ0bC9GVExTYXZlUmVzdG9yZS5oOgorICAgICAgICAqIGZ0
bC9GVExUaHVua3MuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmdlbmVyaWNHZW5lcmF0aW9uVGh1
bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpGVEw6OnNsb3dQYXRoQ2FsbFRodW5rR2VuZXJh
dG9yKToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6
QXNzZW1ibHlIZWxwZXJzOjpyZXN0b3JlQ2FsbGVlU2F2ZXNGcm9tRW50cnlGcmFtZUNhbGxlZVNh
dmVzQnVmZmVyKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpjb3B5Q2FsbGVlU2F2
ZXNUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlckltcGwpOgorICAgICAgICAoSlNDOjpBc3Nl
bWJseUhlbHBlcnM6OmVtaXRTYXZlKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpl
bWl0UmVzdG9yZSk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdFNhdmVDYWxs
ZWVTYXZlc0Zvcik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdFJlc3RvcmVD
YWxsZWVTYXZlc0Zvcik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6Y29weUxMSW50
QmFzZWxpbmVDYWxsZWVTYXZlc0Zyb21GcmFtZU9yUmVnaXN0ZXJUb0VudHJ5RnJhbWVDYWxsZWVT
YXZlc0J1ZmZlcik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdFNhdmVPckNv
cHlMTEludEJhc2VsaW5lQ2FsbGVlU2F2ZXNGb3IpOgorICAgICAgICAqIGppdC9Bc3NlbWJseUhl
bHBlcnMuaDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpjb3B5TExJbnRCYXNlbGlu
ZUNhbGxlZVNhdmVzRnJvbUZyYW1lT3JSZWdpc3RlclRvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVm
ZmVyKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0U2F2ZSk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdFJlc3RvcmUpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRTYXZlT3JDb3B5Q2FsbGVlU2F2ZXNG
b3IpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnNTcG9vbGVycy5oOiBB
ZGRlZC4KKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpTcG9vbGVyOjpTcG9vbGVyKToK
KyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpTcG9vbGVyOjpoYW5kbGVHUFIpOgorICAg
ICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OlNwb29sZXI6OmZsdXNoR1BSKToKKyAgICAgICAg
KEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpTcG9vbGVyOjpoYW5kbGVGUFIpOgorICAgICAgICAoSlND
OjpBc3NlbWJseUhlbHBlcnM6OlNwb29sZXI6OmZsdXNoRlBSKToKKyAgICAgICAgKEpTQzo6QXNz
ZW1ibHlIZWxwZXJzOjpTcG9vbGVyOjpvcCk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVy
czo6TG9hZFJlZ1Nwb29sZXI6OkxvYWRSZWdTcG9vbGVyKToKKyAgICAgICAgKEpTQzo6QXNzZW1i
bHlIZWxwZXJzOjpMb2FkUmVnU3Bvb2xlcjo6bG9hZEdQUik6CisgICAgICAgIChKU0M6OkFzc2Vt
Ymx5SGVscGVyczo6TG9hZFJlZ1Nwb29sZXI6OmZsdXNoR1BSKToKKyAgICAgICAgKEpTQzo6QXNz
ZW1ibHlIZWxwZXJzOjpMb2FkUmVnU3Bvb2xlcjo6bG9hZEZQUik6CisgICAgICAgIChKU0M6OkFz
c2VtYmx5SGVscGVyczo6TG9hZFJlZ1Nwb29sZXI6OmZsdXNoRlBSKToKKyAgICAgICAgKEpTQzo6
QXNzZW1ibHlIZWxwZXJzOjpMb2FkUmVnU3Bvb2xlcjo6aGFuZGxlUGFpcik6CisgICAgICAgIChK
U0M6OkFzc2VtYmx5SGVscGVyczo6TG9hZFJlZ1Nwb29sZXI6OmhhbmRsZVNpbmdsZSk6CisgICAg
ICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6U3RvcmVSZWdTcG9vbGVyOjpTdG9yZVJlZ1Nwb29s
ZXIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OlN0b3JlUmVnU3Bvb2xlcjo6c3Rv
cmVHUFIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OlN0b3JlUmVnU3Bvb2xlcjo6
Zmx1c2hHUFIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OlN0b3JlUmVnU3Bvb2xl
cjo6c3RvcmVGUFIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OlN0b3JlUmVnU3Bv
b2xlcjo6Zmx1c2hGUFIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OlN0b3JlUmVn
U3Bvb2xlcjo6aGFuZGxlUGFpcik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6U3Rv
cmVSZWdTcG9vbGVyOjpoYW5kbGVTaW5nbGUpOgorICAgICAgICAoSlNDOjpSZWdEaXNwYXRjaDxH
UFJSZWc+OjpnZXQpOgorICAgICAgICAoSlNDOjpSZWdEaXNwYXRjaDxHUFJSZWc+Ojp0ZW1wMSk6
CisgICAgICAgIChKU0M6OlJlZ0Rpc3BhdGNoPEdQUlJlZz46OnRlbXAyKToKKyAgICAgICAgKEpT
Qzo6UmVnRGlzcGF0Y2g8R1BSUmVnPjo6cmVnVG9TdG9yZSk6CisgICAgICAgIChKU0M6OlJlZ0Rp
c3BhdGNoPEdQUlJlZz46OmludmFsaWQpOgorICAgICAgICAoSlNDOjpSZWdEaXNwYXRjaDxHUFJS
ZWc+OjpyZWdTaXplKToKKyAgICAgICAgKEpTQzo6UmVnRGlzcGF0Y2g8R1BSUmVnPjo6aXNWYWxp
ZExvYWRQYWlySW1tKToKKyAgICAgICAgKEpTQzo6UmVnRGlzcGF0Y2g8R1BSUmVnPjo6aXNWYWxp
ZFN0b3JlUGFpckltbSk6CisgICAgICAgIChKU0M6OlJlZ0Rpc3BhdGNoPEZQUlJlZz46OmdldCk6
CisgICAgICAgIChKU0M6OlJlZ0Rpc3BhdGNoPEZQUlJlZz46OnRlbXAxKToKKyAgICAgICAgKEpT
Qzo6UmVnRGlzcGF0Y2g8RlBSUmVnPjo6dGVtcDIpOgorICAgICAgICAoSlNDOjpSZWdEaXNwYXRj
aDxGUFJSZWc+OjpyZWdUb1N0b3JlKToKKyAgICAgICAgKEpTQzo6UmVnRGlzcGF0Y2g8RlBSUmVn
Pjo6aW52YWxpZCk6CisgICAgICAgIChKU0M6OlJlZ0Rpc3BhdGNoPEZQUlJlZz46OnJlZ1NpemUp
OgorICAgICAgICAoSlNDOjpSZWdEaXNwYXRjaDxGUFJSZWc+Ojppc1ZhbGlkTG9hZFBhaXJJbW0p
OgorICAgICAgICAoSlNDOjpSZWdEaXNwYXRjaDxGUFJSZWc+Ojppc1ZhbGlkU3RvcmVQYWlySW1t
KToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpDb3B5U3Bvb2xlcjo6U291cmNlOjpn
ZXRSZWcpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OkNvcHlTcG9vbGVyOjpDb3B5
U3Bvb2xlcik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6Q29weVNwb29sZXI6OnRl
bXAxIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpDb3B5U3Bvb2xlcjo6
dGVtcDIgY29uc3QpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OkNvcHlTcG9vbGVy
OjpyZWdUb1N0b3JlKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpDb3B5U3Bvb2xl
cjo6aW52YWxpZCk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6Q29weVNwb29sZXI6
OnJlZ1NpemUpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OkNvcHlTcG9vbGVyOjpp
c1ZhbGlkTG9hZFBhaXJJbW0pOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OkNvcHlT
cG9vbGVyOjppc1ZhbGlkU3RvcmVQYWlySW1tKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxw
ZXJzOjpDb3B5U3Bvb2xlcjo6bG9hZCk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6
Q29weVNwb29sZXI6Om1vdmUpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OkNvcHlT
cG9vbGVyOjpjb3B5KToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpDb3B5U3Bvb2xl
cjo6c3RvcmUpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OkNvcHlTcG9vbGVyOjpm
bHVzaCk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6Q29weVNwb29sZXI6OmxvYWRH
UFIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OkNvcHlTcG9vbGVyOjpjb3B5R1BS
KToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpDb3B5U3Bvb2xlcjo6bW92ZUNvbnN0
YW50KToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpDb3B5U3Bvb2xlcjo6c3RvcmVH
UFIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OkNvcHlTcG9vbGVyOjpmbHVzaEdQ
Uik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6Q29weVNwb29sZXI6OmxvYWRGUFIp
OgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OkNvcHlTcG9vbGVyOjpjb3B5RlBSKToK
KyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpDb3B5U3Bvb2xlcjo6c3RvcmVGUFIpOgor
ICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OkNvcHlTcG9vbGVyOjpmbHVzaEZQUik6Cisg
ICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6Q29weVNwb29sZXI6OmxvYWRQYWlyKToKKyAg
ICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpDb3B5U3Bvb2xlcjo6c3RvcmVQYWlyKToKKyAg
ICAgICAgKiBqaXQvU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
U2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpwcmVzZXJ2ZVJldXNlZFJlZ2lzdGVyc0J5UHVzaGlu
Zyk6CisgICAgICAgIChKU0M6OlNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6cmVzdG9yZVJldXNl
ZFJlZ2lzdGVyc0J5UG9wcGluZyk6CisgICAgICAgIChKU0M6OlNjcmF0Y2hSZWdpc3RlckFsbG9j
YXRvcjo6cHJlc2VydmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbCk6CisgICAgICAgIChKU0M6OlNj
cmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6cmVzdG9yZVJlZ2lzdGVyc0Zyb21TdGFja0ZvckNhbGwp
OgorICAgICAgICAqIGppdC9TY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuaDoKKyAgICAgICAgKiB3
YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2Vu
ZXJhdG9yOjphZGRSZXR1cm4pOgorICAgICAgICAqIHdhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3Bw
OgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjphZGRSZXR1cm4pOgorCiAyMDIx
LTA2LTE1ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAgICAgICAg
IFNob3VsZG4ndCBkcmFpbiB0aGUgbWljcm8gdGFzayBxdWV1ZSB3aGVuIGNhbGxpbmcgb3V0IHRv
IE9iakMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDI3
ODg4NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtNzU3LDYgKzc1Nyw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1F
V09SS19IRUEKICAgICBpbnRlcnByZXRlci9WTUVudHJ5UmVjb3JkLmgKIAogICAgIGppdC9Bc3Nl
bWJseUhlbHBlcnMuaAorICAgIGppdC9Bc3NlbWJseUhlbHBlcnNTcG9vbGVycy5oCiAgICAgaml0
L0NDYWxsSGVscGVycy5oCiAgICAgaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuaAogICAgIGppdC9G
UFJJbmZvLmgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNzg4
ODYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTE0OCw2ICsxMTQ4LDcgQEAKIAkJNjVC
ODM5MkUxQkFDQUQzNjAwNDRFODI0IC8qIENhY2hlZFJlY292ZXJ5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUI4MzkyQzFCQUNBOTJBMDA0NEU4MjQg
LyogQ2FjaGVkUmVjb3ZlcnkuaCAqLzsgfTsKIAkJNkEzOENGQUExRTMyQjVBQjAwNjAyMDZGIC8q
IEFzeW5jU3RhY2tUcmFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNkEzOENGQTgxRTMyQjU4QjAwNjAyMDZGIC8qIEFzeW5jU3RhY2tUcmFjZS5oICov
OyB9OwogCQk2QUQyQ0I0RDE5QjkxNDAxMDAwNjU3MTkgLyogRGVidWdnZXJFdmFsRW5hYmxlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkFEMkNCNEMx
OUI5MTQwMTAwMDY1NzE5IC8qIERlYnVnZ2VyRXZhbEVuYWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk2Qjc2N0U3QjI2NzkxRjI3MDAxN0Y4
RDEgLyogQXNzZW1ibHlIZWxwZXJzU3Bvb2xlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZCNzY3RTdBMjY3OTFGMjcwMDE3RjhEMSAvKiBBc3NlbWJs
eUhlbHBlcnNTcG9vbGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTZCQ0NFQzA0MjVEMUZBMjcwMDBGMzkxRCAvKiBWZXJpZmllclNsb3RWaXNp
dG9ySW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNkJDQ0VDMDMyNUQxRkEyNzAwMEYzOTFEIC8qIFZlcmlmaWVyU2xvdFZpc2l0b3JJbmxpbmVz
LmggKi87IH07CiAJCTcwMTEzRDRDMUE4REIwOTMwMDM4NDhDNCAvKiBJdGVyYXRvck9wZXJhdGlv
bnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwMTEz
RDRBMUE4REIwOTMwMDM4NDhDNCAvKiBJdGVyYXRvck9wZXJhdGlvbnMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MDEzQ0E4QzFCNDkxQTk0MDBD
QUU2MTMgLyogSlNNaWNyb3Rhc2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDcwMTNDQThBMUI0OTFBOTQwMENBRTYxMyAvKiBKU01pY3JvdGFzay5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zOTk3LDYg
KzM5OTgsNyBAQAogCQk2QTM4Q0ZBODFFMzJCNThCMDA2MDIwNkYgLyogQXN5bmNTdGFja1RyYWNl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFzeW5jU3RhY2tUcmFjZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2QUQyQ0I0QzE5QjkxNDAxMDAwNjU3MTkgLyog
RGVidWdnZXJFdmFsRW5hYmxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
ZWJ1Z2dlckV2YWxFbmFibGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZCNzMx
Q0MwMjY0N0E4MzcwMDE0NjQ2RiAvKiBTbG93UGF0aENhbGwuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gU2xvd1BhdGhDYWxsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkI3NjdF
N0EyNjc5MUYyNzAwMTdGOEQxIC8qIEFzc2VtYmx5SGVscGVyc1Nwb29sZXJzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFzc2VtYmx5SGVscGVyc1Nwb29sZXJzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZCQTkzQzk1OTA0ODRDNUJBRDkzMTZFQSAvKiBKU1Nj
cmlwdEZldGNoZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTY3JpcHRG
ZXRjaGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZCQ0NFQzAzMjVEMUZBMjcw
MDBGMzkxRCAvKiBWZXJpZmllclNsb3RWaXNpdG9ySW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBWZXJpZmllclNsb3RWaXNpdG9ySW5saW5lcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3MDExM0Q0OTFBOERCMDkzMDAzODQ4QzQgLyogSXRlcmF0b3JP
cGVyYXRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEl0ZXJh
dG9yT3BlcmF0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MTk3LDYg
KzYxOTksNyBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMEYyNEU1M0IxN0VBOUY1OTAwQUJCMjE3
IC8qIEFzc2VtYmx5SGVscGVycy5jcHAgKi8sCiAJCQkJMEYyNEU1M0MxN0VBOUY1OTAwQUJCMjE3
IC8qIEFzc2VtYmx5SGVscGVycy5oICovLAorCQkJCTZCNzY3RTdBMjY3OTFGMjcwMDE3RjhEMSAv
KiBBc3NlbWJseUhlbHBlcnNTcG9vbGVycy5oICovLAogCQkJCTcyMzk5OEY2MjY1REJDREIwMDU3
ODY3RiAvKiBCYXNlbGluZUpJVFBsYW4uY3BwICovLAogCQkJCTcyMzk5OEY1MjY1REJDREIwMDU3
ODY3RiAvKiBCYXNlbGluZUpJVFBsYW4uaCAqLywKIAkJCQkwRjY0QjI2RjFBNzg0QkFGMDA2RTRF
NjYgLyogQmluYXJ5U3dpdGNoLmNwcCAqLywKQEAgLTkxNTEsNiArOTE1NCw3IEBACiAJCQkJRkU5
MTJCNTEyNTMxMUFEMTAwRkFCRERGIC8qIEFic3RyYWN0U2xvdFZpc2l0b3JJbmxpbmVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1MzRFMDM0RTFFNEQ0QjE2MDAyMTNGNjQgLyogQWNjZXNzQ2FzZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRTNCRkQwQkMxREFGODA4RTAwNjVERUEyIC8qIEFjY2Vzc0Nh
c2VTbmlwcGV0UGFyYW1zLmggaW4gSGVhZGVycyAqLywKKwkJCQk2Qjc2N0U3QjI2NzkxRjI3MDAx
N0Y4RDEgLyogQXNzZW1ibHlIZWxwZXJzU3Bvb2xlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUz
NzBCNEY2MUJGMjYyMDUwMDVDNDBGQyAvKiBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdh
dGNocG9pbnRCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MTY4QkQ4NzI0NDdCQTRFMDA4MEZG
QjQgLyogQWdncmVnYXRlRXJyb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTkxOEUxNUMzMjQ0N0Iy
MjcwMDQ0N0E1NiAvKiBBZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyLmgJKHJldmlzaW9uIDI3ODg4NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzM3LDcgKzMzNyw3IEBAIHB1
YmxpYzoKICAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihzaXplb2YoZG91YmxlKSksIHN0YWNr
UG9pbnRlclJlZ2lzdGVyKTsKICAgICB9CiAgICAgCi0gICAgc3RhdGljIHB0cmRpZmZfdCBwdXNo
VG9TYXZlQnl0ZU9mZnNldCgpIHsgcmV0dXJuIHNpemVvZih2b2lkKik7IH0KKyAgICBzdGF0aWMg
Y29uc3RleHByIHB0cmRpZmZfdCBwdXNoVG9TYXZlQnl0ZU9mZnNldCgpIHsgcmV0dXJuIHNpemVv
Zih2b2lkKik7IH0KICNlbmRpZiAvLyAhQ1BVKEFSTTY0KQogCiAjaWYgQ1BVKFg4Nl82NCkgfHwg
Q1BVKEFSTTY0KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckFSTTY0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgJKHJldmlzaW9uIDI3ODg4NikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNTA0LDcgKzI1MDQsNyBAQCBwdWJsaWM6CiAgICAgICAgIHN0b3JlRG91YmxlKHNy
Yywgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgIH0KIAotICAgIHN0YXRpYyBwdHJkaWZmX3Qg
cHVzaFRvU2F2ZUJ5dGVPZmZzZXQoKSB7IHJldHVybiAxNjsgfQorICAgIHN0YXRpYyBjb25zdGV4
cHIgcHRyZGlmZl90IHB1c2hUb1NhdmVCeXRlT2Zmc2V0KCkgeyByZXR1cm4gMTY7IH0KIAogICAg
IC8vIFJlZ2lzdGVyIG1vdmUgb3BlcmF0aW9uczoKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPU1JFeGl0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09TUkV4aXQuY3BwCShyZXZpc2lvbiAyNzg4ODYpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3
IEBACiAKICNpZiBFTkFCTEUoREZHX0pJVCkKIAotI2luY2x1ZGUgIkFzc2VtYmx5SGVscGVycy5o
IgorI2luY2x1ZGUgIkFzc2VtYmx5SGVscGVyc1Nwb29sZXJzLmgiCiAjaW5jbHVkZSAiQnl0ZWNv
ZGVTdHJ1Y3RzLmgiCiAjaW5jbHVkZSAiQ2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGUuaCIKICNp
bmNsdWRlICJERkdHcmFwaC5oIgpAQCAtNTYyLDEzICs1NjIsMTkgQEAgdm9pZCBPU1JFeGl0Ojpj
b21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIAogICAgIC8vIGRvIHRoaXMgZXZlbiBmb3Igc3RhdGUg
dGhhdCdzIGFscmVhZHkgaW4gdGhlIHJpZ2h0IHBsYWNlIG9uIHRoZSBzdGFjay4KICAgICAvLyBJ
dCBtYWtlcyB0aGluZ3Mgc2ltcGxlciBsYXRlci4KIAorICAgIGJvb2wgaW5saW5lU3RhY2tDb250
YWluc0FjdGl2ZUNoZWNrcG9pbnQgPSBleGl0Lm1fY29kZU9yaWdpbi5pbmxpbmVTdGFja0NvbnRh
aW5zQWN0aXZlQ2hlY2twb2ludCgpOworICAgIHNpemVfdCBmaXJzdFRtcFRvUmVzdG9yZUVhcmx5
ID0gb3BlcmFuZHMuc2l6ZSgpIC0gb3BlcmFuZHMubnVtYmVyT2ZUbXBzKCk7CisgICAgaWYgKCFp
bmxpbmVTdGFja0NvbnRhaW5zQWN0aXZlQ2hlY2twb2ludCkKKyAgICAgICAgZmlyc3RUbXBUb1Jl
c3RvcmVFYXJseSA9IG9wZXJhbmRzLnNpemUoKTsgLy8gRG9uJ3QgZWFnZXJseSByZXN0b3JlLgor
CiAgICAgLy8gVGhlIHRhZyByZWdpc3RlcnMgYXJlIG5lZWRlZCB0byBtYXRlcmlhbGl6ZSByZWNv
dmVyaWVzIGJlbG93LgogICAgIGppdC5lbWl0TWF0ZXJpYWxpemVUYWdDaGVja1JlZ2lzdGVycygp
OwogCiAgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG9wZXJhbmRzLnNpemUoKTsg
KytpbmRleCkgewogICAgICAgICBjb25zdCBWYWx1ZVJlY292ZXJ5JiByZWNvdmVyeSA9IG9wZXJh
bmRzW2luZGV4XTsKIAotICAgICAgICBzd2l0Y2ggKHJlY292ZXJ5LnRlY2huaXF1ZSgpKSB7Cisg
ICAgICAgIGF1dG8gY3VycmVudFRlY2huaXF1ZSA9IHJlY292ZXJ5LnRlY2huaXF1ZSgpOworICAg
ICAgICBzd2l0Y2ggKGN1cnJlbnRUZWNobmlxdWUpIHsKICAgICAgICAgY2FzZSBEaXNwbGFjZWRJ
bkpTU3RhY2s6CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgY2FzZSBDZWxsRGlzcGxhY2Vk
SW5KU1N0YWNrOgpAQCAtNTk0LDkgKzYwMCwxMiBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVFeGl0
KENDYWxsSGVscGVycyYgCiAKICAgICAgICAgY2FzZSBDb25zdGFudDogewogI2lmIFVTRShKU1ZB
TFVFNjQpCi0gICAgICAgICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW02
NChKU1ZhbHVlOjplbmNvZGUocmVjb3ZlcnkuY29uc3RhbnQoKSkpLCBHUFJJbmZvOjpyZWdUMCk7
Ci0gICAgICAgICAgICBqaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwgc2NyYXRjaCArIGluZGV4
KTsKLSNlbHNlCisgICAgICAgICAgICBpZiAoaW5kZXggPj0gZmlyc3RUbXBUb1Jlc3RvcmVFYXJs
eSkgeworICAgICAgICAgICAgICAgIEFTU0VSVChvcGVyYW5kcy5vcGVyYW5kRm9ySW5kZXgoaW5k
ZXgpLmlzVG1wKCkpOworICAgICAgICAgICAgICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6
VHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShyZWNvdmVyeS5jb25zdGFudCgpKSksIEdQUklu
Zm86OnJlZ1QwKTsKKyAgICAgICAgICAgICAgICBqaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwg
c2NyYXRjaCArIGluZGV4KTsKKyAgICAgICAgICAgIH0KKyNlbHNlIC8vIG5vdCBVU0UoSlNWQUxV
RTY0KQogICAgICAgICAgICAgaml0LnN0b3JlMzIoCiAgICAgICAgICAgICAgICAgQXNzZW1ibHlI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIocmVjb3ZlcnkuY29uc3RhbnQoKS50YWcoKSksCiAgICAgICAg
ICAgICAgICAgJmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCAr
IGluZGV4KS0+YXNCaXRzLnRhZyk7CkBAIC03NjYsNyArNzc1LDcgQEAgdm9pZCBPU1JFeGl0Ojpj
b21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIAogICAgIGlmIChleGl0LmlzRXhjZXB0aW9uSGFuZGxl
cigpKQogICAgICAgICBqaXQuY29weUNhbGxlZVNhdmVzVG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNC
dWZmZXIodm0udG9wRW50cnlGcmFtZSk7CiAKLSAgICBpZiAoZXhpdC5tX2NvZGVPcmlnaW4uaW5s
aW5lU3RhY2tDb250YWluc0FjdGl2ZUNoZWNrcG9pbnQoKSkgeworICAgIGlmIChpbmxpbmVTdGFj
a0NvbnRhaW5zQWN0aXZlQ2hlY2twb2ludCkgewogICAgICAgICBFbmNvZGVkSlNWYWx1ZSogdG1w
U2NyYXRjaCA9IHNjcmF0Y2ggKyBvcGVyYW5kcy50bXBJbmRleCgwKTsKICAgICAgICAgaml0LnNl
dHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbk1hdGVyaWFsaXplT1NSRXhpdFNpZGVTdGF0
ZSk+KCZ2bSwgJmV4aXQsIHRtcFNjcmF0Y2gpOwogICAgICAgICBqaXQucHJlcGFyZUNhbGxPcGVy
YXRpb24odm0pOwpAQCAtNzc2LDYgKzc4NSwxNiBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVFeGl0
KENDYWxsSGVscGVycyYgCiAKICAgICAvLyBEbyBhbGwgZGF0YSBmb3JtYXQgY29udmVyc2lvbnMg
YW5kIHN0b3JlIHRoZSByZXN1bHRzIGludG8gdGhlIHN0YWNrLgogCisjaWYgVVNFKEpTVkFMVUU2
NCkKKyAgICBjb25zdGV4cHIgR1BSUmVnIHNyY0J1ZmZlckdQUiA9IEdQUkluZm86OnJlZ1QyOwor
ICAgIGNvbnN0ZXhwciBHUFJSZWcgZGVzdEJ1ZmZlckdQUiA9IEdQUkluZm86OnJlZ1QzOworICAg
IGNvbnN0ZXhwciBHUFJSZWcgdW5kZWZpbmVkR1BSID0gR1BSSW5mbzo6cmVnVDQ7CisgICAgYm9v
bCB1bmRlZmluZWRHUFJJc0luaXRpYWxpemVkID0gZmFsc2U7CisKKyAgICBqaXQubW92ZShDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc2NyYXRjaCksIHNyY0J1ZmZlckdQUik7CisgICAgaml0
Lm1vdmUoQ0NhbGxIZWxwZXJzOjpmcmFtZVBvaW50ZXJSZWdpc3RlciwgZGVzdEJ1ZmZlckdQUik7
CisgICAgQ0NhbGxIZWxwZXJzOjpDb3B5U3Bvb2xlciBzcG9vbGVyKENDYWxsSGVscGVyczo6Q29w
eVNwb29sZXI6OkJ1ZmZlclJlZ3M6OkFsbG93TW9kaWZpY2F0aW9uLCBqaXQsIHNyY0J1ZmZlckdQ
UiwgZGVzdEJ1ZmZlckdQUiwgR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QxKTsKKyNlbmRp
ZgogICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBvcGVyYW5kcy5zaXplKCk7ICsr
aW5kZXgpIHsKICAgICAgICAgY29uc3QgVmFsdWVSZWNvdmVyeSYgcmVjb3ZlcnkgPSBvcGVyYW5k
c1tpbmRleF07CiAgICAgICAgIE9wZXJhbmQgb3BlcmFuZCA9IG9wZXJhbmRzLm9wZXJhbmRGb3JJ
bmRleChpbmRleCk7CkBAIC03ODYsNiArODA1LDIzIEBAIHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4
aXQoQ0NhbGxIZWxwZXJzJiAKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIHN3aXRj
aCAocmVjb3ZlcnkudGVjaG5pcXVlKCkpIHsKKyAgICAgICAgY2FzZSBDb25zdGFudDogeworI2lm
IFVTRShKU1ZBTFVFNjQpCisgICAgICAgICAgICBFbmNvZGVkSlNWYWx1ZSBjdXJyZW50Q29uc3Rh
bnQgPSBKU1ZhbHVlOjplbmNvZGUocmVjb3ZlcnkuY29uc3RhbnQoKSk7CisgICAgICAgICAgICBp
ZiAoY3VycmVudENvbnN0YW50ID09IGVuY29kZWRKU1VuZGVmaW5lZCgpKSB7CisgICAgICAgICAg
ICAgICAgaWYgKCF1bmRlZmluZWRHUFJJc0luaXRpYWxpemVkKSB7CisgICAgICAgICAgICAgICAg
ICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KGVuY29kZWRKU1VuZGVmaW5l
ZCgpKSwgdW5kZWZpbmVkR1BSKTsKKyAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkR1BSSXNJ
bml0aWFsaXplZCA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHNw
b29sZXIuY29weUdQUih1bmRlZmluZWRHUFIpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICAgICAgc3Bvb2xlci5tb3ZlQ29uc3RhbnQoY3VycmVudENvbnN0YW50KTsKKyAgICAgICAg
ICAgIHNwb29sZXIuc3RvcmVHUFIob3BlcmFuZC52aXJ0dWFsUmVnaXN0ZXIoKS5vZmZzZXQoKSAq
IHNpemVvZihDUFVSZWdpc3RlcikpOworICAgICAgICAgICAgYnJlYWs7CisjZWxzZQorICAgICAg
ICAgICAgRkFMTFRIUk9VR0g7CisjZW5kaWYKKyAgICAgICAgfQogICAgICAgICBjYXNlIERpc3Bs
YWNlZEluSlNTdGFjazoKICAgICAgICAgY2FzZSBCb29sZWFuRGlzcGxhY2VkSW5KU1N0YWNrOgog
ICAgICAgICBjYXNlIEludDMyRGlzcGxhY2VkSW5KU1N0YWNrOgpAQCAtNzk1LDcgKzgzMSw2IEBA
IHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiAKICAgICAgICAgY2FzZSBV
bmJveGVkSW50MzJJbkdQUjoKICAgICAgICAgY2FzZSBVbmJveGVkQ2VsbEluR1BSOgogICAgICAg
ICBjYXNlIFVuYm94ZWREb3VibGVJbkZQUjoKLSAgICAgICAgY2FzZSBDb25zdGFudDoKICAgICAg
ICAgY2FzZSBJbkZQUjoKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBjYXNlIEluR1BSOgpA
QCAtODAzLDggKzgzOCw4IEBAIHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJz
JiAKICAgICAgICAgY2FzZSBJbnQ1MkRpc3BsYWNlZEluSlNTdGFjazoKICAgICAgICAgY2FzZSBV
bmJveGVkU3RyaWN0SW50NTJJbkdQUjoKICAgICAgICAgY2FzZSBTdHJpY3RJbnQ1MkRpc3BsYWNl
ZEluSlNTdGFjazoKLSAgICAgICAgICAgIGppdC5sb2FkNjQoc2NyYXRjaCArIGluZGV4LCBHUFJJ
bmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBqaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwgQXNz
ZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQpKTsKKyAgICAgICAgICAgIHNwb29sZXIu
bG9hZEdQUihpbmRleCAqIHNpemVvZihDUFVSZWdpc3RlcikpOworICAgICAgICAgICAgc3Bvb2xl
ci5zdG9yZUdQUihvcGVyYW5kLnZpcnR1YWxSZWdpc3RlcigpLm9mZnNldCgpICogc2l6ZW9mKENQ
VVJlZ2lzdGVyKSk7CiAgICAgICAgICAgICBicmVhazsKICNlbHNlIC8vIG5vdCBVU0UoSlNWQUxV
RTY0KQogICAgICAgICBjYXNlIEluUGFpcjoKQEAgLTgzMyw2ICs4NjgsOSBAQCB2b2lkIE9TUkV4
aXQ6OmNvbXBpbGVFeGl0KENDYWxsSGVscGVycyYgCiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgIH0KKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIHNwb29sZXIuZmx1c2hHUFIoKTsK
KyNlbmRpZgogCiAgICAgLy8gTm93IHRoYXQgdGhpbmdzIG9uIHRoZSBzdGFjayBhcmUgcmVjb3Zl
cmVkLCBkbyB0aGUgYXJndW1lbnRzIHJlY292ZXJ5LiBXZSBhc3N1bWUgdGhhdCBhcmd1bWVudHMK
ICAgICAvLyByZWNvdmVyaWVzIGRvbid0IHJlY3Vyc2l2ZWx5IHJlZmVyIHRvIGVhY2ggb3RoZXIu
IEJ1dCwgd2UgZG9uJ3QgdHJ5IHRvIGFzc3VtZSB0aGF0IHRoZXkgb25seQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9u
LmNwcAkocmV2aXNpb24gMjc4ODg2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODQsNyArMjg0LDcg
QEAgdm9pZCByZWlmeUlubGluZWRDYWxsRnJhbWVzKENDYWxsSGVscGVycwogICAgICAgICAgICAg
aml0LmFkZFB0cihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihzaXplb2YoQ2FsbGVyRnJh
bWVBbmRQQykpLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6cmVnVDIpOwog
ICAgICAgICAgICAgaml0LnVudGFnUHRyKEdQUkluZm86OnJlZ1QyLCBHUFJJbmZvOjpyZWdUMyk7
CiAgICAgICAgICAgICBqaXQuYWRkUHRyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKGlu
bGluZUNhbGxGcmFtZS0+cmV0dXJuUENPZmZzZXQoKSArIHNpemVvZih2b2lkKikpLCBHUFJJbmZv
OjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6cmVnVDIpOwotICAgICAgICAgICAgaml0LnZh
bGlkYXRlVW50YWdnZWRQdHIoR1BSSW5mbzo6cmVnVDMsIEdQUkluZm86Om5vbkFyZ0dQUjApOwor
ICAgICAgICAgICAgaml0LnZhbGlkYXRlVW50YWdnZWRQdHIoR1BSSW5mbzo6cmVnVDMsIEdQUklu
Zm86OnJlZ1Q0KTsKICAgICAgICAgICAgIGppdC50YWdQdHIoR1BSSW5mbzo6cmVnVDIsIEdQUklu
Zm86OnJlZ1QzKTsKICNlbmRpZgogICAgICAgICAgICAgaml0LnN0b3JlUHRyKEdQUkluZm86OnJl
Z1QzLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3JCeXRlT2Zmc2V0KGlubGluZUNhbGxGcmFt
ZS0+cmV0dXJuUENPZmZzZXQoKSkpOwpAQCAtMzA1LDkgKzMwNSw5IEBAIHZvaWQgcmVpZnlJbmxp
bmVkQ2FsbEZyYW1lcyhDQ2FsbEhlbHBlcnMKIAogI2lmIENQVShBUk02NEUpCiAgICAgICAgICAg
ICBqaXQuYWRkUHRyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKGlubGluZUNhbGxGcmFt
ZS0+cmV0dXJuUENPZmZzZXQoKSArIHNpemVvZih2b2lkKikpLCBHUFJJbmZvOjpjYWxsRnJhbWVS
ZWdpc3RlciwgR1BSSW5mbzo6cmVnVDIpOwotICAgICAgICAgICAgaml0Lm1vdmUoQXNzZW1ibHlI
ZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGp1bXBUYXJnZXQudW50YWdnZWRFeGVjdXRhYmxlQWRkcmVz
cygpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7Ci0gICAgICAgICAgICBqaXQudGFnUHRyKEdQUklu
Zm86OnJlZ1QyLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKLSAgICAgICAgICAgIGppdC5zdG9yZVB0
cihHUFJJbmZvOjpub25BcmdHUFIwLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3JCeXRlT2Zm
c2V0KGlubGluZUNhbGxGcmFtZS0+cmV0dXJuUENPZmZzZXQoKSkpOworICAgICAgICAgICAgaml0
Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGp1bXBUYXJnZXQudW50YWdnZWRF
eGVjdXRhYmxlQWRkcmVzcygpKSwgR1BSSW5mbzo6cmVnVDQpOworICAgICAgICAgICAgaml0LnRh
Z1B0cihHUFJJbmZvOjpyZWdUMiwgR1BSSW5mbzo6cmVnVDQpOworICAgICAgICAgICAgaml0LnN0
b3JlUHRyKEdQUkluZm86OnJlZ1Q0LCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3JCeXRlT2Zm
c2V0KGlubGluZUNhbGxGcmFtZS0+cmV0dXJuUENPZmZzZXQoKSkpOwogI2Vsc2UKICAgICAgICAg
ICAgIGppdC5zdG9yZVB0cihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoanVtcFRhcmdl
dC51bnRhZ2dlZEV4ZWN1dGFibGVBZGRyZXNzKCkpLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NG
b3JCeXRlT2Zmc2V0KGlubGluZUNhbGxGcmFtZS0+cmV0dXJuUENPZmZzZXQoKSkpOwogI2VuZGlm
CkBAIC0zMTgsMTEgKzMxOCwxMSBAQCB2b2lkIHJlaWZ5SW5saW5lZENhbGxGcmFtZXMoQ0NhbGxI
ZWxwZXJzCiAgICAgICAgIC8vIFJlc3RvcmUgdGhlIGlubGluZSBjYWxsIGZyYW1lJ3MgY2FsbGVl
IHNhdmUgcmVnaXN0ZXJzLgogICAgICAgICAvLyBJZiB0aGlzIGlubGluZWQgZnJhbWUgaXMgYSB0
YWlsIGNhbGwgdGhhdCB3aWxsIHJldHVybiBiYWNrIHRvIHRoZSBvcmlnaW5hbCBjYWxsZXIsIHdl
IG5lZWQgdG8KICAgICAgICAgLy8gY29weSB0aGUgcHJpb3IgY29udGVudHMgb2YgdGhlIHRhZyBy
ZWdpc3RlcnMgYWxyZWFkeSBzYXZlZCBmb3IgdGhlIG91dGVyIGZyYW1lIHRvIHRoaXMgZnJhbWUu
Ci0gICAgICAgIGppdC5lbWl0U2F2ZU9yQ29weUNhbGxlZVNhdmVzRm9yKAorICAgICAgICBqaXQu
ZW1pdFNhdmVPckNvcHlMTEludEJhc2VsaW5lQ2FsbGVlU2F2ZXNGb3IoCiAgICAgICAgICAgICBi
YXNlbGluZUNvZGVCbG9jaywKICAgICAgICAgICAgIHN0YXRpY19jYXN0PFZpcnR1YWxSZWdpc3Rl
cj4oaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCksCiAgICAgICAgICAgICB0cnVlQ2FsbGVy
ID8gQXNzZW1ibHlIZWxwZXJzOjpVc2VFeGlzdGluZ1RhZ1JlZ2lzdGVyQ29udGVudHMgOiBBc3Nl
bWJseUhlbHBlcnM6OkNvcHlCYXNlbGluZUNhbGxlZVNhdmVkUmVnaXN0ZXJzRnJvbUJhc2VGcmFt
ZSwKLSAgICAgICAgICAgIEdQUkluZm86OnJlZ1QyKTsKKyAgICAgICAgICAgIEdQUkluZm86OnJl
Z1QyLCBHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVnVDQpOwogCiAgICAgICAgIGlmIChjYWxs
ZXJJc0xMSW50KSB7CiAgICAgICAgICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrRm9y
Q2FsbGVyID0gaml0LmJhc2VsaW5lQ29kZUJsb2NrRm9yKCp0cnVlQ2FsbGVyKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5jcHAJKHJldmlzaW9uIDI3ODg4NikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKERGR19KSVQpCiAKKyNpbmNsdWRlICJBc3Nl
bWJseUhlbHBlcnNTcG9vbGVycy5oIgogI2luY2x1ZGUgIkNDYWxsSGVscGVycy5oIgogI2luY2x1
ZGUgIkRGR0pJVENvZGUuaCIKICNpbmNsdWRlICJERkdPU1JFeGl0LmgiCkBAIC00OSwzNCArNTAs
NzMgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBvcwogICAgIHNpemVf
dCBzY3JhdGNoU2l6ZSA9IHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgKiAoR1BSSW5mbzo6bnVtYmVy
T2ZSZWdpc3RlcnMgKyBGUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyk7CiAgICAgU2NyYXRjaEJ1
ZmZlciogc2NyYXRjaEJ1ZmZlciA9IHZtLnNjcmF0Y2hCdWZmZXJGb3JTaXplKHNjcmF0Y2hTaXpl
KTsKICAgICBFbmNvZGVkSlNWYWx1ZSogYnVmZmVyID0gc3RhdGljX2Nhc3Q8RW5jb2RlZEpTVmFs
dWUqPihzY3JhdGNoQnVmZmVyLT5kYXRhQnVmZmVyKCkpOwotICAgIAotICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVyczsgKytpKSB7CisKKyNpZiBD
UFUoQVJNNjQpCisgICAgY29uc3RleHByIEdQUlJlZyBidWZmZXJHUFIgPSBDQ2FsbEhlbHBlcnM6
Om1lbW9yeVRlbXBSZWdpc3RlcjsKKyAgICBjb25zdGV4cHIgdW5zaWduZWQgZmlyc3RHUFIgPSAw
OworI2VsaWYgQ1BVKFg4Nl82NCkKKyAgICBHUFJSZWcgYnVmZmVyR1BSID0gaml0LnNjcmF0Y2hS
ZWdpc3RlcigpOworICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBmaXJzdEdQUiA9IDA7CisjZWxzZQor
ICAgIEdQUlJlZyBidWZmZXJHUFIgPSBHUFJJbmZvOjp0b1JlZ2lzdGVyKDApOworICAgIGNvbnN0
ZXhwciB1bnNpZ25lZCBmaXJzdEdQUiA9IDE7CisjZW5kaWYKKworICAgIGlmIGNvbnN0ZXhwciAo
Zmlyc3RHUFIpIHsKKyAgICAgICAgLy8gV2UncmUgdXNpbmcgdGhlIGZpcnN0R1BSIGFzIHRoZSBi
dWZmZXJHUFIsIGFuZCBuZWVkIHRvIHNhdmUgaXQgbWFudWFsbHkuCisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzID49IDEpOworICAgICAgICBSRUxFQVNF
X0FTU0VSVChidWZmZXJHUFIgPT0gR1BSSW5mbzo6dG9SZWdpc3RlcigwKSk7CiAjaWYgVVNFKEpT
VkFMVUU2NCkKLSAgICAgICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6dG9SZWdpc3RlcihpKSwgYnVm
ZmVyICsgaSk7CisgICAgICAgIGppdC5zdG9yZTY0KGJ1ZmZlckdQUiwgYnVmZmVyKTsKICNlbHNl
Ci0gICAgICAgIGppdC5zdG9yZTMyKEdQUkluZm86OnRvUmVnaXN0ZXIoaSksIGJ1ZmZlciArIGkp
OworICAgICAgICBqaXQuc3RvcmUzMihidWZmZXJHUFIsIGJ1ZmZlcik7CiAjZW5kaWYKICAgICB9
CisKKyAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoYnVmZmVyKSwgYnVm
ZmVyR1BSKTsKKworICAgIENDYWxsSGVscGVyczo6U3RvcmVSZWdTcG9vbGVyIHN0b3JlU3Bvb2xl
cihqaXQsIGJ1ZmZlckdQUik7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBmaXJzdEdQUjsgaSA8
IEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyArK2kpIHsKKyAgICAgICAgcHRyZGlmZl90IG9m
ZnNldCA9IGkgKiBzaXplb2YoQ1BVUmVnaXN0ZXIpOworICAgICAgICBzdG9yZVNwb29sZXIuc3Rv
cmVHUFIoeyBHUFJJbmZvOjp0b1JlZ2lzdGVyKGkpLCBvZmZzZXQgfSk7CisgICAgfQorICAgIHN0
b3JlU3Bvb2xlci5mbHVzaEdQUigpOworCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEZQ
UkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyArK2kpIHsKLSAgICAgICAgaml0Lm1vdmUoTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoYnVmZmVyICsgR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3Rl
cnMgKyBpKSwgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICBqaXQuc3RvcmVEb3VibGUoRlBSSW5m
bzo6dG9SZWdpc3RlcihpKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAp
KTsKKyAgICAgICAgcHRyZGlmZl90IG9mZnNldCA9IChHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVy
cyArIGkpICogc2l6ZW9mKGRvdWJsZSk7CisgICAgICAgIHN0b3JlU3Bvb2xlci5zdG9yZUZQUih7
IEZQUkluZm86OnRvUmVnaXN0ZXIoaSksIG9mZnNldCB9KTsKICAgICB9Ci0gICAgCisgICAgc3Rv
cmVTcG9vbGVyLmZsdXNoRlBSKCk7CisKICAgICAvLyBTZXQgdXAgb25lIGFyZ3VtZW50LgogICAg
IGppdC5tb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAKICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6Q2FsbCBmdW5jdGlvbkNhbGwgPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOwogCisg
ICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGJ1ZmZlciksIGJ1ZmZlckdQ
Uik7CisgICAgQ0NhbGxIZWxwZXJzOjpMb2FkUmVnU3Bvb2xlciBsb2FkbFNwb29sZXIoaml0LCBi
dWZmZXJHUFIpOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gZmlyc3RHUFI7IGkgPCBHUFJJbmZv
OjpudW1iZXJPZlJlZ2lzdGVyczsgKytpKSB7CisgICAgICAgIHB0cmRpZmZfdCBvZmZzZXQgPSBp
ICogc2l6ZW9mKENQVVJlZ2lzdGVyKTsKKyAgICAgICAgbG9hZGxTcG9vbGVyLmxvYWRHUFIoeyBH
UFJJbmZvOjp0b1JlZ2lzdGVyKGkpLCBvZmZzZXQgfSk7CisgICAgfQorICAgIGxvYWRsU3Bvb2xl
ci5mbHVzaEdQUigpOworCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEZQUkluZm86Om51
bWJlck9mUmVnaXN0ZXJzOyArK2kpIHsKLSAgICAgICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW1QdHIoYnVmZmVyICsgR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgKyBpKSwg
R1BSSW5mbzo6cmVnVDApOwotICAgICAgICBqaXQubG9hZERvdWJsZShNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCksIEZQUkluZm86OnRvUmVnaXN0ZXIoaSkpOworICAgICAg
ICBwdHJkaWZmX3Qgb2Zmc2V0ID0gKEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzICsgaSkgKiBz
aXplb2YoZG91YmxlKTsKKyAgICAgICAgbG9hZGxTcG9vbGVyLmxvYWRGUFIoeyBGUFJJbmZvOjp0
b1JlZ2lzdGVyKGkpLCBvZmZzZXQgfSk7CiAgICAgfQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVyczsgKytpKSB7CisgICAgbG9hZGxTcG9vbGVy
LmZsdXNoRlBSKCk7CisKKyAgICBpZiBjb25zdGV4cHIgKGZpcnN0R1BSKSB7CisgICAgICAgIC8v
IFdlJ3JlIHVzaW5nIHRoZSBmaXJzdEdQUiBhcyB0aGUgYnVmZmVyR1BSLCBhbmQgbmVlZCB0byBy
ZXN0b3JlIGl0IG1hbnVhbGx5LgorICAgICAgICBBU1NFUlQoYnVmZmVyR1BSID09IEdQUkluZm86
OnRvUmVnaXN0ZXIoMCkpOwogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIGppdC5sb2FkNjQo
YnVmZmVyICsgaSwgR1BSSW5mbzo6dG9SZWdpc3RlcihpKSk7CisgICAgICAgIGppdC5sb2FkNjQo
YnVmZmVyLCBidWZmZXJHUFIpOwogI2Vsc2UKLSAgICAgICAgaml0LmxvYWQzMihidWZmZXIgKyBp
LCBHUFJJbmZvOjp0b1JlZ2lzdGVyKGkpKTsKKyAgICAgICAgaml0LmxvYWQzMihidWZmZXIsIGJ1
ZmZlckdQUik7CiAjZW5kaWYKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMU2F2ZVJlc3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMU2F2ZVJlc3RvcmUuY3BwCShyZXZpc2lvbiAyNzg4ODYpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTFNhdmVSZXN0b3JlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
OCw5ICsyOCwxMCBAQAogCiAjaWYgRU5BQkxFKEZUTF9KSVQpCiAKKyNpbmNsdWRlICJBc3NlbWJs
eUhlbHBlcnNTcG9vbGVycy5oIgogI2luY2x1ZGUgIkZQUkluZm8uaCIKICNpbmNsdWRlICJHUFJJ
bmZvLmgiCi0jaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKKyNpbmNsdWRlICJSZWcuaCIKICNp
bmNsdWRlICJSZWdpc3RlclNldC5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7
CkBAIC03Nyw3MCArNzgsMTA0IEBAIHN0cnVjdCBSZWdzIHsKICAgICB7CiAgICAgICAgIHNwZWNp
YWwgPSBSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKTsKICAgICAgICAgc3BlY2lhbC5tZXJn
ZShSZWdpc3RlclNldDo6cmVzZXJ2ZWRIYXJkd2FyZVJlZ2lzdGVycygpKTsKLSAgICAgICAgCisK
ICAgICAgICAgZmlyc3QgPSBNYWNyb0Fzc2VtYmxlcjo6Zmlyc3RSZWdpc3RlcigpOwogICAgICAg
ICB3aGlsZSAoc3BlY2lhbC5nZXQoZmlyc3QpKQogICAgICAgICAgICAgZmlyc3QgPSBNYWNyb0Fz
c2VtYmxlcjo6bmV4dFJlZ2lzdGVyKGZpcnN0KTsKLSAgICAgICAgc2Vjb25kID0gTWFjcm9Bc3Nl
bWJsZXI6Om5leHRSZWdpc3RlcihmaXJzdCk7Ci0gICAgICAgIHdoaWxlIChzcGVjaWFsLmdldChz
ZWNvbmQpKQotICAgICAgICAgICAgc2Vjb25kID0gTWFjcm9Bc3NlbWJsZXI6Om5leHRSZWdpc3Rl
cihzZWNvbmQpOwogICAgIH0KLSAgICAKKworICAgIEdQUlJlZyBuZXh0UmVnaXN0ZXIoR1BSUmVn
IGN1cnJlbnQpCisgICAgeworICAgICAgICBhdXRvIG5leHQgPSBNYWNyb0Fzc2VtYmxlcjo6bmV4
dFJlZ2lzdGVyKGN1cnJlbnQpOworICAgICAgICB3aGlsZSAoc3BlY2lhbC5nZXQobmV4dCkpCisg
ICAgICAgICAgICBuZXh0ID0gTWFjcm9Bc3NlbWJsZXI6Om5leHRSZWdpc3RlcihuZXh0KTsKKyAg
ICAgICAgcmV0dXJuIG5leHQ7CisgICAgfQorCisgICAgRlBSUmVnIG5leHRGUFJlZ2lzdGVyKEZQ
UlJlZyBjdXJyZW50KQorICAgIHsKKyAgICAgICAgYXV0byBuZXh0ID0gTWFjcm9Bc3NlbWJsZXI6
Om5leHRGUFJlZ2lzdGVyKGN1cnJlbnQpOworICAgICAgICB3aGlsZSAoc3BlY2lhbC5nZXQobmV4
dCkpCisgICAgICAgICAgICBuZXh0ID0gTWFjcm9Bc3NlbWJsZXI6Om5leHRGUFJlZ2lzdGVyKG5l
eHQpOworICAgICAgICByZXR1cm4gbmV4dDsKKyAgICB9CisKICAgICBSZWdpc3RlclNldCBzcGVj
aWFsOwogICAgIEdQUlJlZyBmaXJzdDsKLSAgICBHUFJSZWcgc2Vjb25kOwogfTsKIAogfSAvLyBh
bm9ueW1vdXMgbmFtZXNwYWNlCiAKLXZvaWQgc2F2ZUFsbFJlZ2lzdGVycyhNYWNyb0Fzc2VtYmxl
ciYgaml0LCBjaGFyKiBzY3JhdGNoTWVtb3J5KQordm9pZCBzYXZlQWxsUmVnaXN0ZXJzKEFzc2Vt
Ymx5SGVscGVycyYgaml0LCBjaGFyKiBzY3JhdGNoTWVtb3J5KQogewogICAgIFJlZ3MgcmVnczsK
ICAgICAKICAgICAvLyBHZXQgdGhlIGZpcnN0IHJlZ2lzdGVyIG91dCBvZiB0aGUgd2F5LCBzbyB0
aGF0IHdlIGNhbiB1c2UgaXQgYXMgYSBwb2ludGVyLgotICAgIGppdC5wb2tlNjQocmVncy5maXJz
dCwgMCk7Ci0gICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoc2NyYXRj
aE1lbW9yeSksIHJlZ3MuZmlyc3QpOwotICAgIAorICAgIEdQUlJlZyBiYXNlR1BSID0gcmVncy5m
aXJzdDsKKyNpZiBDUFUoQVJNNjQpCisgICAgR1BSUmVnIG5leHRHUFIgPSByZWdzLm5leHRSZWdp
c3RlcihiYXNlR1BSKTsKKyAgICBHUFJSZWcgZmlyc3RUb1NhdmVHUFIgPSByZWdzLm5leHRSZWdp
c3RlcihuZXh0R1BSKTsKKyAgICBBU1NFUlQoYmFzZUdQUiA9PSBBUk02NFJlZ2lzdGVyczo6eDAp
OworICAgIEFTU0VSVChuZXh0R1BSID09IEFSTTY0UmVnaXN0ZXJzOjp4MSk7CisjZWxzZQorICAg
IEdQUlJlZyBmaXJzdFRvU2F2ZUdQUiA9IHJlZ3MubmV4dFJlZ2lzdGVyKGJhc2VHUFIpOworI2Vu
ZGlmCisgICAgaml0LnBva2U2NChiYXNlR1BSLCAwKTsKKyAgICBqaXQubW92ZShNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbVB0cihzY3JhdGNoTWVtb3J5KSwgYmFzZUdQUik7CisKKyAgICBBc3Nl
bWJseUhlbHBlcnM6OlN0b3JlUmVnU3Bvb2xlciBzcG9vbGVyKGppdCwgYmFzZUdQUik7CisKICAg
ICAvLyBHZXQgYWxsIG9mIHRoZSBvdGhlciBHUFJzIG91dCBvZiB0aGUgd2F5LgotICAgIGZvciAo
TWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgcmVnID0gcmVncy5zZWNvbmQ7IHJlZyA8PSBNYWNy
b0Fzc2VtYmxlcjo6bGFzdFJlZ2lzdGVyKCk7IHJlZyA9IE1hY3JvQXNzZW1ibGVyOjpuZXh0UmVn
aXN0ZXIocmVnKSkgewotICAgICAgICBpZiAocmVncy5zcGVjaWFsLmdldChyZWcpKQotICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgIGppdC5zdG9yZTY0KHJlZywgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MocmVncy5maXJzdCwgb2Zmc2V0T2ZHUFIocmVnKSkpOwotICAgIH0KKyAgICBmb3Ig
KEdQUlJlZyByZWcgPSBmaXJzdFRvU2F2ZUdQUjsgcmVnIDw9IE1hY3JvQXNzZW1ibGVyOjpsYXN0
UmVnaXN0ZXIoKTsgcmVnID0gcmVncy5uZXh0UmVnaXN0ZXIocmVnKSkKKyAgICAgICAgc3Bvb2xl
ci5zdG9yZUdQUih7IHJlZywgc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihvZmZzZXRPZkdQUihyZWcp
KSB9KTsKKyAgICBzcG9vbGVyLmZsdXNoR1BSKCk7CiAgICAgCiAgICAgLy8gUmVzdG9yZSB0aGUg
Zmlyc3QgcmVnaXN0ZXIgaW50byB0aGUgc2Vjb25kIG9uZSBhbmQgc2F2ZSBpdC4KLSAgICBqaXQu
cGVlazY0KHJlZ3Muc2Vjb25kLCAwKTsKLSAgICBqaXQuc3RvcmU2NChyZWdzLnNlY29uZCwgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVncy5maXJzdCwgb2Zmc2V0T2ZHUFIocmVncy5maXJzdCkp
KTsKKyAgICBqaXQucGVlazY0KGZpcnN0VG9TYXZlR1BSLCAwKTsKKyNpZiBDUFUoQVJNNjQpCisg
ICAgaml0LnN0b3JlUGFpcjY0KGZpcnN0VG9TYXZlR1BSLCBuZXh0R1BSLCBiYXNlR1BSLCBBc3Nl
bWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihvZmZzZXRPZkdQUihiYXNlR1BSKSkpOworI2Vsc2UK
KyAgICBqaXQuc3RvcmU2NChmaXJzdFRvU2F2ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
YmFzZUdQUiwgb2Zmc2V0T2ZHUFIoYmFzZUdQUikpKTsKKyNlbmRpZgogICAgIAogICAgIC8vIEZp
bmFsbHkgc2F2ZSBhbGwgRlBSJ3MuCi0gICAgZm9yIChNYWNyb0Fzc2VtYmxlcjo6RlBSZWdpc3Rl
cklEIHJlZyA9IE1hY3JvQXNzZW1ibGVyOjpmaXJzdEZQUmVnaXN0ZXIoKTsgcmVnIDw9IE1hY3Jv
QXNzZW1ibGVyOjpsYXN0RlBSZWdpc3RlcigpOyByZWcgPSBNYWNyb0Fzc2VtYmxlcjo6bmV4dEZQ
UmVnaXN0ZXIocmVnKSkgewotICAgICAgICBpZiAocmVncy5zcGVjaWFsLmdldChyZWcpKQotICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGppdC5zdG9yZURvdWJsZShyZWcsIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKHJlZ3MuZmlyc3QsIG9mZnNldE9mRlBSKHJlZykpKTsKLSAgICB9Cisg
ICAgZm9yIChNYWNyb0Fzc2VtYmxlcjo6RlBSZWdpc3RlcklEIHJlZyA9IE1hY3JvQXNzZW1ibGVy
OjpmaXJzdEZQUmVnaXN0ZXIoKTsgcmVnIDw9IE1hY3JvQXNzZW1ibGVyOjpsYXN0RlBSZWdpc3Rl
cigpOyByZWcgPSByZWdzLm5leHRGUFJlZ2lzdGVyKHJlZykpCisgICAgICAgIHNwb29sZXIuc3Rv
cmVGUFIoeyByZWcsIHN0YXRpY19jYXN0PHB0cmRpZmZfdD4ob2Zmc2V0T2ZGUFIocmVnKSkgfSk7
CisgICAgc3Bvb2xlci5mbHVzaEZQUigpOwogfQogCi12b2lkIHJlc3RvcmVBbGxSZWdpc3RlcnMo
TWFjcm9Bc3NlbWJsZXImIGppdCwgY2hhciogc2NyYXRjaE1lbW9yeSkKK3ZvaWQgcmVzdG9yZUFs
bFJlZ2lzdGVycyhBc3NlbWJseUhlbHBlcnMmIGppdCwgY2hhciogc2NyYXRjaE1lbW9yeSkKIHsK
ICAgICBSZWdzIHJlZ3M7CiAgICAgCiAgICAgLy8gR2l2ZSBvdXJzZWx2ZXMgYSBwb2ludGVyIHRv
IHRoZSBzY3JhdGNoIG1lbW9yeS4KLSAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbVB0cihzY3JhdGNoTWVtb3J5KSwgcmVncy5maXJzdCk7CisgICAgR1BSUmVnIGJhc2VHUFIg
PSByZWdzLmZpcnN0OworICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
KHNjcmF0Y2hNZW1vcnkpLCBiYXNlR1BSKTsKICAgICAKKyAgICBBc3NlbWJseUhlbHBlcnM6Okxv
YWRSZWdTcG9vbGVyIHNwb29sZXIoaml0LCBiYXNlR1BSKTsKKwogICAgIC8vIFJlc3RvcmUgYWxs
IEZQUidzLgotICAgIGZvciAoTWFjcm9Bc3NlbWJsZXI6OkZQUmVnaXN0ZXJJRCByZWcgPSBNYWNy
b0Fzc2VtYmxlcjo6Zmlyc3RGUFJlZ2lzdGVyKCk7IHJlZyA8PSBNYWNyb0Fzc2VtYmxlcjo6bGFz
dEZQUmVnaXN0ZXIoKTsgcmVnID0gTWFjcm9Bc3NlbWJsZXI6Om5leHRGUFJlZ2lzdGVyKHJlZykp
IHsKLSAgICAgICAgaWYgKHJlZ3Muc3BlY2lhbC5nZXQocmVnKSkKLSAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICBqaXQubG9hZERvdWJsZShNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZWdz
LmZpcnN0LCBvZmZzZXRPZkZQUihyZWcpKSwgcmVnKTsKLSAgICB9Ci0gICAgCi0gICAgZm9yIChN
YWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRCByZWcgPSByZWdzLnNlY29uZDsgcmVnIDw9IE1hY3Jv
QXNzZW1ibGVyOjpsYXN0UmVnaXN0ZXIoKTsgcmVnID0gTWFjcm9Bc3NlbWJsZXI6Om5leHRSZWdp
c3RlcihyZWcpKSB7Ci0gICAgICAgIGlmIChyZWdzLnNwZWNpYWwuZ2V0KHJlZykpCi0gICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgaml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhyZWdzLmZpcnN0LCBvZmZzZXRPZkdQUihyZWcpKSwgcmVnKTsKLSAgICB9Ci0gICAgCi0gICAg
aml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZWdzLmZpcnN0LCBvZmZzZXRPZkdQ
UihyZWdzLmZpcnN0KSksIHJlZ3MuZmlyc3QpOworICAgIGZvciAoTWFjcm9Bc3NlbWJsZXI6OkZQ
UmVnaXN0ZXJJRCByZWcgPSBNYWNyb0Fzc2VtYmxlcjo6Zmlyc3RGUFJlZ2lzdGVyKCk7IHJlZyA8
PSBNYWNyb0Fzc2VtYmxlcjo6bGFzdEZQUmVnaXN0ZXIoKTsgcmVnID0gcmVncy5uZXh0RlBSZWdp
c3RlcihyZWcpKQorICAgICAgICBzcG9vbGVyLmxvYWRGUFIoeyByZWcsIHN0YXRpY19jYXN0PHB0
cmRpZmZfdD4ob2Zmc2V0T2ZGUFIocmVnKSkgfSk7CisgICAgc3Bvb2xlci5mbHVzaEZQUigpOwor
ICAgIAorI2lmIENQVShBUk02NCkKKyAgICBHUFJSZWcgbmV4dEdQUiA9IHJlZ3MubmV4dFJlZ2lz
dGVyKGJhc2VHUFIpOworICAgIEdQUlJlZyBmaXJzdFRvUmVzdG9yZUdQUiA9IHJlZ3MubmV4dFJl
Z2lzdGVyKG5leHRHUFIpOworICAgIEFTU0VSVChiYXNlR1BSID09IEFSTTY0UmVnaXN0ZXJzOjp4
MCk7CisgICAgQVNTRVJUKG5leHRHUFIgPT0gQVJNNjRSZWdpc3RlcnM6OngxKTsKKyNlbHNlCisg
ICAgR1BSUmVnIGZpcnN0VG9SZXN0b3JlR1BSID0gcmVncy5uZXh0UmVnaXN0ZXIoYmFzZUdQUik7
CisjZW5kaWYKKyAgICBmb3IgKE1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEIHJlZyA9IGZpcnN0
VG9SZXN0b3JlR1BSOyByZWcgPD0gTWFjcm9Bc3NlbWJsZXI6Omxhc3RSZWdpc3RlcigpOyByZWcg
PSByZWdzLm5leHRSZWdpc3RlcihyZWcpKQorICAgICAgICBzcG9vbGVyLmxvYWRHUFIoeyByZWcs
IHN0YXRpY19jYXN0PHB0cmRpZmZfdD4ob2Zmc2V0T2ZHUFIocmVnKSkgfSk7CisgICAgc3Bvb2xl
ci5mbHVzaEdQUigpOworCisjaWYgQ1BVKEFSTTY0KQorICAgIGppdC5sb2FkUGFpcjY0KGJhc2VH
UFIsIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKG9mZnNldE9mR1BSKGJhc2VHUFIpKSwg
YmFzZUdQUiwgbmV4dEdQUik7CisjZWxzZQorICAgIGppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoYmFzZUdQUiwgb2Zmc2V0T2ZHUFIoYmFzZUdQUikpLCBiYXNlR1BSKTsKKyNlbmRp
ZgogfQogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6RlRMCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTFNhdmVSZXN0b3JlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExTYXZlUmVzdG9yZS5oCShyZXZpc2lvbiAyNzg4ODYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNhdmVSZXN0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsNyAr
MzMsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgTWFjcm9Bc3NlbWJsZXI7CitjbGFz
cyBBc3NlbWJseUhlbHBlcnM7CiAKIG5hbWVzcGFjZSBGVEwgewogCkBAIC00Niw5ICs0Niw5IEBA
IHNpemVfdCBvZmZzZXRPZkZQUihGUFJSZWcpOwogLy8gQXNzdW1lcyB0aGF0IHRvcC1vZi1zdGFj
ayBjYW4gYmUgdXNlZCBhcyBhIHBvaW50ZXItc2l6ZWQgc2NyYXRjaHBhZC4gU2F2ZXMgYWxsIG9m
CiAvLyB0aGUgcmVnaXN0ZXJzIGludG8gdGhlIHNjcmF0Y2ggYnVmZmVyIHN1Y2ggdGhhdCBSZWdp
c3RlcklEICogc2l6ZW9mKGludDY0X3QpIGlzIHRoZQogLy8gb2Zmc2V0IG9mIGV2ZXJ5IHJlZ2lz
dGVyLgotdm9pZCBzYXZlQWxsUmVnaXN0ZXJzKE1hY3JvQXNzZW1ibGVyJiBqaXQsIGNoYXIqIHNj
cmF0Y2hNZW1vcnkpOwordm9pZCBzYXZlQWxsUmVnaXN0ZXJzKEFzc2VtYmx5SGVscGVycyYgaml0
LCBjaGFyKiBzY3JhdGNoTWVtb3J5KTsKIAotdm9pZCByZXN0b3JlQWxsUmVnaXN0ZXJzKE1hY3Jv
QXNzZW1ibGVyJiBqaXQsIGNoYXIqIHNjcmF0Y2hNZW1vcnkpOwordm9pZCByZXN0b3JlQWxsUmVn
aXN0ZXJzKEFzc2VtYmx5SGVscGVycyYgaml0LCBjaGFyKiBzY3JhdGNoTWVtb3J5KTsKIAogfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OkZUTAogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTFRodW5rcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExUaHVua3MuY3BwCShyZXZpc2lvbiAyNzg4ODYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTFRodW5rcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2lm
IEVOQUJMRShGVExfSklUKQogCi0jaW5jbHVkZSAiQXNzZW1ibHlIZWxwZXJzLmgiCisjaW5jbHVk
ZSAiQXNzZW1ibHlIZWxwZXJzU3Bvb2xlcnMuaCIKICNpbmNsdWRlICJERkdPU1JFeGl0Q29tcGls
ZXJDb21tb24uaCIKICNpbmNsdWRlICJGVExPU1JFeGl0Q29tcGlsZXIuaCIKICNpbmNsdWRlICJG
VExPcGVyYXRpb25zLmgiCkBAIC01NiwzMSArNTYsMzQgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0cgogICAgIH0KICAgICAKICAgICAvLyBOb3RlIHRoYXQgdGhlICJy
ZXR1cm4gYWRkcmVzcyIgd2lsbCBiZSB0aGUgSUQgdGhhdCB3ZSBwYXNzIHRvIHRoZSBnZW5lcmF0
aW9uIGZ1bmN0aW9uLgotICAgIAotICAgIHB0cmRpZmZfdCBzdGFja01pc2FsaWdubWVudCA9IE1h
Y3JvQXNzZW1ibGVyOjpwdXNoVG9TYXZlQnl0ZU9mZnNldCgpOwotICAgIAorCisgICAgY29uc3Rl
eHByIEdQUlJlZyBzdGFja1BvaW50ZXJSZWdpc3RlciA9IE1hY3JvQXNzZW1ibGVyOjpzdGFja1Bv
aW50ZXJSZWdpc3RlcjsKKyAgICBjb25zdGV4cHIgR1BSUmVnIGZyYW1lUG9pbnRlclJlZ2lzdGVy
ID0gTWFjcm9Bc3NlbWJsZXI6OmZyYW1lUG9pbnRlclJlZ2lzdGVyOworICAgIGNvbnN0ZXhwciBw
dHJkaWZmX3QgcHVzaFRvU2F2ZUJ5dGVPZmZzZXQgPSBNYWNyb0Fzc2VtYmxlcjo6cHVzaFRvU2F2
ZUJ5dGVPZmZzZXQoKTsKKyAgICBwdHJkaWZmX3Qgc3RhY2tNaXNhbGlnbm1lbnQgPSBwdXNoVG9T
YXZlQnl0ZU9mZnNldDsKKwogICAgIC8vIFByZXRlbmQgdGhhdCB3ZSdyZSBhIEMgY2FsbCBmcmFt
ZS4KLSAgICBqaXQucHVzaFRvU2F2ZShNYWNyb0Fzc2VtYmxlcjo6ZnJhbWVQb2ludGVyUmVnaXN0
ZXIpOwotICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlciwg
TWFjcm9Bc3NlbWJsZXI6OmZyYW1lUG9pbnRlclJlZ2lzdGVyKTsKLSAgICBzdGFja01pc2FsaWdu
bWVudCArPSBNYWNyb0Fzc2VtYmxlcjo6cHVzaFRvU2F2ZUJ5dGVPZmZzZXQoKTsKLSAgICAKKyAg
ICBqaXQucHVzaFRvU2F2ZShmcmFtZVBvaW50ZXJSZWdpc3Rlcik7CisgICAgaml0Lm1vdmUoc3Rh
Y2tQb2ludGVyUmVnaXN0ZXIsIGZyYW1lUG9pbnRlclJlZ2lzdGVyKTsKKyAgICBzdGFja01pc2Fs
aWdubWVudCArPSBwdXNoVG9TYXZlQnl0ZU9mZnNldDsKKwogICAgIC8vIE5vdyBjcmVhdGUgb3Vy
c2VsdmVzIGVub3VnaCBzdGFjayBzcGFjZSB0byBnaXZlIHNhdmVBbGxSZWdpc3RlcnMoKSBhIHNj
cmF0Y2ggc2xvdC4KICAgICB1bnNpZ25lZCBudW1iZXJPZlJlcXVpcmVkUG9wcyA9IDA7CiAgICAg
ZG8gewotICAgICAgICBqaXQucHVzaFRvU2F2ZShHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgIHN0
YWNrTWlzYWxpZ25tZW50ICs9IE1hY3JvQXNzZW1ibGVyOjpwdXNoVG9TYXZlQnl0ZU9mZnNldCgp
OworICAgICAgICBzdGFja01pc2FsaWdubWVudCArPSBwdXNoVG9TYXZlQnl0ZU9mZnNldDsKICAg
ICAgICAgbnVtYmVyT2ZSZXF1aXJlZFBvcHMrKzsKICAgICB9IHdoaWxlIChzdGFja01pc2FsaWdu
bWVudCAlIHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSk7Ci0gICAgCisgICAgaml0LnN1YlB0cihNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKG51bWJlck9mUmVxdWlyZWRQb3BzICogcHVzaFRvU2F2
ZUJ5dGVPZmZzZXQpLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisKICAgICBTY3JhdGNoQnVmZmVy
KiBzY3JhdGNoQnVmZmVyID0gdm0uc2NyYXRjaEJ1ZmZlckZvclNpemUocmVxdWlyZWRTY3JhdGNo
TWVtb3J5U2l6ZUluQnl0ZXMoKSk7CiAgICAgY2hhciogYnVmZmVyID0gc3RhdGljX2Nhc3Q8Y2hh
cio+KHNjcmF0Y2hCdWZmZXItPmRhdGFCdWZmZXIoKSk7CiAgICAgCiAgICAgc2F2ZUFsbFJlZ2lz
dGVycyhqaXQsIGJ1ZmZlcik7CiAKLSAgICBqaXQubG9hZFB0cihHUFJJbmZvOjpjYWxsRnJhbWVS
ZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBqaXQubG9hZFB0cihmcmFtZVBv
aW50ZXJSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICBqaXQucGVlaygKICAg
ICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIxLAotICAgICAgICAoc3RhY2tNaXNhbGlnbm1lbnQg
LSBNYWNyb0Fzc2VtYmxlcjo6cHVzaFRvU2F2ZUJ5dGVPZmZzZXQoKSkgLyBzaXplb2Yodm9pZCop
KTsKKyAgICAgICAgKHN0YWNrTWlzYWxpZ25tZW50IC0gcHVzaFRvU2F2ZUJ5dGVPZmZzZXQpIC8g
c2l6ZW9mKHZvaWQqKSk7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKICAgICBN
YWNyb0Fzc2VtYmxlcjo6Q2FsbCBmdW5jdGlvbkNhbGwgPSBqaXQuY2FsbChPcGVyYXRpb25QdHJU
YWcpOwogCkBAIC05MiwxNCArOTUsMTMgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
SVRUaHVua1B0cgogICAgIGppdC5tb3ZlKEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBHUFJJbmZv
OjpyZWdUMCk7CiAKICAgICAvLyBQcmVwYXJlIGZvciB0YWlsIGNhbGwuCi0gICAgd2hpbGUgKG51
bWJlck9mUmVxdWlyZWRQb3BzLS0pCi0gICAgICAgIGppdC5wb3BUb1Jlc3RvcmUoR1BSSW5mbzo6
cmVnVDEpOwotICAgIGppdC5wb3BUb1Jlc3RvcmUoTWFjcm9Bc3NlbWJsZXI6OmZyYW1lUG9pbnRl
clJlZ2lzdGVyKTsKLQotICAgIC8vIFdoZW4gd2UgY2FtZSBpbiBoZXJlLCB0aGVyZSB3YXMgYW4g
YWRkaXRpb25hbCB0aGluZyBwdXNoZWQgdG8gdGhlIHN0YWNrLiBTb21lIGNsaWVudHMgd2FudCBp
dAotICAgIC8vIHBvcHBlZCBiZWZvcmUgcHJvY2VlZGluZy4KLSAgICB3aGlsZSAoZXh0cmFQb3Bz
VG9SZXN0b3JlLS0pCi0gICAgICAgIGppdC5wb3BUb1Jlc3RvcmUoR1BSSW5mbzo6cmVnVDEpOwor
CisgICAgaml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RhY2tQb2ludGVyUmVn
aXN0ZXIsIG51bWJlck9mUmVxdWlyZWRQb3BzICogcHVzaFRvU2F2ZUJ5dGVPZmZzZXQpLCBmcmFt
ZVBvaW50ZXJSZWdpc3Rlcik7CisKKyAgICAvLyBXaGVuIHdlIGNhbWUgaW4gaGVyZSwgdGhlcmUg
d2FzIGFuIGFkZGl0aW9uYWwgdGhpbmcgcHVzaGVkIHRvIHRoZSBzdGFjayAoZXh0cmFQb3BzVG9S
ZXN0b3JlKS4KKyAgICAvLyBTb21lIGNsaWVudHMgd2FudCBpdCBwb3BwZWQgYmVmb3JlIHByb2Nl
ZWRpbmcuIEFsc28gYWRkIDEgZm9yIHRoZSBwdXNoVG9TYXZlIG9mIHRoZSBmcmFtZVBvaW50ZXJS
ZWdpc3Rlci4KKyAgICBudW1iZXJPZlJlcXVpcmVkUG9wcyArPSAxICsgZXh0cmFQb3BzVG9SZXN0
b3JlOworICAgIGppdC5hZGRQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihudW1iZXJP
ZlJlcXVpcmVkUG9wcyAqIHB1c2hUb1NhdmVCeXRlT2Zmc2V0KSwgc3RhY2tQb2ludGVyUmVnaXN0
ZXIpOwogCiAgICAgLy8gUHV0IHRoZSByZXR1cm4gYWRkcmVzcyB3aGVyZXZlciB0aGUgcmV0dXJu
IGluc3RydWN0aW9uIHdhbnRzIGl0LiBPbiBhbGwgcGxhdGZvcm1zLCB0aGlzCiAgICAgLy8gZW5z
dXJlcyB0aGF0IHRoZSByZXR1cm4gYWRkcmVzcyBpcyBvdXQgb2YgdGhlIHdheSBvZiByZWdpc3Rl
ciByZXN0b3JhdGlvbi4KQEAgLTE3NywyMSArMTc5LDI1IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRUaHVua1B0clRhZz4gc2wKICNpZiBDUFUoWDg2XzY0KQogICAgIGN1cnJlbnRPZmZzZXQg
Kz0gc2l6ZW9mKHZvaWQqKTsKICNlbmRpZgotICAgIAorCisgICAgQXNzZW1ibHlIZWxwZXJzOjpT
dG9yZVJlZ1Nwb29sZXIgc3RvcmVTcG9vbGVyKGppdCwgTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9p
bnRlclJlZ2lzdGVyKTsKKwogICAgIGZvciAoTWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgcmVn
ID0gTWFjcm9Bc3NlbWJsZXI6OmZpcnN0UmVnaXN0ZXIoKTsgcmVnIDw9IE1hY3JvQXNzZW1ibGVy
OjpsYXN0UmVnaXN0ZXIoKTsgcmVnID0gc3RhdGljX2Nhc3Q8TWFjcm9Bc3NlbWJsZXI6OlJlZ2lz
dGVySUQ+KHJlZyArIDEpKSB7CiAgICAgICAgIGlmICgha2V5LnVzZWRSZWdpc3RlcnMoKS5nZXQo
cmVnKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBqaXQuc3RvcmVQdHIocmVnLCBB
c3NlbWJseUhlbHBlcnM6OkFkZHJlc3MoTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lz
dGVyLCBjdXJyZW50T2Zmc2V0KSk7CisgICAgICAgIHN0b3JlU3Bvb2xlci5zdG9yZUdQUih7IHJl
Zywgc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihjdXJyZW50T2Zmc2V0KSB9KTsKICAgICAgICAgY3Vy
cmVudE9mZnNldCArPSBzaXplb2Yodm9pZCopOwogICAgIH0KLSAgICAKKyAgICBzdG9yZVNwb29s
ZXIuZmx1c2hHUFIoKTsKKwogICAgIGZvciAoTWFjcm9Bc3NlbWJsZXI6OkZQUmVnaXN0ZXJJRCBy
ZWcgPSBNYWNyb0Fzc2VtYmxlcjo6Zmlyc3RGUFJlZ2lzdGVyKCk7IHJlZyA8PSBNYWNyb0Fzc2Vt
Ymxlcjo6bGFzdEZQUmVnaXN0ZXIoKTsgcmVnID0gc3RhdGljX2Nhc3Q8TWFjcm9Bc3NlbWJsZXI6
OkZQUmVnaXN0ZXJJRD4ocmVnICsgMSkpIHsKICAgICAgICAgaWYgKCFrZXkudXNlZFJlZ2lzdGVy
cygpLmdldChyZWcpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGppdC5zdG9yZURv
dWJsZShyZWcsIEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQ
b2ludGVyUmVnaXN0ZXIsIGN1cnJlbnRPZmZzZXQpKTsKKyAgICAgICAgc3RvcmVTcG9vbGVyLnN0
b3JlRlBSKHsgcmVnLCBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KGN1cnJlbnRPZmZzZXQpIH0pOwog
ICAgICAgICBjdXJyZW50T2Zmc2V0ICs9IHNpemVvZihkb3VibGUpOwogICAgIH0KLSAgICAKKyAg
ICBzdG9yZVNwb29sZXIuZmx1c2hGUFIoKTsKKwogICAgIGppdC5wcmVzZXJ2ZVJldHVybkFkZHJl
c3NBZnRlckNhbGwoR1BSSW5mbzo6bm9uQXJnR1BSMSk7CiAgICAgaml0LnN0b3JlUHRyKEdQUklu
Zm86Om5vbkFyZ0dQUjEsIEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6
c3RhY2tQb2ludGVyUmVnaXN0ZXIsIGtleS5vZmZzZXQoKSkpOwogICAgIGppdC5wcmVwYXJlQ2Fs
bE9wZXJhdGlvbih2bSk7CkBAIC0yMTAsMjQgKzIxNiwyOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IHNsCiAgICAgaml0LmxvYWRQdHIoQXNzZW1ibHlIZWxwZXJzOjpB
ZGRyZXNzKE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlciwga2V5Lm9mZnNldCgp
KSwgR1BSSW5mbzo6bm9uUHJlc2VydmVkTm9uUmV0dXJuR1BSKTsKICAgICBqaXQucmVzdG9yZVJl
dHVybkFkZHJlc3NCZWZvcmVSZXR1cm4oR1BSSW5mbzo6bm9uUHJlc2VydmVkTm9uUmV0dXJuR1BS
KTsKICAgICAKKyAgICBBc3NlbWJseUhlbHBlcnM6OkxvYWRSZWdTcG9vbGVyIGxvYWRTcG9vbGVy
KGppdCwgTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKwogICAgIGZvciAo
TWFjcm9Bc3NlbWJsZXI6OkZQUmVnaXN0ZXJJRCByZWcgPSBNYWNyb0Fzc2VtYmxlcjo6bGFzdEZQ
UmVnaXN0ZXIoKTsgOyByZWcgPSBzdGF0aWNfY2FzdDxNYWNyb0Fzc2VtYmxlcjo6RlBSZWdpc3Rl
cklEPihyZWcgLSAxKSkgewogICAgICAgICBpZiAoa2V5LnVzZWRSZWdpc3RlcnMoKS5nZXQocmVn
KSkgewogICAgICAgICAgICAgY3VycmVudE9mZnNldCAtPSBzaXplb2YoZG91YmxlKTsKLSAgICAg
ICAgICAgIGppdC5sb2FkRG91YmxlKEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhNYWNyb0Fzc2Vt
Ymxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIGN1cnJlbnRPZmZzZXQpLCByZWcpOworICAgICAg
ICAgICAgbG9hZFNwb29sZXIubG9hZEZQUih7IHJlZywgc3RhdGljX2Nhc3Q8cHRyZGlmZl90Pihj
dXJyZW50T2Zmc2V0KSB9KTsKICAgICAgICAgfQogICAgICAgICBpZiAocmVnID09IE1hY3JvQXNz
ZW1ibGVyOjpmaXJzdEZQUmVnaXN0ZXIoKSkKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KLSAg
ICAKKyAgICBsb2FkU3Bvb2xlci5mbHVzaEZQUigpOworCiAgICAgZm9yIChNYWNyb0Fzc2VtYmxl
cjo6UmVnaXN0ZXJJRCByZWcgPSBNYWNyb0Fzc2VtYmxlcjo6bGFzdFJlZ2lzdGVyKCk7IDsgcmVn
ID0gc3RhdGljX2Nhc3Q8TWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQ+KHJlZyAtIDEpKSB7CiAg
ICAgICAgIGlmIChrZXkudXNlZFJlZ2lzdGVycygpLmdldChyZWcpKSB7CiAgICAgICAgICAgICBj
dXJyZW50T2Zmc2V0IC09IHNpemVvZih2b2lkKik7Ci0gICAgICAgICAgICBqaXQubG9hZFB0cihB
c3NlbWJseUhlbHBlcnM6OkFkZHJlc3MoTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lz
dGVyLCBjdXJyZW50T2Zmc2V0KSwgcmVnKTsKKyAgICAgICAgICAgIGxvYWRTcG9vbGVyLmxvYWRH
UFIoeyByZWcsIHN0YXRpY19jYXN0PHB0cmRpZmZfdD4oY3VycmVudE9mZnNldCkgfSk7CiAgICAg
ICAgIH0KICAgICAgICAgaWYgKHJlZyA9PSBNYWNyb0Fzc2VtYmxlcjo6Zmlyc3RSZWdpc3Rlcigp
KQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIAorICAgIGxvYWRTcG9vbGVyLmZsdXNo
R1BSKCk7CisKICAgICBqaXQucmV0KCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGpp
dCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpGVExUaHVuayk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCShyZXZp
c2lvbiAyNzg4ODYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVy
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoSklUKQog
CiAjaW5jbHVkZSAiQWNjZXNzQ2FzZS5oIgorI2luY2x1ZGUgIkFzc2VtYmx5SGVscGVyc1Nwb29s
ZXJzLmgiCiAjaW5jbHVkZSAiSklUT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkpTQXJyYXlCdWZm
ZXJWaWV3LmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKQEAgLTYwNiw0MiArNjA3
LDkzIEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjpyZXN0b3JlQ2FsbGVlU2F2ZXMKIAogICAgIEdQ
UlJlZyBzY3JhdGNoID0gSW52YWxpZEdQUlJlZzsKICAgICB1bnNpZ25lZCBzY3JhdGNoR1BSRW50
cnlJbmRleCA9IDA7CisjaWYgQ1BVKEFSTTY0KQorICAgIC8vIFdlIGRvbid0IG5lZWQgYSBzZWNv
bmQgc2NyYXRjaCBHUFIsIGJ1dCB3ZSdsbCBhbHNvIGRlZmVyIHJlc3RvcmluZyB0aGlzCisgICAg
Ly8gR1BSIChpbiB0aGUgbmV4dCBzbG90IGFmdGVyIHRoZSBzY3JhdGNoKSBzbyB0aGF0IHdlIGNh
biByZXN0b3JlIHRoZW0gdG9nZXRoZXIKKyAgICAvLyBsYXRlciB1c2luZyBhIGxvYWRQYWlyNjQu
CisgICAgR1BSUmVnIHVudXNlZE5leHRTbG90R1BSID0gSW52YWxpZEdQUlJlZzsKKyNlbmRpZgog
Ci0gICAgLy8gVXNlIHRoZSBmaXJzdCBHUFIgZW50cnkncyByZWdpc3RlciBhcyBvdXIgc2NyYXRj
aC4KKyAgICAvLyBVc2UgdGhlIGZpcnN0IEdQUiBlbnRyeSdzIHJlZ2lzdGVyIGFzIG91ciBiYXNl
R1BSLgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZWdpc3RlckNvdW50OyBpKyspIHsK
ICAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCBlbnRyeSA9IGFsbENhbGxlZVNhdmVzLT5hdChpKTsK
LSAgICAgICAgaWYgKGRvbnRSZXN0b3JlUmVnaXN0ZXJzLmdldChlbnRyeS5yZWcoKSkpCisgICAg
ICAgIGlmIChkb250UmVzdG9yZVJlZ2lzdGVycy5jb250YWlucyhlbnRyeS5yZWcoKSkpCiAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKGVudHJ5LnJlZygpLmlzR1BSKCkpIHsKKyNp
ZiBDUFUoQVJNNjQpCisgICAgICAgICAgICBpZiAoaSArIDEgPCByZWdpc3RlckNvdW50KSB7Cisg
ICAgICAgICAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCBlbnRyeTIgPSBhbGxDYWxsZWVTYXZlcy0+
YXQoaSArIDEpOworICAgICAgICAgICAgICAgIGlmICghZG9udFJlc3RvcmVSZWdpc3RlcnMuY29u
dGFpbnMoZW50cnkyLnJlZygpKQorICAgICAgICAgICAgICAgICAgICAmJiBlbnRyeTIucmVnKCku
aXNHUFIoKQorICAgICAgICAgICAgICAgICAgICAmJiBlbnRyeTIub2Zmc2V0KCkgPT0gZW50cnku
b2Zmc2V0KCkgKyBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KHNpemVvZihDUFVSZWdpc3RlcikpKSB7
CisgICAgICAgICAgICAgICAgICAgIHNjcmF0Y2hHUFJFbnRyeUluZGV4ID0gaTsKKyAgICAgICAg
ICAgICAgICAgICAgc2NyYXRjaCA9IGVudHJ5LnJlZygpLmdwcigpOworICAgICAgICAgICAgICAg
ICAgICB1bnVzZWROZXh0U2xvdEdQUiA9IGVudHJ5Mi5yZWcoKS5ncHIoKTsKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorI2Vsc2UK
ICAgICAgICAgICAgIHNjcmF0Y2hHUFJFbnRyeUluZGV4ID0gaTsKICAgICAgICAgICAgIHNjcmF0
Y2ggPSBlbnRyeS5yZWcoKS5ncHIoKTsKICAgICAgICAgICAgIGJyZWFrOworI2VuZGlmCiAgICAg
ICAgIH0KICAgICB9CiAgICAgQVNTRVJUKHNjcmF0Y2ggIT0gSW52YWxpZEdQUlJlZyk7CisgICAg
CisgICAgUmVnaXN0ZXJTZXQgc2tpcExpc3Q7CisgICAgc2tpcExpc3Quc2V0KGRvbnRSZXN0b3Jl
UmVnaXN0ZXJzKTsKKworICAgIC8vIFNraXAgdGhlIHNjcmF0Y2ggcmVnaXN0ZXIocykuIFdlJ2xs
IHJlc3RvcmUgdGhlbSBsYXRlci4KKyAgICBza2lwTGlzdC5hZGQoc2NyYXRjaCk7CisjaWYgQ1BV
KEFSTTY0KQorICAgIFJFTEVBU0VfQVNTRVJUKHVudXNlZE5leHRTbG90R1BSICE9IEludmFsaWRH
UFJSZWcpOworICAgIHNraXBMaXN0LmFkZCh1bnVzZWROZXh0U2xvdEdQUik7CisjZW5kaWYKIAog
ICAgIGxvYWRQdHIoJnRvcEVudHJ5RnJhbWUsIHNjcmF0Y2gpOwogICAgIGFkZFB0cihUcnVzdGVk
SW1tMzIoRW50cnlGcmFtZTo6Y2FsbGVlU2F2ZVJlZ2lzdGVyc0J1ZmZlck9mZnNldCgpKSwgc2Ny
YXRjaCk7CiAKKyAgICBMb2FkUmVnU3Bvb2xlciBzcG9vbGVyKCp0aGlzLCBzY3JhdGNoKTsKKwog
ICAgIC8vIFJlc3RvcmUgYWxsIGNhbGxlZSBzYXZlcyBleGNlcHQgZm9yIHRoZSBzY3JhdGNoLgot
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZWdpc3RlckNvdW50OyBpKyspIHsKKyAgICB1
bnNpZ25lZCBpID0gMDsKKyAgICBmb3IgKDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkrKykgewogICAg
ICAgICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5ID0gYWxsQ2FsbGVlU2F2ZXMtPmF0KGkpOwotICAg
ICAgICBpZiAoZG9udFJlc3RvcmVSZWdpc3RlcnMuZ2V0KGVudHJ5LnJlZygpKSkKKyAgICAgICAg
aWYgKHNraXBMaXN0LmNvbnRhaW5zKGVudHJ5LnJlZygpKSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICBpZiAoaSA9PSBzY3JhdGNoR1BSRW50cnlJbmRleCkKKyAgICAgICAgaWYgKCFl
bnRyeS5yZWcoKS5pc0dQUigpKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIHNwb29sZXIu
bG9hZEdQUihlbnRyeSk7CisgICAgfQorICAgIHNwb29sZXIuZmx1c2hHUFIoKTsKKyAgICBmb3Ig
KDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkrKykgeworICAgICAgICBSZWdpc3RlckF0T2Zmc2V0IGVu
dHJ5ID0gYWxsQ2FsbGVlU2F2ZXMtPmF0KGkpOworICAgICAgICBpZiAoc2tpcExpc3QuY29udGFp
bnMoZW50cnkucmVnKCkpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGxvYWRSZWco
QWRkcmVzcyhzY3JhdGNoLCBlbnRyeS5vZmZzZXQoKSksIGVudHJ5LnJlZygpKTsKKyAgICAgICAg
QVNTRVJUKCFlbnRyeS5yZWcoKS5pc0dQUigpKTsKKyAgICAgICAgc3Bvb2xlci5sb2FkRlBSKGVu
dHJ5KTsKICAgICB9CisgICAgc3Bvb2xlci5mbHVzaEZQUigpOwogCiAgICAgLy8gUmVzdG9yZSB0
aGUgY2FsbGVlIHNhdmUgdmFsdWUgb2YgdGhlIHNjcmF0Y2guCiAgICAgUmVnaXN0ZXJBdE9mZnNl
dCBlbnRyeSA9IGFsbENhbGxlZVNhdmVzLT5hdChzY3JhdGNoR1BSRW50cnlJbmRleCk7CiAgICAg
QVNTRVJUKCFkb250UmVzdG9yZVJlZ2lzdGVycy5nZXQoZW50cnkucmVnKCkpKTsKICAgICBBU1NF
UlQoZW50cnkucmVnKCkuaXNHUFIoKSk7CiAgICAgQVNTRVJUKHNjcmF0Y2ggPT0gZW50cnkucmVn
KCkuZ3ByKCkpOwotICAgIGxvYWRSZWcoQWRkcmVzcyhzY3JhdGNoLCBlbnRyeS5vZmZzZXQoKSks
IHNjcmF0Y2gpOworI2lmIENQVShBUk02NCkKKyAgICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5MiA9
IGFsbENhbGxlZVNhdmVzLT5hdChzY3JhdGNoR1BSRW50cnlJbmRleCArIDEpOworICAgIEFTU0VS
VF9VTlVTRUQoZW50cnkyLCAhZG9udFJlc3RvcmVSZWdpc3RlcnMuZ2V0KGVudHJ5Mi5yZWcoKSkp
OworICAgIEFTU0VSVChlbnRyeTIucmVnKCkuaXNHUFIoKSk7CisgICAgQVNTRVJUKHVudXNlZE5l
eHRTbG90R1BSID09IGVudHJ5Mi5yZWcoKS5ncHIoKSk7CisgICAgbG9hZFBhaXI2NChzY3JhdGNo
LCBUcnVzdGVkSW1tMzIoZW50cnkub2Zmc2V0KCkpLCBzY3JhdGNoLCB1bnVzZWROZXh0U2xvdEdQ
Uik7CiAjZWxzZQotICAgIFVOVVNFRF9QQVJBTSh0b3BFbnRyeUZyYW1lKTsKKyAgICBsb2FkUHRy
KEFkZHJlc3Moc2NyYXRjaCwgZW50cnkub2Zmc2V0KCkpLCBzY3JhdGNoKTsKICNlbmRpZgorCisj
ZWxzZQorICAgIFVOVVNFRF9QQVJBTSh0b3BFbnRyeUZyYW1lKTsKKyNlbmRpZiAvLyBOVU1CRVJf
T0ZfQ0FMTEVFX1NBVkVTX1JFR0lTVEVSUyA+IDAKIH0KIAogdm9pZCBBc3NlbWJseUhlbHBlcnM6
OmVtaXRWaXJ0dWFsQ2FsbChWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxMaW5rSW5mbyogaW5mbykKQEAgLTk5OSwxMyArMTA1MSwyNyBAQCB2b2lkIEFzc2VtYmx5SGVs
cGVyczo6Y29weUNhbGxlZVNhdmVzVG9FCiAgICAgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGFsbENh
bGxlZVNhdmVzID0gUmVnaXN0ZXJTZXQ6OnZtQ2FsbGVlU2F2ZVJlZ2lzdGVyT2Zmc2V0cygpOwog
ICAgIFJlZ2lzdGVyU2V0IGRvbnRDb3B5UmVnaXN0ZXJzID0gUmVnaXN0ZXJTZXQ6OnN0YWNrUmVn
aXN0ZXJzKCk7CiAgICAgdW5zaWduZWQgcmVnaXN0ZXJDb3VudCA9IGFsbENhbGxlZVNhdmVzLT5z
aXplKCk7Ci0gICAgCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlZ2lzdGVyQ291bnQ7
IGkrKykgeworCisgICAgU3RvcmVSZWdTcG9vbGVyIHNwb29sZXIoKnRoaXMsIGNhbGxlZVNhdmVz
QnVmZmVyKTsKKworICAgIHVuc2lnbmVkIGkgPSAwOworICAgIGZvciAoOyBpIDwgcmVnaXN0ZXJD
b3VudDsgaSsrKSB7CiAgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQgZW50cnkgPSBhbGxDYWxsZWVT
YXZlcy0+YXQoaSk7Ci0gICAgICAgIGlmIChkb250Q29weVJlZ2lzdGVycy5nZXQoZW50cnkucmVn
KCkpKQorICAgICAgICBpZiAoZG9udENvcHlSZWdpc3RlcnMuY29udGFpbnMoZW50cnkucmVnKCkp
KQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICghZW50cnkucmVnKCkuaXNHUFIo
KSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBzcG9vbGVyLnN0b3JlR1BSKGVudHJ5KTsK
KyAgICB9CisgICAgc3Bvb2xlci5mbHVzaEdQUigpOworICAgIGZvciAoOyBpIDwgcmVnaXN0ZXJD
b3VudDsgaSsrKSB7CisgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQgZW50cnkgPSBhbGxDYWxsZWVT
YXZlcy0+YXQoaSk7CisgICAgICAgIGlmIChkb250Q29weVJlZ2lzdGVycy5jb250YWlucyhlbnRy
eS5yZWcoKSkpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgc3RvcmVSZWcoZW50cnku
cmVnKCksIEFkZHJlc3MoY2FsbGVlU2F2ZXNCdWZmZXIsIGVudHJ5Lm9mZnNldCgpKSk7CisgICAg
ICAgIHNwb29sZXIuc3RvcmVGUFIoZW50cnkpOwogICAgIH0KKyAgICBzcG9vbGVyLmZsdXNoRlBS
KCk7CisKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGNhbGxlZVNhdmVzQnVmZmVyKTsKICNlbmRp
ZgpAQCAtMTEwMyw2ICsxMTY5LDE4NCBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6Y2FnZUNvbmRp
dGlvbmFsbHlBCiAgICAgVU5VU0VEX1BBUkFNKHNjcmF0Y2gpOwogfQogCit2b2lkIEFzc2VtYmx5
SGVscGVyczo6ZW1pdFNhdmUoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QmIGxpc3QpCit7Cisg
ICAgU3RvcmVSZWdTcG9vbGVyIHNwb29sZXIoKnRoaXMsIGZyYW1lUG9pbnRlclJlZ2lzdGVyKTsK
KworICAgIHNpemVfdCBsaXN0U2l6ZSA9IGxpc3Quc2l6ZSgpOworICAgIHNpemVfdCBpID0gMDsK
KyAgICBmb3IgKDsgaSA8IGxpc3RTaXplOyBpKyspIHsKKyAgICAgICAgYXV0byBlbnRyeSA9IGxp
c3QuYXQoaSk7CisgICAgICAgIGlmICghZW50cnkucmVnKCkuaXNHUFIoKSkKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBzcG9vbGVyLnN0b3JlR1BSKGVudHJ5KTsKKyAgICB9CisgICAgc3Bv
b2xlci5mbHVzaEdQUigpOworCisgICAgZm9yICg7IGkgPCBsaXN0U2l6ZTsgaSsrKQorICAgICAg
ICBzcG9vbGVyLnN0b3JlRlBSKGxpc3QuYXQoaSkpOworICAgIHNwb29sZXIuZmx1c2hGUFIoKTsK
K30KKwordm9pZCBBc3NlbWJseUhlbHBlcnM6OmVtaXRSZXN0b3JlKGNvbnN0IFJlZ2lzdGVyQXRP
ZmZzZXRMaXN0JiBsaXN0KQoreworICAgIExvYWRSZWdTcG9vbGVyIHNwb29sZXIoKnRoaXMsIGZy
YW1lUG9pbnRlclJlZ2lzdGVyKTsKKworICAgIHNpemVfdCBsaXN0U2l6ZSA9IGxpc3Quc2l6ZSgp
OworICAgIHNpemVfdCBpID0gMDsKKyAgICBmb3IgKDsgaSA8IGxpc3RTaXplOyBpKyspIHsKKyAg
ICAgICAgYXV0byBlbnRyeSA9IGxpc3QuYXQoaSk7CisgICAgICAgIGlmICghZW50cnkucmVnKCku
aXNHUFIoKSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBzcG9vbGVyLmxvYWRHUFIoZW50
cnkpOworICAgIH0KKyAgICBzcG9vbGVyLmZsdXNoR1BSKCk7CisKKyAgICBmb3IgKDsgaSA8IGxp
c3RTaXplOyBpKyspCisgICAgICAgIHNwb29sZXIubG9hZEZQUihsaXN0LmF0KGkpKTsKKyAgICBz
cG9vbGVyLmZsdXNoRlBSKCk7Cit9CisKK3ZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0U2F2ZUNh
bGxlZVNhdmVzRm9yKGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBjYWxsZWVTYXZlcykKK3sK
KyAgICBSZWdpc3RlclNldCBkb250U2F2ZVJlZ2lzdGVycyA9IFJlZ2lzdGVyU2V0KFJlZ2lzdGVy
U2V0OjpzdGFja1JlZ2lzdGVycygpLCBSZWdpc3RlclNldDo6YWxsRlBScygpKTsKKyAgICB1bnNp
Z25lZCByZWdpc3RlckNvdW50ID0gY2FsbGVlU2F2ZXMtPnNpemUoKTsKKworICAgIFN0b3JlUmVn
U3Bvb2xlciBzcG9vbGVyKCp0aGlzLCBmcmFtZVBvaW50ZXJSZWdpc3Rlcik7CisKKyAgICB1bnNp
Z25lZCBpID0gMDsKKyAgICBmb3IgKDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkrKykgeworICAgICAg
ICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5ID0gY2FsbGVlU2F2ZXMtPmF0KGkpOworICAgICAgICBp
ZiAoZG9udFNhdmVSZWdpc3RlcnMuY29udGFpbnMoZW50cnkucmVnKCkpKQorICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIHNwb29sZXIuc3RvcmVHUFIoZW50cnkpOworICAgIH0KKyAgICBz
cG9vbGVyLmZsdXNoR1BSKCk7CisgICAgZm9yICg7IGkgPCByZWdpc3RlckNvdW50OyBpKyspIHsK
KyAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCBlbnRyeSA9IGNhbGxlZVNhdmVzLT5hdChpKTsKKyAg
ICAgICAgaWYgKGRvbnRTYXZlUmVnaXN0ZXJzLmNvbnRhaW5zKGVudHJ5LnJlZygpKSkKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICBzcG9vbGVyLnN0b3JlRlBSKGVudHJ5KTsKKyAgICB9
CisgICAgc3Bvb2xlci5mbHVzaEZQUigpOworfQorCit2b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1p
dFJlc3RvcmVDYWxsZWVTYXZlc0Zvcihjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCogY2FsbGVl
U2F2ZXMpCit7CisgICAgUmVnaXN0ZXJTZXQgZG9udFJlc3RvcmVSZWdpc3RlcnMgPSBSZWdpc3Rl
clNldChSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKSwgUmVnaXN0ZXJTZXQ6OmFsbEZQUnMo
KSk7CisgICAgdW5zaWduZWQgcmVnaXN0ZXJDb3VudCA9IGNhbGxlZVNhdmVzLT5zaXplKCk7Cisg
ICAgCisgICAgTG9hZFJlZ1Nwb29sZXIgc3Bvb2xlcigqdGhpcywgZnJhbWVQb2ludGVyUmVnaXN0
ZXIpOworCisgICAgdW5zaWduZWQgaSA9IDA7CisgICAgZm9yICg7IGkgPCByZWdpc3RlckNvdW50
OyBpKyspIHsKKyAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCBlbnRyeSA9IGNhbGxlZVNhdmVzLT5h
dChpKTsKKyAgICAgICAgaWYgKGRvbnRSZXN0b3JlUmVnaXN0ZXJzLmdldChlbnRyeS5yZWcoKSkp
CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgc3Bvb2xlci5sb2FkR1BSKGVudHJ5KTsK
KyAgICB9CisgICAgc3Bvb2xlci5mbHVzaEdQUigpOworICAgIGZvciAoOyBpIDwgcmVnaXN0ZXJD
b3VudDsgaSsrKSB7CisgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQgZW50cnkgPSBjYWxsZWVTYXZl
cy0+YXQoaSk7CisgICAgICAgIGlmIChkb250UmVzdG9yZVJlZ2lzdGVycy5nZXQoZW50cnkucmVn
KCkpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIHNwb29sZXIubG9hZEZQUihlbnRy
eSk7CisgICAgfQorICAgIHNwb29sZXIuZmx1c2hGUFIoKTsKK30KKwordm9pZCBBc3NlbWJseUhl
bHBlcnM6OmNvcHlMTEludEJhc2VsaW5lQ2FsbGVlU2F2ZXNGcm9tRnJhbWVPclJlZ2lzdGVyVG9F
bnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIoRW50cnlGcmFtZSomIHRvcEVudHJ5RnJhbWUsIGNv
bnN0IFRlbXBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycykKK3sKKyNpZiBOVU1CRVJfT0ZfQ0FM
TEVFX1NBVkVTX1JFR0lTVEVSUyA+IDAKKyAgICAvLyBDb3B5IHNhdmVkIGNhbGxlZVNhdmVzIG9u
IHN0YWNrIG9yIHVuc2F2ZWQgY2FsbGVlU2F2ZXMgaW4gcmVnaXN0ZXIgdG8gdm0gY2FsbGVlU2F2
ZSBidWZmZXIKKyAgICBHUFJSZWcgZGVzdEJ1ZmZlckdQUiA9IHVzZWRSZWdpc3RlcnMuZ2V0RnJl
ZUdQUigwKTsKKyAgICBHUFJSZWcgdGVtcDEgPSB1c2VkUmVnaXN0ZXJzLmdldEZyZWVHUFIoMSk7
CisgICAgRlBSUmVnIGZwVGVtcDEgPSB1c2VkUmVnaXN0ZXJzLmdldEZyZWVGUFIoMCk7CisgICAg
R1BSUmVnIHRlbXAyID0gaXNBUk02NCgpID8gdXNlZFJlZ2lzdGVycy5nZXRGcmVlR1BSKDIpIDog
SW52YWxpZEdQUlJlZzsKKyAgICBGUFJSZWcgZnBUZW1wMiA9IGlzQVJNNjQoKSA/IHVzZWRSZWdp
c3RlcnMuZ2V0RnJlZUZQUigxKSA6IEludmFsaWRGUFJSZWc7CisKKyAgICBsb2FkUHRyKCZ0b3BF
bnRyeUZyYW1lLCBkZXN0QnVmZmVyR1BSKTsKKyAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKEVudHJ5
RnJhbWU6OmNhbGxlZVNhdmVSZWdpc3RlcnNCdWZmZXJPZmZzZXQoKSksIGRlc3RCdWZmZXJHUFIp
OworCisgICAgQ29weVNwb29sZXIgc3Bvb2xlcigqdGhpcywgZnJhbWVQb2ludGVyUmVnaXN0ZXIs
IGRlc3RCdWZmZXJHUFIsIHRlbXAxLCB0ZW1wMiwgZnBUZW1wMSwgZnBUZW1wMik7CisKKyAgICBS
ZWdpc3RlckF0T2Zmc2V0TGlzdCogYWxsQ2FsbGVlU2F2ZXMgPSBSZWdpc3RlclNldDo6dm1DYWxs
ZWVTYXZlUmVnaXN0ZXJPZmZzZXRzKCk7CisgICAgY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3Qq
IGN1cnJlbnRDYWxsZWVTYXZlcyA9ICZSZWdpc3RlckF0T2Zmc2V0TGlzdDo6bGxpbnRCYXNlbGlu
ZUNhbGxlZVNhdmVSZWdpc3RlcnMoKTsKKyAgICBSZWdpc3RlclNldCBkb250Q29weVJlZ2lzdGVy
cyA9IFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpOworICAgIHVuc2lnbmVkIHJlZ2lzdGVy
Q291bnQgPSBhbGxDYWxsZWVTYXZlcy0+c2l6ZSgpOworCisgICAgdW5zaWduZWQgaSA9IDA7Cisg
ICAgZm9yICg7IGkgPCByZWdpc3RlckNvdW50OyBpKyspIHsKKyAgICAgICAgUmVnaXN0ZXJBdE9m
ZnNldCBlbnRyeSA9IGFsbENhbGxlZVNhdmVzLT5hdChpKTsKKyAgICAgICAgaWYgKGRvbnRDb3B5
UmVnaXN0ZXJzLmNvbnRhaW5zKGVudHJ5LnJlZygpKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICBSZWdpc3RlckF0T2Zmc2V0KiBjdXJyZW50RnJhbWVFbnRyeSA9IGN1cnJlbnRDYWxs
ZWVTYXZlcy0+ZmluZChlbnRyeS5yZWcoKSk7CisKKyAgICAgICAgaWYgKCFlbnRyeS5yZWcoKS5p
c0dQUigpKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmIChjdXJyZW50RnJhbWVFbnRy
eSkKKyAgICAgICAgICAgIHNwb29sZXIubG9hZEdQUihjdXJyZW50RnJhbWVFbnRyeS0+b2Zmc2V0
KCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzcG9vbGVyLmNvcHlHUFIoZW50cnkucmVn
KCkuZ3ByKCkpOworICAgICAgICBzcG9vbGVyLnN0b3JlR1BSKGVudHJ5Lm9mZnNldCgpKTsKKyAg
ICB9CisgICAgc3Bvb2xlci5mbHVzaEdQUigpOworCisgICAgZm9yICg7IGkgPCByZWdpc3RlckNv
dW50OyBpKyspIHsKKyAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCBlbnRyeSA9IGFsbENhbGxlZVNh
dmVzLT5hdChpKTsKKyAgICAgICAgaWYgKGRvbnRDb3B5UmVnaXN0ZXJzLmdldChlbnRyeS5yZWco
KSkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCogY3Vy
cmVudEZyYW1lRW50cnkgPSBjdXJyZW50Q2FsbGVlU2F2ZXMtPmZpbmQoZW50cnkucmVnKCkpOwor
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGVudHJ5LnJlZygpLmlzRlBSKCkpOworICAgICAgICBp
ZiAoY3VycmVudEZyYW1lRW50cnkpCisgICAgICAgICAgICBzcG9vbGVyLmxvYWRGUFIoY3VycmVu
dEZyYW1lRW50cnktPm9mZnNldCgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc3Bvb2xl
ci5jb3B5RlBSKGVudHJ5LnJlZygpLmZwcigpKTsKKyAgICAgICAgc3Bvb2xlci5zdG9yZUZQUihl
bnRyeS5vZmZzZXQoKSk7CisgICAgfQorICAgIHNwb29sZXIuZmx1c2hGUFIoKTsKKworI2Vsc2UK
KyAgICBVTlVTRURfUEFSQU0odG9wRW50cnlGcmFtZSk7CisgICAgVU5VU0VEX1BBUkFNKHVzZWRS
ZWdpc3RlcnMpOworI2VuZGlmCit9CisKK3ZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0U2F2ZU9y
Q29weUxMSW50QmFzZWxpbmVDYWxsZWVTYXZlc0ZvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmly
dHVhbFJlZ2lzdGVyIG9mZnNldFZpcnR1YWxSZWdpc3RlciwgUmVzdG9yZVRhZ1JlZ2lzdGVyTW9k
ZSB0YWdSZWdpc3Rlck1vZGUsIEdQUlJlZyB0ZW1wMSwgR1BSUmVnIHRlbXAyLCBHUFJSZWcgdGVt
cDMpCit7CisgICAgQVNTRVJUKGNvZGVCbG9jayk7CisKKyAgICBSRUxFQVNFX0FTU0VSVCghSklU
Q29kZTo6aXNPcHRpbWl6aW5nSklUKGNvZGVCbG9jay0+aml0VHlwZSgpKSk7CisgICAgUkVMRUFT
RV9BU1NFUlQoY29kZUJsb2NrLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCkgPT0gJlJlZ2lzdGVyQXRP
ZmZzZXRMaXN0OjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsKKyAgICBjb25z
dCBSZWdpc3RlckF0T2Zmc2V0TGlzdCogY2FsbGVlU2F2ZXMgPSAmUmVnaXN0ZXJBdE9mZnNldExp
c3Q6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCk7CisgICAgUmVnaXN0ZXJTZXQg
ZG9udFNhdmVSZWdpc3RlcnMgPSBSZWdpc3RlclNldChSZWdpc3RlclNldDo6c3RhY2tSZWdpc3Rl
cnMoKSwgUmVnaXN0ZXJTZXQ6OmFsbEZQUnMoKSk7CisgICAgdW5zaWduZWQgcmVnaXN0ZXJDb3Vu
dCA9IGNhbGxlZVNhdmVzLT5zaXplKCk7CisKKyAgICBHUFJSZWcgZHN0QnVmZmVyR1BSID0gdGVt
cDE7CisgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihvZmZzZXRWaXJ0dWFsUmVnaXN0ZXIub2Zmc2V0
SW5CeXRlcygpKSwgZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGRzdEJ1ZmZlckdQUik7CisKKyAgICBD
b3B5U3Bvb2xlciBzcG9vbGVyKCp0aGlzLCBmcmFtZVBvaW50ZXJSZWdpc3RlciwgZHN0QnVmZmVy
R1BSLCB0ZW1wMiwgdGVtcDMpOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlZ2lz
dGVyQ291bnQ7IGkrKykgeworICAgICAgICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5ID0gY2FsbGVl
U2F2ZXMtPmF0KGkpOworICAgICAgICBpZiAoZG9udFNhdmVSZWdpc3RlcnMuZ2V0KGVudHJ5LnJl
ZygpKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAKKyNpZiBVU0UoSlNWQUxVRTMy
XzY0KQorICAgICAgICBVTlVTRURfUEFSQU0odGFnUmVnaXN0ZXJNb2RlKTsKKyAgICAgICAgVU5V
U0VEX1BBUkFNKHRlbXApOworI2Vsc2UKKyAgICAgICAgaWYgKHRhZ1JlZ2lzdGVyTW9kZSA9PSBD
b3B5QmFzZWxpbmVDYWxsZWVTYXZlZFJlZ2lzdGVyc0Zyb21CYXNlRnJhbWUpCisgICAgICAgICAg
ICBzcG9vbGVyLmxvYWRHUFIoZW50cnkub2Zmc2V0KCkpOworICAgICAgICBlbHNlCisjZW5kaWYK
KyAgICAgICAgICAgIHNwb29sZXIuY29weUdQUihlbnRyeS5yZWcoKS5ncHIoKSk7CisgICAgICAg
IHNwb29sZXIuc3RvcmVHUFIoZW50cnkub2Zmc2V0KCkpOworICAgIH0KKyAgICBzcG9vbGVyLmZs
dXNoR1BSKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRU5BQkxFKEpJ
VCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAko
cmV2aXNpb24gMjc4ODg2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhl
bHBlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjk1LDMxICsyOTUsMTkgQEAgcHVibGljOgogICAg
ICAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMih2YWx1ZS5wYXlsb2FkKCkpLCBhZGRyZXNzLndpdGhP
ZmZzZXQoUGF5bG9hZE9mZnNldCkpOwogI2VuZGlmCiAgICAgfQotICAgIAorCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgT3A+IGNsYXNzIFNwb29sZXI7CisgICAgY2xhc3MgTG9hZFJlZ1Nwb29sZXI7
CisgICAgY2xhc3MgU3RvcmVSZWdTcG9vbGVyOworICAgIGNsYXNzIENvcHlTcG9vbGVyOworCiAg
ICAgQWRkcmVzcyBhZGRyZXNzRm9yKGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXQmIGVudHJ5KQogICAg
IHsKICAgICAgICAgcmV0dXJuIEFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGVu
dHJ5Lm9mZnNldCgpKTsKICAgICB9Ci0gICAgCi0gICAgdm9pZCBlbWl0U2F2ZShjb25zdCBSZWdp
c3RlckF0T2Zmc2V0TGlzdCYgbGlzdCkKLSAgICB7Ci0gICAgICAgIGZvciAoY29uc3QgUmVnaXN0
ZXJBdE9mZnNldCYgZW50cnkgOiBsaXN0KSB7Ci0gICAgICAgICAgICBpZiAoZW50cnkucmVnKCku
aXNHUFIoKSkKLSAgICAgICAgICAgICAgICBzdG9yZVB0cihlbnRyeS5yZWcoKS5ncHIoKSwgYWRk
cmVzc0ZvcihlbnRyeSkpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHN0b3Jl
RG91YmxlKGVudHJ5LnJlZygpLmZwcigpLCBhZGRyZXNzRm9yKGVudHJ5KSk7Ci0gICAgICAgIH0K
LSAgICB9Ci0gICAgCi0gICAgdm9pZCBlbWl0UmVzdG9yZShjb25zdCBSZWdpc3RlckF0T2Zmc2V0
TGlzdCYgbGlzdCkKLSAgICB7Ci0gICAgICAgIGZvciAoY29uc3QgUmVnaXN0ZXJBdE9mZnNldCYg
ZW50cnkgOiBsaXN0KSB7Ci0gICAgICAgICAgICBpZiAoZW50cnkucmVnKCkuaXNHUFIoKSkKLSAg
ICAgICAgICAgICAgICBsb2FkUHRyKGFkZHJlc3NGb3IoZW50cnkpLCBlbnRyeS5yZWcoKS5ncHIo
KSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbG9hZERvdWJsZShhZGRyZXNz
Rm9yKGVudHJ5KSwgZW50cnkucmVnKCkuZnByKCkpOwotICAgICAgICB9Ci0gICAgfQorCisgICAg
dm9pZCBlbWl0U2F2ZShjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCYpOworICAgIHZvaWQgZW1p
dFJlc3RvcmUoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QmKTsKIAogICAgIHZvaWQgZW1pdFNh
dmVDYWxsZWVTYXZlc0ZvcihDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAgICB7CkBAIC0zMjksNTQg
KzMxNywxMSBAQCBwdWJsaWM6CiAgICAgICAgIGVtaXRTYXZlQ2FsbGVlU2F2ZXNGb3IoY2FsbGVl
U2F2ZXMpOwogICAgIH0KIAotICAgIHZvaWQgZW1pdFNhdmVDYWxsZWVTYXZlc0Zvcihjb25zdCBS
ZWdpc3RlckF0T2Zmc2V0TGlzdCogY2FsbGVlU2F2ZXMpCi0gICAgewotICAgICAgICBSZWdpc3Rl
clNldCBkb250U2F2ZVJlZ2lzdGVycyA9IFJlZ2lzdGVyU2V0KFJlZ2lzdGVyU2V0OjpzdGFja1Jl
Z2lzdGVycygpLCBSZWdpc3RlclNldDo6YWxsRlBScygpKTsKLSAgICAgICAgdW5zaWduZWQgcmVn
aXN0ZXJDb3VudCA9IGNhbGxlZVNhdmVzLT5zaXplKCk7Ci0KLSAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkrKykgewotICAgICAgICAgICAgUmVnaXN0ZXJB
dE9mZnNldCBlbnRyeSA9IGNhbGxlZVNhdmVzLT5hdChpKTsKLSAgICAgICAgICAgIGlmIChkb250
U2F2ZVJlZ2lzdGVycy5nZXQoZW50cnkucmVnKCkpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICAgICAgc3RvcmVQdHIoZW50cnkucmVnKCkuZ3ByKCksIEFkZHJlc3MoZnJhbWVQ
b2ludGVyUmVnaXN0ZXIsIGVudHJ5Lm9mZnNldCgpKSk7Ci0gICAgICAgIH0KLSAgICB9CisgICAg
dm9pZCBlbWl0U2F2ZUNhbGxlZVNhdmVzRm9yKGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBj
YWxsZWVTYXZlcyk7CiAgICAgCiAgICAgZW51bSBSZXN0b3JlVGFnUmVnaXN0ZXJNb2RlIHsgVXNl
RXhpc3RpbmdUYWdSZWdpc3RlckNvbnRlbnRzLCBDb3B5QmFzZWxpbmVDYWxsZWVTYXZlZFJlZ2lz
dGVyc0Zyb21CYXNlRnJhbWUgfTsKIAotICAgIHZvaWQgZW1pdFNhdmVPckNvcHlDYWxsZWVTYXZl
c0ZvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmlydHVhbFJlZ2lzdGVyIG9mZnNldFZpcnR1YWxS
ZWdpc3RlciwgUmVzdG9yZVRhZ1JlZ2lzdGVyTW9kZSB0YWdSZWdpc3Rlck1vZGUsIEdQUlJlZyB0
ZW1wKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGNvZGVCbG9jayk7Ci0gICAgICAgIAotICAgICAg
ICBjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCogY2FsbGVlU2F2ZXMgPSBjb2RlQmxvY2stPmNh
bGxlZVNhdmVSZWdpc3RlcnMoKTsKLSAgICAgICAgUmVnaXN0ZXJTZXQgZG9udFNhdmVSZWdpc3Rl
cnMgPSBSZWdpc3RlclNldChSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKSwgUmVnaXN0ZXJT
ZXQ6OmFsbEZQUnMoKSk7Ci0gICAgICAgIHVuc2lnbmVkIHJlZ2lzdGVyQ291bnQgPSBjYWxsZWVT
YXZlcy0+c2l6ZSgpOwotCi0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgUmVnaXN0ZXJTZXQg
YmFzZWxpbmVDYWxsZWVTYXZlcyA9IFJlZ2lzdGVyU2V0OjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2
ZVJlZ2lzdGVycygpOwotI2VuZGlmCi0gICAgICAgIAotICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgcmVnaXN0ZXJDb3VudDsgaSsrKSB7Ci0gICAgICAgICAgICBSZWdpc3RlckF0T2Zm
c2V0IGVudHJ5ID0gY2FsbGVlU2F2ZXMtPmF0KGkpOwotICAgICAgICAgICAgaWYgKGRvbnRTYXZl
UmVnaXN0ZXJzLmdldChlbnRyeS5yZWcoKSkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgICAgICAKLSAgICAgICAgICAgIEdQUlJlZyByZWdpc3RlclRvV3JpdGU7Ci0gICAgICAg
ICAgICAKLSNpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgICAgICAgICAgVU5VU0VEX1BBUkFNKHRh
Z1JlZ2lzdGVyTW9kZSk7Ci0gICAgICAgICAgICBVTlVTRURfUEFSQU0odGVtcCk7Ci0jZWxzZQot
ICAgICAgICAgICAgaWYgKHRhZ1JlZ2lzdGVyTW9kZSA9PSBDb3B5QmFzZWxpbmVDYWxsZWVTYXZl
ZFJlZ2lzdGVyc0Zyb21CYXNlRnJhbWUgJiYgYmFzZWxpbmVDYWxsZWVTYXZlcy5nZXQoZW50cnku
cmVnKCkpKSB7Ci0gICAgICAgICAgICAgICAgcmVnaXN0ZXJUb1dyaXRlID0gdGVtcDsKLSAgICAg
ICAgICAgICAgICBsb2FkUHRyKEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpjYWxs
RnJhbWVSZWdpc3RlciwgZW50cnkub2Zmc2V0KCkpLCByZWdpc3RlclRvV3JpdGUpOwotICAgICAg
ICAgICAgfSBlbHNlCi0jZW5kaWYKLSAgICAgICAgICAgICAgICByZWdpc3RlclRvV3JpdGUgPSBl
bnRyeS5yZWcoKS5ncHIoKTsKLQotICAgICAgICAgICAgc3RvcmVQdHIocmVnaXN0ZXJUb1dyaXRl
LCBBZGRyZXNzKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBvZmZzZXRWaXJ0dWFsUmVnaXN0ZXIub2Zm
c2V0SW5CeXRlcygpICsgZW50cnkub2Zmc2V0KCkpKTsKLSAgICAgICAgfQotICAgIH0KKyAgICB2
b2lkIGVtaXRTYXZlT3JDb3B5TExJbnRCYXNlbGluZUNhbGxlZVNhdmVzRm9yKENvZGVCbG9jayos
IFZpcnR1YWxSZWdpc3RlciBvZmZzZXRWaXJ0dWFsUmVnaXN0ZXIsIFJlc3RvcmVUYWdSZWdpc3Rl
ck1vZGUsIEdQUlJlZyB0ZW1wMSwgR1BSUmVnIHRlbXAyLCBHUFJSZWcgdGVtcDMpOwogICAgIAog
ICAgIHZvaWQgZW1pdFJlc3RvcmVDYWxsZWVTYXZlc0ZvcihDb2RlQmxvY2sqIGNvZGVCbG9jaykK
ICAgICB7CkBAIC0zODYsMTggKzMzMSw3IEBAIHB1YmxpYzoKICAgICAgICAgZW1pdFJlc3RvcmVD
YWxsZWVTYXZlc0ZvcihjYWxsZWVTYXZlcyk7CiAgICAgfQogCi0gICAgdm9pZCBlbWl0UmVzdG9y
ZUNhbGxlZVNhdmVzRm9yKGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBjYWxsZWVTYXZlcykK
LSAgICB7Ci0gICAgICAgIFJlZ2lzdGVyU2V0IGRvbnRSZXN0b3JlUmVnaXN0ZXJzID0gUmVnaXN0
ZXJTZXQoUmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCksIFJlZ2lzdGVyU2V0OjphbGxGUFJz
KCkpOwotICAgICAgICB1bnNpZ25lZCByZWdpc3RlckNvdW50ID0gY2FsbGVlU2F2ZXMtPnNpemUo
KTsKLSAgICAgICAgCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZWdpc3RlckNv
dW50OyBpKyspIHsKLSAgICAgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQgZW50cnkgPSBjYWxsZWVT
YXZlcy0+YXQoaSk7Ci0gICAgICAgICAgICBpZiAoZG9udFJlc3RvcmVSZWdpc3RlcnMuZ2V0KGVu
dHJ5LnJlZygpKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGxvYWRQ
dHIoQWRkcmVzcyhmcmFtZVBvaW50ZXJSZWdpc3RlciwgZW50cnkub2Zmc2V0KCkpLCBlbnRyeS5y
ZWcoKS5ncHIoKSk7Ci0gICAgICAgIH0KLSAgICB9CisgICAgdm9pZCBlbWl0UmVzdG9yZUNhbGxl
ZVNhdmVzRm9yKGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBjYWxsZWVTYXZlcyk7CiAKICAg
ICB2b2lkIGVtaXRTYXZlQ2FsbGVlU2F2ZXMoKQogICAgIHsKQEAgLTQ3OCw1OCArNDEyLDcgQEAg
cHVibGljOgogCiAgICAgdm9pZCByZXN0b3JlQ2FsbGVlU2F2ZXNGcm9tRW50cnlGcmFtZUNhbGxl
ZVNhdmVzQnVmZmVyKEVudHJ5RnJhbWUqJik7CiAKLSAgICB2b2lkIGNvcHlMTEludEJhc2VsaW5l
Q2FsbGVlU2F2ZXNGcm9tRnJhbWVPclJlZ2lzdGVyVG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZm
ZXIoRW50cnlGcmFtZSomIHRvcEVudHJ5RnJhbWUsIGNvbnN0IFRlbXBSZWdpc3RlclNldCYgdXNl
ZFJlZ2lzdGVycyA9IHsgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpIH0p
Ci0gICAgewotI2lmIE5VTUJFUl9PRl9DQUxMRUVfU0FWRVNfUkVHSVNURVJTID4gMAotICAgICAg
ICBHUFJSZWcgdGVtcDEgPSB1c2VkUmVnaXN0ZXJzLmdldEZyZWVHUFIoMCk7Ci0gICAgICAgIEdQ
UlJlZyB0ZW1wMiA9IHVzZWRSZWdpc3RlcnMuZ2V0RnJlZUdQUigxKTsKLSAgICAgICAgRlBSUmVn
IGZwVGVtcCA9IHVzZWRSZWdpc3RlcnMuZ2V0RnJlZUZQUigpOwotICAgICAgICBBU1NFUlQodGVt
cDIgIT0gSW52YWxpZEdQUlJlZyk7Ci0KLSAgICAgICAgLy8gQ29weSBzYXZlZCBjYWxsZWVTYXZl
cyBvbiBzdGFjayBvciB1bnNhdmVkIGNhbGxlZVNhdmVzIGluIHJlZ2lzdGVyIHRvIHZtIGNhbGxl
ZVNhdmUgYnVmZmVyCi0gICAgICAgIGxvYWRQdHIoJnRvcEVudHJ5RnJhbWUsIHRlbXAxKTsKLSAg
ICAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihFbnRyeUZyYW1lOjpjYWxsZWVTYXZlUmVnaXN0ZXJz
QnVmZmVyT2Zmc2V0KCkpLCB0ZW1wMSk7Ci0KLSAgICAgICAgUmVnaXN0ZXJBdE9mZnNldExpc3Qq
IGFsbENhbGxlZVNhdmVzID0gUmVnaXN0ZXJTZXQ6OnZtQ2FsbGVlU2F2ZVJlZ2lzdGVyT2Zmc2V0
cygpOwotICAgICAgICBjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCogY3VycmVudENhbGxlZVNh
dmVzID0gJlJlZ2lzdGVyQXRPZmZzZXRMaXN0OjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVJlZ2lz
dGVycygpOwotICAgICAgICBSZWdpc3RlclNldCBkb250Q29weVJlZ2lzdGVycyA9IFJlZ2lzdGVy
U2V0OjpzdGFja1JlZ2lzdGVycygpOwotICAgICAgICB1bnNpZ25lZCByZWdpc3RlckNvdW50ID0g
YWxsQ2FsbGVlU2F2ZXMtPnNpemUoKTsKLQotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgcmVnaXN0ZXJDb3VudDsgaSsrKSB7Ci0gICAgICAgICAgICBSZWdpc3RlckF0T2Zmc2V0IGVu
dHJ5ID0gYWxsQ2FsbGVlU2F2ZXMtPmF0KGkpOwotICAgICAgICAgICAgaWYgKGRvbnRDb3B5UmVn
aXN0ZXJzLmdldChlbnRyeS5yZWcoKSkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgICAgICBSZWdpc3RlckF0T2Zmc2V0KiBjdXJyZW50RnJhbWVFbnRyeSA9IGN1cnJlbnRDYWxs
ZWVTYXZlcy0+ZmluZChlbnRyeS5yZWcoKSk7Ci0KLSAgICAgICAgICAgIGlmIChlbnRyeS5yZWco
KS5pc0dQUigpKSB7Ci0gICAgICAgICAgICAgICAgR1BSUmVnIHJlZ1RvU3RvcmU7Ci0gICAgICAg
ICAgICAgICAgaWYgKGN1cnJlbnRGcmFtZUVudHJ5KSB7Ci0gICAgICAgICAgICAgICAgICAgIC8v
IExvYWQgY2FsbGVlU2F2ZSBmcm9tIHN0YWNrIGludG8gdGVtcCByZWdpc3RlcgotICAgICAgICAg
ICAgICAgICAgICByZWdUb1N0b3JlID0gdGVtcDI7Ci0gICAgICAgICAgICAgICAgICAgIGxvYWRQ
dHIoQWRkcmVzcyhmcmFtZVBvaW50ZXJSZWdpc3RlciwgY3VycmVudEZyYW1lRW50cnktPm9mZnNl
dCgpKSwgcmVnVG9TdG9yZSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAg
ICAgICAgIC8vIEp1c3Qgc3RvcmUgY2FsbGVlIHNhdmUgZGlyZWN0bHkKLSAgICAgICAgICAgICAg
ICAgICAgcmVnVG9TdG9yZSA9IGVudHJ5LnJlZygpLmdwcigpOwotCi0gICAgICAgICAgICAgICAg
c3RvcmVQdHIocmVnVG9TdG9yZSwgQWRkcmVzcyh0ZW1wMSwgZW50cnkub2Zmc2V0KCkpKTsKLSAg
ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgRlBSUmVnIGZwUmVnVG9TdG9yZTsK
LSAgICAgICAgICAgICAgICBpZiAoY3VycmVudEZyYW1lRW50cnkpIHsKLSAgICAgICAgICAgICAg
ICAgICAgLy8gTG9hZCBjYWxsZWVTYXZlIGZyb20gc3RhY2sgaW50byB0ZW1wIHJlZ2lzdGVyCi0g
ICAgICAgICAgICAgICAgICAgIGZwUmVnVG9TdG9yZSA9IGZwVGVtcDsKLSAgICAgICAgICAgICAg
ICAgICAgbG9hZERvdWJsZShBZGRyZXNzKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBjdXJyZW50RnJh
bWVFbnRyeS0+b2Zmc2V0KCkpLCBmcFJlZ1RvU3RvcmUpOwotICAgICAgICAgICAgICAgIH0gZWxz
ZQotICAgICAgICAgICAgICAgICAgICAvLyBKdXN0IHN0b3JlIGNhbGxlZSBzYXZlIGRpcmVjdGx5
Ci0gICAgICAgICAgICAgICAgICAgIGZwUmVnVG9TdG9yZSA9IGVudHJ5LnJlZygpLmZwcigpOwot
Ci0gICAgICAgICAgICAgICAgc3RvcmVEb3VibGUoZnBSZWdUb1N0b3JlLCBBZGRyZXNzKHRlbXAx
LCBlbnRyeS5vZmZzZXQoKSkpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0jZWxzZQotICAg
ICAgICBVTlVTRURfUEFSQU0odG9wRW50cnlGcmFtZSk7Ci0gICAgICAgIFVOVVNFRF9QQVJBTSh1
c2VkUmVnaXN0ZXJzKTsKLSNlbmRpZgotICAgIH0KKyAgICB2b2lkIGNvcHlMTEludEJhc2VsaW5l
Q2FsbGVlU2F2ZXNGcm9tRnJhbWVPclJlZ2lzdGVyVG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZm
ZXIoRW50cnlGcmFtZSomLCBjb25zdCBUZW1wUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMgPSB7
IFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSB9KTsKIAogICAgIHZvaWQg
ZW1pdE1hdGVyaWFsaXplVGFnQ2hlY2tSZWdpc3RlcnMoKQogICAgIHsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzU3Bvb2xlcnMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVyc1Nwb29sZXJzLmgJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnNT
cG9vbGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTg1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoSklUKQorCisjaW5jbHVkZSAiQXNzZW1ibHlIZWxwZXJzLmgiCisKK25hbWVzcGFjZSBKU0Mg
eworCit0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KK2NsYXNzIEFzc2VtYmx5SGVscGVyczo6U3Bvb2xl
ciB7CitwdWJsaWM6CisgICAgdXNpbmcgSklUID0gQXNzZW1ibHlIZWxwZXJzOworCisgICAgU3Bv
b2xlcihKSVQmIGppdCwgR1BSUmVnIGJhc2VHUFIpCisgICAgICAgIDogbV9qaXQoaml0KQorICAg
ICAgICAsIG1fYmFzZUdQUihiYXNlR1BSKQorICAgIHsgfQorCisgICAgdm9pZCBoYW5kbGVHUFIo
Y29uc3QgUmVnaXN0ZXJBdE9mZnNldCYgZW50cnkpCisgICAgeworICAgICAgICBBU1NFUlQoZW50
cnkucmVnKCkuaXNHUFIoKSk7CisgICAgICAgIGlmIGNvbnN0ZXhwciAoIWhhc1BhaXJPcCkKKyAg
ICAgICAgICAgIHJldHVybiBvcCgpLmhhbmRsZVNpbmdsZShlbnRyeS5vZmZzZXQoKSwgZW50cnku
cmVnKCkuZ3ByKCkpOworCisgICAgICAgIGlmICghbV9idWZmZXJlZEVudHJ5LnJlZygpLmlzU2V0
KCkpIHsKKyAgICAgICAgICAgIG1fYnVmZmVyZWRFbnRyeSA9IGVudHJ5OworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChlbnRyeS5vZmZzZXQoKSA9PSBtX2J1ZmZl
cmVkRW50cnkub2Zmc2V0KCkgKyBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KGdwclNpemUpKSB7Cisg
ICAgICAgICAgICBvcCgpLmhhbmRsZVBhaXIobV9idWZmZXJlZEVudHJ5Lm9mZnNldCgpLCBtX2J1
ZmZlcmVkRW50cnkucmVnKCkuZ3ByKCksIGVudHJ5LnJlZygpLmdwcigpKTsKKyAgICAgICAgICAg
IG1fYnVmZmVyZWRFbnRyeSA9IHsgfTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgICAgICBpZiAobV9idWZmZXJlZEVudHJ5Lm9mZnNldCgpID09IGVudHJ5Lm9mZnNldCgpICsg
c3RhdGljX2Nhc3Q8cHRyZGlmZl90PihncHJTaXplKSkgeworICAgICAgICAgICAgb3AoKS5oYW5k
bGVQYWlyKGVudHJ5Lm9mZnNldCgpLCBlbnRyeS5yZWcoKS5ncHIoKSwgbV9idWZmZXJlZEVudHJ5
LnJlZygpLmdwcigpKTsKKyAgICAgICAgICAgIG1fYnVmZmVyZWRFbnRyeSA9IHsgfTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGZsdXNoR1BSKCk7CisgICAgICAg
IGhhbmRsZUdQUihlbnRyeSk7CisgICAgfQorCisgICAgdm9pZCBmbHVzaEdQUigpCisgICAgewor
ICAgICAgICBpZiBjb25zdGV4cHIgKGhhc1BhaXJPcCkgeworICAgICAgICAgICAgaWYgKG1fYnVm
ZmVyZWRFbnRyeS5yZWcoKS5pc1NldCgpKSB7CisgICAgICAgICAgICAgICAgb3AoKS5oYW5kbGVT
aW5nbGUobV9idWZmZXJlZEVudHJ5Lm9mZnNldCgpLCBtX2J1ZmZlcmVkRW50cnkucmVnKCkuZ3By
KCkpOworICAgICAgICAgICAgICAgIG1fYnVmZmVyZWRFbnRyeSA9IHsgfTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgaGFuZGxlRlBSKGNvbnN0IFJlZ2lzdGVy
QXRPZmZzZXQmIGVudHJ5KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGVudHJ5LnJlZygpLmlzRlBS
KCkpOworICAgICAgICBpZiBjb25zdGV4cHIgKCFoYXNQYWlyT3ApCisgICAgICAgICAgICByZXR1
cm4gb3AoKS5oYW5kbGVTaW5nbGUoZW50cnkub2Zmc2V0KCksIGVudHJ5LnJlZygpLmZwcigpKTsK
KworICAgICAgICBpZiAoIW1fYnVmZmVyZWRFbnRyeS5yZWcoKS5pc1NldCgpKSB7CisgICAgICAg
ICAgICBtX2J1ZmZlcmVkRW50cnkgPSBlbnRyeTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgICAgICBpZiAoZW50cnkub2Zmc2V0KCkgPT0gbV9idWZmZXJlZEVudHJ5Lm9mZnNl
dCgpICsgc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihmcHJTaXplKSkgeworICAgICAgICAgICAgb3Ao
KS5oYW5kbGVQYWlyKG1fYnVmZmVyZWRFbnRyeS5vZmZzZXQoKSwgbV9idWZmZXJlZEVudHJ5LnJl
ZygpLmZwcigpLCBlbnRyeS5yZWcoKS5mcHIoKSk7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRW50
cnkgPSB7IH07CisgICAgICAgIH0gZWxzZSBpZiAobV9idWZmZXJlZEVudHJ5Lm9mZnNldCgpID09
IGVudHJ5Lm9mZnNldCgpICsgc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihmcHJTaXplKSkgeworICAg
ICAgICAgICAgb3AoKS5oYW5kbGVQYWlyKGVudHJ5Lm9mZnNldCgpLCBlbnRyeS5yZWcoKS5mcHIo
KSwgbV9idWZmZXJlZEVudHJ5LnJlZygpLmZwcigpKTsKKyAgICAgICAgICAgIG1fYnVmZmVyZWRF
bnRyeSA9IHsgfTsKKyAgICAgICAgfQorCisgICAgICAgIGZsdXNoRlBSKCk7CisgICAgICAgIGhh
bmRsZUZQUihlbnRyeSk7CisgICAgfQorCisgICAgdm9pZCBmbHVzaEZQUigpCisgICAgeworICAg
ICAgICBpZiBjb25zdGV4cHIgKGhhc1BhaXJPcCkgeworICAgICAgICAgICAgaWYgKG1fYnVmZmVy
ZWRFbnRyeS5yZWcoKS5pc1NldCgpKSB7CisgICAgICAgICAgICAgICAgb3AoKS5oYW5kbGVTaW5n
bGUobV9idWZmZXJlZEVudHJ5Lm9mZnNldCgpLCBtX2J1ZmZlcmVkRW50cnkucmVnKCkuZnByKCkp
OworICAgICAgICAgICAgICAgIG1fYnVmZmVyZWRFbnRyeSA9IHsgfTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH0KKworcHJpdmF0ZToKKyAgICBzdGF0aWMgY29uc3RleHByIHNpemVf
dCBncHJTaXplID0gc2l6ZW9mKENQVVJlZ2lzdGVyKTsKKyAgICBzdGF0aWMgY29uc3RleHByIHNp
emVfdCBmcHJTaXplID0gc2l6ZW9mKGRvdWJsZSk7CisjaWYgQ1BVKEFSTTY0KQorICAgIHN0YXRp
YyBjb25zdGV4cHIgYm9vbCBoYXNQYWlyT3AgPSB0cnVlOworI2Vsc2UKKyAgICBzdGF0aWMgY29u
c3RleHByIGJvb2wgaGFzUGFpck9wID0gZmFsc2U7CisjZW5kaWYKKworICAgIE9wJiBvcCgpIHsg
cmV0dXJuICpyZWludGVycHJldF9jYXN0PE9wKj4odGhpcyk7IH0KKworcHJvdGVjdGVkOgorICAg
IEpJVCYgbV9qaXQ7CisgICAgR1BSUmVnIG1fYmFzZUdQUjsKKyAgICBSZWdpc3RlckF0T2Zmc2V0
IG1fYnVmZmVyZWRFbnRyeTsKK307CisKK2NsYXNzIEFzc2VtYmx5SGVscGVyczo6TG9hZFJlZ1Nw
b29sZXIgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzOjpTcG9vbGVyPExvYWRSZWdTcG9vbGVyPiB7
CisgICAgdXNpbmcgQmFzZSA9IFNwb29sZXI8TG9hZFJlZ1Nwb29sZXI+OworICAgIHVzaW5nIEpJ
VCA9IEJhc2U6OkpJVDsKK3B1YmxpYzoKKyAgICBMb2FkUmVnU3Bvb2xlcihKSVQmIGppdCwgR1BS
UmVnIGJhc2VHUFIpCisgICAgICAgIDogQmFzZShqaXQsIGJhc2VHUFIpCisgICAgeyB9CisKKyAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgbG9hZEdQUihjb25zdCBSZWdpc3RlckF0T2Zmc2V0JiBlbnRy
eSkgeyBCYXNlOjpoYW5kbGVHUFIoZW50cnkpOyB9CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGZs
dXNoR1BSKCkgeyBCYXNlOjpmbHVzaEdQUigpOyB9CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGxv
YWRGUFIoY29uc3QgUmVnaXN0ZXJBdE9mZnNldCYgZW50cnkpIHsgQmFzZTo6aGFuZGxlRlBSKGVu
dHJ5KTsgfQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBmbHVzaEZQUigpIHsgQmFzZTo6Zmx1c2hG
UFIoKTsgfQorCisjaWYgQ1BVKEFSTTY0KQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJlZ1R5cGU+
CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGhhbmRsZVBhaXIocHRyZGlmZl90IG9mZnNldCwgUmVn
VHlwZSByZWcxLCBSZWdUeXBlIHJlZzIpCisgICAgeworICAgICAgICBtX2ppdC5sb2FkUGFpcjY0
KG1fYmFzZUdQUiwgVHJ1c3RlZEltbTMyKG9mZnNldCksIHJlZzEsIHJlZzIpOworICAgIH0KKyNl
bHNlCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgUmVnVHlwZT4KKyAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgaGFuZGxlUGFpcihwdHJkaWZmX3QsIFJlZ1R5cGUsIFJlZ1R5cGUpIHsgfQorI2VuZGlmCisK
KyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgaGFuZGxlU2luZ2xlKHB0cmRpZmZfdCBvZmZzZXQsIEdQ
UlJlZyByZWcpCisgICAgeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIG1faml0LmxvYWQ2
NChBZGRyZXNzKG1fYmFzZUdQUiwgb2Zmc2V0KSwgcmVnKTsKKyNlbHNlCisgICAgICAgIG1faml0
LmxvYWQzMihBZGRyZXNzKG1fYmFzZUdQUiwgb2Zmc2V0KSwgcmVnKTsKKyNlbmRpZgorICAgIH0K
KworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBoYW5kbGVTaW5nbGUocHRyZGlmZl90IG9mZnNldCwg
RlBSUmVnIHJlZykKKyAgICB7CisgICAgICAgIG1faml0LmxvYWREb3VibGUoQWRkcmVzcyhtX2Jh
c2VHUFIsIG9mZnNldCksIHJlZyk7CisgICAgfQorfTsKKworY2xhc3MgQXNzZW1ibHlIZWxwZXJz
OjpTdG9yZVJlZ1Nwb29sZXIgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzOjpTcG9vbGVyPFN0b3Jl
UmVnU3Bvb2xlcj4geworICAgIHVzaW5nIEJhc2UgPSBTcG9vbGVyPFN0b3JlUmVnU3Bvb2xlcj47
CisgICAgdXNpbmcgSklUID0gdHlwZW5hbWUgQmFzZTo6SklUOworcHVibGljOgorICAgIFN0b3Jl
UmVnU3Bvb2xlcihKSVQmIGppdCwgR1BSUmVnIGJhc2VHUFIpCisgICAgICAgIDogQmFzZShqaXQs
IGJhc2VHUFIpCisgICAgeyB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc3RvcmVHUFIoY29u
c3QgUmVnaXN0ZXJBdE9mZnNldCYgZW50cnkpIHsgQmFzZTo6aGFuZGxlR1BSKGVudHJ5KTsgfQor
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBmbHVzaEdQUigpIHsgQmFzZTo6Zmx1c2hHUFIoKTsgfQor
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzdG9yZUZQUihjb25zdCBSZWdpc3RlckF0T2Zmc2V0JiBl
bnRyeSkgeyBCYXNlOjpoYW5kbGVGUFIoZW50cnkpOyB9CisgICAgQUxXQVlTX0lOTElORSB2b2lk
IGZsdXNoRlBSKCkgeyBCYXNlOjpmbHVzaEZQUigpOyB9CisKKyNpZiBDUFUoQVJNNjQpCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgUmVnVHlwZT4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgaGFuZGxl
UGFpcihwdHJkaWZmX3Qgb2Zmc2V0LCBSZWdUeXBlIHJlZzEsIFJlZ1R5cGUgcmVnMikKKyAgICB7
CisgICAgICAgIG1faml0LnN0b3JlUGFpcjY0KHJlZzEsIHJlZzIsIG1fYmFzZUdQUiwgVHJ1c3Rl
ZEltbTMyKG9mZnNldCkpOworICAgIH0KKyNlbHNlCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgUmVn
VHlwZT4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgaGFuZGxlUGFpcihwdHJkaWZmX3QsIFJlZ1R5
cGUsIFJlZ1R5cGUpIHsgfQorI2VuZGlmCisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgaGFuZGxl
U2luZ2xlKHB0cmRpZmZfdCBvZmZzZXQsIEdQUlJlZyByZWcpCisgICAgeworI2lmIFVTRShKU1ZB
TFVFNjQpCisgICAgICAgIG1faml0LnN0b3JlNjQocmVnLCBBZGRyZXNzKG1fYmFzZUdQUiwgb2Zm
c2V0KSk7CisjZWxzZQorICAgICAgICBtX2ppdC5zdG9yZTMyKHJlZywgQWRkcmVzcyhtX2Jhc2VH
UFIsIG9mZnNldCkpOworI2VuZGlmCisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIGhh
bmRsZVNpbmdsZShwdHJkaWZmX3Qgb2Zmc2V0LCBGUFJSZWcgcmVnKQorICAgIHsKKyAgICAgICAg
bV9qaXQuc3RvcmVEb3VibGUocmVnLCBBZGRyZXNzKG1fYmFzZUdQUiwgb2Zmc2V0KSk7CisgICAg
fQorfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgUmVnVHlwZT4KK3N0cnVjdCBSZWdEaXNwYXRjaCB7
CisgICAgc3RhdGljIFJlZ1R5cGUgZ2V0KFJlZyk7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgU3Bv
b2xlcj4gc3RhdGljIFJlZ1R5cGUgdGVtcDEoY29uc3QgU3Bvb2xlciopOworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFNwb29sZXI+IHN0YXRpYyBSZWdUeXBlIHRlbXAyKGNvbnN0IFNwb29sZXIqKTsK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTcG9vbGVyPiBzdGF0aWMgUmVnVHlwZSYgcmVnVG9TdG9y
ZShTcG9vbGVyKik7CisgICAgc3RhdGljIGNvbnN0ZXhwciBSZWdUeXBlIGludmFsaWQoKTsKKyAg
ICBzdGF0aWMgY29uc3RleHByIHNpemVfdCByZWdTaXplKCk7CisgICAgc3RhdGljIGJvb2wgaXNW
YWxpZExvYWRQYWlySW1tKGludCk7CisgICAgc3RhdGljIGJvb2wgaXNWYWxpZFN0b3JlUGFpcklt
bShpbnQpOworfTsKKwordGVtcGxhdGU8Pgorc3RydWN0IFJlZ0Rpc3BhdGNoPEdQUlJlZz4gewor
ICAgIHN0YXRpYyBHUFJSZWcgZ2V0KFJlZyByZWcpIHsgcmV0dXJuIHJlZy5ncHIoKTsgfQorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFNwb29sZXI+IHN0YXRpYyBHUFJSZWcgdGVtcDEoY29uc3QgU3Bv
b2xlciogc3Bvb2xlcikgeyByZXR1cm4gc3Bvb2xlci0+bV90ZW1wMUdQUjsgfQorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFNwb29sZXI+IHN0YXRpYyBHUFJSZWcgdGVtcDIoY29uc3QgU3Bvb2xlciog
c3Bvb2xlcikgeyByZXR1cm4gc3Bvb2xlci0+bV90ZW1wMkdQUjsgfQorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFNwb29sZXI+IHN0YXRpYyBHUFJSZWcmIHJlZ1RvU3RvcmUoU3Bvb2xlciogc3Bvb2xl
cikgeyByZXR1cm4gc3Bvb2xlci0+bV9ncHJUb1N0b3JlOyB9CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBHUFJSZWcgaW52YWxpZCgpIHsgcmV0dXJuIEludmFsaWRHUFJSZWc7IH0KKyAgICBzdGF0aWMg
Y29uc3RleHByIHNpemVfdCByZWdTaXplKCkgeyByZXR1cm4gc2l6ZW9mKENQVVJlZ2lzdGVyKTsg
fQorI2lmIENQVShBUk02NCkKKyAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkTG9hZFBhaXJJbW0oaW50
IG9mZnNldCkgeyByZXR1cm4gQVJNNjRBc3NlbWJsZXI6OmlzVmFsaWRMRFBJbW08NjQ+KG9mZnNl
dCk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkU3RvcmVQYWlySW1tKGludCBvZmZzZXQpIHsg
cmV0dXJuIEFSTTY0QXNzZW1ibGVyOjppc1ZhbGlkU1RQSW1tPDY0PihvZmZzZXQpOyB9CisjZWxz
ZQorICAgIHN0YXRpYyBib29sIGlzVmFsaWRMb2FkUGFpckltbShpbnQpIHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgc3RhdGljIGJvb2wgaXNWYWxpZFN0b3JlUGFpckltbShpbnQpIHsgcmV0dXJuIGZh
bHNlOyB9CisjZW5kaWYKK307CisKK3RlbXBsYXRlPD4KK3N0cnVjdCBSZWdEaXNwYXRjaDxGUFJS
ZWc+IHsKKyAgICBzdGF0aWMgRlBSUmVnIGdldChSZWcgcmVnKSB7IHJldHVybiByZWcuZnByKCk7
IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTcG9vbGVyPiBzdGF0aWMgRlBSUmVnIHRlbXAxKGNv
bnN0IFNwb29sZXIqIHNwb29sZXIpIHsgcmV0dXJuIHNwb29sZXItPm1fdGVtcDFGUFI7IH0KKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBTcG9vbGVyPiBzdGF0aWMgRlBSUmVnIHRlbXAyKGNvbnN0IFNw
b29sZXIqIHNwb29sZXIpIHsgcmV0dXJuIHNwb29sZXItPm1fdGVtcDJGUFI7IH0KKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBTcG9vbGVyPiBzdGF0aWMgRlBSUmVnJiByZWdUb1N0b3JlKFNwb29sZXIq
IHNwb29sZXIpIHsgcmV0dXJuIHNwb29sZXItPm1fZnByVG9TdG9yZTsgfQorICAgIHN0YXRpYyBj
b25zdGV4cHIgRlBSUmVnIGludmFsaWQoKSB7IHJldHVybiBJbnZhbGlkRlBSUmVnOyB9CisgICAg
c3RhdGljIGNvbnN0ZXhwciBzaXplX3QgcmVnU2l6ZSgpIHsgcmV0dXJuIHNpemVvZihkb3VibGUp
OyB9CisjaWYgQ1BVKEFSTTY0KQorICAgIHN0YXRpYyBib29sIGlzVmFsaWRMb2FkUGFpckltbShp
bnQgb2Zmc2V0KSB7IHJldHVybiBBUk02NEFzc2VtYmxlcjo6aXNWYWxpZExEUEZQSW1tPDY0Pihv
ZmZzZXQpOyB9CisgICAgc3RhdGljIGJvb2wgaXNWYWxpZFN0b3JlUGFpckltbShpbnQgb2Zmc2V0
KSB7IHJldHVybiBBUk02NEFzc2VtYmxlcjo6aXNWYWxpZFNUUEZQSW1tPDY0PihvZmZzZXQpOyB9
CisjZWxzZQorICAgIHN0YXRpYyBib29sIGlzVmFsaWRMb2FkUGFpckltbShpbnQpIHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgc3RhdGljIGJvb2wgaXNWYWxpZFN0b3JlUGFpckltbShpbnQpIHsgcmV0
dXJuIGZhbHNlOyB9CisjZW5kaWYKK307CisKK2NsYXNzIEFzc2VtYmx5SGVscGVyczo6Q29weVNw
b29sZXIgeworcHVibGljOgorICAgIHVzaW5nIEpJVCA9IEFzc2VtYmx5SGVscGVyczsKKyAgICB1
c2luZyBBZGRyZXNzID0gSklUOjpBZGRyZXNzOworICAgIHVzaW5nIFRydXN0ZWRJbW0zMiA9IEpJ
VDo6VHJ1c3RlZEltbTMyOworCisgICAgc3RydWN0IFNvdXJjZSB7CisgICAgICAgIGVudW0gY2xh
c3MgVHlwZSB7IEJ1ZmZlck9mZnNldCwgUmVnLCBFbmNvZGVkSlNWYWx1ZSB9IHR5cGU7CisgICAg
ICAgIGludCBvZmZzZXQ7CisgICAgICAgIFJlZyByZWc7CisgICAgICAgIEVuY29kZWRKU1ZhbHVl
IHZhbHVlOworCisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJlZ1R5cGU+IFJlZ1R5cGUgZ2V0
UmVnKCkgeyByZXR1cm4gUmVnRGlzcGF0Y2g8UmVnVHlwZT46OmdldChyZWcpOyB9OworICAgIH07
CisKKyAgICBlbnVtIGNsYXNzIEJ1ZmZlclJlZ3MgeworICAgICAgICBOZWVkUHJlc2VydmF0aW9u
LAorICAgICAgICBBbGxvd01vZGlmaWNhdGlvbgorICAgIH07CisKKyAgICBDb3B5U3Bvb2xlcihC
dWZmZXJSZWdzIGF0dHJpYnV0ZSwgSklUJiBqaXQsIEdQUlJlZyBzcmNCdWZmZXIsIEdQUlJlZyBk
ZXN0QnVmZmVyLCBHUFJSZWcgdGVtcDEsIEdQUlJlZyB0ZW1wMiwgRlBSUmVnIGZwVGVtcDEgPSBJ
bnZhbGlkRlBSUmVnLCBGUFJSZWcgZnBUZW1wMiA9IEludmFsaWRGUFJSZWcpCisgICAgICAgIDog
bV9qaXQoaml0KQorICAgICAgICAsIG1fc3JjQnVmZmVyR1BSKHNyY0J1ZmZlcikKKyAgICAgICAg
LCBtX2RzdEJ1ZmZlckdQUihkZXN0QnVmZmVyKQorICAgICAgICAsIG1fdGVtcDFHUFIodGVtcDEp
CisgICAgICAgICwgbV90ZW1wMkdQUih0ZW1wMikKKyAgICAgICAgLCBtX3RlbXAxRlBSKGZwVGVt
cDEpCisgICAgICAgICwgbV90ZW1wMkZQUihmcFRlbXAyKQorICAgICAgICAsIG1fYnVmZmVyUmVn
c0F0dHIoYXR0cmlidXRlKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByIChoYXNQYWlyT3Ag
JiYgIWlzQVJNNjQoKSkKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
IC8vIHVuc3VwcG9ydGVkIGFyY2hpdGVjdHVyZS4KKyAgICB9CisKKyAgICBDb3B5U3Bvb2xlcihK
SVQmIGppdCwgR1BSUmVnIHNyY0J1ZmZlciwgR1BSUmVnIGRlc3RCdWZmZXIsIEdQUlJlZyB0ZW1w
MSwgR1BSUmVnIHRlbXAyLCBGUFJSZWcgZnBUZW1wMSA9IEludmFsaWRGUFJSZWcsIEZQUlJlZyBm
cFRlbXAyID0gSW52YWxpZEZQUlJlZykKKyAgICAgICAgOiBDb3B5U3Bvb2xlcihCdWZmZXJSZWdz
OjpOZWVkUHJlc2VydmF0aW9uLCBqaXQsIHNyY0J1ZmZlciwgZGVzdEJ1ZmZlciwgdGVtcDEsIHRl
bXAyLCBmcFRlbXAxLCBmcFRlbXAyKQorICAgIHsgfQorCitwcml2YXRlOgorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFJlZ1R5cGU+IFJlZ1R5cGUgdGVtcDEoKSBjb25zdCB7IHJldHVybiBSZWdEaXNw
YXRjaDxSZWdUeXBlPjo6dGVtcDEodGhpcyk7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSZWdU
eXBlPiBSZWdUeXBlIHRlbXAyKCkgY29uc3QgeyByZXR1cm4gUmVnRGlzcGF0Y2g8UmVnVHlwZT46
OnRlbXAyKHRoaXMpOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgUmVnVHlwZT4gUmVnVHlwZSYg
cmVnVG9TdG9yZSgpIHsgcmV0dXJuIFJlZ0Rpc3BhdGNoPFJlZ1R5cGU+OjpyZWdUb1N0b3JlKHRo
aXMpOyB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSZWdUeXBlPiBzdGF0aWMgY29uc3RleHBy
IFJlZ1R5cGUgaW52YWxpZCgpIHsgcmV0dXJuIFJlZ0Rpc3BhdGNoPFJlZ1R5cGU+OjppbnZhbGlk
KCk7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSZWdUeXBlPiBzdGF0aWMgY29uc3RleHByIGlu
dCByZWdTaXplKCkgeyByZXR1cm4gUmVnRGlzcGF0Y2g8UmVnVHlwZT46OnJlZ1NpemUoKTsgfQor
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgUmVnVHlwZT4gc3RhdGljIGJvb2wgaXNWYWxpZExvYWRQ
YWlySW1tKGludCBvZmZzZXQpIHsgcmV0dXJuIFJlZ0Rpc3BhdGNoPFJlZ1R5cGU+Ojppc1ZhbGlk
TG9hZFBhaXJJbW0ob2Zmc2V0KTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJlZ1R5cGU+IHN0
YXRpYyBib29sIGlzVmFsaWRTdG9yZVBhaXJJbW0oaW50IG9mZnNldCkgeyByZXR1cm4gUmVnRGlz
cGF0Y2g8UmVnVHlwZT46OmlzVmFsaWRTdG9yZVBhaXJJbW0ob2Zmc2V0KTsgfQorCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgUmVnVHlwZT4KKyAgICB2b2lkIGxvYWQoaW50IG9mZnNldCkKKyAgICB7
CisgICAgICAgIGlmIGNvbnN0ZXhwciAoIWhhc1BhaXJPcCkgeworICAgICAgICAgICAgYXV0byYg
cmVnVG9TdG9yZSA9IHRoaXMtPnJlZ1RvU3RvcmU8UmVnVHlwZT4oKTsKKyAgICAgICAgICAgIHJl
Z1RvU3RvcmUgPSB0ZW1wMTxSZWdUeXBlPigpOworICAgICAgICAgICAgbG9hZChvZmZzZXQsIHJl
Z1RvU3RvcmUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgYXV0
byYgc291cmNlID0gbV9zb3VyY2VzW21fY3VycmVudFNvdXJjZSsrXTsKKyAgICAgICAgc291cmNl
LnR5cGUgPSBTb3VyY2U6OlR5cGU6OkJ1ZmZlck9mZnNldDsKKyAgICAgICAgc291cmNlLm9mZnNl
dCA9IG9mZnNldDsKKyAgICB9CisKKyAgICB2b2lkIG1vdmUoRW5jb2RlZEpTVmFsdWUgdmFsdWUp
CisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKCFoYXNQYWlyT3ApIHsKKyAgICAgICAgICAg
IGF1dG8mIHJlZ1RvU3RvcmUgPSB0aGlzLT5yZWdUb1N0b3JlPEdQUlJlZz4oKTsKKyAgICAgICAg
ICAgIHJlZ1RvU3RvcmUgPSB0ZW1wMTxHUFJSZWc+KCk7CisgICAgICAgICAgICBtb3ZlKHZhbHVl
LCByZWdUb1N0b3JlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IGF1dG8mIHNvdXJjZSA9IG1fc291cmNlc1ttX2N1cnJlbnRTb3VyY2UrK107CisgICAgICAgIHNv
dXJjZS50eXBlID0gU291cmNlOjpUeXBlOjpFbmNvZGVkSlNWYWx1ZTsKKyAgICAgICAgc291cmNl
LnZhbHVlID0gdmFsdWU7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgUmVnVHlwZT4K
KyAgICB2b2lkIGNvcHkoUmVnVHlwZSByZWcpCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIg
KCFoYXNQYWlyT3ApIHsKKyAgICAgICAgICAgIGF1dG8mIHJlZ1RvU3RvcmUgPSB0aGlzLT5yZWdU
b1N0b3JlPFJlZ1R5cGU+KCk7CisgICAgICAgICAgICByZWdUb1N0b3JlID0gcmVnOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgYXV0byYgc291cmNlID0gbV9zb3Vy
Y2VzW21fY3VycmVudFNvdXJjZSsrXTsKKyAgICAgICAgc291cmNlLnR5cGUgPSBTb3VyY2U6OlR5
cGU6OlJlZzsKKyAgICAgICAgc291cmNlLnJlZyA9IHJlZzsKKyAgICB9OworCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgUmVnVHlwZT4KKyAgICB2b2lkIHN0b3JlKGludCBzdG9yZU9mZnNldCkKKyAg
ICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAoIWhhc1BhaXJPcCkgeworICAgICAgICAgICAgYXV0
byByZWdUb1N0b3JlID0gdGhpcy0+cmVnVG9TdG9yZTxSZWdUeXBlPigpOworICAgICAgICAgICAg
c3RvcmUocmVnVG9TdG9yZSwgc3RvcmVPZmZzZXQpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgY29uc3QgYm9vbCByZWdUeXBlSXNHUFIgPSBzdGQ6OmlzX3NhbWU8
UmVnVHlwZSwgR1BSUmVnPjo6dmFsdWU7CisKKyAgICAgICAgaWYgKG1fY3VycmVudFNvdXJjZSA8
IDIpIHsKKyAgICAgICAgICAgIG1fZGVmZXJyZWRTdG9yZU9mZnNldCA9IHN0b3JlT2Zmc2V0Owor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgUmVnVHlwZSByZWdUb1N0
b3JlMSA9IGludmFsaWQ8UmVnVHlwZT4oKTsKKyAgICAgICAgUmVnVHlwZSByZWdUb1N0b3JlMiA9
IGludmFsaWQ8UmVnVHlwZT4oKTsKKyAgICAgICAgYXV0byYgc291cmNlMSA9IG1fc291cmNlc1sw
XTsKKyAgICAgICAgYXV0byYgc291cmNlMiA9IG1fc291cmNlc1sxXTsKKyAgICAgICAgYXV0byBz
cmNPZmZzZXQxID0gbV9zb3VyY2VzWzBdLm9mZnNldCAtIG1fc3JjT2Zmc2V0QWRqdXN0bWVudDsK
KyAgICAgICAgYXV0byBzcmNPZmZzZXQyID0gbV9zb3VyY2VzWzFdLm9mZnNldCAtIG1fc3JjT2Zm
c2V0QWRqdXN0bWVudDsKKyAgICAgICAgY29uc3RleHByIGludCByZWdpc3RlclNpemUgPSByZWdT
aXplPFJlZ1R5cGU+KCk7CisKKyAgICAgICAgaWYgKHNvdXJjZTEudHlwZSA9PSBTb3VyY2U6OlR5
cGU6OkJ1ZmZlck9mZnNldCAmJiBzb3VyY2UyLnR5cGUgPT0gU291cmNlOjpUeXBlOjpCdWZmZXJP
ZmZzZXQpIHsKKyAgICAgICAgICAgIHJlZ1RvU3RvcmUxID0gdGVtcDE8UmVnVHlwZT4oKTsKKyAg
ICAgICAgICAgIHJlZ1RvU3RvcmUyID0gdGVtcDI8UmVnVHlwZT4oKTsKKworICAgICAgICAgICAg
aW50IG9mZnNldERlbHRhID0gYWJzKHNyY09mZnNldDEgLSBzcmNPZmZzZXQyKTsKKyAgICAgICAg
ICAgIGludCBtaW5PZmZzZXQgPSBzdGQ6Om1pbihzcmNPZmZzZXQxLCBzcmNPZmZzZXQyKTsKKyAg
ICAgICAgICAgIGJvb2wgaXNWYWxpZE9mZnNldCA9IGlzVmFsaWRMb2FkUGFpckltbTxSZWdUeXBl
PihtaW5PZmZzZXQpOworCisgICAgICAgICAgICBpZiAob2Zmc2V0RGVsdGEgIT0gcmVnaXN0ZXJT
aXplIHx8ICghaXNWYWxpZE9mZnNldCAmJiBtX2J1ZmZlclJlZ3NBdHRyICE9IEJ1ZmZlclJlZ3M6
OkFsbG93TW9kaWZpY2F0aW9uKSkgeworICAgICAgICAgICAgICAgIGxvYWQoc3JjT2Zmc2V0MSwg
cmVnVG9TdG9yZTEpOworICAgICAgICAgICAgICAgIGxvYWQoc3JjT2Zmc2V0MiwgcmVnVG9TdG9y
ZTIpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAoIWlzVmFsaWRP
ZmZzZXQpIHsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG1fYnVmZmVyUmVnc0F0dHIgPT0g
QnVmZmVyUmVnczo6QWxsb3dNb2RpZmljYXRpb24pOworICAgICAgICAgICAgICAgICAgICBtX3Ny
Y09mZnNldEFkanVzdG1lbnQgKz0gbWluT2Zmc2V0OworICAgICAgICAgICAgICAgICAgICBtX2pp
dC5hZGRQdHIoVHJ1c3RlZEltbTMyKG1pbk9mZnNldCksIG1fc3JjQnVmZmVyR1BSKTsKKworICAg
ICAgICAgICAgICAgICAgICBzcmNPZmZzZXQxIC09IG1pbk9mZnNldDsKKyAgICAgICAgICAgICAg
ICAgICAgc3JjT2Zmc2V0MiAtPSBtaW5PZmZzZXQ7CisgICAgICAgICAgICAgICAgICAgIEFTU0VS
VChpc1ZhbGlkTG9hZFBhaXJJbW08UmVnVHlwZT4oc3RkOjptaW4oc3JjT2Zmc2V0MSwgc3JjT2Zm
c2V0MikpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKHNyY09mZnNl
dDEgPCBzcmNPZmZzZXQyKQorICAgICAgICAgICAgICAgICAgICBsb2FkUGFpcihzcmNPZmZzZXQx
LCByZWdUb1N0b3JlMSwgcmVnVG9TdG9yZTIpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICAgICAgbG9hZFBhaXIoc3JjT2Zmc2V0MiwgcmVnVG9TdG9yZTIsIHJlZ1RvU3Rv
cmUxKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChzb3VyY2UxLnR5cGUgPT0g
U291cmNlOjpUeXBlOjpCdWZmZXJPZmZzZXQpIHsKKyAgICAgICAgICAgIHJlZ1RvU3RvcmUxID0g
dGVtcDE8UmVnVHlwZT4oKTsKKyAgICAgICAgICAgIGxvYWQoc3JjT2Zmc2V0MSwgcmVnVG9TdG9y
ZTEpOworICAgICAgICAgICAgaWYgKHNvdXJjZTIudHlwZSA9PSBTb3VyY2U6OlR5cGU6OkVuY29k
ZWRKU1ZhbHVlKSB7CisgICAgICAgICAgICAgICAgaWYgY29uc3RleHByIChyZWdUeXBlSXNHUFIp
IHsKKyAgICAgICAgICAgICAgICAgICAgcmVnVG9TdG9yZTIgPSB0ZW1wMjxSZWdUeXBlPigpOwor
ICAgICAgICAgICAgICAgICAgICBtb3ZlKHNvdXJjZTIudmFsdWUsIHJlZ1RvU3RvcmUyKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICByZWdU
b1N0b3JlMiA9IHNvdXJjZTIuZ2V0UmVnPFJlZ1R5cGU+KCk7CisKKyAgICAgICAgfSBlbHNlIGlm
IChzb3VyY2UyLnR5cGUgPT0gU291cmNlOjpUeXBlOjpCdWZmZXJPZmZzZXQpIHsKKyAgICAgICAg
ICAgIGlmIChzb3VyY2UxLnR5cGUgPT0gU291cmNlOjpUeXBlOjpFbmNvZGVkSlNWYWx1ZSkgewor
ICAgICAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAocmVnVHlwZUlzR1BSKSB7CisgICAgICAgICAg
ICAgICAgICAgIHJlZ1RvU3RvcmUxID0gdGVtcDE8UmVnVHlwZT4oKTsKKyAgICAgICAgICAgICAg
ICAgICAgbW92ZShzb3VyY2UxLnZhbHVlLCByZWdUb1N0b3JlMSk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgcmVnVG9TdG9yZTEgPSBzb3Vy
Y2UxLmdldFJlZzxSZWdUeXBlPigpOworICAgICAgICAgICAgcmVnVG9TdG9yZTIgPSB0ZW1wMjxS
ZWdUeXBlPigpOworICAgICAgICAgICAgbG9hZChzcmNPZmZzZXQyLCByZWdUb1N0b3JlMik7CisK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChzb3VyY2UxLnR5cGUgPT0gU291cmNl
OjpUeXBlOjpFbmNvZGVkSlNWYWx1ZSkgeworICAgICAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAo
cmVnVHlwZUlzR1BSKSB7CisgICAgICAgICAgICAgICAgICAgIHJlZ1RvU3RvcmUxID0gdGVtcDE8
UmVnVHlwZT4oKTsKKyAgICAgICAgICAgICAgICAgICAgbW92ZShzb3VyY2UxLnZhbHVlLCByZWdU
b1N0b3JlMSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICAgICAgcmVnVG9TdG9yZTEgPSBzb3VyY2UxLmdldFJlZzxSZWdUeXBlPigpOworCisgICAg
ICAgICAgICBpZiAoc291cmNlMi50eXBlID09IFNvdXJjZTo6VHlwZTo6RW5jb2RlZEpTVmFsdWUp
IHsKKyAgICAgICAgICAgICAgICBpZiBjb25zdGV4cHIgKHJlZ1R5cGVJc0dQUikgeworICAgICAg
ICAgICAgICAgICAgICByZWdUb1N0b3JlMiA9IHRlbXAyPFJlZ1R5cGU+KCk7CisgICAgICAgICAg
ICAgICAgICAgIG1vdmUoc291cmNlMi52YWx1ZSwgcmVnVG9TdG9yZTIpOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHJlZ1RvU3RvcmUyID0g
c291cmNlMi5nZXRSZWc8UmVnVHlwZT4oKTsKKyAgICAgICAgfQorCisgICAgICAgIGludCBkc3RP
ZmZzZXQxID0gbV9kZWZlcnJlZFN0b3JlT2Zmc2V0IC0gbV9kc3RPZmZzZXRBZGp1c3RtZW50Owor
ICAgICAgICBpbnQgZHN0T2Zmc2V0MiA9IHN0b3JlT2Zmc2V0IC0gbV9kc3RPZmZzZXRBZGp1c3Rt
ZW50OworCisgICAgICAgIGludCBvZmZzZXREZWx0YSA9IGFicyhkc3RPZmZzZXQxIC0gZHN0T2Zm
c2V0Mik7CisgICAgICAgIGludCBtaW5PZmZzZXQgPSBzdGQ6Om1pbihkc3RPZmZzZXQxLCBkc3RP
ZmZzZXQyKTsKKyAgICAgICAgYm9vbCBpc1ZhbGlkT2Zmc2V0ID0gaXNWYWxpZFN0b3JlUGFpcklt
bTxSZWdUeXBlPihtaW5PZmZzZXQpOworCisgICAgICAgIGlmIChvZmZzZXREZWx0YSAhPSByZWdp
c3RlclNpemUgfHwgKCFpc1ZhbGlkT2Zmc2V0ICYmIG1fYnVmZmVyUmVnc0F0dHIgIT0gQnVmZmVy
UmVnczo6QWxsb3dNb2RpZmljYXRpb24pKSB7CisgICAgICAgICAgICBzdG9yZShyZWdUb1N0b3Jl
MSwgZHN0T2Zmc2V0MSk7CisgICAgICAgICAgICBzdG9yZShyZWdUb1N0b3JlMiwgZHN0T2Zmc2V0
Mik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoIWlzVmFsaWRPZmZzZXQpIHsK
KyAgICAgICAgICAgICAgICBBU1NFUlQobV9idWZmZXJSZWdzQXR0ciA9PSBCdWZmZXJSZWdzOjpB
bGxvd01vZGlmaWNhdGlvbik7CisgICAgICAgICAgICAgICAgbV9kc3RPZmZzZXRBZGp1c3RtZW50
ICs9IG1pbk9mZnNldDsKKyAgICAgICAgICAgICAgICBtX2ppdC5hZGRQdHIoVHJ1c3RlZEltbTMy
KG1pbk9mZnNldCksIG1fZHN0QnVmZmVyR1BSKTsKKworICAgICAgICAgICAgICAgIGRzdE9mZnNl
dDEgLT0gbWluT2Zmc2V0OworICAgICAgICAgICAgICAgIGRzdE9mZnNldDIgLT0gbWluT2Zmc2V0
OworICAgICAgICAgICAgICAgIEFTU0VSVChpc1ZhbGlkU3RvcmVQYWlySW1tPFJlZ1R5cGU+KHN0
ZDo6bWluKGRzdE9mZnNldDEsIGRzdE9mZnNldDIpKSk7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBpZiAoZHN0T2Zmc2V0MSA8IGRzdE9mZnNldDIpCisgICAgICAgICAgICAgICAgc3RvcmVQ
YWlyKHJlZ1RvU3RvcmUxLCByZWdUb1N0b3JlMiwgZHN0T2Zmc2V0MSk7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgc3RvcmVQYWlyKHJlZ1RvU3RvcmUyLCByZWdUb1N0b3JlMSwg
ZHN0T2Zmc2V0Mik7CisgICAgICAgIH0KKworICAgICAgICBtX2N1cnJlbnRTb3VyY2UgPSAwOwor
ICAgIH07CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSZWdUeXBlPgorICAgIHZvaWQgZmx1c2go
KQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByICghaGFzUGFpck9wKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIGlmICghbV9jdXJyZW50U291cmNlKQorICAgICAgICAgICAgcmV0
dXJuOyAvLyBOb3RoaW5nIHRvIGZsdXNoLgorCisgICAgICAgIEFTU0VSVChtX2N1cnJlbnRTb3Vy
Y2UgPT0gMSk7CisKKyAgICAgICAgUmVnVHlwZSByZWdUb1N0b3JlID0gaW52YWxpZDxSZWdUeXBl
PigpOworICAgICAgICBhdXRvJiBzb3VyY2UgPSBtX3NvdXJjZXNbMF07CisgICAgICAgIGF1dG8m
IHNyY09mZnNldCA9IHNvdXJjZS5vZmZzZXQ7CisgICAgICAgIGNvbnN0IGJvb2wgcmVnVHlwZUlz
R1BSID0gc3RkOjppc19zYW1lPFJlZ1R5cGUsIEdQUlJlZz46OnZhbHVlOworCisgICAgICAgIGlm
IChzb3VyY2UudHlwZSA9PSBTb3VyY2U6OlR5cGU6OkJ1ZmZlck9mZnNldCkgeworICAgICAgICAg
ICAgcmVnVG9TdG9yZSA9IHRlbXAxPFJlZ1R5cGU+KCk7CisgICAgICAgICAgICBsb2FkKHNyY09m
ZnNldCAtIG1fc3JjT2Zmc2V0QWRqdXN0bWVudCwgcmVnVG9TdG9yZSk7CisgICAgICAgIH0gZWxz
ZSBpZiAoc291cmNlLnR5cGUgPT0gU291cmNlOjpUeXBlOjpSZWcpCisgICAgICAgICAgICByZWdU
b1N0b3JlID0gc291cmNlLmdldFJlZzxSZWdUeXBlPigpOworICAgICAgICBlbHNlIGlmIGNvbnN0
ZXhwciAocmVnVHlwZUlzR1BSKSB7CisgICAgICAgICAgICByZWdUb1N0b3JlID0gdGVtcDE8UmVn
VHlwZT4oKTsKKyAgICAgICAgICAgIG1vdmUoc291cmNlLnZhbHVlLCByZWdUb1N0b3JlKTsKKyAg
ICAgICAgfQorCisgICAgICAgIHN0b3JlKHJlZ1RvU3RvcmUsIG1fZGVmZXJyZWRTdG9yZU9mZnNl
dCAtIG1fZHN0T2Zmc2V0QWRqdXN0bWVudCk7CisgICAgICAgIG1fY3VycmVudFNvdXJjZSA9IDA7
CisgICAgfQorCitwdWJsaWM6CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGxvYWRHUFIoaW50IHNy
Y09mZnNldCkgeyBsb2FkPEdQUlJlZz4oc3JjT2Zmc2V0KTsgfQorICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBjb3B5R1BSKEdQUlJlZyBncHIpIHsgY29weTxHUFJSZWc+KGdwcik7IH0KKyAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgbW92ZUNvbnN0YW50KEVuY29kZWRKU1ZhbHVlIHZhbHVlKSB7IG1vdmUo
dmFsdWUpOyB9CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHN0b3JlR1BSKGludCBkc3RPZmZzZXQp
IHsgc3RvcmU8R1BSUmVnPihkc3RPZmZzZXQpOyB9CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGZs
dXNoR1BSKCkgeyBmbHVzaDxHUFJSZWc+KCk7IH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBs
b2FkRlBSKGludCBzcmNPZmZzZXQpIHsgbG9hZDxGUFJSZWc+KHNyY09mZnNldCk7IH0KKyAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgY29weUZQUihGUFJSZWcgZ3ByKSB7IGNvcHk8RlBSUmVnPihncHIp
OyB9CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHN0b3JlRlBSKGludCBkc3RPZmZzZXQpIHsgc3Rv
cmU8RlBSUmVnPihkc3RPZmZzZXQpOyB9CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGZsdXNoRlBS
KCkgeyBmbHVzaDxGUFJSZWc+KCk7IH0KKworcHJvdGVjdGVkOgorI2lmIFVTRShKU1ZBTFVFNjQp
CisgICAgQUxXQVlTX0lOTElORSB2b2lkIG1vdmUoRW5jb2RlZEpTVmFsdWUgdmFsdWUsIEdQUlJl
ZyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tNjQodmFsdWUpLCBk
ZXN0KTsKKyAgICB9CisjZWxzZQorICAgIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggdm9pZCBtb3Zl
KEVuY29kZWRKU1ZhbHVlLCBHUFJSZWcpIHsgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsg
fQorI2VuZGlmCisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbG9hZChpbnQgb2Zmc2V0LCBHUFJS
ZWcgZGVzdCkKKyAgICB7CisgICAgICAgIG1faml0LmxvYWRQdHIoQWRkcmVzcyhtX3NyY0J1ZmZl
ckdQUiwgb2Zmc2V0KSwgZGVzdCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHN0
b3JlKEdQUlJlZyBzcmMsIGludCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2ppdC5zdG9yZVB0
cihzcmMsIEFkZHJlc3MobV9kc3RCdWZmZXJHUFIsIG9mZnNldCkpOworICAgIH0KKworICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBsb2FkKGludCBvZmZzZXQsIEZQUlJlZyBkZXN0KQorICAgIHsKKyAg
ICAgICAgbV9qaXQubG9hZERvdWJsZShBZGRyZXNzKG1fc3JjQnVmZmVyR1BSLCBvZmZzZXQpLCBk
ZXN0KTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc3RvcmUoRlBSUmVnIHNyYywg
aW50IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1faml0LnN0b3JlRG91YmxlKHNyYywgQWRkcmVz
cyhtX2RzdEJ1ZmZlckdQUiwgb2Zmc2V0KSk7CisgICAgfQorCisjaWYgQ1BVKEFSTTY0KQorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFJlZ1R5cGU+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGxvYWRQ
YWlyKGludCBvZmZzZXQsIFJlZ1R5cGUgZGVzdDEsIFJlZ1R5cGUgZGVzdDIpCisgICAgeworICAg
ICAgICBtX2ppdC5sb2FkUGFpcjY0KG1fc3JjQnVmZmVyR1BSLCBUcnVzdGVkSW1tMzIob2Zmc2V0
KSwgZGVzdDEsIGRlc3QyKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSZWdUeXBl
PgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzdG9yZVBhaXIoUmVnVHlwZSBzcmMxLCBSZWdUeXBl
IHNyYzIsIGludCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2ppdC5zdG9yZVBhaXI2NChzcmMx
LCBzcmMyLCBtX2RzdEJ1ZmZlckdQUiwgVHJ1c3RlZEltbTMyKG9mZnNldCkpOworICAgIH0KKwor
ICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBoYXNQYWlyT3AgPSB0cnVlOworI2Vsc2UKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBSZWdUeXBlPiBBTFdBWVNfSU5MSU5FIHZvaWQgbG9hZFBhaXIoaW50
LCBSZWdUeXBlLCBSZWdUeXBlKSB7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSZWdUeXBlPiBB
TFdBWVNfSU5MSU5FIHZvaWQgc3RvcmVQYWlyKFJlZ1R5cGUsIFJlZ1R5cGUsIGludCkgeyB9CisK
KyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaGFzUGFpck9wID0gZmFsc2U7CisjZW5kaWYKKwor
ICAgIEpJVCYgbV9qaXQ7CisKKyAgICBHUFJSZWcgbV9zcmNCdWZmZXJHUFI7CisgICAgR1BSUmVn
IG1fZHN0QnVmZmVyR1BSOworICAgIEdQUlJlZyBtX3RlbXAxR1BSOworICAgIEdQUlJlZyBtX3Rl
bXAyR1BSOworICAgIEZQUlJlZyBtX3RlbXAxRlBSOworICAgIEZQUlJlZyBtX3RlbXAyRlBSOwor
Citwcml2YXRlOgorICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IGdwclNpemUgPSBzdGF0aWNfY2Fz
dDxpbnQ+KHNpemVvZihDUFVSZWdpc3RlcikpOworICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IGZw
clNpemUgPSBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihkb3VibGUpKTsKKworICAgIC8vIFRoZXNl
IHBvaW50IHRvIHdoaWNoIHJlZ2lzdGVyIHRvIHVzZS4KKyAgICBHUFJSZWcgbV9ncHJUb1N0b3Jl
IHsgSW52YWxpZEdQUlJlZyB9OyAvLyBPbmx5IHVzZWQgd2hlbiAhaGFzUGFpck9wLgorICAgIEZQ
UlJlZyBtX2ZwclRvU3RvcmUgeyBJbnZhbGlkRlBSUmVnIH07IC8vIE9ubHkgdXNlZCB3aGVuICFo
YXNQYWlyT3AuCisKKyAgICBCdWZmZXJSZWdzIG1fYnVmZmVyUmVnc0F0dHI7CisgICAgU291cmNl
IG1fc291cmNlc1syXTsKKyAgICB1bnNpZ25lZCBtX2N1cnJlbnRTb3VyY2UgeyAwIH07CisgICAg
aW50IG1fc3JjT2Zmc2V0QWRqdXN0bWVudCB7IDAgfTsKKyAgICBpbnQgbV9kc3RPZmZzZXRBZGp1
c3RtZW50IHsgMCB9OworICAgIGludCBtX2RlZmVycmVkU3RvcmVPZmZzZXQ7CisKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBSZWdUeXBlPiBmcmllbmQgc3RydWN0IFJlZ0Rpc3BhdGNoOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9TY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9y
LmNwcAkocmV2aXNpb24gMjc4ODg2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TY3Jh
dGNoUmVnaXN0ZXJBbGxvY2F0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsNiArMjgsNyBA
QAogCiAjaWYgRU5BQkxFKEpJVCkKIAorI2luY2x1ZGUgIkFzc2VtYmx5SGVscGVyc1Nwb29sZXJz
LmgiCiAjaW5jbHVkZSAiTWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwuaCIKICNpbmNsdWRl
ICJWTS5oIgogCkBAIC0xMDEsNyArMTAyLDcgQEAgdHlwZW5hbWUgQmFua0luZm86OlJlZ2lzdGVy
VHlwZSBTY3JhdGNoUgogR1BSUmVnIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6YWxsb2NhdGVT
Y3JhdGNoR1BSKCkgeyByZXR1cm4gYWxsb2NhdGVTY3JhdGNoPEdQUkluZm8+KCk7IH0KIEZQUlJl
ZyBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OmFsbG9jYXRlU2NyYXRjaEZQUigpIHsgcmV0dXJu
IGFsbG9jYXRlU2NyYXRjaDxGUFJJbmZvPigpOyB9CiAKLVNjcmF0Y2hSZWdpc3RlckFsbG9jYXRv
cjo6UHJlc2VydmVkU3RhdGUgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpwcmVzZXJ2ZVJldXNl
ZFJlZ2lzdGVyc0J5UHVzaGluZyhNYWNyb0Fzc2VtYmxlciYgaml0LCBFeHRyYVN0YWNrU3BhY2Ug
ZXh0cmFTdGFja1NwYWNlKQorU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpQcmVzZXJ2ZWRTdGF0
ZSBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OnByZXNlcnZlUmV1c2VkUmVnaXN0ZXJzQnlQdXNo
aW5nKEFzc2VtYmx5SGVscGVycyYgaml0LCBFeHRyYVN0YWNrU3BhY2UgZXh0cmFTdGFja1NwYWNl
KQogewogICAgIGlmICghZGlkUmV1c2VSZWdpc3RlcnMoKSkKICAgICAgICAgcmV0dXJuIFByZXNl
cnZlZFN0YXRlKDAsIGV4dHJhU3RhY2tTcGFjZSk7CkBAIC0xMjQsNyArMTI1LDcgQEAgU2NyYXRj
aFJlZ2lzdGVyQWxsb2NhdG9yOjpQcmVzZXJ2ZWRTdGF0ZQogICAgIHJldHVybiBQcmVzZXJ2ZWRT
dGF0ZShzdGFja0FkanVzdG1lbnRTaXplLCBleHRyYVN0YWNrU3BhY2UpOwogfQogCi12b2lkIFNj
cmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6cmVzdG9yZVJldXNlZFJlZ2lzdGVyc0J5UG9wcGluZyhN
YWNyb0Fzc2VtYmxlciYgaml0LCBjb25zdCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OlByZXNl
cnZlZFN0YXRlJiBwcmVzZXJ2ZWRTdGF0ZSkKK3ZvaWQgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9y
OjpyZXN0b3JlUmV1c2VkUmVnaXN0ZXJzQnlQb3BwaW5nKEFzc2VtYmx5SGVscGVycyYgaml0LCBj
b25zdCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OlByZXNlcnZlZFN0YXRlJiBwcmVzZXJ2ZWRT
dGF0ZSkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChwcmVzZXJ2ZWRTdGF0ZSk7CiAgICAgaWYgKCFk
aWRSZXVzZVJlZ2lzdGVycygpKQpAQCAtMTYxLDcgKzE2Miw3IEBAIHVuc2lnbmVkIFNjcmF0Y2hS
ZWdpc3RlckFsbG9jYXRvcjo6ZGVzaXIKICAgICByZXR1cm4gdXNlZFJlZ2lzdGVyc0ZvckNhbGwo
KS5udW1iZXJPZlNldFJlZ2lzdGVycygpICogc2l6ZW9mKEpTVmFsdWUpOwogfQogCi11bnNpZ25l
ZCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OnByZXNlcnZlUmVnaXN0ZXJzVG9TdGFja0ZvckNh
bGwoTWFjcm9Bc3NlbWJsZXImIGppdCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMs
IHVuc2lnbmVkIGV4dHJhQnl0ZXNBdFRvcE9mU3RhY2spCit1bnNpZ25lZCBTY3JhdGNoUmVnaXN0
ZXJBbGxvY2F0b3I6OnByZXNlcnZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGwoQXNzZW1ibHlIZWxw
ZXJzJiBqaXQsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCB1bnNpZ25lZCBleHRy
YUJ5dGVzQXRUb3BPZlN0YWNrKQogewogICAgIFJFTEVBU0VfQVNTRVJUKGV4dHJhQnl0ZXNBdFRv
cE9mU3RhY2sgJSBzaXplb2Yodm9pZCopID09IDApOwogICAgIGlmICghdXNlZFJlZ2lzdGVycy5u
dW1iZXJPZlNldFJlZ2lzdGVycygpKQpAQCAtMTc0LDI2ICsxNzUsMzEgQEAgdW5zaWduZWQgU2Ny
YXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpwcmVzZQogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbTMyKHN0YWNrT2Zmc2V0KSwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9p
bnRlclJlZ2lzdGVyKTsKIAorICAgIEFzc2VtYmx5SGVscGVyczo6U3RvcmVSZWdTcG9vbGVyIHNw
b29sZXIoaml0LCBNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOworCiAgICAg
dW5zaWduZWQgY291bnQgPSAwOwogICAgIGZvciAoR1BSUmVnIHJlZyA9IE1hY3JvQXNzZW1ibGVy
OjpmaXJzdFJlZ2lzdGVyKCk7IHJlZyA8PSBNYWNyb0Fzc2VtYmxlcjo6bGFzdFJlZ2lzdGVyKCk7
IHJlZyA9IE1hY3JvQXNzZW1ibGVyOjpuZXh0UmVnaXN0ZXIocmVnKSkgewogICAgICAgICBpZiAo
dXNlZFJlZ2lzdGVycy5nZXQocmVnKSkgewotICAgICAgICAgICAgaml0LnN0b3JlUHRyKHJlZywg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lz
dGVyLCBleHRyYUJ5dGVzQXRUb3BPZlN0YWNrICsgKGNvdW50ICogc2l6ZW9mKEVuY29kZWRKU1Zh
bHVlKSkpKTsKKyAgICAgICAgICAgIHNwb29sZXIuc3RvcmVHUFIoeyByZWcsIHN0YXRpY19jYXN0
PHB0cmRpZmZfdD4oZXh0cmFCeXRlc0F0VG9wT2ZTdGFjayArIChjb3VudCAqIHNpemVvZihFbmNv
ZGVkSlNWYWx1ZSkpKSB9KTsKICAgICAgICAgICAgIGNvdW50Kys7CiAgICAgICAgIH0KICAgICB9
CisgICAgc3Bvb2xlci5mbHVzaEdQUigpOworCiAgICAgZm9yIChGUFJSZWcgcmVnID0gTWFjcm9B
c3NlbWJsZXI6OmZpcnN0RlBSZWdpc3RlcigpOyByZWcgPD0gTWFjcm9Bc3NlbWJsZXI6Omxhc3RG
UFJlZ2lzdGVyKCk7IHJlZyA9IE1hY3JvQXNzZW1ibGVyOjpuZXh0RlBSZWdpc3RlcihyZWcpKSB7
CiAgICAgICAgIGlmICh1c2VkUmVnaXN0ZXJzLmdldChyZWcpKSB7Ci0gICAgICAgICAgICBqaXQu
c3RvcmVEb3VibGUocmVnLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6
c3RhY2tQb2ludGVyUmVnaXN0ZXIsIGV4dHJhQnl0ZXNBdFRvcE9mU3RhY2sgKyAoY291bnQgKiBz
aXplb2YoRW5jb2RlZEpTVmFsdWUpKSkpOworICAgICAgICAgICAgc3Bvb2xlci5zdG9yZUZQUih7
IHJlZywgc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihleHRyYUJ5dGVzQXRUb3BPZlN0YWNrICsgKGNv
dW50ICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSkpIH0pOwogICAgICAgICAgICAgY291bnQrKzsK
ICAgICAgICAgfQogICAgIH0KKyAgICBzcG9vbGVyLmZsdXNoRlBSKCk7CiAKICAgICBSRUxFQVNF
X0FTU0VSVChjb3VudCA9PSB1c2VkUmVnaXN0ZXJzLm51bWJlck9mU2V0UmVnaXN0ZXJzKCkpOwog
CiAgICAgcmV0dXJuIHN0YWNrT2Zmc2V0OwogfQogCi12b2lkIFNjcmF0Y2hSZWdpc3RlckFsbG9j
YXRvcjo6cmVzdG9yZVJlZ2lzdGVyc0Zyb21TdGFja0ZvckNhbGwoTWFjcm9Bc3NlbWJsZXImIGpp
dCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIGNvbnN0IFJlZ2lzdGVyU2V0JiBp
Z25vcmUsIHVuc2lnbmVkIG51bWJlck9mU3RhY2tCeXRlc1VzZWRGb3JSZWdpc3RlclByZXNlcnZh
dGlvbiwgdW5zaWduZWQgZXh0cmFCeXRlc0F0VG9wT2ZTdGFjaykKK3ZvaWQgU2NyYXRjaFJlZ2lz
dGVyQWxsb2NhdG9yOjpyZXN0b3JlUmVnaXN0ZXJzRnJvbVN0YWNrRm9yQ2FsbChBc3NlbWJseUhl
bHBlcnMmIGppdCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIGNvbnN0IFJlZ2lz
dGVyU2V0JiBpZ25vcmUsIHVuc2lnbmVkIG51bWJlck9mU3RhY2tCeXRlc1VzZWRGb3JSZWdpc3Rl
clByZXNlcnZhdGlvbiwgdW5zaWduZWQgZXh0cmFCeXRlc0F0VG9wT2ZTdGFjaykKIHsKICAgICBS
RUxFQVNFX0FTU0VSVChleHRyYUJ5dGVzQXRUb3BPZlN0YWNrICUgc2l6ZW9mKHZvaWQqKSA9PSAw
KTsKICAgICBpZiAoIXVzZWRSZWdpc3RlcnMubnVtYmVyT2ZTZXRSZWdpc3RlcnMoKSkgewpAQCAt
MjAxLDIxICsyMDcsMjYgQEAgdm9pZCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OnJlc3RvcmVS
ZQogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgQXNzZW1ibHlIZWxwZXJzOjpMb2FkUmVn
U3Bvb2xlciBzcG9vbGVyKGppdCwgTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVy
KTsKKwogICAgIHVuc2lnbmVkIGNvdW50ID0gMDsKICAgICBmb3IgKEdQUlJlZyByZWcgPSBNYWNy
b0Fzc2VtYmxlcjo6Zmlyc3RSZWdpc3RlcigpOyByZWcgPD0gTWFjcm9Bc3NlbWJsZXI6Omxhc3RS
ZWdpc3RlcigpOyByZWcgPSBNYWNyb0Fzc2VtYmxlcjo6bmV4dFJlZ2lzdGVyKHJlZykpIHsKICAg
ICAgICAgaWYgKHVzZWRSZWdpc3RlcnMuZ2V0KHJlZykpIHsKICAgICAgICAgICAgIGlmICghaWdu
b3JlLmdldChyZWcpKQotICAgICAgICAgICAgICAgIGppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3RlciwgZXh0cmFCeXRl
c0F0VG9wT2ZTdGFjayArIChzaXplb2YoRW5jb2RlZEpTVmFsdWUpICogY291bnQpKSwgcmVnKTsK
KyAgICAgICAgICAgICAgICBzcG9vbGVyLmxvYWRHUFIoeyByZWcsIHN0YXRpY19jYXN0PHB0cmRp
ZmZfdD4oZXh0cmFCeXRlc0F0VG9wT2ZTdGFjayArIChzaXplb2YoRW5jb2RlZEpTVmFsdWUpICog
Y291bnQpKSB9KTsKICAgICAgICAgICAgIGNvdW50Kys7CiAgICAgICAgIH0KICAgICB9CisgICAg
c3Bvb2xlci5mbHVzaEdQUigpOworCiAgICAgZm9yIChGUFJSZWcgcmVnID0gTWFjcm9Bc3NlbWJs
ZXI6OmZpcnN0RlBSZWdpc3RlcigpOyByZWcgPD0gTWFjcm9Bc3NlbWJsZXI6Omxhc3RGUFJlZ2lz
dGVyKCk7IHJlZyA9IE1hY3JvQXNzZW1ibGVyOjpuZXh0RlBSZWdpc3RlcihyZWcpKSB7CiAgICAg
ICAgIGlmICh1c2VkUmVnaXN0ZXJzLmdldChyZWcpKSB7CiAgICAgICAgICAgICBpZiAoIWlnbm9y
ZS5nZXQocmVnKSkKLSAgICAgICAgICAgICAgICBqaXQubG9hZERvdWJsZShNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIGV4dHJhQnl0
ZXNBdFRvcE9mU3RhY2sgKyAoc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAqIGNvdW50KSksIHJlZyk7
CisgICAgICAgICAgICAgICAgc3Bvb2xlci5sb2FkRlBSKHsgcmVnLCBzdGF0aWNfY2FzdDxwdHJk
aWZmX3Q+KGV4dHJhQnl0ZXNBdFRvcE9mU3RhY2sgKyAoc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAq
IGNvdW50KSkgfSk7CiAgICAgICAgICAgICBjb3VudCsrOwogICAgICAgICB9CiAgICAgfQorICAg
IHNwb29sZXIuZmx1c2hGUFIoKTsKIAogICAgIHVuc2lnbmVkIHN0YWNrT2Zmc2V0ID0gKHVzZWRS
ZWdpc3RlcnMubnVtYmVyT2ZTZXRSZWdpc3RlcnMoKSkgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUp
OwogICAgIHN0YWNrT2Zmc2V0ICs9IGV4dHJhQnl0ZXNBdFRvcE9mU3RhY2s7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9y
LmgJKHJldmlzaW9uIDI3ODg4NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2NyYXRj
aFJlZ2lzdGVyQWxsb2NhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsMTIgKzI3LDEyIEBA
CiAKICNpZiBFTkFCTEUoSklUKQogCi0jaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKICNpbmNs
dWRlICJSZWdpc3RlclNldC5oIgogI2luY2x1ZGUgIlRlbXBSZWdpc3RlclNldC5oIgogCiBuYW1l
c3BhY2UgSlNDIHsKIAorY2xhc3MgQXNzZW1ibHlIZWxwZXJzOwogc3RydWN0IFNjcmF0Y2hCdWZm
ZXI7CiAKIC8vIFRoaXMgY2xhc3MgcHJvdmlkZXMgYSBsb3ctbGV2ZWwgcmVnaXN0ZXIgYWxsb2Nh
dG9yIGZvciB1c2UgaW4gc3R1YnMuCkBAIC04NCwxNSArODQsMTUgQEAgcHVibGljOgogICAgICAg
ICBFeHRyYVN0YWNrU3BhY2UgZXh0cmFTdGFja1NwYWNlUmVxdWlyZW1lbnQ7CiAgICAgfTsKIAot
ICAgIFByZXNlcnZlZFN0YXRlIHByZXNlcnZlUmV1c2VkUmVnaXN0ZXJzQnlQdXNoaW5nKE1hY3Jv
QXNzZW1ibGVyJiBqaXQsIEV4dHJhU3RhY2tTcGFjZSk7Ci0gICAgdm9pZCByZXN0b3JlUmV1c2Vk
UmVnaXN0ZXJzQnlQb3BwaW5nKE1hY3JvQXNzZW1ibGVyJiBqaXQsIGNvbnN0IFByZXNlcnZlZFN0
YXRlJik7CisgICAgUHJlc2VydmVkU3RhdGUgcHJlc2VydmVSZXVzZWRSZWdpc3RlcnNCeVB1c2hp
bmcoQXNzZW1ibHlIZWxwZXJzJiBqaXQsIEV4dHJhU3RhY2tTcGFjZSk7CisgICAgdm9pZCByZXN0
b3JlUmV1c2VkUmVnaXN0ZXJzQnlQb3BwaW5nKEFzc2VtYmx5SGVscGVycyYgaml0LCBjb25zdCBQ
cmVzZXJ2ZWRTdGF0ZSYpOwogICAgIAogICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnNGb3JD
YWxsKCkgY29uc3Q7CiAgICAgCiAgICAgdW5zaWduZWQgZGVzaXJlZFNjcmF0Y2hCdWZmZXJTaXpl
Rm9yQ2FsbCgpIGNvbnN0OwotICAgIAotICAgIHN0YXRpYyB1bnNpZ25lZCBwcmVzZXJ2ZVJlZ2lz
dGVyc1RvU3RhY2tGb3JDYWxsKE1hY3JvQXNzZW1ibGVyJiBqaXQsIGNvbnN0IFJlZ2lzdGVyU2V0
JiB1c2VkUmVnaXN0ZXJzLCB1bnNpZ25lZCBleHRyYVBhZGRpbmdJbkJ5dGVzKTsKLSAgICBzdGF0
aWMgdm9pZCByZXN0b3JlUmVnaXN0ZXJzRnJvbVN0YWNrRm9yQ2FsbChNYWNyb0Fzc2VtYmxlciYg
aml0LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgY29uc3QgUmVnaXN0ZXJTZXQm
IGlnbm9yZSwgdW5zaWduZWQgbnVtYmVyT2ZTdGFja0J5dGVzVXNlZEZvclJlZ2lzdGVyUHJlc2Vy
dmF0aW9uLCB1bnNpZ25lZCBleHRyYVBhZGRpbmdJbkJ5dGVzKTsKKworICAgIHN0YXRpYyB1bnNp
Z25lZCBwcmVzZXJ2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKEFzc2VtYmx5SGVscGVycyYgaml0
LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgdW5zaWduZWQgZXh0cmFQYWRkaW5n
SW5CeXRlcyk7CisgICAgc3RhdGljIHZvaWQgcmVzdG9yZVJlZ2lzdGVyc0Zyb21TdGFja0ZvckNh
bGwoQXNzZW1ibHlIZWxwZXJzJiBqaXQsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJz
LCBjb25zdCBSZWdpc3RlclNldCYgaWdub3JlLCB1bnNpZ25lZCBudW1iZXJPZlN0YWNrQnl0ZXNV
c2VkRm9yUmVnaXN0ZXJQcmVzZXJ2YXRpb24sIHVuc2lnbmVkIGV4dHJhUGFkZGluZ0luQnl0ZXMp
OwogCiBwcml2YXRlOgogICAgIFJlZ2lzdGVyU2V0IG1fdXNlZFJlZ2lzdGVyczsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcAko
cmV2aXNpb24gMjc4ODg2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklS
R2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTktMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5ODEsMTAgKzI5ODEsNyBAQCBhdXRv
IEFpcklSR2VuZXJhdG9yOjphZGRSZXR1cm4oY29uc3QgQ29uCiAgICAgQjM6OlBhdGNocG9pbnRW
YWx1ZSogcGF0Y2ggPSBhZGRQYXRjaHBvaW50KEIzOjpWb2lkKTsKICAgICBwYXRjaC0+c2V0R2Vu
ZXJhdG9yKFtdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlv
blBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAgIGF1dG8gY2FsbGVlU2F2ZXMgPSBwYXJhbXMuY29k
ZSgpLmNhbGxlZVNhdmVSZWdpc3RlckF0T2Zmc2V0TGlzdCgpOwotCi0gICAgICAgIGZvciAoUmVn
aXN0ZXJBdE9mZnNldCBjYWxsZWVTYXZlIDogY2FsbGVlU2F2ZXMpCi0gICAgICAgICAgICBqaXQu
bG9hZDY0VG9SZWcoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lz
dGVyLCBjYWxsZWVTYXZlLm9mZnNldCgpKSwgY2FsbGVlU2F2ZS5yZWcoKSk7Ci0KKyAgICAgICAg
aml0LmVtaXRSZXN0b3JlKGNhbGxlZVNhdmVzKTsKICAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVw
aWxvZ3VlKCk7CiAgICAgICAgIGppdC5yZXQoKTsKICAgICB9KTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDI3
ODg4NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTYtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTIyODQsMTAgKzIyODQsNyBAQCBhdXRvIEIzSVJHZW5lcmF0
b3I6OmFkZFJldHVybihjb25zdCBDb250CiAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaCA9IG1f
cHJvYy5hZGQ8UGF0Y2hwb2ludFZhbHVlPihCMzo6Vm9pZCwgb3JpZ2luKCkpOwogICAgIHBhdGNo
LT5zZXRHZW5lcmF0b3IoW10gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBH
ZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgYXV0byBjYWxsZWVTYXZlcyA9IHBh
cmFtcy5jb2RlKCkuY2FsbGVlU2F2ZVJlZ2lzdGVyQXRPZmZzZXRMaXN0KCk7Ci0KLSAgICAgICAg
Zm9yIChSZWdpc3RlckF0T2Zmc2V0IGNhbGxlZVNhdmUgOiBjYWxsZWVTYXZlcykKLSAgICAgICAg
ICAgIGppdC5sb2FkNjRUb1JlZyhDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZy
YW1lUmVnaXN0ZXIsIGNhbGxlZVNhdmUub2Zmc2V0KCkpLCBjYWxsZWVTYXZlLnJlZygpKTsKLQor
ICAgICAgICBqaXQuZW1pdFJlc3RvcmUoY2FsbGVlU2F2ZXMpOwogICAgICAgICBqaXQuZW1pdEZ1
bmN0aW9uRXBpbG9ndWUoKTsKICAgICAgICAgaml0LnJldCgpOwogICAgIH0pOwo=
</data>
<flag name="commit-queue"
          id="453276"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431484</attachid>
            <date>2021-06-15 14:46:20 -0700</date>
            <delta_ts>2021-06-23 10:35:38 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-227039.patch</filename>
            <type>text/plain</type>
            <size>108945</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjc4ODk4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzMCBA
QAorMjAyMS0wNi0xNSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
VXNlIGxkcCBhbmQgc3RwIG1vcmUgZm9yIHNhdmluZyAvIHJlc3RvcmluZyByZWdpc3RlcnMgb24g
QVJNNjQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjcwMzkKKyAgICAgICAgcmRhcjovLzc5MzU0NzM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgc3Bvb2xlciBh
YnN0cmFjdGlvbiBpbiBBc3NlbWJseUhlbHBlcnMuICBUaGUgc3Bvb2xlcgorICAgICAgICBiYXNp
Y2FsbHkgYmF0Y2hlcyB1cCBsb2FkIC8gc3RvcmUgb3BlcmF0aW9ucyBhbmQgZW1pdCB0aGVtIGFz
IHBhaXIgaW5zdHJ1Y3Rpb25zCisgICAgICAgIGlmIGFwcHJvcHJpYXRlLgorCisgICAgICAgIFRo
ZXJlIGFyZSA0IHNwb29sZXIgY2xhc3NlczoKKyAgICAgICAgYS4gU3Bvb2xlcgorICAgICAgICAg
ICAtIHRlbXBsYXRlIGJhc2UgY2xhc3MgZm9yIExvYWRSZWdTcG9vbGVyIGFuZCBTdG9yZVJlZ1Nw
b29sZXIuCisgICAgICAgICAgIC0gZW5jYXBzdWxhdGVzIHRoZSBiYXRjaGluZyBzdHJhdGVneSBm
b3IgbG9hZCAvIHN0b3JlIHBhaXJzLgorCisgICAgICAgIGIuIExvYWRSZWdTcG9vbGVyIC0gc3Bl
Y2lhbGl6ZXMgU3Bvb2xlciB0byBoYW5kbGUgbG9hZCBwYWlycy4KKyAgICAgICAgYi4gU3RvcmVS
ZWdTcG9vbGVyIC0gc3BlY2lhbGl6ZXMgU3Bvb2xlciB0byBoYW5kbGUgc3RvcmUgcGFpcnMuCisK
KyAgICAgICAgZC4gQ29weVNwb29sZXIKKyAgICAgICAgICAgLSBoYW5kbGVzIG1hdGNoaW5nIGxv
YWRzIHdpdGggc3RvcmVzLgorICAgICAgICAgICAtIHRyaWVzIHRvIGVtaXQgbG9hZHMgYXMgbG9h
ZCBwYWlycyBpZiBwb3NzaWJsZS4KKyAgICAgICAgICAgLSB0cmllcyB0byBlbW90IHN0b3JlcyBh
cyBzdG9yZSBwYWlycyBpZiBwb3NzaWJsZS4KKyAgICAgICAgICAgLSBlbnN1cmVzIHRoYXQgcHJl
LXJlcXVpc2l0ZSBsb2FkcyBhcmUgZW1pdHRlZCBiZWZvcmUgc3RvcmVzIGFyZSBlbWl0dGVkLgor
ICAgICAgICAgICAtIG90aGVyIHRoYW4gbG9hZHMsIGFsc28gc3VwcG9ydCBjb25zdGFudHMgYW5k
IHJlZ2lzdGVycyBhcyBzb3VyY2VzIG9mIHZhbHVlcworICAgICAgICAgICAgIHRvIGJlIHN0b3Jl
ZC4gIFRoaXMgaXMgdXNlZnVsIGluIE9TUiBleGl0IHJhbXBzIHdoZXJlIHdlIG1heSBtYXRlcmlh
bGl6ZSBhCisgICAgICAgICAgICAgc3RhY2sgdmFsdWUgdG8gc3RvcmUgZnJvbSBjb25zdGFudHMg
b3IgcmVnaXN0ZXJzIGluIGFkZGl0aW9uIHRvIHZhbHVlcyB3ZQorICAgICAgICAgICAgIGxvYWQg
ZnJvbSB0aGUgb2xkIHN0YWNrIGZyYW1lIG9yIGZyb20gYSBzY3JhdGNoIGJ1ZmZlci4KKworICAg
ICAgICBJbiB0aGlzIHBhdGNoLCB3ZSBhbHNvIGRvIHRoZSBmb2xsb3dpbmc6CisKKyAgICAgICAg
MS4gVXNlIHNwb29sZXJzIGluIG1hbnkgcGxhY2VzIHNvIHRoYXQgd2UgY2FuIGVtaXQgbG9hZCAv
IHN0b3JlIHBhaXJzIGluc3RlYWQgb2YKKyAgICAgICAgICAgc2luZ2xlIGxvYWQgLyBzdG9yZXMu
ICBUaGlzIGhlbHBzIHNocmluayBKSVQgY29kZSBzaWRlLCBhbmQgYWxzbyBwb3RlbnRpYWxseQor
ICAgICAgICAgICBpbXByb3ZlcyBwZXJmb3JtYW5jZS4KKworICAgICAgICAyLiBJbiBERkc6Ok9T
UkV4aXQ6OmNvbXBpbGVFeGl0KCksIHdlIHVzZWQgdG8gcmVjb3ZlciBjb25zdGFudHMgaW50byBh
IHNjcmF0Y2gKKyAgICAgICAgICAgYnVmZmVyLCBhbmQgdGhlbiBsYXRlciwgbG9hZCBmcm9tIHRo
YXQgc2NyYXRjaCBidWZmZXIgdG8gc3RvcmUgaW50byB0aGUKKyAgICAgICAgICAgbmV3IHN0YWNr
IGZyYW1lKHMpLgorCisgICAgICAgICAgIFRoaXMgcGF0Y2ggY2hhbmdlcyBpdCBzbyB0aGF0IHdl
IGRlZmVyIGNvbnN0YW50IHJlY292ZXJ5IHVudGlsIHRoZSBmaW5hbAorICAgICAgICAgICBsb29w
IHdoZXJlIHdlIHN0b3JlIHRoZSByZWNvdmVyZWQgdmFsdWUgZGlyZWN0bHkgaW50byB0aGUgbmV3
IHN0YWNrIGZyYW1lKHMpLgorICAgICAgICAgICBUaGlzIHNhdmVzIHVzIHRoZSB3b3JrIChhbmQg
SklUIGNvZGUgc3BhY2UpIGZvciBzdG9yaW5nIGludG8gYSBzY3JhdGNoIGJ1ZmZlcgorICAgICAg
ICAgICBhbmQgdGhlbiByZWxvYWRpbmcgZnJvbSB0aGUgc2NyYXRjaCBidWZmZXIuCisKKyAgICAg
ICAgICAgVGhlcmUgaXMgb25lIGV4Y2VwdGlvbjogdG1wIHZhbHVlcyB1c2VkIGJ5IGFjdGl2ZSBj
aGVja3BvaW50cy4gIFdlIG5lZWQgdG8gY2FsbAorICAgICAgICAgICBvcGVyYXRpb25NYXRlcmlh
bGl6ZU9TUkV4aXRTaWRlU3RhdGUoKSB0byBtYXRlcmlhbGl6ZSB0aGUgYWN0aXZlIGNoZWNrcG9p
bnQKKyAgICAgICAgICAgc2lkZSBzdGF0ZSBiZWZvcmUgdGhlIGZpbmFsIGxvb3Agd2hlcmUgd2Ug
bm93IHJlY292ZXIgY29uc3RhbnRzLiAgSGVuY2UsIHdlCisgICAgICAgICAgIG5lZWQgdGhlc2Ug
dG1wIHZhbHVlcyByZWNvdmVyZWQgYmVmb3JlIGhhbmQuCisKKyAgICAgICAgICAgU28sIHdlIGNo
ZWNrIHVwZnJvbnQgaWYgd2UgaGF2ZSBhY3RpdmUgY2hlY2twb2ludCBzaWRlIHN0YXRlIHRvIG1h
dGVyaWFsaXplLgorICAgICAgICAgICBJZiBzbywgd2UnbGwgZWFnZXJseSByZWNvdmVyIHRoZSBj
b25zdGFudHMgZm9yIGluaXRpYWxpemluZyB0aG9zZSB0bXBzLgorCisgICAgICAgICAgIFdlIGFs
c28gdXNlIHRoZSBDb3B5U3Bvb2xlciBpbiB0aGUgZmluYWwgbG9vcCB0byBlbWl0IGxvYWQgLyBz
dG9yZSBwYWlycyBmb3IKKyAgICAgICAgICAgZmlsbGluZyBpbiB0aGUgbmV3IHN0YWNrIGZyYW1l
KHMpLgorCisgICAgICAgICAgIE9uZSBtb3JlIHRoaW5nOiBpdCB0dXJucyBvdXQgdGhhdCB0aGUg
dmFzdCBtYWpvcml0eSBvZiBjb25zdGFudHMgdG8gYmUgcmVjb3ZlcmVkCisgICAgICAgICAgIGlz
IHNpbXBseSB0aGUgdW5kZWZpbmVkIHZhbHVlLiAgU28sIGFzIGFuIG9wdGltaXphdGlvbiwgdGhl
IGZpbmFsIGxvb3Aga2VlcHMKKyAgICAgICAgICAgdGhlIHVuZGVmaW5lZCB2YWx1ZSBpbiBhIHJl
Z2lzdGVyLCBhbmQgaGFzIHRoZSBzcG9vbGVyIHN0b3JlIGRpcmVjdGx5IGZyb20KKyAgICAgICAg
ICAgdGhhdCByZWdpc3RlciB3aGVuIGFwcHJvcHJpYXRlLiAgVGhpcyBzYXZlcyBvbiBKSVQgY29k
ZSB0byByZXBlYXRlZGx5IG1hdGVyaWFsaXplCisgICAgICAgICAgIHRoZSB1bmRlZmluZWQgSlNW
YWx1ZSBjb25zdGFudC4KKworICAgICAgICAzLiBJbiByZWlmeUlubGluZWRDYWxsRnJhbWVzKCks
IHJlcGxhY2UgdGhlIHVzZSBvZiBHUFJJbmZvOjpub25BcmdHUFIwIHdpdGgKKyAgICAgICAgICAg
R1BSSW5mbzo6cmVnVDQuICBub25BcmdHUFJzIGFyZSBzb21ldGltZXMgbWFwIHRvIGNlcnRhaW4g
cmVnVFhzIG9uIGNlcnRhaW4gcG9ydHMuCisgICAgICAgICAgIFJlcGxhY2luZyB3aXRoIHJlZ1Q0
IG1ha2VzIGl0IGVhc2llciB0byBlbnN1cmUgdGhhdCB3ZSdyZSBub3QgdHJhc2hpbmcgdGhlCisg
ICAgICAgICAgIHJlZ2lzdGVyIHdoZW4gd2UgdXNlIG1vcmUgdGVtcCByZWdpc3RlcnMuCisKKyAg
ICAgICAgICAgcmVpZnlJbmxpbmVkQ2FsbEZyYW1lcygpIHdpbGwgYmUgdXNpbmcgZW1pdFNhdmVP
ckNvcHlMTEludEJhc2VsaW5lQ2FsbGVlU2F2ZXNGb3IoKQorICAgICAgICAgICBsYXRlciB3aGVy
ZSB3ZSBuZWVkIG1vcmUgdGVtcCByZWdpc3RlcnMuCisKKyAgICAgICAgNC4gTW92ZSB0aGUgZm9s
bG93aW5nIGZ1bmN0aW9ucyB0byBBc3NlbWJseUhlbHBlcnMuY3BwLiAgVGhleSBkb24ndCBuZWVk
IHRvIGJlCisgICAgICAgICAgIGlubGluZSBmdW5jdGlvbnMuICBTcGVlZG9tZXRlcjIgYW5kIEpl
dFN0cmVhbTIgc2hvd3MgdGhhdCBtYWtpbmcgdGhlc2Ugbm9uCisgICAgICAgICAgIGlubGluZSBk
b2VzIG5vdCBodXJ0IHBlcmZvcm1hbmNlOgorCisgICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxw
ZXJzOjplbWl0U2F2ZShjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCYpOworICAgICAgICAgICAg
ICAgIEFzc2VtYmx5SGVscGVyczo6ZW1pdFJlc3RvcmUoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExp
c3QmKTsKKyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OmVtaXRTYXZlQ2FsbGVlU2F2
ZXNGb3IoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QqKTsKKyAgICAgICAgICAgICAgICBBc3Nl
bWJseUhlbHBlcnM6OmVtaXRTYXZlT3JDb3B5Q2FsbGVlU2F2ZXNGb3IoLi4uKTsKKyAgICAgICAg
ICAgICAgICBBc3NlbWJseUhlbHBlcnM6OmVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXNGb3IoY29uc3Qg
UmVnaXN0ZXJBdE9mZnNldExpc3QqKTsKKyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6
OmNvcHlMTEludEJhc2VsaW5lQ2FsbGVlU2F2ZXNGcm9tRnJhbWVPclJlZ2lzdGVyVG9FbnRyeUZy
YW1lQ2FsbGVlU2F2ZXNCdWZmZXIoLi4uKTsKKworICAgICAgICAgICBBbHNvIHJlbmFtZWQgZW1p
dFNhdmVPckNvcHlDYWxsZWVTYXZlc0ZvcigpIHRvIGVtaXRTYXZlT3JDb3B5TExJbnRCYXNlbGlu
ZUNhbGxlZVNhdmVzRm9yKCkKKyAgICAgICAgICAgYmVjYXVzZSBpdCBpcyBvbmx5IHVzZWQgd2l0
aCBiYXNlbGluZSBjb2RlQmxvY2tzLgorCisgICAgICAgIFJlc3VsdHM6CisgICAgICAgIEN1bW11
bGF0aXZlIExpbmtCdWZmZXIgcHJvZmlsZSBzaXplcyBzaHJ1bmsgYnkgfjJNIGluIGFnZ3JlZ2F0
ZToKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UgICAgICAgICAgICAgICAgICAg
ICAgICAgICBuZXcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PT09ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPT09CisgICAgICAgICAgICAgICBCYXNlbGluZUpJVDogODM4MjcwNDgg
KDc5Ljk0MzcwMyBNQikgICAgID0+IDgzNzE4NzM2ICg3OS44NDA0MDggTUIpCisgICAgICAgICAg
ICAgICAgICAgICAgIERGRzogNTY1OTQ4MzYgKDUzLjk3MzA0MiBNQikgICAgID0+IDU2NjAzNTA4
ICg1My45ODEzMTIgTUIpCisgICAgICAgICAgICAgICBJbmxpbmVDYWNoZTogMzM5MjM5MDAgKDMy
LjM1MjM1MiBNQikgICAgID0+IDMzMTgzMTU2ICgzMS42NDU5MjQgTUIpCisgICAgICAgICAgICAg
ICAgICAgICAgIEZUTDogNjc3MDk1NiAoNi40NTcyODcgTUIpICAgICAgID0+IDY1Njg5NjQgKDYu
MjY0NjUyIE1CKQorICAgICAgICAgICAgICAgIERGR09TUkV4aXQ6IDUyMTIwOTYgKDQuOTcwNjQy
IE1CKSAgICAgICA9PiAzNzI4MDg4ICgzLjU1NTM4MiBNQikKKyAgICAgICAgICAgICAgICAgICAg
Q1NTSklUOiA3NDg0MjggKDczMC44ODY3MTkgS0IpICAgICAgPT4gNzQ4NDI4ICg3MzAuODg2NzE5
IEtCKQorICAgICAgICAgICAgICAgIEZUTE9TUkV4aXQ6IDY5MjI3NiAoNjc2LjA1MDc4MSBLQikg
ICAgICA9PiA2NTY4ODQgKDY0MS40ODgyODEgS0IpCisgICAgICAgICAgICAgICAgICAgWWFyckpJ
VDogNDQ1MjgwICg0MzQuODQzNzUwIEtCKSAgICAgID0+IDUxMjk4OCAoNTAwLjk2NDg0NCBLQikK
KyAgICAgICAgICAgICAgICAgIEZUTFRodW5rOiAyMjkwOCAoMjIuMzcxMDk0IEtCKSAgICAgICAg
PT4gMjI1NTYgKDIyLjAyNzM0NCBLQikKKyAgICAgICAgQm91bmRGdW5jdGlvblRodW5rOiA4NDAw
ICg4LjIwMzEyNSBLQikgICAgICAgICAgPT4gMTAwODggKDkuODUxNTYyIEtCKQorICAgICAgICAg
ICAgIEV4dHJhQ1RJVGh1bms6IDY5NTIgKDYuNzg5MDYyIEtCKSAgICAgICAgICA9PiA2ODI0ICg2
LjY2NDA2MiBLQikKKyAgICAgICAgICBTcGVjaWFsaXplZFRodW5rOiA0NTA4ICg0LjQwMjM0NCBL
QikgICAgICAgICAgPT4gNDUwOCAoNC40MDIzNDQgS0IpCisgICAgICAgICAgICAgICAgICAgICBU
aHVuazogMzkxMiAoMy44MjAzMTIgS0IpICAgICAgICAgID0+IDM3ODQgKDMuNjk1MzEyIEtCKQor
ICAgICAgICAgICAgICAgIExMSW50VGh1bms6IDI5MDggKDIuODM5ODQ0IEtCKSAgICAgICAgICA9
PiAyOTA4ICgyLjgzOTg0NCBLQikKKyAgICAgICAgICAgICAgVmlydHVhbFRodW5rOiAxMjQ4ICgx
LjIxODc1MCBLQikgICAgICAgICAgPT4gMTI0OCAoMS4yMTg3NTAgS0IpCisgICAgICAgICAgICAg
ICAgICBERkdUaHVuazogMTA4NCAoMS4wNTg1OTQgS0IpICAgICAgICAgID0+IDQ0NAorICAgICAg
ICAgICAgICAgREZHT1NSRW50cnk6IDIxNiAgICAgICAgICAgICAgICAgICAgICAgICA9PiAxODQK
KyAgICAgICAgICAgICAgICBKdW1wSXNsYW5kOiAwCisgICAgICAgICAgICAgICAgIFdhc21UaHVu
azogMAorICAgICAgICAgICAgICAgICAgICAgIFdhc206IDAKKyAgICAgICAgICAgICBVbmNhdGVn
b3JpemVkOiAwCisgICAgICAgICAgICAgICAgICAgICBUb3RhbDogMTg4MjY2OTU2ICgxNzkuNTQ1
MzYxIE1CKSAgID0+IDE4NTc3MzI5NiAoMTc3LjE2NzIyMSBNQikKKworICAgICAgICBTcGVlZG9t
ZXRlcjIgYW5kIEpldFN0cmVhbTIgcmVzdWx0cyBzaG93cyB0aGF0IHBlcmZvcm1hbmNlIGlzIG5l
dXRyYWwgZm9yIHRoaXMKKyAgICAgICAgcGF0Y2ggKGFzIG1lYXN1cmVkIG9uIGFuIE0xIE1hYyk6
CisKKyAgICAgICAgU3BlZWRvbWV0ZXIyOgorICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAg
ICAgIHwgICAgICAgICAgICAgICBzdWJ0ZXN0ICAgICAgICAgICAgICAgIHwgICAgIG1zICAgICAg
fCAgICAgbXMgICAgICB8ICBiIC8gYSAgIHwgcFZhbHVlIChzaWduaWZpY2FuY2UgdXNpbmcgRmFs
c2UgRGlzY292ZXJ5IFJhdGUpIHwKKyAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICB8
IEVsbS1Ub2RvTVZDICAgICAgICAgICAgICAgICAgICAgICAgICB8MTI5LjAzNzUwMCAgIHwxMjcu
MjEyNTAwICAgfDAuOTg1ODU3ICB8IDAuMDEyNzA2ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8CisgICAgICAgIHwgVnVlSlMtVG9kb01WQyAgICAgICAgICAgICAgICAg
ICAgICAgIHwyOC4zMTI1MDAgICAgfDI3LjUyNTAwMCAgICB8MC45NzIxODUgIHwgMC4yNDAzMTUg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBFbWJl
ckpTLVRvZG9NVkMgICAgICAgICAgICAgICAgICAgICAgfDEzMi41NTAwMDAgICB8MTMyLjAyNTAw
MCAgIHwwLjk5NjAzOSAgfCAwLjUzODAzNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfAorICAgICAgICB8IEZsaWdodC1Ub2RvTVZDICAgICAgICAgICAgICAgICAgICAg
ICB8ODAuNzYyNTAwICAgIHw4MC44NzUwMDAgICAgfDEuMDAxMzkzICB8IDAuOTE0NzQ5ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgQmFja2JvbmVK
Uy1Ub2RvTVZDICAgICAgICAgICAgICAgICAgIHw1MS42Mzc1MDAgICAgfDUxLjE3NTAwMCAgICB8
MC45OTEwNDMgIHwgMC4yODU0MjcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwKKyAgICAgICAgfCBQcmVhY3QtVG9kb01WQyAgICAgICAgICAgICAgICAgICAgICAgfDIx
LjAyNTAwMCAgICB8MjIuMDc1MDAwICAgIHwxLjA0OTk0MSAgfCAwLjIwNjE0MCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IEFuZ3VsYXJKUy1Ub2Rv
TVZDICAgICAgICAgICAgICAgICAgICB8MTQyLjkwMDAwMCAgIHwxNDIuODg3NTAwICAgfDAuOTk5
OTEzICB8IDAuOTkwNjgxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
CisgICAgICAgIHwgSW5mZXJuby1Ub2RvTVZDICAgICAgICAgICAgICAgICAgICAgIHw2OS4zMDAw
MDAgICAgfDY5Ljc3NTAwMCAgICB8MS4wMDY4NTQgIHwgMC41MDUyMDEgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBWYW5pbGxhLUVTMjAxNS1Ub2Rv
TVZDICAgICAgICAgICAgICAgfDcxLjUwMDAwMCAgICB8NzEuMjI1MDAwICAgIHwwLjk5NjE1NCAg
fCAwLjYwODY1MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAg
ICAgICB8IEFuZ3VsYXIyLVR5cGVTY3JpcHQtVG9kb01WQyAgICAgICAgICB8NDMuMjg3NTAwICAg
IHw0My4yNzUwMDAgICAgfDAuOTk5NzExICB8IDAuOTg3OTI2ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgVmFuaWxsYUpTLVRvZG9NVkMgICAgICAg
ICAgICAgICAgICAgIHw1Ny4yMTI1MDAgICAgfDU3LjgxMjUwMCAgICB8MS4wMTA0ODcgIHwgMC4z
MzMzNTcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAg
fCBqUXVlcnktVG9kb01WQyAgICAgICAgICAgICAgICAgICAgICAgfDI3Ni4xNTAwMDAgICB8Mjc2
Ljc3NTAwMCAgIHwxLjAwMjI2MyAgfCAwLjYxNDQwNCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfAorICAgICAgICB8IEVtYmVySlMtRGVidWctVG9kb01WQyAgICAgICAg
ICAgICAgICB8MzUzLjYxMjUwMCAgIHwzNTIuNzYyNTAwICAgfDAuOTk3NTk2ICB8IDAuNTE4ODM2
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgUmVh
Y3QtVG9kb01WQyAgICAgICAgICAgICAgICAgICAgICAgIHw5My42Mzc1MDAgICAgfDkyLjYzNzUw
MCAgICB8MC45ODkzMjEgIHwgMC4wMzYyNzcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwKKyAgICAgICAgfCBSZWFjdC1SZWR1eC1Ub2RvTVZDICAgICAgICAgICAgICAg
ICAgfDE1OC4yMzc1MDAgICB8MTU2LjU4NzUwMCAgIHwwLjk4OTU3MyAgfCAwLjA0MjE1NCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IFZhbmlsbGEt
RVMyMDE1LUJhYmVsLVdlYnBhY2stVG9kb01WQyB8NjguMDUwMDAwICAgIHw2OC4wODc1MDAgICAg
fDEuMDAwNTUxICB8IDAuODk3MTQ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8CisgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgICAgICBhIG1lYW4gPSAyMzYu
MjY5NTAKKyAgICAgICAgYiBtZWFuID0gMjM2LjU3OTY0CisgICAgICAgIHBWYWx1ZSA9IDAuNzgz
MDc4NTkzOAorICAgICAgICAoQmlnZ2VyIG1lYW5zIGFyZSBiZXR0ZXIuKQorICAgICAgICAxLjAw
MSB0aW1lcyBiZXR0ZXIKKyAgICAgICAgUmVzdWx0cyBBUkUgTk9UIHNpZ25pZmljYW50CisKKyAg
ICAgICAgSmV0U3RyZWFtMjoKKyAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICB8ICAgICAgICAgIHN1
YnRlc3QgICAgICAgICAgfCAgICAgcHRzICAgICAgfCAgICAgcHRzICAgICAgfCAgYiAvIGEgICB8
IHBWYWx1ZSAoc2lnbmlmaWNhbmNlIHVzaW5nIEZhbHNlIERpc2NvdmVyeSBSYXRlKSB8CisgICAg
ICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKyAgICAgICAgfCBnYXVzc2lhbi1ibHVyICAgICAgICAgICAgIHw1NDIuNTcw
MDU3ICAgIHw1NDIuNjcxODg1ICAgIHwxLjAwMDE4OCAgfCAwLjk4MjU3MyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IEhhc2hTZXQtd2FzbSAgICAg
ICAgICAgICAgfDU3LjcxMDQ5OCAgICAgfDY0LjQwNjM3MSAgICAgfDEuMTE2MDI1ICB8IDAuNDAx
NDI0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwg
Z2NjLWxvb3BzLXdhc20gICAgICAgICAgICB8NDQuNTE2MDA5ICAgICB8NDQuNDUzNTM1ICAgICB8
MC45OTg1OTcgIHwgMC45NzM2NTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwKKyAgICAgICAgfCBqc29uLXBhcnNlLWluc3BlY3RvciAgICAgIHwyNDEuMjc1MDg1ICAg
IHwyNDAuNzIwNDkxICAgIHwwLjk5NzcwMSAgfCAwLjcwNDczMiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IHByZXBhY2std3RiICAgICAgICAgICAg
ICAgfDYyLjY0MDExNCAgICAgfDYzLjc1NDg3OCAgICAgfDEuMDE3Nzk2ICB8IDAuMjA1ODQwICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgZGF0ZS1m
b3JtYXQteHBhcmItU1AgICAgICB8NDE2Ljk3NjgxNyAgICB8NDQ4LjkyMTQwOSAgICB8MS4wNzY2
MTAgIHwgMC4wNTI5NzcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwK
KyAgICAgICAgfCBXU0wgICAgICAgICAgICAgICAgICAgICAgIHwxLjU1NTI1NyAgICAgIHwxLjU3
MDIzMyAgICAgIHwxLjAwOTYyOSAgfCAwLjQyNzkyNCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfAorICAgICAgICB8IE9mZmxpbmVBc3NlbWJsZXIgICAgICAgICAgfDE3
Ny4wNTIzNTIgICAgfDE3OS43NDY1MTEgICAgfDEuMDE1MjE3ICB8IDAuMTEyMTE0ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgY2RqcyAgICAgICAg
ICAgICAgICAgICAgICB8MTkyLjUxNzU4NiAgICB8MTk0LjU5ODkwNiAgICB8MS4wMTA4MTEgIHwg
MC4wMjU4MDcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAg
ICAgfCBVbmlQb2tlciAgICAgICAgICAgICAgICAgIHw1MTQuMDIzNjk0ICAgIHw1MjYuMTExNTAw
ICAgIHwxLjAyMzUxNiAgfCAwLjI2OTg5MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfAorICAgICAgICB8IGpzb24tc3RyaW5naWZ5LWluc3BlY3RvciAgfDIyNy41ODQ3
MjUgICAgfDIyMy42MTkzOTAgICAgfDAuOTgyNTc2ICB8IDAuMTAyNzE0ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgY3J5cHRvLXNoYTEtU1AgICAg
ICAgICAgICB8OTgwLjcyODc4OCAgICB8OTg0LjE5MjEwNCAgICB8MS4wMDM1MzEgIHwgMC44Mzg2
MTggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBC
YXNpYyAgICAgICAgICAgICAgICAgICAgIHw2ODUuMTQ4NDgzICAgIHw3MTEuNTkwMjQ3ICAgIHwx
LjAzODU5MyAgfCAwLjE0Mjk1MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfAorICAgICAgICB8IGNoYWktd3RiICAgICAgICAgICAgICAgICAgfDEwNi4yNTYzNzYgICAg
fDEwNi41OTAzMTggICAgfDEuMDAzMTQzICB8IDAuODY1ODk0ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgY3J5cHRvLWFlcy1TUCAgICAgICAgICAg
ICB8NzIyLjMwODgyOSAgICB8NzI4LjcwMjMxMCAgICB8MS4wMDg4NTEgIHwgMC40ODY3NjYgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBCYWJ5bG9u
ICAgICAgICAgICAgICAgICAgIHw2NTUuODU3NTYxICAgIHw2NTQuMjA0OTAxICAgIHwwLjk5NzQ4
MCAgfCAwLjkzMTUyMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAor
ICAgICAgICB8IHN0cmluZy11bnBhY2stY29kZS1TUCAgICAgfDQwNy44MzcyNzEgICAgfDQwNS43
MTA3NTIgICAgfDAuOTk0Nzg2ICB8IDAuNzI5MTIyICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8CisgICAgICAgIHwgc3RhbmZvcmQtY3J5cHRvLWFlcyAgICAgICB8NDU2
LjkwNjAyMSAgICB8NDQ5Ljk5Mzg1NiAgICB8MC45ODQ4NzIgIHwgMC4yNzI5OTQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCByYXl0cmFjZSAgICAg
ICAgICAgICAgICAgIHw4ODMuOTExMzM1ICAgIHw5MDIuODg3MjM4ICAgIHwxLjAyMTQ2OCAgfCAw
LjE4OTc4NSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAg
ICB8IG11bHRpLWluc3BlY3Rvci1jb2RlLWxvYWQgfDQwOS45OTczNDcgICAgfDQwNS42NDM2Mzkg
ICAgfDAuOTg5MzgxICB8IDAuNjQ0NDQ3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8CisgICAgICAgIHwgaGFzaC1tYXAgICAgICAgICAgICAgICAgICB8NTkzLjU5MDE2
MCAgICB8NjAxLjU3NjMzMiAgICB8MS4wMTM0NTQgIHwgMC4yNDk0MTQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBzdGFuZm9yZC1jcnlwdG8tcGJr
ZGYyICAgIHw3MjIuMTc4NjM4ICAgIHw3MjguMjgzNTMyICAgIHwxLjAwODQ1MyAgfCAwLjY2MTE5
NSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IGNv
ZmZlZXNjcmlwdC13dGIgICAgICAgICAgfDQyLjM5MzU0NCAgICAgfDQxLjg2OTU0NSAgICAgfDAu
OTg3NjQwICB8IDAuMTk3NDQxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8CisgICAgICAgIHwgQm94MkQgICAgICAgICAgICAgICAgICAgICB8NDUyLjAzNDY4NSAgICB8
NDU0LjEwNDg2OCAgICB8MS4wMDQ1ODAgIHwgMC41MzUzNDIgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCByaWNoYXJkcy13YXNtICAgICAgICAgICAg
IHwxNDAuODczNjg4ICAgIHwxNDguMzk0MDUwICAgIHwxLjA1MzM4NCAgfCAwLjMwMzY1MSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IGxlYmFiLXd0
YiAgICAgICAgICAgICAgICAgfDYxLjY3MTMxOCAgICAgfDYyLjExOTQwMyAgICAgfDEuMDA3MjY2
ICB8IDAuNjIwOTk4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cisg
ICAgICAgIHwgdHNmLXdhc20gICAgICAgICAgICAgICAgICB8MTA4LjU5Mjc5NCAgICB8MTE5LjQ5
ODM5OCAgICB8MS4xMDA0MjcgIHwgMC41MDQ3MTAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwKKyAgICAgICAgfCBiYXNlNjQtU1AgICAgICAgICAgICAgICAgIHw2Mjku
NzQ0NjQzICAgIHw2MDMuNDI1NTY1ICAgIHwwLjk1ODIwNyAgfCAwLjA0OTk5NyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IG5hdmllci1zdG9rZXMg
ICAgICAgICAgICAgfDc0MC41ODg1MjMgICAgfDczOS45NTE2NjIgICAgfDAuOTk5MTQwICB8IDAu
ODcxNDQ1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAg
IHwganNoaW50LXd0YiAgICAgICAgICAgICAgICB8NTEuOTM4MzU5ICAgICB8NTIuNjUxMTA0ICAg
ICB8MS4wMTM3MjMgIHwgMC4yMTcxMzcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwKKyAgICAgICAgfCByZWdleC1kbmEtU1AgICAgICAgICAgICAgIHw0NTkuMjUxMTQ4
ICAgIHw0NjMuNDkyNDg5ICAgIHwxLjAwOTIzNSAgfCAwLjM3MTg5MSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IGFzeW5jLWZzICAgICAgICAgICAg
ICAgICAgfDIzNS44NTM4MjAgICAgfDIzNi4wMzExODkgICAgfDEuMDAwNzUyICB8IDAuOTM4NDU5
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgZmly
c3QtaW5zcGVjdG9yLWNvZGUtbG9hZCB8Mjc1LjI5ODMyNSAgICB8Mjc0LjE3MjEyNSAgICB8MC45
OTU5MDkgIHwgMC42MjM0MDMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwKKyAgICAgICAgfCBzZWdtZW50YXRpb24gICAgICAgICAgICAgIHw0NC4wMDI4NDIgICAgIHw0
My40NDU5NjAgICAgIHwwLjk4NzM0NCAgfCAwLjIwNzEzNCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IHR5cGVzY3JpcHQgICAgICAgICAgICAgICAg
fDI2LjM2MDE2MSAgICAgfDI2LjQ1ODgyMCAgICAgfDEuMDAzNzQzICB8IDAuNjA5OTQyICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgb2N0YW5lLWNv
ZGUtbG9hZCAgICAgICAgICB8MTEyNi43NDkwMzYgICB8MTA4Ny4xMzIwMjQgICB8MC45NjQ4NDAg
IHwgMC41MjQxNzEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAg
ICAgICAgfCBmbG9hdC1tbS5jICAgICAgICAgICAgICAgIHwxNi42OTE5MzUgICAgIHwxNi43MjEz
NTQgICAgIHwxLjAwMTc2MiAgfCAwLjE5NDQyNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfAorICAgICAgICB8IHF1aWNrc29ydC13YXNtICAgICAgICAgICAgfDQ2MS42
MzAwOTEgICAgfDQ1MC4xNjExMjcgICAgfDAuOTc1MTU2ICB8IDAuMzcxMzk0ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgQWlyICAgICAgICAgICAg
ICAgICAgICAgICB8MzkyLjQ0MjM3NSAgICB8NDEyLjIwMTgxMCAgICB8MS4wNTAzNTAgIHwgMC4w
NDY4ODcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAg
fCBzcGxheSAgICAgICAgICAgICAgICAgICAgIHw1MTAuMTExODg2ICAgIHw0NzUuMTMxNjU3ICAg
IHwwLjkzMTQyNiAgfCAwLjAyNDczMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfAorICAgICAgICB8IGFpLWFzdGFyICAgICAgICAgICAgICAgICAgfDYwNy45NjY5NzQg
ICAgfDYyNi41NzMxODEgICAgfDEuMDMwNjA0ICB8IDAuNDY4NzExICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgYWNvcm4td3RiICAgICAgICAgICAg
ICAgICB8NjcuNTEwNzY2ICAgICB8NjguMTQzOTU2ICAgICB8MS4wMDkzNzkgIHwgMC40ODE2NjMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBnYmVt
dSAgICAgICAgICAgICAgICAgICAgIHwxNDQuMTMzODQyICAgIHwxNDUuNjIwMzA0ICAgIHwxLjAx
MDMxMyAgfCAwLjgwMjE1NCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fAorICAgICAgICB8IHJpY2hhcmRzICAgICAgICAgICAgICAgICAgfDk2My40NzUwNzggICAgfDk0
Ni42NTg4NzkgICAgfDAuOTgyNTQ2ICB8IDAuMjMxMTg5ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgM2QtY3ViZS1TUCAgICAgICAgICAgICAgICB8
NTQ5LjQyNjc4NCAgICB8NTUwLjQ3OTE1NCAgICB8MS4wMDE5MTUgIHwgMC44MzEzMDcgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBlc3ByZWUtd3Ri
ICAgICAgICAgICAgICAgIHw2OC43MDc0ODMgICAgIHw3My43NjIyMDIgICAgIHwxLjA3MzU2OSAg
fCAwLjAzMzYwMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAg
ICAgICB8IGJvbWItd29ya2VycyAgICAgICAgICAgICAgfDk2Ljg4MjU5NiAgICAgfDk2LjExNjEy
MSAgICAgfDAuOTkyMDg5ICB8IDAuNjg3OTUyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8CisgICAgICAgIHwgdGFnY2xvdWQtU1AgICAgICAgICAgICAgICB8MzA5Ljg4
ODc2NyAgICB8MzAzLjUzODUxMSAgICB8MC45Nzk1MDggIHwgMC4xODc3NjggICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBtYW5kcmVlbCAgICAgICAg
ICAgICAgICAgIHwxMzMuNjY3MDMxICAgIHwxMzUuMDA5OTI5ICAgIHwxLjAxMDA0NyAgfCAwLjA3
NTIzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8
IDNkLXJheXRyYWNlLVNQICAgICAgICAgICAgfDQ5MS45Njc2NDkgICAgfDQ5Mi41Mjg5OTIgICAg
fDEuMDAxMTQxICB8IDAuOTU3ODQyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8CisgICAgICAgIHwgZGVsdGEtYmx1ZSAgICAgICAgICAgICAgICB8MTA2Ni43MTgzMTIg
ICB8MTA4MC4yMzA3NzIgICB8MS4wMTI2NjcgIHwgMC41NDkzODIgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBNTCAgICAgICAgICAgICAgICAgICAg
ICAgIHwxMzkuNjE3MjkzICAgIHwxNDAuMDg4NjMwICAgIHwxLjAwMzM3NiAgfCAwLjY2MTY1MSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IHJlZ2V4
cCAgICAgICAgICAgICAgICAgICAgfDM1MS43NzM5NTYgICAgfDM1MS4wNzU5MzUgICAgfDAuOTk4
MDE2ICB8IDAuNzY5MjUwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
CisgICAgICAgIHwgY3J5cHRvICAgICAgICAgICAgICAgICAgICB8MTUxMC40NzQ2NjMgICB8MTUx
OS4yMTg4NDIgICB8MS4wMDU3ODkgIHwgMC42Mzg0MjAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBjcnlwdG8tbWQ1LVNQICAgICAgICAgICAgIHw3
OTUuNDQ3ODk5ICAgIHw3NzQuMDgyNDkzICAgIHwwLjk3MzE0MCAgfCAwLjA3OTcyOCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IGVhcmxleS1ib3ll
ciAgICAgICAgICAgICAgfDgxMi41NzQ1NDUgICAgfDg3MC42NzgzNzIgICAgfDEuMDcxNTA2ICB8
IDAuMDQ0MDgxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAg
ICAgIHwgb2N0YW5lLXpsaWIgICAgICAgICAgICAgICB8MjUuMTYyNDcwICAgICB8MjUuNjYwMjYx
ICAgICB8MS4wMTk3ODMgIHwgMC41NTQ1OTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwKKyAgICAgICAgfCBkYXRlLWZvcm1hdC10b2Z0ZS1TUCAgICAgIHwzOTUuMjk2
MTM1ICAgIHwzOTguMDA4OTkyICAgIHwxLjAwNjg2MyAgfCAwLjY1MDQ3NSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IG4tYm9keS1TUCAgICAgICAg
ICAgICAgICAgfDExNjUuMzg2NjExICAgfDExNTAuNTI1MTEwICAgfDAuOTg3MjQ4ICB8IDAuMjI3
OTA4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwg
cGRmanMgICAgICAgICAgICAgICAgICAgICB8MTg5LjA2MDI1MiAgICB8MTkxLjAxNTYyOCAgICB8
MS4wMTAzNDMgIHwgMC42MzM3NzcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwKKyAgICAgICAgfCBGbGlnaHRQbGFubmVyICAgICAgICAgICAgIHw5MDguNDI2MTkyICAg
IHw5MDMuNjM2NjQyICAgIHwwLjk5NDcyOCAgfCAwLjgzODgyMSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IHVnbGlmeS1qcy13dGIgICAgICAgICAg
ICAgfDM0LjAyOTM5OSAgICAgfDM0LjE2NDM0MiAgICAgfDEuMDAzOTY1ICB8IDAuNjU1NjUyICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgYmFieWxv
bi13dGIgICAgICAgICAgICAgICB8ODEuMzI5ODY5ICAgICB8ODAuODU1NjgwICAgICB8MC45OTQx
NzAgIHwgMC44NTQzOTMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwK
KyAgICAgICAgfCBzdGFuZm9yZC1jcnlwdG8tc2hhMjU2ICAgIHw4MjYuODUwNTMzICAgIHw4Mzgu
NDk0MTY0ICAgIHwxLjAxNDA4MiAgfCAwLjU3OTYzNiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfAorICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAgICAgYSBtZWFuID0gMjM3
LjkxMDg0CisgICAgICAgIGIgbWVhbiA9IDIzOS45MjY3MAorICAgICAgICBwVmFsdWUgPSAwLjA2
NTc3MTA4OTcKKyAgICAgICAgKEJpZ2dlciBtZWFucyBhcmUgYmV0dGVyLikKKyAgICAgICAgMS4w
MDggdGltZXMgYmV0dGVyCisgICAgICAgIFJlc3VsdHMgQVJFIE5PVCBzaWduaWZpY2FudAorCisg
ICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIu
aDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OnB1c2hUb1NhdmVCeXRlT2Zmc2V0KToK
KyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpwdXNoVG9TYXZlQnl0ZU9mZnNldCk6CisgICAgICAgICog
ZGZnL0RGR09TUkV4aXQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXQ6OmNvbXBpbGVF
eGl0KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpyZWlmeUlubGluZWRDYWxsRnJhbWVzKToKKyAgICAgICAgKiBkZmcvREZH
VGh1bmtzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpvc3JFeGl0R2VuZXJhdGlvblRodW5rR2Vu
ZXJhdG9yKToKKyAgICAgICAgKiBmdGwvRlRMU2F2ZVJlc3RvcmUuY3BwOgorICAgICAgICAoSlND
OjpGVEw6OnNhdmVBbGxSZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpGVEw6OnJlc3RvcmVBbGxS
ZWdpc3RlcnMpOgorICAgICAgICAqIGZ0bC9GVExTYXZlUmVzdG9yZS5oOgorICAgICAgICAqIGZ0
bC9GVExUaHVua3MuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmdlbmVyaWNHZW5lcmF0aW9uVGh1
bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpGVEw6OnNsb3dQYXRoQ2FsbFRodW5rR2VuZXJh
dG9yKToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6
QXNzZW1ibHlIZWxwZXJzOjpyZXN0b3JlQ2FsbGVlU2F2ZXNGcm9tRW50cnlGcmFtZUNhbGxlZVNh
dmVzQnVmZmVyKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpjb3B5Q2FsbGVlU2F2
ZXNUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlckltcGwpOgorICAgICAgICAoSlNDOjpBc3Nl
bWJseUhlbHBlcnM6OmVtaXRTYXZlKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpl
bWl0UmVzdG9yZSk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdFNhdmVDYWxs
ZWVTYXZlc0Zvcik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdFJlc3RvcmVD
YWxsZWVTYXZlc0Zvcik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6Y29weUxMSW50
QmFzZWxpbmVDYWxsZWVTYXZlc0Zyb21GcmFtZU9yUmVnaXN0ZXJUb0VudHJ5RnJhbWVDYWxsZWVT
YXZlc0J1ZmZlcik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdFNhdmVPckNv
cHlMTEludEJhc2VsaW5lQ2FsbGVlU2F2ZXNGb3IpOgorICAgICAgICAqIGppdC9Bc3NlbWJseUhl
bHBlcnMuaDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpjb3B5TExJbnRCYXNlbGlu
ZUNhbGxlZVNhdmVzRnJvbUZyYW1lT3JSZWdpc3RlclRvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVm
ZmVyKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0U2F2ZSk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdFJlc3RvcmUpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRTYXZlT3JDb3B5Q2FsbGVlU2F2ZXNG
b3IpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnNTcG9vbGVycy5oOiBB
ZGRlZC4KKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpTcG9vbGVyOjpTcG9vbGVyKToK
KyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpTcG9vbGVyOjpoYW5kbGVHUFIpOgorICAg
ICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OlNwb29sZXI6OmZsdXNoR1BSKToKKyAgICAgICAg
KEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpTcG9vbGVyOjpoYW5kbGVGUFIpOgorICAgICAgICAoSlND
OjpBc3NlbWJseUhlbHBlcnM6OlNwb29sZXI6OmZsdXNoRlBSKToKKyAgICAgICAgKEpTQzo6QXNz
ZW1ibHlIZWxwZXJzOjpTcG9vbGVyOjpvcCk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVy
czo6TG9hZFJlZ1Nwb29sZXI6OkxvYWRSZWdTcG9vbGVyKToKKyAgICAgICAgKEpTQzo6QXNzZW1i
bHlIZWxwZXJzOjpMb2FkUmVnU3Bvb2xlcjo6bG9hZEdQUik6CisgICAgICAgIChKU0M6OkFzc2Vt
Ymx5SGVscGVyczo6TG9hZFJlZ1Nwb29sZXI6OmZsdXNoR1BSKToKKyAgICAgICAgKEpTQzo6QXNz
ZW1ibHlIZWxwZXJzOjpMb2FkUmVnU3Bvb2xlcjo6bG9hZEZQUik6CisgICAgICAgIChKU0M6OkFz
c2VtYmx5SGVscGVyczo6TG9hZFJlZ1Nwb29sZXI6OmZsdXNoRlBSKToKKyAgICAgICAgKEpTQzo6
QXNzZW1ibHlIZWxwZXJzOjpMb2FkUmVnU3Bvb2xlcjo6aGFuZGxlUGFpcik6CisgICAgICAgIChK
U0M6OkFzc2VtYmx5SGVscGVyczo6TG9hZFJlZ1Nwb29sZXI6OmhhbmRsZVNpbmdsZSk6CisgICAg
ICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6U3RvcmVSZWdTcG9vbGVyOjpTdG9yZVJlZ1Nwb29s
ZXIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OlN0b3JlUmVnU3Bvb2xlcjo6c3Rv
cmVHUFIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OlN0b3JlUmVnU3Bvb2xlcjo6
Zmx1c2hHUFIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OlN0b3JlUmVnU3Bvb2xl
cjo6c3RvcmVGUFIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OlN0b3JlUmVnU3Bv
b2xlcjo6Zmx1c2hGUFIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OlN0b3JlUmVn
U3Bvb2xlcjo6aGFuZGxlUGFpcik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6U3Rv
cmVSZWdTcG9vbGVyOjpoYW5kbGVTaW5nbGUpOgorICAgICAgICAoSlNDOjpSZWdEaXNwYXRjaDxH
UFJSZWc+OjpnZXQpOgorICAgICAgICAoSlNDOjpSZWdEaXNwYXRjaDxHUFJSZWc+Ojp0ZW1wMSk6
CisgICAgICAgIChKU0M6OlJlZ0Rpc3BhdGNoPEdQUlJlZz46OnRlbXAyKToKKyAgICAgICAgKEpT
Qzo6UmVnRGlzcGF0Y2g8R1BSUmVnPjo6cmVnVG9TdG9yZSk6CisgICAgICAgIChKU0M6OlJlZ0Rp
c3BhdGNoPEdQUlJlZz46OmludmFsaWQpOgorICAgICAgICAoSlNDOjpSZWdEaXNwYXRjaDxHUFJS
ZWc+OjpyZWdTaXplKToKKyAgICAgICAgKEpTQzo6UmVnRGlzcGF0Y2g8R1BSUmVnPjo6aXNWYWxp
ZExvYWRQYWlySW1tKToKKyAgICAgICAgKEpTQzo6UmVnRGlzcGF0Y2g8R1BSUmVnPjo6aXNWYWxp
ZFN0b3JlUGFpckltbSk6CisgICAgICAgIChKU0M6OlJlZ0Rpc3BhdGNoPEZQUlJlZz46OmdldCk6
CisgICAgICAgIChKU0M6OlJlZ0Rpc3BhdGNoPEZQUlJlZz46OnRlbXAxKToKKyAgICAgICAgKEpT
Qzo6UmVnRGlzcGF0Y2g8RlBSUmVnPjo6dGVtcDIpOgorICAgICAgICAoSlNDOjpSZWdEaXNwYXRj
aDxGUFJSZWc+OjpyZWdUb1N0b3JlKToKKyAgICAgICAgKEpTQzo6UmVnRGlzcGF0Y2g8RlBSUmVn
Pjo6aW52YWxpZCk6CisgICAgICAgIChKU0M6OlJlZ0Rpc3BhdGNoPEZQUlJlZz46OnJlZ1NpemUp
OgorICAgICAgICAoSlNDOjpSZWdEaXNwYXRjaDxGUFJSZWc+Ojppc1ZhbGlkTG9hZFBhaXJJbW0p
OgorICAgICAgICAoSlNDOjpSZWdEaXNwYXRjaDxGUFJSZWc+Ojppc1ZhbGlkU3RvcmVQYWlySW1t
KToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpDb3B5U3Bvb2xlcjo6U291cmNlOjpn
ZXRSZWcpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OkNvcHlTcG9vbGVyOjpDb3B5
U3Bvb2xlcik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6Q29weVNwb29sZXI6OnRl
bXAxIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpDb3B5U3Bvb2xlcjo6
dGVtcDIgY29uc3QpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OkNvcHlTcG9vbGVy
OjpyZWdUb1N0b3JlKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpDb3B5U3Bvb2xl
cjo6aW52YWxpZCk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6Q29weVNwb29sZXI6
OnJlZ1NpemUpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OkNvcHlTcG9vbGVyOjpp
c1ZhbGlkTG9hZFBhaXJJbW0pOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OkNvcHlT
cG9vbGVyOjppc1ZhbGlkU3RvcmVQYWlySW1tKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxw
ZXJzOjpDb3B5U3Bvb2xlcjo6bG9hZCk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6
Q29weVNwb29sZXI6Om1vdmUpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OkNvcHlT
cG9vbGVyOjpjb3B5KToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpDb3B5U3Bvb2xl
cjo6c3RvcmUpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OkNvcHlTcG9vbGVyOjpm
bHVzaCk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6Q29weVNwb29sZXI6OmxvYWRH
UFIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OkNvcHlTcG9vbGVyOjpjb3B5R1BS
KToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpDb3B5U3Bvb2xlcjo6bW92ZUNvbnN0
YW50KToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpDb3B5U3Bvb2xlcjo6c3RvcmVH
UFIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OkNvcHlTcG9vbGVyOjpmbHVzaEdQ
Uik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6Q29weVNwb29sZXI6OmxvYWRGUFIp
OgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OkNvcHlTcG9vbGVyOjpjb3B5RlBSKToK
KyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpDb3B5U3Bvb2xlcjo6c3RvcmVGUFIpOgor
ICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OkNvcHlTcG9vbGVyOjpmbHVzaEZQUik6Cisg
ICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6Q29weVNwb29sZXI6OmxvYWRQYWlyKToKKyAg
ICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpDb3B5U3Bvb2xlcjo6c3RvcmVQYWlyKToKKyAg
ICAgICAgKiBqaXQvU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
U2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpwcmVzZXJ2ZVJldXNlZFJlZ2lzdGVyc0J5UHVzaGlu
Zyk6CisgICAgICAgIChKU0M6OlNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6cmVzdG9yZVJldXNl
ZFJlZ2lzdGVyc0J5UG9wcGluZyk6CisgICAgICAgIChKU0M6OlNjcmF0Y2hSZWdpc3RlckFsbG9j
YXRvcjo6cHJlc2VydmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbCk6CisgICAgICAgIChKU0M6OlNj
cmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6cmVzdG9yZVJlZ2lzdGVyc0Zyb21TdGFja0ZvckNhbGwp
OgorICAgICAgICAqIGppdC9TY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuaDoKKyAgICAgICAgKiB3
YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2Vu
ZXJhdG9yOjphZGRSZXR1cm4pOgorICAgICAgICAqIHdhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3Bw
OgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjphZGRSZXR1cm4pOgorCiAyMDIx
LTA2LTE1ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAgICAgICAg
IFNob3VsZG4ndCBkcmFpbiB0aGUgbWljcm8gdGFzayBxdWV1ZSB3aGVuIGNhbGxpbmcgb3V0IHRv
IE9iakMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDI3
ODg4NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtNzU3LDYgKzc1Nyw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1F
V09SS19IRUEKICAgICBpbnRlcnByZXRlci9WTUVudHJ5UmVjb3JkLmgKIAogICAgIGppdC9Bc3Nl
bWJseUhlbHBlcnMuaAorICAgIGppdC9Bc3NlbWJseUhlbHBlcnNTcG9vbGVycy5oCiAgICAgaml0
L0NDYWxsSGVscGVycy5oCiAgICAgaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuaAogICAgIGppdC9G
UFJJbmZvLmgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNzg4
ODYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTE0OCw2ICsxMTQ4LDcgQEAKIAkJNjVC
ODM5MkUxQkFDQUQzNjAwNDRFODI0IC8qIENhY2hlZFJlY292ZXJ5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUI4MzkyQzFCQUNBOTJBMDA0NEU4MjQg
LyogQ2FjaGVkUmVjb3ZlcnkuaCAqLzsgfTsKIAkJNkEzOENGQUExRTMyQjVBQjAwNjAyMDZGIC8q
IEFzeW5jU3RhY2tUcmFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNkEzOENGQTgxRTMyQjU4QjAwNjAyMDZGIC8qIEFzeW5jU3RhY2tUcmFjZS5oICov
OyB9OwogCQk2QUQyQ0I0RDE5QjkxNDAxMDAwNjU3MTkgLyogRGVidWdnZXJFdmFsRW5hYmxlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkFEMkNCNEMx
OUI5MTQwMTAwMDY1NzE5IC8qIERlYnVnZ2VyRXZhbEVuYWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk2Qjc2N0U3QjI2NzkxRjI3MDAxN0Y4
RDEgLyogQXNzZW1ibHlIZWxwZXJzU3Bvb2xlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZCNzY3RTdBMjY3OTFGMjcwMDE3RjhEMSAvKiBBc3NlbWJs
eUhlbHBlcnNTcG9vbGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTZCQ0NFQzA0MjVEMUZBMjcwMDBGMzkxRCAvKiBWZXJpZmllclNsb3RWaXNp
dG9ySW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNkJDQ0VDMDMyNUQxRkEyNzAwMEYzOTFEIC8qIFZlcmlmaWVyU2xvdFZpc2l0b3JJbmxpbmVz
LmggKi87IH07CiAJCTcwMTEzRDRDMUE4REIwOTMwMDM4NDhDNCAvKiBJdGVyYXRvck9wZXJhdGlv
bnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwMTEz
RDRBMUE4REIwOTMwMDM4NDhDNCAvKiBJdGVyYXRvck9wZXJhdGlvbnMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MDEzQ0E4QzFCNDkxQTk0MDBD
QUU2MTMgLyogSlNNaWNyb3Rhc2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDcwMTNDQThBMUI0OTFBOTQwMENBRTYxMyAvKiBKU01pY3JvdGFzay5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zOTk3LDYg
KzM5OTgsNyBAQAogCQk2QTM4Q0ZBODFFMzJCNThCMDA2MDIwNkYgLyogQXN5bmNTdGFja1RyYWNl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFzeW5jU3RhY2tUcmFjZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2QUQyQ0I0QzE5QjkxNDAxMDAwNjU3MTkgLyog
RGVidWdnZXJFdmFsRW5hYmxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
ZWJ1Z2dlckV2YWxFbmFibGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZCNzMx
Q0MwMjY0N0E4MzcwMDE0NjQ2RiAvKiBTbG93UGF0aENhbGwuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gU2xvd1BhdGhDYWxsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkI3NjdF
N0EyNjc5MUYyNzAwMTdGOEQxIC8qIEFzc2VtYmx5SGVscGVyc1Nwb29sZXJzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFzc2VtYmx5SGVscGVyc1Nwb29sZXJzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZCQTkzQzk1OTA0ODRDNUJBRDkzMTZFQSAvKiBKU1Nj
cmlwdEZldGNoZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTY3JpcHRG
ZXRjaGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZCQ0NFQzAzMjVEMUZBMjcw
MDBGMzkxRCAvKiBWZXJpZmllclNsb3RWaXNpdG9ySW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBWZXJpZmllclNsb3RWaXNpdG9ySW5saW5lcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3MDExM0Q0OTFBOERCMDkzMDAzODQ4QzQgLyogSXRlcmF0b3JP
cGVyYXRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEl0ZXJh
dG9yT3BlcmF0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MTk3LDYg
KzYxOTksNyBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMEYyNEU1M0IxN0VBOUY1OTAwQUJCMjE3
IC8qIEFzc2VtYmx5SGVscGVycy5jcHAgKi8sCiAJCQkJMEYyNEU1M0MxN0VBOUY1OTAwQUJCMjE3
IC8qIEFzc2VtYmx5SGVscGVycy5oICovLAorCQkJCTZCNzY3RTdBMjY3OTFGMjcwMDE3RjhEMSAv
KiBBc3NlbWJseUhlbHBlcnNTcG9vbGVycy5oICovLAogCQkJCTcyMzk5OEY2MjY1REJDREIwMDU3
ODY3RiAvKiBCYXNlbGluZUpJVFBsYW4uY3BwICovLAogCQkJCTcyMzk5OEY1MjY1REJDREIwMDU3
ODY3RiAvKiBCYXNlbGluZUpJVFBsYW4uaCAqLywKIAkJCQkwRjY0QjI2RjFBNzg0QkFGMDA2RTRF
NjYgLyogQmluYXJ5U3dpdGNoLmNwcCAqLywKQEAgLTkxNTEsNiArOTE1NCw3IEBACiAJCQkJRkU5
MTJCNTEyNTMxMUFEMTAwRkFCRERGIC8qIEFic3RyYWN0U2xvdFZpc2l0b3JJbmxpbmVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1MzRFMDM0RTFFNEQ0QjE2MDAyMTNGNjQgLyogQWNjZXNzQ2FzZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRTNCRkQwQkMxREFGODA4RTAwNjVERUEyIC8qIEFjY2Vzc0Nh
c2VTbmlwcGV0UGFyYW1zLmggaW4gSGVhZGVycyAqLywKKwkJCQk2Qjc2N0U3QjI2NzkxRjI3MDAx
N0Y4RDEgLyogQXNzZW1ibHlIZWxwZXJzU3Bvb2xlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUz
NzBCNEY2MUJGMjYyMDUwMDVDNDBGQyAvKiBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdh
dGNocG9pbnRCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MTY4QkQ4NzI0NDdCQTRFMDA4MEZG
QjQgLyogQWdncmVnYXRlRXJyb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTkxOEUxNUMzMjQ0N0Iy
MjcwMDQ0N0E1NiAvKiBBZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyLmgJKHJldmlzaW9uIDI3ODg4NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzM3LDcgKzMzNyw3IEBAIHB1
YmxpYzoKICAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihzaXplb2YoZG91YmxlKSksIHN0YWNr
UG9pbnRlclJlZ2lzdGVyKTsKICAgICB9CiAgICAgCi0gICAgc3RhdGljIHB0cmRpZmZfdCBwdXNo
VG9TYXZlQnl0ZU9mZnNldCgpIHsgcmV0dXJuIHNpemVvZih2b2lkKik7IH0KKyAgICBzdGF0aWMg
Y29uc3RleHByIHB0cmRpZmZfdCBwdXNoVG9TYXZlQnl0ZU9mZnNldCgpIHsgcmV0dXJuIHNpemVv
Zih2b2lkKik7IH0KICNlbmRpZiAvLyAhQ1BVKEFSTTY0KQogCiAjaWYgQ1BVKFg4Nl82NCkgfHwg
Q1BVKEFSTTY0KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckFSTTY0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgJKHJldmlzaW9uIDI3ODg4NikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNTA0LDcgKzI1MDQsNyBAQCBwdWJsaWM6CiAgICAgICAgIHN0b3JlRG91YmxlKHNy
Yywgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgIH0KIAotICAgIHN0YXRpYyBwdHJkaWZmX3Qg
cHVzaFRvU2F2ZUJ5dGVPZmZzZXQoKSB7IHJldHVybiAxNjsgfQorICAgIHN0YXRpYyBjb25zdGV4
cHIgcHRyZGlmZl90IHB1c2hUb1NhdmVCeXRlT2Zmc2V0KCkgeyByZXR1cm4gMTY7IH0KIAogICAg
IC8vIFJlZ2lzdGVyIG1vdmUgb3BlcmF0aW9uczoKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPU1JFeGl0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09TUkV4aXQuY3BwCShyZXZpc2lvbiAyNzg4ODYpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3
IEBACiAKICNpZiBFTkFCTEUoREZHX0pJVCkKIAotI2luY2x1ZGUgIkFzc2VtYmx5SGVscGVycy5o
IgorI2luY2x1ZGUgIkFzc2VtYmx5SGVscGVyc1Nwb29sZXJzLmgiCiAjaW5jbHVkZSAiQnl0ZWNv
ZGVTdHJ1Y3RzLmgiCiAjaW5jbHVkZSAiQ2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGUuaCIKICNp
bmNsdWRlICJERkdHcmFwaC5oIgpAQCAtNTYyLDEzICs1NjIsMTkgQEAgdm9pZCBPU1JFeGl0Ojpj
b21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIAogICAgIC8vIGRvIHRoaXMgZXZlbiBmb3Igc3RhdGUg
dGhhdCdzIGFscmVhZHkgaW4gdGhlIHJpZ2h0IHBsYWNlIG9uIHRoZSBzdGFjay4KICAgICAvLyBJ
dCBtYWtlcyB0aGluZ3Mgc2ltcGxlciBsYXRlci4KIAorICAgIGJvb2wgaW5saW5lU3RhY2tDb250
YWluc0FjdGl2ZUNoZWNrcG9pbnQgPSBleGl0Lm1fY29kZU9yaWdpbi5pbmxpbmVTdGFja0NvbnRh
aW5zQWN0aXZlQ2hlY2twb2ludCgpOworICAgIHNpemVfdCBmaXJzdFRtcFRvUmVzdG9yZUVhcmx5
ID0gb3BlcmFuZHMuc2l6ZSgpIC0gb3BlcmFuZHMubnVtYmVyT2ZUbXBzKCk7CisgICAgaWYgKCFp
bmxpbmVTdGFja0NvbnRhaW5zQWN0aXZlQ2hlY2twb2ludCkKKyAgICAgICAgZmlyc3RUbXBUb1Jl
c3RvcmVFYXJseSA9IG9wZXJhbmRzLnNpemUoKTsgLy8gRG9uJ3QgZWFnZXJseSByZXN0b3JlLgor
CiAgICAgLy8gVGhlIHRhZyByZWdpc3RlcnMgYXJlIG5lZWRlZCB0byBtYXRlcmlhbGl6ZSByZWNv
dmVyaWVzIGJlbG93LgogICAgIGppdC5lbWl0TWF0ZXJpYWxpemVUYWdDaGVja1JlZ2lzdGVycygp
OwogCiAgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG9wZXJhbmRzLnNpemUoKTsg
KytpbmRleCkgewogICAgICAgICBjb25zdCBWYWx1ZVJlY292ZXJ5JiByZWNvdmVyeSA9IG9wZXJh
bmRzW2luZGV4XTsKIAotICAgICAgICBzd2l0Y2ggKHJlY292ZXJ5LnRlY2huaXF1ZSgpKSB7Cisg
ICAgICAgIGF1dG8gY3VycmVudFRlY2huaXF1ZSA9IHJlY292ZXJ5LnRlY2huaXF1ZSgpOworICAg
ICAgICBzd2l0Y2ggKGN1cnJlbnRUZWNobmlxdWUpIHsKICAgICAgICAgY2FzZSBEaXNwbGFjZWRJ
bkpTU3RhY2s6CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgY2FzZSBDZWxsRGlzcGxhY2Vk
SW5KU1N0YWNrOgpAQCAtNTk0LDkgKzYwMCwxMiBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVFeGl0
KENDYWxsSGVscGVycyYgCiAKICAgICAgICAgY2FzZSBDb25zdGFudDogewogI2lmIFVTRShKU1ZB
TFVFNjQpCi0gICAgICAgICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW02
NChKU1ZhbHVlOjplbmNvZGUocmVjb3ZlcnkuY29uc3RhbnQoKSkpLCBHUFJJbmZvOjpyZWdUMCk7
Ci0gICAgICAgICAgICBqaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwgc2NyYXRjaCArIGluZGV4
KTsKLSNlbHNlCisgICAgICAgICAgICBpZiAoaW5kZXggPj0gZmlyc3RUbXBUb1Jlc3RvcmVFYXJs
eSkgeworICAgICAgICAgICAgICAgIEFTU0VSVChvcGVyYW5kcy5vcGVyYW5kRm9ySW5kZXgoaW5k
ZXgpLmlzVG1wKCkpOworICAgICAgICAgICAgICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6
VHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShyZWNvdmVyeS5jb25zdGFudCgpKSksIEdQUklu
Zm86OnJlZ1QwKTsKKyAgICAgICAgICAgICAgICBqaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwg
c2NyYXRjaCArIGluZGV4KTsKKyAgICAgICAgICAgIH0KKyNlbHNlIC8vIG5vdCBVU0UoSlNWQUxV
RTY0KQogICAgICAgICAgICAgaml0LnN0b3JlMzIoCiAgICAgICAgICAgICAgICAgQXNzZW1ibHlI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIocmVjb3ZlcnkuY29uc3RhbnQoKS50YWcoKSksCiAgICAgICAg
ICAgICAgICAgJmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCAr
IGluZGV4KS0+YXNCaXRzLnRhZyk7CkBAIC03NjYsNyArNzc1LDcgQEAgdm9pZCBPU1JFeGl0Ojpj
b21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIAogICAgIGlmIChleGl0LmlzRXhjZXB0aW9uSGFuZGxl
cigpKQogICAgICAgICBqaXQuY29weUNhbGxlZVNhdmVzVG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNC
dWZmZXIodm0udG9wRW50cnlGcmFtZSk7CiAKLSAgICBpZiAoZXhpdC5tX2NvZGVPcmlnaW4uaW5s
aW5lU3RhY2tDb250YWluc0FjdGl2ZUNoZWNrcG9pbnQoKSkgeworICAgIGlmIChpbmxpbmVTdGFj
a0NvbnRhaW5zQWN0aXZlQ2hlY2twb2ludCkgewogICAgICAgICBFbmNvZGVkSlNWYWx1ZSogdG1w
U2NyYXRjaCA9IHNjcmF0Y2ggKyBvcGVyYW5kcy50bXBJbmRleCgwKTsKICAgICAgICAgaml0LnNl
dHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbk1hdGVyaWFsaXplT1NSRXhpdFNpZGVTdGF0
ZSk+KCZ2bSwgJmV4aXQsIHRtcFNjcmF0Y2gpOwogICAgICAgICBqaXQucHJlcGFyZUNhbGxPcGVy
YXRpb24odm0pOwpAQCAtNzc2LDYgKzc4NSwxNiBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVFeGl0
KENDYWxsSGVscGVycyYgCiAKICAgICAvLyBEbyBhbGwgZGF0YSBmb3JtYXQgY29udmVyc2lvbnMg
YW5kIHN0b3JlIHRoZSByZXN1bHRzIGludG8gdGhlIHN0YWNrLgogCisjaWYgVVNFKEpTVkFMVUU2
NCkKKyAgICBjb25zdGV4cHIgR1BSUmVnIHNyY0J1ZmZlckdQUiA9IEdQUkluZm86OnJlZ1QyOwor
ICAgIGNvbnN0ZXhwciBHUFJSZWcgZGVzdEJ1ZmZlckdQUiA9IEdQUkluZm86OnJlZ1QzOworICAg
IGNvbnN0ZXhwciBHUFJSZWcgdW5kZWZpbmVkR1BSID0gR1BSSW5mbzo6cmVnVDQ7CisgICAgYm9v
bCB1bmRlZmluZWRHUFJJc0luaXRpYWxpemVkID0gZmFsc2U7CisKKyAgICBqaXQubW92ZShDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc2NyYXRjaCksIHNyY0J1ZmZlckdQUik7CisgICAgaml0
Lm1vdmUoQ0NhbGxIZWxwZXJzOjpmcmFtZVBvaW50ZXJSZWdpc3RlciwgZGVzdEJ1ZmZlckdQUik7
CisgICAgQ0NhbGxIZWxwZXJzOjpDb3B5U3Bvb2xlciBzcG9vbGVyKENDYWxsSGVscGVyczo6Q29w
eVNwb29sZXI6OkJ1ZmZlclJlZ3M6OkFsbG93TW9kaWZpY2F0aW9uLCBqaXQsIHNyY0J1ZmZlckdQ
UiwgZGVzdEJ1ZmZlckdQUiwgR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QxKTsKKyNlbmRp
ZgogICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBvcGVyYW5kcy5zaXplKCk7ICsr
aW5kZXgpIHsKICAgICAgICAgY29uc3QgVmFsdWVSZWNvdmVyeSYgcmVjb3ZlcnkgPSBvcGVyYW5k
c1tpbmRleF07CiAgICAgICAgIE9wZXJhbmQgb3BlcmFuZCA9IG9wZXJhbmRzLm9wZXJhbmRGb3JJ
bmRleChpbmRleCk7CkBAIC03ODYsNiArODA1LDIzIEBAIHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4
aXQoQ0NhbGxIZWxwZXJzJiAKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIHN3aXRj
aCAocmVjb3ZlcnkudGVjaG5pcXVlKCkpIHsKKyAgICAgICAgY2FzZSBDb25zdGFudDogeworI2lm
IFVTRShKU1ZBTFVFNjQpCisgICAgICAgICAgICBFbmNvZGVkSlNWYWx1ZSBjdXJyZW50Q29uc3Rh
bnQgPSBKU1ZhbHVlOjplbmNvZGUocmVjb3ZlcnkuY29uc3RhbnQoKSk7CisgICAgICAgICAgICBp
ZiAoY3VycmVudENvbnN0YW50ID09IGVuY29kZWRKU1VuZGVmaW5lZCgpKSB7CisgICAgICAgICAg
ICAgICAgaWYgKCF1bmRlZmluZWRHUFJJc0luaXRpYWxpemVkKSB7CisgICAgICAgICAgICAgICAg
ICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KGVuY29kZWRKU1VuZGVmaW5l
ZCgpKSwgdW5kZWZpbmVkR1BSKTsKKyAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkR1BSSXNJ
bml0aWFsaXplZCA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHNw
b29sZXIuY29weUdQUih1bmRlZmluZWRHUFIpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICAgICAgc3Bvb2xlci5tb3ZlQ29uc3RhbnQoY3VycmVudENvbnN0YW50KTsKKyAgICAgICAg
ICAgIHNwb29sZXIuc3RvcmVHUFIob3BlcmFuZC52aXJ0dWFsUmVnaXN0ZXIoKS5vZmZzZXQoKSAq
IHNpemVvZihDUFVSZWdpc3RlcikpOworICAgICAgICAgICAgYnJlYWs7CisjZWxzZQorICAgICAg
ICAgICAgRkFMTFRIUk9VR0g7CisjZW5kaWYKKyAgICAgICAgfQogICAgICAgICBjYXNlIERpc3Bs
YWNlZEluSlNTdGFjazoKICAgICAgICAgY2FzZSBCb29sZWFuRGlzcGxhY2VkSW5KU1N0YWNrOgog
ICAgICAgICBjYXNlIEludDMyRGlzcGxhY2VkSW5KU1N0YWNrOgpAQCAtNzk1LDcgKzgzMSw2IEBA
IHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiAKICAgICAgICAgY2FzZSBV
bmJveGVkSW50MzJJbkdQUjoKICAgICAgICAgY2FzZSBVbmJveGVkQ2VsbEluR1BSOgogICAgICAg
ICBjYXNlIFVuYm94ZWREb3VibGVJbkZQUjoKLSAgICAgICAgY2FzZSBDb25zdGFudDoKICAgICAg
ICAgY2FzZSBJbkZQUjoKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBjYXNlIEluR1BSOgpA
QCAtODAzLDggKzgzOCw4IEBAIHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJz
JiAKICAgICAgICAgY2FzZSBJbnQ1MkRpc3BsYWNlZEluSlNTdGFjazoKICAgICAgICAgY2FzZSBV
bmJveGVkU3RyaWN0SW50NTJJbkdQUjoKICAgICAgICAgY2FzZSBTdHJpY3RJbnQ1MkRpc3BsYWNl
ZEluSlNTdGFjazoKLSAgICAgICAgICAgIGppdC5sb2FkNjQoc2NyYXRjaCArIGluZGV4LCBHUFJJ
bmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBqaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwgQXNz
ZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQpKTsKKyAgICAgICAgICAgIHNwb29sZXIu
bG9hZEdQUihpbmRleCAqIHNpemVvZihDUFVSZWdpc3RlcikpOworICAgICAgICAgICAgc3Bvb2xl
ci5zdG9yZUdQUihvcGVyYW5kLnZpcnR1YWxSZWdpc3RlcigpLm9mZnNldCgpICogc2l6ZW9mKENQ
VVJlZ2lzdGVyKSk7CiAgICAgICAgICAgICBicmVhazsKICNlbHNlIC8vIG5vdCBVU0UoSlNWQUxV
RTY0KQogICAgICAgICBjYXNlIEluUGFpcjoKQEAgLTgzMyw2ICs4NjgsOSBAQCB2b2lkIE9TUkV4
aXQ6OmNvbXBpbGVFeGl0KENDYWxsSGVscGVycyYgCiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgIH0KKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIHNwb29sZXIuZmx1c2hHUFIoKTsK
KyNlbmRpZgogCiAgICAgLy8gTm93IHRoYXQgdGhpbmdzIG9uIHRoZSBzdGFjayBhcmUgcmVjb3Zl
cmVkLCBkbyB0aGUgYXJndW1lbnRzIHJlY292ZXJ5LiBXZSBhc3N1bWUgdGhhdCBhcmd1bWVudHMK
ICAgICAvLyByZWNvdmVyaWVzIGRvbid0IHJlY3Vyc2l2ZWx5IHJlZmVyIHRvIGVhY2ggb3RoZXIu
IEJ1dCwgd2UgZG9uJ3QgdHJ5IHRvIGFzc3VtZSB0aGF0IHRoZXkgb25seQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9u
LmNwcAkocmV2aXNpb24gMjc4ODg2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODQsNyArMjg0LDcg
QEAgdm9pZCByZWlmeUlubGluZWRDYWxsRnJhbWVzKENDYWxsSGVscGVycwogICAgICAgICAgICAg
aml0LmFkZFB0cihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihzaXplb2YoQ2FsbGVyRnJh
bWVBbmRQQykpLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6cmVnVDIpOwog
ICAgICAgICAgICAgaml0LnVudGFnUHRyKEdQUkluZm86OnJlZ1QyLCBHUFJJbmZvOjpyZWdUMyk7
CiAgICAgICAgICAgICBqaXQuYWRkUHRyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKGlu
bGluZUNhbGxGcmFtZS0+cmV0dXJuUENPZmZzZXQoKSArIHNpemVvZih2b2lkKikpLCBHUFJJbmZv
OjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6cmVnVDIpOwotICAgICAgICAgICAgaml0LnZh
bGlkYXRlVW50YWdnZWRQdHIoR1BSSW5mbzo6cmVnVDMsIEdQUkluZm86Om5vbkFyZ0dQUjApOwor
ICAgICAgICAgICAgaml0LnZhbGlkYXRlVW50YWdnZWRQdHIoR1BSSW5mbzo6cmVnVDMsIEdQUklu
Zm86OnJlZ1Q0KTsKICAgICAgICAgICAgIGppdC50YWdQdHIoR1BSSW5mbzo6cmVnVDIsIEdQUklu
Zm86OnJlZ1QzKTsKICNlbmRpZgogICAgICAgICAgICAgaml0LnN0b3JlUHRyKEdQUkluZm86OnJl
Z1QzLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3JCeXRlT2Zmc2V0KGlubGluZUNhbGxGcmFt
ZS0+cmV0dXJuUENPZmZzZXQoKSkpOwpAQCAtMzA1LDkgKzMwNSw5IEBAIHZvaWQgcmVpZnlJbmxp
bmVkQ2FsbEZyYW1lcyhDQ2FsbEhlbHBlcnMKIAogI2lmIENQVShBUk02NEUpCiAgICAgICAgICAg
ICBqaXQuYWRkUHRyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKGlubGluZUNhbGxGcmFt
ZS0+cmV0dXJuUENPZmZzZXQoKSArIHNpemVvZih2b2lkKikpLCBHUFJJbmZvOjpjYWxsRnJhbWVS
ZWdpc3RlciwgR1BSSW5mbzo6cmVnVDIpOwotICAgICAgICAgICAgaml0Lm1vdmUoQXNzZW1ibHlI
ZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGp1bXBUYXJnZXQudW50YWdnZWRFeGVjdXRhYmxlQWRkcmVz
cygpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7Ci0gICAgICAgICAgICBqaXQudGFnUHRyKEdQUklu
Zm86OnJlZ1QyLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKLSAgICAgICAgICAgIGppdC5zdG9yZVB0
cihHUFJJbmZvOjpub25BcmdHUFIwLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3JCeXRlT2Zm
c2V0KGlubGluZUNhbGxGcmFtZS0+cmV0dXJuUENPZmZzZXQoKSkpOworICAgICAgICAgICAgaml0
Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGp1bXBUYXJnZXQudW50YWdnZWRF
eGVjdXRhYmxlQWRkcmVzcygpKSwgR1BSSW5mbzo6cmVnVDQpOworICAgICAgICAgICAgaml0LnRh
Z1B0cihHUFJJbmZvOjpyZWdUMiwgR1BSSW5mbzo6cmVnVDQpOworICAgICAgICAgICAgaml0LnN0
b3JlUHRyKEdQUkluZm86OnJlZ1Q0LCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3JCeXRlT2Zm
c2V0KGlubGluZUNhbGxGcmFtZS0+cmV0dXJuUENPZmZzZXQoKSkpOwogI2Vsc2UKICAgICAgICAg
ICAgIGppdC5zdG9yZVB0cihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoanVtcFRhcmdl
dC51bnRhZ2dlZEV4ZWN1dGFibGVBZGRyZXNzKCkpLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NG
b3JCeXRlT2Zmc2V0KGlubGluZUNhbGxGcmFtZS0+cmV0dXJuUENPZmZzZXQoKSkpOwogI2VuZGlm
CkBAIC0zMTgsMTEgKzMxOCwxMSBAQCB2b2lkIHJlaWZ5SW5saW5lZENhbGxGcmFtZXMoQ0NhbGxI
ZWxwZXJzCiAgICAgICAgIC8vIFJlc3RvcmUgdGhlIGlubGluZSBjYWxsIGZyYW1lJ3MgY2FsbGVl
IHNhdmUgcmVnaXN0ZXJzLgogICAgICAgICAvLyBJZiB0aGlzIGlubGluZWQgZnJhbWUgaXMgYSB0
YWlsIGNhbGwgdGhhdCB3aWxsIHJldHVybiBiYWNrIHRvIHRoZSBvcmlnaW5hbCBjYWxsZXIsIHdl
IG5lZWQgdG8KICAgICAgICAgLy8gY29weSB0aGUgcHJpb3IgY29udGVudHMgb2YgdGhlIHRhZyBy
ZWdpc3RlcnMgYWxyZWFkeSBzYXZlZCBmb3IgdGhlIG91dGVyIGZyYW1lIHRvIHRoaXMgZnJhbWUu
Ci0gICAgICAgIGppdC5lbWl0U2F2ZU9yQ29weUNhbGxlZVNhdmVzRm9yKAorICAgICAgICBqaXQu
ZW1pdFNhdmVPckNvcHlMTEludEJhc2VsaW5lQ2FsbGVlU2F2ZXNGb3IoCiAgICAgICAgICAgICBi
YXNlbGluZUNvZGVCbG9jaywKICAgICAgICAgICAgIHN0YXRpY19jYXN0PFZpcnR1YWxSZWdpc3Rl
cj4oaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCksCiAgICAgICAgICAgICB0cnVlQ2FsbGVy
ID8gQXNzZW1ibHlIZWxwZXJzOjpVc2VFeGlzdGluZ1RhZ1JlZ2lzdGVyQ29udGVudHMgOiBBc3Nl
bWJseUhlbHBlcnM6OkNvcHlCYXNlbGluZUNhbGxlZVNhdmVkUmVnaXN0ZXJzRnJvbUJhc2VGcmFt
ZSwKLSAgICAgICAgICAgIEdQUkluZm86OnJlZ1QyKTsKKyAgICAgICAgICAgIEdQUkluZm86OnJl
Z1QyLCBHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVnVDQpOwogCiAgICAgICAgIGlmIChjYWxs
ZXJJc0xMSW50KSB7CiAgICAgICAgICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrRm9y
Q2FsbGVyID0gaml0LmJhc2VsaW5lQ29kZUJsb2NrRm9yKCp0cnVlQ2FsbGVyKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5jcHAJKHJldmlzaW9uIDI3ODg4NikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKERGR19KSVQpCiAKKyNpbmNsdWRlICJBc3Nl
bWJseUhlbHBlcnNTcG9vbGVycy5oIgogI2luY2x1ZGUgIkNDYWxsSGVscGVycy5oIgogI2luY2x1
ZGUgIkRGR0pJVENvZGUuaCIKICNpbmNsdWRlICJERkdPU1JFeGl0LmgiCkBAIC00OSwzNCArNTAs
NzMgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBvcwogICAgIHNpemVf
dCBzY3JhdGNoU2l6ZSA9IHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgKiAoR1BSSW5mbzo6bnVtYmVy
T2ZSZWdpc3RlcnMgKyBGUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyk7CiAgICAgU2NyYXRjaEJ1
ZmZlciogc2NyYXRjaEJ1ZmZlciA9IHZtLnNjcmF0Y2hCdWZmZXJGb3JTaXplKHNjcmF0Y2hTaXpl
KTsKICAgICBFbmNvZGVkSlNWYWx1ZSogYnVmZmVyID0gc3RhdGljX2Nhc3Q8RW5jb2RlZEpTVmFs
dWUqPihzY3JhdGNoQnVmZmVyLT5kYXRhQnVmZmVyKCkpOwotICAgIAotICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVyczsgKytpKSB7CisKKyNpZiBD
UFUoQVJNNjQpCisgICAgY29uc3RleHByIEdQUlJlZyBidWZmZXJHUFIgPSBDQ2FsbEhlbHBlcnM6
Om1lbW9yeVRlbXBSZWdpc3RlcjsKKyAgICBjb25zdGV4cHIgdW5zaWduZWQgZmlyc3RHUFIgPSAw
OworI2VsaWYgQ1BVKFg4Nl82NCkKKyAgICBHUFJSZWcgYnVmZmVyR1BSID0gaml0LnNjcmF0Y2hS
ZWdpc3RlcigpOworICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBmaXJzdEdQUiA9IDA7CisjZWxzZQor
ICAgIEdQUlJlZyBidWZmZXJHUFIgPSBHUFJJbmZvOjp0b1JlZ2lzdGVyKDApOworICAgIGNvbnN0
ZXhwciB1bnNpZ25lZCBmaXJzdEdQUiA9IDE7CisjZW5kaWYKKworICAgIGlmIGNvbnN0ZXhwciAo
Zmlyc3RHUFIpIHsKKyAgICAgICAgLy8gV2UncmUgdXNpbmcgdGhlIGZpcnN0R1BSIGFzIHRoZSBi
dWZmZXJHUFIsIGFuZCBuZWVkIHRvIHNhdmUgaXQgbWFudWFsbHkuCisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzID49IDEpOworICAgICAgICBSRUxFQVNF
X0FTU0VSVChidWZmZXJHUFIgPT0gR1BSSW5mbzo6dG9SZWdpc3RlcigwKSk7CiAjaWYgVVNFKEpT
VkFMVUU2NCkKLSAgICAgICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6dG9SZWdpc3RlcihpKSwgYnVm
ZmVyICsgaSk7CisgICAgICAgIGppdC5zdG9yZTY0KGJ1ZmZlckdQUiwgYnVmZmVyKTsKICNlbHNl
Ci0gICAgICAgIGppdC5zdG9yZTMyKEdQUkluZm86OnRvUmVnaXN0ZXIoaSksIGJ1ZmZlciArIGkp
OworICAgICAgICBqaXQuc3RvcmUzMihidWZmZXJHUFIsIGJ1ZmZlcik7CiAjZW5kaWYKICAgICB9
CisKKyAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoYnVmZmVyKSwgYnVm
ZmVyR1BSKTsKKworICAgIENDYWxsSGVscGVyczo6U3RvcmVSZWdTcG9vbGVyIHN0b3JlU3Bvb2xl
cihqaXQsIGJ1ZmZlckdQUik7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBmaXJzdEdQUjsgaSA8
IEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyArK2kpIHsKKyAgICAgICAgcHRyZGlmZl90IG9m
ZnNldCA9IGkgKiBzaXplb2YoQ1BVUmVnaXN0ZXIpOworICAgICAgICBzdG9yZVNwb29sZXIuc3Rv
cmVHUFIoeyBHUFJJbmZvOjp0b1JlZ2lzdGVyKGkpLCBvZmZzZXQgfSk7CisgICAgfQorICAgIHN0
b3JlU3Bvb2xlci5mbHVzaEdQUigpOworCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEZQ
UkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyArK2kpIHsKLSAgICAgICAgaml0Lm1vdmUoTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoYnVmZmVyICsgR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3Rl
cnMgKyBpKSwgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICBqaXQuc3RvcmVEb3VibGUoRlBSSW5m
bzo6dG9SZWdpc3RlcihpKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAp
KTsKKyAgICAgICAgcHRyZGlmZl90IG9mZnNldCA9IChHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVy
cyArIGkpICogc2l6ZW9mKGRvdWJsZSk7CisgICAgICAgIHN0b3JlU3Bvb2xlci5zdG9yZUZQUih7
IEZQUkluZm86OnRvUmVnaXN0ZXIoaSksIG9mZnNldCB9KTsKICAgICB9Ci0gICAgCisgICAgc3Rv
cmVTcG9vbGVyLmZsdXNoRlBSKCk7CisKICAgICAvLyBTZXQgdXAgb25lIGFyZ3VtZW50LgogICAg
IGppdC5tb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAKICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6Q2FsbCBmdW5jdGlvbkNhbGwgPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOwogCisg
ICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGJ1ZmZlciksIGJ1ZmZlckdQ
Uik7CisgICAgQ0NhbGxIZWxwZXJzOjpMb2FkUmVnU3Bvb2xlciBsb2FkbFNwb29sZXIoaml0LCBi
dWZmZXJHUFIpOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gZmlyc3RHUFI7IGkgPCBHUFJJbmZv
OjpudW1iZXJPZlJlZ2lzdGVyczsgKytpKSB7CisgICAgICAgIHB0cmRpZmZfdCBvZmZzZXQgPSBp
ICogc2l6ZW9mKENQVVJlZ2lzdGVyKTsKKyAgICAgICAgbG9hZGxTcG9vbGVyLmxvYWRHUFIoeyBH
UFJJbmZvOjp0b1JlZ2lzdGVyKGkpLCBvZmZzZXQgfSk7CisgICAgfQorICAgIGxvYWRsU3Bvb2xl
ci5mbHVzaEdQUigpOworCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEZQUkluZm86Om51
bWJlck9mUmVnaXN0ZXJzOyArK2kpIHsKLSAgICAgICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW1QdHIoYnVmZmVyICsgR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgKyBpKSwg
R1BSSW5mbzo6cmVnVDApOwotICAgICAgICBqaXQubG9hZERvdWJsZShNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCksIEZQUkluZm86OnRvUmVnaXN0ZXIoaSkpOworICAgICAg
ICBwdHJkaWZmX3Qgb2Zmc2V0ID0gKEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzICsgaSkgKiBz
aXplb2YoZG91YmxlKTsKKyAgICAgICAgbG9hZGxTcG9vbGVyLmxvYWRGUFIoeyBGUFJJbmZvOjp0
b1JlZ2lzdGVyKGkpLCBvZmZzZXQgfSk7CiAgICAgfQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVyczsgKytpKSB7CisgICAgbG9hZGxTcG9vbGVy
LmZsdXNoRlBSKCk7CisKKyAgICBpZiBjb25zdGV4cHIgKGZpcnN0R1BSKSB7CisgICAgICAgIC8v
IFdlJ3JlIHVzaW5nIHRoZSBmaXJzdEdQUiBhcyB0aGUgYnVmZmVyR1BSLCBhbmQgbmVlZCB0byBy
ZXN0b3JlIGl0IG1hbnVhbGx5LgorICAgICAgICBBU1NFUlQoYnVmZmVyR1BSID09IEdQUkluZm86
OnRvUmVnaXN0ZXIoMCkpOwogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIGppdC5sb2FkNjQo
YnVmZmVyICsgaSwgR1BSSW5mbzo6dG9SZWdpc3RlcihpKSk7CisgICAgICAgIGppdC5sb2FkNjQo
YnVmZmVyLCBidWZmZXJHUFIpOwogI2Vsc2UKLSAgICAgICAgaml0LmxvYWQzMihidWZmZXIgKyBp
LCBHUFJJbmZvOjp0b1JlZ2lzdGVyKGkpKTsKKyAgICAgICAgaml0LmxvYWQzMihidWZmZXIsIGJ1
ZmZlckdQUik7CiAjZW5kaWYKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMU2F2ZVJlc3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMU2F2ZVJlc3RvcmUuY3BwCShyZXZpc2lvbiAyNzg4ODYpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTFNhdmVSZXN0b3JlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
OCw5ICsyOCwxMCBAQAogCiAjaWYgRU5BQkxFKEZUTF9KSVQpCiAKKyNpbmNsdWRlICJBc3NlbWJs
eUhlbHBlcnNTcG9vbGVycy5oIgogI2luY2x1ZGUgIkZQUkluZm8uaCIKICNpbmNsdWRlICJHUFJJ
bmZvLmgiCi0jaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKKyNpbmNsdWRlICJSZWcuaCIKICNp
bmNsdWRlICJSZWdpc3RlclNldC5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7
CkBAIC03Nyw3MCArNzgsMTA0IEBAIHN0cnVjdCBSZWdzIHsKICAgICB7CiAgICAgICAgIHNwZWNp
YWwgPSBSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKTsKICAgICAgICAgc3BlY2lhbC5tZXJn
ZShSZWdpc3RlclNldDo6cmVzZXJ2ZWRIYXJkd2FyZVJlZ2lzdGVycygpKTsKLSAgICAgICAgCisK
ICAgICAgICAgZmlyc3QgPSBNYWNyb0Fzc2VtYmxlcjo6Zmlyc3RSZWdpc3RlcigpOwogICAgICAg
ICB3aGlsZSAoc3BlY2lhbC5nZXQoZmlyc3QpKQogICAgICAgICAgICAgZmlyc3QgPSBNYWNyb0Fz
c2VtYmxlcjo6bmV4dFJlZ2lzdGVyKGZpcnN0KTsKLSAgICAgICAgc2Vjb25kID0gTWFjcm9Bc3Nl
bWJsZXI6Om5leHRSZWdpc3RlcihmaXJzdCk7Ci0gICAgICAgIHdoaWxlIChzcGVjaWFsLmdldChz
ZWNvbmQpKQotICAgICAgICAgICAgc2Vjb25kID0gTWFjcm9Bc3NlbWJsZXI6Om5leHRSZWdpc3Rl
cihzZWNvbmQpOwogICAgIH0KLSAgICAKKworICAgIEdQUlJlZyBuZXh0UmVnaXN0ZXIoR1BSUmVn
IGN1cnJlbnQpCisgICAgeworICAgICAgICBhdXRvIG5leHQgPSBNYWNyb0Fzc2VtYmxlcjo6bmV4
dFJlZ2lzdGVyKGN1cnJlbnQpOworICAgICAgICB3aGlsZSAoc3BlY2lhbC5nZXQobmV4dCkpCisg
ICAgICAgICAgICBuZXh0ID0gTWFjcm9Bc3NlbWJsZXI6Om5leHRSZWdpc3RlcihuZXh0KTsKKyAg
ICAgICAgcmV0dXJuIG5leHQ7CisgICAgfQorCisgICAgRlBSUmVnIG5leHRGUFJlZ2lzdGVyKEZQ
UlJlZyBjdXJyZW50KQorICAgIHsKKyAgICAgICAgYXV0byBuZXh0ID0gTWFjcm9Bc3NlbWJsZXI6
Om5leHRGUFJlZ2lzdGVyKGN1cnJlbnQpOworICAgICAgICB3aGlsZSAoc3BlY2lhbC5nZXQobmV4
dCkpCisgICAgICAgICAgICBuZXh0ID0gTWFjcm9Bc3NlbWJsZXI6Om5leHRGUFJlZ2lzdGVyKG5l
eHQpOworICAgICAgICByZXR1cm4gbmV4dDsKKyAgICB9CisKICAgICBSZWdpc3RlclNldCBzcGVj
aWFsOwogICAgIEdQUlJlZyBmaXJzdDsKLSAgICBHUFJSZWcgc2Vjb25kOwogfTsKIAogfSAvLyBh
bm9ueW1vdXMgbmFtZXNwYWNlCiAKLXZvaWQgc2F2ZUFsbFJlZ2lzdGVycyhNYWNyb0Fzc2VtYmxl
ciYgaml0LCBjaGFyKiBzY3JhdGNoTWVtb3J5KQordm9pZCBzYXZlQWxsUmVnaXN0ZXJzKEFzc2Vt
Ymx5SGVscGVycyYgaml0LCBjaGFyKiBzY3JhdGNoTWVtb3J5KQogewogICAgIFJlZ3MgcmVnczsK
ICAgICAKICAgICAvLyBHZXQgdGhlIGZpcnN0IHJlZ2lzdGVyIG91dCBvZiB0aGUgd2F5LCBzbyB0
aGF0IHdlIGNhbiB1c2UgaXQgYXMgYSBwb2ludGVyLgotICAgIGppdC5wb2tlNjQocmVncy5maXJz
dCwgMCk7Ci0gICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoc2NyYXRj
aE1lbW9yeSksIHJlZ3MuZmlyc3QpOwotICAgIAorICAgIEdQUlJlZyBiYXNlR1BSID0gcmVncy5m
aXJzdDsKKyNpZiBDUFUoQVJNNjQpCisgICAgR1BSUmVnIG5leHRHUFIgPSByZWdzLm5leHRSZWdp
c3RlcihiYXNlR1BSKTsKKyAgICBHUFJSZWcgZmlyc3RUb1NhdmVHUFIgPSByZWdzLm5leHRSZWdp
c3RlcihuZXh0R1BSKTsKKyAgICBBU1NFUlQoYmFzZUdQUiA9PSBBUk02NFJlZ2lzdGVyczo6eDAp
OworICAgIEFTU0VSVChuZXh0R1BSID09IEFSTTY0UmVnaXN0ZXJzOjp4MSk7CisjZWxzZQorICAg
IEdQUlJlZyBmaXJzdFRvU2F2ZUdQUiA9IHJlZ3MubmV4dFJlZ2lzdGVyKGJhc2VHUFIpOworI2Vu
ZGlmCisgICAgaml0LnBva2U2NChiYXNlR1BSLCAwKTsKKyAgICBqaXQubW92ZShNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbVB0cihzY3JhdGNoTWVtb3J5KSwgYmFzZUdQUik7CisKKyAgICBBc3Nl
bWJseUhlbHBlcnM6OlN0b3JlUmVnU3Bvb2xlciBzcG9vbGVyKGppdCwgYmFzZUdQUik7CisKICAg
ICAvLyBHZXQgYWxsIG9mIHRoZSBvdGhlciBHUFJzIG91dCBvZiB0aGUgd2F5LgotICAgIGZvciAo
TWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgcmVnID0gcmVncy5zZWNvbmQ7IHJlZyA8PSBNYWNy
b0Fzc2VtYmxlcjo6bGFzdFJlZ2lzdGVyKCk7IHJlZyA9IE1hY3JvQXNzZW1ibGVyOjpuZXh0UmVn
aXN0ZXIocmVnKSkgewotICAgICAgICBpZiAocmVncy5zcGVjaWFsLmdldChyZWcpKQotICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgIGppdC5zdG9yZTY0KHJlZywgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MocmVncy5maXJzdCwgb2Zmc2V0T2ZHUFIocmVnKSkpOwotICAgIH0KKyAgICBmb3Ig
KEdQUlJlZyByZWcgPSBmaXJzdFRvU2F2ZUdQUjsgcmVnIDw9IE1hY3JvQXNzZW1ibGVyOjpsYXN0
UmVnaXN0ZXIoKTsgcmVnID0gcmVncy5uZXh0UmVnaXN0ZXIocmVnKSkKKyAgICAgICAgc3Bvb2xl
ci5zdG9yZUdQUih7IHJlZywgc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihvZmZzZXRPZkdQUihyZWcp
KSB9KTsKKyAgICBzcG9vbGVyLmZsdXNoR1BSKCk7CiAgICAgCiAgICAgLy8gUmVzdG9yZSB0aGUg
Zmlyc3QgcmVnaXN0ZXIgaW50byB0aGUgc2Vjb25kIG9uZSBhbmQgc2F2ZSBpdC4KLSAgICBqaXQu
cGVlazY0KHJlZ3Muc2Vjb25kLCAwKTsKLSAgICBqaXQuc3RvcmU2NChyZWdzLnNlY29uZCwgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVncy5maXJzdCwgb2Zmc2V0T2ZHUFIocmVncy5maXJzdCkp
KTsKKyAgICBqaXQucGVlazY0KGZpcnN0VG9TYXZlR1BSLCAwKTsKKyNpZiBDUFUoQVJNNjQpCisg
ICAgaml0LnN0b3JlUGFpcjY0KGZpcnN0VG9TYXZlR1BSLCBuZXh0R1BSLCBiYXNlR1BSLCBBc3Nl
bWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihvZmZzZXRPZkdQUihiYXNlR1BSKSkpOworI2Vsc2UK
KyAgICBqaXQuc3RvcmU2NChmaXJzdFRvU2F2ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
YmFzZUdQUiwgb2Zmc2V0T2ZHUFIoYmFzZUdQUikpKTsKKyNlbmRpZgogICAgIAogICAgIC8vIEZp
bmFsbHkgc2F2ZSBhbGwgRlBSJ3MuCi0gICAgZm9yIChNYWNyb0Fzc2VtYmxlcjo6RlBSZWdpc3Rl
cklEIHJlZyA9IE1hY3JvQXNzZW1ibGVyOjpmaXJzdEZQUmVnaXN0ZXIoKTsgcmVnIDw9IE1hY3Jv
QXNzZW1ibGVyOjpsYXN0RlBSZWdpc3RlcigpOyByZWcgPSBNYWNyb0Fzc2VtYmxlcjo6bmV4dEZQ
UmVnaXN0ZXIocmVnKSkgewotICAgICAgICBpZiAocmVncy5zcGVjaWFsLmdldChyZWcpKQotICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGppdC5zdG9yZURvdWJsZShyZWcsIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKHJlZ3MuZmlyc3QsIG9mZnNldE9mRlBSKHJlZykpKTsKLSAgICB9Cisg
ICAgZm9yIChNYWNyb0Fzc2VtYmxlcjo6RlBSZWdpc3RlcklEIHJlZyA9IE1hY3JvQXNzZW1ibGVy
OjpmaXJzdEZQUmVnaXN0ZXIoKTsgcmVnIDw9IE1hY3JvQXNzZW1ibGVyOjpsYXN0RlBSZWdpc3Rl
cigpOyByZWcgPSByZWdzLm5leHRGUFJlZ2lzdGVyKHJlZykpCisgICAgICAgIHNwb29sZXIuc3Rv
cmVGUFIoeyByZWcsIHN0YXRpY19jYXN0PHB0cmRpZmZfdD4ob2Zmc2V0T2ZGUFIocmVnKSkgfSk7
CisgICAgc3Bvb2xlci5mbHVzaEZQUigpOwogfQogCi12b2lkIHJlc3RvcmVBbGxSZWdpc3RlcnMo
TWFjcm9Bc3NlbWJsZXImIGppdCwgY2hhciogc2NyYXRjaE1lbW9yeSkKK3ZvaWQgcmVzdG9yZUFs
bFJlZ2lzdGVycyhBc3NlbWJseUhlbHBlcnMmIGppdCwgY2hhciogc2NyYXRjaE1lbW9yeSkKIHsK
ICAgICBSZWdzIHJlZ3M7CiAgICAgCiAgICAgLy8gR2l2ZSBvdXJzZWx2ZXMgYSBwb2ludGVyIHRv
IHRoZSBzY3JhdGNoIG1lbW9yeS4KLSAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbVB0cihzY3JhdGNoTWVtb3J5KSwgcmVncy5maXJzdCk7CisgICAgR1BSUmVnIGJhc2VHUFIg
PSByZWdzLmZpcnN0OworICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
KHNjcmF0Y2hNZW1vcnkpLCBiYXNlR1BSKTsKICAgICAKKyAgICBBc3NlbWJseUhlbHBlcnM6Okxv
YWRSZWdTcG9vbGVyIHNwb29sZXIoaml0LCBiYXNlR1BSKTsKKwogICAgIC8vIFJlc3RvcmUgYWxs
IEZQUidzLgotICAgIGZvciAoTWFjcm9Bc3NlbWJsZXI6OkZQUmVnaXN0ZXJJRCByZWcgPSBNYWNy
b0Fzc2VtYmxlcjo6Zmlyc3RGUFJlZ2lzdGVyKCk7IHJlZyA8PSBNYWNyb0Fzc2VtYmxlcjo6bGFz
dEZQUmVnaXN0ZXIoKTsgcmVnID0gTWFjcm9Bc3NlbWJsZXI6Om5leHRGUFJlZ2lzdGVyKHJlZykp
IHsKLSAgICAgICAgaWYgKHJlZ3Muc3BlY2lhbC5nZXQocmVnKSkKLSAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICBqaXQubG9hZERvdWJsZShNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZWdz
LmZpcnN0LCBvZmZzZXRPZkZQUihyZWcpKSwgcmVnKTsKLSAgICB9Ci0gICAgCi0gICAgZm9yIChN
YWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRCByZWcgPSByZWdzLnNlY29uZDsgcmVnIDw9IE1hY3Jv
QXNzZW1ibGVyOjpsYXN0UmVnaXN0ZXIoKTsgcmVnID0gTWFjcm9Bc3NlbWJsZXI6Om5leHRSZWdp
c3RlcihyZWcpKSB7Ci0gICAgICAgIGlmIChyZWdzLnNwZWNpYWwuZ2V0KHJlZykpCi0gICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgaml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhyZWdzLmZpcnN0LCBvZmZzZXRPZkdQUihyZWcpKSwgcmVnKTsKLSAgICB9Ci0gICAgCi0gICAg
aml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZWdzLmZpcnN0LCBvZmZzZXRPZkdQ
UihyZWdzLmZpcnN0KSksIHJlZ3MuZmlyc3QpOworICAgIGZvciAoTWFjcm9Bc3NlbWJsZXI6OkZQ
UmVnaXN0ZXJJRCByZWcgPSBNYWNyb0Fzc2VtYmxlcjo6Zmlyc3RGUFJlZ2lzdGVyKCk7IHJlZyA8
PSBNYWNyb0Fzc2VtYmxlcjo6bGFzdEZQUmVnaXN0ZXIoKTsgcmVnID0gcmVncy5uZXh0RlBSZWdp
c3RlcihyZWcpKQorICAgICAgICBzcG9vbGVyLmxvYWRGUFIoeyByZWcsIHN0YXRpY19jYXN0PHB0
cmRpZmZfdD4ob2Zmc2V0T2ZGUFIocmVnKSkgfSk7CisgICAgc3Bvb2xlci5mbHVzaEZQUigpOwor
ICAgIAorI2lmIENQVShBUk02NCkKKyAgICBHUFJSZWcgbmV4dEdQUiA9IHJlZ3MubmV4dFJlZ2lz
dGVyKGJhc2VHUFIpOworICAgIEdQUlJlZyBmaXJzdFRvUmVzdG9yZUdQUiA9IHJlZ3MubmV4dFJl
Z2lzdGVyKG5leHRHUFIpOworICAgIEFTU0VSVChiYXNlR1BSID09IEFSTTY0UmVnaXN0ZXJzOjp4
MCk7CisgICAgQVNTRVJUKG5leHRHUFIgPT0gQVJNNjRSZWdpc3RlcnM6OngxKTsKKyNlbHNlCisg
ICAgR1BSUmVnIGZpcnN0VG9SZXN0b3JlR1BSID0gcmVncy5uZXh0UmVnaXN0ZXIoYmFzZUdQUik7
CisjZW5kaWYKKyAgICBmb3IgKE1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEIHJlZyA9IGZpcnN0
VG9SZXN0b3JlR1BSOyByZWcgPD0gTWFjcm9Bc3NlbWJsZXI6Omxhc3RSZWdpc3RlcigpOyByZWcg
PSByZWdzLm5leHRSZWdpc3RlcihyZWcpKQorICAgICAgICBzcG9vbGVyLmxvYWRHUFIoeyByZWcs
IHN0YXRpY19jYXN0PHB0cmRpZmZfdD4ob2Zmc2V0T2ZHUFIocmVnKSkgfSk7CisgICAgc3Bvb2xl
ci5mbHVzaEdQUigpOworCisjaWYgQ1BVKEFSTTY0KQorICAgIGppdC5sb2FkUGFpcjY0KGJhc2VH
UFIsIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKG9mZnNldE9mR1BSKGJhc2VHUFIpKSwg
YmFzZUdQUiwgbmV4dEdQUik7CisjZWxzZQorICAgIGppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoYmFzZUdQUiwgb2Zmc2V0T2ZHUFIoYmFzZUdQUikpLCBiYXNlR1BSKTsKKyNlbmRp
ZgogfQogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6RlRMCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTFNhdmVSZXN0b3JlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExTYXZlUmVzdG9yZS5oCShyZXZpc2lvbiAyNzg4ODYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNhdmVSZXN0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsNyAr
MzMsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgTWFjcm9Bc3NlbWJsZXI7CitjbGFz
cyBBc3NlbWJseUhlbHBlcnM7CiAKIG5hbWVzcGFjZSBGVEwgewogCkBAIC00Niw5ICs0Niw5IEBA
IHNpemVfdCBvZmZzZXRPZkZQUihGUFJSZWcpOwogLy8gQXNzdW1lcyB0aGF0IHRvcC1vZi1zdGFj
ayBjYW4gYmUgdXNlZCBhcyBhIHBvaW50ZXItc2l6ZWQgc2NyYXRjaHBhZC4gU2F2ZXMgYWxsIG9m
CiAvLyB0aGUgcmVnaXN0ZXJzIGludG8gdGhlIHNjcmF0Y2ggYnVmZmVyIHN1Y2ggdGhhdCBSZWdp
c3RlcklEICogc2l6ZW9mKGludDY0X3QpIGlzIHRoZQogLy8gb2Zmc2V0IG9mIGV2ZXJ5IHJlZ2lz
dGVyLgotdm9pZCBzYXZlQWxsUmVnaXN0ZXJzKE1hY3JvQXNzZW1ibGVyJiBqaXQsIGNoYXIqIHNj
cmF0Y2hNZW1vcnkpOwordm9pZCBzYXZlQWxsUmVnaXN0ZXJzKEFzc2VtYmx5SGVscGVycyYgaml0
LCBjaGFyKiBzY3JhdGNoTWVtb3J5KTsKIAotdm9pZCByZXN0b3JlQWxsUmVnaXN0ZXJzKE1hY3Jv
QXNzZW1ibGVyJiBqaXQsIGNoYXIqIHNjcmF0Y2hNZW1vcnkpOwordm9pZCByZXN0b3JlQWxsUmVn
aXN0ZXJzKEFzc2VtYmx5SGVscGVycyYgaml0LCBjaGFyKiBzY3JhdGNoTWVtb3J5KTsKIAogfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OkZUTAogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTFRodW5rcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExUaHVua3MuY3BwCShyZXZpc2lvbiAyNzg4ODYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTFRodW5rcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2lm
IEVOQUJMRShGVExfSklUKQogCi0jaW5jbHVkZSAiQXNzZW1ibHlIZWxwZXJzLmgiCisjaW5jbHVk
ZSAiQXNzZW1ibHlIZWxwZXJzU3Bvb2xlcnMuaCIKICNpbmNsdWRlICJERkdPU1JFeGl0Q29tcGls
ZXJDb21tb24uaCIKICNpbmNsdWRlICJGVExPU1JFeGl0Q29tcGlsZXIuaCIKICNpbmNsdWRlICJG
VExPcGVyYXRpb25zLmgiCkBAIC01NiwzMSArNTYsMzQgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0cgogICAgIH0KICAgICAKICAgICAvLyBOb3RlIHRoYXQgdGhlICJy
ZXR1cm4gYWRkcmVzcyIgd2lsbCBiZSB0aGUgSUQgdGhhdCB3ZSBwYXNzIHRvIHRoZSBnZW5lcmF0
aW9uIGZ1bmN0aW9uLgotICAgIAotICAgIHB0cmRpZmZfdCBzdGFja01pc2FsaWdubWVudCA9IE1h
Y3JvQXNzZW1ibGVyOjpwdXNoVG9TYXZlQnl0ZU9mZnNldCgpOwotICAgIAorCisgICAgY29uc3Rl
eHByIEdQUlJlZyBzdGFja1BvaW50ZXJSZWdpc3RlciA9IE1hY3JvQXNzZW1ibGVyOjpzdGFja1Bv
aW50ZXJSZWdpc3RlcjsKKyAgICBjb25zdGV4cHIgR1BSUmVnIGZyYW1lUG9pbnRlclJlZ2lzdGVy
ID0gTWFjcm9Bc3NlbWJsZXI6OmZyYW1lUG9pbnRlclJlZ2lzdGVyOworICAgIGNvbnN0ZXhwciBw
dHJkaWZmX3QgcHVzaFRvU2F2ZUJ5dGVPZmZzZXQgPSBNYWNyb0Fzc2VtYmxlcjo6cHVzaFRvU2F2
ZUJ5dGVPZmZzZXQoKTsKKyAgICBwdHJkaWZmX3Qgc3RhY2tNaXNhbGlnbm1lbnQgPSBwdXNoVG9T
YXZlQnl0ZU9mZnNldDsKKwogICAgIC8vIFByZXRlbmQgdGhhdCB3ZSdyZSBhIEMgY2FsbCBmcmFt
ZS4KLSAgICBqaXQucHVzaFRvU2F2ZShNYWNyb0Fzc2VtYmxlcjo6ZnJhbWVQb2ludGVyUmVnaXN0
ZXIpOwotICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlciwg
TWFjcm9Bc3NlbWJsZXI6OmZyYW1lUG9pbnRlclJlZ2lzdGVyKTsKLSAgICBzdGFja01pc2FsaWdu
bWVudCArPSBNYWNyb0Fzc2VtYmxlcjo6cHVzaFRvU2F2ZUJ5dGVPZmZzZXQoKTsKLSAgICAKKyAg
ICBqaXQucHVzaFRvU2F2ZShmcmFtZVBvaW50ZXJSZWdpc3Rlcik7CisgICAgaml0Lm1vdmUoc3Rh
Y2tQb2ludGVyUmVnaXN0ZXIsIGZyYW1lUG9pbnRlclJlZ2lzdGVyKTsKKyAgICBzdGFja01pc2Fs
aWdubWVudCArPSBwdXNoVG9TYXZlQnl0ZU9mZnNldDsKKwogICAgIC8vIE5vdyBjcmVhdGUgb3Vy
c2VsdmVzIGVub3VnaCBzdGFjayBzcGFjZSB0byBnaXZlIHNhdmVBbGxSZWdpc3RlcnMoKSBhIHNj
cmF0Y2ggc2xvdC4KICAgICB1bnNpZ25lZCBudW1iZXJPZlJlcXVpcmVkUG9wcyA9IDA7CiAgICAg
ZG8gewotICAgICAgICBqaXQucHVzaFRvU2F2ZShHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgIHN0
YWNrTWlzYWxpZ25tZW50ICs9IE1hY3JvQXNzZW1ibGVyOjpwdXNoVG9TYXZlQnl0ZU9mZnNldCgp
OworICAgICAgICBzdGFja01pc2FsaWdubWVudCArPSBwdXNoVG9TYXZlQnl0ZU9mZnNldDsKICAg
ICAgICAgbnVtYmVyT2ZSZXF1aXJlZFBvcHMrKzsKICAgICB9IHdoaWxlIChzdGFja01pc2FsaWdu
bWVudCAlIHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSk7Ci0gICAgCisgICAgaml0LnN1YlB0cihNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKG51bWJlck9mUmVxdWlyZWRQb3BzICogcHVzaFRvU2F2
ZUJ5dGVPZmZzZXQpLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisKICAgICBTY3JhdGNoQnVmZmVy
KiBzY3JhdGNoQnVmZmVyID0gdm0uc2NyYXRjaEJ1ZmZlckZvclNpemUocmVxdWlyZWRTY3JhdGNo
TWVtb3J5U2l6ZUluQnl0ZXMoKSk7CiAgICAgY2hhciogYnVmZmVyID0gc3RhdGljX2Nhc3Q8Y2hh
cio+KHNjcmF0Y2hCdWZmZXItPmRhdGFCdWZmZXIoKSk7CiAgICAgCiAgICAgc2F2ZUFsbFJlZ2lz
dGVycyhqaXQsIGJ1ZmZlcik7CiAKLSAgICBqaXQubG9hZFB0cihHUFJJbmZvOjpjYWxsRnJhbWVS
ZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBqaXQubG9hZFB0cihmcmFtZVBv
aW50ZXJSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICBqaXQucGVlaygKICAg
ICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIxLAotICAgICAgICAoc3RhY2tNaXNhbGlnbm1lbnQg
LSBNYWNyb0Fzc2VtYmxlcjo6cHVzaFRvU2F2ZUJ5dGVPZmZzZXQoKSkgLyBzaXplb2Yodm9pZCop
KTsKKyAgICAgICAgKHN0YWNrTWlzYWxpZ25tZW50IC0gcHVzaFRvU2F2ZUJ5dGVPZmZzZXQpIC8g
c2l6ZW9mKHZvaWQqKSk7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKICAgICBN
YWNyb0Fzc2VtYmxlcjo6Q2FsbCBmdW5jdGlvbkNhbGwgPSBqaXQuY2FsbChPcGVyYXRpb25QdHJU
YWcpOwogCkBAIC05MiwxNCArOTUsMTMgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
SVRUaHVua1B0cgogICAgIGppdC5tb3ZlKEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBHUFJJbmZv
OjpyZWdUMCk7CiAKICAgICAvLyBQcmVwYXJlIGZvciB0YWlsIGNhbGwuCi0gICAgd2hpbGUgKG51
bWJlck9mUmVxdWlyZWRQb3BzLS0pCi0gICAgICAgIGppdC5wb3BUb1Jlc3RvcmUoR1BSSW5mbzo6
cmVnVDEpOwotICAgIGppdC5wb3BUb1Jlc3RvcmUoTWFjcm9Bc3NlbWJsZXI6OmZyYW1lUG9pbnRl
clJlZ2lzdGVyKTsKLQotICAgIC8vIFdoZW4gd2UgY2FtZSBpbiBoZXJlLCB0aGVyZSB3YXMgYW4g
YWRkaXRpb25hbCB0aGluZyBwdXNoZWQgdG8gdGhlIHN0YWNrLiBTb21lIGNsaWVudHMgd2FudCBp
dAotICAgIC8vIHBvcHBlZCBiZWZvcmUgcHJvY2VlZGluZy4KLSAgICB3aGlsZSAoZXh0cmFQb3Bz
VG9SZXN0b3JlLS0pCi0gICAgICAgIGppdC5wb3BUb1Jlc3RvcmUoR1BSSW5mbzo6cmVnVDEpOwor
CisgICAgaml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RhY2tQb2ludGVyUmVn
aXN0ZXIsIG51bWJlck9mUmVxdWlyZWRQb3BzICogcHVzaFRvU2F2ZUJ5dGVPZmZzZXQpLCBmcmFt
ZVBvaW50ZXJSZWdpc3Rlcik7CisKKyAgICAvLyBXaGVuIHdlIGNhbWUgaW4gaGVyZSwgdGhlcmUg
d2FzIGFuIGFkZGl0aW9uYWwgdGhpbmcgcHVzaGVkIHRvIHRoZSBzdGFjayAoZXh0cmFQb3BzVG9S
ZXN0b3JlKS4KKyAgICAvLyBTb21lIGNsaWVudHMgd2FudCBpdCBwb3BwZWQgYmVmb3JlIHByb2Nl
ZWRpbmcuIEFsc28gYWRkIDEgZm9yIHRoZSBwdXNoVG9TYXZlIG9mIHRoZSBmcmFtZVBvaW50ZXJS
ZWdpc3Rlci4KKyAgICBudW1iZXJPZlJlcXVpcmVkUG9wcyArPSAxICsgZXh0cmFQb3BzVG9SZXN0
b3JlOworICAgIGppdC5hZGRQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihudW1iZXJP
ZlJlcXVpcmVkUG9wcyAqIHB1c2hUb1NhdmVCeXRlT2Zmc2V0KSwgc3RhY2tQb2ludGVyUmVnaXN0
ZXIpOwogCiAgICAgLy8gUHV0IHRoZSByZXR1cm4gYWRkcmVzcyB3aGVyZXZlciB0aGUgcmV0dXJu
IGluc3RydWN0aW9uIHdhbnRzIGl0LiBPbiBhbGwgcGxhdGZvcm1zLCB0aGlzCiAgICAgLy8gZW5z
dXJlcyB0aGF0IHRoZSByZXR1cm4gYWRkcmVzcyBpcyBvdXQgb2YgdGhlIHdheSBvZiByZWdpc3Rl
ciByZXN0b3JhdGlvbi4KQEAgLTE3NywyMSArMTc5LDI1IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRUaHVua1B0clRhZz4gc2wKICNpZiBDUFUoWDg2XzY0KQogICAgIGN1cnJlbnRPZmZzZXQg
Kz0gc2l6ZW9mKHZvaWQqKTsKICNlbmRpZgotICAgIAorCisgICAgQXNzZW1ibHlIZWxwZXJzOjpT
dG9yZVJlZ1Nwb29sZXIgc3RvcmVTcG9vbGVyKGppdCwgTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9p
bnRlclJlZ2lzdGVyKTsKKwogICAgIGZvciAoTWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgcmVn
ID0gTWFjcm9Bc3NlbWJsZXI6OmZpcnN0UmVnaXN0ZXIoKTsgcmVnIDw9IE1hY3JvQXNzZW1ibGVy
OjpsYXN0UmVnaXN0ZXIoKTsgcmVnID0gc3RhdGljX2Nhc3Q8TWFjcm9Bc3NlbWJsZXI6OlJlZ2lz
dGVySUQ+KHJlZyArIDEpKSB7CiAgICAgICAgIGlmICgha2V5LnVzZWRSZWdpc3RlcnMoKS5nZXQo
cmVnKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBqaXQuc3RvcmVQdHIocmVnLCBB
c3NlbWJseUhlbHBlcnM6OkFkZHJlc3MoTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lz
dGVyLCBjdXJyZW50T2Zmc2V0KSk7CisgICAgICAgIHN0b3JlU3Bvb2xlci5zdG9yZUdQUih7IHJl
Zywgc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihjdXJyZW50T2Zmc2V0KSB9KTsKICAgICAgICAgY3Vy
cmVudE9mZnNldCArPSBzaXplb2Yodm9pZCopOwogICAgIH0KLSAgICAKKyAgICBzdG9yZVNwb29s
ZXIuZmx1c2hHUFIoKTsKKwogICAgIGZvciAoTWFjcm9Bc3NlbWJsZXI6OkZQUmVnaXN0ZXJJRCBy
ZWcgPSBNYWNyb0Fzc2VtYmxlcjo6Zmlyc3RGUFJlZ2lzdGVyKCk7IHJlZyA8PSBNYWNyb0Fzc2Vt
Ymxlcjo6bGFzdEZQUmVnaXN0ZXIoKTsgcmVnID0gc3RhdGljX2Nhc3Q8TWFjcm9Bc3NlbWJsZXI6
OkZQUmVnaXN0ZXJJRD4ocmVnICsgMSkpIHsKICAgICAgICAgaWYgKCFrZXkudXNlZFJlZ2lzdGVy
cygpLmdldChyZWcpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGppdC5zdG9yZURv
dWJsZShyZWcsIEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQ
b2ludGVyUmVnaXN0ZXIsIGN1cnJlbnRPZmZzZXQpKTsKKyAgICAgICAgc3RvcmVTcG9vbGVyLnN0
b3JlRlBSKHsgcmVnLCBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KGN1cnJlbnRPZmZzZXQpIH0pOwog
ICAgICAgICBjdXJyZW50T2Zmc2V0ICs9IHNpemVvZihkb3VibGUpOwogICAgIH0KLSAgICAKKyAg
ICBzdG9yZVNwb29sZXIuZmx1c2hGUFIoKTsKKwogICAgIGppdC5wcmVzZXJ2ZVJldHVybkFkZHJl
c3NBZnRlckNhbGwoR1BSSW5mbzo6bm9uQXJnR1BSMSk7CiAgICAgaml0LnN0b3JlUHRyKEdQUklu
Zm86Om5vbkFyZ0dQUjEsIEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6
c3RhY2tQb2ludGVyUmVnaXN0ZXIsIGtleS5vZmZzZXQoKSkpOwogICAgIGppdC5wcmVwYXJlQ2Fs
bE9wZXJhdGlvbih2bSk7CkBAIC0yMTAsMjQgKzIxNiwyOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IHNsCiAgICAgaml0LmxvYWRQdHIoQXNzZW1ibHlIZWxwZXJzOjpB
ZGRyZXNzKE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlciwga2V5Lm9mZnNldCgp
KSwgR1BSSW5mbzo6bm9uUHJlc2VydmVkTm9uUmV0dXJuR1BSKTsKICAgICBqaXQucmVzdG9yZVJl
dHVybkFkZHJlc3NCZWZvcmVSZXR1cm4oR1BSSW5mbzo6bm9uUHJlc2VydmVkTm9uUmV0dXJuR1BS
KTsKICAgICAKKyAgICBBc3NlbWJseUhlbHBlcnM6OkxvYWRSZWdTcG9vbGVyIGxvYWRTcG9vbGVy
KGppdCwgTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKwogICAgIGZvciAo
TWFjcm9Bc3NlbWJsZXI6OkZQUmVnaXN0ZXJJRCByZWcgPSBNYWNyb0Fzc2VtYmxlcjo6bGFzdEZQ
UmVnaXN0ZXIoKTsgOyByZWcgPSBzdGF0aWNfY2FzdDxNYWNyb0Fzc2VtYmxlcjo6RlBSZWdpc3Rl
cklEPihyZWcgLSAxKSkgewogICAgICAgICBpZiAoa2V5LnVzZWRSZWdpc3RlcnMoKS5nZXQocmVn
KSkgewogICAgICAgICAgICAgY3VycmVudE9mZnNldCAtPSBzaXplb2YoZG91YmxlKTsKLSAgICAg
ICAgICAgIGppdC5sb2FkRG91YmxlKEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhNYWNyb0Fzc2Vt
Ymxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIGN1cnJlbnRPZmZzZXQpLCByZWcpOworICAgICAg
ICAgICAgbG9hZFNwb29sZXIubG9hZEZQUih7IHJlZywgc3RhdGljX2Nhc3Q8cHRyZGlmZl90Pihj
dXJyZW50T2Zmc2V0KSB9KTsKICAgICAgICAgfQogICAgICAgICBpZiAocmVnID09IE1hY3JvQXNz
ZW1ibGVyOjpmaXJzdEZQUmVnaXN0ZXIoKSkKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KLSAg
ICAKKyAgICBsb2FkU3Bvb2xlci5mbHVzaEZQUigpOworCiAgICAgZm9yIChNYWNyb0Fzc2VtYmxl
cjo6UmVnaXN0ZXJJRCByZWcgPSBNYWNyb0Fzc2VtYmxlcjo6bGFzdFJlZ2lzdGVyKCk7IDsgcmVn
ID0gc3RhdGljX2Nhc3Q8TWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQ+KHJlZyAtIDEpKSB7CiAg
ICAgICAgIGlmIChrZXkudXNlZFJlZ2lzdGVycygpLmdldChyZWcpKSB7CiAgICAgICAgICAgICBj
dXJyZW50T2Zmc2V0IC09IHNpemVvZih2b2lkKik7Ci0gICAgICAgICAgICBqaXQubG9hZFB0cihB
c3NlbWJseUhlbHBlcnM6OkFkZHJlc3MoTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lz
dGVyLCBjdXJyZW50T2Zmc2V0KSwgcmVnKTsKKyAgICAgICAgICAgIGxvYWRTcG9vbGVyLmxvYWRH
UFIoeyByZWcsIHN0YXRpY19jYXN0PHB0cmRpZmZfdD4oY3VycmVudE9mZnNldCkgfSk7CiAgICAg
ICAgIH0KICAgICAgICAgaWYgKHJlZyA9PSBNYWNyb0Fzc2VtYmxlcjo6Zmlyc3RSZWdpc3Rlcigp
KQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIAorICAgIGxvYWRTcG9vbGVyLmZsdXNo
R1BSKCk7CisKICAgICBqaXQucmV0KCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGpp
dCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpGVExUaHVuayk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCShyZXZp
c2lvbiAyNzg4ODYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVy
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoSklUKQog
CiAjaW5jbHVkZSAiQWNjZXNzQ2FzZS5oIgorI2luY2x1ZGUgIkFzc2VtYmx5SGVscGVyc1Nwb29s
ZXJzLmgiCiAjaW5jbHVkZSAiSklUT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkpTQXJyYXlCdWZm
ZXJWaWV3LmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKQEAgLTYwNiw0MiArNjA3
LDkzIEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjpyZXN0b3JlQ2FsbGVlU2F2ZXMKIAogICAgIEdQ
UlJlZyBzY3JhdGNoID0gSW52YWxpZEdQUlJlZzsKICAgICB1bnNpZ25lZCBzY3JhdGNoR1BSRW50
cnlJbmRleCA9IDA7CisjaWYgQ1BVKEFSTTY0KQorICAgIC8vIFdlIGRvbid0IG5lZWQgYSBzZWNv
bmQgc2NyYXRjaCBHUFIsIGJ1dCB3ZSdsbCBhbHNvIGRlZmVyIHJlc3RvcmluZyB0aGlzCisgICAg
Ly8gR1BSIChpbiB0aGUgbmV4dCBzbG90IGFmdGVyIHRoZSBzY3JhdGNoKSBzbyB0aGF0IHdlIGNh
biByZXN0b3JlIHRoZW0gdG9nZXRoZXIKKyAgICAvLyBsYXRlciB1c2luZyBhIGxvYWRQYWlyNjQu
CisgICAgR1BSUmVnIHVudXNlZE5leHRTbG90R1BSID0gSW52YWxpZEdQUlJlZzsKKyNlbmRpZgog
Ci0gICAgLy8gVXNlIHRoZSBmaXJzdCBHUFIgZW50cnkncyByZWdpc3RlciBhcyBvdXIgc2NyYXRj
aC4KKyAgICAvLyBVc2UgdGhlIGZpcnN0IEdQUiBlbnRyeSdzIHJlZ2lzdGVyIGFzIG91ciBiYXNl
R1BSLgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZWdpc3RlckNvdW50OyBpKyspIHsK
ICAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCBlbnRyeSA9IGFsbENhbGxlZVNhdmVzLT5hdChpKTsK
LSAgICAgICAgaWYgKGRvbnRSZXN0b3JlUmVnaXN0ZXJzLmdldChlbnRyeS5yZWcoKSkpCisgICAg
ICAgIGlmIChkb250UmVzdG9yZVJlZ2lzdGVycy5jb250YWlucyhlbnRyeS5yZWcoKSkpCiAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKGVudHJ5LnJlZygpLmlzR1BSKCkpIHsKKyNp
ZiBDUFUoQVJNNjQpCisgICAgICAgICAgICBpZiAoaSArIDEgPCByZWdpc3RlckNvdW50KSB7Cisg
ICAgICAgICAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCBlbnRyeTIgPSBhbGxDYWxsZWVTYXZlcy0+
YXQoaSArIDEpOworICAgICAgICAgICAgICAgIGlmICghZG9udFJlc3RvcmVSZWdpc3RlcnMuY29u
dGFpbnMoZW50cnkyLnJlZygpKQorICAgICAgICAgICAgICAgICAgICAmJiBlbnRyeTIucmVnKCku
aXNHUFIoKQorICAgICAgICAgICAgICAgICAgICAmJiBlbnRyeTIub2Zmc2V0KCkgPT0gZW50cnku
b2Zmc2V0KCkgKyBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KHNpemVvZihDUFVSZWdpc3RlcikpKSB7
CisgICAgICAgICAgICAgICAgICAgIHNjcmF0Y2hHUFJFbnRyeUluZGV4ID0gaTsKKyAgICAgICAg
ICAgICAgICAgICAgc2NyYXRjaCA9IGVudHJ5LnJlZygpLmdwcigpOworICAgICAgICAgICAgICAg
ICAgICB1bnVzZWROZXh0U2xvdEdQUiA9IGVudHJ5Mi5yZWcoKS5ncHIoKTsKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorI2Vsc2UK
ICAgICAgICAgICAgIHNjcmF0Y2hHUFJFbnRyeUluZGV4ID0gaTsKICAgICAgICAgICAgIHNjcmF0
Y2ggPSBlbnRyeS5yZWcoKS5ncHIoKTsKICAgICAgICAgICAgIGJyZWFrOworI2VuZGlmCiAgICAg
ICAgIH0KICAgICB9CiAgICAgQVNTRVJUKHNjcmF0Y2ggIT0gSW52YWxpZEdQUlJlZyk7CisgICAg
CisgICAgUmVnaXN0ZXJTZXQgc2tpcExpc3Q7CisgICAgc2tpcExpc3Quc2V0KGRvbnRSZXN0b3Jl
UmVnaXN0ZXJzKTsKKworICAgIC8vIFNraXAgdGhlIHNjcmF0Y2ggcmVnaXN0ZXIocykuIFdlJ2xs
IHJlc3RvcmUgdGhlbSBsYXRlci4KKyAgICBza2lwTGlzdC5hZGQoc2NyYXRjaCk7CisjaWYgQ1BV
KEFSTTY0KQorICAgIFJFTEVBU0VfQVNTRVJUKHVudXNlZE5leHRTbG90R1BSICE9IEludmFsaWRH
UFJSZWcpOworICAgIHNraXBMaXN0LmFkZCh1bnVzZWROZXh0U2xvdEdQUik7CisjZW5kaWYKIAog
ICAgIGxvYWRQdHIoJnRvcEVudHJ5RnJhbWUsIHNjcmF0Y2gpOwogICAgIGFkZFB0cihUcnVzdGVk
SW1tMzIoRW50cnlGcmFtZTo6Y2FsbGVlU2F2ZVJlZ2lzdGVyc0J1ZmZlck9mZnNldCgpKSwgc2Ny
YXRjaCk7CiAKKyAgICBMb2FkUmVnU3Bvb2xlciBzcG9vbGVyKCp0aGlzLCBzY3JhdGNoKTsKKwog
ICAgIC8vIFJlc3RvcmUgYWxsIGNhbGxlZSBzYXZlcyBleGNlcHQgZm9yIHRoZSBzY3JhdGNoLgot
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZWdpc3RlckNvdW50OyBpKyspIHsKKyAgICB1
bnNpZ25lZCBpID0gMDsKKyAgICBmb3IgKDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkrKykgewogICAg
ICAgICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5ID0gYWxsQ2FsbGVlU2F2ZXMtPmF0KGkpOwotICAg
ICAgICBpZiAoZG9udFJlc3RvcmVSZWdpc3RlcnMuZ2V0KGVudHJ5LnJlZygpKSkKKyAgICAgICAg
aWYgKHNraXBMaXN0LmNvbnRhaW5zKGVudHJ5LnJlZygpKSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICBpZiAoaSA9PSBzY3JhdGNoR1BSRW50cnlJbmRleCkKKyAgICAgICAgaWYgKCFl
bnRyeS5yZWcoKS5pc0dQUigpKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIHNwb29sZXIu
bG9hZEdQUihlbnRyeSk7CisgICAgfQorICAgIHNwb29sZXIuZmx1c2hHUFIoKTsKKyAgICBmb3Ig
KDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkrKykgeworICAgICAgICBSZWdpc3RlckF0T2Zmc2V0IGVu
dHJ5ID0gYWxsQ2FsbGVlU2F2ZXMtPmF0KGkpOworICAgICAgICBpZiAoc2tpcExpc3QuY29udGFp
bnMoZW50cnkucmVnKCkpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGxvYWRSZWco
QWRkcmVzcyhzY3JhdGNoLCBlbnRyeS5vZmZzZXQoKSksIGVudHJ5LnJlZygpKTsKKyAgICAgICAg
QVNTRVJUKCFlbnRyeS5yZWcoKS5pc0dQUigpKTsKKyAgICAgICAgc3Bvb2xlci5sb2FkRlBSKGVu
dHJ5KTsKICAgICB9CisgICAgc3Bvb2xlci5mbHVzaEZQUigpOwogCiAgICAgLy8gUmVzdG9yZSB0
aGUgY2FsbGVlIHNhdmUgdmFsdWUgb2YgdGhlIHNjcmF0Y2guCiAgICAgUmVnaXN0ZXJBdE9mZnNl
dCBlbnRyeSA9IGFsbENhbGxlZVNhdmVzLT5hdChzY3JhdGNoR1BSRW50cnlJbmRleCk7CiAgICAg
QVNTRVJUKCFkb250UmVzdG9yZVJlZ2lzdGVycy5nZXQoZW50cnkucmVnKCkpKTsKICAgICBBU1NF
UlQoZW50cnkucmVnKCkuaXNHUFIoKSk7CiAgICAgQVNTRVJUKHNjcmF0Y2ggPT0gZW50cnkucmVn
KCkuZ3ByKCkpOwotICAgIGxvYWRSZWcoQWRkcmVzcyhzY3JhdGNoLCBlbnRyeS5vZmZzZXQoKSks
IHNjcmF0Y2gpOworI2lmIENQVShBUk02NCkKKyAgICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5MiA9
IGFsbENhbGxlZVNhdmVzLT5hdChzY3JhdGNoR1BSRW50cnlJbmRleCArIDEpOworICAgIEFTU0VS
VF9VTlVTRUQoZW50cnkyLCAhZG9udFJlc3RvcmVSZWdpc3RlcnMuZ2V0KGVudHJ5Mi5yZWcoKSkp
OworICAgIEFTU0VSVChlbnRyeTIucmVnKCkuaXNHUFIoKSk7CisgICAgQVNTRVJUKHVudXNlZE5l
eHRTbG90R1BSID09IGVudHJ5Mi5yZWcoKS5ncHIoKSk7CisgICAgbG9hZFBhaXI2NChzY3JhdGNo
LCBUcnVzdGVkSW1tMzIoZW50cnkub2Zmc2V0KCkpLCBzY3JhdGNoLCB1bnVzZWROZXh0U2xvdEdQ
Uik7CiAjZWxzZQotICAgIFVOVVNFRF9QQVJBTSh0b3BFbnRyeUZyYW1lKTsKKyAgICBsb2FkUHRy
KEFkZHJlc3Moc2NyYXRjaCwgZW50cnkub2Zmc2V0KCkpLCBzY3JhdGNoKTsKICNlbmRpZgorCisj
ZWxzZQorICAgIFVOVVNFRF9QQVJBTSh0b3BFbnRyeUZyYW1lKTsKKyNlbmRpZiAvLyBOVU1CRVJf
T0ZfQ0FMTEVFX1NBVkVTX1JFR0lTVEVSUyA+IDAKIH0KIAogdm9pZCBBc3NlbWJseUhlbHBlcnM6
OmVtaXRWaXJ0dWFsQ2FsbChWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxMaW5rSW5mbyogaW5mbykKQEAgLTk5OSwxMyArMTA1MSwyNyBAQCB2b2lkIEFzc2VtYmx5SGVs
cGVyczo6Y29weUNhbGxlZVNhdmVzVG9FCiAgICAgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGFsbENh
bGxlZVNhdmVzID0gUmVnaXN0ZXJTZXQ6OnZtQ2FsbGVlU2F2ZVJlZ2lzdGVyT2Zmc2V0cygpOwog
ICAgIFJlZ2lzdGVyU2V0IGRvbnRDb3B5UmVnaXN0ZXJzID0gUmVnaXN0ZXJTZXQ6OnN0YWNrUmVn
aXN0ZXJzKCk7CiAgICAgdW5zaWduZWQgcmVnaXN0ZXJDb3VudCA9IGFsbENhbGxlZVNhdmVzLT5z
aXplKCk7Ci0gICAgCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlZ2lzdGVyQ291bnQ7
IGkrKykgeworCisgICAgU3RvcmVSZWdTcG9vbGVyIHNwb29sZXIoKnRoaXMsIGNhbGxlZVNhdmVz
QnVmZmVyKTsKKworICAgIHVuc2lnbmVkIGkgPSAwOworICAgIGZvciAoOyBpIDwgcmVnaXN0ZXJD
b3VudDsgaSsrKSB7CiAgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQgZW50cnkgPSBhbGxDYWxsZWVT
YXZlcy0+YXQoaSk7Ci0gICAgICAgIGlmIChkb250Q29weVJlZ2lzdGVycy5nZXQoZW50cnkucmVn
KCkpKQorICAgICAgICBpZiAoZG9udENvcHlSZWdpc3RlcnMuY29udGFpbnMoZW50cnkucmVnKCkp
KQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICghZW50cnkucmVnKCkuaXNHUFIo
KSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBzcG9vbGVyLnN0b3JlR1BSKGVudHJ5KTsK
KyAgICB9CisgICAgc3Bvb2xlci5mbHVzaEdQUigpOworICAgIGZvciAoOyBpIDwgcmVnaXN0ZXJD
b3VudDsgaSsrKSB7CisgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQgZW50cnkgPSBhbGxDYWxsZWVT
YXZlcy0+YXQoaSk7CisgICAgICAgIGlmIChkb250Q29weVJlZ2lzdGVycy5jb250YWlucyhlbnRy
eS5yZWcoKSkpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgc3RvcmVSZWcoZW50cnku
cmVnKCksIEFkZHJlc3MoY2FsbGVlU2F2ZXNCdWZmZXIsIGVudHJ5Lm9mZnNldCgpKSk7CisgICAg
ICAgIHNwb29sZXIuc3RvcmVGUFIoZW50cnkpOwogICAgIH0KKyAgICBzcG9vbGVyLmZsdXNoRlBS
KCk7CisKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGNhbGxlZVNhdmVzQnVmZmVyKTsKICNlbmRp
ZgpAQCAtMTEwMyw2ICsxMTY5LDE4MyBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6Y2FnZUNvbmRp
dGlvbmFsbHlBCiAgICAgVU5VU0VEX1BBUkFNKHNjcmF0Y2gpOwogfQogCit2b2lkIEFzc2VtYmx5
SGVscGVyczo6ZW1pdFNhdmUoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QmIGxpc3QpCit7Cisg
ICAgU3RvcmVSZWdTcG9vbGVyIHNwb29sZXIoKnRoaXMsIGZyYW1lUG9pbnRlclJlZ2lzdGVyKTsK
KworICAgIHNpemVfdCBsaXN0U2l6ZSA9IGxpc3Quc2l6ZSgpOworICAgIHNpemVfdCBpID0gMDsK
KyAgICBmb3IgKDsgaSA8IGxpc3RTaXplOyBpKyspIHsKKyAgICAgICAgYXV0byBlbnRyeSA9IGxp
c3QuYXQoaSk7CisgICAgICAgIGlmICghZW50cnkucmVnKCkuaXNHUFIoKSkKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBzcG9vbGVyLnN0b3JlR1BSKGVudHJ5KTsKKyAgICB9CisgICAgc3Bv
b2xlci5mbHVzaEdQUigpOworCisgICAgZm9yICg7IGkgPCBsaXN0U2l6ZTsgaSsrKQorICAgICAg
ICBzcG9vbGVyLnN0b3JlRlBSKGxpc3QuYXQoaSkpOworICAgIHNwb29sZXIuZmx1c2hGUFIoKTsK
K30KKwordm9pZCBBc3NlbWJseUhlbHBlcnM6OmVtaXRSZXN0b3JlKGNvbnN0IFJlZ2lzdGVyQXRP
ZmZzZXRMaXN0JiBsaXN0KQoreworICAgIExvYWRSZWdTcG9vbGVyIHNwb29sZXIoKnRoaXMsIGZy
YW1lUG9pbnRlclJlZ2lzdGVyKTsKKworICAgIHNpemVfdCBsaXN0U2l6ZSA9IGxpc3Quc2l6ZSgp
OworICAgIHNpemVfdCBpID0gMDsKKyAgICBmb3IgKDsgaSA8IGxpc3RTaXplOyBpKyspIHsKKyAg
ICAgICAgYXV0byBlbnRyeSA9IGxpc3QuYXQoaSk7CisgICAgICAgIGlmICghZW50cnkucmVnKCku
aXNHUFIoKSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBzcG9vbGVyLmxvYWRHUFIoZW50
cnkpOworICAgIH0KKyAgICBzcG9vbGVyLmZsdXNoR1BSKCk7CisKKyAgICBmb3IgKDsgaSA8IGxp
c3RTaXplOyBpKyspCisgICAgICAgIHNwb29sZXIubG9hZEZQUihsaXN0LmF0KGkpKTsKKyAgICBz
cG9vbGVyLmZsdXNoRlBSKCk7Cit9CisKK3ZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0U2F2ZUNh
bGxlZVNhdmVzRm9yKGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBjYWxsZWVTYXZlcykKK3sK
KyAgICBSZWdpc3RlclNldCBkb250U2F2ZVJlZ2lzdGVycyA9IFJlZ2lzdGVyU2V0KFJlZ2lzdGVy
U2V0OjpzdGFja1JlZ2lzdGVycygpLCBSZWdpc3RlclNldDo6YWxsRlBScygpKTsKKyAgICB1bnNp
Z25lZCByZWdpc3RlckNvdW50ID0gY2FsbGVlU2F2ZXMtPnNpemUoKTsKKworICAgIFN0b3JlUmVn
U3Bvb2xlciBzcG9vbGVyKCp0aGlzLCBmcmFtZVBvaW50ZXJSZWdpc3Rlcik7CisKKyAgICB1bnNp
Z25lZCBpID0gMDsKKyAgICBmb3IgKDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkrKykgeworICAgICAg
ICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5ID0gY2FsbGVlU2F2ZXMtPmF0KGkpOworICAgICAgICBp
ZiAoZG9udFNhdmVSZWdpc3RlcnMuY29udGFpbnMoZW50cnkucmVnKCkpKQorICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIHNwb29sZXIuc3RvcmVHUFIoZW50cnkpOworICAgIH0KKyAgICBz
cG9vbGVyLmZsdXNoR1BSKCk7CisgICAgZm9yICg7IGkgPCByZWdpc3RlckNvdW50OyBpKyspIHsK
KyAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCBlbnRyeSA9IGNhbGxlZVNhdmVzLT5hdChpKTsKKyAg
ICAgICAgaWYgKGRvbnRTYXZlUmVnaXN0ZXJzLmNvbnRhaW5zKGVudHJ5LnJlZygpKSkKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICBzcG9vbGVyLnN0b3JlRlBSKGVudHJ5KTsKKyAgICB9
CisgICAgc3Bvb2xlci5mbHVzaEZQUigpOworfQorCit2b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1p
dFJlc3RvcmVDYWxsZWVTYXZlc0Zvcihjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCogY2FsbGVl
U2F2ZXMpCit7CisgICAgUmVnaXN0ZXJTZXQgZG9udFJlc3RvcmVSZWdpc3RlcnMgPSBSZWdpc3Rl
clNldChSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKSwgUmVnaXN0ZXJTZXQ6OmFsbEZQUnMo
KSk7CisgICAgdW5zaWduZWQgcmVnaXN0ZXJDb3VudCA9IGNhbGxlZVNhdmVzLT5zaXplKCk7Cisg
ICAgCisgICAgTG9hZFJlZ1Nwb29sZXIgc3Bvb2xlcigqdGhpcywgZnJhbWVQb2ludGVyUmVnaXN0
ZXIpOworCisgICAgdW5zaWduZWQgaSA9IDA7CisgICAgZm9yICg7IGkgPCByZWdpc3RlckNvdW50
OyBpKyspIHsKKyAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCBlbnRyeSA9IGNhbGxlZVNhdmVzLT5h
dChpKTsKKyAgICAgICAgaWYgKGRvbnRSZXN0b3JlUmVnaXN0ZXJzLmdldChlbnRyeS5yZWcoKSkp
CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgc3Bvb2xlci5sb2FkR1BSKGVudHJ5KTsK
KyAgICB9CisgICAgc3Bvb2xlci5mbHVzaEdQUigpOworICAgIGZvciAoOyBpIDwgcmVnaXN0ZXJD
b3VudDsgaSsrKSB7CisgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQgZW50cnkgPSBjYWxsZWVTYXZl
cy0+YXQoaSk7CisgICAgICAgIGlmIChkb250UmVzdG9yZVJlZ2lzdGVycy5nZXQoZW50cnkucmVn
KCkpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIHNwb29sZXIubG9hZEZQUihlbnRy
eSk7CisgICAgfQorICAgIHNwb29sZXIuZmx1c2hGUFIoKTsKK30KKwordm9pZCBBc3NlbWJseUhl
bHBlcnM6OmNvcHlMTEludEJhc2VsaW5lQ2FsbGVlU2F2ZXNGcm9tRnJhbWVPclJlZ2lzdGVyVG9F
bnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIoRW50cnlGcmFtZSomIHRvcEVudHJ5RnJhbWUsIGNv
bnN0IFRlbXBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycykKK3sKKyNpZiBOVU1CRVJfT0ZfQ0FM
TEVFX1NBVkVTX1JFR0lTVEVSUyA+IDAKKyAgICAvLyBDb3B5IHNhdmVkIGNhbGxlZVNhdmVzIG9u
IHN0YWNrIG9yIHVuc2F2ZWQgY2FsbGVlU2F2ZXMgaW4gcmVnaXN0ZXIgdG8gdm0gY2FsbGVlU2F2
ZSBidWZmZXIKKyAgICBHUFJSZWcgZGVzdEJ1ZmZlckdQUiA9IHVzZWRSZWdpc3RlcnMuZ2V0RnJl
ZUdQUigwKTsKKyAgICBHUFJSZWcgdGVtcDEgPSB1c2VkUmVnaXN0ZXJzLmdldEZyZWVHUFIoMSk7
CisgICAgRlBSUmVnIGZwVGVtcDEgPSB1c2VkUmVnaXN0ZXJzLmdldEZyZWVGUFIoMCk7CisgICAg
R1BSUmVnIHRlbXAyID0gaXNBUk02NCgpID8gdXNlZFJlZ2lzdGVycy5nZXRGcmVlR1BSKDIpIDog
SW52YWxpZEdQUlJlZzsKKyAgICBGUFJSZWcgZnBUZW1wMiA9IGlzQVJNNjQoKSA/IHVzZWRSZWdp
c3RlcnMuZ2V0RnJlZUZQUigxKSA6IEludmFsaWRGUFJSZWc7CisKKyAgICBsb2FkUHRyKCZ0b3BF
bnRyeUZyYW1lLCBkZXN0QnVmZmVyR1BSKTsKKyAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKEVudHJ5
RnJhbWU6OmNhbGxlZVNhdmVSZWdpc3RlcnNCdWZmZXJPZmZzZXQoKSksIGRlc3RCdWZmZXJHUFIp
OworCisgICAgQ29weVNwb29sZXIgc3Bvb2xlcigqdGhpcywgZnJhbWVQb2ludGVyUmVnaXN0ZXIs
IGRlc3RCdWZmZXJHUFIsIHRlbXAxLCB0ZW1wMiwgZnBUZW1wMSwgZnBUZW1wMik7CisKKyAgICBS
ZWdpc3RlckF0T2Zmc2V0TGlzdCogYWxsQ2FsbGVlU2F2ZXMgPSBSZWdpc3RlclNldDo6dm1DYWxs
ZWVTYXZlUmVnaXN0ZXJPZmZzZXRzKCk7CisgICAgY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3Qq
IGN1cnJlbnRDYWxsZWVTYXZlcyA9ICZSZWdpc3RlckF0T2Zmc2V0TGlzdDo6bGxpbnRCYXNlbGlu
ZUNhbGxlZVNhdmVSZWdpc3RlcnMoKTsKKyAgICBSZWdpc3RlclNldCBkb250Q29weVJlZ2lzdGVy
cyA9IFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpOworICAgIHVuc2lnbmVkIHJlZ2lzdGVy
Q291bnQgPSBhbGxDYWxsZWVTYXZlcy0+c2l6ZSgpOworCisgICAgdW5zaWduZWQgaSA9IDA7Cisg
ICAgZm9yICg7IGkgPCByZWdpc3RlckNvdW50OyBpKyspIHsKKyAgICAgICAgUmVnaXN0ZXJBdE9m
ZnNldCBlbnRyeSA9IGFsbENhbGxlZVNhdmVzLT5hdChpKTsKKyAgICAgICAgaWYgKGRvbnRDb3B5
UmVnaXN0ZXJzLmNvbnRhaW5zKGVudHJ5LnJlZygpKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICBSZWdpc3RlckF0T2Zmc2V0KiBjdXJyZW50RnJhbWVFbnRyeSA9IGN1cnJlbnRDYWxs
ZWVTYXZlcy0+ZmluZChlbnRyeS5yZWcoKSk7CisKKyAgICAgICAgaWYgKCFlbnRyeS5yZWcoKS5p
c0dQUigpKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmIChjdXJyZW50RnJhbWVFbnRy
eSkKKyAgICAgICAgICAgIHNwb29sZXIubG9hZEdQUihjdXJyZW50RnJhbWVFbnRyeS0+b2Zmc2V0
KCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzcG9vbGVyLmNvcHlHUFIoZW50cnkucmVn
KCkuZ3ByKCkpOworICAgICAgICBzcG9vbGVyLnN0b3JlR1BSKGVudHJ5Lm9mZnNldCgpKTsKKyAg
ICB9CisgICAgc3Bvb2xlci5mbHVzaEdQUigpOworCisgICAgZm9yICg7IGkgPCByZWdpc3RlckNv
dW50OyBpKyspIHsKKyAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCBlbnRyeSA9IGFsbENhbGxlZVNh
dmVzLT5hdChpKTsKKyAgICAgICAgaWYgKGRvbnRDb3B5UmVnaXN0ZXJzLmdldChlbnRyeS5yZWco
KSkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCogY3Vy
cmVudEZyYW1lRW50cnkgPSBjdXJyZW50Q2FsbGVlU2F2ZXMtPmZpbmQoZW50cnkucmVnKCkpOwor
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGVudHJ5LnJlZygpLmlzRlBSKCkpOworICAgICAgICBp
ZiAoY3VycmVudEZyYW1lRW50cnkpCisgICAgICAgICAgICBzcG9vbGVyLmxvYWRGUFIoY3VycmVu
dEZyYW1lRW50cnktPm9mZnNldCgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc3Bvb2xl
ci5jb3B5RlBSKGVudHJ5LnJlZygpLmZwcigpKTsKKyAgICAgICAgc3Bvb2xlci5zdG9yZUZQUihl
bnRyeS5vZmZzZXQoKSk7CisgICAgfQorICAgIHNwb29sZXIuZmx1c2hGUFIoKTsKKworI2Vsc2UK
KyAgICBVTlVTRURfUEFSQU0odG9wRW50cnlGcmFtZSk7CisgICAgVU5VU0VEX1BBUkFNKHVzZWRS
ZWdpc3RlcnMpOworI2VuZGlmCit9CisKK3ZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0U2F2ZU9y
Q29weUxMSW50QmFzZWxpbmVDYWxsZWVTYXZlc0ZvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmly
dHVhbFJlZ2lzdGVyIG9mZnNldFZpcnR1YWxSZWdpc3RlciwgUmVzdG9yZVRhZ1JlZ2lzdGVyTW9k
ZSB0YWdSZWdpc3Rlck1vZGUsIEdQUlJlZyB0ZW1wMSwgR1BSUmVnIHRlbXAyLCBHUFJSZWcgdGVt
cDMpCit7CisgICAgQVNTRVJUKGNvZGVCbG9jayk7CisKKyAgICBSRUxFQVNFX0FTU0VSVCghSklU
Q29kZTo6aXNPcHRpbWl6aW5nSklUKGNvZGVCbG9jay0+aml0VHlwZSgpKSk7CisgICAgUkVMRUFT
RV9BU1NFUlQoY29kZUJsb2NrLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCkgPT0gJlJlZ2lzdGVyQXRP
ZmZzZXRMaXN0OjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsKKyAgICBjb25z
dCBSZWdpc3RlckF0T2Zmc2V0TGlzdCogY2FsbGVlU2F2ZXMgPSAmUmVnaXN0ZXJBdE9mZnNldExp
c3Q6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCk7CisgICAgUmVnaXN0ZXJTZXQg
ZG9udFNhdmVSZWdpc3RlcnMgPSBSZWdpc3RlclNldChSZWdpc3RlclNldDo6c3RhY2tSZWdpc3Rl
cnMoKSwgUmVnaXN0ZXJTZXQ6OmFsbEZQUnMoKSk7CisgICAgdW5zaWduZWQgcmVnaXN0ZXJDb3Vu
dCA9IGNhbGxlZVNhdmVzLT5zaXplKCk7CisKKyAgICBHUFJSZWcgZHN0QnVmZmVyR1BSID0gdGVt
cDE7CisgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihvZmZzZXRWaXJ0dWFsUmVnaXN0ZXIub2Zmc2V0
SW5CeXRlcygpKSwgZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGRzdEJ1ZmZlckdQUik7CisKKyAgICBD
b3B5U3Bvb2xlciBzcG9vbGVyKCp0aGlzLCBmcmFtZVBvaW50ZXJSZWdpc3RlciwgZHN0QnVmZmVy
R1BSLCB0ZW1wMiwgdGVtcDMpOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlZ2lz
dGVyQ291bnQ7IGkrKykgeworICAgICAgICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5ID0gY2FsbGVl
U2F2ZXMtPmF0KGkpOworICAgICAgICBpZiAoZG9udFNhdmVSZWdpc3RlcnMuZ2V0KGVudHJ5LnJl
ZygpKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAKKyNpZiBVU0UoSlNWQUxVRTMy
XzY0KQorICAgICAgICBVTlVTRURfUEFSQU0odGFnUmVnaXN0ZXJNb2RlKTsKKyNlbHNlCisgICAg
ICAgIGlmICh0YWdSZWdpc3Rlck1vZGUgPT0gQ29weUJhc2VsaW5lQ2FsbGVlU2F2ZWRSZWdpc3Rl
cnNGcm9tQmFzZUZyYW1lKQorICAgICAgICAgICAgc3Bvb2xlci5sb2FkR1BSKGVudHJ5Lm9mZnNl
dCgpKTsKKyAgICAgICAgZWxzZQorI2VuZGlmCisgICAgICAgICAgICBzcG9vbGVyLmNvcHlHUFIo
ZW50cnkucmVnKCkuZ3ByKCkpOworICAgICAgICBzcG9vbGVyLnN0b3JlR1BSKGVudHJ5Lm9mZnNl
dCgpKTsKKyAgICB9CisgICAgc3Bvb2xlci5mbHVzaEdQUigpOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShKSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHJldmlzaW9uIDI3ODg4NikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5
NSwzMSArMjk1LDE5IEBAIHB1YmxpYzoKICAgICAgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIodmFs
dWUucGF5bG9hZCgpKSwgYWRkcmVzcy53aXRoT2Zmc2V0KFBheWxvYWRPZmZzZXQpKTsKICNlbmRp
ZgogICAgIH0KLSAgICAKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPiBjbGFzcyBTcG9vbGVy
OworICAgIGNsYXNzIExvYWRSZWdTcG9vbGVyOworICAgIGNsYXNzIFN0b3JlUmVnU3Bvb2xlcjsK
KyAgICBjbGFzcyBDb3B5U3Bvb2xlcjsKKwogICAgIEFkZHJlc3MgYWRkcmVzc0Zvcihjb25zdCBS
ZWdpc3RlckF0T2Zmc2V0JiBlbnRyeSkKICAgICB7CiAgICAgICAgIHJldHVybiBBZGRyZXNzKEdQ
UkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBlbnRyeS5vZmZzZXQoKSk7CiAgICAgfQotICAgIAot
ICAgIHZvaWQgZW1pdFNhdmUoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QmIGxpc3QpCi0gICAg
ewotICAgICAgICBmb3IgKGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXQmIGVudHJ5IDogbGlzdCkgewot
ICAgICAgICAgICAgaWYgKGVudHJ5LnJlZygpLmlzR1BSKCkpCi0gICAgICAgICAgICAgICAgc3Rv
cmVQdHIoZW50cnkucmVnKCkuZ3ByKCksIGFkZHJlc3NGb3IoZW50cnkpKTsKLSAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICBzdG9yZURvdWJsZShlbnRyeS5yZWcoKS5mcHIoKSwgYWRk
cmVzc0ZvcihlbnRyeSkpOwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIHZvaWQgZW1pdFJl
c3RvcmUoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QmIGxpc3QpCi0gICAgewotICAgICAgICBm
b3IgKGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXQmIGVudHJ5IDogbGlzdCkgewotICAgICAgICAgICAg
aWYgKGVudHJ5LnJlZygpLmlzR1BSKCkpCi0gICAgICAgICAgICAgICAgbG9hZFB0cihhZGRyZXNz
Rm9yKGVudHJ5KSwgZW50cnkucmVnKCkuZ3ByKCkpOwotICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgIGxvYWREb3VibGUoYWRkcmVzc0ZvcihlbnRyeSksIGVudHJ5LnJlZygpLmZwcigp
KTsKLSAgICAgICAgfQotICAgIH0KKworICAgIHZvaWQgZW1pdFNhdmUoY29uc3QgUmVnaXN0ZXJB
dE9mZnNldExpc3QmKTsKKyAgICB2b2lkIGVtaXRSZXN0b3JlKGNvbnN0IFJlZ2lzdGVyQXRPZmZz
ZXRMaXN0Jik7CiAKICAgICB2b2lkIGVtaXRTYXZlQ2FsbGVlU2F2ZXNGb3IoQ29kZUJsb2NrKiBj
b2RlQmxvY2spCiAgICAgewpAQCAtMzI5LDU0ICszMTcsMTEgQEAgcHVibGljOgogICAgICAgICBl
bWl0U2F2ZUNhbGxlZVNhdmVzRm9yKGNhbGxlZVNhdmVzKTsKICAgICB9CiAKLSAgICB2b2lkIGVt
aXRTYXZlQ2FsbGVlU2F2ZXNGb3IoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGNhbGxlZVNh
dmVzKQotICAgIHsKLSAgICAgICAgUmVnaXN0ZXJTZXQgZG9udFNhdmVSZWdpc3RlcnMgPSBSZWdp
c3RlclNldChSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKSwgUmVnaXN0ZXJTZXQ6OmFsbEZQ
UnMoKSk7Ci0gICAgICAgIHVuc2lnbmVkIHJlZ2lzdGVyQ291bnQgPSBjYWxsZWVTYXZlcy0+c2l6
ZSgpOwotCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZWdpc3RlckNvdW50OyBp
KyspIHsKLSAgICAgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQgZW50cnkgPSBjYWxsZWVTYXZlcy0+
YXQoaSk7Ci0gICAgICAgICAgICBpZiAoZG9udFNhdmVSZWdpc3RlcnMuZ2V0KGVudHJ5LnJlZygp
KSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIHN0b3JlUHRyKGVudHJ5
LnJlZygpLmdwcigpLCBBZGRyZXNzKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBlbnRyeS5vZmZzZXQo
KSkpOwotICAgICAgICB9Ci0gICAgfQorICAgIHZvaWQgZW1pdFNhdmVDYWxsZWVTYXZlc0Zvcihj
b25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCogY2FsbGVlU2F2ZXMpOwogICAgIAogICAgIGVudW0g
UmVzdG9yZVRhZ1JlZ2lzdGVyTW9kZSB7IFVzZUV4aXN0aW5nVGFnUmVnaXN0ZXJDb250ZW50cywg
Q29weUJhc2VsaW5lQ2FsbGVlU2F2ZWRSZWdpc3RlcnNGcm9tQmFzZUZyYW1lIH07CiAKLSAgICB2
b2lkIGVtaXRTYXZlT3JDb3B5Q2FsbGVlU2F2ZXNGb3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZp
cnR1YWxSZWdpc3RlciBvZmZzZXRWaXJ0dWFsUmVnaXN0ZXIsIFJlc3RvcmVUYWdSZWdpc3Rlck1v
ZGUgdGFnUmVnaXN0ZXJNb2RlLCBHUFJSZWcgdGVtcCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChj
b2RlQmxvY2spOwotICAgICAgICAKLSAgICAgICAgY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3Qq
IGNhbGxlZVNhdmVzID0gY29kZUJsb2NrLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCk7Ci0gICAgICAg
IFJlZ2lzdGVyU2V0IGRvbnRTYXZlUmVnaXN0ZXJzID0gUmVnaXN0ZXJTZXQoUmVnaXN0ZXJTZXQ6
OnN0YWNrUmVnaXN0ZXJzKCksIFJlZ2lzdGVyU2V0OjphbGxGUFJzKCkpOwotICAgICAgICB1bnNp
Z25lZCByZWdpc3RlckNvdW50ID0gY2FsbGVlU2F2ZXMtPnNpemUoKTsKLQotI2lmIFVTRShKU1ZB
TFVFNjQpCi0gICAgICAgIFJlZ2lzdGVyU2V0IGJhc2VsaW5lQ2FsbGVlU2F2ZXMgPSBSZWdpc3Rl
clNldDo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVSZWdpc3RlcnMoKTsKLSNlbmRpZgotICAgICAg
ICAKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkrKykg
ewotICAgICAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCBlbnRyeSA9IGNhbGxlZVNhdmVzLT5hdChp
KTsKLSAgICAgICAgICAgIGlmIChkb250U2F2ZVJlZ2lzdGVycy5nZXQoZW50cnkucmVnKCkpKQot
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBHUFJS
ZWcgcmVnaXN0ZXJUb1dyaXRlOwotICAgICAgICAgICAgCi0jaWYgVVNFKEpTVkFMVUUzMl82NCkK
LSAgICAgICAgICAgIFVOVVNFRF9QQVJBTSh0YWdSZWdpc3Rlck1vZGUpOwotICAgICAgICAgICAg
VU5VU0VEX1BBUkFNKHRlbXApOwotI2Vsc2UKLSAgICAgICAgICAgIGlmICh0YWdSZWdpc3Rlck1v
ZGUgPT0gQ29weUJhc2VsaW5lQ2FsbGVlU2F2ZWRSZWdpc3RlcnNGcm9tQmFzZUZyYW1lICYmIGJh
c2VsaW5lQ2FsbGVlU2F2ZXMuZ2V0KGVudHJ5LnJlZygpKSkgewotICAgICAgICAgICAgICAgIHJl
Z2lzdGVyVG9Xcml0ZSA9IHRlbXA7Ci0gICAgICAgICAgICAgICAgbG9hZFB0cihBc3NlbWJseUhl
bHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGVudHJ5Lm9mZnNldCgp
KSwgcmVnaXN0ZXJUb1dyaXRlKTsKLSAgICAgICAgICAgIH0gZWxzZQotI2VuZGlmCi0gICAgICAg
ICAgICAgICAgcmVnaXN0ZXJUb1dyaXRlID0gZW50cnkucmVnKCkuZ3ByKCk7Ci0KLSAgICAgICAg
ICAgIHN0b3JlUHRyKHJlZ2lzdGVyVG9Xcml0ZSwgQWRkcmVzcyhmcmFtZVBvaW50ZXJSZWdpc3Rl
ciwgb2Zmc2V0VmlydHVhbFJlZ2lzdGVyLm9mZnNldEluQnl0ZXMoKSArIGVudHJ5Lm9mZnNldCgp
KSk7Ci0gICAgICAgIH0KLSAgICB9CisgICAgdm9pZCBlbWl0U2F2ZU9yQ29weUxMSW50QmFzZWxp
bmVDYWxsZWVTYXZlc0ZvcihDb2RlQmxvY2sqLCBWaXJ0dWFsUmVnaXN0ZXIgb2Zmc2V0VmlydHVh
bFJlZ2lzdGVyLCBSZXN0b3JlVGFnUmVnaXN0ZXJNb2RlLCBHUFJSZWcgdGVtcDEsIEdQUlJlZyB0
ZW1wMiwgR1BSUmVnIHRlbXAzKTsKICAgICAKICAgICB2b2lkIGVtaXRSZXN0b3JlQ2FsbGVlU2F2
ZXNGb3IoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiAgICAgewpAQCAtMzg2LDE4ICszMzEsNyBAQCBw
dWJsaWM6CiAgICAgICAgIGVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXNGb3IoY2FsbGVlU2F2ZXMpOwog
ICAgIH0KIAotICAgIHZvaWQgZW1pdFJlc3RvcmVDYWxsZWVTYXZlc0Zvcihjb25zdCBSZWdpc3Rl
ckF0T2Zmc2V0TGlzdCogY2FsbGVlU2F2ZXMpCi0gICAgewotICAgICAgICBSZWdpc3RlclNldCBk
b250UmVzdG9yZVJlZ2lzdGVycyA9IFJlZ2lzdGVyU2V0KFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lz
dGVycygpLCBSZWdpc3RlclNldDo6YWxsRlBScygpKTsKLSAgICAgICAgdW5zaWduZWQgcmVnaXN0
ZXJDb3VudCA9IGNhbGxlZVNhdmVzLT5zaXplKCk7Ci0gICAgICAgIAotICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgcmVnaXN0ZXJDb3VudDsgaSsrKSB7Ci0gICAgICAgICAgICBSZWdp
c3RlckF0T2Zmc2V0IGVudHJ5ID0gY2FsbGVlU2F2ZXMtPmF0KGkpOwotICAgICAgICAgICAgaWYg
KGRvbnRSZXN0b3JlUmVnaXN0ZXJzLmdldChlbnRyeS5yZWcoKSkpCi0gICAgICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgICAgICBsb2FkUHRyKEFkZHJlc3MoZnJhbWVQb2ludGVyUmVnaXN0
ZXIsIGVudHJ5Lm9mZnNldCgpKSwgZW50cnkucmVnKCkuZ3ByKCkpOwotICAgICAgICB9Ci0gICAg
fQorICAgIHZvaWQgZW1pdFJlc3RvcmVDYWxsZWVTYXZlc0Zvcihjb25zdCBSZWdpc3RlckF0T2Zm
c2V0TGlzdCogY2FsbGVlU2F2ZXMpOwogCiAgICAgdm9pZCBlbWl0U2F2ZUNhbGxlZVNhdmVzKCkK
ICAgICB7CkBAIC00NzgsNTggKzQxMiw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVzdG9yZUNh
bGxlZVNhdmVzRnJvbUVudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcihFbnRyeUZyYW1lKiYpOwog
Ci0gICAgdm9pZCBjb3B5TExJbnRCYXNlbGluZUNhbGxlZVNhdmVzRnJvbUZyYW1lT3JSZWdpc3Rl
clRvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKEVudHJ5RnJhbWUqJiB0b3BFbnRyeUZyYW1l
LCBjb25zdCBUZW1wUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMgPSB7IFJlZ2lzdGVyU2V0Ojpz
dHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSB9KQotICAgIHsKLSNpZiBOVU1CRVJfT0ZfQ0FMTEVF
X1NBVkVTX1JFR0lTVEVSUyA+IDAKLSAgICAgICAgR1BSUmVnIHRlbXAxID0gdXNlZFJlZ2lzdGVy
cy5nZXRGcmVlR1BSKDApOwotICAgICAgICBHUFJSZWcgdGVtcDIgPSB1c2VkUmVnaXN0ZXJzLmdl
dEZyZWVHUFIoMSk7Ci0gICAgICAgIEZQUlJlZyBmcFRlbXAgPSB1c2VkUmVnaXN0ZXJzLmdldEZy
ZWVGUFIoKTsKLSAgICAgICAgQVNTRVJUKHRlbXAyICE9IEludmFsaWRHUFJSZWcpOwotCi0gICAg
ICAgIC8vIENvcHkgc2F2ZWQgY2FsbGVlU2F2ZXMgb24gc3RhY2sgb3IgdW5zYXZlZCBjYWxsZWVT
YXZlcyBpbiByZWdpc3RlciB0byB2bSBjYWxsZWVTYXZlIGJ1ZmZlcgotICAgICAgICBsb2FkUHRy
KCZ0b3BFbnRyeUZyYW1lLCB0ZW1wMSk7Ci0gICAgICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoRW50
cnlGcmFtZTo6Y2FsbGVlU2F2ZVJlZ2lzdGVyc0J1ZmZlck9mZnNldCgpKSwgdGVtcDEpOwotCi0g
ICAgICAgIFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBhbGxDYWxsZWVTYXZlcyA9IFJlZ2lzdGVyU2V0
Ojp2bUNhbGxlZVNhdmVSZWdpc3Rlck9mZnNldHMoKTsKLSAgICAgICAgY29uc3QgUmVnaXN0ZXJB
dE9mZnNldExpc3QqIGN1cnJlbnRDYWxsZWVTYXZlcyA9ICZSZWdpc3RlckF0T2Zmc2V0TGlzdDo6
bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVSZWdpc3RlcnMoKTsKLSAgICAgICAgUmVnaXN0ZXJTZXQg
ZG9udENvcHlSZWdpc3RlcnMgPSBSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKTsKLSAgICAg
ICAgdW5zaWduZWQgcmVnaXN0ZXJDb3VudCA9IGFsbENhbGxlZVNhdmVzLT5zaXplKCk7Ci0KLSAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkrKykgewotICAg
ICAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCBlbnRyeSA9IGFsbENhbGxlZVNhdmVzLT5hdChpKTsK
LSAgICAgICAgICAgIGlmIChkb250Q29weVJlZ2lzdGVycy5nZXQoZW50cnkucmVnKCkpKQotICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCogY3Vy
cmVudEZyYW1lRW50cnkgPSBjdXJyZW50Q2FsbGVlU2F2ZXMtPmZpbmQoZW50cnkucmVnKCkpOwot
Ci0gICAgICAgICAgICBpZiAoZW50cnkucmVnKCkuaXNHUFIoKSkgewotICAgICAgICAgICAgICAg
IEdQUlJlZyByZWdUb1N0b3JlOwotICAgICAgICAgICAgICAgIGlmIChjdXJyZW50RnJhbWVFbnRy
eSkgewotICAgICAgICAgICAgICAgICAgICAvLyBMb2FkIGNhbGxlZVNhdmUgZnJvbSBzdGFjayBp
bnRvIHRlbXAgcmVnaXN0ZXIKLSAgICAgICAgICAgICAgICAgICAgcmVnVG9TdG9yZSA9IHRlbXAy
OwotICAgICAgICAgICAgICAgICAgICBsb2FkUHRyKEFkZHJlc3MoZnJhbWVQb2ludGVyUmVnaXN0
ZXIsIGN1cnJlbnRGcmFtZUVudHJ5LT5vZmZzZXQoKSksIHJlZ1RvU3RvcmUpOwotICAgICAgICAg
ICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICAvLyBKdXN0IHN0b3JlIGNhbGxlZSBz
YXZlIGRpcmVjdGx5Ci0gICAgICAgICAgICAgICAgICAgIHJlZ1RvU3RvcmUgPSBlbnRyeS5yZWco
KS5ncHIoKTsKLQotICAgICAgICAgICAgICAgIHN0b3JlUHRyKHJlZ1RvU3RvcmUsIEFkZHJlc3Mo
dGVtcDEsIGVudHJ5Lm9mZnNldCgpKSk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgICAgIEZQUlJlZyBmcFJlZ1RvU3RvcmU7Ci0gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRG
cmFtZUVudHJ5KSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIExvYWQgY2FsbGVlU2F2ZSBmcm9t
IHN0YWNrIGludG8gdGVtcCByZWdpc3RlcgotICAgICAgICAgICAgICAgICAgICBmcFJlZ1RvU3Rv
cmUgPSBmcFRlbXA7Ci0gICAgICAgICAgICAgICAgICAgIGxvYWREb3VibGUoQWRkcmVzcyhmcmFt
ZVBvaW50ZXJSZWdpc3RlciwgY3VycmVudEZyYW1lRW50cnktPm9mZnNldCgpKSwgZnBSZWdUb1N0
b3JlKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgLy8gSnVz
dCBzdG9yZSBjYWxsZWUgc2F2ZSBkaXJlY3RseQotICAgICAgICAgICAgICAgICAgICBmcFJlZ1Rv
U3RvcmUgPSBlbnRyeS5yZWcoKS5mcHIoKTsKLQotICAgICAgICAgICAgICAgIHN0b3JlRG91Ymxl
KGZwUmVnVG9TdG9yZSwgQWRkcmVzcyh0ZW1wMSwgZW50cnkub2Zmc2V0KCkpKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotI2Vsc2UKLSAgICAgICAgVU5VU0VEX1BBUkFNKHRvcEVudHJ5RnJh
bWUpOwotICAgICAgICBVTlVTRURfUEFSQU0odXNlZFJlZ2lzdGVycyk7Ci0jZW5kaWYKLSAgICB9
CisgICAgdm9pZCBjb3B5TExJbnRCYXNlbGluZUNhbGxlZVNhdmVzRnJvbUZyYW1lT3JSZWdpc3Rl
clRvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKEVudHJ5RnJhbWUqJiwgY29uc3QgVGVtcFJl
Z2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzID0geyBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxl
UmVnaXN0ZXJzKCkgfSk7CiAKICAgICB2b2lkIGVtaXRNYXRlcmlhbGl6ZVRhZ0NoZWNrUmVnaXN0
ZXJzKCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVs
cGVyc1Nwb29sZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9B
c3NlbWJseUhlbHBlcnNTcG9vbGVycy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzU3Bvb2xlcnMuaAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDU4NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEpJVCkKKworI2luY2x1ZGUgIkFzc2VtYmx5
SGVscGVycy5oIgorCituYW1lc3BhY2UgSlNDIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgT3A+Citj
bGFzcyBBc3NlbWJseUhlbHBlcnM6OlNwb29sZXIgeworcHVibGljOgorICAgIHVzaW5nIEpJVCA9
IEFzc2VtYmx5SGVscGVyczsKKworICAgIFNwb29sZXIoSklUJiBqaXQsIEdQUlJlZyBiYXNlR1BS
KQorICAgICAgICA6IG1faml0KGppdCkKKyAgICAgICAgLCBtX2Jhc2VHUFIoYmFzZUdQUikKKyAg
ICB7IH0KKworICAgIHZvaWQgaGFuZGxlR1BSKGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXQmIGVudHJ5
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGVudHJ5LnJlZygpLmlzR1BSKCkpOworICAgICAgICBp
ZiBjb25zdGV4cHIgKCFoYXNQYWlyT3ApCisgICAgICAgICAgICByZXR1cm4gb3AoKS5oYW5kbGVT
aW5nbGUoZW50cnkub2Zmc2V0KCksIGVudHJ5LnJlZygpLmdwcigpKTsKKworICAgICAgICBpZiAo
IW1fYnVmZmVyZWRFbnRyeS5yZWcoKS5pc1NldCgpKSB7CisgICAgICAgICAgICBtX2J1ZmZlcmVk
RW50cnkgPSBlbnRyeTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBp
ZiAoZW50cnkub2Zmc2V0KCkgPT0gbV9idWZmZXJlZEVudHJ5Lm9mZnNldCgpICsgc3RhdGljX2Nh
c3Q8cHRyZGlmZl90PihncHJTaXplKSkgeworICAgICAgICAgICAgb3AoKS5oYW5kbGVQYWlyKG1f
YnVmZmVyZWRFbnRyeS5vZmZzZXQoKSwgbV9idWZmZXJlZEVudHJ5LnJlZygpLmdwcigpLCBlbnRy
eS5yZWcoKS5ncHIoKSk7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRW50cnkgPSB7IH07CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1fYnVmZmVyZWRFbnRyeS5v
ZmZzZXQoKSA9PSBlbnRyeS5vZmZzZXQoKSArIHN0YXRpY19jYXN0PHB0cmRpZmZfdD4oZ3ByU2l6
ZSkpIHsKKyAgICAgICAgICAgIG9wKCkuaGFuZGxlUGFpcihlbnRyeS5vZmZzZXQoKSwgZW50cnku
cmVnKCkuZ3ByKCksIG1fYnVmZmVyZWRFbnRyeS5yZWcoKS5ncHIoKSk7CisgICAgICAgICAgICBt
X2J1ZmZlcmVkRW50cnkgPSB7IH07CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICBmbHVzaEdQUigpOworICAgICAgICBoYW5kbGVHUFIoZW50cnkpOworICAgIH0KKwor
ICAgIHZvaWQgZmx1c2hHUFIoKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByIChoYXNQYWly
T3ApIHsKKyAgICAgICAgICAgIGlmIChtX2J1ZmZlcmVkRW50cnkucmVnKCkuaXNTZXQoKSkgewor
ICAgICAgICAgICAgICAgIG9wKCkuaGFuZGxlU2luZ2xlKG1fYnVmZmVyZWRFbnRyeS5vZmZzZXQo
KSwgbV9idWZmZXJlZEVudHJ5LnJlZygpLmdwcigpKTsKKyAgICAgICAgICAgICAgICBtX2J1ZmZl
cmVkRW50cnkgPSB7IH07CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2
b2lkIGhhbmRsZUZQUihjb25zdCBSZWdpc3RlckF0T2Zmc2V0JiBlbnRyeSkKKyAgICB7CisgICAg
ICAgIEFTU0VSVChlbnRyeS5yZWcoKS5pc0ZQUigpKTsKKyAgICAgICAgaWYgY29uc3RleHByICgh
aGFzUGFpck9wKQorICAgICAgICAgICAgcmV0dXJuIG9wKCkuaGFuZGxlU2luZ2xlKGVudHJ5Lm9m
ZnNldCgpLCBlbnRyeS5yZWcoKS5mcHIoKSk7CisKKyAgICAgICAgaWYgKCFtX2J1ZmZlcmVkRW50
cnkucmVnKCkuaXNTZXQoKSkgeworICAgICAgICAgICAgbV9idWZmZXJlZEVudHJ5ID0gZW50cnk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKGVudHJ5Lm9mZnNl
dCgpID09IG1fYnVmZmVyZWRFbnRyeS5vZmZzZXQoKSArIHN0YXRpY19jYXN0PHB0cmRpZmZfdD4o
ZnByU2l6ZSkpIHsKKyAgICAgICAgICAgIG9wKCkuaGFuZGxlUGFpcihtX2J1ZmZlcmVkRW50cnku
b2Zmc2V0KCksIG1fYnVmZmVyZWRFbnRyeS5yZWcoKS5mcHIoKSwgZW50cnkucmVnKCkuZnByKCkp
OworICAgICAgICAgICAgbV9idWZmZXJlZEVudHJ5ID0geyB9OworICAgICAgICB9IGVsc2UgaWYg
KG1fYnVmZmVyZWRFbnRyeS5vZmZzZXQoKSA9PSBlbnRyeS5vZmZzZXQoKSArIHN0YXRpY19jYXN0
PHB0cmRpZmZfdD4oZnByU2l6ZSkpIHsKKyAgICAgICAgICAgIG9wKCkuaGFuZGxlUGFpcihlbnRy
eS5vZmZzZXQoKSwgZW50cnkucmVnKCkuZnByKCksIG1fYnVmZmVyZWRFbnRyeS5yZWcoKS5mcHIo
KSk7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRW50cnkgPSB7IH07CisgICAgICAgIH0KKworICAg
ICAgICBmbHVzaEZQUigpOworICAgICAgICBoYW5kbGVGUFIoZW50cnkpOworICAgIH0KKworICAg
IHZvaWQgZmx1c2hGUFIoKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByIChoYXNQYWlyT3Ap
IHsKKyAgICAgICAgICAgIGlmIChtX2J1ZmZlcmVkRW50cnkucmVnKCkuaXNTZXQoKSkgeworICAg
ICAgICAgICAgICAgIG9wKCkuaGFuZGxlU2luZ2xlKG1fYnVmZmVyZWRFbnRyeS5vZmZzZXQoKSwg
bV9idWZmZXJlZEVudHJ5LnJlZygpLmZwcigpKTsKKyAgICAgICAgICAgICAgICBtX2J1ZmZlcmVk
RW50cnkgPSB7IH07CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKK3ByaXZhdGU6
CisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgZ3ByU2l6ZSA9IHNpemVvZihDUFVSZWdpc3Rl
cik7CisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgZnByU2l6ZSA9IHNpemVvZihkb3VibGUp
OworI2lmIENQVShBUk02NCkKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaGFzUGFpck9wID0g
dHJ1ZTsKKyNlbHNlCisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGhhc1BhaXJPcCA9IGZhbHNl
OworI2VuZGlmCisKKyAgICBPcCYgb3AoKSB7IHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxPcCo+
KHRoaXMpOyB9CisKK3Byb3RlY3RlZDoKKyAgICBKSVQmIG1faml0OworICAgIEdQUlJlZyBtX2Jh
c2VHUFI7CisgICAgUmVnaXN0ZXJBdE9mZnNldCBtX2J1ZmZlcmVkRW50cnk7Cit9OworCitjbGFz
cyBBc3NlbWJseUhlbHBlcnM6OkxvYWRSZWdTcG9vbGVyIDogcHVibGljIEFzc2VtYmx5SGVscGVy
czo6U3Bvb2xlcjxMb2FkUmVnU3Bvb2xlcj4geworICAgIHVzaW5nIEJhc2UgPSBTcG9vbGVyPExv
YWRSZWdTcG9vbGVyPjsKKyAgICB1c2luZyBKSVQgPSBCYXNlOjpKSVQ7CitwdWJsaWM6CisgICAg
TG9hZFJlZ1Nwb29sZXIoSklUJiBqaXQsIEdQUlJlZyBiYXNlR1BSKQorICAgICAgICA6IEJhc2Uo
aml0LCBiYXNlR1BSKQorICAgIHsgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIGxvYWRHUFIo
Y29uc3QgUmVnaXN0ZXJBdE9mZnNldCYgZW50cnkpIHsgQmFzZTo6aGFuZGxlR1BSKGVudHJ5KTsg
fQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBmbHVzaEdQUigpIHsgQmFzZTo6Zmx1c2hHUFIoKTsg
fQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBsb2FkRlBSKGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXQm
IGVudHJ5KSB7IEJhc2U6OmhhbmRsZUZQUihlbnRyeSk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgZmx1c2hGUFIoKSB7IEJhc2U6OmZsdXNoRlBSKCk7IH0KKworI2lmIENQVShBUk02NCkKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBSZWdUeXBlPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBoYW5k
bGVQYWlyKHB0cmRpZmZfdCBvZmZzZXQsIFJlZ1R5cGUgcmVnMSwgUmVnVHlwZSByZWcyKQorICAg
IHsKKyAgICAgICAgbV9qaXQubG9hZFBhaXI2NChtX2Jhc2VHUFIsIFRydXN0ZWRJbW0zMihvZmZz
ZXQpLCByZWcxLCByZWcyKTsKKyAgICB9CisjZWxzZQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJl
Z1R5cGU+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGhhbmRsZVBhaXIocHRyZGlmZl90LCBSZWdU
eXBlLCBSZWdUeXBlKSB7IH0KKyNlbmRpZgorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIGhhbmRs
ZVNpbmdsZShwdHJkaWZmX3Qgb2Zmc2V0LCBHUFJSZWcgcmVnKQorICAgIHsKKyNpZiBVU0UoSlNW
QUxVRTY0KQorICAgICAgICBtX2ppdC5sb2FkNjQoQWRkcmVzcyhtX2Jhc2VHUFIsIG9mZnNldCks
IHJlZyk7CisjZWxzZQorICAgICAgICBtX2ppdC5sb2FkMzIoQWRkcmVzcyhtX2Jhc2VHUFIsIG9m
ZnNldCksIHJlZyk7CisjZW5kaWYKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgaGFu
ZGxlU2luZ2xlKHB0cmRpZmZfdCBvZmZzZXQsIEZQUlJlZyByZWcpCisgICAgeworICAgICAgICBt
X2ppdC5sb2FkRG91YmxlKEFkZHJlc3MobV9iYXNlR1BSLCBvZmZzZXQpLCByZWcpOworICAgIH0K
K307CisKK2NsYXNzIEFzc2VtYmx5SGVscGVyczo6U3RvcmVSZWdTcG9vbGVyIDogcHVibGljIEFz
c2VtYmx5SGVscGVyczo6U3Bvb2xlcjxTdG9yZVJlZ1Nwb29sZXI+IHsKKyAgICB1c2luZyBCYXNl
ID0gU3Bvb2xlcjxTdG9yZVJlZ1Nwb29sZXI+OworICAgIHVzaW5nIEpJVCA9IHR5cGVuYW1lIEJh
c2U6OkpJVDsKK3B1YmxpYzoKKyAgICBTdG9yZVJlZ1Nwb29sZXIoSklUJiBqaXQsIEdQUlJlZyBi
YXNlR1BSKQorICAgICAgICA6IEJhc2Uoaml0LCBiYXNlR1BSKQorICAgIHsgfQorCisgICAgQUxX
QVlTX0lOTElORSB2b2lkIHN0b3JlR1BSKGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXQmIGVudHJ5KSB7
IEJhc2U6OmhhbmRsZUdQUihlbnRyeSk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZmx1c2hH
UFIoKSB7IEJhc2U6OmZsdXNoR1BSKCk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc3RvcmVG
UFIoY29uc3QgUmVnaXN0ZXJBdE9mZnNldCYgZW50cnkpIHsgQmFzZTo6aGFuZGxlRlBSKGVudHJ5
KTsgfQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBmbHVzaEZQUigpIHsgQmFzZTo6Zmx1c2hGUFIo
KTsgfQorCisjaWYgQ1BVKEFSTTY0KQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJlZ1R5cGU+Cisg
ICAgQUxXQVlTX0lOTElORSB2b2lkIGhhbmRsZVBhaXIocHRyZGlmZl90IG9mZnNldCwgUmVnVHlw
ZSByZWcxLCBSZWdUeXBlIHJlZzIpCisgICAgeworICAgICAgICBtX2ppdC5zdG9yZVBhaXI2NChy
ZWcxLCByZWcyLCBtX2Jhc2VHUFIsIFRydXN0ZWRJbW0zMihvZmZzZXQpKTsKKyAgICB9CisjZWxz
ZQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJlZ1R5cGU+CisgICAgQUxXQVlTX0lOTElORSB2b2lk
IGhhbmRsZVBhaXIocHRyZGlmZl90LCBSZWdUeXBlLCBSZWdUeXBlKSB7IH0KKyNlbmRpZgorCisg
ICAgQUxXQVlTX0lOTElORSB2b2lkIGhhbmRsZVNpbmdsZShwdHJkaWZmX3Qgb2Zmc2V0LCBHUFJS
ZWcgcmVnKQorICAgIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBtX2ppdC5zdG9yZTY0
KHJlZywgQWRkcmVzcyhtX2Jhc2VHUFIsIG9mZnNldCkpOworI2Vsc2UKKyAgICAgICAgbV9qaXQu
c3RvcmUzMihyZWcsIEFkZHJlc3MobV9iYXNlR1BSLCBvZmZzZXQpKTsKKyNlbmRpZgorICAgIH0K
KworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBoYW5kbGVTaW5nbGUocHRyZGlmZl90IG9mZnNldCwg
RlBSUmVnIHJlZykKKyAgICB7CisgICAgICAgIG1faml0LnN0b3JlRG91YmxlKHJlZywgQWRkcmVz
cyhtX2Jhc2VHUFIsIG9mZnNldCkpOworICAgIH0KK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFJl
Z1R5cGU+CitzdHJ1Y3QgUmVnRGlzcGF0Y2ggeworICAgIHN0YXRpYyBSZWdUeXBlIGdldChSZWcp
OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNwb29sZXI+IHN0YXRpYyBSZWdUeXBlIHRlbXAxKGNv
bnN0IFNwb29sZXIqKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTcG9vbGVyPiBzdGF0aWMgUmVn
VHlwZSB0ZW1wMihjb25zdCBTcG9vbGVyKik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgU3Bvb2xl
cj4gc3RhdGljIFJlZ1R5cGUmIHJlZ1RvU3RvcmUoU3Bvb2xlciopOworICAgIHN0YXRpYyBjb25z
dGV4cHIgUmVnVHlwZSBpbnZhbGlkKCk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgcmVn
U2l6ZSgpOworICAgIHN0YXRpYyBib29sIGlzVmFsaWRMb2FkUGFpckltbShpbnQpOworICAgIHN0
YXRpYyBib29sIGlzVmFsaWRTdG9yZVBhaXJJbW0oaW50KTsKK307CisKK3RlbXBsYXRlPD4KK3N0
cnVjdCBSZWdEaXNwYXRjaDxHUFJSZWc+IHsKKyAgICBzdGF0aWMgR1BSUmVnIGdldChSZWcgcmVn
KSB7IHJldHVybiByZWcuZ3ByKCk7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTcG9vbGVyPiBz
dGF0aWMgR1BSUmVnIHRlbXAxKGNvbnN0IFNwb29sZXIqIHNwb29sZXIpIHsgcmV0dXJuIHNwb29s
ZXItPm1fdGVtcDFHUFI7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTcG9vbGVyPiBzdGF0aWMg
R1BSUmVnIHRlbXAyKGNvbnN0IFNwb29sZXIqIHNwb29sZXIpIHsgcmV0dXJuIHNwb29sZXItPm1f
dGVtcDJHUFI7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTcG9vbGVyPiBzdGF0aWMgR1BSUmVn
JiByZWdUb1N0b3JlKFNwb29sZXIqIHNwb29sZXIpIHsgcmV0dXJuIHNwb29sZXItPm1fZ3ByVG9T
dG9yZTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIGludmFsaWQoKSB7IHJldHVybiBJ
bnZhbGlkR1BSUmVnOyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgcmVnU2l6ZSgpIHsg
cmV0dXJuIHNpemVvZihDUFVSZWdpc3Rlcik7IH0KKyNpZiBDUFUoQVJNNjQpCisgICAgc3RhdGlj
IGJvb2wgaXNWYWxpZExvYWRQYWlySW1tKGludCBvZmZzZXQpIHsgcmV0dXJuIEFSTTY0QXNzZW1i
bGVyOjppc1ZhbGlkTERQSW1tPDY0PihvZmZzZXQpOyB9CisgICAgc3RhdGljIGJvb2wgaXNWYWxp
ZFN0b3JlUGFpckltbShpbnQgb2Zmc2V0KSB7IHJldHVybiBBUk02NEFzc2VtYmxlcjo6aXNWYWxp
ZFNUUEltbTw2ND4ob2Zmc2V0KTsgfQorI2Vsc2UKKyAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkTG9h
ZFBhaXJJbW0oaW50KSB7IHJldHVybiBmYWxzZTsgfQorICAgIHN0YXRpYyBib29sIGlzVmFsaWRT
dG9yZVBhaXJJbW0oaW50KSB7IHJldHVybiBmYWxzZTsgfQorI2VuZGlmCit9OworCit0ZW1wbGF0
ZTw+CitzdHJ1Y3QgUmVnRGlzcGF0Y2g8RlBSUmVnPiB7CisgICAgc3RhdGljIEZQUlJlZyBnZXQo
UmVnIHJlZykgeyByZXR1cm4gcmVnLmZwcigpOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgU3Bv
b2xlcj4gc3RhdGljIEZQUlJlZyB0ZW1wMShjb25zdCBTcG9vbGVyKiBzcG9vbGVyKSB7IHJldHVy
biBzcG9vbGVyLT5tX3RlbXAxRlBSOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgU3Bvb2xlcj4g
c3RhdGljIEZQUlJlZyB0ZW1wMihjb25zdCBTcG9vbGVyKiBzcG9vbGVyKSB7IHJldHVybiBzcG9v
bGVyLT5tX3RlbXAyRlBSOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgU3Bvb2xlcj4gc3RhdGlj
IEZQUlJlZyYgcmVnVG9TdG9yZShTcG9vbGVyKiBzcG9vbGVyKSB7IHJldHVybiBzcG9vbGVyLT5t
X2ZwclRvU3RvcmU7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIEZQUlJlZyBpbnZhbGlkKCkgeyBy
ZXR1cm4gSW52YWxpZEZQUlJlZzsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHJlZ1Np
emUoKSB7IHJldHVybiBzaXplb2YoZG91YmxlKTsgfQorI2lmIENQVShBUk02NCkKKyAgICBzdGF0
aWMgYm9vbCBpc1ZhbGlkTG9hZFBhaXJJbW0oaW50IG9mZnNldCkgeyByZXR1cm4gQVJNNjRBc3Nl
bWJsZXI6OmlzVmFsaWRMRFBGUEltbTw2ND4ob2Zmc2V0KTsgfQorICAgIHN0YXRpYyBib29sIGlz
VmFsaWRTdG9yZVBhaXJJbW0oaW50IG9mZnNldCkgeyByZXR1cm4gQVJNNjRBc3NlbWJsZXI6Omlz
VmFsaWRTVFBGUEltbTw2ND4ob2Zmc2V0KTsgfQorI2Vsc2UKKyAgICBzdGF0aWMgYm9vbCBpc1Zh
bGlkTG9hZFBhaXJJbW0oaW50KSB7IHJldHVybiBmYWxzZTsgfQorICAgIHN0YXRpYyBib29sIGlz
VmFsaWRTdG9yZVBhaXJJbW0oaW50KSB7IHJldHVybiBmYWxzZTsgfQorI2VuZGlmCit9OworCitj
bGFzcyBBc3NlbWJseUhlbHBlcnM6OkNvcHlTcG9vbGVyIHsKK3B1YmxpYzoKKyAgICB1c2luZyBK
SVQgPSBBc3NlbWJseUhlbHBlcnM7CisgICAgdXNpbmcgQWRkcmVzcyA9IEpJVDo6QWRkcmVzczsK
KyAgICB1c2luZyBUcnVzdGVkSW1tMzIgPSBKSVQ6OlRydXN0ZWRJbW0zMjsKKworICAgIHN0cnVj
dCBTb3VyY2UgeworICAgICAgICBlbnVtIGNsYXNzIFR5cGUgeyBCdWZmZXJPZmZzZXQsIFJlZywg
RW5jb2RlZEpTVmFsdWUgfSB0eXBlOworICAgICAgICBpbnQgb2Zmc2V0OworICAgICAgICBSZWcg
cmVnOworICAgICAgICBFbmNvZGVkSlNWYWx1ZSB2YWx1ZTsKKworICAgICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBSZWdUeXBlPiBSZWdUeXBlIGdldFJlZygpIHsgcmV0dXJuIFJlZ0Rpc3BhdGNoPFJl
Z1R5cGU+OjpnZXQocmVnKTsgfTsKKyAgICB9OworCisgICAgZW51bSBjbGFzcyBCdWZmZXJSZWdz
IHsKKyAgICAgICAgTmVlZFByZXNlcnZhdGlvbiwKKyAgICAgICAgQWxsb3dNb2RpZmljYXRpb24K
KyAgICB9OworCisgICAgQ29weVNwb29sZXIoQnVmZmVyUmVncyBhdHRyaWJ1dGUsIEpJVCYgaml0
LCBHUFJSZWcgc3JjQnVmZmVyLCBHUFJSZWcgZGVzdEJ1ZmZlciwgR1BSUmVnIHRlbXAxLCBHUFJS
ZWcgdGVtcDIsIEZQUlJlZyBmcFRlbXAxID0gSW52YWxpZEZQUlJlZywgRlBSUmVnIGZwVGVtcDIg
PSBJbnZhbGlkRlBSUmVnKQorICAgICAgICA6IG1faml0KGppdCkKKyAgICAgICAgLCBtX3NyY0J1
ZmZlckdQUihzcmNCdWZmZXIpCisgICAgICAgICwgbV9kc3RCdWZmZXJHUFIoZGVzdEJ1ZmZlcikK
KyAgICAgICAgLCBtX3RlbXAxR1BSKHRlbXAxKQorICAgICAgICAsIG1fdGVtcDJHUFIodGVtcDIp
CisgICAgICAgICwgbV90ZW1wMUZQUihmcFRlbXAxKQorICAgICAgICAsIG1fdGVtcDJGUFIoZnBU
ZW1wMikKKyAgICAgICAgLCBtX2J1ZmZlclJlZ3NBdHRyKGF0dHJpYnV0ZSkKKyAgICB7CisgICAg
ICAgIGlmIGNvbnN0ZXhwciAoaGFzUGFpck9wICYmICFpc0FSTTY0KCkpCisgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyAvLyB1bnN1cHBvcnRlZCBhcmNoaXRlY3R1cmUu
CisgICAgfQorCisgICAgQ29weVNwb29sZXIoSklUJiBqaXQsIEdQUlJlZyBzcmNCdWZmZXIsIEdQ
UlJlZyBkZXN0QnVmZmVyLCBHUFJSZWcgdGVtcDEsIEdQUlJlZyB0ZW1wMiwgRlBSUmVnIGZwVGVt
cDEgPSBJbnZhbGlkRlBSUmVnLCBGUFJSZWcgZnBUZW1wMiA9IEludmFsaWRGUFJSZWcpCisgICAg
ICAgIDogQ29weVNwb29sZXIoQnVmZmVyUmVnczo6TmVlZFByZXNlcnZhdGlvbiwgaml0LCBzcmNC
dWZmZXIsIGRlc3RCdWZmZXIsIHRlbXAxLCB0ZW1wMiwgZnBUZW1wMSwgZnBUZW1wMikKKyAgICB7
IH0KKworcHJpdmF0ZToKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSZWdUeXBlPiBSZWdUeXBlIHRl
bXAxKCkgY29uc3QgeyByZXR1cm4gUmVnRGlzcGF0Y2g8UmVnVHlwZT46OnRlbXAxKHRoaXMpOyB9
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgUmVnVHlwZT4gUmVnVHlwZSB0ZW1wMigpIGNvbnN0IHsg
cmV0dXJuIFJlZ0Rpc3BhdGNoPFJlZ1R5cGU+Ojp0ZW1wMih0aGlzKTsgfQorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFJlZ1R5cGU+IFJlZ1R5cGUmIHJlZ1RvU3RvcmUoKSB7IHJldHVybiBSZWdEaXNw
YXRjaDxSZWdUeXBlPjo6cmVnVG9TdG9yZSh0aGlzKTsgfQorCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgUmVnVHlwZT4gc3RhdGljIGNvbnN0ZXhwciBSZWdUeXBlIGludmFsaWQoKSB7IHJldHVybiBS
ZWdEaXNwYXRjaDxSZWdUeXBlPjo6aW52YWxpZCgpOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
UmVnVHlwZT4gc3RhdGljIGNvbnN0ZXhwciBpbnQgcmVnU2l6ZSgpIHsgcmV0dXJuIFJlZ0Rpc3Bh
dGNoPFJlZ1R5cGU+OjpyZWdTaXplKCk7IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJlZ1R5
cGU+IHN0YXRpYyBib29sIGlzVmFsaWRMb2FkUGFpckltbShpbnQgb2Zmc2V0KSB7IHJldHVybiBS
ZWdEaXNwYXRjaDxSZWdUeXBlPjo6aXNWYWxpZExvYWRQYWlySW1tKG9mZnNldCk7IH0KKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBSZWdUeXBlPiBzdGF0aWMgYm9vbCBpc1ZhbGlkU3RvcmVQYWlySW1t
KGludCBvZmZzZXQpIHsgcmV0dXJuIFJlZ0Rpc3BhdGNoPFJlZ1R5cGU+Ojppc1ZhbGlkU3RvcmVQ
YWlySW1tKG9mZnNldCk7IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJlZ1R5cGU+CisgICAg
dm9pZCBsb2FkKGludCBvZmZzZXQpCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKCFoYXNQ
YWlyT3ApIHsKKyAgICAgICAgICAgIGF1dG8mIHJlZ1RvU3RvcmUgPSB0aGlzLT5yZWdUb1N0b3Jl
PFJlZ1R5cGU+KCk7CisgICAgICAgICAgICByZWdUb1N0b3JlID0gdGVtcDE8UmVnVHlwZT4oKTsK
KyAgICAgICAgICAgIGxvYWQob2Zmc2V0LCByZWdUb1N0b3JlKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8mIHNvdXJjZSA9IG1fc291cmNlc1ttX2N1cnJl
bnRTb3VyY2UrK107CisgICAgICAgIHNvdXJjZS50eXBlID0gU291cmNlOjpUeXBlOjpCdWZmZXJP
ZmZzZXQ7CisgICAgICAgIHNvdXJjZS5vZmZzZXQgPSBvZmZzZXQ7CisgICAgfQorCisgICAgdm9p
ZCBtb3ZlKEVuY29kZWRKU1ZhbHVlIHZhbHVlKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHBy
ICghaGFzUGFpck9wKSB7CisgICAgICAgICAgICBhdXRvJiByZWdUb1N0b3JlID0gdGhpcy0+cmVn
VG9TdG9yZTxHUFJSZWc+KCk7CisgICAgICAgICAgICByZWdUb1N0b3JlID0gdGVtcDE8R1BSUmVn
PigpOworICAgICAgICAgICAgbW92ZSh2YWx1ZSwgcmVnVG9TdG9yZSk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBhdXRvJiBzb3VyY2UgPSBtX3NvdXJjZXNbbV9j
dXJyZW50U291cmNlKytdOworICAgICAgICBzb3VyY2UudHlwZSA9IFNvdXJjZTo6VHlwZTo6RW5j
b2RlZEpTVmFsdWU7CisgICAgICAgIHNvdXJjZS52YWx1ZSA9IHZhbHVlOworICAgIH0KKworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFJlZ1R5cGU+CisgICAgdm9pZCBjb3B5KFJlZ1R5cGUgcmVnKQor
ICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByICghaGFzUGFpck9wKSB7CisgICAgICAgICAgICBh
dXRvJiByZWdUb1N0b3JlID0gdGhpcy0+cmVnVG9TdG9yZTxSZWdUeXBlPigpOworICAgICAgICAg
ICAgcmVnVG9TdG9yZSA9IHJlZzsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIGF1dG8mIHNvdXJjZSA9IG1fc291cmNlc1ttX2N1cnJlbnRTb3VyY2UrK107CisgICAg
ICAgIHNvdXJjZS50eXBlID0gU291cmNlOjpUeXBlOjpSZWc7CisgICAgICAgIHNvdXJjZS5yZWcg
PSByZWc7CisgICAgfTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJlZ1R5cGU+CisgICAgdm9p
ZCBzdG9yZShpbnQgc3RvcmVPZmZzZXQpCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKCFo
YXNQYWlyT3ApIHsKKyAgICAgICAgICAgIGF1dG8gcmVnVG9TdG9yZSA9IHRoaXMtPnJlZ1RvU3Rv
cmU8UmVnVHlwZT4oKTsKKyAgICAgICAgICAgIHN0b3JlKHJlZ1RvU3RvcmUsIHN0b3JlT2Zmc2V0
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnN0IGJvb2wg
cmVnVHlwZUlzR1BSID0gc3RkOjppc19zYW1lPFJlZ1R5cGUsIEdQUlJlZz46OnZhbHVlOworCisg
ICAgICAgIGlmIChtX2N1cnJlbnRTb3VyY2UgPCAyKSB7CisgICAgICAgICAgICBtX2RlZmVycmVk
U3RvcmVPZmZzZXQgPSBzdG9yZU9mZnNldDsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorCisgICAgICAgIFJlZ1R5cGUgcmVnVG9TdG9yZTEgPSBpbnZhbGlkPFJlZ1R5cGU+KCk7Cisg
ICAgICAgIFJlZ1R5cGUgcmVnVG9TdG9yZTIgPSBpbnZhbGlkPFJlZ1R5cGU+KCk7CisgICAgICAg
IGF1dG8mIHNvdXJjZTEgPSBtX3NvdXJjZXNbMF07CisgICAgICAgIGF1dG8mIHNvdXJjZTIgPSBt
X3NvdXJjZXNbMV07CisgICAgICAgIGF1dG8gc3JjT2Zmc2V0MSA9IG1fc291cmNlc1swXS5vZmZz
ZXQgLSBtX3NyY09mZnNldEFkanVzdG1lbnQ7CisgICAgICAgIGF1dG8gc3JjT2Zmc2V0MiA9IG1f
c291cmNlc1sxXS5vZmZzZXQgLSBtX3NyY09mZnNldEFkanVzdG1lbnQ7CisgICAgICAgIGNvbnN0
ZXhwciBpbnQgcmVnaXN0ZXJTaXplID0gcmVnU2l6ZTxSZWdUeXBlPigpOworCisgICAgICAgIGlm
IChzb3VyY2UxLnR5cGUgPT0gU291cmNlOjpUeXBlOjpCdWZmZXJPZmZzZXQgJiYgc291cmNlMi50
eXBlID09IFNvdXJjZTo6VHlwZTo6QnVmZmVyT2Zmc2V0KSB7CisgICAgICAgICAgICByZWdUb1N0
b3JlMSA9IHRlbXAxPFJlZ1R5cGU+KCk7CisgICAgICAgICAgICByZWdUb1N0b3JlMiA9IHRlbXAy
PFJlZ1R5cGU+KCk7CisKKyAgICAgICAgICAgIGludCBvZmZzZXREZWx0YSA9IGFicyhzcmNPZmZz
ZXQxIC0gc3JjT2Zmc2V0Mik7CisgICAgICAgICAgICBpbnQgbWluT2Zmc2V0ID0gc3RkOjptaW4o
c3JjT2Zmc2V0MSwgc3JjT2Zmc2V0Mik7CisgICAgICAgICAgICBib29sIGlzVmFsaWRPZmZzZXQg
PSBpc1ZhbGlkTG9hZFBhaXJJbW08UmVnVHlwZT4obWluT2Zmc2V0KTsKKworICAgICAgICAgICAg
aWYgKG9mZnNldERlbHRhICE9IHJlZ2lzdGVyU2l6ZSB8fCAoIWlzVmFsaWRPZmZzZXQgJiYgbV9i
dWZmZXJSZWdzQXR0ciAhPSBCdWZmZXJSZWdzOjpBbGxvd01vZGlmaWNhdGlvbikpIHsKKyAgICAg
ICAgICAgICAgICBsb2FkKHNyY09mZnNldDEsIHJlZ1RvU3RvcmUxKTsKKyAgICAgICAgICAgICAg
ICBsb2FkKHNyY09mZnNldDIsIHJlZ1RvU3RvcmUyKTsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KSB7CisgICAgICAgICAgICAgICAgICAg
IEFTU0VSVChtX2J1ZmZlclJlZ3NBdHRyID09IEJ1ZmZlclJlZ3M6OkFsbG93TW9kaWZpY2F0aW9u
KTsKKyAgICAgICAgICAgICAgICAgICAgbV9zcmNPZmZzZXRBZGp1c3RtZW50ICs9IG1pbk9mZnNl
dDsKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQuYWRkUHRyKFRydXN0ZWRJbW0zMihtaW5PZmZz
ZXQpLCBtX3NyY0J1ZmZlckdQUik7CisKKyAgICAgICAgICAgICAgICAgICAgc3JjT2Zmc2V0MSAt
PSBtaW5PZmZzZXQ7CisgICAgICAgICAgICAgICAgICAgIHNyY09mZnNldDIgLT0gbWluT2Zmc2V0
OworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoaXNWYWxpZExvYWRQYWlySW1tPFJlZ1R5cGU+
KHN0ZDo6bWluKHNyY09mZnNldDEsIHNyY09mZnNldDIpKSk7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIGlmIChzcmNPZmZzZXQxIDwgc3JjT2Zmc2V0MikKKyAgICAgICAgICAg
ICAgICAgICAgbG9hZFBhaXIoc3JjT2Zmc2V0MSwgcmVnVG9TdG9yZTEsIHJlZ1RvU3RvcmUyKTsK
KyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGxvYWRQYWlyKHNyY09m
ZnNldDIsIHJlZ1RvU3RvcmUyLCByZWdUb1N0b3JlMSk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0gZWxzZSBpZiAoc291cmNlMS50eXBlID09IFNvdXJjZTo6VHlwZTo6QnVmZmVyT2Zmc2V0KSB7
CisgICAgICAgICAgICByZWdUb1N0b3JlMSA9IHRlbXAxPFJlZ1R5cGU+KCk7CisgICAgICAgICAg
ICBsb2FkKHNyY09mZnNldDEsIHJlZ1RvU3RvcmUxKTsKKyAgICAgICAgICAgIGlmIChzb3VyY2Uy
LnR5cGUgPT0gU291cmNlOjpUeXBlOjpFbmNvZGVkSlNWYWx1ZSkgeworICAgICAgICAgICAgICAg
IGlmIGNvbnN0ZXhwciAocmVnVHlwZUlzR1BSKSB7CisgICAgICAgICAgICAgICAgICAgIHJlZ1Rv
U3RvcmUyID0gdGVtcDI8UmVnVHlwZT4oKTsKKyAgICAgICAgICAgICAgICAgICAgbW92ZShzb3Vy
Y2UyLnZhbHVlLCByZWdUb1N0b3JlMik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICAgICAgcmVnVG9TdG9yZTIgPSBzb3VyY2UyLmdldFJlZzxSZWdU
eXBlPigpOworCisgICAgICAgIH0gZWxzZSBpZiAoc291cmNlMi50eXBlID09IFNvdXJjZTo6VHlw
ZTo6QnVmZmVyT2Zmc2V0KSB7CisgICAgICAgICAgICBpZiAoc291cmNlMS50eXBlID09IFNvdXJj
ZTo6VHlwZTo6RW5jb2RlZEpTVmFsdWUpIHsKKyAgICAgICAgICAgICAgICBpZiBjb25zdGV4cHIg
KHJlZ1R5cGVJc0dQUikgeworICAgICAgICAgICAgICAgICAgICByZWdUb1N0b3JlMSA9IHRlbXAx
PFJlZ1R5cGU+KCk7CisgICAgICAgICAgICAgICAgICAgIG1vdmUoc291cmNlMS52YWx1ZSwgcmVn
VG9TdG9yZTEpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZQorICAgICAg
ICAgICAgICAgIHJlZ1RvU3RvcmUxID0gc291cmNlMS5nZXRSZWc8UmVnVHlwZT4oKTsKKyAgICAg
ICAgICAgIHJlZ1RvU3RvcmUyID0gdGVtcDI8UmVnVHlwZT4oKTsKKyAgICAgICAgICAgIGxvYWQo
c3JjT2Zmc2V0MiwgcmVnVG9TdG9yZTIpOworCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICBpZiAoc291cmNlMS50eXBlID09IFNvdXJjZTo6VHlwZTo6RW5jb2RlZEpTVmFsdWUpIHsKKyAg
ICAgICAgICAgICAgICBpZiBjb25zdGV4cHIgKHJlZ1R5cGVJc0dQUikgeworICAgICAgICAgICAg
ICAgICAgICByZWdUb1N0b3JlMSA9IHRlbXAxPFJlZ1R5cGU+KCk7CisgICAgICAgICAgICAgICAg
ICAgIG1vdmUoc291cmNlMS52YWx1ZSwgcmVnVG9TdG9yZTEpOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHJlZ1RvU3RvcmUxID0gc291cmNl
MS5nZXRSZWc8UmVnVHlwZT4oKTsKKworICAgICAgICAgICAgaWYgKHNvdXJjZTIudHlwZSA9PSBT
b3VyY2U6OlR5cGU6OkVuY29kZWRKU1ZhbHVlKSB7CisgICAgICAgICAgICAgICAgaWYgY29uc3Rl
eHByIChyZWdUeXBlSXNHUFIpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVnVG9TdG9yZTIgPSB0
ZW1wMjxSZWdUeXBlPigpOworICAgICAgICAgICAgICAgICAgICBtb3ZlKHNvdXJjZTIudmFsdWUs
IHJlZ1RvU3RvcmUyKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgICAgICByZWdUb1N0b3JlMiA9IHNvdXJjZTIuZ2V0UmVnPFJlZ1R5cGU+KCk7Cisg
ICAgICAgIH0KKworICAgICAgICBpbnQgZHN0T2Zmc2V0MSA9IG1fZGVmZXJyZWRTdG9yZU9mZnNl
dCAtIG1fZHN0T2Zmc2V0QWRqdXN0bWVudDsKKyAgICAgICAgaW50IGRzdE9mZnNldDIgPSBzdG9y
ZU9mZnNldCAtIG1fZHN0T2Zmc2V0QWRqdXN0bWVudDsKKworICAgICAgICBpbnQgb2Zmc2V0RGVs
dGEgPSBhYnMoZHN0T2Zmc2V0MSAtIGRzdE9mZnNldDIpOworICAgICAgICBpbnQgbWluT2Zmc2V0
ID0gc3RkOjptaW4oZHN0T2Zmc2V0MSwgZHN0T2Zmc2V0Mik7CisgICAgICAgIGJvb2wgaXNWYWxp
ZE9mZnNldCA9IGlzVmFsaWRTdG9yZVBhaXJJbW08UmVnVHlwZT4obWluT2Zmc2V0KTsKKworICAg
ICAgICBpZiAob2Zmc2V0RGVsdGEgIT0gcmVnaXN0ZXJTaXplIHx8ICghaXNWYWxpZE9mZnNldCAm
JiBtX2J1ZmZlclJlZ3NBdHRyICE9IEJ1ZmZlclJlZ3M6OkFsbG93TW9kaWZpY2F0aW9uKSkgewor
ICAgICAgICAgICAgc3RvcmUocmVnVG9TdG9yZTEsIGRzdE9mZnNldDEpOworICAgICAgICAgICAg
c3RvcmUocmVnVG9TdG9yZTIsIGRzdE9mZnNldDIpOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKG1fYnVm
ZmVyUmVnc0F0dHIgPT0gQnVmZmVyUmVnczo6QWxsb3dNb2RpZmljYXRpb24pOworICAgICAgICAg
ICAgICAgIG1fZHN0T2Zmc2V0QWRqdXN0bWVudCArPSBtaW5PZmZzZXQ7CisgICAgICAgICAgICAg
ICAgbV9qaXQuYWRkUHRyKFRydXN0ZWRJbW0zMihtaW5PZmZzZXQpLCBtX2RzdEJ1ZmZlckdQUik7
CisKKyAgICAgICAgICAgICAgICBkc3RPZmZzZXQxIC09IG1pbk9mZnNldDsKKyAgICAgICAgICAg
ICAgICBkc3RPZmZzZXQyIC09IG1pbk9mZnNldDsKKyAgICAgICAgICAgICAgICBBU1NFUlQoaXNW
YWxpZFN0b3JlUGFpckltbTxSZWdUeXBlPihzdGQ6Om1pbihkc3RPZmZzZXQxLCBkc3RPZmZzZXQy
KSkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGRzdE9mZnNldDEgPCBkc3RPZmZz
ZXQyKQorICAgICAgICAgICAgICAgIHN0b3JlUGFpcihyZWdUb1N0b3JlMSwgcmVnVG9TdG9yZTIs
IGRzdE9mZnNldDEpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHN0b3JlUGFp
cihyZWdUb1N0b3JlMiwgcmVnVG9TdG9yZTEsIGRzdE9mZnNldDIpOworICAgICAgICB9CisKKyAg
ICAgICAgbV9jdXJyZW50U291cmNlID0gMDsKKyAgICB9OworCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgUmVnVHlwZT4KKyAgICB2b2lkIGZsdXNoKCkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhw
ciAoIWhhc1BhaXJPcCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoIW1fY3Vy
cmVudFNvdXJjZSkKKyAgICAgICAgICAgIHJldHVybjsgLy8gTm90aGluZyB0byBmbHVzaC4KKwor
ICAgICAgICBBU1NFUlQobV9jdXJyZW50U291cmNlID09IDEpOworCisgICAgICAgIFJlZ1R5cGUg
cmVnVG9TdG9yZSA9IGludmFsaWQ8UmVnVHlwZT4oKTsKKyAgICAgICAgYXV0byYgc291cmNlID0g
bV9zb3VyY2VzWzBdOworICAgICAgICBhdXRvJiBzcmNPZmZzZXQgPSBzb3VyY2Uub2Zmc2V0Owor
ICAgICAgICBjb25zdCBib29sIHJlZ1R5cGVJc0dQUiA9IHN0ZDo6aXNfc2FtZTxSZWdUeXBlLCBH
UFJSZWc+Ojp2YWx1ZTsKKworICAgICAgICBpZiAoc291cmNlLnR5cGUgPT0gU291cmNlOjpUeXBl
OjpCdWZmZXJPZmZzZXQpIHsKKyAgICAgICAgICAgIHJlZ1RvU3RvcmUgPSB0ZW1wMTxSZWdUeXBl
PigpOworICAgICAgICAgICAgbG9hZChzcmNPZmZzZXQgLSBtX3NyY09mZnNldEFkanVzdG1lbnQs
IHJlZ1RvU3RvcmUpOworICAgICAgICB9IGVsc2UgaWYgKHNvdXJjZS50eXBlID09IFNvdXJjZTo6
VHlwZTo6UmVnKQorICAgICAgICAgICAgcmVnVG9TdG9yZSA9IHNvdXJjZS5nZXRSZWc8UmVnVHlw
ZT4oKTsKKyAgICAgICAgZWxzZSBpZiBjb25zdGV4cHIgKHJlZ1R5cGVJc0dQUikgeworICAgICAg
ICAgICAgcmVnVG9TdG9yZSA9IHRlbXAxPFJlZ1R5cGU+KCk7CisgICAgICAgICAgICBtb3ZlKHNv
dXJjZS52YWx1ZSwgcmVnVG9TdG9yZSk7CisgICAgICAgIH0KKworICAgICAgICBzdG9yZShyZWdU
b1N0b3JlLCBtX2RlZmVycmVkU3RvcmVPZmZzZXQgLSBtX2RzdE9mZnNldEFkanVzdG1lbnQpOwor
ICAgICAgICBtX2N1cnJlbnRTb3VyY2UgPSAwOworICAgIH0KKworcHVibGljOgorICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBsb2FkR1BSKGludCBzcmNPZmZzZXQpIHsgbG9hZDxHUFJSZWc+KHNyY09m
ZnNldCk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgY29weUdQUihHUFJSZWcgZ3ByKSB7IGNv
cHk8R1BSUmVnPihncHIpOyB9CisgICAgQUxXQVlTX0lOTElORSB2b2lkIG1vdmVDb25zdGFudChF
bmNvZGVkSlNWYWx1ZSB2YWx1ZSkgeyBtb3ZlKHZhbHVlKTsgfQorICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBzdG9yZUdQUihpbnQgZHN0T2Zmc2V0KSB7IHN0b3JlPEdQUlJlZz4oZHN0T2Zmc2V0KTsg
fQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBmbHVzaEdQUigpIHsgZmx1c2g8R1BSUmVnPigpOyB9
CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbG9hZEZQUihpbnQgc3JjT2Zmc2V0KSB7IGxvYWQ8
RlBSUmVnPihzcmNPZmZzZXQpOyB9CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGNvcHlGUFIoRlBS
UmVnIGdwcikgeyBjb3B5PEZQUlJlZz4oZ3ByKTsgfQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBz
dG9yZUZQUihpbnQgZHN0T2Zmc2V0KSB7IHN0b3JlPEZQUlJlZz4oZHN0T2Zmc2V0KTsgfQorICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBmbHVzaEZQUigpIHsgZmx1c2g8RlBSUmVnPigpOyB9CisKK3By
b3RlY3RlZDoKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBtb3Zl
KEVuY29kZWRKU1ZhbHVlIHZhbHVlLCBHUFJSZWcgZGVzdCkKKyAgICB7CisgICAgICAgIG1faml0
Lm1vdmUoVHJ1c3RlZEltbTY0KHZhbHVlKSwgZGVzdCk7CisgICAgfQorI2Vsc2UKKyAgICBOT19S
RVRVUk5fRFVFX1RPX0NSQVNIIHZvaWQgbW92ZShFbmNvZGVkSlNWYWx1ZSwgR1BSUmVnKSB7IFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyNlbmRpZgorCisgICAgQUxXQVlTX0lOTElO
RSB2b2lkIGxvYWQoaW50IG9mZnNldCwgR1BSUmVnIGRlc3QpCisgICAgeworICAgICAgICBtX2pp
dC5sb2FkUHRyKEFkZHJlc3MobV9zcmNCdWZmZXJHUFIsIG9mZnNldCksIGRlc3QpOworICAgIH0K
KworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzdG9yZShHUFJSZWcgc3JjLCBpbnQgb2Zmc2V0KQor
ICAgIHsKKyAgICAgICAgbV9qaXQuc3RvcmVQdHIoc3JjLCBBZGRyZXNzKG1fZHN0QnVmZmVyR1BS
LCBvZmZzZXQpKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbG9hZChpbnQgb2Zm
c2V0LCBGUFJSZWcgZGVzdCkKKyAgICB7CisgICAgICAgIG1faml0LmxvYWREb3VibGUoQWRkcmVz
cyhtX3NyY0J1ZmZlckdQUiwgb2Zmc2V0KSwgZGVzdCk7CisgICAgfQorCisgICAgQUxXQVlTX0lO
TElORSB2b2lkIHN0b3JlKEZQUlJlZyBzcmMsIGludCBvZmZzZXQpCisgICAgeworICAgICAgICBt
X2ppdC5zdG9yZURvdWJsZShzcmMsIEFkZHJlc3MobV9kc3RCdWZmZXJHUFIsIG9mZnNldCkpOwor
ICAgIH0KKworI2lmIENQVShBUk02NCkKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSZWdUeXBlPgor
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBsb2FkUGFpcihpbnQgb2Zmc2V0LCBSZWdUeXBlIGRlc3Qx
LCBSZWdUeXBlIGRlc3QyKQorICAgIHsKKyAgICAgICAgbV9qaXQubG9hZFBhaXI2NChtX3NyY0J1
ZmZlckdQUiwgVHJ1c3RlZEltbTMyKG9mZnNldCksIGRlc3QxLCBkZXN0Mik7CisgICAgfQorCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgUmVnVHlwZT4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc3Rv
cmVQYWlyKFJlZ1R5cGUgc3JjMSwgUmVnVHlwZSBzcmMyLCBpbnQgb2Zmc2V0KQorICAgIHsKKyAg
ICAgICAgbV9qaXQuc3RvcmVQYWlyNjQoc3JjMSwgc3JjMiwgbV9kc3RCdWZmZXJHUFIsIFRydXN0
ZWRJbW0zMihvZmZzZXQpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaGFz
UGFpck9wID0gdHJ1ZTsKKyNlbHNlCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgUmVnVHlwZT4gQUxX
QVlTX0lOTElORSB2b2lkIGxvYWRQYWlyKGludCwgUmVnVHlwZSwgUmVnVHlwZSkgeyB9CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgUmVnVHlwZT4gQUxXQVlTX0lOTElORSB2b2lkIHN0b3JlUGFpcihS
ZWdUeXBlLCBSZWdUeXBlLCBpbnQpIHsgfQorCisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGhh
c1BhaXJPcCA9IGZhbHNlOworI2VuZGlmCisKKyAgICBKSVQmIG1faml0OworCisgICAgR1BSUmVn
IG1fc3JjQnVmZmVyR1BSOworICAgIEdQUlJlZyBtX2RzdEJ1ZmZlckdQUjsKKyAgICBHUFJSZWcg
bV90ZW1wMUdQUjsKKyAgICBHUFJSZWcgbV90ZW1wMkdQUjsKKyAgICBGUFJSZWcgbV90ZW1wMUZQ
UjsKKyAgICBGUFJSZWcgbV90ZW1wMkZQUjsKKworcHJpdmF0ZToKKyAgICBzdGF0aWMgY29uc3Rl
eHByIGludCBncHJTaXplID0gc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoQ1BVUmVnaXN0ZXIpKTsK
KyAgICBzdGF0aWMgY29uc3RleHByIGludCBmcHJTaXplID0gc3RhdGljX2Nhc3Q8aW50PihzaXpl
b2YoZG91YmxlKSk7CisKKyAgICAvLyBUaGVzZSBwb2ludCB0byB3aGljaCByZWdpc3RlciB0byB1
c2UuCisgICAgR1BSUmVnIG1fZ3ByVG9TdG9yZSB7IEludmFsaWRHUFJSZWcgfTsgLy8gT25seSB1
c2VkIHdoZW4gIWhhc1BhaXJPcC4KKyAgICBGUFJSZWcgbV9mcHJUb1N0b3JlIHsgSW52YWxpZEZQ
UlJlZyB9OyAvLyBPbmx5IHVzZWQgd2hlbiAhaGFzUGFpck9wLgorCisgICAgQnVmZmVyUmVncyBt
X2J1ZmZlclJlZ3NBdHRyOworICAgIFNvdXJjZSBtX3NvdXJjZXNbMl07CisgICAgdW5zaWduZWQg
bV9jdXJyZW50U291cmNlIHsgMCB9OworICAgIGludCBtX3NyY09mZnNldEFkanVzdG1lbnQgeyAw
IH07CisgICAgaW50IG1fZHN0T2Zmc2V0QWRqdXN0bWVudCB7IDAgfTsKKyAgICBpbnQgbV9kZWZl
cnJlZFN0b3JlT2Zmc2V0OworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgUmVnVHlwZT4gZnJpZW5k
IHN0cnVjdCBSZWdEaXNwYXRjaDsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYg
Ly8gRU5BQkxFKEpJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2NyYXRjaFJl
Z2lzdGVyQWxsb2NhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5jcHAJKHJldmlzaW9uIDI3ODg4NikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShKSVQpCiAKKyNpbmNs
dWRlICJBc3NlbWJseUhlbHBlcnNTcG9vbGVycy5oIgogI2luY2x1ZGUgIk1heEZyYW1lRXh0ZW50
Rm9yU2xvd1BhdGhDYWxsLmgiCiAjaW5jbHVkZSAiVk0uaCIKIApAQCAtMTAxLDcgKzEwMiw3IEBA
IHR5cGVuYW1lIEJhbmtJbmZvOjpSZWdpc3RlclR5cGUgU2NyYXRjaFIKIEdQUlJlZyBTY3JhdGNo
UmVnaXN0ZXJBbGxvY2F0b3I6OmFsbG9jYXRlU2NyYXRjaEdQUigpIHsgcmV0dXJuIGFsbG9jYXRl
U2NyYXRjaDxHUFJJbmZvPigpOyB9CiBGUFJSZWcgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjph
bGxvY2F0ZVNjcmF0Y2hGUFIoKSB7IHJldHVybiBhbGxvY2F0ZVNjcmF0Y2g8RlBSSW5mbz4oKTsg
fQogCi1TY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OlByZXNlcnZlZFN0YXRlIFNjcmF0Y2hSZWdp
c3RlckFsbG9jYXRvcjo6cHJlc2VydmVSZXVzZWRSZWdpc3RlcnNCeVB1c2hpbmcoTWFjcm9Bc3Nl
bWJsZXImIGppdCwgRXh0cmFTdGFja1NwYWNlIGV4dHJhU3RhY2tTcGFjZSkKK1NjcmF0Y2hSZWdp
c3RlckFsbG9jYXRvcjo6UHJlc2VydmVkU3RhdGUgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpw
cmVzZXJ2ZVJldXNlZFJlZ2lzdGVyc0J5UHVzaGluZyhBc3NlbWJseUhlbHBlcnMmIGppdCwgRXh0
cmFTdGFja1NwYWNlIGV4dHJhU3RhY2tTcGFjZSkKIHsKICAgICBpZiAoIWRpZFJldXNlUmVnaXN0
ZXJzKCkpCiAgICAgICAgIHJldHVybiBQcmVzZXJ2ZWRTdGF0ZSgwLCBleHRyYVN0YWNrU3BhY2Up
OwpAQCAtMTI0LDcgKzEyNSw3IEBAIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6UHJlc2VydmVk
U3RhdGUKICAgICByZXR1cm4gUHJlc2VydmVkU3RhdGUoc3RhY2tBZGp1c3RtZW50U2l6ZSwgZXh0
cmFTdGFja1NwYWNlKTsKIH0KIAotdm9pZCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OnJlc3Rv
cmVSZXVzZWRSZWdpc3RlcnNCeVBvcHBpbmcoTWFjcm9Bc3NlbWJsZXImIGppdCwgY29uc3QgU2Ny
YXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpQcmVzZXJ2ZWRTdGF0ZSYgcHJlc2VydmVkU3RhdGUpCit2
b2lkIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6cmVzdG9yZVJldXNlZFJlZ2lzdGVyc0J5UG9w
cGluZyhBc3NlbWJseUhlbHBlcnMmIGppdCwgY29uc3QgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9y
OjpQcmVzZXJ2ZWRTdGF0ZSYgcHJlc2VydmVkU3RhdGUpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQo
cHJlc2VydmVkU3RhdGUpOwogICAgIGlmICghZGlkUmV1c2VSZWdpc3RlcnMoKSkKQEAgLTE2MSw3
ICsxNjIsNyBAQCB1bnNpZ25lZCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OmRlc2lyCiAgICAg
cmV0dXJuIHVzZWRSZWdpc3RlcnNGb3JDYWxsKCkubnVtYmVyT2ZTZXRSZWdpc3RlcnMoKSAqIHNp
emVvZihKU1ZhbHVlKTsKIH0KIAotdW5zaWduZWQgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpw
cmVzZXJ2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKE1hY3JvQXNzZW1ibGVyJiBqaXQsIGNvbnN0
IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCB1bnNpZ25lZCBleHRyYUJ5dGVzQXRUb3BPZlN0
YWNrKQordW5zaWduZWQgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpwcmVzZXJ2ZVJlZ2lzdGVy
c1RvU3RhY2tGb3JDYWxsKEFzc2VtYmx5SGVscGVycyYgaml0LCBjb25zdCBSZWdpc3RlclNldCYg
dXNlZFJlZ2lzdGVycywgdW5zaWduZWQgZXh0cmFCeXRlc0F0VG9wT2ZTdGFjaykKIHsKICAgICBS
RUxFQVNFX0FTU0VSVChleHRyYUJ5dGVzQXRUb3BPZlN0YWNrICUgc2l6ZW9mKHZvaWQqKSA9PSAw
KTsKICAgICBpZiAoIXVzZWRSZWdpc3RlcnMubnVtYmVyT2ZTZXRSZWdpc3RlcnMoKSkKQEAgLTE3
NCwyNiArMTc1LDMxIEBAIHVuc2lnbmVkIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6cHJlc2UK
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihzdGFja09mZnNldCksCiAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAKKyAgICBBc3NlbWJs
eUhlbHBlcnM6OlN0b3JlUmVnU3Bvb2xlciBzcG9vbGVyKGppdCwgTWFjcm9Bc3NlbWJsZXI6OnN0
YWNrUG9pbnRlclJlZ2lzdGVyKTsKKwogICAgIHVuc2lnbmVkIGNvdW50ID0gMDsKICAgICBmb3Ig
KEdQUlJlZyByZWcgPSBNYWNyb0Fzc2VtYmxlcjo6Zmlyc3RSZWdpc3RlcigpOyByZWcgPD0gTWFj
cm9Bc3NlbWJsZXI6Omxhc3RSZWdpc3RlcigpOyByZWcgPSBNYWNyb0Fzc2VtYmxlcjo6bmV4dFJl
Z2lzdGVyKHJlZykpIHsKICAgICAgICAgaWYgKHVzZWRSZWdpc3RlcnMuZ2V0KHJlZykpIHsKLSAg
ICAgICAgICAgIGppdC5zdG9yZVB0cihyZWcsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKE1hY3Jv
QXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3RlciwgZXh0cmFCeXRlc0F0VG9wT2ZTdGFjayAr
IChjb3VudCAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpKSk7CisgICAgICAgICAgICBzcG9vbGVy
LnN0b3JlR1BSKHsgcmVnLCBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KGV4dHJhQnl0ZXNBdFRvcE9m
U3RhY2sgKyAoY291bnQgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSkgfSk7CiAgICAgICAgICAg
ICBjb3VudCsrOwogICAgICAgICB9CiAgICAgfQorICAgIHNwb29sZXIuZmx1c2hHUFIoKTsKKwog
ICAgIGZvciAoRlBSUmVnIHJlZyA9IE1hY3JvQXNzZW1ibGVyOjpmaXJzdEZQUmVnaXN0ZXIoKTsg
cmVnIDw9IE1hY3JvQXNzZW1ibGVyOjpsYXN0RlBSZWdpc3RlcigpOyByZWcgPSBNYWNyb0Fzc2Vt
Ymxlcjo6bmV4dEZQUmVnaXN0ZXIocmVnKSkgewogICAgICAgICBpZiAodXNlZFJlZ2lzdGVycy5n
ZXQocmVnKSkgewotICAgICAgICAgICAgaml0LnN0b3JlRG91YmxlKHJlZywgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBleHRyYUJ5
dGVzQXRUb3BPZlN0YWNrICsgKGNvdW50ICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSkpKTsKKyAg
ICAgICAgICAgIHNwb29sZXIuc3RvcmVGUFIoeyByZWcsIHN0YXRpY19jYXN0PHB0cmRpZmZfdD4o
ZXh0cmFCeXRlc0F0VG9wT2ZTdGFjayArIChjb3VudCAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkp
KSB9KTsKICAgICAgICAgICAgIGNvdW50Kys7CiAgICAgICAgIH0KICAgICB9CisgICAgc3Bvb2xl
ci5mbHVzaEZQUigpOwogCiAgICAgUkVMRUFTRV9BU1NFUlQoY291bnQgPT0gdXNlZFJlZ2lzdGVy
cy5udW1iZXJPZlNldFJlZ2lzdGVycygpKTsKIAogICAgIHJldHVybiBzdGFja09mZnNldDsKIH0K
IAotdm9pZCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OnJlc3RvcmVSZWdpc3RlcnNGcm9tU3Rh
Y2tGb3JDYWxsKE1hY3JvQXNzZW1ibGVyJiBqaXQsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVn
aXN0ZXJzLCBjb25zdCBSZWdpc3RlclNldCYgaWdub3JlLCB1bnNpZ25lZCBudW1iZXJPZlN0YWNr
Qnl0ZXNVc2VkRm9yUmVnaXN0ZXJQcmVzZXJ2YXRpb24sIHVuc2lnbmVkIGV4dHJhQnl0ZXNBdFRv
cE9mU3RhY2spCit2b2lkIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6cmVzdG9yZVJlZ2lzdGVy
c0Zyb21TdGFja0ZvckNhbGwoQXNzZW1ibHlIZWxwZXJzJiBqaXQsIGNvbnN0IFJlZ2lzdGVyU2V0
JiB1c2VkUmVnaXN0ZXJzLCBjb25zdCBSZWdpc3RlclNldCYgaWdub3JlLCB1bnNpZ25lZCBudW1i
ZXJPZlN0YWNrQnl0ZXNVc2VkRm9yUmVnaXN0ZXJQcmVzZXJ2YXRpb24sIHVuc2lnbmVkIGV4dHJh
Qnl0ZXNBdFRvcE9mU3RhY2spCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoZXh0cmFCeXRlc0F0VG9w
T2ZTdGFjayAlIHNpemVvZih2b2lkKikgPT0gMCk7CiAgICAgaWYgKCF1c2VkUmVnaXN0ZXJzLm51
bWJlck9mU2V0UmVnaXN0ZXJzKCkpIHsKQEAgLTIwMSwyMSArMjA3LDI2IEBAIHZvaWQgU2NyYXRj
aFJlZ2lzdGVyQWxsb2NhdG9yOjpyZXN0b3JlUmUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAor
ICAgIEFzc2VtYmx5SGVscGVyczo6TG9hZFJlZ1Nwb29sZXIgc3Bvb2xlcihqaXQsIE1hY3JvQXNz
ZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisKICAgICB1bnNpZ25lZCBjb3VudCA9IDA7
CiAgICAgZm9yIChHUFJSZWcgcmVnID0gTWFjcm9Bc3NlbWJsZXI6OmZpcnN0UmVnaXN0ZXIoKTsg
cmVnIDw9IE1hY3JvQXNzZW1ibGVyOjpsYXN0UmVnaXN0ZXIoKTsgcmVnID0gTWFjcm9Bc3NlbWJs
ZXI6Om5leHRSZWdpc3RlcihyZWcpKSB7CiAgICAgICAgIGlmICh1c2VkUmVnaXN0ZXJzLmdldChy
ZWcpKSB7CiAgICAgICAgICAgICBpZiAoIWlnbm9yZS5nZXQocmVnKSkKLSAgICAgICAgICAgICAg
ICBqaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6c3Rh
Y2tQb2ludGVyUmVnaXN0ZXIsIGV4dHJhQnl0ZXNBdFRvcE9mU3RhY2sgKyAoc2l6ZW9mKEVuY29k
ZWRKU1ZhbHVlKSAqIGNvdW50KSksIHJlZyk7CisgICAgICAgICAgICAgICAgc3Bvb2xlci5sb2Fk
R1BSKHsgcmVnLCBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KGV4dHJhQnl0ZXNBdFRvcE9mU3RhY2sg
KyAoc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAqIGNvdW50KSkgfSk7CiAgICAgICAgICAgICBjb3Vu
dCsrOwogICAgICAgICB9CiAgICAgfQorICAgIHNwb29sZXIuZmx1c2hHUFIoKTsKKwogICAgIGZv
ciAoRlBSUmVnIHJlZyA9IE1hY3JvQXNzZW1ibGVyOjpmaXJzdEZQUmVnaXN0ZXIoKTsgcmVnIDw9
IE1hY3JvQXNzZW1ibGVyOjpsYXN0RlBSZWdpc3RlcigpOyByZWcgPSBNYWNyb0Fzc2VtYmxlcjo6
bmV4dEZQUmVnaXN0ZXIocmVnKSkgewogICAgICAgICBpZiAodXNlZFJlZ2lzdGVycy5nZXQocmVn
KSkgewogICAgICAgICAgICAgaWYgKCFpZ25vcmUuZ2V0KHJlZykpCi0gICAgICAgICAgICAgICAg
aml0LmxvYWREb3VibGUoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoTWFjcm9Bc3NlbWJsZXI6OnN0
YWNrUG9pbnRlclJlZ2lzdGVyLCBleHRyYUJ5dGVzQXRUb3BPZlN0YWNrICsgKHNpemVvZihFbmNv
ZGVkSlNWYWx1ZSkgKiBjb3VudCkpLCByZWcpOworICAgICAgICAgICAgICAgIHNwb29sZXIubG9h
ZEZQUih7IHJlZywgc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihleHRyYUJ5dGVzQXRUb3BPZlN0YWNr
ICsgKHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgKiBjb3VudCkpIH0pOwogICAgICAgICAgICAgY291
bnQrKzsKICAgICAgICAgfQogICAgIH0KKyAgICBzcG9vbGVyLmZsdXNoRlBSKCk7CiAKICAgICB1
bnNpZ25lZCBzdGFja09mZnNldCA9ICh1c2VkUmVnaXN0ZXJzLm51bWJlck9mU2V0UmVnaXN0ZXJz
KCkpICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKTsKICAgICBzdGFja09mZnNldCArPSBleHRyYUJ5
dGVzQXRUb3BPZlN0YWNrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TY3JhdGNo
UmVnaXN0ZXJBbGxvY2F0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5oCShyZXZpc2lvbiAyNzg4ODYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxNCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTI3LDEyICsyNywxMiBAQAogCiAjaWYgRU5BQkxFKEpJVCkKIAotI2luY2x1
ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJTZXQuaCIKICNpbmNsdWRl
ICJUZW1wUmVnaXN0ZXJTZXQuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNzIEFzc2VtYmx5
SGVscGVyczsKIHN0cnVjdCBTY3JhdGNoQnVmZmVyOwogCiAvLyBUaGlzIGNsYXNzIHByb3ZpZGVz
IGEgbG93LWxldmVsIHJlZ2lzdGVyIGFsbG9jYXRvciBmb3IgdXNlIGluIHN0dWJzLgpAQCAtODQs
MTUgKzg0LDE1IEBAIHB1YmxpYzoKICAgICAgICAgRXh0cmFTdGFja1NwYWNlIGV4dHJhU3RhY2tT
cGFjZVJlcXVpcmVtZW50OwogICAgIH07CiAKLSAgICBQcmVzZXJ2ZWRTdGF0ZSBwcmVzZXJ2ZVJl
dXNlZFJlZ2lzdGVyc0J5UHVzaGluZyhNYWNyb0Fzc2VtYmxlciYgaml0LCBFeHRyYVN0YWNrU3Bh
Y2UpOwotICAgIHZvaWQgcmVzdG9yZVJldXNlZFJlZ2lzdGVyc0J5UG9wcGluZyhNYWNyb0Fzc2Vt
YmxlciYgaml0LCBjb25zdCBQcmVzZXJ2ZWRTdGF0ZSYpOworICAgIFByZXNlcnZlZFN0YXRlIHBy
ZXNlcnZlUmV1c2VkUmVnaXN0ZXJzQnlQdXNoaW5nKEFzc2VtYmx5SGVscGVycyYgaml0LCBFeHRy
YVN0YWNrU3BhY2UpOworICAgIHZvaWQgcmVzdG9yZVJldXNlZFJlZ2lzdGVyc0J5UG9wcGluZyhB
c3NlbWJseUhlbHBlcnMmIGppdCwgY29uc3QgUHJlc2VydmVkU3RhdGUmKTsKICAgICAKICAgICBS
ZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzRm9yQ2FsbCgpIGNvbnN0OwogICAgIAogICAgIHVuc2ln
bmVkIGRlc2lyZWRTY3JhdGNoQnVmZmVyU2l6ZUZvckNhbGwoKSBjb25zdDsKLSAgICAKLSAgICBz
dGF0aWMgdW5zaWduZWQgcHJlc2VydmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbChNYWNyb0Fzc2Vt
YmxlciYgaml0LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgdW5zaWduZWQgZXh0
cmFQYWRkaW5nSW5CeXRlcyk7Ci0gICAgc3RhdGljIHZvaWQgcmVzdG9yZVJlZ2lzdGVyc0Zyb21T
dGFja0ZvckNhbGwoTWFjcm9Bc3NlbWJsZXImIGppdCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRS
ZWdpc3RlcnMsIGNvbnN0IFJlZ2lzdGVyU2V0JiBpZ25vcmUsIHVuc2lnbmVkIG51bWJlck9mU3Rh
Y2tCeXRlc1VzZWRGb3JSZWdpc3RlclByZXNlcnZhdGlvbiwgdW5zaWduZWQgZXh0cmFQYWRkaW5n
SW5CeXRlcyk7CisKKyAgICBzdGF0aWMgdW5zaWduZWQgcHJlc2VydmVSZWdpc3RlcnNUb1N0YWNr
Rm9yQ2FsbChBc3NlbWJseUhlbHBlcnMmIGppdCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdp
c3RlcnMsIHVuc2lnbmVkIGV4dHJhUGFkZGluZ0luQnl0ZXMpOworICAgIHN0YXRpYyB2b2lkIHJl
c3RvcmVSZWdpc3RlcnNGcm9tU3RhY2tGb3JDYWxsKEFzc2VtYmx5SGVscGVycyYgaml0LCBjb25z
dCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgY29uc3QgUmVnaXN0ZXJTZXQmIGlnbm9yZSwg
dW5zaWduZWQgbnVtYmVyT2ZTdGFja0J5dGVzVXNlZEZvclJlZ2lzdGVyUHJlc2VydmF0aW9uLCB1
bnNpZ25lZCBleHRyYVBhZGRpbmdJbkJ5dGVzKTsKIAogcHJpdmF0ZToKICAgICBSZWdpc3RlclNl
dCBtX3VzZWRSZWdpc3RlcnM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
QWlySVJHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDI3ODg4NikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yOTgxLDEwICsyOTgxLDcgQEAgYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkUmV0dXJuKGNv
bnN0IENvbgogICAgIEIzOjpQYXRjaHBvaW50VmFsdWUqIHBhdGNoID0gYWRkUGF0Y2hwb2ludChC
Mzo6Vm9pZCk7CiAgICAgcGF0Y2gtPnNldEdlbmVyYXRvcihbXSAoQ0NhbGxIZWxwZXJzJiBqaXQs
IGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewogICAgICAgICBh
dXRvIGNhbGxlZVNhdmVzID0gcGFyYW1zLmNvZGUoKS5jYWxsZWVTYXZlUmVnaXN0ZXJBdE9mZnNl
dExpc3QoKTsKLQotICAgICAgICBmb3IgKFJlZ2lzdGVyQXRPZmZzZXQgY2FsbGVlU2F2ZSA6IGNh
bGxlZVNhdmVzKQotICAgICAgICAgICAgaml0LmxvYWQ2NFRvUmVnKENDYWxsSGVscGVyczo6QWRk
cmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgY2FsbGVlU2F2ZS5vZmZzZXQoKSksIGNh
bGxlZVNhdmUucmVnKCkpOwotCisgICAgICAgIGppdC5lbWl0UmVzdG9yZShjYWxsZWVTYXZlcyk7
CiAgICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOwogICAgICAgICBqaXQucmV0KCk7
CiAgICAgfSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVy
YXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIz
SVJHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAyNzg4ODYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMjg0LDEw
ICsyMjg0LDcgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRSZXR1cm4oY29uc3QgQ29udAogICAg
IFBhdGNocG9pbnRWYWx1ZSogcGF0Y2ggPSBtX3Byb2MuYWRkPFBhdGNocG9pbnRWYWx1ZT4oQjM6
OlZvaWQsIG9yaWdpbigpKTsKICAgICBwYXRjaC0+c2V0R2VuZXJhdG9yKFtdIChDQ2FsbEhlbHBl
cnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CiAg
ICAgICAgIGF1dG8gY2FsbGVlU2F2ZXMgPSBwYXJhbXMuY29kZSgpLmNhbGxlZVNhdmVSZWdpc3Rl
ckF0T2Zmc2V0TGlzdCgpOwotCi0gICAgICAgIGZvciAoUmVnaXN0ZXJBdE9mZnNldCBjYWxsZWVT
YXZlIDogY2FsbGVlU2F2ZXMpCi0gICAgICAgICAgICBqaXQubG9hZDY0VG9SZWcoQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBjYWxsZWVTYXZlLm9mZnNl
dCgpKSwgY2FsbGVlU2F2ZS5yZWcoKSk7Ci0KKyAgICAgICAgaml0LmVtaXRSZXN0b3JlKGNhbGxl
ZVNhdmVzKTsKICAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CiAgICAgICAgIGpp
dC5yZXQoKTsKICAgICB9KTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432068</attachid>
            <date>2021-06-23 10:35:38 -0700</date>
            <delta_ts>2021-06-24 16:30:21 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-227039.patch</filename>
            <type>text/plain</type>
            <size>109105</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjc5MTczKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzMCBA
QAorMjAyMS0wNi0yMyAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
VXNlIGxkcCBhbmQgc3RwIG1vcmUgZm9yIHNhdmluZyAvIHJlc3RvcmluZyByZWdpc3RlcnMgb24g
QVJNNjQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjcwMzkKKyAgICAgICAgcmRhcjovLzc5MzU0NzM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgc3Bvb2xlciBh
YnN0cmFjdGlvbiBpbiBBc3NlbWJseUhlbHBlcnMuICBUaGUgc3Bvb2xlcgorICAgICAgICBiYXNp
Y2FsbHkgYmF0Y2hlcyB1cCBsb2FkIC8gc3RvcmUgb3BlcmF0aW9ucyBhbmQgZW1pdCB0aGVtIGFz
IHBhaXIgaW5zdHJ1Y3Rpb25zCisgICAgICAgIGlmIGFwcHJvcHJpYXRlLgorCisgICAgICAgIFRo
ZXJlIGFyZSA0IHNwb29sZXIgY2xhc3NlczoKKyAgICAgICAgYS4gU3Bvb2xlcgorICAgICAgICAg
ICAtIHRlbXBsYXRlIGJhc2UgY2xhc3MgZm9yIExvYWRSZWdTcG9vbGVyIGFuZCBTdG9yZVJlZ1Nw
b29sZXIuCisgICAgICAgICAgIC0gZW5jYXBzdWxhdGVzIHRoZSBiYXRjaGluZyBzdHJhdGVneSBm
b3IgbG9hZCAvIHN0b3JlIHBhaXJzLgorCisgICAgICAgIGIuIExvYWRSZWdTcG9vbGVyIC0gc3Bl
Y2lhbGl6ZXMgU3Bvb2xlciB0byBoYW5kbGUgbG9hZCBwYWlycy4KKyAgICAgICAgYi4gU3RvcmVS
ZWdTcG9vbGVyIC0gc3BlY2lhbGl6ZXMgU3Bvb2xlciB0byBoYW5kbGUgc3RvcmUgcGFpcnMuCisK
KyAgICAgICAgZC4gQ29weVNwb29sZXIKKyAgICAgICAgICAgLSBoYW5kbGVzIG1hdGNoaW5nIGxv
YWRzIHdpdGggc3RvcmVzLgorICAgICAgICAgICAtIHRyaWVzIHRvIGVtaXQgbG9hZHMgYXMgbG9h
ZCBwYWlycyBpZiBwb3NzaWJsZS4KKyAgICAgICAgICAgLSB0cmllcyB0byBlbW90IHN0b3JlcyBh
cyBzdG9yZSBwYWlycyBpZiBwb3NzaWJsZS4KKyAgICAgICAgICAgLSBlbnN1cmVzIHRoYXQgcHJl
LXJlcXVpc2l0ZSBsb2FkcyBhcmUgZW1pdHRlZCBiZWZvcmUgc3RvcmVzIGFyZSBlbWl0dGVkLgor
ICAgICAgICAgICAtIG90aGVyIHRoYW4gbG9hZHMsIGFsc28gc3VwcG9ydCBjb25zdGFudHMgYW5k
IHJlZ2lzdGVycyBhcyBzb3VyY2VzIG9mIHZhbHVlcworICAgICAgICAgICAgIHRvIGJlIHN0b3Jl
ZC4gIFRoaXMgaXMgdXNlZnVsIGluIE9TUiBleGl0IHJhbXBzIHdoZXJlIHdlIG1heSBtYXRlcmlh
bGl6ZSBhCisgICAgICAgICAgICAgc3RhY2sgdmFsdWUgdG8gc3RvcmUgZnJvbSBjb25zdGFudHMg
b3IgcmVnaXN0ZXJzIGluIGFkZGl0aW9uIHRvIHZhbHVlcyB3ZQorICAgICAgICAgICAgIGxvYWQg
ZnJvbSB0aGUgb2xkIHN0YWNrIGZyYW1lIG9yIGZyb20gYSBzY3JhdGNoIGJ1ZmZlci4KKworICAg
ICAgICBJbiB0aGlzIHBhdGNoLCB3ZSBhbHNvIGRvIHRoZSBmb2xsb3dpbmc6CisKKyAgICAgICAg
MS4gVXNlIHNwb29sZXJzIGluIG1hbnkgcGxhY2VzIHNvIHRoYXQgd2UgY2FuIGVtaXQgbG9hZCAv
IHN0b3JlIHBhaXJzIGluc3RlYWQgb2YKKyAgICAgICAgICAgc2luZ2xlIGxvYWQgLyBzdG9yZXMu
ICBUaGlzIGhlbHBzIHNocmluayBKSVQgY29kZSBzaWRlLCBhbmQgYWxzbyBwb3RlbnRpYWxseQor
ICAgICAgICAgICBpbXByb3ZlcyBwZXJmb3JtYW5jZS4KKworICAgICAgICAyLiBJbiBERkc6Ok9T
UkV4aXQ6OmNvbXBpbGVFeGl0KCksIHdlIHVzZWQgdG8gcmVjb3ZlciBjb25zdGFudHMgaW50byBh
IHNjcmF0Y2gKKyAgICAgICAgICAgYnVmZmVyLCBhbmQgdGhlbiBsYXRlciwgbG9hZCBmcm9tIHRo
YXQgc2NyYXRjaCBidWZmZXIgdG8gc3RvcmUgaW50byB0aGUKKyAgICAgICAgICAgbmV3IHN0YWNr
IGZyYW1lKHMpLgorCisgICAgICAgICAgIFRoaXMgcGF0Y2ggY2hhbmdlcyBpdCBzbyB0aGF0IHdl
IGRlZmVyIGNvbnN0YW50IHJlY292ZXJ5IHVudGlsIHRoZSBmaW5hbAorICAgICAgICAgICBsb29w
IHdoZXJlIHdlIHN0b3JlIHRoZSByZWNvdmVyZWQgdmFsdWUgZGlyZWN0bHkgaW50byB0aGUgbmV3
IHN0YWNrIGZyYW1lKHMpLgorICAgICAgICAgICBUaGlzIHNhdmVzIHVzIHRoZSB3b3JrIChhbmQg
SklUIGNvZGUgc3BhY2UpIGZvciBzdG9yaW5nIGludG8gYSBzY3JhdGNoIGJ1ZmZlcgorICAgICAg
ICAgICBhbmQgdGhlbiByZWxvYWRpbmcgZnJvbSB0aGUgc2NyYXRjaCBidWZmZXIuCisKKyAgICAg
ICAgICAgVGhlcmUgaXMgb25lIGV4Y2VwdGlvbjogdG1wIHZhbHVlcyB1c2VkIGJ5IGFjdGl2ZSBj
aGVja3BvaW50cy4gIFdlIG5lZWQgdG8gY2FsbAorICAgICAgICAgICBvcGVyYXRpb25NYXRlcmlh
bGl6ZU9TUkV4aXRTaWRlU3RhdGUoKSB0byBtYXRlcmlhbGl6ZSB0aGUgYWN0aXZlIGNoZWNrcG9p
bnQKKyAgICAgICAgICAgc2lkZSBzdGF0ZSBiZWZvcmUgdGhlIGZpbmFsIGxvb3Agd2hlcmUgd2Ug
bm93IHJlY292ZXIgY29uc3RhbnRzLiAgSGVuY2UsIHdlCisgICAgICAgICAgIG5lZWQgdGhlc2Ug
dG1wIHZhbHVlcyByZWNvdmVyZWQgYmVmb3JlIGhhbmQuCisKKyAgICAgICAgICAgU28sIHdlIGNo
ZWNrIHVwZnJvbnQgaWYgd2UgaGF2ZSBhY3RpdmUgY2hlY2twb2ludCBzaWRlIHN0YXRlIHRvIG1h
dGVyaWFsaXplLgorICAgICAgICAgICBJZiBzbywgd2UnbGwgZWFnZXJseSByZWNvdmVyIHRoZSBj
b25zdGFudHMgZm9yIGluaXRpYWxpemluZyB0aG9zZSB0bXBzLgorCisgICAgICAgICAgIFdlIGFs
c28gdXNlIHRoZSBDb3B5U3Bvb2xlciBpbiB0aGUgZmluYWwgbG9vcCB0byBlbWl0IGxvYWQgLyBz
dG9yZSBwYWlycyBmb3IKKyAgICAgICAgICAgZmlsbGluZyBpbiB0aGUgbmV3IHN0YWNrIGZyYW1l
KHMpLgorCisgICAgICAgICAgIE9uZSBtb3JlIHRoaW5nOiBpdCB0dXJucyBvdXQgdGhhdCB0aGUg
dmFzdCBtYWpvcml0eSBvZiBjb25zdGFudHMgdG8gYmUgcmVjb3ZlcmVkCisgICAgICAgICAgIGlz
IHNpbXBseSB0aGUgdW5kZWZpbmVkIHZhbHVlLiAgU28sIGFzIGFuIG9wdGltaXphdGlvbiwgdGhl
IGZpbmFsIGxvb3Aga2VlcHMKKyAgICAgICAgICAgdGhlIHVuZGVmaW5lZCB2YWx1ZSBpbiBhIHJl
Z2lzdGVyLCBhbmQgaGFzIHRoZSBzcG9vbGVyIHN0b3JlIGRpcmVjdGx5IGZyb20KKyAgICAgICAg
ICAgdGhhdCByZWdpc3RlciB3aGVuIGFwcHJvcHJpYXRlLiAgVGhpcyBzYXZlcyBvbiBKSVQgY29k
ZSB0byByZXBlYXRlZGx5IG1hdGVyaWFsaXplCisgICAgICAgICAgIHRoZSB1bmRlZmluZWQgSlNW
YWx1ZSBjb25zdGFudC4KKworICAgICAgICAzLiBJbiByZWlmeUlubGluZWRDYWxsRnJhbWVzKCks
IHJlcGxhY2UgdGhlIHVzZSBvZiBHUFJJbmZvOjpub25BcmdHUFIwIHdpdGgKKyAgICAgICAgICAg
R1BSSW5mbzo6cmVnVDQuICBub25BcmdHUFJzIGFyZSBzb21ldGltZXMgbWFwIHRvIGNlcnRhaW4g
cmVnVFhzIG9uIGNlcnRhaW4gcG9ydHMuCisgICAgICAgICAgIFJlcGxhY2luZyB3aXRoIHJlZ1Q0
IG1ha2VzIGl0IGVhc2llciB0byBlbnN1cmUgdGhhdCB3ZSdyZSBub3QgdHJhc2hpbmcgdGhlCisg
ICAgICAgICAgIHJlZ2lzdGVyIHdoZW4gd2UgdXNlIG1vcmUgdGVtcCByZWdpc3RlcnMuCisKKyAg
ICAgICAgICAgcmVpZnlJbmxpbmVkQ2FsbEZyYW1lcygpIHdpbGwgYmUgdXNpbmcgZW1pdFNhdmVP
ckNvcHlMTEludEJhc2VsaW5lQ2FsbGVlU2F2ZXNGb3IoKQorICAgICAgICAgICBsYXRlciB3aGVy
ZSB3ZSBuZWVkIG1vcmUgdGVtcCByZWdpc3RlcnMuCisKKyAgICAgICAgNC4gTW92ZSB0aGUgZm9s
bG93aW5nIGZ1bmN0aW9ucyB0byBBc3NlbWJseUhlbHBlcnMuY3BwLiAgVGhleSBkb24ndCBuZWVk
IHRvIGJlCisgICAgICAgICAgIGlubGluZSBmdW5jdGlvbnMuICBTcGVlZG9tZXRlcjIgYW5kIEpl
dFN0cmVhbTIgc2hvd3MgdGhhdCBtYWtpbmcgdGhlc2Ugbm9uCisgICAgICAgICAgIGlubGluZSBk
b2VzIG5vdCBodXJ0IHBlcmZvcm1hbmNlOgorCisgICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxw
ZXJzOjplbWl0U2F2ZShjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCYpOworICAgICAgICAgICAg
ICAgIEFzc2VtYmx5SGVscGVyczo6ZW1pdFJlc3RvcmUoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExp
c3QmKTsKKyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OmVtaXRTYXZlQ2FsbGVlU2F2
ZXNGb3IoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QqKTsKKyAgICAgICAgICAgICAgICBBc3Nl
bWJseUhlbHBlcnM6OmVtaXRTYXZlT3JDb3B5Q2FsbGVlU2F2ZXNGb3IoLi4uKTsKKyAgICAgICAg
ICAgICAgICBBc3NlbWJseUhlbHBlcnM6OmVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXNGb3IoY29uc3Qg
UmVnaXN0ZXJBdE9mZnNldExpc3QqKTsKKyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6
OmNvcHlMTEludEJhc2VsaW5lQ2FsbGVlU2F2ZXNGcm9tRnJhbWVPclJlZ2lzdGVyVG9FbnRyeUZy
YW1lQ2FsbGVlU2F2ZXNCdWZmZXIoLi4uKTsKKworICAgICAgICAgICBBbHNvIHJlbmFtZWQgZW1p
dFNhdmVPckNvcHlDYWxsZWVTYXZlc0ZvcigpIHRvIGVtaXRTYXZlT3JDb3B5TExJbnRCYXNlbGlu
ZUNhbGxlZVNhdmVzRm9yKCkKKyAgICAgICAgICAgYmVjYXVzZSBpdCBpcyBvbmx5IHVzZWQgd2l0
aCBiYXNlbGluZSBjb2RlQmxvY2tzLgorCisgICAgICAgIFJlc3VsdHM6CisgICAgICAgIEN1bW11
bGF0aXZlIExpbmtCdWZmZXIgcHJvZmlsZSBzaXplcyBzaHJ1bmsgYnkgfjJNIGluIGFnZ3JlZ2F0
ZToKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UgICAgICAgICAgICAgICAgICAg
ICAgICAgICBuZXcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PT09ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPT09CisgICAgICAgICAgICAgICBCYXNlbGluZUpJVDogODM4MjcwNDgg
KDc5Ljk0MzcwMyBNQikgICAgID0+IDgzNzE4NzM2ICg3OS44NDA0MDggTUIpCisgICAgICAgICAg
ICAgICAgICAgICAgIERGRzogNTY1OTQ4MzYgKDUzLjk3MzA0MiBNQikgICAgID0+IDU2NjAzNTA4
ICg1My45ODEzMTIgTUIpCisgICAgICAgICAgICAgICBJbmxpbmVDYWNoZTogMzM5MjM5MDAgKDMy
LjM1MjM1MiBNQikgICAgID0+IDMzMTgzMTU2ICgzMS42NDU5MjQgTUIpCisgICAgICAgICAgICAg
ICAgICAgICAgIEZUTDogNjc3MDk1NiAoNi40NTcyODcgTUIpICAgICAgID0+IDY1Njg5NjQgKDYu
MjY0NjUyIE1CKQorICAgICAgICAgICAgICAgIERGR09TUkV4aXQ6IDUyMTIwOTYgKDQuOTcwNjQy
IE1CKSAgICAgICA9PiAzNzI4MDg4ICgzLjU1NTM4MiBNQikKKyAgICAgICAgICAgICAgICAgICAg
Q1NTSklUOiA3NDg0MjggKDczMC44ODY3MTkgS0IpICAgICAgPT4gNzQ4NDI4ICg3MzAuODg2NzE5
IEtCKQorICAgICAgICAgICAgICAgIEZUTE9TUkV4aXQ6IDY5MjI3NiAoNjc2LjA1MDc4MSBLQikg
ICAgICA9PiA2NTY4ODQgKDY0MS40ODgyODEgS0IpCisgICAgICAgICAgICAgICAgICAgWWFyckpJ
VDogNDQ1MjgwICg0MzQuODQzNzUwIEtCKSAgICAgID0+IDUxMjk4OCAoNTAwLjk2NDg0NCBLQikK
KyAgICAgICAgICAgICAgICAgIEZUTFRodW5rOiAyMjkwOCAoMjIuMzcxMDk0IEtCKSAgICAgICAg
PT4gMjI1NTYgKDIyLjAyNzM0NCBLQikKKyAgICAgICAgQm91bmRGdW5jdGlvblRodW5rOiA4NDAw
ICg4LjIwMzEyNSBLQikgICAgICAgICAgPT4gMTAwODggKDkuODUxNTYyIEtCKQorICAgICAgICAg
ICAgIEV4dHJhQ1RJVGh1bms6IDY5NTIgKDYuNzg5MDYyIEtCKSAgICAgICAgICA9PiA2ODI0ICg2
LjY2NDA2MiBLQikKKyAgICAgICAgICBTcGVjaWFsaXplZFRodW5rOiA0NTA4ICg0LjQwMjM0NCBL
QikgICAgICAgICAgPT4gNDUwOCAoNC40MDIzNDQgS0IpCisgICAgICAgICAgICAgICAgICAgICBU
aHVuazogMzkxMiAoMy44MjAzMTIgS0IpICAgICAgICAgID0+IDM3ODQgKDMuNjk1MzEyIEtCKQor
ICAgICAgICAgICAgICAgIExMSW50VGh1bms6IDI5MDggKDIuODM5ODQ0IEtCKSAgICAgICAgICA9
PiAyOTA4ICgyLjgzOTg0NCBLQikKKyAgICAgICAgICAgICAgVmlydHVhbFRodW5rOiAxMjQ4ICgx
LjIxODc1MCBLQikgICAgICAgICAgPT4gMTI0OCAoMS4yMTg3NTAgS0IpCisgICAgICAgICAgICAg
ICAgICBERkdUaHVuazogMTA4NCAoMS4wNTg1OTQgS0IpICAgICAgICAgID0+IDQ0NAorICAgICAg
ICAgICAgICAgREZHT1NSRW50cnk6IDIxNiAgICAgICAgICAgICAgICAgICAgICAgICA9PiAxODQK
KyAgICAgICAgICAgICAgICBKdW1wSXNsYW5kOiAwCisgICAgICAgICAgICAgICAgIFdhc21UaHVu
azogMAorICAgICAgICAgICAgICAgICAgICAgIFdhc206IDAKKyAgICAgICAgICAgICBVbmNhdGVn
b3JpemVkOiAwCisgICAgICAgICAgICAgICAgICAgICBUb3RhbDogMTg4MjY2OTU2ICgxNzkuNTQ1
MzYxIE1CKSAgID0+IDE4NTc3MzI5NiAoMTc3LjE2NzIyMSBNQikKKworICAgICAgICBTcGVlZG9t
ZXRlcjIgYW5kIEpldFN0cmVhbTIgcmVzdWx0cyBzaG93cyB0aGF0IHBlcmZvcm1hbmNlIGlzIG5l
dXRyYWwgZm9yIHRoaXMKKyAgICAgICAgcGF0Y2ggKGFzIG1lYXN1cmVkIG9uIGFuIE0xIE1hYyk6
CisKKyAgICAgICAgU3BlZWRvbWV0ZXIyOgorICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAg
ICAgIHwgICAgICAgICAgICAgICBzdWJ0ZXN0ICAgICAgICAgICAgICAgIHwgICAgIG1zICAgICAg
fCAgICAgbXMgICAgICB8ICBiIC8gYSAgIHwgcFZhbHVlIChzaWduaWZpY2FuY2UgdXNpbmcgRmFs
c2UgRGlzY292ZXJ5IFJhdGUpIHwKKyAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICB8
IEVsbS1Ub2RvTVZDICAgICAgICAgICAgICAgICAgICAgICAgICB8MTI5LjAzNzUwMCAgIHwxMjcu
MjEyNTAwICAgfDAuOTg1ODU3ICB8IDAuMDEyNzA2ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8CisgICAgICAgIHwgVnVlSlMtVG9kb01WQyAgICAgICAgICAgICAgICAg
ICAgICAgIHwyOC4zMTI1MDAgICAgfDI3LjUyNTAwMCAgICB8MC45NzIxODUgIHwgMC4yNDAzMTUg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBFbWJl
ckpTLVRvZG9NVkMgICAgICAgICAgICAgICAgICAgICAgfDEzMi41NTAwMDAgICB8MTMyLjAyNTAw
MCAgIHwwLjk5NjAzOSAgfCAwLjUzODAzNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfAorICAgICAgICB8IEZsaWdodC1Ub2RvTVZDICAgICAgICAgICAgICAgICAgICAg
ICB8ODAuNzYyNTAwICAgIHw4MC44NzUwMDAgICAgfDEuMDAxMzkzICB8IDAuOTE0NzQ5ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgQmFja2JvbmVK
Uy1Ub2RvTVZDICAgICAgICAgICAgICAgICAgIHw1MS42Mzc1MDAgICAgfDUxLjE3NTAwMCAgICB8
MC45OTEwNDMgIHwgMC4yODU0MjcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwKKyAgICAgICAgfCBQcmVhY3QtVG9kb01WQyAgICAgICAgICAgICAgICAgICAgICAgfDIx
LjAyNTAwMCAgICB8MjIuMDc1MDAwICAgIHwxLjA0OTk0MSAgfCAwLjIwNjE0MCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IEFuZ3VsYXJKUy1Ub2Rv
TVZDICAgICAgICAgICAgICAgICAgICB8MTQyLjkwMDAwMCAgIHwxNDIuODg3NTAwICAgfDAuOTk5
OTEzICB8IDAuOTkwNjgxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
CisgICAgICAgIHwgSW5mZXJuby1Ub2RvTVZDICAgICAgICAgICAgICAgICAgICAgIHw2OS4zMDAw
MDAgICAgfDY5Ljc3NTAwMCAgICB8MS4wMDY4NTQgIHwgMC41MDUyMDEgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBWYW5pbGxhLUVTMjAxNS1Ub2Rv
TVZDICAgICAgICAgICAgICAgfDcxLjUwMDAwMCAgICB8NzEuMjI1MDAwICAgIHwwLjk5NjE1NCAg
fCAwLjYwODY1MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAg
ICAgICB8IEFuZ3VsYXIyLVR5cGVTY3JpcHQtVG9kb01WQyAgICAgICAgICB8NDMuMjg3NTAwICAg
IHw0My4yNzUwMDAgICAgfDAuOTk5NzExICB8IDAuOTg3OTI2ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgVmFuaWxsYUpTLVRvZG9NVkMgICAgICAg
ICAgICAgICAgICAgIHw1Ny4yMTI1MDAgICAgfDU3LjgxMjUwMCAgICB8MS4wMTA0ODcgIHwgMC4z
MzMzNTcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAg
fCBqUXVlcnktVG9kb01WQyAgICAgICAgICAgICAgICAgICAgICAgfDI3Ni4xNTAwMDAgICB8Mjc2
Ljc3NTAwMCAgIHwxLjAwMjI2MyAgfCAwLjYxNDQwNCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfAorICAgICAgICB8IEVtYmVySlMtRGVidWctVG9kb01WQyAgICAgICAg
ICAgICAgICB8MzUzLjYxMjUwMCAgIHwzNTIuNzYyNTAwICAgfDAuOTk3NTk2ICB8IDAuNTE4ODM2
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgUmVh
Y3QtVG9kb01WQyAgICAgICAgICAgICAgICAgICAgICAgIHw5My42Mzc1MDAgICAgfDkyLjYzNzUw
MCAgICB8MC45ODkzMjEgIHwgMC4wMzYyNzcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwKKyAgICAgICAgfCBSZWFjdC1SZWR1eC1Ub2RvTVZDICAgICAgICAgICAgICAg
ICAgfDE1OC4yMzc1MDAgICB8MTU2LjU4NzUwMCAgIHwwLjk4OTU3MyAgfCAwLjA0MjE1NCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IFZhbmlsbGEt
RVMyMDE1LUJhYmVsLVdlYnBhY2stVG9kb01WQyB8NjguMDUwMDAwICAgIHw2OC4wODc1MDAgICAg
fDEuMDAwNTUxICB8IDAuODk3MTQ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8CisgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgICAgICBhIG1lYW4gPSAyMzYu
MjY5NTAKKyAgICAgICAgYiBtZWFuID0gMjM2LjU3OTY0CisgICAgICAgIHBWYWx1ZSA9IDAuNzgz
MDc4NTkzOAorICAgICAgICAoQmlnZ2VyIG1lYW5zIGFyZSBiZXR0ZXIuKQorICAgICAgICAxLjAw
MSB0aW1lcyBiZXR0ZXIKKyAgICAgICAgUmVzdWx0cyBBUkUgTk9UIHNpZ25pZmljYW50CisKKyAg
ICAgICAgSmV0U3RyZWFtMjoKKyAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICB8ICAgICAgICAgIHN1
YnRlc3QgICAgICAgICAgfCAgICAgcHRzICAgICAgfCAgICAgcHRzICAgICAgfCAgYiAvIGEgICB8
IHBWYWx1ZSAoc2lnbmlmaWNhbmNlIHVzaW5nIEZhbHNlIERpc2NvdmVyeSBSYXRlKSB8CisgICAg
ICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKyAgICAgICAgfCBnYXVzc2lhbi1ibHVyICAgICAgICAgICAgIHw1NDIuNTcw
MDU3ICAgIHw1NDIuNjcxODg1ICAgIHwxLjAwMDE4OCAgfCAwLjk4MjU3MyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IEhhc2hTZXQtd2FzbSAgICAg
ICAgICAgICAgfDU3LjcxMDQ5OCAgICAgfDY0LjQwNjM3MSAgICAgfDEuMTE2MDI1ICB8IDAuNDAx
NDI0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwg
Z2NjLWxvb3BzLXdhc20gICAgICAgICAgICB8NDQuNTE2MDA5ICAgICB8NDQuNDUzNTM1ICAgICB8
MC45OTg1OTcgIHwgMC45NzM2NTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwKKyAgICAgICAgfCBqc29uLXBhcnNlLWluc3BlY3RvciAgICAgIHwyNDEuMjc1MDg1ICAg
IHwyNDAuNzIwNDkxICAgIHwwLjk5NzcwMSAgfCAwLjcwNDczMiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IHByZXBhY2std3RiICAgICAgICAgICAg
ICAgfDYyLjY0MDExNCAgICAgfDYzLjc1NDg3OCAgICAgfDEuMDE3Nzk2ICB8IDAuMjA1ODQwICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgZGF0ZS1m
b3JtYXQteHBhcmItU1AgICAgICB8NDE2Ljk3NjgxNyAgICB8NDQ4LjkyMTQwOSAgICB8MS4wNzY2
MTAgIHwgMC4wNTI5NzcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwK
KyAgICAgICAgfCBXU0wgICAgICAgICAgICAgICAgICAgICAgIHwxLjU1NTI1NyAgICAgIHwxLjU3
MDIzMyAgICAgIHwxLjAwOTYyOSAgfCAwLjQyNzkyNCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfAorICAgICAgICB8IE9mZmxpbmVBc3NlbWJsZXIgICAgICAgICAgfDE3
Ny4wNTIzNTIgICAgfDE3OS43NDY1MTEgICAgfDEuMDE1MjE3ICB8IDAuMTEyMTE0ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgY2RqcyAgICAgICAg
ICAgICAgICAgICAgICB8MTkyLjUxNzU4NiAgICB8MTk0LjU5ODkwNiAgICB8MS4wMTA4MTEgIHwg
MC4wMjU4MDcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAg
ICAgfCBVbmlQb2tlciAgICAgICAgICAgICAgICAgIHw1MTQuMDIzNjk0ICAgIHw1MjYuMTExNTAw
ICAgIHwxLjAyMzUxNiAgfCAwLjI2OTg5MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfAorICAgICAgICB8IGpzb24tc3RyaW5naWZ5LWluc3BlY3RvciAgfDIyNy41ODQ3
MjUgICAgfDIyMy42MTkzOTAgICAgfDAuOTgyNTc2ICB8IDAuMTAyNzE0ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgY3J5cHRvLXNoYTEtU1AgICAg
ICAgICAgICB8OTgwLjcyODc4OCAgICB8OTg0LjE5MjEwNCAgICB8MS4wMDM1MzEgIHwgMC44Mzg2
MTggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBC
YXNpYyAgICAgICAgICAgICAgICAgICAgIHw2ODUuMTQ4NDgzICAgIHw3MTEuNTkwMjQ3ICAgIHwx
LjAzODU5MyAgfCAwLjE0Mjk1MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfAorICAgICAgICB8IGNoYWktd3RiICAgICAgICAgICAgICAgICAgfDEwNi4yNTYzNzYgICAg
fDEwNi41OTAzMTggICAgfDEuMDAzMTQzICB8IDAuODY1ODk0ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgY3J5cHRvLWFlcy1TUCAgICAgICAgICAg
ICB8NzIyLjMwODgyOSAgICB8NzI4LjcwMjMxMCAgICB8MS4wMDg4NTEgIHwgMC40ODY3NjYgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBCYWJ5bG9u
ICAgICAgICAgICAgICAgICAgIHw2NTUuODU3NTYxICAgIHw2NTQuMjA0OTAxICAgIHwwLjk5NzQ4
MCAgfCAwLjkzMTUyMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAor
ICAgICAgICB8IHN0cmluZy11bnBhY2stY29kZS1TUCAgICAgfDQwNy44MzcyNzEgICAgfDQwNS43
MTA3NTIgICAgfDAuOTk0Nzg2ICB8IDAuNzI5MTIyICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8CisgICAgICAgIHwgc3RhbmZvcmQtY3J5cHRvLWFlcyAgICAgICB8NDU2
LjkwNjAyMSAgICB8NDQ5Ljk5Mzg1NiAgICB8MC45ODQ4NzIgIHwgMC4yNzI5OTQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCByYXl0cmFjZSAgICAg
ICAgICAgICAgICAgIHw4ODMuOTExMzM1ICAgIHw5MDIuODg3MjM4ICAgIHwxLjAyMTQ2OCAgfCAw
LjE4OTc4NSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAg
ICB8IG11bHRpLWluc3BlY3Rvci1jb2RlLWxvYWQgfDQwOS45OTczNDcgICAgfDQwNS42NDM2Mzkg
ICAgfDAuOTg5MzgxICB8IDAuNjQ0NDQ3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8CisgICAgICAgIHwgaGFzaC1tYXAgICAgICAgICAgICAgICAgICB8NTkzLjU5MDE2
MCAgICB8NjAxLjU3NjMzMiAgICB8MS4wMTM0NTQgIHwgMC4yNDk0MTQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBzdGFuZm9yZC1jcnlwdG8tcGJr
ZGYyICAgIHw3MjIuMTc4NjM4ICAgIHw3MjguMjgzNTMyICAgIHwxLjAwODQ1MyAgfCAwLjY2MTE5
NSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IGNv
ZmZlZXNjcmlwdC13dGIgICAgICAgICAgfDQyLjM5MzU0NCAgICAgfDQxLjg2OTU0NSAgICAgfDAu
OTg3NjQwICB8IDAuMTk3NDQxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8CisgICAgICAgIHwgQm94MkQgICAgICAgICAgICAgICAgICAgICB8NDUyLjAzNDY4NSAgICB8
NDU0LjEwNDg2OCAgICB8MS4wMDQ1ODAgIHwgMC41MzUzNDIgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCByaWNoYXJkcy13YXNtICAgICAgICAgICAg
IHwxNDAuODczNjg4ICAgIHwxNDguMzk0MDUwICAgIHwxLjA1MzM4NCAgfCAwLjMwMzY1MSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IGxlYmFiLXd0
YiAgICAgICAgICAgICAgICAgfDYxLjY3MTMxOCAgICAgfDYyLjExOTQwMyAgICAgfDEuMDA3MjY2
ICB8IDAuNjIwOTk4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cisg
ICAgICAgIHwgdHNmLXdhc20gICAgICAgICAgICAgICAgICB8MTA4LjU5Mjc5NCAgICB8MTE5LjQ5
ODM5OCAgICB8MS4xMDA0MjcgIHwgMC41MDQ3MTAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwKKyAgICAgICAgfCBiYXNlNjQtU1AgICAgICAgICAgICAgICAgIHw2Mjku
NzQ0NjQzICAgIHw2MDMuNDI1NTY1ICAgIHwwLjk1ODIwNyAgfCAwLjA0OTk5NyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IG5hdmllci1zdG9rZXMg
ICAgICAgICAgICAgfDc0MC41ODg1MjMgICAgfDczOS45NTE2NjIgICAgfDAuOTk5MTQwICB8IDAu
ODcxNDQ1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAg
IHwganNoaW50LXd0YiAgICAgICAgICAgICAgICB8NTEuOTM4MzU5ICAgICB8NTIuNjUxMTA0ICAg
ICB8MS4wMTM3MjMgIHwgMC4yMTcxMzcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwKKyAgICAgICAgfCByZWdleC1kbmEtU1AgICAgICAgICAgICAgIHw0NTkuMjUxMTQ4
ICAgIHw0NjMuNDkyNDg5ICAgIHwxLjAwOTIzNSAgfCAwLjM3MTg5MSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IGFzeW5jLWZzICAgICAgICAgICAg
ICAgICAgfDIzNS44NTM4MjAgICAgfDIzNi4wMzExODkgICAgfDEuMDAwNzUyICB8IDAuOTM4NDU5
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgZmly
c3QtaW5zcGVjdG9yLWNvZGUtbG9hZCB8Mjc1LjI5ODMyNSAgICB8Mjc0LjE3MjEyNSAgICB8MC45
OTU5MDkgIHwgMC42MjM0MDMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwKKyAgICAgICAgfCBzZWdtZW50YXRpb24gICAgICAgICAgICAgIHw0NC4wMDI4NDIgICAgIHw0
My40NDU5NjAgICAgIHwwLjk4NzM0NCAgfCAwLjIwNzEzNCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IHR5cGVzY3JpcHQgICAgICAgICAgICAgICAg
fDI2LjM2MDE2MSAgICAgfDI2LjQ1ODgyMCAgICAgfDEuMDAzNzQzICB8IDAuNjA5OTQyICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgb2N0YW5lLWNv
ZGUtbG9hZCAgICAgICAgICB8MTEyNi43NDkwMzYgICB8MTA4Ny4xMzIwMjQgICB8MC45NjQ4NDAg
IHwgMC41MjQxNzEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAg
ICAgICAgfCBmbG9hdC1tbS5jICAgICAgICAgICAgICAgIHwxNi42OTE5MzUgICAgIHwxNi43MjEz
NTQgICAgIHwxLjAwMTc2MiAgfCAwLjE5NDQyNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfAorICAgICAgICB8IHF1aWNrc29ydC13YXNtICAgICAgICAgICAgfDQ2MS42
MzAwOTEgICAgfDQ1MC4xNjExMjcgICAgfDAuOTc1MTU2ICB8IDAuMzcxMzk0ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgQWlyICAgICAgICAgICAg
ICAgICAgICAgICB8MzkyLjQ0MjM3NSAgICB8NDEyLjIwMTgxMCAgICB8MS4wNTAzNTAgIHwgMC4w
NDY4ODcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAg
fCBzcGxheSAgICAgICAgICAgICAgICAgICAgIHw1MTAuMTExODg2ICAgIHw0NzUuMTMxNjU3ICAg
IHwwLjkzMTQyNiAgfCAwLjAyNDczMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfAorICAgICAgICB8IGFpLWFzdGFyICAgICAgICAgICAgICAgICAgfDYwNy45NjY5NzQg
ICAgfDYyNi41NzMxODEgICAgfDEuMDMwNjA0ICB8IDAuNDY4NzExICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgYWNvcm4td3RiICAgICAgICAgICAg
ICAgICB8NjcuNTEwNzY2ICAgICB8NjguMTQzOTU2ICAgICB8MS4wMDkzNzkgIHwgMC40ODE2NjMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBnYmVt
dSAgICAgICAgICAgICAgICAgICAgIHwxNDQuMTMzODQyICAgIHwxNDUuNjIwMzA0ICAgIHwxLjAx
MDMxMyAgfCAwLjgwMjE1NCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fAorICAgICAgICB8IHJpY2hhcmRzICAgICAgICAgICAgICAgICAgfDk2My40NzUwNzggICAgfDk0
Ni42NTg4NzkgICAgfDAuOTgyNTQ2ICB8IDAuMjMxMTg5ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgM2QtY3ViZS1TUCAgICAgICAgICAgICAgICB8
NTQ5LjQyNjc4NCAgICB8NTUwLjQ3OTE1NCAgICB8MS4wMDE5MTUgIHwgMC44MzEzMDcgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBlc3ByZWUtd3Ri
ICAgICAgICAgICAgICAgIHw2OC43MDc0ODMgICAgIHw3My43NjIyMDIgICAgIHwxLjA3MzU2OSAg
fCAwLjAzMzYwMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAg
ICAgICB8IGJvbWItd29ya2VycyAgICAgICAgICAgICAgfDk2Ljg4MjU5NiAgICAgfDk2LjExNjEy
MSAgICAgfDAuOTkyMDg5ICB8IDAuNjg3OTUyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8CisgICAgICAgIHwgdGFnY2xvdWQtU1AgICAgICAgICAgICAgICB8MzA5Ljg4
ODc2NyAgICB8MzAzLjUzODUxMSAgICB8MC45Nzk1MDggIHwgMC4xODc3NjggICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBtYW5kcmVlbCAgICAgICAg
ICAgICAgICAgIHwxMzMuNjY3MDMxICAgIHwxMzUuMDA5OTI5ICAgIHwxLjAxMDA0NyAgfCAwLjA3
NTIzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8
IDNkLXJheXRyYWNlLVNQICAgICAgICAgICAgfDQ5MS45Njc2NDkgICAgfDQ5Mi41Mjg5OTIgICAg
fDEuMDAxMTQxICB8IDAuOTU3ODQyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8CisgICAgICAgIHwgZGVsdGEtYmx1ZSAgICAgICAgICAgICAgICB8MTA2Ni43MTgzMTIg
ICB8MTA4MC4yMzA3NzIgICB8MS4wMTI2NjcgIHwgMC41NDkzODIgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBNTCAgICAgICAgICAgICAgICAgICAg
ICAgIHwxMzkuNjE3MjkzICAgIHwxNDAuMDg4NjMwICAgIHwxLjAwMzM3NiAgfCAwLjY2MTY1MSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IHJlZ2V4
cCAgICAgICAgICAgICAgICAgICAgfDM1MS43NzM5NTYgICAgfDM1MS4wNzU5MzUgICAgfDAuOTk4
MDE2ICB8IDAuNzY5MjUwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
CisgICAgICAgIHwgY3J5cHRvICAgICAgICAgICAgICAgICAgICB8MTUxMC40NzQ2NjMgICB8MTUx
OS4yMTg4NDIgICB8MS4wMDU3ODkgIHwgMC42Mzg0MjAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBjcnlwdG8tbWQ1LVNQICAgICAgICAgICAgIHw3
OTUuNDQ3ODk5ICAgIHw3NzQuMDgyNDkzICAgIHwwLjk3MzE0MCAgfCAwLjA3OTcyOCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IGVhcmxleS1ib3ll
ciAgICAgICAgICAgICAgfDgxMi41NzQ1NDUgICAgfDg3MC42NzgzNzIgICAgfDEuMDcxNTA2ICB8
IDAuMDQ0MDgxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAg
ICAgIHwgb2N0YW5lLXpsaWIgICAgICAgICAgICAgICB8MjUuMTYyNDcwICAgICB8MjUuNjYwMjYx
ICAgICB8MS4wMTk3ODMgIHwgMC41NTQ1OTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwKKyAgICAgICAgfCBkYXRlLWZvcm1hdC10b2Z0ZS1TUCAgICAgIHwzOTUuMjk2
MTM1ICAgIHwzOTguMDA4OTkyICAgIHwxLjAwNjg2MyAgfCAwLjY1MDQ3NSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IG4tYm9keS1TUCAgICAgICAg
ICAgICAgICAgfDExNjUuMzg2NjExICAgfDExNTAuNTI1MTEwICAgfDAuOTg3MjQ4ICB8IDAuMjI3
OTA4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwg
cGRmanMgICAgICAgICAgICAgICAgICAgICB8MTg5LjA2MDI1MiAgICB8MTkxLjAxNTYyOCAgICB8
MS4wMTAzNDMgIHwgMC42MzM3NzcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwKKyAgICAgICAgfCBGbGlnaHRQbGFubmVyICAgICAgICAgICAgIHw5MDguNDI2MTkyICAg
IHw5MDMuNjM2NjQyICAgIHwwLjk5NDcyOCAgfCAwLjgzODgyMSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IHVnbGlmeS1qcy13dGIgICAgICAgICAg
ICAgfDM0LjAyOTM5OSAgICAgfDM0LjE2NDM0MiAgICAgfDEuMDAzOTY1ICB8IDAuNjU1NjUyICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgYmFieWxv
bi13dGIgICAgICAgICAgICAgICB8ODEuMzI5ODY5ICAgICB8ODAuODU1NjgwICAgICB8MC45OTQx
NzAgIHwgMC44NTQzOTMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwK
KyAgICAgICAgfCBzdGFuZm9yZC1jcnlwdG8tc2hhMjU2ICAgIHw4MjYuODUwNTMzICAgIHw4Mzgu
NDk0MTY0ICAgIHwxLjAxNDA4MiAgfCAwLjU3OTYzNiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfAorICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAgICAgYSBtZWFuID0gMjM3
LjkxMDg0CisgICAgICAgIGIgbWVhbiA9IDIzOS45MjY3MAorICAgICAgICBwVmFsdWUgPSAwLjA2
NTc3MTA4OTcKKyAgICAgICAgKEJpZ2dlciBtZWFucyBhcmUgYmV0dGVyLikKKyAgICAgICAgMS4w
MDggdGltZXMgYmV0dGVyCisgICAgICAgIFJlc3VsdHMgQVJFIE5PVCBzaWduaWZpY2FudAorCisg
ICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIu
aDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OnB1c2hUb1NhdmVCeXRlT2Zmc2V0KToK
KyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpwdXNoVG9TYXZlQnl0ZU9mZnNldCk6CisgICAgICAgICog
ZGZnL0RGR09TUkV4aXQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXQ6OmNvbXBpbGVF
eGl0KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpyZWlmeUlubGluZWRDYWxsRnJhbWVzKToKKyAgICAgICAgKiBkZmcvREZH
VGh1bmtzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpvc3JFeGl0R2VuZXJhdGlvblRodW5rR2Vu
ZXJhdG9yKToKKyAgICAgICAgKiBmdGwvRlRMU2F2ZVJlc3RvcmUuY3BwOgorICAgICAgICAoSlND
OjpGVEw6OnNhdmVBbGxSZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpGVEw6OnJlc3RvcmVBbGxS
ZWdpc3RlcnMpOgorICAgICAgICAqIGZ0bC9GVExTYXZlUmVzdG9yZS5oOgorICAgICAgICAqIGZ0
bC9GVExUaHVua3MuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmdlbmVyaWNHZW5lcmF0aW9uVGh1
bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpGVEw6OnNsb3dQYXRoQ2FsbFRodW5rR2VuZXJh
dG9yKToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6
QXNzZW1ibHlIZWxwZXJzOjpyZXN0b3JlQ2FsbGVlU2F2ZXNGcm9tRW50cnlGcmFtZUNhbGxlZVNh
dmVzQnVmZmVyKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpjb3B5Q2FsbGVlU2F2
ZXNUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlckltcGwpOgorICAgICAgICAoSlNDOjpBc3Nl
bWJseUhlbHBlcnM6OmVtaXRTYXZlKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpl
bWl0UmVzdG9yZSk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdFNhdmVDYWxs
ZWVTYXZlc0Zvcik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdFJlc3RvcmVD
YWxsZWVTYXZlc0Zvcik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6Y29weUxMSW50
QmFzZWxpbmVDYWxsZWVTYXZlc0Zyb21GcmFtZU9yUmVnaXN0ZXJUb0VudHJ5RnJhbWVDYWxsZWVT
YXZlc0J1ZmZlcik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdFNhdmVPckNv
cHlMTEludEJhc2VsaW5lQ2FsbGVlU2F2ZXNGb3IpOgorICAgICAgICAqIGppdC9Bc3NlbWJseUhl
bHBlcnMuaDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpjb3B5TExJbnRCYXNlbGlu
ZUNhbGxlZVNhdmVzRnJvbUZyYW1lT3JSZWdpc3RlclRvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVm
ZmVyKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0U2F2ZSk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdFJlc3RvcmUpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRTYXZlT3JDb3B5Q2FsbGVlU2F2ZXNG
b3IpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnNTcG9vbGVycy5oOiBB
ZGRlZC4KKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpTcG9vbGVyOjpTcG9vbGVyKToK
KyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpTcG9vbGVyOjpoYW5kbGVHUFIpOgorICAg
ICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OlNwb29sZXI6OmZpbmFsaXplR1BSKToKKyAgICAg
ICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpTcG9vbGVyOjpoYW5kbGVGUFIpOgorICAgICAgICAo
SlNDOjpBc3NlbWJseUhlbHBlcnM6OlNwb29sZXI6OmZpbmFsaXplRlBSKToKKyAgICAgICAgKEpT
Qzo6QXNzZW1ibHlIZWxwZXJzOjpTcG9vbGVyOjpvcCk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5
SGVscGVyczo6TG9hZFJlZ1Nwb29sZXI6OkxvYWRSZWdTcG9vbGVyKToKKyAgICAgICAgKEpTQzo6
QXNzZW1ibHlIZWxwZXJzOjpMb2FkUmVnU3Bvb2xlcjo6bG9hZEdQUik6CisgICAgICAgIChKU0M6
OkFzc2VtYmx5SGVscGVyczo6TG9hZFJlZ1Nwb29sZXI6OmZpbmFsaXplR1BSKToKKyAgICAgICAg
KEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpMb2FkUmVnU3Bvb2xlcjo6bG9hZEZQUik6CisgICAgICAg
IChKU0M6OkFzc2VtYmx5SGVscGVyczo6TG9hZFJlZ1Nwb29sZXI6OmZpbmFsaXplRlBSKToKKyAg
ICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpMb2FkUmVnU3Bvb2xlcjo6aGFuZGxlUGFpcik6
CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6TG9hZFJlZ1Nwb29sZXI6OmhhbmRsZVNp
bmdsZSk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6U3RvcmVSZWdTcG9vbGVyOjpT
dG9yZVJlZ1Nwb29sZXIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OlN0b3JlUmVn
U3Bvb2xlcjo6c3RvcmVHUFIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OlN0b3Jl
UmVnU3Bvb2xlcjo6ZmluYWxpemVHUFIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6
OlN0b3JlUmVnU3Bvb2xlcjo6c3RvcmVGUFIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBl
cnM6OlN0b3JlUmVnU3Bvb2xlcjo6ZmluYWxpemVGUFIpOgorICAgICAgICAoSlNDOjpBc3NlbWJs
eUhlbHBlcnM6OlN0b3JlUmVnU3Bvb2xlcjo6aGFuZGxlUGFpcik6CisgICAgICAgIChKU0M6OkFz
c2VtYmx5SGVscGVyczo6U3RvcmVSZWdTcG9vbGVyOjpoYW5kbGVTaW5nbGUpOgorICAgICAgICAo
SlNDOjpSZWdEaXNwYXRjaDxHUFJSZWc+OjpnZXQpOgorICAgICAgICAoSlNDOjpSZWdEaXNwYXRj
aDxHUFJSZWc+Ojp0ZW1wMSk6CisgICAgICAgIChKU0M6OlJlZ0Rpc3BhdGNoPEdQUlJlZz46OnRl
bXAyKToKKyAgICAgICAgKEpTQzo6UmVnRGlzcGF0Y2g8R1BSUmVnPjo6cmVnVG9TdG9yZSk6Cisg
ICAgICAgIChKU0M6OlJlZ0Rpc3BhdGNoPEdQUlJlZz46OmludmFsaWQpOgorICAgICAgICAoSlND
OjpSZWdEaXNwYXRjaDxHUFJSZWc+OjpyZWdTaXplKToKKyAgICAgICAgKEpTQzo6UmVnRGlzcGF0
Y2g8R1BSUmVnPjo6aXNWYWxpZExvYWRQYWlySW1tKToKKyAgICAgICAgKEpTQzo6UmVnRGlzcGF0
Y2g8R1BSUmVnPjo6aXNWYWxpZFN0b3JlUGFpckltbSk6CisgICAgICAgIChKU0M6OlJlZ0Rpc3Bh
dGNoPEZQUlJlZz46OmdldCk6CisgICAgICAgIChKU0M6OlJlZ0Rpc3BhdGNoPEZQUlJlZz46OnRl
bXAxKToKKyAgICAgICAgKEpTQzo6UmVnRGlzcGF0Y2g8RlBSUmVnPjo6dGVtcDIpOgorICAgICAg
ICAoSlNDOjpSZWdEaXNwYXRjaDxGUFJSZWc+OjpyZWdUb1N0b3JlKToKKyAgICAgICAgKEpTQzo6
UmVnRGlzcGF0Y2g8RlBSUmVnPjo6aW52YWxpZCk6CisgICAgICAgIChKU0M6OlJlZ0Rpc3BhdGNo
PEZQUlJlZz46OnJlZ1NpemUpOgorICAgICAgICAoSlNDOjpSZWdEaXNwYXRjaDxGUFJSZWc+Ojpp
c1ZhbGlkTG9hZFBhaXJJbW0pOgorICAgICAgICAoSlNDOjpSZWdEaXNwYXRjaDxGUFJSZWc+Ojpp
c1ZhbGlkU3RvcmVQYWlySW1tKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpDb3B5
U3Bvb2xlcjo6U291cmNlOjpnZXRSZWcpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6
OkNvcHlTcG9vbGVyOjpDb3B5U3Bvb2xlcik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVy
czo6Q29weVNwb29sZXI6OnRlbXAxIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxw
ZXJzOjpDb3B5U3Bvb2xlcjo6dGVtcDIgY29uc3QpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhl
bHBlcnM6OkNvcHlTcG9vbGVyOjpyZWdUb1N0b3JlKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlI
ZWxwZXJzOjpDb3B5U3Bvb2xlcjo6aW52YWxpZCk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVs
cGVyczo6Q29weVNwb29sZXI6OnJlZ1NpemUpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBl
cnM6OkNvcHlTcG9vbGVyOjppc1ZhbGlkTG9hZFBhaXJJbW0pOgorICAgICAgICAoSlNDOjpBc3Nl
bWJseUhlbHBlcnM6OkNvcHlTcG9vbGVyOjppc1ZhbGlkU3RvcmVQYWlySW1tKToKKyAgICAgICAg
KEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpDb3B5U3Bvb2xlcjo6bG9hZCk6CisgICAgICAgIChKU0M6
OkFzc2VtYmx5SGVscGVyczo6Q29weVNwb29sZXI6Om1vdmUpOgorICAgICAgICAoSlNDOjpBc3Nl
bWJseUhlbHBlcnM6OkNvcHlTcG9vbGVyOjpjb3B5KToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlI
ZWxwZXJzOjpDb3B5U3Bvb2xlcjo6c3RvcmUpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBl
cnM6OkNvcHlTcG9vbGVyOjpmbHVzaCk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6
Q29weVNwb29sZXI6OmxvYWRHUFIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OkNv
cHlTcG9vbGVyOjpjb3B5R1BSKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpDb3B5
U3Bvb2xlcjo6bW92ZUNvbnN0YW50KToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpD
b3B5U3Bvb2xlcjo6c3RvcmVHUFIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OkNv
cHlTcG9vbGVyOjpmaW5hbGl6ZUdQUik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6
Q29weVNwb29sZXI6OmxvYWRGUFIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OkNv
cHlTcG9vbGVyOjpjb3B5RlBSKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpDb3B5
U3Bvb2xlcjo6c3RvcmVGUFIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OkNvcHlT
cG9vbGVyOjpmaW5hbGl6ZUZQUik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6Q29w
eVNwb29sZXI6OmxvYWRQYWlyKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpDb3B5
U3Bvb2xlcjo6c3RvcmVQYWlyKToKKyAgICAgICAgKiBqaXQvU2NyYXRjaFJlZ2lzdGVyQWxsb2Nh
dG9yLmNwcDoKKyAgICAgICAgKEpTQzo6U2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpwcmVzZXJ2
ZVJldXNlZFJlZ2lzdGVyc0J5UHVzaGluZyk6CisgICAgICAgIChKU0M6OlNjcmF0Y2hSZWdpc3Rl
ckFsbG9jYXRvcjo6cmVzdG9yZVJldXNlZFJlZ2lzdGVyc0J5UG9wcGluZyk6CisgICAgICAgIChK
U0M6OlNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6cHJlc2VydmVSZWdpc3RlcnNUb1N0YWNrRm9y
Q2FsbCk6CisgICAgICAgIChKU0M6OlNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6cmVzdG9yZVJl
Z2lzdGVyc0Zyb21TdGFja0ZvckNhbGwpOgorICAgICAgICAqIGppdC9TY3JhdGNoUmVnaXN0ZXJB
bGxvY2F0b3IuaDoKKyAgICAgICAgKiB3YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHA6CisgICAg
ICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjphZGRSZXR1cm4pOgorICAgICAgICAqIHdh
c20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJh
dG9yOjphZGRSZXR1cm4pOgorCiAyMDIxLTA2LTIzICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBw
bGUuY29tPgogCiAgICAgICAgIFJ1biBsYXp5IHByb3BlcnRpZXMgaW5pdGlhbGl6ZXJzIHVuZGVy
IGEgRGVmZXJUZXJtaW5hdGlvbkZvckFXaGlsZSBzY29wZQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjc5MTczKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC03NTcsNiArNzU3LDcgQEAgc2V0
KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQQogICAgIGludGVycHJldGVyL1ZN
RW50cnlSZWNvcmQuaAogCiAgICAgaml0L0Fzc2VtYmx5SGVscGVycy5oCisgICAgaml0L0Fzc2Vt
Ymx5SGVscGVyc1Nwb29sZXJzLmgKICAgICBqaXQvQ0NhbGxIZWxwZXJzLmgKICAgICBqaXQvRXhl
Y3V0YWJsZUFsbG9jYXRvci5oCiAgICAgaml0L0ZQUkluZm8uaApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI3OTE3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTQ5LDYgKzExNDksNyBAQAogCQk2NUI4MzkyRTFCQUNBRDM2MDA0NEU4MjQgLyogQ2Fj
aGVkUmVjb3ZlcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDY1QjgzOTJDMUJBQ0E5MkEwMDQ0RTgyNCAvKiBDYWNoZWRSZWNvdmVyeS5oICovOyB9Owog
CQk2QTM4Q0ZBQTFFMzJCNUFCMDA2MDIwNkYgLyogQXN5bmNTdGFja1RyYWNlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QTM4Q0ZBODFFMzJCNThCMDA2
MDIwNkYgLyogQXN5bmNTdGFja1RyYWNlLmggKi87IH07CiAJCTZBRDJDQjREMTlCOTE0MDEwMDA2
NTcxOSAvKiBEZWJ1Z2dlckV2YWxFbmFibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA2QUQyQ0I0QzE5QjkxNDAxMDAwNjU3MTkgLyogRGVidWdnZXJF
dmFsRW5hYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTZCNzY3RTdCMjY3OTFGMjcwMDE3RjhEMSAvKiBBc3NlbWJseUhlbHBlcnNTcG9vbGVy
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkI3NjdF
N0EyNjc5MUYyNzAwMTdGOEQxIC8qIEFzc2VtYmx5SGVscGVyc1Nwb29sZXJzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNkJDQ0VDMDQyNUQxRkEy
NzAwMEYzOTFEIC8qIFZlcmlmaWVyU2xvdFZpc2l0b3JJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QkNDRUMwMzI1RDFGQTI3MDAwRjM5MUQg
LyogVmVyaWZpZXJTbG90VmlzaXRvcklubGluZXMuaCAqLzsgfTsKIAkJNzAxMTNENEMxQThEQjA5
MzAwMzg0OEM0IC8qIEl0ZXJhdG9yT3BlcmF0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzAxMTNENEExQThEQjA5MzAwMzg0OEM0IC8qIEl0ZXJh
dG9yT3BlcmF0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTcwMTNDQThDMUI0OTFBOTQwMENBRTYxMyAvKiBKU01pY3JvdGFzay5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzAxM0NBOEExQjQ5MUE5
NDAwQ0FFNjEzIC8qIEpTTWljcm90YXNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM5OTksNiArNDAwMCw3IEBACiAJCTZBMzhDRkE4MUUzMkI1
OEIwMDYwMjA2RiAvKiBBc3luY1N0YWNrVHJhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQXN5bmNTdGFja1RyYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTZBRDJDQjRDMTlCOTE0MDEwMDA2NTcxOSAvKiBEZWJ1Z2dlckV2YWxFbmFibGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlYnVnZ2VyRXZhbEVuYWJsZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkI3MzFDQzAyNjQ3QTgzNzAwMTQ2NDZGIC8qIFNsb3dQ
YXRoQ2FsbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTbG93UGF0aENhbGwuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk2Qjc2N0U3QTI2NzkxRjI3MDAxN0Y4RDEgLyogQXNzZW1i
bHlIZWxwZXJzU3Bvb2xlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXNz
ZW1ibHlIZWxwZXJzU3Bvb2xlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkJB
OTNDOTU5MDQ4NEM1QkFEOTMxNkVBIC8qIEpTU2NyaXB0RmV0Y2hlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU1NjcmlwdEZldGNoZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNkJDQ0VDMDMyNUQxRkEyNzAwMEYzOTFEIC8qIFZlcmlmaWVyU2xvdFZpc2l0
b3JJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZlcmlmaWVyU2xv
dFZpc2l0b3JJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwMTEzRDQ5
MUE4REIwOTMwMDM4NDhDNCAvKiBJdGVyYXRvck9wZXJhdGlvbnMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSXRlcmF0b3JPcGVyYXRpb25zLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYyMDAsNiArNjIwMiw3IEBACiAJCQkJMEZCNTcwNjgyNjdB
NjQyRTAwODBGQThCIC8qIEhhc2hhYmxlUmVnaXN0ZXJTZXQuaCAqLywKIAkJCQkwRjI0RTUzQjE3
RUE5RjU5MDBBQkIyMTcgLyogQXNzZW1ibHlIZWxwZXJzLmNwcCAqLywKIAkJCQkwRjI0RTUzQzE3
RUE5RjU5MDBBQkIyMTcgLyogQXNzZW1ibHlIZWxwZXJzLmggKi8sCisJCQkJNkI3NjdFN0EyNjc5
MUYyNzAwMTdGOEQxIC8qIEFzc2VtYmx5SGVscGVyc1Nwb29sZXJzLmggKi8sCiAJCQkJNzIzOTk4
RjYyNjVEQkNEQjAwNTc4NjdGIC8qIEJhc2VsaW5lSklUUGxhbi5jcHAgKi8sCiAJCQkJNzIzOTk4
RjUyNjVEQkNEQjAwNTc4NjdGIC8qIEJhc2VsaW5lSklUUGxhbi5oICovLAogCQkJCTBGNjRCMjZG
MUE3ODRCQUYwMDZFNEU2NiAvKiBCaW5hcnlTd2l0Y2guY3BwICovLApAQCAtOTE1NCw2ICs5MTU3
LDcgQEAKIAkJCQlGRTkxMkI1MTI1MzExQUQxMDBGQUJEREYgLyogQWJzdHJhY3RTbG90VmlzaXRv
cklubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUzNEUwMzRFMUU0RDRCMTYwMDIxM0Y2NCAv
KiBBY2Nlc3NDYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFM0JGRDBCQzFEQUY4MDhFMDA2NURF
QTIgLyogQWNjZXNzQ2FzZVNuaXBwZXRQYXJhbXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTZCNzY3
RTdCMjY3OTFGMjcwMDE3RjhEMSAvKiBBc3NlbWJseUhlbHBlcnNTcG9vbGVycy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTM3MEI0RjYxQkYyNjIwNTAwNUM0MEZDIC8qIEFkYXB0aXZlSW5mZXJyZWRQ
cm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTkxNjhCRDg3
MjQ0N0JBNEUwMDgwRkZCNCAvKiBBZ2dyZWdhdGVFcnJvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTE4RTE1QzMyNDQ3QjIyNzAwNDQ3QTU2IC8qIEFnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3IuaCBp
biBIZWFkZXJzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXIuaAkocmV2aXNpb24gMjc5MTczKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMzcs
NyArMzM3LDcgQEAgcHVibGljOgogICAgICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKHNpemVvZihk
b3VibGUpKSwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgIH0KICAgICAKLSAgICBzdGF0aWMg
cHRyZGlmZl90IHB1c2hUb1NhdmVCeXRlT2Zmc2V0KCkgeyByZXR1cm4gc2l6ZW9mKHZvaWQqKTsg
fQorICAgIHN0YXRpYyBjb25zdGV4cHIgcHRyZGlmZl90IHB1c2hUb1NhdmVCeXRlT2Zmc2V0KCkg
eyByZXR1cm4gc2l6ZW9mKHZvaWQqKTsgfQogI2VuZGlmIC8vICFDUFUoQVJNNjQpCiAKICNpZiBD
UFUoWDg2XzY0KSB8fCBDUFUoQVJNNjQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAkocmV2aXNpb24gMjc5MTcz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1MjQsNyArMjUyNCw3IEBAIHB1YmxpYzoKICAgICAgICAg
c3RvcmVEb3VibGUoc3JjLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAgICAgfQogCi0gICAgc3Rh
dGljIHB0cmRpZmZfdCBwdXNoVG9TYXZlQnl0ZU9mZnNldCgpIHsgcmV0dXJuIDE2OyB9CisgICAg
c3RhdGljIGNvbnN0ZXhwciBwdHJkaWZmX3QgcHVzaFRvU2F2ZUJ5dGVPZmZzZXQoKSB7IHJldHVy
biAxNjsgfQogCiAgICAgLy8gUmVnaXN0ZXIgbW92ZSBvcGVyYXRpb25zOgogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAJKHJldmlzaW9uIDI3OTE3MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI4LDcgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShERkdfSklUKQogCi0jaW5jbHVkZSAiQXNz
ZW1ibHlIZWxwZXJzLmgiCisjaW5jbHVkZSAiQXNzZW1ibHlIZWxwZXJzU3Bvb2xlcnMuaCIKICNp
bmNsdWRlICJCeXRlY29kZVN0cnVjdHMuaCIKICNpbmNsdWRlICJDaGVja3BvaW50T1NSRXhpdFNp
ZGVTdGF0ZS5oIgogI2luY2x1ZGUgIkRGR0dyYXBoLmgiCkBAIC01NjIsMTMgKzU2MiwxOSBAQCB2
b2lkIE9TUkV4aXQ6OmNvbXBpbGVFeGl0KENDYWxsSGVscGVycyYgCiAgICAgLy8gZG8gdGhpcyBl
dmVuIGZvciBzdGF0ZSB0aGF0J3MgYWxyZWFkeSBpbiB0aGUgcmlnaHQgcGxhY2Ugb24gdGhlIHN0
YWNrLgogICAgIC8vIEl0IG1ha2VzIHRoaW5ncyBzaW1wbGVyIGxhdGVyLgogCisgICAgYm9vbCBp
bmxpbmVTdGFja0NvbnRhaW5zQWN0aXZlQ2hlY2twb2ludCA9IGV4aXQubV9jb2RlT3JpZ2luLmlu
bGluZVN0YWNrQ29udGFpbnNBY3RpdmVDaGVja3BvaW50KCk7CisgICAgc2l6ZV90IGZpcnN0VG1w
VG9SZXN0b3JlRWFybHkgPSBvcGVyYW5kcy5zaXplKCkgLSBvcGVyYW5kcy5udW1iZXJPZlRtcHMo
KTsKKyAgICBpZiAoIWlubGluZVN0YWNrQ29udGFpbnNBY3RpdmVDaGVja3BvaW50KQorICAgICAg
ICBmaXJzdFRtcFRvUmVzdG9yZUVhcmx5ID0gb3BlcmFuZHMuc2l6ZSgpOyAvLyBEb24ndCBlYWdl
cmx5IHJlc3RvcmUuCisKICAgICAvLyBUaGUgdGFnIHJlZ2lzdGVycyBhcmUgbmVlZGVkIHRvIG1h
dGVyaWFsaXplIHJlY292ZXJpZXMgYmVsb3cuCiAgICAgaml0LmVtaXRNYXRlcmlhbGl6ZVRhZ0No
ZWNrUmVnaXN0ZXJzKCk7CiAKICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgb3Bl
cmFuZHMuc2l6ZSgpOyArK2luZGV4KSB7CiAgICAgICAgIGNvbnN0IFZhbHVlUmVjb3ZlcnkmIHJl
Y292ZXJ5ID0gb3BlcmFuZHNbaW5kZXhdOwogCi0gICAgICAgIHN3aXRjaCAocmVjb3ZlcnkudGVj
aG5pcXVlKCkpIHsKKyAgICAgICAgYXV0byBjdXJyZW50VGVjaG5pcXVlID0gcmVjb3ZlcnkudGVj
aG5pcXVlKCk7CisgICAgICAgIHN3aXRjaCAoY3VycmVudFRlY2huaXF1ZSkgewogICAgICAgICBj
YXNlIERpc3BsYWNlZEluSlNTdGFjazoKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBjYXNl
IENlbGxEaXNwbGFjZWRJbkpTU3RhY2s6CkBAIC01OTQsOSArNjAwLDEyIEBAIHZvaWQgT1NSRXhp
dDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiAKIAogICAgICAgICBjYXNlIENvbnN0YW50OiB7
CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVy
czo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShyZWNvdmVyeS5jb25zdGFudCgpKSksIEdQ
UkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBz
Y3JhdGNoICsgaW5kZXgpOwotI2Vsc2UKKyAgICAgICAgICAgIGlmIChpbmRleCA+PSBmaXJzdFRt
cFRvUmVzdG9yZUVhcmx5KSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKG9wZXJhbmRzLm9wZXJh
bmRGb3JJbmRleChpbmRleCkuaXNUbXAoKSk7CisgICAgICAgICAgICAgICAgaml0Lm1vdmUoQXNz
ZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKHJlY292ZXJ5LmNvbnN0
YW50KCkpKSwgR1BSSW5mbzo6cmVnVDApOworICAgICAgICAgICAgICAgIGppdC5zdG9yZTY0KEdQ
UkluZm86OnJlZ1QwLCBzY3JhdGNoICsgaW5kZXgpOworICAgICAgICAgICAgfQorI2Vsc2UgLy8g
bm90IFVTRShKU1ZBTFVFNjQpCiAgICAgICAgICAgICBqaXQuc3RvcmUzMigKICAgICAgICAgICAg
ICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihyZWNvdmVyeS5jb25zdGFudCgpLnRh
ZygpKSwKICAgICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0
b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMudGFnKTsKQEAgLTc2Niw3ICs3NzUsNyBAQCB2
b2lkIE9TUkV4aXQ6OmNvbXBpbGVFeGl0KENDYWxsSGVscGVycyYgCiAgICAgaWYgKGV4aXQuaXNF
eGNlcHRpb25IYW5kbGVyKCkpCiAgICAgICAgIGppdC5jb3B5Q2FsbGVlU2F2ZXNUb0VudHJ5RnJh
bWVDYWxsZWVTYXZlc0J1ZmZlcih2bS50b3BFbnRyeUZyYW1lKTsKIAotICAgIGlmIChleGl0Lm1f
Y29kZU9yaWdpbi5pbmxpbmVTdGFja0NvbnRhaW5zQWN0aXZlQ2hlY2twb2ludCgpKSB7CisgICAg
aWYgKGlubGluZVN0YWNrQ29udGFpbnNBY3RpdmVDaGVja3BvaW50KSB7CiAgICAgICAgIEVuY29k
ZWRKU1ZhbHVlKiB0bXBTY3JhdGNoID0gc2NyYXRjaCArIG9wZXJhbmRzLnRtcEluZGV4KDApOwog
ICAgICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uTWF0ZXJpYWxpemVP
U1JFeGl0U2lkZVN0YXRlKT4oJnZtLCAmZXhpdCwgdG1wU2NyYXRjaCk7CiAgICAgICAgIGppdC5w
cmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CkBAIC03NzYsNiArNzg1LDE2IEBAIHZvaWQgT1NSRXhp
dDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiAKIAogICAgIC8vIERvIGFsbCBkYXRhIGZvcm1h
dCBjb252ZXJzaW9ucyBhbmQgc3RvcmUgdGhlIHJlc3VsdHMgaW50byB0aGUgc3RhY2suCiAKKyNp
ZiBVU0UoSlNWQUxVRTY0KQorICAgIGNvbnN0ZXhwciBHUFJSZWcgc3JjQnVmZmVyR1BSID0gR1BS
SW5mbzo6cmVnVDI7CisgICAgY29uc3RleHByIEdQUlJlZyBkZXN0QnVmZmVyR1BSID0gR1BSSW5m
bzo6cmVnVDM7CisgICAgY29uc3RleHByIEdQUlJlZyB1bmRlZmluZWRHUFIgPSBHUFJJbmZvOjpy
ZWdUNDsKKyAgICBib29sIHVuZGVmaW5lZEdQUklzSW5pdGlhbGl6ZWQgPSBmYWxzZTsKKworICAg
IGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzY3JhdGNoKSwgc3JjQnVmZmVy
R1BSKTsKKyAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OmZyYW1lUG9pbnRlclJlZ2lzdGVyLCBk
ZXN0QnVmZmVyR1BSKTsKKyAgICBDQ2FsbEhlbHBlcnM6OkNvcHlTcG9vbGVyIHNwb29sZXIoQ0Nh
bGxIZWxwZXJzOjpDb3B5U3Bvb2xlcjo6QnVmZmVyUmVnczo6QWxsb3dNb2RpZmljYXRpb24sIGpp
dCwgc3JjQnVmZmVyR1BSLCBkZXN0QnVmZmVyR1BSLCBHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6
cmVnVDEpOworI2VuZGlmCiAgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG9wZXJh
bmRzLnNpemUoKTsgKytpbmRleCkgewogICAgICAgICBjb25zdCBWYWx1ZVJlY292ZXJ5JiByZWNv
dmVyeSA9IG9wZXJhbmRzW2luZGV4XTsKICAgICAgICAgT3BlcmFuZCBvcGVyYW5kID0gb3BlcmFu
ZHMub3BlcmFuZEZvckluZGV4KGluZGV4KTsKQEAgLTc4Niw2ICs4MDUsMjMgQEAgdm9pZCBPU1JF
eGl0Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIAogICAgICAgICAgICAgY29udGludWU7CiAK
ICAgICAgICAgc3dpdGNoIChyZWNvdmVyeS50ZWNobmlxdWUoKSkgeworICAgICAgICBjYXNlIENv
bnN0YW50OiB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgICAgIEVuY29kZWRKU1ZhbHVl
IGN1cnJlbnRDb25zdGFudCA9IEpTVmFsdWU6OmVuY29kZShyZWNvdmVyeS5jb25zdGFudCgpKTsK
KyAgICAgICAgICAgIGlmIChjdXJyZW50Q29uc3RhbnQgPT0gZW5jb2RlZEpTVW5kZWZpbmVkKCkp
IHsKKyAgICAgICAgICAgICAgICBpZiAoIXVuZGVmaW5lZEdQUklzSW5pdGlhbGl6ZWQpIHsKKyAg
ICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQoZW5j
b2RlZEpTVW5kZWZpbmVkKCkpLCB1bmRlZmluZWRHUFIpOworICAgICAgICAgICAgICAgICAgICB1
bmRlZmluZWRHUFJJc0luaXRpYWxpemVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgc3Bvb2xlci5jb3B5R1BSKHVuZGVmaW5lZEdQUik7CisgICAgICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgICAgICBzcG9vbGVyLm1vdmVDb25zdGFudChjdXJyZW50Q29uc3Rh
bnQpOworICAgICAgICAgICAgc3Bvb2xlci5zdG9yZUdQUihvcGVyYW5kLnZpcnR1YWxSZWdpc3Rl
cigpLm9mZnNldCgpICogc2l6ZW9mKENQVVJlZ2lzdGVyKSk7CisgICAgICAgICAgICBicmVhazsK
KyNlbHNlCisgICAgICAgICAgICBGQUxMVEhST1VHSDsKKyNlbmRpZgorICAgICAgICB9CiAgICAg
ICAgIGNhc2UgRGlzcGxhY2VkSW5KU1N0YWNrOgogICAgICAgICBjYXNlIEJvb2xlYW5EaXNwbGFj
ZWRJbkpTU3RhY2s6CiAgICAgICAgIGNhc2UgSW50MzJEaXNwbGFjZWRJbkpTU3RhY2s6CkBAIC03
OTUsNyArODMxLDYgQEAgdm9pZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIAog
ICAgICAgICBjYXNlIFVuYm94ZWRJbnQzMkluR1BSOgogICAgICAgICBjYXNlIFVuYm94ZWRDZWxs
SW5HUFI6CiAgICAgICAgIGNhc2UgVW5ib3hlZERvdWJsZUluRlBSOgotICAgICAgICBjYXNlIENv
bnN0YW50OgogICAgICAgICBjYXNlIEluRlBSOgogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAg
IGNhc2UgSW5HUFI6CkBAIC04MDMsOCArODM4LDggQEAgdm9pZCBPU1JFeGl0Ojpjb21waWxlRXhp
dChDQ2FsbEhlbHBlcnMmIAogICAgICAgICBjYXNlIEludDUyRGlzcGxhY2VkSW5KU1N0YWNrOgog
ICAgICAgICBjYXNlIFVuYm94ZWRTdHJpY3RJbnQ1MkluR1BSOgogICAgICAgICBjYXNlIFN0cmlj
dEludDUyRGlzcGxhY2VkSW5KU1N0YWNrOgotICAgICAgICAgICAgaml0LmxvYWQ2NChzY3JhdGNo
ICsgaW5kZXgsIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAgIGppdC5zdG9yZTY0KEdQUklu
Zm86OnJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3Iob3BlcmFuZCkpOworICAgICAg
ICAgICAgc3Bvb2xlci5sb2FkR1BSKGluZGV4ICogc2l6ZW9mKENQVVJlZ2lzdGVyKSk7CisgICAg
ICAgICAgICBzcG9vbGVyLnN0b3JlR1BSKG9wZXJhbmQudmlydHVhbFJlZ2lzdGVyKCkub2Zmc2V0
KCkgKiBzaXplb2YoQ1BVUmVnaXN0ZXIpKTsKICAgICAgICAgICAgIGJyZWFrOwogI2Vsc2UgLy8g
bm90IFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIGNhc2UgSW5QYWlyOgpAQCAtODMzLDYgKzg2OCw5
IEBAIHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiAKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgfQorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgc3Bvb2xl
ci5maW5hbGl6ZUdQUigpOworI2VuZGlmCiAKICAgICAvLyBOb3cgdGhhdCB0aGluZ3Mgb24gdGhl
IHN0YWNrIGFyZSByZWNvdmVyZWQsIGRvIHRoZSBhcmd1bWVudHMgcmVjb3ZlcnkuIFdlIGFzc3Vt
ZSB0aGF0IGFyZ3VtZW50cwogICAgIC8vIHJlY292ZXJpZXMgZG9uJ3QgcmVjdXJzaXZlbHkgcmVm
ZXIgdG8gZWFjaCBvdGhlci4gQnV0LCB3ZSBkb24ndCB0cnkgdG8gYXNzdW1lIHRoYXQgdGhleSBv
bmx5CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNv
bW1vbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JF
eGl0Q29tcGlsZXJDb21tb24uY3BwCShyZXZpc2lvbiAyNzkxNzMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI4NCw3ICsyODQsNyBAQCB2b2lkIHJlaWZ5SW5saW5lZENhbGxGcmFtZXMoQ0NhbGxIZWxw
ZXJzCiAgICAgICAgICAgICBqaXQuYWRkUHRyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMy
KHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBH
UFJJbmZvOjpyZWdUMik7CiAgICAgICAgICAgICBqaXQudW50YWdQdHIoR1BSSW5mbzo6cmVnVDIs
IEdQUkluZm86OnJlZ1QzKTsKICAgICAgICAgICAgIGppdC5hZGRQdHIoQXNzZW1ibHlIZWxwZXJz
OjpUcnVzdGVkSW1tMzIoaW5saW5lQ2FsbEZyYW1lLT5yZXR1cm5QQ09mZnNldCgpICsgc2l6ZW9m
KHZvaWQqKSksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjpyZWdUMik7Ci0g
ICAgICAgICAgICBqaXQudmFsaWRhdGVVbnRhZ2dlZFB0cihHUFJJbmZvOjpyZWdUMywgR1BSSW5m
bzo6bm9uQXJnR1BSMCk7CisgICAgICAgICAgICBqaXQudmFsaWRhdGVVbnRhZ2dlZFB0cihHUFJJ
bmZvOjpyZWdUMywgR1BSSW5mbzo6cmVnVDQpOwogICAgICAgICAgICAgaml0LnRhZ1B0cihHUFJJ
bmZvOjpyZWdUMiwgR1BSSW5mbzo6cmVnVDMpOwogI2VuZGlmCiAgICAgICAgICAgICBqaXQuc3Rv
cmVQdHIoR1BSSW5mbzo6cmVnVDMsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvckJ5dGVPZmZz
ZXQoaW5saW5lQ2FsbEZyYW1lLT5yZXR1cm5QQ09mZnNldCgpKSk7CkBAIC0zMDUsOSArMzA1LDkg
QEAgdm9pZCByZWlmeUlubGluZWRDYWxsRnJhbWVzKENDYWxsSGVscGVycwogCiAjaWYgQ1BVKEFS
TTY0RSkKICAgICAgICAgICAgIGppdC5hZGRQdHIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1t
MzIoaW5saW5lQ2FsbEZyYW1lLT5yZXR1cm5QQ09mZnNldCgpICsgc2l6ZW9mKHZvaWQqKSksIEdQ
UkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjpyZWdUMik7Ci0gICAgICAgICAgICBq
aXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoanVtcFRhcmdldC51bnRhZ2dl
ZEV4ZWN1dGFibGVBZGRyZXNzKCkpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKLSAgICAgICAgICAg
IGppdC50YWdQdHIoR1BSSW5mbzo6cmVnVDIsIEdQUkluZm86Om5vbkFyZ0dQUjApOwotICAgICAg
ICAgICAgaml0LnN0b3JlUHRyKEdQUkluZm86Om5vbkFyZ0dQUjAsIEFzc2VtYmx5SGVscGVyczo6
YWRkcmVzc0ZvckJ5dGVPZmZzZXQoaW5saW5lQ2FsbEZyYW1lLT5yZXR1cm5QQ09mZnNldCgpKSk7
CisgICAgICAgICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoanVt
cFRhcmdldC51bnRhZ2dlZEV4ZWN1dGFibGVBZGRyZXNzKCkpLCBHUFJJbmZvOjpyZWdUNCk7Cisg
ICAgICAgICAgICBqaXQudGFnUHRyKEdQUkluZm86OnJlZ1QyLCBHUFJJbmZvOjpyZWdUNCk7Cisg
ICAgICAgICAgICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6cmVnVDQsIEFzc2VtYmx5SGVscGVyczo6
YWRkcmVzc0ZvckJ5dGVPZmZzZXQoaW5saW5lQ2FsbEZyYW1lLT5yZXR1cm5QQ09mZnNldCgpKSk7
CiAjZWxzZQogICAgICAgICAgICAgaml0LnN0b3JlUHRyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3Rl
ZEltbVB0cihqdW1wVGFyZ2V0LnVudGFnZ2VkRXhlY3V0YWJsZUFkZHJlc3MoKSksIEFzc2VtYmx5
SGVscGVyczo6YWRkcmVzc0ZvckJ5dGVPZmZzZXQoaW5saW5lQ2FsbEZyYW1lLT5yZXR1cm5QQ09m
ZnNldCgpKSk7CiAjZW5kaWYKQEAgLTMxOCwxMSArMzE4LDExIEBAIHZvaWQgcmVpZnlJbmxpbmVk
Q2FsbEZyYW1lcyhDQ2FsbEhlbHBlcnMKICAgICAgICAgLy8gUmVzdG9yZSB0aGUgaW5saW5lIGNh
bGwgZnJhbWUncyBjYWxsZWUgc2F2ZSByZWdpc3RlcnMuCiAgICAgICAgIC8vIElmIHRoaXMgaW5s
aW5lZCBmcmFtZSBpcyBhIHRhaWwgY2FsbCB0aGF0IHdpbGwgcmV0dXJuIGJhY2sgdG8gdGhlIG9y
aWdpbmFsIGNhbGxlciwgd2UgbmVlZCB0bwogICAgICAgICAvLyBjb3B5IHRoZSBwcmlvciBjb250
ZW50cyBvZiB0aGUgdGFnIHJlZ2lzdGVycyBhbHJlYWR5IHNhdmVkIGZvciB0aGUgb3V0ZXIgZnJh
bWUgdG8gdGhpcyBmcmFtZS4KLSAgICAgICAgaml0LmVtaXRTYXZlT3JDb3B5Q2FsbGVlU2F2ZXNG
b3IoCisgICAgICAgIGppdC5lbWl0U2F2ZU9yQ29weUxMSW50QmFzZWxpbmVDYWxsZWVTYXZlc0Zv
cigKICAgICAgICAgICAgIGJhc2VsaW5lQ29kZUJsb2NrLAogICAgICAgICAgICAgc3RhdGljX2Nh
c3Q8VmlydHVhbFJlZ2lzdGVyPihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0KSwKICAgICAg
ICAgICAgIHRydWVDYWxsZXIgPyBBc3NlbWJseUhlbHBlcnM6OlVzZUV4aXN0aW5nVGFnUmVnaXN0
ZXJDb250ZW50cyA6IEFzc2VtYmx5SGVscGVyczo6Q29weUJhc2VsaW5lQ2FsbGVlU2F2ZWRSZWdp
c3RlcnNGcm9tQmFzZUZyYW1lLAotICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDIpOworICAgICAg
ICAgICAgR1BSSW5mbzo6cmVnVDIsIEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUNCk7CiAK
ICAgICAgICAgaWYgKGNhbGxlcklzTExJbnQpIHsKICAgICAgICAgICAgIENvZGVCbG9jayogYmFz
ZWxpbmVDb2RlQmxvY2tGb3JDYWxsZXIgPSBqaXQuYmFzZWxpbmVDb2RlQmxvY2tGb3IoKnRydWVD
YWxsZXIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmNwcAkocmV2
aXNpb24gMjc5MTczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoREZHX0pJVCkK
IAorI2luY2x1ZGUgIkFzc2VtYmx5SGVscGVyc1Nwb29sZXJzLmgiCiAjaW5jbHVkZSAiQ0NhbGxI
ZWxwZXJzLmgiCiAjaW5jbHVkZSAiREZHSklUQ29kZS5oIgogI2luY2x1ZGUgIkRGR09TUkV4aXQu
aCIKQEAgLTQ5LDM0ICs1MCw3MyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJU
YWc+IG9zCiAgICAgc2l6ZV90IHNjcmF0Y2hTaXplID0gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAq
IChHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyArIEZQUkluZm86Om51bWJlck9mUmVnaXN0ZXJz
KTsKICAgICBTY3JhdGNoQnVmZmVyKiBzY3JhdGNoQnVmZmVyID0gdm0uc2NyYXRjaEJ1ZmZlckZv
clNpemUoc2NyYXRjaFNpemUpOwogICAgIEVuY29kZWRKU1ZhbHVlKiBidWZmZXIgPSBzdGF0aWNf
Y2FzdDxFbmNvZGVkSlNWYWx1ZSo+KHNjcmF0Y2hCdWZmZXItPmRhdGFCdWZmZXIoKSk7Ci0gICAg
Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJz
OyArK2kpIHsKKworI2lmIENQVShBUk02NCkKKyAgICBjb25zdGV4cHIgR1BSUmVnIGJ1ZmZlckdQ
UiA9IENDYWxsSGVscGVyczo6bWVtb3J5VGVtcFJlZ2lzdGVyOworICAgIGNvbnN0ZXhwciB1bnNp
Z25lZCBmaXJzdEdQUiA9IDA7CisjZWxpZiBDUFUoWDg2XzY0KQorICAgIEdQUlJlZyBidWZmZXJH
UFIgPSBqaXQuc2NyYXRjaFJlZ2lzdGVyKCk7CisgICAgY29uc3RleHByIHVuc2lnbmVkIGZpcnN0
R1BSID0gMDsKKyNlbHNlCisgICAgR1BSUmVnIGJ1ZmZlckdQUiA9IEdQUkluZm86OnRvUmVnaXN0
ZXIoMCk7CisgICAgY29uc3RleHByIHVuc2lnbmVkIGZpcnN0R1BSID0gMTsKKyNlbmRpZgorCisg
ICAgaWYgY29uc3RleHByIChmaXJzdEdQUikgeworICAgICAgICAvLyBXZSdyZSB1c2luZyB0aGUg
Zmlyc3RHUFIgYXMgdGhlIGJ1ZmZlckdQUiwgYW5kIG5lZWQgdG8gc2F2ZSBpdCBtYW51YWxseS4K
KyAgICAgICAgUkVMRUFTRV9BU1NFUlQoR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgPj0gMSk7
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGJ1ZmZlckdQUiA9PSBHUFJJbmZvOjp0b1JlZ2lzdGVy
KDApKTsKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBqaXQuc3RvcmU2NChHUFJJbmZvOjp0
b1JlZ2lzdGVyKGkpLCBidWZmZXIgKyBpKTsKKyAgICAgICAgaml0LnN0b3JlNjQoYnVmZmVyR1BS
LCBidWZmZXIpOwogI2Vsc2UKLSAgICAgICAgaml0LnN0b3JlMzIoR1BSSW5mbzo6dG9SZWdpc3Rl
cihpKSwgYnVmZmVyICsgaSk7CisgICAgICAgIGppdC5zdG9yZTMyKGJ1ZmZlckdQUiwgYnVmZmVy
KTsKICNlbmRpZgogICAgIH0KKworICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bVB0cihidWZmZXIpLCBidWZmZXJHUFIpOworCisgICAgQ0NhbGxIZWxwZXJzOjpTdG9yZVJlZ1Nw
b29sZXIgc3RvcmVTcG9vbGVyKGppdCwgYnVmZmVyR1BSKTsKKworICAgIGZvciAodW5zaWduZWQg
aSA9IGZpcnN0R1BSOyBpIDwgR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7ICsraSkgeworICAg
ICAgICBwdHJkaWZmX3Qgb2Zmc2V0ID0gaSAqIHNpemVvZihDUFVSZWdpc3Rlcik7CisgICAgICAg
IHN0b3JlU3Bvb2xlci5zdG9yZUdQUih7IEdQUkluZm86OnRvUmVnaXN0ZXIoaSksIG9mZnNldCB9
KTsKKyAgICB9CisgICAgc3RvcmVTcG9vbGVyLmZpbmFsaXplR1BSKCk7CisKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgRlBSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7ICsraSkgewotICAg
ICAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihidWZmZXIgKyBHUFJJ
bmZvOjpudW1iZXJPZlJlZ2lzdGVycyArIGkpLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgIGpp
dC5zdG9yZURvdWJsZShGUFJJbmZvOjp0b1JlZ2lzdGVyKGkpLCBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhHUFJJbmZvOjpyZWdUMCkpOworICAgICAgICBwdHJkaWZmX3Qgb2Zmc2V0ID0gKEdQUklu
Zm86Om51bWJlck9mUmVnaXN0ZXJzICsgaSkgKiBzaXplb2YoZG91YmxlKTsKKyAgICAgICAgc3Rv
cmVTcG9vbGVyLnN0b3JlRlBSKHsgRlBSSW5mbzo6dG9SZWdpc3RlcihpKSwgb2Zmc2V0IH0pOwog
ICAgIH0KLSAgICAKKyAgICBzdG9yZVNwb29sZXIuZmluYWxpemVGUFIoKTsKKwogICAgIC8vIFNl
dCB1cCBvbmUgYXJndW1lbnQuCiAgICAgaml0Lm1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0
ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9u
KHZtKTsKIAogICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGZ1bmN0aW9uQ2FsbCA9IGppdC5jYWxs
KE9wZXJhdGlvblB0clRhZyk7CiAKKyAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW1QdHIoYnVmZmVyKSwgYnVmZmVyR1BSKTsKKyAgICBDQ2FsbEhlbHBlcnM6OkxvYWRSZWdTcG9v
bGVyIGxvYWRTcG9vbGVyKGppdCwgYnVmZmVyR1BSKTsKKworICAgIGZvciAodW5zaWduZWQgaSA9
IGZpcnN0R1BSOyBpIDwgR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7ICsraSkgeworICAgICAg
ICBwdHJkaWZmX3Qgb2Zmc2V0ID0gaSAqIHNpemVvZihDUFVSZWdpc3Rlcik7CisgICAgICAgIGxv
YWRTcG9vbGVyLmxvYWRHUFIoeyBHUFJJbmZvOjp0b1JlZ2lzdGVyKGkpLCBvZmZzZXQgfSk7Cisg
ICAgfQorICAgIGxvYWRTcG9vbGVyLmZpbmFsaXplR1BSKCk7CisKICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgRlBSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7ICsraSkgewotICAgICAgICBq
aXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihidWZmZXIgKyBHUFJJbmZvOjpu
dW1iZXJPZlJlZ2lzdGVycyArIGkpLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgIGppdC5sb2Fk
RG91YmxlKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwKSwgRlBSSW5mbzo6
dG9SZWdpc3RlcihpKSk7CisgICAgICAgIHB0cmRpZmZfdCBvZmZzZXQgPSAoR1BSSW5mbzo6bnVt
YmVyT2ZSZWdpc3RlcnMgKyBpKSAqIHNpemVvZihkb3VibGUpOworICAgICAgICBsb2FkU3Bvb2xl
ci5sb2FkRlBSKHsgRlBSSW5mbzo6dG9SZWdpc3RlcihpKSwgb2Zmc2V0IH0pOwogICAgIH0KLSAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7ICsr
aSkgeworICAgIGxvYWRTcG9vbGVyLmZpbmFsaXplRlBSKCk7CisKKyAgICBpZiBjb25zdGV4cHIg
KGZpcnN0R1BSKSB7CisgICAgICAgIC8vIFdlJ3JlIHVzaW5nIHRoZSBmaXJzdEdQUiBhcyB0aGUg
YnVmZmVyR1BSLCBhbmQgbmVlZCB0byByZXN0b3JlIGl0IG1hbnVhbGx5LgorICAgICAgICBBU1NF
UlQoYnVmZmVyR1BSID09IEdQUkluZm86OnRvUmVnaXN0ZXIoMCkpOwogI2lmIFVTRShKU1ZBTFVF
NjQpCi0gICAgICAgIGppdC5sb2FkNjQoYnVmZmVyICsgaSwgR1BSSW5mbzo6dG9SZWdpc3Rlcihp
KSk7CisgICAgICAgIGppdC5sb2FkNjQoYnVmZmVyLCBidWZmZXJHUFIpOwogI2Vsc2UKLSAgICAg
ICAgaml0LmxvYWQzMihidWZmZXIgKyBpLCBHUFJJbmZvOjp0b1JlZ2lzdGVyKGkpKTsKKyAgICAg
ICAgaml0LmxvYWQzMihidWZmZXIsIGJ1ZmZlckdQUik7CiAjZW5kaWYKICAgICB9CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2F2ZVJlc3RvcmUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2F2ZVJlc3RvcmUuY3BwCShyZXZpc2lv
biAyNzkxNzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNhdmVSZXN0b3JlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCw5ICsyOCwxMCBAQAogCiAjaWYgRU5BQkxFKEZUTF9K
SVQpCiAKKyNpbmNsdWRlICJBc3NlbWJseUhlbHBlcnNTcG9vbGVycy5oIgogI2luY2x1ZGUgIkZQ
UkluZm8uaCIKICNpbmNsdWRlICJHUFJJbmZvLmgiCi0jaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIu
aCIKKyNpbmNsdWRlICJSZWcuaCIKICNpbmNsdWRlICJSZWdpc3RlclNldC5oIgogCiBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CkBAIC03Nyw3MCArNzgsMTA0IEBAIHN0cnVjdCBSZWdz
IHsKICAgICB7CiAgICAgICAgIHNwZWNpYWwgPSBSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMo
KTsKICAgICAgICAgc3BlY2lhbC5tZXJnZShSZWdpc3RlclNldDo6cmVzZXJ2ZWRIYXJkd2FyZVJl
Z2lzdGVycygpKTsKLSAgICAgICAgCisKICAgICAgICAgZmlyc3QgPSBNYWNyb0Fzc2VtYmxlcjo6
Zmlyc3RSZWdpc3RlcigpOwogICAgICAgICB3aGlsZSAoc3BlY2lhbC5nZXQoZmlyc3QpKQogICAg
ICAgICAgICAgZmlyc3QgPSBNYWNyb0Fzc2VtYmxlcjo6bmV4dFJlZ2lzdGVyKGZpcnN0KTsKLSAg
ICAgICAgc2Vjb25kID0gTWFjcm9Bc3NlbWJsZXI6Om5leHRSZWdpc3RlcihmaXJzdCk7Ci0gICAg
ICAgIHdoaWxlIChzcGVjaWFsLmdldChzZWNvbmQpKQotICAgICAgICAgICAgc2Vjb25kID0gTWFj
cm9Bc3NlbWJsZXI6Om5leHRSZWdpc3RlcihzZWNvbmQpOwogICAgIH0KLSAgICAKKworICAgIEdQ
UlJlZyBuZXh0UmVnaXN0ZXIoR1BSUmVnIGN1cnJlbnQpCisgICAgeworICAgICAgICBhdXRvIG5l
eHQgPSBNYWNyb0Fzc2VtYmxlcjo6bmV4dFJlZ2lzdGVyKGN1cnJlbnQpOworICAgICAgICB3aGls
ZSAoc3BlY2lhbC5nZXQobmV4dCkpCisgICAgICAgICAgICBuZXh0ID0gTWFjcm9Bc3NlbWJsZXI6
Om5leHRSZWdpc3RlcihuZXh0KTsKKyAgICAgICAgcmV0dXJuIG5leHQ7CisgICAgfQorCisgICAg
RlBSUmVnIG5leHRGUFJlZ2lzdGVyKEZQUlJlZyBjdXJyZW50KQorICAgIHsKKyAgICAgICAgYXV0
byBuZXh0ID0gTWFjcm9Bc3NlbWJsZXI6Om5leHRGUFJlZ2lzdGVyKGN1cnJlbnQpOworICAgICAg
ICB3aGlsZSAoc3BlY2lhbC5nZXQobmV4dCkpCisgICAgICAgICAgICBuZXh0ID0gTWFjcm9Bc3Nl
bWJsZXI6Om5leHRGUFJlZ2lzdGVyKG5leHQpOworICAgICAgICByZXR1cm4gbmV4dDsKKyAgICB9
CisKICAgICBSZWdpc3RlclNldCBzcGVjaWFsOwogICAgIEdQUlJlZyBmaXJzdDsKLSAgICBHUFJS
ZWcgc2Vjb25kOwogfTsKIAogfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKLXZvaWQgc2F2ZUFs
bFJlZ2lzdGVycyhNYWNyb0Fzc2VtYmxlciYgaml0LCBjaGFyKiBzY3JhdGNoTWVtb3J5KQordm9p
ZCBzYXZlQWxsUmVnaXN0ZXJzKEFzc2VtYmx5SGVscGVycyYgaml0LCBjaGFyKiBzY3JhdGNoTWVt
b3J5KQogewogICAgIFJlZ3MgcmVnczsKICAgICAKICAgICAvLyBHZXQgdGhlIGZpcnN0IHJlZ2lz
dGVyIG91dCBvZiB0aGUgd2F5LCBzbyB0aGF0IHdlIGNhbiB1c2UgaXQgYXMgYSBwb2ludGVyLgot
ICAgIGppdC5wb2tlNjQocmVncy5maXJzdCwgMCk7Ci0gICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW1QdHIoc2NyYXRjaE1lbW9yeSksIHJlZ3MuZmlyc3QpOwotICAgIAorICAg
IEdQUlJlZyBiYXNlR1BSID0gcmVncy5maXJzdDsKKyNpZiBDUFUoQVJNNjQpCisgICAgR1BSUmVn
IG5leHRHUFIgPSByZWdzLm5leHRSZWdpc3RlcihiYXNlR1BSKTsKKyAgICBHUFJSZWcgZmlyc3RU
b1NhdmVHUFIgPSByZWdzLm5leHRSZWdpc3RlcihuZXh0R1BSKTsKKyAgICBBU1NFUlQoYmFzZUdQ
UiA9PSBBUk02NFJlZ2lzdGVyczo6eDApOworICAgIEFTU0VSVChuZXh0R1BSID09IEFSTTY0UmVn
aXN0ZXJzOjp4MSk7CisjZWxzZQorICAgIEdQUlJlZyBmaXJzdFRvU2F2ZUdQUiA9IHJlZ3MubmV4
dFJlZ2lzdGVyKGJhc2VHUFIpOworI2VuZGlmCisgICAgaml0LnBva2U2NChiYXNlR1BSLCAwKTsK
KyAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihzY3JhdGNoTWVtb3J5
KSwgYmFzZUdQUik7CisKKyAgICBBc3NlbWJseUhlbHBlcnM6OlN0b3JlUmVnU3Bvb2xlciBzcG9v
bGVyKGppdCwgYmFzZUdQUik7CisKICAgICAvLyBHZXQgYWxsIG9mIHRoZSBvdGhlciBHUFJzIG91
dCBvZiB0aGUgd2F5LgotICAgIGZvciAoTWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgcmVnID0g
cmVncy5zZWNvbmQ7IHJlZyA8PSBNYWNyb0Fzc2VtYmxlcjo6bGFzdFJlZ2lzdGVyKCk7IHJlZyA9
IE1hY3JvQXNzZW1ibGVyOjpuZXh0UmVnaXN0ZXIocmVnKSkgewotICAgICAgICBpZiAocmVncy5z
cGVjaWFsLmdldChyZWcpKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGppdC5zdG9y
ZTY0KHJlZywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVncy5maXJzdCwgb2Zmc2V0T2ZHUFIo
cmVnKSkpOwotICAgIH0KKyAgICBmb3IgKEdQUlJlZyByZWcgPSBmaXJzdFRvU2F2ZUdQUjsgcmVn
IDw9IE1hY3JvQXNzZW1ibGVyOjpsYXN0UmVnaXN0ZXIoKTsgcmVnID0gcmVncy5uZXh0UmVnaXN0
ZXIocmVnKSkKKyAgICAgICAgc3Bvb2xlci5zdG9yZUdQUih7IHJlZywgc3RhdGljX2Nhc3Q8cHRy
ZGlmZl90PihvZmZzZXRPZkdQUihyZWcpKSB9KTsKKyAgICBzcG9vbGVyLmZpbmFsaXplR1BSKCk7
CiAgICAgCiAgICAgLy8gUmVzdG9yZSB0aGUgZmlyc3QgcmVnaXN0ZXIgaW50byB0aGUgc2Vjb25k
IG9uZSBhbmQgc2F2ZSBpdC4KLSAgICBqaXQucGVlazY0KHJlZ3Muc2Vjb25kLCAwKTsKLSAgICBq
aXQuc3RvcmU2NChyZWdzLnNlY29uZCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVncy5maXJz
dCwgb2Zmc2V0T2ZHUFIocmVncy5maXJzdCkpKTsKKyAgICBqaXQucGVlazY0KGZpcnN0VG9TYXZl
R1BSLCAwKTsKKyNpZiBDUFUoQVJNNjQpCisgICAgaml0LnN0b3JlUGFpcjY0KGZpcnN0VG9TYXZl
R1BSLCBuZXh0R1BSLCBiYXNlR1BSLCBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihvZmZz
ZXRPZkdQUihiYXNlR1BSKSkpOworI2Vsc2UKKyAgICBqaXQuc3RvcmU2NChmaXJzdFRvU2F2ZUdQ
UiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgb2Zmc2V0T2ZHUFIoYmFzZUdQUikp
KTsKKyNlbmRpZgogICAgIAogICAgIC8vIEZpbmFsbHkgc2F2ZSBhbGwgRlBSJ3MuCi0gICAgZm9y
IChNYWNyb0Fzc2VtYmxlcjo6RlBSZWdpc3RlcklEIHJlZyA9IE1hY3JvQXNzZW1ibGVyOjpmaXJz
dEZQUmVnaXN0ZXIoKTsgcmVnIDw9IE1hY3JvQXNzZW1ibGVyOjpsYXN0RlBSZWdpc3RlcigpOyBy
ZWcgPSBNYWNyb0Fzc2VtYmxlcjo6bmV4dEZQUmVnaXN0ZXIocmVnKSkgewotICAgICAgICBpZiAo
cmVncy5zcGVjaWFsLmdldChyZWcpKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGpp
dC5zdG9yZURvdWJsZShyZWcsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlZ3MuZmlyc3QsIG9m
ZnNldE9mRlBSKHJlZykpKTsKLSAgICB9CisgICAgZm9yIChNYWNyb0Fzc2VtYmxlcjo6RlBSZWdp
c3RlcklEIHJlZyA9IE1hY3JvQXNzZW1ibGVyOjpmaXJzdEZQUmVnaXN0ZXIoKTsgcmVnIDw9IE1h
Y3JvQXNzZW1ibGVyOjpsYXN0RlBSZWdpc3RlcigpOyByZWcgPSByZWdzLm5leHRGUFJlZ2lzdGVy
KHJlZykpCisgICAgICAgIHNwb29sZXIuc3RvcmVGUFIoeyByZWcsIHN0YXRpY19jYXN0PHB0cmRp
ZmZfdD4ob2Zmc2V0T2ZGUFIocmVnKSkgfSk7CisgICAgc3Bvb2xlci5maW5hbGl6ZUZQUigpOwog
fQogCi12b2lkIHJlc3RvcmVBbGxSZWdpc3RlcnMoTWFjcm9Bc3NlbWJsZXImIGppdCwgY2hhciog
c2NyYXRjaE1lbW9yeSkKK3ZvaWQgcmVzdG9yZUFsbFJlZ2lzdGVycyhBc3NlbWJseUhlbHBlcnMm
IGppdCwgY2hhciogc2NyYXRjaE1lbW9yeSkKIHsKICAgICBSZWdzIHJlZ3M7CiAgICAgCiAgICAg
Ly8gR2l2ZSBvdXJzZWx2ZXMgYSBwb2ludGVyIHRvIHRoZSBzY3JhdGNoIG1lbW9yeS4KLSAgICBq
aXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihzY3JhdGNoTWVtb3J5KSwgcmVn
cy5maXJzdCk7CisgICAgR1BSUmVnIGJhc2VHUFIgPSByZWdzLmZpcnN0OworICAgIGppdC5tb3Zl
KE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHNjcmF0Y2hNZW1vcnkpLCBiYXNlR1BSKTsK
ICAgICAKKyAgICBBc3NlbWJseUhlbHBlcnM6OkxvYWRSZWdTcG9vbGVyIHNwb29sZXIoaml0LCBi
YXNlR1BSKTsKKwogICAgIC8vIFJlc3RvcmUgYWxsIEZQUidzLgotICAgIGZvciAoTWFjcm9Bc3Nl
bWJsZXI6OkZQUmVnaXN0ZXJJRCByZWcgPSBNYWNyb0Fzc2VtYmxlcjo6Zmlyc3RGUFJlZ2lzdGVy
KCk7IHJlZyA8PSBNYWNyb0Fzc2VtYmxlcjo6bGFzdEZQUmVnaXN0ZXIoKTsgcmVnID0gTWFjcm9B
c3NlbWJsZXI6Om5leHRGUFJlZ2lzdGVyKHJlZykpIHsKLSAgICAgICAgaWYgKHJlZ3Muc3BlY2lh
bC5nZXQocmVnKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBqaXQubG9hZERvdWJs
ZShNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZWdzLmZpcnN0LCBvZmZzZXRPZkZQUihyZWcpKSwg
cmVnKTsKLSAgICB9Ci0gICAgCi0gICAgZm9yIChNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRCBy
ZWcgPSByZWdzLnNlY29uZDsgcmVnIDw9IE1hY3JvQXNzZW1ibGVyOjpsYXN0UmVnaXN0ZXIoKTsg
cmVnID0gTWFjcm9Bc3NlbWJsZXI6Om5leHRSZWdpc3RlcihyZWcpKSB7Ci0gICAgICAgIGlmIChy
ZWdzLnNwZWNpYWwuZ2V0KHJlZykpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaml0
LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZWdzLmZpcnN0LCBvZmZzZXRPZkdQUihy
ZWcpKSwgcmVnKTsKLSAgICB9Ci0gICAgCi0gICAgaml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhyZWdzLmZpcnN0LCBvZmZzZXRPZkdQUihyZWdzLmZpcnN0KSksIHJlZ3MuZmlyc3Qp
OworICAgIGZvciAoTWFjcm9Bc3NlbWJsZXI6OkZQUmVnaXN0ZXJJRCByZWcgPSBNYWNyb0Fzc2Vt
Ymxlcjo6Zmlyc3RGUFJlZ2lzdGVyKCk7IHJlZyA8PSBNYWNyb0Fzc2VtYmxlcjo6bGFzdEZQUmVn
aXN0ZXIoKTsgcmVnID0gcmVncy5uZXh0RlBSZWdpc3RlcihyZWcpKQorICAgICAgICBzcG9vbGVy
LmxvYWRGUFIoeyByZWcsIHN0YXRpY19jYXN0PHB0cmRpZmZfdD4ob2Zmc2V0T2ZGUFIocmVnKSkg
fSk7CisgICAgc3Bvb2xlci5maW5hbGl6ZUZQUigpOworICAgIAorI2lmIENQVShBUk02NCkKKyAg
ICBHUFJSZWcgbmV4dEdQUiA9IHJlZ3MubmV4dFJlZ2lzdGVyKGJhc2VHUFIpOworICAgIEdQUlJl
ZyBmaXJzdFRvUmVzdG9yZUdQUiA9IHJlZ3MubmV4dFJlZ2lzdGVyKG5leHRHUFIpOworICAgIEFT
U0VSVChiYXNlR1BSID09IEFSTTY0UmVnaXN0ZXJzOjp4MCk7CisgICAgQVNTRVJUKG5leHRHUFIg
PT0gQVJNNjRSZWdpc3RlcnM6OngxKTsKKyNlbHNlCisgICAgR1BSUmVnIGZpcnN0VG9SZXN0b3Jl
R1BSID0gcmVncy5uZXh0UmVnaXN0ZXIoYmFzZUdQUik7CisjZW5kaWYKKyAgICBmb3IgKE1hY3Jv
QXNzZW1ibGVyOjpSZWdpc3RlcklEIHJlZyA9IGZpcnN0VG9SZXN0b3JlR1BSOyByZWcgPD0gTWFj
cm9Bc3NlbWJsZXI6Omxhc3RSZWdpc3RlcigpOyByZWcgPSByZWdzLm5leHRSZWdpc3RlcihyZWcp
KQorICAgICAgICBzcG9vbGVyLmxvYWRHUFIoeyByZWcsIHN0YXRpY19jYXN0PHB0cmRpZmZfdD4o
b2Zmc2V0T2ZHUFIocmVnKSkgfSk7CisgICAgc3Bvb2xlci5maW5hbGl6ZUdQUigpOworCisjaWYg
Q1BVKEFSTTY0KQorICAgIGppdC5sb2FkUGFpcjY0KGJhc2VHUFIsIEFzc2VtYmx5SGVscGVyczo6
VHJ1c3RlZEltbTMyKG9mZnNldE9mR1BSKGJhc2VHUFIpKSwgYmFzZUdQUiwgbmV4dEdQUik7Cisj
ZWxzZQorICAgIGppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgb2Zm
c2V0T2ZHUFIoYmFzZUdQUikpLCBiYXNlR1BSKTsKKyNlbmRpZgogfQogCiB9IH0gLy8gbmFtZXNw
YWNlIEpTQzo6RlRMCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNhdmVSZXN0
b3JlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTYXZlUmVz
dG9yZS5oCShyZXZpc2lvbiAyNzkxNzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TFNhdmVSZXN0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2Ug
SlNDIHsKIAotY2xhc3MgTWFjcm9Bc3NlbWJsZXI7CitjbGFzcyBBc3NlbWJseUhlbHBlcnM7CiAK
IG5hbWVzcGFjZSBGVEwgewogCkBAIC00Niw5ICs0Niw5IEBAIHNpemVfdCBvZmZzZXRPZkZQUihG
UFJSZWcpOwogLy8gQXNzdW1lcyB0aGF0IHRvcC1vZi1zdGFjayBjYW4gYmUgdXNlZCBhcyBhIHBv
aW50ZXItc2l6ZWQgc2NyYXRjaHBhZC4gU2F2ZXMgYWxsIG9mCiAvLyB0aGUgcmVnaXN0ZXJzIGlu
dG8gdGhlIHNjcmF0Y2ggYnVmZmVyIHN1Y2ggdGhhdCBSZWdpc3RlcklEICogc2l6ZW9mKGludDY0
X3QpIGlzIHRoZQogLy8gb2Zmc2V0IG9mIGV2ZXJ5IHJlZ2lzdGVyLgotdm9pZCBzYXZlQWxsUmVn
aXN0ZXJzKE1hY3JvQXNzZW1ibGVyJiBqaXQsIGNoYXIqIHNjcmF0Y2hNZW1vcnkpOwordm9pZCBz
YXZlQWxsUmVnaXN0ZXJzKEFzc2VtYmx5SGVscGVycyYgaml0LCBjaGFyKiBzY3JhdGNoTWVtb3J5
KTsKIAotdm9pZCByZXN0b3JlQWxsUmVnaXN0ZXJzKE1hY3JvQXNzZW1ibGVyJiBqaXQsIGNoYXIq
IHNjcmF0Y2hNZW1vcnkpOwordm9pZCByZXN0b3JlQWxsUmVnaXN0ZXJzKEFzc2VtYmx5SGVscGVy
cyYgaml0LCBjaGFyKiBzY3JhdGNoTWVtb3J5KTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkZU
TAogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFRodW5rcy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExUaHVua3MuY3BwCShyZXZpc2lv
biAyNzkxNzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFRodW5rcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShGVExfSklUKQogCi0j
aW5jbHVkZSAiQXNzZW1ibHlIZWxwZXJzLmgiCisjaW5jbHVkZSAiQXNzZW1ibHlIZWxwZXJzU3Bv
b2xlcnMuaCIKICNpbmNsdWRlICJERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uaCIKICNpbmNsdWRl
ICJGVExPU1JFeGl0Q29tcGlsZXIuaCIKICNpbmNsdWRlICJGVExPcGVyYXRpb25zLmgiCkBAIC01
NiwzMSArNTYsMzQgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0cgog
ICAgIH0KICAgICAKICAgICAvLyBOb3RlIHRoYXQgdGhlICJyZXR1cm4gYWRkcmVzcyIgd2lsbCBi
ZSB0aGUgSUQgdGhhdCB3ZSBwYXNzIHRvIHRoZSBnZW5lcmF0aW9uIGZ1bmN0aW9uLgotICAgIAot
ICAgIHB0cmRpZmZfdCBzdGFja01pc2FsaWdubWVudCA9IE1hY3JvQXNzZW1ibGVyOjpwdXNoVG9T
YXZlQnl0ZU9mZnNldCgpOwotICAgIAorCisgICAgY29uc3RleHByIEdQUlJlZyBzdGFja1BvaW50
ZXJSZWdpc3RlciA9IE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3RlcjsKKyAgICBj
b25zdGV4cHIgR1BSUmVnIGZyYW1lUG9pbnRlclJlZ2lzdGVyID0gTWFjcm9Bc3NlbWJsZXI6OmZy
YW1lUG9pbnRlclJlZ2lzdGVyOworICAgIGNvbnN0ZXhwciBwdHJkaWZmX3QgcHVzaFRvU2F2ZUJ5
dGVPZmZzZXQgPSBNYWNyb0Fzc2VtYmxlcjo6cHVzaFRvU2F2ZUJ5dGVPZmZzZXQoKTsKKyAgICBw
dHJkaWZmX3Qgc3RhY2tNaXNhbGlnbm1lbnQgPSBwdXNoVG9TYXZlQnl0ZU9mZnNldDsKKwogICAg
IC8vIFByZXRlbmQgdGhhdCB3ZSdyZSBhIEMgY2FsbCBmcmFtZS4KLSAgICBqaXQucHVzaFRvU2F2
ZShNYWNyb0Fzc2VtYmxlcjo6ZnJhbWVQb2ludGVyUmVnaXN0ZXIpOwotICAgIGppdC5tb3ZlKE1h
Y3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3RlciwgTWFjcm9Bc3NlbWJsZXI6OmZyYW1l
UG9pbnRlclJlZ2lzdGVyKTsKLSAgICBzdGFja01pc2FsaWdubWVudCArPSBNYWNyb0Fzc2VtYmxl
cjo6cHVzaFRvU2F2ZUJ5dGVPZmZzZXQoKTsKLSAgICAKKyAgICBqaXQucHVzaFRvU2F2ZShmcmFt
ZVBvaW50ZXJSZWdpc3Rlcik7CisgICAgaml0Lm1vdmUoc3RhY2tQb2ludGVyUmVnaXN0ZXIsIGZy
YW1lUG9pbnRlclJlZ2lzdGVyKTsKKyAgICBzdGFja01pc2FsaWdubWVudCArPSBwdXNoVG9TYXZl
Qnl0ZU9mZnNldDsKKwogICAgIC8vIE5vdyBjcmVhdGUgb3Vyc2VsdmVzIGVub3VnaCBzdGFjayBz
cGFjZSB0byBnaXZlIHNhdmVBbGxSZWdpc3RlcnMoKSBhIHNjcmF0Y2ggc2xvdC4KICAgICB1bnNp
Z25lZCBudW1iZXJPZlJlcXVpcmVkUG9wcyA9IDA7CiAgICAgZG8gewotICAgICAgICBqaXQucHVz
aFRvU2F2ZShHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgIHN0YWNrTWlzYWxpZ25tZW50ICs9IE1h
Y3JvQXNzZW1ibGVyOjpwdXNoVG9TYXZlQnl0ZU9mZnNldCgpOworICAgICAgICBzdGFja01pc2Fs
aWdubWVudCArPSBwdXNoVG9TYXZlQnl0ZU9mZnNldDsKICAgICAgICAgbnVtYmVyT2ZSZXF1aXJl
ZFBvcHMrKzsKICAgICB9IHdoaWxlIChzdGFja01pc2FsaWdubWVudCAlIHN0YWNrQWxpZ25tZW50
Qnl0ZXMoKSk7Ci0gICAgCisgICAgaml0LnN1YlB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bTMyKG51bWJlck9mUmVxdWlyZWRQb3BzICogcHVzaFRvU2F2ZUJ5dGVPZmZzZXQpLCBzdGFja1Bv
aW50ZXJSZWdpc3Rlcik7CisKICAgICBTY3JhdGNoQnVmZmVyKiBzY3JhdGNoQnVmZmVyID0gdm0u
c2NyYXRjaEJ1ZmZlckZvclNpemUocmVxdWlyZWRTY3JhdGNoTWVtb3J5U2l6ZUluQnl0ZXMoKSk7
CiAgICAgY2hhciogYnVmZmVyID0gc3RhdGljX2Nhc3Q8Y2hhcio+KHNjcmF0Y2hCdWZmZXItPmRh
dGFCdWZmZXIoKSk7CiAgICAgCiAgICAgc2F2ZUFsbFJlZ2lzdGVycyhqaXQsIGJ1ZmZlcik7CiAK
LSAgICBqaXQubG9hZFB0cihHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKTsKKyAgICBqaXQubG9hZFB0cihmcmFtZVBvaW50ZXJSZWdpc3RlciwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKTsKICAgICBqaXQucGVlaygKICAgICAgICAgR1BSSW5mbzo6YXJndW1l
bnRHUFIxLAotICAgICAgICAoc3RhY2tNaXNhbGlnbm1lbnQgLSBNYWNyb0Fzc2VtYmxlcjo6cHVz
aFRvU2F2ZUJ5dGVPZmZzZXQoKSkgLyBzaXplb2Yodm9pZCopKTsKKyAgICAgICAgKHN0YWNrTWlz
YWxpZ25tZW50IC0gcHVzaFRvU2F2ZUJ5dGVPZmZzZXQpIC8gc2l6ZW9mKHZvaWQqKSk7CiAgICAg
aml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBm
dW5jdGlvbkNhbGwgPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOwogCkBAIC05MiwxNCArOTUs
MTMgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0cgogICAgIGppdC5t
b3ZlKEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBHUFJJbmZvOjpyZWdUMCk7CiAKICAgICAvLyBQ
cmVwYXJlIGZvciB0YWlsIGNhbGwuCi0gICAgd2hpbGUgKG51bWJlck9mUmVxdWlyZWRQb3BzLS0p
Ci0gICAgICAgIGppdC5wb3BUb1Jlc3RvcmUoR1BSSW5mbzo6cmVnVDEpOwotICAgIGppdC5wb3BU
b1Jlc3RvcmUoTWFjcm9Bc3NlbWJsZXI6OmZyYW1lUG9pbnRlclJlZ2lzdGVyKTsKLQotICAgIC8v
IFdoZW4gd2UgY2FtZSBpbiBoZXJlLCB0aGVyZSB3YXMgYW4gYWRkaXRpb25hbCB0aGluZyBwdXNo
ZWQgdG8gdGhlIHN0YWNrLiBTb21lIGNsaWVudHMgd2FudCBpdAotICAgIC8vIHBvcHBlZCBiZWZv
cmUgcHJvY2VlZGluZy4KLSAgICB3aGlsZSAoZXh0cmFQb3BzVG9SZXN0b3JlLS0pCi0gICAgICAg
IGppdC5wb3BUb1Jlc3RvcmUoR1BSSW5mbzo6cmVnVDEpOworCisgICAgaml0LmxvYWRQdHIoTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIG51bWJlck9mUmVxdWly
ZWRQb3BzICogcHVzaFRvU2F2ZUJ5dGVPZmZzZXQpLCBmcmFtZVBvaW50ZXJSZWdpc3Rlcik7CisK
KyAgICAvLyBXaGVuIHdlIGNhbWUgaW4gaGVyZSwgdGhlcmUgd2FzIGFuIGFkZGl0aW9uYWwgdGhp
bmcgcHVzaGVkIHRvIHRoZSBzdGFjayAoZXh0cmFQb3BzVG9SZXN0b3JlKS4KKyAgICAvLyBTb21l
IGNsaWVudHMgd2FudCBpdCBwb3BwZWQgYmVmb3JlIHByb2NlZWRpbmcuIEFsc28gYWRkIDEgZm9y
IHRoZSBwdXNoVG9TYXZlIG9mIHRoZSBmcmFtZVBvaW50ZXJSZWdpc3Rlci4KKyAgICBudW1iZXJP
ZlJlcXVpcmVkUG9wcyArPSAxICsgZXh0cmFQb3BzVG9SZXN0b3JlOworICAgIGppdC5hZGRQdHIo
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihudW1iZXJPZlJlcXVpcmVkUG9wcyAqIHB1c2hU
b1NhdmVCeXRlT2Zmc2V0KSwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogCiAgICAgLy8gUHV0IHRo
ZSByZXR1cm4gYWRkcmVzcyB3aGVyZXZlciB0aGUgcmV0dXJuIGluc3RydWN0aW9uIHdhbnRzIGl0
LiBPbiBhbGwgcGxhdGZvcm1zLCB0aGlzCiAgICAgLy8gZW5zdXJlcyB0aGF0IHRoZSByZXR1cm4g
YWRkcmVzcyBpcyBvdXQgb2YgdGhlIHdheSBvZiByZWdpc3RlciByZXN0b3JhdGlvbi4KQEAgLTE3
NywyMSArMTc5LDI1IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2wK
ICNpZiBDUFUoWDg2XzY0KQogICAgIGN1cnJlbnRPZmZzZXQgKz0gc2l6ZW9mKHZvaWQqKTsKICNl
bmRpZgotICAgIAorCisgICAgQXNzZW1ibHlIZWxwZXJzOjpTdG9yZVJlZ1Nwb29sZXIgc3RvcmVT
cG9vbGVyKGppdCwgTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKwogICAg
IGZvciAoTWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgcmVnID0gTWFjcm9Bc3NlbWJsZXI6OmZp
cnN0UmVnaXN0ZXIoKTsgcmVnIDw9IE1hY3JvQXNzZW1ibGVyOjpsYXN0UmVnaXN0ZXIoKTsgcmVn
ID0gc3RhdGljX2Nhc3Q8TWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQ+KHJlZyArIDEpKSB7CiAg
ICAgICAgIGlmICgha2V5LnVzZWRSZWdpc3RlcnMoKS5nZXQocmVnKSkKICAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICBqaXQuc3RvcmVQdHIocmVnLCBBc3NlbWJseUhlbHBlcnM6OkFkZHJl
c3MoTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBjdXJyZW50T2Zmc2V0KSk7
CisgICAgICAgIHN0b3JlU3Bvb2xlci5zdG9yZUdQUih7IHJlZywgc3RhdGljX2Nhc3Q8cHRyZGlm
Zl90PihjdXJyZW50T2Zmc2V0KSB9KTsKICAgICAgICAgY3VycmVudE9mZnNldCArPSBzaXplb2Yo
dm9pZCopOwogICAgIH0KLSAgICAKKyAgICBzdG9yZVNwb29sZXIuZmluYWxpemVHUFIoKTsKKwog
ICAgIGZvciAoTWFjcm9Bc3NlbWJsZXI6OkZQUmVnaXN0ZXJJRCByZWcgPSBNYWNyb0Fzc2VtYmxl
cjo6Zmlyc3RGUFJlZ2lzdGVyKCk7IHJlZyA8PSBNYWNyb0Fzc2VtYmxlcjo6bGFzdEZQUmVnaXN0
ZXIoKTsgcmVnID0gc3RhdGljX2Nhc3Q8TWFjcm9Bc3NlbWJsZXI6OkZQUmVnaXN0ZXJJRD4ocmVn
ICsgMSkpIHsKICAgICAgICAgaWYgKCFrZXkudXNlZFJlZ2lzdGVycygpLmdldChyZWcpKQogICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGppdC5zdG9yZURvdWJsZShyZWcsIEFzc2VtYmx5
SGVscGVyczo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIGN1
cnJlbnRPZmZzZXQpKTsKKyAgICAgICAgc3RvcmVTcG9vbGVyLnN0b3JlRlBSKHsgcmVnLCBzdGF0
aWNfY2FzdDxwdHJkaWZmX3Q+KGN1cnJlbnRPZmZzZXQpIH0pOwogICAgICAgICBjdXJyZW50T2Zm
c2V0ICs9IHNpemVvZihkb3VibGUpOwogICAgIH0KLSAgICAKKyAgICBzdG9yZVNwb29sZXIuZmlu
YWxpemVGUFIoKTsKKwogICAgIGppdC5wcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwoR1BS
SW5mbzo6bm9uQXJnR1BSMSk7CiAgICAgaml0LnN0b3JlUHRyKEdQUkluZm86Om5vbkFyZ0dQUjEs
IEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVn
aXN0ZXIsIGtleS5vZmZzZXQoKSkpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7
CkBAIC0yMTAsMjQgKzIxNiwyOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJU
YWc+IHNsCiAgICAgaml0LmxvYWRQdHIoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKE1hY3JvQXNz
ZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlciwga2V5Lm9mZnNldCgpKSwgR1BSSW5mbzo6bm9u
UHJlc2VydmVkTm9uUmV0dXJuR1BSKTsKICAgICBqaXQucmVzdG9yZVJldHVybkFkZHJlc3NCZWZv
cmVSZXR1cm4oR1BSSW5mbzo6bm9uUHJlc2VydmVkTm9uUmV0dXJuR1BSKTsKICAgICAKKyAgICBB
c3NlbWJseUhlbHBlcnM6OkxvYWRSZWdTcG9vbGVyIGxvYWRTcG9vbGVyKGppdCwgTWFjcm9Bc3Nl
bWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKwogICAgIGZvciAoTWFjcm9Bc3NlbWJsZXI6
OkZQUmVnaXN0ZXJJRCByZWcgPSBNYWNyb0Fzc2VtYmxlcjo6bGFzdEZQUmVnaXN0ZXIoKTsgOyBy
ZWcgPSBzdGF0aWNfY2FzdDxNYWNyb0Fzc2VtYmxlcjo6RlBSZWdpc3RlcklEPihyZWcgLSAxKSkg
ewogICAgICAgICBpZiAoa2V5LnVzZWRSZWdpc3RlcnMoKS5nZXQocmVnKSkgewogICAgICAgICAg
ICAgY3VycmVudE9mZnNldCAtPSBzaXplb2YoZG91YmxlKTsKLSAgICAgICAgICAgIGppdC5sb2Fk
RG91YmxlKEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2lu
dGVyUmVnaXN0ZXIsIGN1cnJlbnRPZmZzZXQpLCByZWcpOworICAgICAgICAgICAgbG9hZFNwb29s
ZXIubG9hZEZQUih7IHJlZywgc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihjdXJyZW50T2Zmc2V0KSB9
KTsKICAgICAgICAgfQogICAgICAgICBpZiAocmVnID09IE1hY3JvQXNzZW1ibGVyOjpmaXJzdEZQ
UmVnaXN0ZXIoKSkKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICAKKyAgICBsb2FkU3Bv
b2xlci5maW5hbGl6ZUZQUigpOworCiAgICAgZm9yIChNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJ
RCByZWcgPSBNYWNyb0Fzc2VtYmxlcjo6bGFzdFJlZ2lzdGVyKCk7IDsgcmVnID0gc3RhdGljX2Nh
c3Q8TWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQ+KHJlZyAtIDEpKSB7CiAgICAgICAgIGlmIChr
ZXkudXNlZFJlZ2lzdGVycygpLmdldChyZWcpKSB7CiAgICAgICAgICAgICBjdXJyZW50T2Zmc2V0
IC09IHNpemVvZih2b2lkKik7Ci0gICAgICAgICAgICBqaXQubG9hZFB0cihBc3NlbWJseUhlbHBl
cnM6OkFkZHJlc3MoTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBjdXJyZW50
T2Zmc2V0KSwgcmVnKTsKKyAgICAgICAgICAgIGxvYWRTcG9vbGVyLmxvYWRHUFIoeyByZWcsIHN0
YXRpY19jYXN0PHB0cmRpZmZfdD4oY3VycmVudE9mZnNldCkgfSk7CiAgICAgICAgIH0KICAgICAg
ICAgaWYgKHJlZyA9PSBNYWNyb0Fzc2VtYmxlcjo6Zmlyc3RSZWdpc3RlcigpKQogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgfQotICAgIAorICAgIGxvYWRTcG9vbGVyLmZpbmFsaXplR1BSKCk7CisK
ICAgICBqaXQucmV0KCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFM
X1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpGVExUaHVuayk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCShyZXZpc2lvbiAyNzkx
NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoSklUKQogCiAjaW5jbHVk
ZSAiQWNjZXNzQ2FzZS5oIgorI2luY2x1ZGUgIkFzc2VtYmx5SGVscGVyc1Nwb29sZXJzLmgiCiAj
aW5jbHVkZSAiSklUT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJWaWV3Lmgi
CiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKQEAgLTYwNiw0MiArNjA3LDkzIEBAIHZv
aWQgQXNzZW1ibHlIZWxwZXJzOjpyZXN0b3JlQ2FsbGVlU2F2ZXMKIAogICAgIEdQUlJlZyBzY3Jh
dGNoID0gSW52YWxpZEdQUlJlZzsKICAgICB1bnNpZ25lZCBzY3JhdGNoR1BSRW50cnlJbmRleCA9
IDA7CisjaWYgQ1BVKEFSTTY0KQorICAgIC8vIFdlIGRvbid0IG5lZWQgYSBzZWNvbmQgc2NyYXRj
aCBHUFIsIGJ1dCB3ZSdsbCBhbHNvIGRlZmVyIHJlc3RvcmluZyB0aGlzCisgICAgLy8gR1BSIChp
biB0aGUgbmV4dCBzbG90IGFmdGVyIHRoZSBzY3JhdGNoKSBzbyB0aGF0IHdlIGNhbiByZXN0b3Jl
IHRoZW0gdG9nZXRoZXIKKyAgICAvLyBsYXRlciB1c2luZyBhIGxvYWRQYWlyNjQuCisgICAgR1BS
UmVnIHVudXNlZE5leHRTbG90R1BSID0gSW52YWxpZEdQUlJlZzsKKyNlbmRpZgogCi0gICAgLy8g
VXNlIHRoZSBmaXJzdCBHUFIgZW50cnkncyByZWdpc3RlciBhcyBvdXIgc2NyYXRjaC4KKyAgICAv
LyBVc2UgdGhlIGZpcnN0IEdQUiBlbnRyeSdzIHJlZ2lzdGVyIGFzIG91ciBiYXNlR1BSLgogICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZWdpc3RlckNvdW50OyBpKyspIHsKICAgICAgICAg
UmVnaXN0ZXJBdE9mZnNldCBlbnRyeSA9IGFsbENhbGxlZVNhdmVzLT5hdChpKTsKLSAgICAgICAg
aWYgKGRvbnRSZXN0b3JlUmVnaXN0ZXJzLmdldChlbnRyeS5yZWcoKSkpCisgICAgICAgIGlmIChk
b250UmVzdG9yZVJlZ2lzdGVycy5jb250YWlucyhlbnRyeS5yZWcoKSkpCiAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgaWYgKGVudHJ5LnJlZygpLmlzR1BSKCkpIHsKKyNpZiBDUFUoQVJN
NjQpCisgICAgICAgICAgICBpZiAoaSArIDEgPCByZWdpc3RlckNvdW50KSB7CisgICAgICAgICAg
ICAgICAgUmVnaXN0ZXJBdE9mZnNldCBlbnRyeTIgPSBhbGxDYWxsZWVTYXZlcy0+YXQoaSArIDEp
OworICAgICAgICAgICAgICAgIGlmICghZG9udFJlc3RvcmVSZWdpc3RlcnMuY29udGFpbnMoZW50
cnkyLnJlZygpKQorICAgICAgICAgICAgICAgICAgICAmJiBlbnRyeTIucmVnKCkuaXNHUFIoKQor
ICAgICAgICAgICAgICAgICAgICAmJiBlbnRyeTIub2Zmc2V0KCkgPT0gZW50cnkub2Zmc2V0KCkg
KyBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KHNpemVvZihDUFVSZWdpc3RlcikpKSB7CisgICAgICAg
ICAgICAgICAgICAgIHNjcmF0Y2hHUFJFbnRyeUluZGV4ID0gaTsKKyAgICAgICAgICAgICAgICAg
ICAgc2NyYXRjaCA9IGVudHJ5LnJlZygpLmdwcigpOworICAgICAgICAgICAgICAgICAgICB1bnVz
ZWROZXh0U2xvdEdQUiA9IGVudHJ5Mi5yZWcoKS5ncHIoKTsKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorI2Vsc2UKICAgICAgICAg
ICAgIHNjcmF0Y2hHUFJFbnRyeUluZGV4ID0gaTsKICAgICAgICAgICAgIHNjcmF0Y2ggPSBlbnRy
eS5yZWcoKS5ncHIoKTsKICAgICAgICAgICAgIGJyZWFrOworI2VuZGlmCiAgICAgICAgIH0KICAg
ICB9CiAgICAgQVNTRVJUKHNjcmF0Y2ggIT0gSW52YWxpZEdQUlJlZyk7CisgICAgCisgICAgUmVn
aXN0ZXJTZXQgc2tpcExpc3Q7CisgICAgc2tpcExpc3Quc2V0KGRvbnRSZXN0b3JlUmVnaXN0ZXJz
KTsKKworICAgIC8vIFNraXAgdGhlIHNjcmF0Y2ggcmVnaXN0ZXIocykuIFdlJ2xsIHJlc3RvcmUg
dGhlbSBsYXRlci4KKyAgICBza2lwTGlzdC5hZGQoc2NyYXRjaCk7CisjaWYgQ1BVKEFSTTY0KQor
ICAgIFJFTEVBU0VfQVNTRVJUKHVudXNlZE5leHRTbG90R1BSICE9IEludmFsaWRHUFJSZWcpOwor
ICAgIHNraXBMaXN0LmFkZCh1bnVzZWROZXh0U2xvdEdQUik7CisjZW5kaWYKIAogICAgIGxvYWRQ
dHIoJnRvcEVudHJ5RnJhbWUsIHNjcmF0Y2gpOwogICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoRW50
cnlGcmFtZTo6Y2FsbGVlU2F2ZVJlZ2lzdGVyc0J1ZmZlck9mZnNldCgpKSwgc2NyYXRjaCk7CiAK
KyAgICBMb2FkUmVnU3Bvb2xlciBzcG9vbGVyKCp0aGlzLCBzY3JhdGNoKTsKKwogICAgIC8vIFJl
c3RvcmUgYWxsIGNhbGxlZSBzYXZlcyBleGNlcHQgZm9yIHRoZSBzY3JhdGNoLgotICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCByZWdpc3RlckNvdW50OyBpKyspIHsKKyAgICB1bnNpZ25lZCBp
ID0gMDsKKyAgICBmb3IgKDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkrKykgewogICAgICAgICBSZWdp
c3RlckF0T2Zmc2V0IGVudHJ5ID0gYWxsQ2FsbGVlU2F2ZXMtPmF0KGkpOwotICAgICAgICBpZiAo
ZG9udFJlc3RvcmVSZWdpc3RlcnMuZ2V0KGVudHJ5LnJlZygpKSkKKyAgICAgICAgaWYgKHNraXBM
aXN0LmNvbnRhaW5zKGVudHJ5LnJlZygpKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICBpZiAoaSA9PSBzY3JhdGNoR1BSRW50cnlJbmRleCkKKyAgICAgICAgaWYgKCFlbnRyeS5yZWco
KS5pc0dQUigpKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIHNwb29sZXIubG9hZEdQUihl
bnRyeSk7CisgICAgfQorICAgIHNwb29sZXIuZmluYWxpemVHUFIoKTsKKyAgICBmb3IgKDsgaSA8
IHJlZ2lzdGVyQ291bnQ7IGkrKykgeworICAgICAgICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5ID0g
YWxsQ2FsbGVlU2F2ZXMtPmF0KGkpOworICAgICAgICBpZiAoc2tpcExpc3QuY29udGFpbnMoZW50
cnkucmVnKCkpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGxvYWRSZWcoQWRkcmVz
cyhzY3JhdGNoLCBlbnRyeS5vZmZzZXQoKSksIGVudHJ5LnJlZygpKTsKKyAgICAgICAgQVNTRVJU
KCFlbnRyeS5yZWcoKS5pc0dQUigpKTsKKyAgICAgICAgc3Bvb2xlci5sb2FkRlBSKGVudHJ5KTsK
ICAgICB9CisgICAgc3Bvb2xlci5maW5hbGl6ZUZQUigpOwogCiAgICAgLy8gUmVzdG9yZSB0aGUg
Y2FsbGVlIHNhdmUgdmFsdWUgb2YgdGhlIHNjcmF0Y2guCiAgICAgUmVnaXN0ZXJBdE9mZnNldCBl
bnRyeSA9IGFsbENhbGxlZVNhdmVzLT5hdChzY3JhdGNoR1BSRW50cnlJbmRleCk7CiAgICAgQVNT
RVJUKCFkb250UmVzdG9yZVJlZ2lzdGVycy5nZXQoZW50cnkucmVnKCkpKTsKICAgICBBU1NFUlQo
ZW50cnkucmVnKCkuaXNHUFIoKSk7CiAgICAgQVNTRVJUKHNjcmF0Y2ggPT0gZW50cnkucmVnKCku
Z3ByKCkpOwotICAgIGxvYWRSZWcoQWRkcmVzcyhzY3JhdGNoLCBlbnRyeS5vZmZzZXQoKSksIHNj
cmF0Y2gpOworI2lmIENQVShBUk02NCkKKyAgICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5MiA9IGFs
bENhbGxlZVNhdmVzLT5hdChzY3JhdGNoR1BSRW50cnlJbmRleCArIDEpOworICAgIEFTU0VSVF9V
TlVTRUQoZW50cnkyLCAhZG9udFJlc3RvcmVSZWdpc3RlcnMuZ2V0KGVudHJ5Mi5yZWcoKSkpOwor
ICAgIEFTU0VSVChlbnRyeTIucmVnKCkuaXNHUFIoKSk7CisgICAgQVNTRVJUKHVudXNlZE5leHRT
bG90R1BSID09IGVudHJ5Mi5yZWcoKS5ncHIoKSk7CisgICAgbG9hZFBhaXI2NChzY3JhdGNoLCBU
cnVzdGVkSW1tMzIoZW50cnkub2Zmc2V0KCkpLCBzY3JhdGNoLCB1bnVzZWROZXh0U2xvdEdQUik7
CiAjZWxzZQotICAgIFVOVVNFRF9QQVJBTSh0b3BFbnRyeUZyYW1lKTsKKyAgICBsb2FkUHRyKEFk
ZHJlc3Moc2NyYXRjaCwgZW50cnkub2Zmc2V0KCkpLCBzY3JhdGNoKTsKICNlbmRpZgorCisjZWxz
ZQorICAgIFVOVVNFRF9QQVJBTSh0b3BFbnRyeUZyYW1lKTsKKyNlbmRpZiAvLyBOVU1CRVJfT0Zf
Q0FMTEVFX1NBVkVTX1JFR0lTVEVSUyA+IDAKIH0KIAogdm9pZCBBc3NlbWJseUhlbHBlcnM6OmVt
aXRWaXJ0dWFsQ2FsbChWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxM
aW5rSW5mbyogaW5mbykKQEAgLTk5OSwxMyArMTA1MSwyNyBAQCB2b2lkIEFzc2VtYmx5SGVscGVy
czo6Y29weUNhbGxlZVNhdmVzVG9FCiAgICAgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGFsbENhbGxl
ZVNhdmVzID0gUmVnaXN0ZXJTZXQ6OnZtQ2FsbGVlU2F2ZVJlZ2lzdGVyT2Zmc2V0cygpOwogICAg
IFJlZ2lzdGVyU2V0IGRvbnRDb3B5UmVnaXN0ZXJzID0gUmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0
ZXJzKCk7CiAgICAgdW5zaWduZWQgcmVnaXN0ZXJDb3VudCA9IGFsbENhbGxlZVNhdmVzLT5zaXpl
KCk7Ci0gICAgCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkr
KykgeworCisgICAgU3RvcmVSZWdTcG9vbGVyIHNwb29sZXIoKnRoaXMsIGNhbGxlZVNhdmVzQnVm
ZmVyKTsKKworICAgIHVuc2lnbmVkIGkgPSAwOworICAgIGZvciAoOyBpIDwgcmVnaXN0ZXJDb3Vu
dDsgaSsrKSB7CiAgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQgZW50cnkgPSBhbGxDYWxsZWVTYXZl
cy0+YXQoaSk7Ci0gICAgICAgIGlmIChkb250Q29weVJlZ2lzdGVycy5nZXQoZW50cnkucmVnKCkp
KQorICAgICAgICBpZiAoZG9udENvcHlSZWdpc3RlcnMuY29udGFpbnMoZW50cnkucmVnKCkpKQog
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIHN0b3JlUmVnKGVudHJ5LnJlZygpLCBBZGRy
ZXNzKGNhbGxlZVNhdmVzQnVmZmVyLCBlbnRyeS5vZmZzZXQoKSkpOworICAgICAgICBpZiAoIWVu
dHJ5LnJlZygpLmlzR1BSKCkpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgc3Bvb2xlci5z
dG9yZUdQUihlbnRyeSk7CiAgICAgfQorICAgIHNwb29sZXIuZmluYWxpemVHUFIoKTsKKyAgICBm
b3IgKDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkrKykgeworICAgICAgICBSZWdpc3RlckF0T2Zmc2V0
IGVudHJ5ID0gYWxsQ2FsbGVlU2F2ZXMtPmF0KGkpOworICAgICAgICBpZiAoZG9udENvcHlSZWdp
c3RlcnMuY29udGFpbnMoZW50cnkucmVnKCkpKQorICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgIHNwb29sZXIuc3RvcmVGUFIoZW50cnkpOworICAgIH0KKyAgICBzcG9vbGVyLmZpbmFsaXpl
RlBSKCk7CisKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGNhbGxlZVNhdmVzQnVmZmVyKTsKICNl
bmRpZgpAQCAtMTEwMyw2ICsxMTY5LDE4OCBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6Y2FnZUNv
bmRpdGlvbmFsbHlBCiAgICAgVU5VU0VEX1BBUkFNKHNjcmF0Y2gpOwogfQogCit2b2lkIEFzc2Vt
Ymx5SGVscGVyczo6ZW1pdFNhdmUoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QmIGxpc3QpCit7
CisgICAgU3RvcmVSZWdTcG9vbGVyIHNwb29sZXIoKnRoaXMsIGZyYW1lUG9pbnRlclJlZ2lzdGVy
KTsKKworICAgIHNpemVfdCBsaXN0U2l6ZSA9IGxpc3Quc2l6ZSgpOworICAgIHNpemVfdCBpID0g
MDsKKyAgICBmb3IgKDsgaSA8IGxpc3RTaXplOyBpKyspIHsKKyAgICAgICAgYXV0byBlbnRyeSA9
IGxpc3QuYXQoaSk7CisgICAgICAgIGlmICghZW50cnkucmVnKCkuaXNHUFIoKSkKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBzcG9vbGVyLnN0b3JlR1BSKGVudHJ5KTsKKyAgICB9CisgICAg
c3Bvb2xlci5maW5hbGl6ZUdQUigpOworCisgICAgZm9yICg7IGkgPCBsaXN0U2l6ZTsgaSsrKQor
ICAgICAgICBzcG9vbGVyLnN0b3JlRlBSKGxpc3QuYXQoaSkpOworICAgIHNwb29sZXIuZmluYWxp
emVGUFIoKTsKK30KKwordm9pZCBBc3NlbWJseUhlbHBlcnM6OmVtaXRSZXN0b3JlKGNvbnN0IFJl
Z2lzdGVyQXRPZmZzZXRMaXN0JiBsaXN0KQoreworICAgIExvYWRSZWdTcG9vbGVyIHNwb29sZXIo
KnRoaXMsIGZyYW1lUG9pbnRlclJlZ2lzdGVyKTsKKworICAgIHNpemVfdCBsaXN0U2l6ZSA9IGxp
c3Quc2l6ZSgpOworICAgIHNpemVfdCBpID0gMDsKKyAgICBmb3IgKDsgaSA8IGxpc3RTaXplOyBp
KyspIHsKKyAgICAgICAgYXV0byBlbnRyeSA9IGxpc3QuYXQoaSk7CisgICAgICAgIGlmICghZW50
cnkucmVnKCkuaXNHUFIoKSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBzcG9vbGVyLmxv
YWRHUFIoZW50cnkpOworICAgIH0KKyAgICBzcG9vbGVyLmZpbmFsaXplR1BSKCk7CisKKyAgICBm
b3IgKDsgaSA8IGxpc3RTaXplOyBpKyspCisgICAgICAgIHNwb29sZXIubG9hZEZQUihsaXN0LmF0
KGkpKTsKKyAgICBzcG9vbGVyLmZpbmFsaXplRlBSKCk7Cit9CisKK3ZvaWQgQXNzZW1ibHlIZWxw
ZXJzOjplbWl0U2F2ZUNhbGxlZVNhdmVzRm9yKGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBj
YWxsZWVTYXZlcykKK3sKKyAgICBSZWdpc3RlclNldCBkb250U2F2ZVJlZ2lzdGVycyA9IFJlZ2lz
dGVyU2V0KFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpKTsKKyAgICB1bnNpZ25lZCByZWdp
c3RlckNvdW50ID0gY2FsbGVlU2F2ZXMtPnNpemUoKTsKKworICAgIFN0b3JlUmVnU3Bvb2xlciBz
cG9vbGVyKCp0aGlzLCBmcmFtZVBvaW50ZXJSZWdpc3Rlcik7CisKKyAgICB1bnNpZ25lZCBpID0g
MDsKKyAgICBmb3IgKDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkrKykgeworICAgICAgICBSZWdpc3Rl
ckF0T2Zmc2V0IGVudHJ5ID0gY2FsbGVlU2F2ZXMtPmF0KGkpOworICAgICAgICBpZiAoZW50cnku
cmVnKCkuaXNGUFIoKSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAoZG9udFNhdmVS
ZWdpc3RlcnMuY29udGFpbnMoZW50cnkucmVnKCkpKQorICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgIHNwb29sZXIuc3RvcmVHUFIoZW50cnkpOworICAgIH0KKyAgICBzcG9vbGVyLmZpbmFs
aXplR1BSKCk7CisgICAgZm9yICg7IGkgPCByZWdpc3RlckNvdW50OyBpKyspIHsKKyAgICAgICAg
UmVnaXN0ZXJBdE9mZnNldCBlbnRyeSA9IGNhbGxlZVNhdmVzLT5hdChpKTsKKyAgICAgICAgaWYg
KGRvbnRTYXZlUmVnaXN0ZXJzLmNvbnRhaW5zKGVudHJ5LnJlZygpKSkKKyAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICBzcG9vbGVyLnN0b3JlRlBSKGVudHJ5KTsKKyAgICB9CisgICAgc3Bv
b2xlci5maW5hbGl6ZUZQUigpOworfQorCit2b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1pdFJlc3Rv
cmVDYWxsZWVTYXZlc0Zvcihjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCogY2FsbGVlU2F2ZXMp
Cit7CisgICAgUmVnaXN0ZXJTZXQgZG9udFJlc3RvcmVSZWdpc3RlcnMgPSBSZWdpc3RlclNldChS
ZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKSk7CisgICAgdW5zaWduZWQgcmVnaXN0ZXJDb3Vu
dCA9IGNhbGxlZVNhdmVzLT5zaXplKCk7CisgICAgCisgICAgTG9hZFJlZ1Nwb29sZXIgc3Bvb2xl
cigqdGhpcywgZnJhbWVQb2ludGVyUmVnaXN0ZXIpOworCisgICAgdW5zaWduZWQgaSA9IDA7Cisg
ICAgZm9yICg7IGkgPCByZWdpc3RlckNvdW50OyBpKyspIHsKKyAgICAgICAgUmVnaXN0ZXJBdE9m
ZnNldCBlbnRyeSA9IGNhbGxlZVNhdmVzLT5hdChpKTsKKyAgICAgICAgaWYgKGVudHJ5LnJlZygp
LmlzRlBSKCkpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKGRvbnRSZXN0b3JlUmVn
aXN0ZXJzLmdldChlbnRyeS5yZWcoKSkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
c3Bvb2xlci5sb2FkR1BSKGVudHJ5KTsKKyAgICB9CisgICAgc3Bvb2xlci5maW5hbGl6ZUdQUigp
OworICAgIGZvciAoOyBpIDwgcmVnaXN0ZXJDb3VudDsgaSsrKSB7CisgICAgICAgIFJlZ2lzdGVy
QXRPZmZzZXQgZW50cnkgPSBjYWxsZWVTYXZlcy0+YXQoaSk7CisgICAgICAgIGlmIChkb250UmVz
dG9yZVJlZ2lzdGVycy5nZXQoZW50cnkucmVnKCkpKQorICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgIHNwb29sZXIubG9hZEZQUihlbnRyeSk7CisgICAgfQorICAgIHNwb29sZXIuZmluYWxp
emVGUFIoKTsKK30KKwordm9pZCBBc3NlbWJseUhlbHBlcnM6OmNvcHlMTEludEJhc2VsaW5lQ2Fs
bGVlU2F2ZXNGcm9tRnJhbWVPclJlZ2lzdGVyVG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIo
RW50cnlGcmFtZSomIHRvcEVudHJ5RnJhbWUsIGNvbnN0IFRlbXBSZWdpc3RlclNldCYgdXNlZFJl
Z2lzdGVycykKK3sKKyNpZiBOVU1CRVJfT0ZfQ0FMTEVFX1NBVkVTX1JFR0lTVEVSUyA+IDAKKyAg
ICAvLyBDb3B5IHNhdmVkIGNhbGxlZVNhdmVzIG9uIHN0YWNrIG9yIHVuc2F2ZWQgY2FsbGVlU2F2
ZXMgaW4gcmVnaXN0ZXIgdG8gdm0gY2FsbGVlU2F2ZSBidWZmZXIKKyAgICBHUFJSZWcgZGVzdEJ1
ZmZlckdQUiA9IHVzZWRSZWdpc3RlcnMuZ2V0RnJlZUdQUigwKTsKKyAgICBHUFJSZWcgdGVtcDEg
PSB1c2VkUmVnaXN0ZXJzLmdldEZyZWVHUFIoMSk7CisgICAgRlBSUmVnIGZwVGVtcDEgPSB1c2Vk
UmVnaXN0ZXJzLmdldEZyZWVGUFIoMCk7CisgICAgR1BSUmVnIHRlbXAyID0gaXNBUk02NCgpID8g
dXNlZFJlZ2lzdGVycy5nZXRGcmVlR1BSKDIpIDogSW52YWxpZEdQUlJlZzsKKyAgICBGUFJSZWcg
ZnBUZW1wMiA9IGlzQVJNNjQoKSA/IHVzZWRSZWdpc3RlcnMuZ2V0RnJlZUZQUigxKSA6IEludmFs
aWRGUFJSZWc7CisKKyAgICBsb2FkUHRyKCZ0b3BFbnRyeUZyYW1lLCBkZXN0QnVmZmVyR1BSKTsK
KyAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKEVudHJ5RnJhbWU6OmNhbGxlZVNhdmVSZWdpc3RlcnNC
dWZmZXJPZmZzZXQoKSksIGRlc3RCdWZmZXJHUFIpOworCisgICAgQ29weVNwb29sZXIgc3Bvb2xl
cigqdGhpcywgZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGRlc3RCdWZmZXJHUFIsIHRlbXAxLCB0ZW1w
MiwgZnBUZW1wMSwgZnBUZW1wMik7CisKKyAgICBSZWdpc3RlckF0T2Zmc2V0TGlzdCogYWxsQ2Fs
bGVlU2F2ZXMgPSBSZWdpc3RlclNldDo6dm1DYWxsZWVTYXZlUmVnaXN0ZXJPZmZzZXRzKCk7Cisg
ICAgY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGN1cnJlbnRDYWxsZWVTYXZlcyA9ICZSZWdp
c3RlckF0T2Zmc2V0TGlzdDo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVSZWdpc3RlcnMoKTsKKyAg
ICBSZWdpc3RlclNldCBkb250Q29weVJlZ2lzdGVycyA9IFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lz
dGVycygpOworICAgIHVuc2lnbmVkIHJlZ2lzdGVyQ291bnQgPSBhbGxDYWxsZWVTYXZlcy0+c2l6
ZSgpOworCisgICAgdW5zaWduZWQgaSA9IDA7CisgICAgZm9yICg7IGkgPCByZWdpc3RlckNvdW50
OyBpKyspIHsKKyAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCBlbnRyeSA9IGFsbENhbGxlZVNhdmVz
LT5hdChpKTsKKyAgICAgICAgaWYgKGRvbnRDb3B5UmVnaXN0ZXJzLmNvbnRhaW5zKGVudHJ5LnJl
ZygpKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBSZWdpc3RlckF0T2Zmc2V0KiBj
dXJyZW50RnJhbWVFbnRyeSA9IGN1cnJlbnRDYWxsZWVTYXZlcy0+ZmluZChlbnRyeS5yZWcoKSk7
CisKKyAgICAgICAgaWYgKCFlbnRyeS5yZWcoKS5pc0dQUigpKQorICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGlmIChjdXJyZW50RnJhbWVFbnRyeSkKKyAgICAgICAgICAgIHNwb29sZXIubG9h
ZEdQUihjdXJyZW50RnJhbWVFbnRyeS0+b2Zmc2V0KCkpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBzcG9vbGVyLmNvcHlHUFIoZW50cnkucmVnKCkuZ3ByKCkpOworICAgICAgICBzcG9vbGVy
LnN0b3JlR1BSKGVudHJ5Lm9mZnNldCgpKTsKKyAgICB9CisgICAgc3Bvb2xlci5maW5hbGl6ZUdQ
UigpOworCisgICAgZm9yICg7IGkgPCByZWdpc3RlckNvdW50OyBpKyspIHsKKyAgICAgICAgUmVn
aXN0ZXJBdE9mZnNldCBlbnRyeSA9IGFsbENhbGxlZVNhdmVzLT5hdChpKTsKKyAgICAgICAgaWYg
KGRvbnRDb3B5UmVnaXN0ZXJzLmdldChlbnRyeS5yZWcoKSkpCisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCogY3VycmVudEZyYW1lRW50cnkgPSBjdXJyZW50
Q2FsbGVlU2F2ZXMtPmZpbmQoZW50cnkucmVnKCkpOworCisgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGVudHJ5LnJlZygpLmlzRlBSKCkpOworICAgICAgICBpZiAoY3VycmVudEZyYW1lRW50cnkpCisg
ICAgICAgICAgICBzcG9vbGVyLmxvYWRGUFIoY3VycmVudEZyYW1lRW50cnktPm9mZnNldCgpKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgc3Bvb2xlci5jb3B5RlBSKGVudHJ5LnJlZygpLmZw
cigpKTsKKyAgICAgICAgc3Bvb2xlci5zdG9yZUZQUihlbnRyeS5vZmZzZXQoKSk7CisgICAgfQor
ICAgIHNwb29sZXIuZmluYWxpemVGUFIoKTsKKworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0odG9w
RW50cnlGcmFtZSk7CisgICAgVU5VU0VEX1BBUkFNKHVzZWRSZWdpc3RlcnMpOworI2VuZGlmCit9
CisKK3ZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0U2F2ZU9yQ29weUxMSW50QmFzZWxpbmVDYWxs
ZWVTYXZlc0ZvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmlydHVhbFJlZ2lzdGVyIG9mZnNldFZp
cnR1YWxSZWdpc3RlciwgUmVzdG9yZVRhZ1JlZ2lzdGVyTW9kZSB0YWdSZWdpc3Rlck1vZGUsIEdQ
UlJlZyB0ZW1wMSwgR1BSUmVnIHRlbXAyLCBHUFJSZWcgdGVtcDMpCit7CisgICAgQVNTRVJUX1VO
VVNFRChjb2RlQmxvY2ssIGNvZGVCbG9jayk7CisgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxp
bmVDb2RlKGNvZGVCbG9jay0+aml0VHlwZSgpKSk7CisgICAgQVNTRVJUKGNvZGVCbG9jay0+Y2Fs
bGVlU2F2ZVJlZ2lzdGVycygpID09ICZSZWdpc3RlckF0T2Zmc2V0TGlzdDo6bGxpbnRCYXNlbGlu
ZUNhbGxlZVNhdmVSZWdpc3RlcnMoKSk7CisKKyAgICBjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlz
dCogY2FsbGVlU2F2ZXMgPSAmUmVnaXN0ZXJBdE9mZnNldExpc3Q6OmxsaW50QmFzZWxpbmVDYWxs
ZWVTYXZlUmVnaXN0ZXJzKCk7CisgICAgUmVnaXN0ZXJTZXQgZG9udFNhdmVSZWdpc3RlcnMgPSBS
ZWdpc3RlclNldChSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKSk7CisgICAgdW5zaWduZWQg
cmVnaXN0ZXJDb3VudCA9IGNhbGxlZVNhdmVzLT5zaXplKCk7CisKKyAgICBHUFJSZWcgZHN0QnVm
ZmVyR1BSID0gdGVtcDE7CisgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihvZmZzZXRWaXJ0dWFsUmVn
aXN0ZXIub2Zmc2V0SW5CeXRlcygpKSwgZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGRzdEJ1ZmZlckdQ
Uik7CisKKyAgICBDb3B5U3Bvb2xlciBzcG9vbGVyKCp0aGlzLCBmcmFtZVBvaW50ZXJSZWdpc3Rl
ciwgZHN0QnVmZmVyR1BSLCB0ZW1wMiwgdGVtcDMpOworCisgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkrKykgeworICAgICAgICBSZWdpc3RlckF0T2Zmc2V0IGVu
dHJ5ID0gY2FsbGVlU2F2ZXMtPmF0KGkpOworICAgICAgICBpZiAoZG9udFNhdmVSZWdpc3RlcnMu
Z2V0KGVudHJ5LnJlZygpKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBSRUxFQVNF
X0FTU0VSVChlbnRyeS5yZWcoKS5pc0dQUigpKTsKKworI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisg
ICAgICAgIFVOVVNFRF9QQVJBTSh0YWdSZWdpc3Rlck1vZGUpOworI2Vsc2UKKyAgICAgICAgaWYg
KHRhZ1JlZ2lzdGVyTW9kZSA9PSBDb3B5QmFzZWxpbmVDYWxsZWVTYXZlZFJlZ2lzdGVyc0Zyb21C
YXNlRnJhbWUpCisgICAgICAgICAgICBzcG9vbGVyLmxvYWRHUFIoZW50cnkub2Zmc2V0KCkpOwor
ICAgICAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgICAgIHNwb29sZXIuY29weUdQUihlbnRyeS5y
ZWcoKS5ncHIoKSk7CisgICAgICAgIHNwb29sZXIuc3RvcmVHUFIoZW50cnkub2Zmc2V0KCkpOwor
ICAgIH0KKyAgICBzcG9vbGVyLmZpbmFsaXplR1BSKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpT
QwogCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvQXNzZW1ibHlIZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkocmV2aXNpb24gMjc5MTczKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjk1LDg1
ICsyOTUsMzMgQEAgcHVibGljOgogICAgICAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMih2YWx1ZS5w
YXlsb2FkKCkpLCBhZGRyZXNzLndpdGhPZmZzZXQoUGF5bG9hZE9mZnNldCkpOwogI2VuZGlmCiAg
ICAgfQotICAgIAorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+IGNsYXNzIFNwb29sZXI7Cisg
ICAgY2xhc3MgTG9hZFJlZ1Nwb29sZXI7CisgICAgY2xhc3MgU3RvcmVSZWdTcG9vbGVyOworICAg
IGNsYXNzIENvcHlTcG9vbGVyOworCiAgICAgQWRkcmVzcyBhZGRyZXNzRm9yKGNvbnN0IFJlZ2lz
dGVyQXRPZmZzZXQmIGVudHJ5KQogICAgIHsKICAgICAgICAgcmV0dXJuIEFkZHJlc3MoR1BSSW5m
bzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGVudHJ5Lm9mZnNldCgpKTsKICAgICB9Ci0gICAgCi0gICAg
dm9pZCBlbWl0U2F2ZShjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCYgbGlzdCkKLSAgICB7Ci0g
ICAgICAgIGZvciAoY29uc3QgUmVnaXN0ZXJBdE9mZnNldCYgZW50cnkgOiBsaXN0KSB7Ci0gICAg
ICAgICAgICBpZiAoZW50cnkucmVnKCkuaXNHUFIoKSkKLSAgICAgICAgICAgICAgICBzdG9yZVB0
cihlbnRyeS5yZWcoKS5ncHIoKSwgYWRkcmVzc0ZvcihlbnRyeSkpOwotICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgIHN0b3JlRG91YmxlKGVudHJ5LnJlZygpLmZwcigpLCBhZGRyZXNz
Rm9yKGVudHJ5KSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgdm9pZCBlbWl0UmVzdG9y
ZShjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCYgbGlzdCkKLSAgICB7Ci0gICAgICAgIGZvciAo
Y29uc3QgUmVnaXN0ZXJBdE9mZnNldCYgZW50cnkgOiBsaXN0KSB7Ci0gICAgICAgICAgICBpZiAo
ZW50cnkucmVnKCkuaXNHUFIoKSkKLSAgICAgICAgICAgICAgICBsb2FkUHRyKGFkZHJlc3NGb3Io
ZW50cnkpLCBlbnRyeS5yZWcoKS5ncHIoKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgbG9hZERvdWJsZShhZGRyZXNzRm9yKGVudHJ5KSwgZW50cnkucmVnKCkuZnByKCkpOwot
ICAgICAgICB9Ci0gICAgfQorCisgICAgdm9pZCBlbWl0U2F2ZShjb25zdCBSZWdpc3RlckF0T2Zm
c2V0TGlzdCYpOworICAgIHZvaWQgZW1pdFJlc3RvcmUoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExp
c3QmKTsKIAogICAgIHZvaWQgZW1pdFNhdmVDYWxsZWVTYXZlc0ZvcihDb2RlQmxvY2sqIGNvZGVC
bG9jaykKICAgICB7CiAgICAgICAgIEFTU0VSVChjb2RlQmxvY2spOwogCiAgICAgICAgIGNvbnN0
IFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBjYWxsZWVTYXZlcyA9IGNvZGVCbG9jay0+Y2FsbGVlU2F2
ZVJlZ2lzdGVycygpOwotICAgICAgICBSZWdpc3RlclNldCBkb250U2F2ZVJlZ2lzdGVycyA9IFJl
Z2lzdGVyU2V0KFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpKTsKLSAgICAgICAgdW5zaWdu
ZWQgcmVnaXN0ZXJDb3VudCA9IGNhbGxlZVNhdmVzLT5zaXplKCk7Ci0KLSAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkrKykgewotICAgICAgICAgICAgUmVn
aXN0ZXJBdE9mZnNldCBlbnRyeSA9IGNhbGxlZVNhdmVzLT5hdChpKTsKLSAgICAgICAgICAgIGlm
IChkb250U2F2ZVJlZ2lzdGVycy5nZXQoZW50cnkucmVnKCkpKQotICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICAgICAgc3RvcmVSZWcoZW50cnkucmVnKCksIEFkZHJlc3MoZnJhbWVQ
b2ludGVyUmVnaXN0ZXIsIGVudHJ5Lm9mZnNldCgpKSk7Ci0gICAgICAgIH0KKyAgICAgICAgZW1p
dFNhdmVDYWxsZWVTYXZlc0ZvcihjYWxsZWVTYXZlcyk7CiAgICAgfQorCisgICAgdm9pZCBlbWl0
U2F2ZUNhbGxlZVNhdmVzRm9yKGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBjYWxsZWVTYXZl
cyk7CiAgICAgCiAgICAgZW51bSBSZXN0b3JlVGFnUmVnaXN0ZXJNb2RlIHsgVXNlRXhpc3RpbmdU
YWdSZWdpc3RlckNvbnRlbnRzLCBDb3B5QmFzZWxpbmVDYWxsZWVTYXZlZFJlZ2lzdGVyc0Zyb21C
YXNlRnJhbWUgfTsKIAotICAgIHZvaWQgZW1pdFNhdmVPckNvcHlDYWxsZWVTYXZlc0ZvcihDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgVmlydHVhbFJlZ2lzdGVyIG9mZnNldFZpcnR1YWxSZWdpc3Rlciwg
UmVzdG9yZVRhZ1JlZ2lzdGVyTW9kZSB0YWdSZWdpc3Rlck1vZGUsIEdQUlJlZyB0ZW1wKQotICAg
IHsKLSAgICAgICAgQVNTRVJUKGNvZGVCbG9jayk7Ci0gICAgICAgIEFTU0VSVChKSVRDb2RlOjpp
c0Jhc2VsaW5lQ29kZShjb2RlQmxvY2stPmppdFR5cGUoKSkpOwotICAgICAgICAKLSAgICAgICAg
Y29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGNhbGxlZVNhdmVzID0gY29kZUJsb2NrLT5jYWxs
ZWVTYXZlUmVnaXN0ZXJzKCk7Ci0gICAgICAgIFJlZ2lzdGVyU2V0IGRvbnRTYXZlUmVnaXN0ZXJz
ID0gUmVnaXN0ZXJTZXQoUmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCkpOwotICAgICAgICB1
bnNpZ25lZCByZWdpc3RlckNvdW50ID0gY2FsbGVlU2F2ZXMtPnNpemUoKTsKLQotI2lmIFVTRShK
U1ZBTFVFNjQpCi0gICAgICAgIFJlZ2lzdGVyU2V0IGJhc2VsaW5lQ2FsbGVlU2F2ZXMgPSBSZWdp
c3RlclNldDo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVSZWdpc3RlcnMoKTsKLSNlbmRpZgotICAg
ICAgICAKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkr
KykgewotICAgICAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCBlbnRyeSA9IGNhbGxlZVNhdmVzLT5h
dChpKTsKLSAgICAgICAgICAgIGlmIChkb250U2F2ZVJlZ2lzdGVycy5nZXQoZW50cnkucmVnKCkp
KQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
ZW50cnkucmVnKCkuaXNHUFIoKSk7Ci0KLSAgICAgICAgICAgIEdQUlJlZyByZWdpc3RlclRvV3Jp
dGU7Ci0KLSNpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgICAgICAgICAgVU5VU0VEX1BBUkFNKHRh
Z1JlZ2lzdGVyTW9kZSk7Ci0gICAgICAgICAgICBVTlVTRURfUEFSQU0odGVtcCk7Ci0jZWxzZQot
ICAgICAgICAgICAgaWYgKHRhZ1JlZ2lzdGVyTW9kZSA9PSBDb3B5QmFzZWxpbmVDYWxsZWVTYXZl
ZFJlZ2lzdGVyc0Zyb21CYXNlRnJhbWUgJiYgYmFzZWxpbmVDYWxsZWVTYXZlcy5nZXQoZW50cnku
cmVnKCkpKSB7Ci0gICAgICAgICAgICAgICAgcmVnaXN0ZXJUb1dyaXRlID0gdGVtcDsKLSAgICAg
ICAgICAgICAgICBsb2FkUHRyKEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpjYWxs
RnJhbWVSZWdpc3RlciwgZW50cnkub2Zmc2V0KCkpLCByZWdpc3RlclRvV3JpdGUpOwotICAgICAg
ICAgICAgfSBlbHNlCi0jZW5kaWYKLSAgICAgICAgICAgICAgICByZWdpc3RlclRvV3JpdGUgPSBl
bnRyeS5yZWcoKS5ncHIoKTsKLQotICAgICAgICAgICAgc3RvcmVQdHIocmVnaXN0ZXJUb1dyaXRl
LCBBZGRyZXNzKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBvZmZzZXRWaXJ0dWFsUmVnaXN0ZXIub2Zm
c2V0SW5CeXRlcygpICsgZW50cnkub2Zmc2V0KCkpKTsKLSAgICAgICAgfQotICAgIH0KKyAgICB2
b2lkIGVtaXRTYXZlT3JDb3B5TExJbnRCYXNlbGluZUNhbGxlZVNhdmVzRm9yKENvZGVCbG9jayos
IFZpcnR1YWxSZWdpc3RlciBvZmZzZXRWaXJ0dWFsUmVnaXN0ZXIsIFJlc3RvcmVUYWdSZWdpc3Rl
ck1vZGUsIEdQUlJlZyB0ZW1wMSwgR1BSUmVnIHRlbXAyLCBHUFJSZWcgdGVtcDMpOwogICAgIAog
ICAgIHZvaWQgZW1pdFJlc3RvcmVDYWxsZWVTYXZlc0ZvcihDb2RlQmxvY2sqIGNvZGVCbG9jaykK
ICAgICB7CkBAIC0zODMsMTggKzMzMSw3IEBAIHB1YmxpYzoKICAgICAgICAgZW1pdFJlc3RvcmVD
YWxsZWVTYXZlc0ZvcihjYWxsZWVTYXZlcyk7CiAgICAgfQogCi0gICAgdm9pZCBlbWl0UmVzdG9y
ZUNhbGxlZVNhdmVzRm9yKGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBjYWxsZWVTYXZlcykK
LSAgICB7Ci0gICAgICAgIFJlZ2lzdGVyU2V0IGRvbnRSZXN0b3JlUmVnaXN0ZXJzID0gUmVnaXN0
ZXJTZXQoUmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCkpOwotICAgICAgICB1bnNpZ25lZCBy
ZWdpc3RlckNvdW50ID0gY2FsbGVlU2F2ZXMtPnNpemUoKTsKLSAgICAgICAgCi0gICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCByZWdpc3RlckNvdW50OyBpKyspIHsKLSAgICAgICAgICAg
IFJlZ2lzdGVyQXRPZmZzZXQgZW50cnkgPSBjYWxsZWVTYXZlcy0+YXQoaSk7Ci0gICAgICAgICAg
ICBpZiAoZG9udFJlc3RvcmVSZWdpc3RlcnMuZ2V0KGVudHJ5LnJlZygpKSkKLSAgICAgICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGxvYWRSZWcoQWRkcmVzcyhmcmFtZVBvaW50ZXJS
ZWdpc3RlciwgZW50cnkub2Zmc2V0KCkpLCBlbnRyeS5yZWcoKSk7Ci0gICAgICAgIH0KLSAgICB9
CisgICAgdm9pZCBlbWl0UmVzdG9yZUNhbGxlZVNhdmVzRm9yKGNvbnN0IFJlZ2lzdGVyQXRPZmZz
ZXRMaXN0KiBjYWxsZWVTYXZlcyk7CiAKICAgICB2b2lkIGVtaXRTYXZlQ2FsbGVlU2F2ZXMoKQog
ICAgIHsKQEAgLTQ2NSw1OCArNDAyLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCByZXN0b3JlQ2Fs
bGVlU2F2ZXNGcm9tRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKEVudHJ5RnJhbWUqJik7CiAK
LSAgICB2b2lkIGNvcHlMTEludEJhc2VsaW5lQ2FsbGVlU2F2ZXNGcm9tRnJhbWVPclJlZ2lzdGVy
VG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIoRW50cnlGcmFtZSomIHRvcEVudHJ5RnJhbWUs
IGNvbnN0IFRlbXBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycyA9IHsgUmVnaXN0ZXJTZXQ6OnN0
dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpIH0pCi0gICAgewotI2lmIE5VTUJFUl9PRl9DQUxMRUVf
U0FWRVNfUkVHSVNURVJTID4gMAotICAgICAgICBHUFJSZWcgdGVtcDEgPSB1c2VkUmVnaXN0ZXJz
LmdldEZyZWVHUFIoMCk7Ci0gICAgICAgIEdQUlJlZyB0ZW1wMiA9IHVzZWRSZWdpc3RlcnMuZ2V0
RnJlZUdQUigxKTsKLSAgICAgICAgRlBSUmVnIGZwVGVtcCA9IHVzZWRSZWdpc3RlcnMuZ2V0RnJl
ZUZQUigpOwotICAgICAgICBBU1NFUlQodGVtcDIgIT0gSW52YWxpZEdQUlJlZyk7Ci0KLSAgICAg
ICAgLy8gQ29weSBzYXZlZCBjYWxsZWVTYXZlcyBvbiBzdGFjayBvciB1bnNhdmVkIGNhbGxlZVNh
dmVzIGluIHJlZ2lzdGVyIHRvIHZtIGNhbGxlZVNhdmUgYnVmZmVyCi0gICAgICAgIGxvYWRQdHIo
JnRvcEVudHJ5RnJhbWUsIHRlbXAxKTsKLSAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihFbnRy
eUZyYW1lOjpjYWxsZWVTYXZlUmVnaXN0ZXJzQnVmZmVyT2Zmc2V0KCkpLCB0ZW1wMSk7Ci0KLSAg
ICAgICAgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGFsbENhbGxlZVNhdmVzID0gUmVnaXN0ZXJTZXQ6
OnZtQ2FsbGVlU2F2ZVJlZ2lzdGVyT2Zmc2V0cygpOwotICAgICAgICBjb25zdCBSZWdpc3RlckF0
T2Zmc2V0TGlzdCogY3VycmVudENhbGxlZVNhdmVzID0gJlJlZ2lzdGVyQXRPZmZzZXRMaXN0Ojps
bGludEJhc2VsaW5lQ2FsbGVlU2F2ZVJlZ2lzdGVycygpOwotICAgICAgICBSZWdpc3RlclNldCBk
b250Q29weVJlZ2lzdGVycyA9IFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpOwotICAgICAg
ICB1bnNpZ25lZCByZWdpc3RlckNvdW50ID0gYWxsQ2FsbGVlU2F2ZXMtPnNpemUoKTsKLQotICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVnaXN0ZXJDb3VudDsgaSsrKSB7Ci0gICAg
ICAgICAgICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5ID0gYWxsQ2FsbGVlU2F2ZXMtPmF0KGkpOwot
ICAgICAgICAgICAgaWYgKGRvbnRDb3B5UmVnaXN0ZXJzLmdldChlbnRyeS5yZWcoKSkpCi0gICAg
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBSZWdpc3RlckF0T2Zmc2V0KiBjdXJy
ZW50RnJhbWVFbnRyeSA9IGN1cnJlbnRDYWxsZWVTYXZlcy0+ZmluZChlbnRyeS5yZWcoKSk7Ci0K
LSAgICAgICAgICAgIGlmIChlbnRyeS5yZWcoKS5pc0dQUigpKSB7Ci0gICAgICAgICAgICAgICAg
R1BSUmVnIHJlZ1RvU3RvcmU7Ci0gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRGcmFtZUVudHJ5
KSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIExvYWQgY2FsbGVlU2F2ZSBmcm9tIHN0YWNrIGlu
dG8gdGVtcCByZWdpc3RlcgotICAgICAgICAgICAgICAgICAgICByZWdUb1N0b3JlID0gdGVtcDI7
Ci0gICAgICAgICAgICAgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhmcmFtZVBvaW50ZXJSZWdpc3Rl
ciwgY3VycmVudEZyYW1lRW50cnktPm9mZnNldCgpKSwgcmVnVG9TdG9yZSk7Ci0gICAgICAgICAg
ICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIC8vIEp1c3Qgc3RvcmUgY2FsbGVlIHNh
dmUgZGlyZWN0bHkKLSAgICAgICAgICAgICAgICAgICAgcmVnVG9TdG9yZSA9IGVudHJ5LnJlZygp
LmdwcigpOwotCi0gICAgICAgICAgICAgICAgc3RvcmVQdHIocmVnVG9TdG9yZSwgQWRkcmVzcyh0
ZW1wMSwgZW50cnkub2Zmc2V0KCkpKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgRlBSUmVnIGZwUmVnVG9TdG9yZTsKLSAgICAgICAgICAgICAgICBpZiAoY3VycmVudEZy
YW1lRW50cnkpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gTG9hZCBjYWxsZWVTYXZlIGZyb20g
c3RhY2sgaW50byB0ZW1wIHJlZ2lzdGVyCi0gICAgICAgICAgICAgICAgICAgIGZwUmVnVG9TdG9y
ZSA9IGZwVGVtcDsKLSAgICAgICAgICAgICAgICAgICAgbG9hZERvdWJsZShBZGRyZXNzKGZyYW1l
UG9pbnRlclJlZ2lzdGVyLCBjdXJyZW50RnJhbWVFbnRyeS0+b2Zmc2V0KCkpLCBmcFJlZ1RvU3Rv
cmUpOwotICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICAvLyBKdXN0
IHN0b3JlIGNhbGxlZSBzYXZlIGRpcmVjdGx5Ci0gICAgICAgICAgICAgICAgICAgIGZwUmVnVG9T
dG9yZSA9IGVudHJ5LnJlZygpLmZwcigpOwotCi0gICAgICAgICAgICAgICAgc3RvcmVEb3VibGUo
ZnBSZWdUb1N0b3JlLCBBZGRyZXNzKHRlbXAxLCBlbnRyeS5vZmZzZXQoKSkpOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0jZWxzZQotICAgICAgICBVTlVTRURfUEFSQU0odG9wRW50cnlGcmFt
ZSk7Ci0gICAgICAgIFVOVVNFRF9QQVJBTSh1c2VkUmVnaXN0ZXJzKTsKLSNlbmRpZgotICAgIH0K
KyAgICB2b2lkIGNvcHlMTEludEJhc2VsaW5lQ2FsbGVlU2F2ZXNGcm9tRnJhbWVPclJlZ2lzdGVy
VG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIoRW50cnlGcmFtZSomLCBjb25zdCBUZW1wUmVn
aXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMgPSB7IFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSB9KTsKIAogICAgIHZvaWQgZW1pdE1hdGVyaWFsaXplVGFnQ2hlY2tSZWdpc3Rl
cnMoKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxw
ZXJzU3Bvb2xlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fz
c2VtYmx5SGVscGVyc1Nwb29sZXJzLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnNTcG9vbGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNTc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoSklUKQorCisjaW5jbHVkZSAiQXNzZW1ibHlI
ZWxwZXJzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZWdUeXBl
Pgorc3RydWN0IFJlZ0Rpc3BhdGNoIHsKKyAgICBzdGF0aWMgYm9vbCBoYXNTYW1lVHlwZShSZWcp
OworICAgIHN0YXRpYyBSZWdUeXBlIGdldChSZWcpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNw
b29sZXI+IHN0YXRpYyBSZWdUeXBlIHRlbXAxKGNvbnN0IFNwb29sZXIqKTsKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBTcG9vbGVyPiBzdGF0aWMgUmVnVHlwZSB0ZW1wMihjb25zdCBTcG9vbGVyKik7
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgU3Bvb2xlcj4gc3RhdGljIFJlZ1R5cGUmIHJlZ1RvU3Rv
cmUoU3Bvb2xlciopOworICAgIHN0YXRpYyBjb25zdGV4cHIgUmVnVHlwZSBpbnZhbGlkKCk7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgcmVnU2l6ZSgpOworICAgIHN0YXRpYyBib29sIGlz
VmFsaWRMb2FkUGFpckltbShpbnQpOworICAgIHN0YXRpYyBib29sIGlzVmFsaWRTdG9yZVBhaXJJ
bW0oaW50KTsKK307CisKK3RlbXBsYXRlPD4KK3N0cnVjdCBSZWdEaXNwYXRjaDxHUFJSZWc+IHsK
KyAgICBzdGF0aWMgYm9vbCBoYXNTYW1lVHlwZShSZWcgcmVnKSB7IHJldHVybiByZWcuaXNHUFIo
KTsgfQorICAgIHN0YXRpYyBHUFJSZWcgZ2V0KFJlZyByZWcpIHsgcmV0dXJuIHJlZy5ncHIoKTsg
fQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNwb29sZXI+IHN0YXRpYyBHUFJSZWcgdGVtcDEoY29u
c3QgU3Bvb2xlciogc3Bvb2xlcikgeyByZXR1cm4gc3Bvb2xlci0+bV90ZW1wMUdQUjsgfQorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFNwb29sZXI+IHN0YXRpYyBHUFJSZWcgdGVtcDIoY29uc3QgU3Bv
b2xlciogc3Bvb2xlcikgeyByZXR1cm4gc3Bvb2xlci0+bV90ZW1wMkdQUjsgfQorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFNwb29sZXI+IHN0YXRpYyBHUFJSZWcmIHJlZ1RvU3RvcmUoU3Bvb2xlciog
c3Bvb2xlcikgeyByZXR1cm4gc3Bvb2xlci0+bV9ncHJUb1N0b3JlOyB9CisgICAgc3RhdGljIGNv
bnN0ZXhwciBHUFJSZWcgaW52YWxpZCgpIHsgcmV0dXJuIEludmFsaWRHUFJSZWc7IH0KKyAgICBz
dGF0aWMgY29uc3RleHByIHNpemVfdCByZWdTaXplKCkgeyByZXR1cm4gc2l6ZW9mKENQVVJlZ2lz
dGVyKTsgfQorI2lmIENQVShBUk02NCkKKyAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkTG9hZFBhaXJJ
bW0oaW50IG9mZnNldCkgeyByZXR1cm4gQVJNNjRBc3NlbWJsZXI6OmlzVmFsaWRMRFBJbW08NjQ+
KG9mZnNldCk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkU3RvcmVQYWlySW1tKGludCBvZmZz
ZXQpIHsgcmV0dXJuIEFSTTY0QXNzZW1ibGVyOjppc1ZhbGlkU1RQSW1tPDY0PihvZmZzZXQpOyB9
CisjZWxzZQorICAgIHN0YXRpYyBib29sIGlzVmFsaWRMb2FkUGFpckltbShpbnQpIHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgc3RhdGljIGJvb2wgaXNWYWxpZFN0b3JlUGFpckltbShpbnQpIHsgcmV0
dXJuIGZhbHNlOyB9CisjZW5kaWYKK307CisKK3RlbXBsYXRlPD4KK3N0cnVjdCBSZWdEaXNwYXRj
aDxGUFJSZWc+IHsKKyAgICBzdGF0aWMgYm9vbCBoYXNTYW1lVHlwZShSZWcgcmVnKSB7IHJldHVy
biByZWcuaXNGUFIoKTsgfQorICAgIHN0YXRpYyBGUFJSZWcgZ2V0KFJlZyByZWcpIHsgcmV0dXJu
IHJlZy5mcHIoKTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNwb29sZXI+IHN0YXRpYyBGUFJS
ZWcgdGVtcDEoY29uc3QgU3Bvb2xlciogc3Bvb2xlcikgeyByZXR1cm4gc3Bvb2xlci0+bV90ZW1w
MUZQUjsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNwb29sZXI+IHN0YXRpYyBGUFJSZWcgdGVt
cDIoY29uc3QgU3Bvb2xlciogc3Bvb2xlcikgeyByZXR1cm4gc3Bvb2xlci0+bV90ZW1wMkZQUjsg
fQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNwb29sZXI+IHN0YXRpYyBGUFJSZWcmIHJlZ1RvU3Rv
cmUoU3Bvb2xlciogc3Bvb2xlcikgeyByZXR1cm4gc3Bvb2xlci0+bV9mcHJUb1N0b3JlOyB9Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBGUFJSZWcgaW52YWxpZCgpIHsgcmV0dXJuIEludmFsaWRGUFJS
ZWc7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCByZWdTaXplKCkgeyByZXR1cm4gc2l6
ZW9mKGRvdWJsZSk7IH0KKyNpZiBDUFUoQVJNNjQpCisgICAgc3RhdGljIGJvb2wgaXNWYWxpZExv
YWRQYWlySW1tKGludCBvZmZzZXQpIHsgcmV0dXJuIEFSTTY0QXNzZW1ibGVyOjppc1ZhbGlkTERQ
RlBJbW08NjQ+KG9mZnNldCk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkU3RvcmVQYWlySW1t
KGludCBvZmZzZXQpIHsgcmV0dXJuIEFSTTY0QXNzZW1ibGVyOjppc1ZhbGlkU1RQRlBJbW08NjQ+
KG9mZnNldCk7IH0KKyNlbHNlCisgICAgc3RhdGljIGJvb2wgaXNWYWxpZExvYWRQYWlySW1tKGlu
dCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkU3RvcmVQYWlySW1t
KGludCkgeyByZXR1cm4gZmFsc2U7IH0KKyNlbmRpZgorfTsKKwordGVtcGxhdGU8dHlwZW5hbWUg
T3A+CitjbGFzcyBBc3NlbWJseUhlbHBlcnM6OlNwb29sZXIgeworcHVibGljOgorICAgIHVzaW5n
IEpJVCA9IEFzc2VtYmx5SGVscGVyczsKKworICAgIFNwb29sZXIoSklUJiBqaXQsIEdQUlJlZyBi
YXNlR1BSKQorICAgICAgICA6IG1faml0KGppdCkKKyAgICAgICAgLCBtX2Jhc2VHUFIoYmFzZUdQ
UikKKyAgICB7IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJlZ1R5cGU+CisgICAgdm9pZCBl
eGVjdXRlKGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXQmIGVudHJ5KQorICAgIHsKKyAgICAgICAgUkVM
RUFTRV9BU1NFUlQoUmVnRGlzcGF0Y2g8UmVnVHlwZT46Omhhc1NhbWVUeXBlKGVudHJ5LnJlZygp
KSk7CisgICAgICAgIGlmIGNvbnN0ZXhwciAoIWhhc1BhaXJPcCkKKyAgICAgICAgICAgIHJldHVy
biBvcCgpLmV4ZWN1dGVTaW5nbGUoZW50cnkub2Zmc2V0KCksIFJlZ0Rpc3BhdGNoPFJlZ1R5cGU+
OjpnZXQoZW50cnkucmVnKCkpKTsKKworICAgICAgICBpZiAoIW1fYnVmZmVyZWRFbnRyeS5yZWco
KS5pc1NldCgpKSB7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRW50cnkgPSBlbnRyeTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnN0ZXhwciBwdHJkaWZmX3Qg
cmVnU2l6ZSA9IFJlZ0Rpc3BhdGNoPFJlZ1R5cGU+OjpyZWdTaXplKCk7CisgICAgICAgIFJlZ1R5
cGUgYnVmZmVyZWRFbnRyeVJlZyA9IFJlZ0Rpc3BhdGNoPFJlZ1R5cGU+OjpnZXQobV9idWZmZXJl
ZEVudHJ5LnJlZygpKTsKKyAgICAgICAgUmVnVHlwZSBlbnRyeVJlZyA9IFJlZ0Rpc3BhdGNoPFJl
Z1R5cGU+OjpnZXQoZW50cnkucmVnKCkpOworCisgICAgICAgIGlmIChlbnRyeS5vZmZzZXQoKSA9
PSBtX2J1ZmZlcmVkRW50cnkub2Zmc2V0KCkgKyByZWdTaXplKSB7CisgICAgICAgICAgICBvcCgp
LmV4ZWN1dGVQYWlyKG1fYnVmZmVyZWRFbnRyeS5vZmZzZXQoKSwgYnVmZmVyZWRFbnRyeVJlZywg
ZW50cnlSZWcpOworICAgICAgICAgICAgbV9idWZmZXJlZEVudHJ5ID0geyB9OworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChtX2J1ZmZlcmVkRW50cnkub2Zmc2V0
KCkgPT0gZW50cnkub2Zmc2V0KCkgKyByZWdTaXplKSB7CisgICAgICAgICAgICBvcCgpLmV4ZWN1
dGVQYWlyKGVudHJ5Lm9mZnNldCgpLCBlbnRyeVJlZywgYnVmZmVyZWRFbnRyeVJlZyk7CisgICAg
ICAgICAgICBtX2J1ZmZlcmVkRW50cnkgPSB7IH07CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKworICAgICAgICAvLyBXZSBkb24ndCBoYXZlIGEgcGFpciBvZiBvcGVyYXRpb25zIHRo
YXQgd2UgY2FuIGV4ZWN1dGUgYXMgYSBwYWlyLgorICAgICAgICAvLyBFeGVjdXRlIHRoZSBwcmV2
aW91cyBvbmUgYXMgYSBzaW5nbGUgKGZpbmFsaXplIHdpbGwgZG8gdGhhdCksIGFuZCB0aGVuCisg
ICAgICAgIC8vIGJ1ZmZlciB0aGUgY3VycmVudCBlbnRyeSB0byBwb3RlbnRpYWxseSBiZSBwYWly
ZWQgd2l0aCB0aGUgbmV4dCBlbnRyeS4KKyAgICAgICAgZmluYWxpemU8UmVnVHlwZT4oKTsKKyAg
ICAgICAgZXhlY3V0ZTxSZWdUeXBlPihlbnRyeSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgUmVnVHlwZT4KKyAgICB2b2lkIGZpbmFsaXplKCkKKyAgICB7CisgICAgICAgIGlmIGNv
bnN0ZXhwciAoaGFzUGFpck9wKSB7CisgICAgICAgICAgICBpZiAobV9idWZmZXJlZEVudHJ5LnJl
ZygpLmlzU2V0KCkpIHsKKyAgICAgICAgICAgICAgICBvcCgpLmV4ZWN1dGVTaW5nbGUobV9idWZm
ZXJlZEVudHJ5Lm9mZnNldCgpLCBSZWdEaXNwYXRjaDxSZWdUeXBlPjo6Z2V0KG1fYnVmZmVyZWRF
bnRyeS5yZWcoKSkpOworICAgICAgICAgICAgICAgIG1fYnVmZmVyZWRFbnRyeSA9IHsgfTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworcHJpdmF0ZToKKyNpZiBDUFUoQVJNNjQp
CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGhhc1BhaXJPcCA9IHRydWU7CisjZWxzZQorICAg
IHN0YXRpYyBjb25zdGV4cHIgYm9vbCBoYXNQYWlyT3AgPSBmYWxzZTsKKyNlbmRpZgorCisgICAg
T3AmIG9wKCkgeyByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8T3AqPih0aGlzKTsgfQorCitwcm90
ZWN0ZWQ6CisgICAgSklUJiBtX2ppdDsKKyAgICBHUFJSZWcgbV9iYXNlR1BSOworICAgIFJlZ2lz
dGVyQXRPZmZzZXQgbV9idWZmZXJlZEVudHJ5OworfTsKKworY2xhc3MgQXNzZW1ibHlIZWxwZXJz
OjpMb2FkUmVnU3Bvb2xlciA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnM6OlNwb29sZXI8TG9hZFJl
Z1Nwb29sZXI+IHsKKyAgICB1c2luZyBCYXNlID0gU3Bvb2xlcjxMb2FkUmVnU3Bvb2xlcj47Cisg
ICAgdXNpbmcgSklUID0gQmFzZTo6SklUOworcHVibGljOgorICAgIExvYWRSZWdTcG9vbGVyKEpJ
VCYgaml0LCBHUFJSZWcgYmFzZUdQUikKKyAgICAgICAgOiBCYXNlKGppdCwgYmFzZUdQUikKKyAg
ICB7IH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBsb2FkR1BSKGNvbnN0IFJlZ2lzdGVyQXRP
ZmZzZXQmIGVudHJ5KSB7IGV4ZWN1dGU8R1BSUmVnPihlbnRyeSk7IH0KKyAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgZmluYWxpemVHUFIoKSB7IGZpbmFsaXplPEdQUlJlZz4oKTsgfQorICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBsb2FkRlBSKGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXQmIGVudHJ5KSB7IGV4
ZWN1dGU8RlBSUmVnPihlbnRyeSk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZmluYWxpemVG
UFIoKSB7IGZpbmFsaXplPEZQUlJlZz4oKTsgfQorCitwcml2YXRlOgorI2lmIENQVShBUk02NCkK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSZWdUeXBlPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBl
eGVjdXRlUGFpcihwdHJkaWZmX3Qgb2Zmc2V0LCBSZWdUeXBlIHJlZzEsIFJlZ1R5cGUgcmVnMikK
KyAgICB7CisgICAgICAgIG1faml0LmxvYWRQYWlyNjQobV9iYXNlR1BSLCBUcnVzdGVkSW1tMzIo
b2Zmc2V0KSwgcmVnMSwgcmVnMik7CisgICAgfQorI2Vsc2UKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBSZWdUeXBlPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBleGVjdXRlUGFpcihwdHJkaWZmX3Qs
IFJlZ1R5cGUsIFJlZ1R5cGUpIHsgfQorI2VuZGlmCisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
ZXhlY3V0ZVNpbmdsZShwdHJkaWZmX3Qgb2Zmc2V0LCBHUFJSZWcgcmVnKQorICAgIHsKKyNpZiBV
U0UoSlNWQUxVRTY0KQorICAgICAgICBtX2ppdC5sb2FkNjQoQWRkcmVzcyhtX2Jhc2VHUFIsIG9m
ZnNldCksIHJlZyk7CisjZWxzZQorICAgICAgICBtX2ppdC5sb2FkMzIoQWRkcmVzcyhtX2Jhc2VH
UFIsIG9mZnNldCksIHJlZyk7CisjZW5kaWYKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgZXhlY3V0ZVNpbmdsZShwdHJkaWZmX3Qgb2Zmc2V0LCBGUFJSZWcgcmVnKQorICAgIHsKKyAg
ICAgICAgbV9qaXQubG9hZERvdWJsZShBZGRyZXNzKG1fYmFzZUdQUiwgb2Zmc2V0KSwgcmVnKTsK
KyAgICB9CisKKyAgICBmcmllbmQgY2xhc3MgQXNzZW1ibHlIZWxwZXJzOjpTcG9vbGVyPExvYWRS
ZWdTcG9vbGVyPjsKK307CisKK2NsYXNzIEFzc2VtYmx5SGVscGVyczo6U3RvcmVSZWdTcG9vbGVy
IDogcHVibGljIEFzc2VtYmx5SGVscGVyczo6U3Bvb2xlcjxTdG9yZVJlZ1Nwb29sZXI+IHsKKyAg
ICB1c2luZyBCYXNlID0gU3Bvb2xlcjxTdG9yZVJlZ1Nwb29sZXI+OworICAgIHVzaW5nIEpJVCA9
IHR5cGVuYW1lIEJhc2U6OkpJVDsKK3B1YmxpYzoKKyAgICBTdG9yZVJlZ1Nwb29sZXIoSklUJiBq
aXQsIEdQUlJlZyBiYXNlR1BSKQorICAgICAgICA6IEJhc2Uoaml0LCBiYXNlR1BSKQorICAgIHsg
fQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHN0b3JlR1BSKGNvbnN0IFJlZ2lzdGVyQXRPZmZz
ZXQmIGVudHJ5KSB7IGV4ZWN1dGU8R1BSUmVnPihlbnRyeSk7IH0KKyAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgZmluYWxpemVHUFIoKSB7IGZpbmFsaXplPEdQUlJlZz4oKTsgfQorICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBzdG9yZUZQUihjb25zdCBSZWdpc3RlckF0T2Zmc2V0JiBlbnRyeSkgeyBleGVj
dXRlPEZQUlJlZz4oZW50cnkpOyB9CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGZpbmFsaXplRlBS
KCkgeyBmaW5hbGl6ZTxGUFJSZWc+KCk7IH0KKworcHJpdmF0ZToKKyNpZiBDUFUoQVJNNjQpCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgUmVnVHlwZT4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZXhl
Y3V0ZVBhaXIocHRyZGlmZl90IG9mZnNldCwgUmVnVHlwZSByZWcxLCBSZWdUeXBlIHJlZzIpCisg
ICAgeworICAgICAgICBtX2ppdC5zdG9yZVBhaXI2NChyZWcxLCByZWcyLCBtX2Jhc2VHUFIsIFRy
dXN0ZWRJbW0zMihvZmZzZXQpKTsKKyAgICB9CisjZWxzZQorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFJlZ1R5cGU+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGV4ZWN1dGVQYWlyKHB0cmRpZmZfdCwg
UmVnVHlwZSwgUmVnVHlwZSkgeyB9CisjZW5kaWYKKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBl
eGVjdXRlU2luZ2xlKHB0cmRpZmZfdCBvZmZzZXQsIEdQUlJlZyByZWcpCisgICAgeworI2lmIFVT
RShKU1ZBTFVFNjQpCisgICAgICAgIG1faml0LnN0b3JlNjQocmVnLCBBZGRyZXNzKG1fYmFzZUdQ
Uiwgb2Zmc2V0KSk7CisjZWxzZQorICAgICAgICBtX2ppdC5zdG9yZTMyKHJlZywgQWRkcmVzcyht
X2Jhc2VHUFIsIG9mZnNldCkpOworI2VuZGlmCisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2
b2lkIGV4ZWN1dGVTaW5nbGUocHRyZGlmZl90IG9mZnNldCwgRlBSUmVnIHJlZykKKyAgICB7Cisg
ICAgICAgIG1faml0LnN0b3JlRG91YmxlKHJlZywgQWRkcmVzcyhtX2Jhc2VHUFIsIG9mZnNldCkp
OworICAgIH0KKworICAgIGZyaWVuZCBjbGFzcyBBc3NlbWJseUhlbHBlcnM6OlNwb29sZXI8U3Rv
cmVSZWdTcG9vbGVyPjsKK307CisKK2NsYXNzIEFzc2VtYmx5SGVscGVyczo6Q29weVNwb29sZXIg
eworcHVibGljOgorICAgIHVzaW5nIEpJVCA9IEFzc2VtYmx5SGVscGVyczsKKyAgICB1c2luZyBB
ZGRyZXNzID0gSklUOjpBZGRyZXNzOworICAgIHVzaW5nIFRydXN0ZWRJbW0zMiA9IEpJVDo6VHJ1
c3RlZEltbTMyOworCisgICAgc3RydWN0IFNvdXJjZSB7CisgICAgICAgIGVudW0gY2xhc3MgVHlw
ZSB7IEJ1ZmZlck9mZnNldCwgUmVnLCBFbmNvZGVkSlNWYWx1ZSB9IHR5cGU7CisgICAgICAgIGlu
dCBvZmZzZXQ7CisgICAgICAgIFJlZyByZWc7CisgICAgICAgIEVuY29kZWRKU1ZhbHVlIHZhbHVl
OworCisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJlZ1R5cGU+IFJlZ1R5cGUgZ2V0UmVnKCkg
eyByZXR1cm4gUmVnRGlzcGF0Y2g8UmVnVHlwZT46OmdldChyZWcpOyB9OworICAgIH07CisKKyAg
ICBlbnVtIGNsYXNzIEJ1ZmZlclJlZ3MgeworICAgICAgICBOZWVkUHJlc2VydmF0aW9uLAorICAg
ICAgICBBbGxvd01vZGlmaWNhdGlvbgorICAgIH07CisKKyAgICBDb3B5U3Bvb2xlcihCdWZmZXJS
ZWdzIGF0dHJpYnV0ZSwgSklUJiBqaXQsIEdQUlJlZyBzcmNCdWZmZXIsIEdQUlJlZyBkZXN0QnVm
ZmVyLCBHUFJSZWcgdGVtcDEsIEdQUlJlZyB0ZW1wMiwgRlBSUmVnIGZwVGVtcDEgPSBJbnZhbGlk
RlBSUmVnLCBGUFJSZWcgZnBUZW1wMiA9IEludmFsaWRGUFJSZWcpCisgICAgICAgIDogbV9qaXQo
aml0KQorICAgICAgICAsIG1fc3JjQnVmZmVyR1BSKHNyY0J1ZmZlcikKKyAgICAgICAgLCBtX2Rz
dEJ1ZmZlckdQUihkZXN0QnVmZmVyKQorICAgICAgICAsIG1fdGVtcDFHUFIodGVtcDEpCisgICAg
ICAgICwgbV90ZW1wMkdQUih0ZW1wMikKKyAgICAgICAgLCBtX3RlbXAxRlBSKGZwVGVtcDEpCisg
ICAgICAgICwgbV90ZW1wMkZQUihmcFRlbXAyKQorICAgICAgICAsIG1fYnVmZmVyUmVnc0F0dHIo
YXR0cmlidXRlKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByIChoYXNQYWlyT3AgJiYgIWlz
QVJNNjQoKSkKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7IC8vIHVu
c3VwcG9ydGVkIGFyY2hpdGVjdHVyZS4KKyAgICB9CisKKyAgICBDb3B5U3Bvb2xlcihKSVQmIGpp
dCwgR1BSUmVnIHNyY0J1ZmZlciwgR1BSUmVnIGRlc3RCdWZmZXIsIEdQUlJlZyB0ZW1wMSwgR1BS
UmVnIHRlbXAyLCBGUFJSZWcgZnBUZW1wMSA9IEludmFsaWRGUFJSZWcsIEZQUlJlZyBmcFRlbXAy
ID0gSW52YWxpZEZQUlJlZykKKyAgICAgICAgOiBDb3B5U3Bvb2xlcihCdWZmZXJSZWdzOjpOZWVk
UHJlc2VydmF0aW9uLCBqaXQsIHNyY0J1ZmZlciwgZGVzdEJ1ZmZlciwgdGVtcDEsIHRlbXAyLCBm
cFRlbXAxLCBmcFRlbXAyKQorICAgIHsgfQorCitwcml2YXRlOgorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFJlZ1R5cGU+IFJlZ1R5cGUgdGVtcDEoKSBjb25zdCB7IHJldHVybiBSZWdEaXNwYXRjaDxS
ZWdUeXBlPjo6dGVtcDEodGhpcyk7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSZWdUeXBlPiBS
ZWdUeXBlIHRlbXAyKCkgY29uc3QgeyByZXR1cm4gUmVnRGlzcGF0Y2g8UmVnVHlwZT46OnRlbXAy
KHRoaXMpOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgUmVnVHlwZT4gUmVnVHlwZSYgcmVnVG9T
dG9yZSgpIHsgcmV0dXJuIFJlZ0Rpc3BhdGNoPFJlZ1R5cGU+OjpyZWdUb1N0b3JlKHRoaXMpOyB9
CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSZWdUeXBlPiBzdGF0aWMgY29uc3RleHByIFJlZ1R5
cGUgaW52YWxpZCgpIHsgcmV0dXJuIFJlZ0Rpc3BhdGNoPFJlZ1R5cGU+OjppbnZhbGlkKCk7IH0K
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSZWdUeXBlPiBzdGF0aWMgY29uc3RleHByIGludCByZWdT
aXplKCkgeyByZXR1cm4gUmVnRGlzcGF0Y2g8UmVnVHlwZT46OnJlZ1NpemUoKTsgfQorCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgUmVnVHlwZT4gc3RhdGljIGJvb2wgaXNWYWxpZExvYWRQYWlySW1t
KGludCBvZmZzZXQpIHsgcmV0dXJuIFJlZ0Rpc3BhdGNoPFJlZ1R5cGU+Ojppc1ZhbGlkTG9hZFBh
aXJJbW0ob2Zmc2V0KTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJlZ1R5cGU+IHN0YXRpYyBi
b29sIGlzVmFsaWRTdG9yZVBhaXJJbW0oaW50IG9mZnNldCkgeyByZXR1cm4gUmVnRGlzcGF0Y2g8
UmVnVHlwZT46OmlzVmFsaWRTdG9yZVBhaXJJbW0ob2Zmc2V0KTsgfQorCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgUmVnVHlwZT4KKyAgICB2b2lkIGxvYWQoaW50IG9mZnNldCkKKyAgICB7CisgICAg
ICAgIGlmIGNvbnN0ZXhwciAoIWhhc1BhaXJPcCkgeworICAgICAgICAgICAgYXV0byYgcmVnVG9T
dG9yZSA9IHRoaXMtPnJlZ1RvU3RvcmU8UmVnVHlwZT4oKTsKKyAgICAgICAgICAgIHJlZ1RvU3Rv
cmUgPSB0ZW1wMTxSZWdUeXBlPigpOworICAgICAgICAgICAgbG9hZChvZmZzZXQsIHJlZ1RvU3Rv
cmUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgYXV0byYgc291
cmNlID0gbV9zb3VyY2VzW21fY3VycmVudFNvdXJjZSsrXTsKKyAgICAgICAgc291cmNlLnR5cGUg
PSBTb3VyY2U6OlR5cGU6OkJ1ZmZlck9mZnNldDsKKyAgICAgICAgc291cmNlLm9mZnNldCA9IG9m
ZnNldDsKKyAgICB9CisKKyAgICB2b2lkIG1vdmUoRW5jb2RlZEpTVmFsdWUgdmFsdWUpCisgICAg
eworICAgICAgICBpZiBjb25zdGV4cHIgKCFoYXNQYWlyT3ApIHsKKyAgICAgICAgICAgIGF1dG8m
IHJlZ1RvU3RvcmUgPSB0aGlzLT5yZWdUb1N0b3JlPEdQUlJlZz4oKTsKKyAgICAgICAgICAgIHJl
Z1RvU3RvcmUgPSB0ZW1wMTxHUFJSZWc+KCk7CisgICAgICAgICAgICBtb3ZlKHZhbHVlLCByZWdU
b1N0b3JlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8m
IHNvdXJjZSA9IG1fc291cmNlc1ttX2N1cnJlbnRTb3VyY2UrK107CisgICAgICAgIHNvdXJjZS50
eXBlID0gU291cmNlOjpUeXBlOjpFbmNvZGVkSlNWYWx1ZTsKKyAgICAgICAgc291cmNlLnZhbHVl
ID0gdmFsdWU7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgUmVnVHlwZT4KKyAgICB2
b2lkIGNvcHkoUmVnVHlwZSByZWcpCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKCFoYXNQ
YWlyT3ApIHsKKyAgICAgICAgICAgIGF1dG8mIHJlZ1RvU3RvcmUgPSB0aGlzLT5yZWdUb1N0b3Jl
PFJlZ1R5cGU+KCk7CisgICAgICAgICAgICByZWdUb1N0b3JlID0gcmVnOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgYXV0byYgc291cmNlID0gbV9zb3VyY2VzW21f
Y3VycmVudFNvdXJjZSsrXTsKKyAgICAgICAgc291cmNlLnR5cGUgPSBTb3VyY2U6OlR5cGU6OlJl
ZzsKKyAgICAgICAgc291cmNlLnJlZyA9IHJlZzsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBSZWdUeXBlPgorICAgIHZvaWQgc3RvcmUoaW50IHN0b3JlT2Zmc2V0KQorICAgIHsKKyAg
ICAgICAgaWYgY29uc3RleHByICghaGFzUGFpck9wKSB7CisgICAgICAgICAgICBhdXRvIHJlZ1Rv
U3RvcmUgPSB0aGlzLT5yZWdUb1N0b3JlPFJlZ1R5cGU+KCk7CisgICAgICAgICAgICBzdG9yZShy
ZWdUb1N0b3JlLCBzdG9yZU9mZnNldCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICBjb25zdGV4cHIgYm9vbCByZWdUeXBlSXNHUFIgPSBzdGQ6OmlzX3NhbWU8UmVn
VHlwZSwgR1BSUmVnPjo6dmFsdWU7CisKKyAgICAgICAgaWYgKG1fY3VycmVudFNvdXJjZSA8IDIp
IHsKKyAgICAgICAgICAgIG1fZGVmZXJyZWRTdG9yZU9mZnNldCA9IHN0b3JlT2Zmc2V0OworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgUmVnVHlwZSByZWdUb1N0b3Jl
MSA9IGludmFsaWQ8UmVnVHlwZT4oKTsKKyAgICAgICAgUmVnVHlwZSByZWdUb1N0b3JlMiA9IGlu
dmFsaWQ8UmVnVHlwZT4oKTsKKyAgICAgICAgYXV0byYgc291cmNlMSA9IG1fc291cmNlc1swXTsK
KyAgICAgICAgYXV0byYgc291cmNlMiA9IG1fc291cmNlc1sxXTsKKyAgICAgICAgYXV0byBzcmNP
ZmZzZXQxID0gbV9zb3VyY2VzWzBdLm9mZnNldCAtIG1fc3JjT2Zmc2V0QWRqdXN0bWVudDsKKyAg
ICAgICAgYXV0byBzcmNPZmZzZXQyID0gbV9zb3VyY2VzWzFdLm9mZnNldCAtIG1fc3JjT2Zmc2V0
QWRqdXN0bWVudDsKKyAgICAgICAgY29uc3RleHByIGludCByZWdpc3RlclNpemUgPSByZWdTaXpl
PFJlZ1R5cGU+KCk7CisKKyAgICAgICAgaWYgKHNvdXJjZTEudHlwZSA9PSBTb3VyY2U6OlR5cGU6
OkJ1ZmZlck9mZnNldCAmJiBzb3VyY2UyLnR5cGUgPT0gU291cmNlOjpUeXBlOjpCdWZmZXJPZmZz
ZXQpIHsKKyAgICAgICAgICAgIHJlZ1RvU3RvcmUxID0gdGVtcDE8UmVnVHlwZT4oKTsKKyAgICAg
ICAgICAgIHJlZ1RvU3RvcmUyID0gdGVtcDI8UmVnVHlwZT4oKTsKKworICAgICAgICAgICAgaW50
IG9mZnNldERlbHRhID0gYWJzKHNyY09mZnNldDEgLSBzcmNPZmZzZXQyKTsKKyAgICAgICAgICAg
IGludCBtaW5PZmZzZXQgPSBzdGQ6Om1pbihzcmNPZmZzZXQxLCBzcmNPZmZzZXQyKTsKKyAgICAg
ICAgICAgIGJvb2wgaXNWYWxpZE9mZnNldCA9IGlzVmFsaWRMb2FkUGFpckltbTxSZWdUeXBlPiht
aW5PZmZzZXQpOworCisgICAgICAgICAgICBpZiAob2Zmc2V0RGVsdGEgIT0gcmVnaXN0ZXJTaXpl
IHx8ICghaXNWYWxpZE9mZnNldCAmJiBtX2J1ZmZlclJlZ3NBdHRyICE9IEJ1ZmZlclJlZ3M6OkFs
bG93TW9kaWZpY2F0aW9uKSkgeworICAgICAgICAgICAgICAgIGxvYWQoc3JjT2Zmc2V0MSwgcmVn
VG9TdG9yZTEpOworICAgICAgICAgICAgICAgIGxvYWQoc3JjT2Zmc2V0MiwgcmVnVG9TdG9yZTIp
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAoIWlzVmFsaWRPZmZz
ZXQpIHsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG1fYnVmZmVyUmVnc0F0dHIgPT0gQnVm
ZmVyUmVnczo6QWxsb3dNb2RpZmljYXRpb24pOworICAgICAgICAgICAgICAgICAgICBtX3NyY09m
ZnNldEFkanVzdG1lbnQgKz0gbWluT2Zmc2V0OworICAgICAgICAgICAgICAgICAgICBtX2ppdC5h
ZGRQdHIoVHJ1c3RlZEltbTMyKG1pbk9mZnNldCksIG1fc3JjQnVmZmVyR1BSKTsKKworICAgICAg
ICAgICAgICAgICAgICBzcmNPZmZzZXQxIC09IG1pbk9mZnNldDsKKyAgICAgICAgICAgICAgICAg
ICAgc3JjT2Zmc2V0MiAtPSBtaW5PZmZzZXQ7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChp
c1ZhbGlkTG9hZFBhaXJJbW08UmVnVHlwZT4oc3RkOjptaW4oc3JjT2Zmc2V0MSwgc3JjT2Zmc2V0
MikpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKHNyY09mZnNldDEg
PCBzcmNPZmZzZXQyKQorICAgICAgICAgICAgICAgICAgICBsb2FkUGFpcihzcmNPZmZzZXQxLCBy
ZWdUb1N0b3JlMSwgcmVnVG9TdG9yZTIpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICAgICAgbG9hZFBhaXIoc3JjT2Zmc2V0MiwgcmVnVG9TdG9yZTIsIHJlZ1RvU3RvcmUx
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChzb3VyY2UxLnR5cGUgPT0gU291
cmNlOjpUeXBlOjpCdWZmZXJPZmZzZXQpIHsKKyAgICAgICAgICAgIHJlZ1RvU3RvcmUxID0gdGVt
cDE8UmVnVHlwZT4oKTsKKyAgICAgICAgICAgIGxvYWQoc3JjT2Zmc2V0MSwgcmVnVG9TdG9yZTEp
OworICAgICAgICAgICAgaWYgKHNvdXJjZTIudHlwZSA9PSBTb3VyY2U6OlR5cGU6OkVuY29kZWRK
U1ZhbHVlKSB7CisgICAgICAgICAgICAgICAgaWYgY29uc3RleHByIChyZWdUeXBlSXNHUFIpIHsK
KyAgICAgICAgICAgICAgICAgICAgcmVnVG9TdG9yZTIgPSB0ZW1wMjxSZWdUeXBlPigpOworICAg
ICAgICAgICAgICAgICAgICBtb3ZlKHNvdXJjZTIudmFsdWUsIHJlZ1RvU3RvcmUyKTsKKyAgICAg
ICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHJlZ1RvU3Rv
cmUyID0gc291cmNlMi5nZXRSZWc8UmVnVHlwZT4oKTsKKworICAgICAgICB9IGVsc2UgaWYgKHNv
dXJjZTIudHlwZSA9PSBTb3VyY2U6OlR5cGU6OkJ1ZmZlck9mZnNldCkgeworICAgICAgICAgICAg
aWYgKHNvdXJjZTEudHlwZSA9PSBTb3VyY2U6OlR5cGU6OkVuY29kZWRKU1ZhbHVlKSB7CisgICAg
ICAgICAgICAgICAgaWYgY29uc3RleHByIChyZWdUeXBlSXNHUFIpIHsKKyAgICAgICAgICAgICAg
ICAgICAgcmVnVG9TdG9yZTEgPSB0ZW1wMTxSZWdUeXBlPigpOworICAgICAgICAgICAgICAgICAg
ICBtb3ZlKHNvdXJjZTEudmFsdWUsIHJlZ1RvU3RvcmUxKTsKKyAgICAgICAgICAgICAgICB9IGVs
c2UKKyAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHJlZ1RvU3RvcmUxID0gc291cmNlMS5n
ZXRSZWc8UmVnVHlwZT4oKTsKKyAgICAgICAgICAgIHJlZ1RvU3RvcmUyID0gdGVtcDI8UmVnVHlw
ZT4oKTsKKyAgICAgICAgICAgIGxvYWQoc3JjT2Zmc2V0MiwgcmVnVG9TdG9yZTIpOworCisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoc291cmNlMS50eXBlID09IFNvdXJjZTo6VHlw
ZTo6RW5jb2RlZEpTVmFsdWUpIHsKKyAgICAgICAgICAgICAgICBpZiBjb25zdGV4cHIgKHJlZ1R5
cGVJc0dQUikgeworICAgICAgICAgICAgICAgICAgICByZWdUb1N0b3JlMSA9IHRlbXAxPFJlZ1R5
cGU+KCk7CisgICAgICAgICAgICAgICAgICAgIG1vdmUoc291cmNlMS52YWx1ZSwgcmVnVG9TdG9y
ZTEpOworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAg
ICAgcmVnVG9TdG9yZTEgPSBzb3VyY2UxLmdldFJlZzxSZWdUeXBlPigpOworCisgICAgICAgICAg
ICBpZiAoc291cmNlMi50eXBlID09IFNvdXJjZTo6VHlwZTo6RW5jb2RlZEpTVmFsdWUpIHsKKyAg
ICAgICAgICAgICAgICBpZiBjb25zdGV4cHIgKHJlZ1R5cGVJc0dQUikgeworICAgICAgICAgICAg
ICAgICAgICByZWdUb1N0b3JlMiA9IHRlbXAyPFJlZ1R5cGU+KCk7CisgICAgICAgICAgICAgICAg
ICAgIG1vdmUoc291cmNlMi52YWx1ZSwgcmVnVG9TdG9yZTIpOworICAgICAgICAgICAgICAgIH0g
ZWxzZQorICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgcmVnVG9TdG9yZTIgPSBzb3VyY2Uy
LmdldFJlZzxSZWdUeXBlPigpOworICAgICAgICB9CisKKyAgICAgICAgaW50IGRzdE9mZnNldDEg
PSBtX2RlZmVycmVkU3RvcmVPZmZzZXQgLSBtX2RzdE9mZnNldEFkanVzdG1lbnQ7CisgICAgICAg
IGludCBkc3RPZmZzZXQyID0gc3RvcmVPZmZzZXQgLSBtX2RzdE9mZnNldEFkanVzdG1lbnQ7CisK
KyAgICAgICAgaW50IG9mZnNldERlbHRhID0gYWJzKGRzdE9mZnNldDEgLSBkc3RPZmZzZXQyKTsK
KyAgICAgICAgaW50IG1pbk9mZnNldCA9IHN0ZDo6bWluKGRzdE9mZnNldDEsIGRzdE9mZnNldDIp
OworICAgICAgICBib29sIGlzVmFsaWRPZmZzZXQgPSBpc1ZhbGlkU3RvcmVQYWlySW1tPFJlZ1R5
cGU+KG1pbk9mZnNldCk7CisKKyAgICAgICAgaWYgKG9mZnNldERlbHRhICE9IHJlZ2lzdGVyU2l6
ZSB8fCAoIWlzVmFsaWRPZmZzZXQgJiYgbV9idWZmZXJSZWdzQXR0ciAhPSBCdWZmZXJSZWdzOjpB
bGxvd01vZGlmaWNhdGlvbikpIHsKKyAgICAgICAgICAgIHN0b3JlKHJlZ1RvU3RvcmUxLCBkc3RP
ZmZzZXQxKTsKKyAgICAgICAgICAgIHN0b3JlKHJlZ1RvU3RvcmUyLCBkc3RPZmZzZXQyKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmICghaXNWYWxpZE9mZnNldCkgeworICAgICAg
ICAgICAgICAgIEFTU0VSVChtX2J1ZmZlclJlZ3NBdHRyID09IEJ1ZmZlclJlZ3M6OkFsbG93TW9k
aWZpY2F0aW9uKTsKKyAgICAgICAgICAgICAgICBtX2RzdE9mZnNldEFkanVzdG1lbnQgKz0gbWlu
T2Zmc2V0OworICAgICAgICAgICAgICAgIG1faml0LmFkZFB0cihUcnVzdGVkSW1tMzIobWluT2Zm
c2V0KSwgbV9kc3RCdWZmZXJHUFIpOworCisgICAgICAgICAgICAgICAgZHN0T2Zmc2V0MSAtPSBt
aW5PZmZzZXQ7CisgICAgICAgICAgICAgICAgZHN0T2Zmc2V0MiAtPSBtaW5PZmZzZXQ7CisgICAg
ICAgICAgICAgICAgQVNTRVJUKGlzVmFsaWRTdG9yZVBhaXJJbW08UmVnVHlwZT4oc3RkOjptaW4o
ZHN0T2Zmc2V0MSwgZHN0T2Zmc2V0MikpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlm
IChkc3RPZmZzZXQxIDwgZHN0T2Zmc2V0MikKKyAgICAgICAgICAgICAgICBzdG9yZVBhaXIocmVn
VG9TdG9yZTEsIHJlZ1RvU3RvcmUyLCBkc3RPZmZzZXQxKTsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICBzdG9yZVBhaXIocmVnVG9TdG9yZTIsIHJlZ1RvU3RvcmUxLCBkc3RPZmZz
ZXQyKTsKKyAgICAgICAgfQorCisgICAgICAgIG1fY3VycmVudFNvdXJjZSA9IDA7CisgICAgfQor
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgUmVnVHlwZT4KKyAgICB2b2lkIGZpbmFsaXplKCkKKyAg
ICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAoIWhhc1BhaXJPcCkKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICBpZiAoIW1fY3VycmVudFNvdXJjZSkKKyAgICAgICAgICAgIHJldHVybjsg
Ly8gTm90aGluZyB0byBmaW5hbGl6ZS4KKworICAgICAgICBBU1NFUlQobV9jdXJyZW50U291cmNl
ID09IDEpOworCisgICAgICAgIFJlZ1R5cGUgcmVnVG9TdG9yZSA9IGludmFsaWQ8UmVnVHlwZT4o
KTsKKyAgICAgICAgYXV0byYgc291cmNlID0gbV9zb3VyY2VzWzBdOworICAgICAgICBhdXRvJiBz
cmNPZmZzZXQgPSBzb3VyY2Uub2Zmc2V0OworICAgICAgICBjb25zdGV4cHIgYm9vbCByZWdUeXBl
SXNHUFIgPSBzdGQ6OmlzX3NhbWU8UmVnVHlwZSwgR1BSUmVnPjo6dmFsdWU7CisKKyAgICAgICAg
aWYgKHNvdXJjZS50eXBlID09IFNvdXJjZTo6VHlwZTo6QnVmZmVyT2Zmc2V0KSB7CisgICAgICAg
ICAgICByZWdUb1N0b3JlID0gdGVtcDE8UmVnVHlwZT4oKTsKKyAgICAgICAgICAgIGxvYWQoc3Jj
T2Zmc2V0IC0gbV9zcmNPZmZzZXRBZGp1c3RtZW50LCByZWdUb1N0b3JlKTsKKyAgICAgICAgfSBl
bHNlIGlmIChzb3VyY2UudHlwZSA9PSBTb3VyY2U6OlR5cGU6OlJlZykKKyAgICAgICAgICAgIHJl
Z1RvU3RvcmUgPSBzb3VyY2UuZ2V0UmVnPFJlZ1R5cGU+KCk7CisgICAgICAgIGVsc2UgaWYgY29u
c3RleHByIChyZWdUeXBlSXNHUFIpIHsKKyAgICAgICAgICAgIHJlZ1RvU3RvcmUgPSB0ZW1wMTxS
ZWdUeXBlPigpOworICAgICAgICAgICAgbW92ZShzb3VyY2UudmFsdWUsIHJlZ1RvU3RvcmUpOwor
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisKKyAgICAgICAgc3RvcmUocmVnVG9TdG9yZSwgbV9kZWZlcnJlZFN0b3JlT2Zmc2V0IC0gbV9k
c3RPZmZzZXRBZGp1c3RtZW50KTsKKyAgICAgICAgbV9jdXJyZW50U291cmNlID0gMDsKKyAgICB9
CisKK3B1YmxpYzoKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbG9hZEdQUihpbnQgc3JjT2Zmc2V0
KSB7IGxvYWQ8R1BSUmVnPihzcmNPZmZzZXQpOyB9CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGNv
cHlHUFIoR1BSUmVnIGdwcikgeyBjb3B5PEdQUlJlZz4oZ3ByKTsgfQorICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBtb3ZlQ29uc3RhbnQoRW5jb2RlZEpTVmFsdWUgdmFsdWUpIHsgbW92ZSh2YWx1ZSk7
IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc3RvcmVHUFIoaW50IGRzdE9mZnNldCkgeyBzdG9y
ZTxHUFJSZWc+KGRzdE9mZnNldCk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZmluYWxpemVH
UFIoKSB7IGZpbmFsaXplPEdQUlJlZz4oKTsgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIGxv
YWRGUFIoaW50IHNyY09mZnNldCkgeyBsb2FkPEZQUlJlZz4oc3JjT2Zmc2V0KTsgfQorICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBjb3B5RlBSKEZQUlJlZyBncHIpIHsgY29weTxGUFJSZWc+KGdwcik7
IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc3RvcmVGUFIoaW50IGRzdE9mZnNldCkgeyBzdG9y
ZTxGUFJSZWc+KGRzdE9mZnNldCk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZmluYWxpemVG
UFIoKSB7IGZpbmFsaXplPEZQUlJlZz4oKTsgfQorCitwcm90ZWN0ZWQ6CisjaWYgVVNFKEpTVkFM
VUU2NCkKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbW92ZShFbmNvZGVkSlNWYWx1ZSB2YWx1ZSwg
R1BSUmVnIGRlc3QpCisgICAgeworICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW02NCh2YWx1
ZSksIGRlc3QpOworICAgIH0KKyNlbHNlCisgICAgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCB2b2lk
IG1vdmUoRW5jb2RlZEpTVmFsdWUsIEdQUlJlZykgeyBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOyB9CisjZW5kaWYKKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBsb2FkKGludCBvZmZzZXQs
IEdQUlJlZyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9qaXQubG9hZFB0cihBZGRyZXNzKG1fc3Jj
QnVmZmVyR1BSLCBvZmZzZXQpLCBkZXN0KTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgc3RvcmUoR1BSUmVnIHNyYywgaW50IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1faml0LnN0
b3JlUHRyKHNyYywgQWRkcmVzcyhtX2RzdEJ1ZmZlckdQUiwgb2Zmc2V0KSk7CisgICAgfQorCisg
ICAgQUxXQVlTX0lOTElORSB2b2lkIGxvYWQoaW50IG9mZnNldCwgRlBSUmVnIGRlc3QpCisgICAg
eworICAgICAgICBtX2ppdC5sb2FkRG91YmxlKEFkZHJlc3MobV9zcmNCdWZmZXJHUFIsIG9mZnNl
dCksIGRlc3QpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzdG9yZShGUFJSZWcg
c3JjLCBpbnQgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9qaXQuc3RvcmVEb3VibGUoc3JjLCBB
ZGRyZXNzKG1fZHN0QnVmZmVyR1BSLCBvZmZzZXQpKTsKKyAgICB9CisKKyNpZiBDUFUoQVJNNjQp
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgUmVnVHlwZT4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
bG9hZFBhaXIoaW50IG9mZnNldCwgUmVnVHlwZSBkZXN0MSwgUmVnVHlwZSBkZXN0MikKKyAgICB7
CisgICAgICAgIG1faml0LmxvYWRQYWlyNjQobV9zcmNCdWZmZXJHUFIsIFRydXN0ZWRJbW0zMihv
ZmZzZXQpLCBkZXN0MSwgZGVzdDIpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJl
Z1R5cGU+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHN0b3JlUGFpcihSZWdUeXBlIHNyYzEsIFJl
Z1R5cGUgc3JjMiwgaW50IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1faml0LnN0b3JlUGFpcjY0
KHNyYzEsIHNyYzIsIG1fZHN0QnVmZmVyR1BSLCBUcnVzdGVkSW1tMzIob2Zmc2V0KSk7CisgICAg
fQorCisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGhhc1BhaXJPcCA9IHRydWU7CisjZWxzZQor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJlZ1R5cGU+IEFMV0FZU19JTkxJTkUgdm9pZCBsb2FkUGFp
cihpbnQsIFJlZ1R5cGUsIFJlZ1R5cGUpIHsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJlZ1R5
cGU+IEFMV0FZU19JTkxJTkUgdm9pZCBzdG9yZVBhaXIoUmVnVHlwZSwgUmVnVHlwZSwgaW50KSB7
IH0KKworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBoYXNQYWlyT3AgPSBmYWxzZTsKKyNlbmRp
ZgorCisgICAgSklUJiBtX2ppdDsKKworICAgIEdQUlJlZyBtX3NyY0J1ZmZlckdQUjsKKyAgICBH
UFJSZWcgbV9kc3RCdWZmZXJHUFI7CisgICAgR1BSUmVnIG1fdGVtcDFHUFI7CisgICAgR1BSUmVn
IG1fdGVtcDJHUFI7CisgICAgRlBSUmVnIG1fdGVtcDFGUFI7CisgICAgRlBSUmVnIG1fdGVtcDJG
UFI7CisKK3ByaXZhdGU6CisgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgZ3ByU2l6ZSA9IHN0YXRp
Y19jYXN0PGludD4oc2l6ZW9mKENQVVJlZ2lzdGVyKSk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBp
bnQgZnByU2l6ZSA9IHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKGRvdWJsZSkpOworCisgICAgLy8g
VGhlc2UgcG9pbnQgdG8gd2hpY2ggcmVnaXN0ZXIgdG8gdXNlLgorICAgIEdQUlJlZyBtX2dwclRv
U3RvcmUgeyBJbnZhbGlkR1BSUmVnIH07IC8vIE9ubHkgdXNlZCB3aGVuICFoYXNQYWlyT3AuCisg
ICAgRlBSUmVnIG1fZnByVG9TdG9yZSB7IEludmFsaWRGUFJSZWcgfTsgLy8gT25seSB1c2VkIHdo
ZW4gIWhhc1BhaXJPcC4KKworICAgIEJ1ZmZlclJlZ3MgbV9idWZmZXJSZWdzQXR0cjsKKyAgICBT
b3VyY2UgbV9zb3VyY2VzWzJdOworICAgIHVuc2lnbmVkIG1fY3VycmVudFNvdXJjZSB7IDAgfTsK
KyAgICBpbnQgbV9zcmNPZmZzZXRBZGp1c3RtZW50IHsgMCB9OworICAgIGludCBtX2RzdE9mZnNl
dEFkanVzdG1lbnQgeyAwIH07CisgICAgaW50IG1fZGVmZXJyZWRTdG9yZU9mZnNldDsKKworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFJlZ1R5cGU+IGZyaWVuZCBzdHJ1Y3QgUmVnRGlzcGF0Y2g7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShKSVQpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TY3JhdGNoUmVnaXN0ZXJBbGxv
Y2F0b3IuY3BwCShyZXZpc2lvbiAyNzkxNzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCw2ICsy
OCw3IEBACiAKICNpZiBFTkFCTEUoSklUKQogCisjaW5jbHVkZSAiQXNzZW1ibHlIZWxwZXJzU3Bv
b2xlcnMuaCIKICNpbmNsdWRlICJNYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbC5oIgogI2lu
Y2x1ZGUgIlZNLmgiCiAKQEAgLTEwMSw3ICsxMDIsNyBAQCB0eXBlbmFtZSBCYW5rSW5mbzo6UmVn
aXN0ZXJUeXBlIFNjcmF0Y2hSCiBHUFJSZWcgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjphbGxv
Y2F0ZVNjcmF0Y2hHUFIoKSB7IHJldHVybiBhbGxvY2F0ZVNjcmF0Y2g8R1BSSW5mbz4oKTsgfQog
RlBSUmVnIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6YWxsb2NhdGVTY3JhdGNoRlBSKCkgeyBy
ZXR1cm4gYWxsb2NhdGVTY3JhdGNoPEZQUkluZm8+KCk7IH0KIAotU2NyYXRjaFJlZ2lzdGVyQWxs
b2NhdG9yOjpQcmVzZXJ2ZWRTdGF0ZSBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OnByZXNlcnZl
UmV1c2VkUmVnaXN0ZXJzQnlQdXNoaW5nKE1hY3JvQXNzZW1ibGVyJiBqaXQsIEV4dHJhU3RhY2tT
cGFjZSBleHRyYVN0YWNrU3BhY2UpCitTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OlByZXNlcnZl
ZFN0YXRlIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6cHJlc2VydmVSZXVzZWRSZWdpc3RlcnNC
eVB1c2hpbmcoQXNzZW1ibHlIZWxwZXJzJiBqaXQsIEV4dHJhU3RhY2tTcGFjZSBleHRyYVN0YWNr
U3BhY2UpCiB7CiAgICAgaWYgKCFkaWRSZXVzZVJlZ2lzdGVycygpKQogICAgICAgICByZXR1cm4g
UHJlc2VydmVkU3RhdGUoMCwgZXh0cmFTdGFja1NwYWNlKTsKQEAgLTEyNCw3ICsxMjUsNyBAQCBT
Y3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OlByZXNlcnZlZFN0YXRlCiAgICAgcmV0dXJuIFByZXNl
cnZlZFN0YXRlKHN0YWNrQWRqdXN0bWVudFNpemUsIGV4dHJhU3RhY2tTcGFjZSk7CiB9CiAKLXZv
aWQgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpyZXN0b3JlUmV1c2VkUmVnaXN0ZXJzQnlQb3Bw
aW5nKE1hY3JvQXNzZW1ibGVyJiBqaXQsIGNvbnN0IFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6
UHJlc2VydmVkU3RhdGUmIHByZXNlcnZlZFN0YXRlKQordm9pZCBTY3JhdGNoUmVnaXN0ZXJBbGxv
Y2F0b3I6OnJlc3RvcmVSZXVzZWRSZWdpc3RlcnNCeVBvcHBpbmcoQXNzZW1ibHlIZWxwZXJzJiBq
aXQsIGNvbnN0IFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6UHJlc2VydmVkU3RhdGUmIHByZXNl
cnZlZFN0YXRlKQogewogICAgIFJFTEVBU0VfQVNTRVJUKHByZXNlcnZlZFN0YXRlKTsKICAgICBp
ZiAoIWRpZFJldXNlUmVnaXN0ZXJzKCkpCkBAIC0xNjEsNyArMTYyLDcgQEAgdW5zaWduZWQgU2Ny
YXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpkZXNpcgogICAgIHJldHVybiB1c2VkUmVnaXN0ZXJzRm9y
Q2FsbCgpLm51bWJlck9mU2V0UmVnaXN0ZXJzKCkgKiBzaXplb2YoSlNWYWx1ZSk7CiB9CiAKLXVu
c2lnbmVkIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6cHJlc2VydmVSZWdpc3RlcnNUb1N0YWNr
Rm9yQ2FsbChNYWNyb0Fzc2VtYmxlciYgaml0LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lz
dGVycywgdW5zaWduZWQgZXh0cmFCeXRlc0F0VG9wT2ZTdGFjaykKK3Vuc2lnbmVkIFNjcmF0Y2hS
ZWdpc3RlckFsbG9jYXRvcjo6cHJlc2VydmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbChBc3NlbWJs
eUhlbHBlcnMmIGppdCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIHVuc2lnbmVk
IGV4dHJhQnl0ZXNBdFRvcE9mU3RhY2spCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoZXh0cmFCeXRl
c0F0VG9wT2ZTdGFjayAlIHNpemVvZih2b2lkKikgPT0gMCk7CiAgICAgaWYgKCF1c2VkUmVnaXN0
ZXJzLm51bWJlck9mU2V0UmVnaXN0ZXJzKCkpCkBAIC0xNzQsMjYgKzE3NSwzMSBAQCB1bnNpZ25l
ZCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OnByZXNlCiAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpUcnVzdGVkSW1tMzIoc3RhY2tPZmZzZXQpLAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6c3Rh
Y2tQb2ludGVyUmVnaXN0ZXIpOwogCisgICAgQXNzZW1ibHlIZWxwZXJzOjpTdG9yZVJlZ1Nwb29s
ZXIgc3Bvb2xlcihqaXQsIE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisK
ICAgICB1bnNpZ25lZCBjb3VudCA9IDA7CiAgICAgZm9yIChHUFJSZWcgcmVnID0gTWFjcm9Bc3Nl
bWJsZXI6OmZpcnN0UmVnaXN0ZXIoKTsgcmVnIDw9IE1hY3JvQXNzZW1ibGVyOjpsYXN0UmVnaXN0
ZXIoKTsgcmVnID0gTWFjcm9Bc3NlbWJsZXI6Om5leHRSZWdpc3RlcihyZWcpKSB7CiAgICAgICAg
IGlmICh1c2VkUmVnaXN0ZXJzLmdldChyZWcpKSB7Ci0gICAgICAgICAgICBqaXQuc3RvcmVQdHIo
cmVnLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVy
UmVnaXN0ZXIsIGV4dHJhQnl0ZXNBdFRvcE9mU3RhY2sgKyAoY291bnQgKiBzaXplb2YoRW5jb2Rl
ZEpTVmFsdWUpKSkpOworICAgICAgICAgICAgc3Bvb2xlci5zdG9yZUdQUih7IHJlZywgc3RhdGlj
X2Nhc3Q8cHRyZGlmZl90PihleHRyYUJ5dGVzQXRUb3BPZlN0YWNrICsgKGNvdW50ICogc2l6ZW9m
KEVuY29kZWRKU1ZhbHVlKSkpIH0pOwogICAgICAgICAgICAgY291bnQrKzsKICAgICAgICAgfQog
ICAgIH0KKyAgICBzcG9vbGVyLmZpbmFsaXplR1BSKCk7CisKICAgICBmb3IgKEZQUlJlZyByZWcg
PSBNYWNyb0Fzc2VtYmxlcjo6Zmlyc3RGUFJlZ2lzdGVyKCk7IHJlZyA8PSBNYWNyb0Fzc2VtYmxl
cjo6bGFzdEZQUmVnaXN0ZXIoKTsgcmVnID0gTWFjcm9Bc3NlbWJsZXI6Om5leHRGUFJlZ2lzdGVy
KHJlZykpIHsKICAgICAgICAgaWYgKHVzZWRSZWdpc3RlcnMuZ2V0KHJlZykpIHsKLSAgICAgICAg
ICAgIGppdC5zdG9yZURvdWJsZShyZWcsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKE1hY3JvQXNz
ZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3RlciwgZXh0cmFCeXRlc0F0VG9wT2ZTdGFjayArIChj
b3VudCAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpKSk7CisgICAgICAgICAgICBzcG9vbGVyLnN0
b3JlRlBSKHsgcmVnLCBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KGV4dHJhQnl0ZXNBdFRvcE9mU3Rh
Y2sgKyAoY291bnQgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSkgfSk7CiAgICAgICAgICAgICBj
b3VudCsrOwogICAgICAgICB9CiAgICAgfQorICAgIHNwb29sZXIuZmluYWxpemVGUFIoKTsKIAog
ICAgIFJFTEVBU0VfQVNTRVJUKGNvdW50ID09IHVzZWRSZWdpc3RlcnMubnVtYmVyT2ZTZXRSZWdp
c3RlcnMoKSk7CiAKICAgICByZXR1cm4gc3RhY2tPZmZzZXQ7CiB9CiAKLXZvaWQgU2NyYXRjaFJl
Z2lzdGVyQWxsb2NhdG9yOjpyZXN0b3JlUmVnaXN0ZXJzRnJvbVN0YWNrRm9yQ2FsbChNYWNyb0Fz
c2VtYmxlciYgaml0LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgY29uc3QgUmVn
aXN0ZXJTZXQmIGlnbm9yZSwgdW5zaWduZWQgbnVtYmVyT2ZTdGFja0J5dGVzVXNlZEZvclJlZ2lz
dGVyUHJlc2VydmF0aW9uLCB1bnNpZ25lZCBleHRyYUJ5dGVzQXRUb3BPZlN0YWNrKQordm9pZCBT
Y3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OnJlc3RvcmVSZWdpc3RlcnNGcm9tU3RhY2tGb3JDYWxs
KEFzc2VtYmx5SGVscGVycyYgaml0LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywg
Y29uc3QgUmVnaXN0ZXJTZXQmIGlnbm9yZSwgdW5zaWduZWQgbnVtYmVyT2ZTdGFja0J5dGVzVXNl
ZEZvclJlZ2lzdGVyUHJlc2VydmF0aW9uLCB1bnNpZ25lZCBleHRyYUJ5dGVzQXRUb3BPZlN0YWNr
KQogewogICAgIFJFTEVBU0VfQVNTRVJUKGV4dHJhQnl0ZXNBdFRvcE9mU3RhY2sgJSBzaXplb2Yo
dm9pZCopID09IDApOwogICAgIGlmICghdXNlZFJlZ2lzdGVycy5udW1iZXJPZlNldFJlZ2lzdGVy
cygpKSB7CkBAIC0yMDEsMjEgKzIwNywyNiBAQCB2b2lkIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRv
cjo6cmVzdG9yZVJlCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBBc3NlbWJseUhlbHBl
cnM6OkxvYWRSZWdTcG9vbGVyIHNwb29sZXIoaml0LCBNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2lu
dGVyUmVnaXN0ZXIpOworCiAgICAgdW5zaWduZWQgY291bnQgPSAwOwogICAgIGZvciAoR1BSUmVn
IHJlZyA9IE1hY3JvQXNzZW1ibGVyOjpmaXJzdFJlZ2lzdGVyKCk7IHJlZyA8PSBNYWNyb0Fzc2Vt
Ymxlcjo6bGFzdFJlZ2lzdGVyKCk7IHJlZyA9IE1hY3JvQXNzZW1ibGVyOjpuZXh0UmVnaXN0ZXIo
cmVnKSkgewogICAgICAgICBpZiAodXNlZFJlZ2lzdGVycy5nZXQocmVnKSkgewogICAgICAgICAg
ICAgaWYgKCFpZ25vcmUuZ2V0KHJlZykpCi0gICAgICAgICAgICAgICAgaml0LmxvYWRQdHIoTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MoTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVy
LCBleHRyYUJ5dGVzQXRUb3BPZlN0YWNrICsgKHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgKiBjb3Vu
dCkpLCByZWcpOworICAgICAgICAgICAgICAgIHNwb29sZXIubG9hZEdQUih7IHJlZywgc3RhdGlj
X2Nhc3Q8cHRyZGlmZl90PihleHRyYUJ5dGVzQXRUb3BPZlN0YWNrICsgKHNpemVvZihFbmNvZGVk
SlNWYWx1ZSkgKiBjb3VudCkpIH0pOwogICAgICAgICAgICAgY291bnQrKzsKICAgICAgICAgfQog
ICAgIH0KKyAgICBzcG9vbGVyLmZpbmFsaXplR1BSKCk7CisKICAgICBmb3IgKEZQUlJlZyByZWcg
PSBNYWNyb0Fzc2VtYmxlcjo6Zmlyc3RGUFJlZ2lzdGVyKCk7IHJlZyA8PSBNYWNyb0Fzc2VtYmxl
cjo6bGFzdEZQUmVnaXN0ZXIoKTsgcmVnID0gTWFjcm9Bc3NlbWJsZXI6Om5leHRGUFJlZ2lzdGVy
KHJlZykpIHsKICAgICAgICAgaWYgKHVzZWRSZWdpc3RlcnMuZ2V0KHJlZykpIHsKICAgICAgICAg
ICAgIGlmICghaWdub3JlLmdldChyZWcpKQotICAgICAgICAgICAgICAgIGppdC5sb2FkRG91Ymxl
KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdp
c3RlciwgZXh0cmFCeXRlc0F0VG9wT2ZTdGFjayArIChzaXplb2YoRW5jb2RlZEpTVmFsdWUpICog
Y291bnQpKSwgcmVnKTsKKyAgICAgICAgICAgICAgICBzcG9vbGVyLmxvYWRGUFIoeyByZWcsIHN0
YXRpY19jYXN0PHB0cmRpZmZfdD4oZXh0cmFCeXRlc0F0VG9wT2ZTdGFjayArIChzaXplb2YoRW5j
b2RlZEpTVmFsdWUpICogY291bnQpKSB9KTsKICAgICAgICAgICAgIGNvdW50Kys7CiAgICAgICAg
IH0KICAgICB9CisgICAgc3Bvb2xlci5maW5hbGl6ZUZQUigpOwogCiAgICAgdW5zaWduZWQgc3Rh
Y2tPZmZzZXQgPSAodXNlZFJlZ2lzdGVycy5udW1iZXJPZlNldFJlZ2lzdGVycygpKSAqIHNpemVv
ZihFbmNvZGVkSlNWYWx1ZSk7CiAgICAgc3RhY2tPZmZzZXQgKz0gZXh0cmFCeXRlc0F0VG9wT2ZT
dGFjazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2NyYXRjaFJlZ2lzdGVyQWxs
b2NhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TY3JhdGNo
UmVnaXN0ZXJBbGxvY2F0b3IuaAkocmV2aXNpb24gMjc5MTczKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9TY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTQgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yNywxMiArMjcsMTIgQEAKIAogI2lmIEVOQUJMRShKSVQpCiAKLSNpbmNsdWRlICJNYWNyb0Fz
c2VtYmxlci5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyU2V0LmgiCiAjaW5jbHVkZSAiVGVtcFJlZ2lz
dGVyU2V0LmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBBc3NlbWJseUhlbHBlcnM7CiBz
dHJ1Y3QgU2NyYXRjaEJ1ZmZlcjsKIAogLy8gVGhpcyBjbGFzcyBwcm92aWRlcyBhIGxvdy1sZXZl
bCByZWdpc3RlciBhbGxvY2F0b3IgZm9yIHVzZSBpbiBzdHVicy4KQEAgLTg0LDE1ICs4NCwxNSBA
QCBwdWJsaWM6CiAgICAgICAgIEV4dHJhU3RhY2tTcGFjZSBleHRyYVN0YWNrU3BhY2VSZXF1aXJl
bWVudDsKICAgICB9OwogCi0gICAgUHJlc2VydmVkU3RhdGUgcHJlc2VydmVSZXVzZWRSZWdpc3Rl
cnNCeVB1c2hpbmcoTWFjcm9Bc3NlbWJsZXImIGppdCwgRXh0cmFTdGFja1NwYWNlKTsKLSAgICB2
b2lkIHJlc3RvcmVSZXVzZWRSZWdpc3RlcnNCeVBvcHBpbmcoTWFjcm9Bc3NlbWJsZXImIGppdCwg
Y29uc3QgUHJlc2VydmVkU3RhdGUmKTsKKyAgICBQcmVzZXJ2ZWRTdGF0ZSBwcmVzZXJ2ZVJldXNl
ZFJlZ2lzdGVyc0J5UHVzaGluZyhBc3NlbWJseUhlbHBlcnMmIGppdCwgRXh0cmFTdGFja1NwYWNl
KTsKKyAgICB2b2lkIHJlc3RvcmVSZXVzZWRSZWdpc3RlcnNCeVBvcHBpbmcoQXNzZW1ibHlIZWxw
ZXJzJiBqaXQsIGNvbnN0IFByZXNlcnZlZFN0YXRlJik7CiAgICAgCiAgICAgUmVnaXN0ZXJTZXQg
dXNlZFJlZ2lzdGVyc0ZvckNhbGwoKSBjb25zdDsKICAgICAKICAgICB1bnNpZ25lZCBkZXNpcmVk
U2NyYXRjaEJ1ZmZlclNpemVGb3JDYWxsKCkgY29uc3Q7Ci0gICAgCi0gICAgc3RhdGljIHVuc2ln
bmVkIHByZXNlcnZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGwoTWFjcm9Bc3NlbWJsZXImIGppdCwg
Y29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIHVuc2lnbmVkIGV4dHJhUGFkZGluZ0lu
Qnl0ZXMpOwotICAgIHN0YXRpYyB2b2lkIHJlc3RvcmVSZWdpc3RlcnNGcm9tU3RhY2tGb3JDYWxs
KE1hY3JvQXNzZW1ibGVyJiBqaXQsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBj
b25zdCBSZWdpc3RlclNldCYgaWdub3JlLCB1bnNpZ25lZCBudW1iZXJPZlN0YWNrQnl0ZXNVc2Vk
Rm9yUmVnaXN0ZXJQcmVzZXJ2YXRpb24sIHVuc2lnbmVkIGV4dHJhUGFkZGluZ0luQnl0ZXMpOwor
CisgICAgc3RhdGljIHVuc2lnbmVkIHByZXNlcnZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGwoQXNz
ZW1ibHlIZWxwZXJzJiBqaXQsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCB1bnNp
Z25lZCBleHRyYVBhZGRpbmdJbkJ5dGVzKTsKKyAgICBzdGF0aWMgdm9pZCByZXN0b3JlUmVnaXN0
ZXJzRnJvbVN0YWNrRm9yQ2FsbChBc3NlbWJseUhlbHBlcnMmIGppdCwgY29uc3QgUmVnaXN0ZXJT
ZXQmIHVzZWRSZWdpc3RlcnMsIGNvbnN0IFJlZ2lzdGVyU2V0JiBpZ25vcmUsIHVuc2lnbmVkIG51
bWJlck9mU3RhY2tCeXRlc1VzZWRGb3JSZWdpc3RlclByZXNlcnZhdGlvbiwgdW5zaWduZWQgZXh0
cmFQYWRkaW5nSW5CeXRlcyk7CiAKIHByaXZhdGU6CiAgICAgUmVnaXN0ZXJTZXQgbV91c2VkUmVn
aXN0ZXJzOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJh
dG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWly
SVJHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAyNzkxNzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjk4MSwx
MCArMjk4MSw3IEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZFJldHVybihjb25zdCBDb24KICAg
ICBCMzo6UGF0Y2hwb2ludFZhbHVlKiBwYXRjaCA9IGFkZFBhdGNocG9pbnQoQjM6OlZvaWQpOwog
ICAgIHBhdGNoLT5zZXRHZW5lcmF0b3IoW10gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6
U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgYXV0byBjYWxsZWVT
YXZlcyA9IHBhcmFtcy5jb2RlKCkuY2FsbGVlU2F2ZVJlZ2lzdGVyQXRPZmZzZXRMaXN0KCk7Ci0K
LSAgICAgICAgZm9yIChSZWdpc3RlckF0T2Zmc2V0IGNhbGxlZVNhdmUgOiBjYWxsZWVTYXZlcykK
LSAgICAgICAgICAgIGppdC5sb2FkNjRUb1JlZyhDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5m
bzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGNhbGxlZVNhdmUub2Zmc2V0KCkpLCBjYWxsZWVTYXZlLnJl
ZygpKTsKLQorICAgICAgICBqaXQuZW1pdFJlc3RvcmUoY2FsbGVlU2F2ZXMpOwogICAgICAgICBq
aXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKICAgICAgICAgaml0LnJldCgpOwogICAgIH0pOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9y
LmNwcAkocmV2aXNpb24gMjc5MTczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUIzSVJHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNi0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjI4NCwxMCArMjI4NCw3IEBA
IGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkUmV0dXJuKGNvbnN0IENvbnQKICAgICBQYXRjaHBvaW50
VmFsdWUqIHBhdGNoID0gbV9wcm9jLmFkZDxQYXRjaHBvaW50VmFsdWU+KEIzOjpWb2lkLCBvcmln
aW4oKSk7CiAgICAgcGF0Y2gtPnNldEdlbmVyYXRvcihbXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNv
bnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewogICAgICAgICBhdXRv
IGNhbGxlZVNhdmVzID0gcGFyYW1zLmNvZGUoKS5jYWxsZWVTYXZlUmVnaXN0ZXJBdE9mZnNldExp
c3QoKTsKLQotICAgICAgICBmb3IgKFJlZ2lzdGVyQXRPZmZzZXQgY2FsbGVlU2F2ZSA6IGNhbGxl
ZVNhdmVzKQotICAgICAgICAgICAgaml0LmxvYWQ2NFRvUmVnKENDYWxsSGVscGVyczo6QWRkcmVz
cyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgY2FsbGVlU2F2ZS5vZmZzZXQoKSksIGNhbGxl
ZVNhdmUucmVnKCkpOwotCisgICAgICAgIGppdC5lbWl0UmVzdG9yZShjYWxsZWVTYXZlcyk7CiAg
ICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOwogICAgICAgICBqaXQucmV0KCk7CiAg
ICAgfSk7Cg==
</data>
<flag name="review"
          id="454000"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>